@e280/authlocal
Version:
User-sovereign login system for everybody
47 lines (37 loc) • 1.23 kB
text/typescript
import {deep, Thumbprint} from "@e280/stz"
import {html, shadowView} from "@benev/slate"
import stylesCss from "./styles.css.js"
import themeCss from "../../../theme.css.js"
import {manager} from "../../../context.js"
import {Identity} from "../../../../trust/exports/authority.js"
export const Summary = shadowView(use => (identities: Identity[]) => {
use.name("summary")
use.styles([themeCss, stylesCss])
const existing = new Map(
manager.depot.identities.permits.value
.map(permit => [permit.identity.id, permit.identity])
)
const overwrites = new Map(
identities
.filter(ident => {
const old = existing.get(ident.id)
return old
? !deep.equal(old, ident)
: false
})
.map(ident => [ident.id, ident])
)
return html`
<ul class=identities>
${identities.map(identity => html`
<li x-id="${identity.id}" ?x-overwrite="${overwrites.has(identity.id)}">
<span class=label>${identity.label}</span>
<span class=id>${Thumbprint.sigil.fromHex(identity.id)}</span>
</li>
`)}
</ul>
${overwrites.size > 0 ? html`
<p class=overwrite>${overwrites.size} existing identity ${overwrites.size === 1 ?"label" :"labels"} will be overwritten.</p>
` : null}
`
})