@e280/authlocal
Version:
User-sovereign login system for everybody
36 lines (25 loc) • 802 B
text/typescript
import {debounce, Thumbprint} from "@e280/stz"
import {Content, ShadowElement, attributes, html, mixin, signal} from "@benev/slate"
import stylesCss from "./styles.css.js"
import {Copyable} from "../../views/copyable/view.js"
.css(stylesCss)
export class AuthSigil extends ShadowElement {
copyStatus = signal<"good" | "bad" | undefined>(undefined)
attrs = attributes(this, {
"hex": String,
})
clearStatus = debounce(1000, () => {
this.copyStatus.value = undefined
})
render(): Content {
let {hex} = this.attrs
if (hex === undefined) {
console.error(`<auth-sigil> element attr [hex] is required`)
hex = ""
}
const {sigil, thumbprint} = Thumbprint.build.fromHex(hex)
return Copyable([thumbprint], {content: html`
<div part="copybox">${sigil}</div>
`})
}
}