pith-ui 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AI.md +67 -0
- package/API.md +3281 -0
- package/LICENSE +661 -0
- package/README.md +80 -2
- package/dist/composer.d.ts +38 -0
- package/dist/composer.d.ts.map +1 -0
- package/dist/composer.js +114 -0
- package/dist/composer.js.map +1 -0
- package/dist/content/conversation-reader.d.ts +19 -0
- package/dist/content/conversation-reader.d.ts.map +1 -0
- package/dist/content/conversation-reader.js +280 -0
- package/dist/content/conversation-reader.js.map +1 -0
- package/dist/content/conversation-view.d.ts +48 -0
- package/dist/content/conversation-view.d.ts.map +1 -0
- package/dist/content/conversation-view.js +107 -0
- package/dist/content/conversation-view.js.map +1 -0
- package/dist/content/image-viewer.d.ts +23 -0
- package/dist/content/image-viewer.d.ts.map +1 -0
- package/dist/content/image-viewer.js +101 -0
- package/dist/content/image-viewer.js.map +1 -0
- package/dist/content/markdown.d.ts +12 -0
- package/dist/content/markdown.d.ts.map +1 -0
- package/dist/content/markdown.js +68 -0
- package/dist/content/markdown.js.map +1 -0
- package/dist/content/paged-preview.d.ts +15 -0
- package/dist/content/paged-preview.d.ts.map +1 -0
- package/dist/content/paged-preview.js +105 -0
- package/dist/content/paged-preview.js.map +1 -0
- package/dist/content/views.d.ts +9 -0
- package/dist/content/views.d.ts.map +1 -0
- package/dist/content/views.js +53 -0
- package/dist/content/views.js.map +1 -0
- package/dist/content/welcome.d.ts +18 -0
- package/dist/content/welcome.d.ts.map +1 -0
- package/dist/content/welcome.js +45 -0
- package/dist/content/welcome.js.map +1 -0
- package/dist/core.d.ts +36 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +44 -0
- package/dist/core.js.map +1 -0
- package/dist/dom.d.ts +14 -0
- package/dist/dom.d.ts.map +1 -0
- package/dist/dom.js +69 -0
- package/dist/dom.js.map +1 -0
- package/dist/files/panels.d.ts +95 -0
- package/dist/files/panels.d.ts.map +1 -0
- package/dist/files/panels.js +245 -0
- package/dist/files/panels.js.map +1 -0
- package/dist/files/systems.d.ts +91 -0
- package/dist/files/systems.d.ts.map +1 -0
- package/dist/files/systems.js +256 -0
- package/dist/files/systems.js.map +1 -0
- package/dist/forms/actions.d.ts +27 -0
- package/dist/forms/actions.d.ts.map +1 -0
- package/dist/forms/actions.js +19 -0
- package/dist/forms/actions.js.map +1 -0
- package/dist/forms/custom-connection.d.ts +61 -0
- package/dist/forms/custom-connection.d.ts.map +1 -0
- package/dist/forms/custom-connection.js +65 -0
- package/dist/forms/custom-connection.js.map +1 -0
- package/dist/forms/dialog-frame.d.ts +39 -0
- package/dist/forms/dialog-frame.d.ts.map +1 -0
- package/dist/forms/dialog-frame.js +75 -0
- package/dist/forms/dialog-frame.js.map +1 -0
- package/dist/forms/history.d.ts +16 -0
- package/dist/forms/history.d.ts.map +1 -0
- package/dist/forms/history.js +21 -0
- package/dist/forms/history.js.map +1 -0
- package/dist/forms/identity.d.ts +4 -0
- package/dist/forms/identity.d.ts.map +1 -0
- package/dist/forms/identity.js +21 -0
- package/dist/forms/identity.js.map +1 -0
- package/dist/forms/model-editor.d.ts +35 -0
- package/dist/forms/model-editor.d.ts.map +1 -0
- package/dist/forms/model-editor.js +78 -0
- package/dist/forms/model-editor.js.map +1 -0
- package/dist/forms/panels.d.ts +57 -0
- package/dist/forms/panels.d.ts.map +1 -0
- package/dist/forms/panels.js +224 -0
- package/dist/forms/panels.js.map +1 -0
- package/dist/forms/provider-login.d.ts +22 -0
- package/dist/forms/provider-login.d.ts.map +1 -0
- package/dist/forms/provider-login.js +114 -0
- package/dist/forms/provider-login.js.map +1 -0
- package/dist/forms/resource-editor.d.ts +23 -0
- package/dist/forms/resource-editor.d.ts.map +1 -0
- package/dist/forms/resource-editor.js +24 -0
- package/dist/forms/resource-editor.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/navigation/context-menu.d.ts +25 -0
- package/dist/navigation/context-menu.d.ts.map +1 -0
- package/dist/navigation/context-menu.js +67 -0
- package/dist/navigation/context-menu.js.map +1 -0
- package/dist/navigation/navigation.d.ts +57 -0
- package/dist/navigation/navigation.d.ts.map +1 -0
- package/dist/navigation/navigation.js +185 -0
- package/dist/navigation/navigation.js.map +1 -0
- package/dist/primitives.d.ts +307 -0
- package/dist/primitives.d.ts.map +1 -0
- package/dist/primitives.js +741 -0
- package/dist/primitives.js.map +1 -0
- package/dist/styles.css +849 -0
- package/dist/tasks/approval.d.ts +25 -0
- package/dist/tasks/approval.d.ts.map +1 -0
- package/dist/tasks/approval.js +61 -0
- package/dist/tasks/approval.js.map +1 -0
- package/dist/tasks/permission.d.ts +35 -0
- package/dist/tasks/permission.d.ts.map +1 -0
- package/dist/tasks/permission.js +67 -0
- package/dist/tasks/permission.js.map +1 -0
- package/dist/tasks/runtime.d.ts +31 -0
- package/dist/tasks/runtime.d.ts.map +1 -0
- package/dist/tasks/runtime.js +34 -0
- package/dist/tasks/runtime.js.map +1 -0
- package/dist/theme.d.ts +4 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +6 -0
- package/dist/theme.js.map +1 -0
- package/dist/workspace.d.ts +38 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +183 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +27 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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","sourcesContent":["import { Generation, Lifetime, setControlPending } from './core.js';\nimport type { ActionResult, Density, Intent, UIAction, UIBlock } from './core.js';\nimport { element, focusableElements, iconElement, setText, uniqueId } from './dom.js';\n\nexport interface ButtonState {\n label: string;\n intent?: Intent;\n density?: Density;\n disabled?: boolean;\n pending?: boolean;\n icon?: string;\n title?: string;\n}\nexport interface ButtonOptions extends ButtonState {\n type?: 'button' | 'submit' | 'reset';\n onAction?: UIAction;\n onError?: (message: string) => void;\n}\nexport interface ButtonBlock extends UIBlock<ButtonState> { readonly element: HTMLButtonElement; }\n\nexport function createButton(options: ButtonOptions): ButtonBlock {\n const node = element('button', 'pui-button');\n node.type = options.type ?? 'button';\n const caption = element('span');\n node.append(caption);\n const life = new Lifetime();\n const generation = new Generation();\n let state: ButtonState = options;\n let localPending = false;\n let currentIcon = '';\n let glyph: SVGSVGElement | undefined;\n const update = (next: Readonly<ButtonState>): void => {\n state = next;\n setText(caption, next.label);\n node.className = `pui-button pui-${next.intent ?? 'neutral'} pui-${next.density ?? 'normal'}`;\n node.disabled = !!(next.disabled || next.pending || localPending);\n setControlPending(node, !!(next.pending || localPending));\n node.setAttribute('aria-busy', String(!!(next.pending || localPending)));\n node.title = next.title ?? '';\n if (currentIcon !== (next.icon ?? '')) {\n glyph?.remove();\n currentIcon = next.icon ?? '';\n glyph = next.icon ? iconElement(next.icon) : undefined;\n if (glyph) node.prepend(glyph);\n }\n };\n life.listen(node, 'click', (() => {\n if (!options.onAction || node.disabled) return;\n const seq = generation.next();\n localPending = true;\n update(state);\n const complete = (result: void | ActionResult): void => {\n if (generation.current(seq) && result && !result.ok) options.onError?.(result.error);\n };\n const failed = (error: unknown): void => { if (generation.current(seq)) options.onError?.(error instanceof Error ? error.message : String(error)); };\n const finish = (): void => { if (generation.current(seq)) { localPending = false; update(state); } };\n try {\n const result = options.onAction();\n if (result && 'then' in result) void result.then(complete).catch(failed).finally(finish);\n else { complete(result); finish(); }\n } catch (error) { failed(error); finish(); }\n }) as EventListener);\n update(options);\n return { element: node, update, destroy() { generation.destroy(); life.destroy(); } };\n}\n\nexport function createIconButton(options: ButtonOptions & { icon: string }): ButtonBlock {\n const block = createButton(options);\n const update = block.update;\n block.update = state => {\n update(state);\n block.element.classList.add('pui-icon-button');\n block.element.setAttribute('aria-label', state.label);\n block.element.querySelector('span')?.classList.add('pui-sr-only');\n };\n block.update(options);\n return block;\n}\n\nexport function createTextAction(options: ButtonOptions): ButtonBlock {\n const block = createButton(options);\n const update = block.update;\n block.update = state => { update(state); block.element.classList.add('pui-text-action'); };\n block.update(options);\n return block;\n}\n\nexport interface IconState { name: string; label?: string; size?: 'small' | 'normal'; }\nexport function createIcon(state: IconState): UIBlock<IconState> {\n const root = element('span', 'pui-icon-display'); let currentName = '';\n const update = (next: Readonly<IconState>): void => {\n if (next.name !== currentName) { currentName = next.name; root.replaceChildren(iconElement(next.name)); }\n root.classList.toggle('pui-icon-small', next.size === 'small');\n if (next.label) { root.setAttribute('role', 'img'); root.setAttribute('aria-label', next.label); root.removeAttribute('aria-hidden'); }\n else { root.removeAttribute('role'); root.removeAttribute('aria-label'); root.setAttribute('aria-hidden', 'true'); }\n };\n update(state); return { element: root, update, destroy() {} };\n}\n\nexport function createDivider(state: { label?: string } = {}): UIBlock<{ label?: string }> {\n const root = element('div', 'pui-divider'); root.setAttribute('role', 'separator');\n const update = (next: Readonly<{ label?: string }>): void => { setText(root, next.label); if (next.label) root.setAttribute('aria-label', next.label); else root.removeAttribute('aria-label'); };\n update(state); return { element: root, update, destroy() {} };\n}\n\nexport interface KeyValueState { items: readonly { key: string; label: string; value: string }[]; }\nexport function createKeyValue(options: KeyValueState): UIBlock<KeyValueState> {\n const root = element('dl', 'pui-key-value'); const rows = new Map<string, { node: HTMLElement; label: HTMLElement; value: HTMLElement }>();\n const update = (state: Readonly<KeyValueState>): void => {\n const keep = new Set(state.items.map(item => item.key));\n for (const [key, row] of rows) if (!keep.has(key)) { row.node.remove(); rows.delete(key); }\n for (const item of state.items) {\n let row = rows.get(item.key);\n if (!row) { const label = element('dt'); const value = element('dd'); row = { node: element('div', '', label, value), label, value }; rows.set(item.key, row); }\n setText(row.label, item.label); setText(row.value, item.value); root.append(row.node);\n }\n };\n update(options); return { element: root, update, destroy() { rows.clear(); } };\n}\n\nexport interface ToolbarState { label: string; density?: Density; }\nexport function createToolbar(options: ToolbarState & { children?: readonly Node[] }): UIBlock<ToolbarState> {\n const root = element('div', 'pui-toolbar'); root.setAttribute('role', 'group'); root.append(...(options.children ?? []));\n const update = (state: Readonly<ToolbarState>): void => { root.setAttribute('aria-label', state.label); root.classList.toggle('pui-compact', state.density === 'compact'); };\n update(options); return { element: root, update, destroy() {} };\n}\n\nexport interface ScrollAreaState { label: string; size?: 'small' | 'medium' | 'fill'; }\nexport function createScrollArea(options: ScrollAreaState & { content: Node }): UIBlock<ScrollAreaState> {\n const root = element('div', 'pui-scroll-area', options.content); root.tabIndex = 0; root.setAttribute('role', 'region');\n const update = (state: Readonly<ScrollAreaState>): void => { root.setAttribute('aria-label', state.label); root.dataset.size = state.size ?? 'medium'; };\n update(options); return { element: root, update, destroy() {} };\n}\n\nexport interface FieldState {\n label: string;\n description?: string;\n error?: string;\n required?: boolean;\n disabled?: boolean;\n}\nexport interface FieldBlock extends UIBlock<FieldState> {\n readonly control: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n}\n\nexport function createField(options: FieldState & { control: FieldBlock['control'] }): FieldBlock {\n const root = element('div', 'pui-field');\n const label = element('label', 'pui-field-label');\n const description = element('div', 'pui-field-description');\n const error = element('div', 'pui-field-error');\n const control = options.control;\n if (!control.id) control.id = uniqueId('pui-input');\n label.htmlFor = control.id;\n description.id = uniqueId('pui-description');\n error.id = uniqueId('pui-error');\n error.setAttribute('role', 'alert');\n control.classList.add('pui-control');\n root.append(label, control, description, error);\n const update = (state: Readonly<FieldState>): void => {\n setText(label, `${state.label}${state.required ? ' *' : ''}`);\n label.hidden = !state.label;\n setText(description, state.description);\n description.hidden = !state.description;\n setText(error, state.error);\n error.hidden = !state.error;\n control.disabled = !!state.disabled;\n control.required = !!state.required;\n control.setAttribute('aria-invalid', String(!!state.error));\n const describedBy = [state.description ? description.id : '', state.error ? error.id : ''].filter(Boolean).join(' ');\n if (describedBy) control.setAttribute('aria-describedby', describedBy); else control.removeAttribute('aria-describedby');\n root.classList.toggle('pui-invalid', !!state.error);\n };\n update(options);\n return { element: root, control, update, destroy() {} };\n}\n\nexport interface InputState extends FieldState {\n placeholder?: string;\n readOnly?: boolean;\n density?: Density;\n}\nexport interface InputOptions extends InputState {\n value?: string;\n onInput?: (value: string, event: Event) => void;\n onChange?: (value: string, event: Event) => void;\n autocomplete?: string;\n min?: number;\n max?: number;\n step?: number | 'any';\n}\nexport interface InputBlock extends UIBlock<InputState> {\n readonly control: HTMLInputElement | HTMLTextAreaElement;\n getValue(): string;\n reset(value: string): void;\n focus(): void;\n}\n\nfunction textControl(options: InputOptions, type: 'text' | 'search' | 'password' | 'number' | 'textarea'): InputBlock {\n const control = type === 'textarea' ? element('textarea') : element('input');\n if (control instanceof HTMLInputElement) {\n control.type = type === 'textarea' ? 'text' : type;\n if (options.min != null) control.min = String(options.min);\n if (options.max != null) control.max = String(options.max);\n if (options.step != null) control.step = String(options.step);\n }\n if (options.autocomplete) control.setAttribute('autocomplete', options.autocomplete);\n control.value = options.value ?? '';\n const field = createField({ ...options, control });\n const life = new Lifetime();\n life.listen(control, 'input', (event => options.onInput?.(control.value, event)) as EventListener);\n life.listen(control, 'change', (event => options.onChange?.(control.value, event)) as EventListener);\n const update = (state: Readonly<InputState>): void => {\n field.update(state);\n control.placeholder = state.placeholder ?? '';\n control.readOnly = !!state.readOnly;\n control.classList.toggle('pui-compact', state.density === 'compact');\n };\n update(options);\n return { element: field.element, control, update, getValue: () => control.value,\n reset(value) { if (control.value !== value) control.value = value; }, focus() { control.focus(); },\n destroy() { life.destroy(); field.destroy(); } };\n}\nexport const createTextInput = (options: InputOptions): InputBlock => textControl(options, 'text');\nexport const createSearchInput = (options: InputOptions): InputBlock => textControl(options, 'search');\nexport const createNumberInput = (options: InputOptions): InputBlock => textControl(options, 'number');\nexport const createTextArea = (options: InputOptions): InputBlock => textControl(options, 'textarea');\n\nexport function createSecretInput(options: InputOptions): InputBlock {\n const block = textControl({ ...options, autocomplete: options.autocomplete ?? 'off' }, 'password');\n const control = block.control as HTMLInputElement;\n const toggle = createTextAction({ label: 'Show', onAction() {\n const show = control.type === 'password';\n control.type = show ? 'text' : 'password';\n toggle.update({ label: show ? 'Hide' : 'Show', disabled: control.disabled });\n toggle.element.setAttribute('aria-pressed', String(show));\n } });\n toggle.element.setAttribute('aria-controls', control.id);\n toggle.element.setAttribute('aria-pressed', 'false');\n block.element.append(toggle.element);\n const update = block.update;\n block.update = state => { update(state); toggle.update({ label: control.type === 'password' ? 'Show' : 'Hide', disabled: state.disabled }); };\n const destroy = block.destroy;\n block.destroy = () => { destroy(); toggle.destroy(); };\n return block;\n}\n\nexport interface SelectOption { value: string; label: string; disabled?: boolean; }\nexport interface SelectState extends FieldState { options: readonly SelectOption[]; density?: Density; }\nexport interface SelectOptions extends SelectState { value?: string; onChange?: (value: string) => void; multiple?: boolean; size?: number; }\nexport interface SelectBlock extends UIBlock<SelectState> {\n readonly control: HTMLSelectElement;\n getValue(): string;\n reset(value: string): void;\n focus(): void;\n}\nexport function createSelect(options: SelectOptions): SelectBlock {\n const control = element('select');\n control.multiple = !!options.multiple;\n if (options.size) control.size = options.size;\n const field = createField({ ...options, control });\n const life = new Lifetime();\n let signature = '';\n const update = (state: Readonly<SelectState>): void => {\n field.update(state);\n control.classList.toggle('pui-compact', state.density === 'compact');\n const next = JSON.stringify(state.options);\n if (next !== signature) {\n signature = next;\n const selected = new Set([...control.selectedOptions].map(option => option.value));\n const nodes = state.options.map(item => {\n const option = element('option', '', item.label);\n option.value = item.value;\n option.disabled = !!item.disabled;\n option.selected = selected.has(item.value);\n return option;\n });\n control.replaceChildren(...nodes);\n }\n };\n life.listen(control, 'change', (() => options.onChange?.(control.value)) as EventListener);\n update(options);\n if (options.value != null) control.value = options.value;\n return { element: field.element, control, update, getValue: () => control.value,\n reset(value) { control.value = value; }, focus() { control.focus(); }, destroy() { life.destroy(); } };\n}\n\nexport interface CheckboxState { label: string; description?: string; disabled?: boolean; }\nexport interface CheckboxBlock extends UIBlock<CheckboxState> {\n readonly control: HTMLInputElement;\n getValue(): boolean;\n reset(value: boolean): void;\n focus(): void;\n}\nexport function createCheckbox(options: CheckboxState & { checked?: boolean; onChange?: (value: boolean) => void }): CheckboxBlock {\n const control = element('input'); control.type = 'checkbox'; control.checked = !!options.checked;\n const caption = element('span'); const description = element('small');\n const root = element('label', 'pui-checkbox', control, element('span', '', caption, description));\n const life = new Lifetime();\n const update = (state: Readonly<CheckboxState>): void => {\n setText(caption, state.label); setText(description, state.description); description.hidden = !state.description;\n control.disabled = !!state.disabled;\n };\n life.listen(control, 'change', (() => options.onChange?.(control.checked)) as EventListener);\n update(options);\n return { element: root, control, update, getValue: () => control.checked,\n reset(value) { control.checked = value; }, focus() { control.focus(); }, destroy() { life.destroy(); } };\n}\n\nexport interface NoticeState { message: string; tone?: 'info' | 'success' | 'warning' | 'error'; }\nexport function createNotice(state: NoticeState): UIBlock<NoticeState> {\n const root = element('div', 'pui-notice');\n const update = (next: Readonly<NoticeState>): void => {\n root.className = `pui-notice pui-notice-${next.tone ?? 'info'}`;\n root.setAttribute('role', next.tone === 'error' || next.tone === 'warning' ? 'alert' : 'status');\n root.hidden = !next.message;\n setText(root, next.message);\n };\n update(state); return { element: root, update, destroy() {} };\n}\nexport interface StatusState { label: string; tone?: 'neutral' | 'success' | 'warning' | 'error'; }\nexport function createStatus(state: StatusState): UIBlock<StatusState> {\n const root = element('span', 'pui-status');\n const update = (next: Readonly<StatusState>): void => { root.className = `pui-status pui-status-${next.tone ?? 'neutral'}`; setText(root, next.label); };\n update(state); return { element: root, update, destroy() {} };\n}\nexport interface ProgressState { label: string; value?: number; max?: number; }\nexport function createProgress(state: ProgressState): UIBlock<ProgressState> {\n const control = element('progress'); const label = element('span');\n const root = element('label', 'pui-progress', label, control);\n const update = (next: Readonly<ProgressState>): void => {\n setText(label, next.label); control.max = next.max && next.max > 0 ? next.max : 100;\n if (next.value == null) control.removeAttribute('value'); else control.value = Math.max(0, Math.min(next.value, control.max));\n };\n update(state); return { element: root, update, destroy() {} };\n}\n\nexport interface FormSectionState { title: string; description?: string; }\nexport function createFormSection(options: FormSectionState & { content?: Node }): UIBlock<FormSectionState> {\n const title = element('h3'); const description = element('p', 'pui-muted');\n const root = element('section', 'pui-form-section', title, description);\n if (options.content) root.append(options.content);\n const update = (state: Readonly<FormSectionState>): void => { setText(title, state.title); setText(description, state.description); description.hidden = !state.description; };\n update(options); return { element: root, update, destroy() {} };\n}\nexport interface ActionsState { align?: 'start' | 'end' | 'between'; }\nexport function createActions(options: ActionsState & { children?: readonly Node[] } = {}): UIBlock<ActionsState> {\n const root = element('div', 'pui-actions'); root.append(...(options.children ?? []));\n const update = (state: Readonly<ActionsState>): void => { root.dataset.align = state.align ?? 'end'; };\n update(options); return { element: root, update, destroy() {} };\n}\nexport interface DisclosureState { title: string; description?: string; disabled?: boolean; }\nexport interface DisclosureBlock extends UIBlock<DisclosureState> { setOpen(open: boolean): void; isOpen(): boolean; }\nexport function createDisclosure(options: DisclosureState & { content: Node; open?: boolean; onToggle?: (open: boolean) => void }): DisclosureBlock {\n const root = element('details', 'pui-disclosure'); const summary = element('summary'); const title = element('span');\n const description = element('small', 'pui-muted'); summary.append(title, description); root.append(summary, element('div', 'pui-disclosure-content', options.content));\n root.open = !!options.open; let disabled = !!options.disabled; const life = new Lifetime();\n life.listen(root, 'toggle', (() => options.onToggle?.(root.open)) as EventListener);\n life.listen(summary, 'click', (event => { if (disabled) event.preventDefault(); }) as EventListener);\n const update = (state: Readonly<DisclosureState>): void => {\n setText(title, state.title); setText(description, state.description); description.hidden = !state.description;\n disabled = !!state.disabled; summary.setAttribute('aria-disabled', String(disabled));\n };\n update(options);\n return { element: root, update, setOpen(open) { root.open = open; }, isOpen: () => root.open, destroy() { life.destroy(); } };\n}\nexport interface ListRowState { title: string; description?: string; meta?: string; selected?: boolean; icon?: string; }\nexport function createListRow(options: ListRowState & { actions?: Node }): UIBlock<ListRowState> {\n const title = element('div', 'pui-list-row-title'); const description = element('div', 'pui-muted'); const meta = element('small', 'pui-muted');\n const glyph = element('span', 'pui-list-row-icon');\n const root = element('div', 'pui-list-row', glyph, element('div', 'pui-list-row-body', title, description), meta);\n if (options.actions) root.append(options.actions);\n let iconName = '';\n const update = (state: Readonly<ListRowState>): void => {\n setText(title, state.title); setText(description, state.description); description.hidden = !state.description;\n setText(meta, state.meta); meta.hidden = !state.meta; root.classList.toggle('pui-selected', !!state.selected);\n if (iconName !== (state.icon ?? '')) { iconName = state.icon ?? ''; glyph.replaceChildren(...(state.icon ? [iconElement(state.icon)] : [])); }\n glyph.hidden = !state.icon;\n };\n update(options); return { element: root, update, destroy() {} };\n}\nexport interface CollectionState { status: 'ready' | 'loading' | 'empty' | 'error'; message?: string; retryLabel?: string; }\nexport function createCollectionState(options: CollectionState & { content?: Node; onRetry?: UIAction }): UIBlock<CollectionState> {\n const message = createNotice({ message: '' }); const content = element('div', 'pui-collection-content');\n if (options.content) content.append(options.content);\n const retry = createButton({ label: options.retryLabel ?? 'Retry', onAction: options.onRetry });\n const root = element('section', 'pui-collection', message.element, retry.element, content);\n const update = (state: Readonly<CollectionState>): void => {\n root.dataset.state = state.status; root.setAttribute('aria-busy', String(state.status === 'loading'));\n message.update({ message: state.message ?? ({ ready: '', loading: 'Loading…', empty: 'Nothing here yet.', error: 'Could not load this content.' }[state.status]), tone: state.status === 'error' ? 'error' : 'info' });\n content.hidden = state.status !== 'ready'; retry.element.hidden = state.status !== 'error' || !options.onRetry;\n retry.update({ label: state.retryLabel ?? 'Retry' });\n };\n update(options); return { element: root, update, destroy() { retry.destroy(); message.destroy(); } };\n}\n\nexport interface DialogState { title: string; description?: string; eyebrow?: string; closeDisabled?: boolean; }\nexport interface DialogOptions extends DialogState { dialog?: HTMLDialogElement; content?: Node; actions?: Node; closeOnBackdrop?: boolean; onClose?: () => void; }\nexport interface DialogBlock extends UIBlock<DialogState> {\n readonly element: HTMLDialogElement;\n readonly body: HTMLElement;\n open(): void;\n close(): void;\n}\nexport function createDialog(options: DialogOptions): DialogBlock {\n const root = options.dialog ?? element('dialog'); root.classList.add('pui-dialog');\n const title = element('h2'); title.id = uniqueId('pui-dialog-title'); root.setAttribute('aria-labelledby', title.id);\n const description = element('p', 'pui-muted'); description.id = uniqueId('pui-dialog-description');\n const eyebrow = element('span', 'pui-eyebrow');\n const close = createIconButton({ label: `Close ${options.title}`, icon: 'close', onAction() { if (!state.closeDisabled) root.close(); } });\n const heading = element('header', 'pui-dialog-heading', element('div', '', eyebrow, title, description), close.element);\n const body = element('div', 'pui-dialog-body'); if (options.content) body.append(options.content);\n root.replaceChildren(heading, body); if (options.actions) root.append(options.actions);\n const life = new Lifetime(); let state: DialogState = options; let previousFocus: HTMLElement | null = null; let disposed = false;\n const update = (next: Readonly<DialogState>): void => {\n state = next; setText(title, next.title); setText(description, next.description); description.hidden = !next.description; setText(eyebrow, next.eyebrow); eyebrow.hidden = !next.eyebrow;\n if (next.description) root.setAttribute('aria-describedby', description.id); else root.removeAttribute('aria-describedby');\n close.update({ label: `Close ${next.title}`, icon: 'close', disabled: next.closeDisabled });\n };\n life.listen(root, 'cancel', (event => { if (state.closeDisabled) event.preventDefault(); }) as EventListener);\n life.listen(root, 'click', (event => {\n if (!options.closeOnBackdrop || state.closeDisabled || event.target !== root) return;\n const pointer = event as MouseEvent; const rect = root.getBoundingClientRect();\n if (pointer.clientX < rect.left || pointer.clientX > rect.right || pointer.clientY < rect.top || pointer.clientY > rect.bottom) root.close();\n }) as EventListener);\n life.listen(root, 'close', (() => {\n // Native close events are queued; an old close must not affect a reopened dialog.\n if (root.open) return;\n options.onClose?.();\n if (previousFocus?.isConnected) previousFocus.focus({ preventScroll: true });\n previousFocus = null;\n }) as EventListener);\n update(options);\n return { element: root, body, update,\n open() {\n if (disposed || root.open) return;\n previousFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n if (!root.isConnected) document.body.append(root);\n root.showModal();\n }, close() { if (root.open) root.close(); },\n destroy() { if (disposed) return; disposed = true; if (root.open) root.close(); life.destroy(); close.destroy(); root.remove(); } };\n}\n\nexport interface TextEditState extends DialogState { error?: string; disabled?: boolean; pending?: boolean; inputDisabled?: boolean; note?: string; submitLabel?: string; }\nexport interface TextEditInput { value: string; title?: string; description?: string; note?: string; }\nexport interface TextEditOptions extends Partial<TextEditState> {\n dialog?: HTMLDialogElement;\n ids?: { form?: string; control?: string; submit?: string; error?: string; title?: string; cancel?: string };\n label?: string;\n onInput?: (value: string) => void;\n onSubmit?: (text: string) => Promise<ActionResult> | ActionResult;\n onClose?: () => void;\n}\nexport interface TextEditBlock extends Omit<UIBlock<TextEditState>, 'element'> {\n readonly element: HTMLDialogElement;\n readonly control: HTMLTextAreaElement;\n readonly submitButton: HTMLButtonElement;\n open(input: TextEditInput): void;\n close(): void;\n getValue(): string;\n focus(): void;\n}\nexport function createTextEditDialog(options: TextEditOptions = {}): TextEditBlock {\n // The editor has one form-level error, so it does not need the general field's\n // description/error/number/secret machinery. Both paths use the same control CSS.\n const control = element('textarea', 'pui-control'); control.rows = 8;\n control.id = options.ids?.control ?? uniqueId('pui-input');\n const label = element('label', 'pui-field-label', options.label ?? 'Message'); label.htmlFor = control.id;\n const field = element('div', 'pui-field', label, control);\n const note = element('p', 'pui-muted'); const error = createNotice({ message: '', tone: 'error' });\n const cancel = createButton({ label: 'Cancel', onAction() { dialog.close(); } });\n const submit = createButton({ label: options.submitLabel ?? 'Save', intent: 'primary', type: 'submit' });\n const actions = createActions({ children: [cancel.element, submit.element] });\n const form = element('form', 'pui-text-edit', field, note, error.element, actions.element);\n const ids = options.ids;\n if (ids?.form) form.id = ids.form;\n if (ids?.submit) submit.element.id = ids.submit;\n if (ids?.error) error.element.id = ids.error;\n if (ids?.cancel) cancel.element.id = ids.cancel;\n const generation = new Generation(); const life = new Lifetime(); let pending = false;\n let state: TextEditState = { title: options.title ?? 'Edit message', ...options };\n const dialog = createDialog({ ...state, dialog: options.dialog, content: form, onClose() { generation.invalidate(); pending = false; update(state); options.onClose?.(); } });\n if (ids?.title) { dialog.element.querySelector('h2')!.id = ids.title; dialog.element.setAttribute('aria-labelledby', ids.title); }\n const update = (next: Readonly<TextEditState>): void => {\n state = next; dialog.update(next); setText(note, next.note); note.hidden = !next.note;\n error.update({ message: next.error ?? '', tone: 'error' });\n submit.update({ label: next.submitLabel ?? options.submitLabel ?? 'Save', intent: 'primary', disabled: next.disabled, pending: !!(next.pending || pending) });\n control.disabled = !!next.inputDisabled;\n };\n life.listen(control, 'input', () => options.onInput?.(control.value));\n life.listen(form, 'submit', (event => {\n event.preventDefault();\n if (pending || state.pending || state.disabled || submit.element.disabled || !options.onSubmit) return;\n const seq = generation.next(); const value = control.value; pending = true; update(state);\n void Promise.resolve().then(() => options.onSubmit!(value)).then(result => {\n if (!generation.current(seq) || !dialog.element.open) return;\n if (result.ok) dialog.close(); else { state = { ...state, error: result.error }; }\n }).catch((reason: unknown) => {\n if (generation.current(seq)) state = { ...state, error: reason instanceof Error ? reason.message : String(reason) };\n }).finally(() => { if (generation.current(seq)) { pending = false; update(state); } });\n }) as EventListener);\n update(state);\n return { element: dialog.element, control, submitButton: submit.element, update,\n open(input) {\n generation.invalidate(); pending = false;\n update({ ...state, error: '', title: input.title ?? options.title ?? 'Edit message', description: input.description ?? options.description, note: input.note ?? options.note });\n control.value = input.value; dialog.open(); control.focus();\n }, close() { generation.invalidate(); dialog.close(); }, getValue: () => control.value, focus() { control.focus(); },\n destroy() { generation.destroy(); life.destroy(); dialog.destroy(); cancel.destroy(); submit.destroy(); } };\n}\n\nexport interface ConfirmState extends DialogState { message?: string | Node; hint?: string; error?: string; disabled?: boolean; pending?: boolean; confirmLabel?: string; }\nexport interface ConfirmBlock extends UIBlock<ConfirmState> { readonly element: HTMLDialogElement; readonly confirmButton: HTMLButtonElement; readonly cancelButton: HTMLButtonElement; open(state?: ConfirmState): void; close(): void; }\nexport function createConfirmDialog(options: ConfirmState & { dialog?: HTMLDialogElement; ids?: { form?: string; error?: string; title?: string; cancel?: string }; unavailable?: () => boolean; onConfirm: () => Promise<ActionResult> | ActionResult; onClose?: () => void }): ConfirmBlock {\n const message = element('p', 'pui-modal-description'); const hint = element('p', 'pui-field-hint'); const error = createNotice({ message: '', tone: 'error' }); const generation = new Generation();\n let state: ConfirmState = options; let pending = false;\n const cancel = createButton({ label: 'Cancel', onAction() { dialog.close(); } });\n const confirm = createButton({ label: options.confirmLabel ?? 'Remove', intent: 'danger', type: 'submit' });\n const life = new Lifetime();\n const run = async (): Promise<void> => {\n if (pending || state.disabled || state.pending || confirm.element.disabled || options.unavailable?.()) return;\n const seq = generation.next(); pending = true; update(state);\n try {\n const result = await options.onConfirm();\n if (!generation.current(seq) || !dialog.element.open) return;\n if (result.ok) dialog.close(); else state = { ...state, error: result.error };\n } catch (reason) {\n if (generation.current(seq)) state = { ...state, error: reason instanceof Error ? reason.message : String(reason) };\n } finally { if (generation.current(seq)) { pending = false; update(state); } }\n };\n const actions = createActions({ children: [cancel.element, confirm.element] });\n const form = element('form', 'pui-confirm', message, hint, error.element, actions.element);\n if (options.ids?.form) form.id = options.ids.form;\n if (options.ids?.error) error.element.id = options.ids.error;\n if (options.ids?.cancel) cancel.element.id = options.ids.cancel;\n const dialog = createDialog({ ...options, content: form,\n onClose() { generation.invalidate(); pending = false; update(state); options.onClose?.(); } });\n if (options.ids?.title) { dialog.element.querySelector('h2')!.id = options.ids.title; dialog.element.setAttribute('aria-labelledby', options.ids.title); }\n let currentMessage: string | Node | undefined;\n const update = (next: Readonly<ConfirmState>): void => {\n state = next; dialog.update(next);\n if (next.message !== currentMessage) { currentMessage = next.message; if (next.message instanceof Node) message.replaceChildren(next.message); else setText(message, next.message); }\n setText(hint, next.hint); hint.hidden = !next.hint;\n error.update({ message: next.error ?? '', tone: 'error' });\n confirm.update({ label: next.confirmLabel ?? 'Remove', intent: 'danger', disabled: next.disabled, pending: !!(next.pending || pending) });\n };\n life.listen(form, 'submit', (event => { event.preventDefault(); void run(); }) as EventListener);\n update(options);\n return { element: dialog.element, confirmButton: confirm.element, cancelButton: cancel.element, update, open(next) { generation.invalidate(); pending = false; update({ ...(next ?? state), error: '' }); dialog.open(); cancel.element.focus(); },\n close() { generation.invalidate(); dialog.close(); }, destroy() { generation.destroy(); life.destroy(); dialog.destroy(); confirm.destroy(); cancel.destroy(); } };\n}\n\nexport interface PopoverState { label: string; disabled?: boolean; }\nexport interface PopoverBlock extends UIBlock<PopoverState> {\n readonly trigger: HTMLButtonElement;\n readonly panel: HTMLElement;\n open(): void;\n close(): void;\n isOpen(): boolean;\n}\nexport function createPopover(options: PopoverState & { content: Node; onToggle?: (open: boolean) => void }): PopoverBlock {\n let open = false; let state: PopoverState = options;\n const trigger = createButton({ label: options.label, onAction() { if (open) close(); else show(); } });\n const panel = element('div', 'pui-popover-panel', options.content); panel.hidden = true; panel.id = uniqueId('pui-popover');\n panel.setAttribute('role', 'region'); panel.setAttribute('aria-label', options.label);\n trigger.element.setAttribute('aria-controls', panel.id); trigger.element.setAttribute('aria-expanded', 'false');\n const root = element('div', 'pui-popover', trigger.element, panel); const life = new Lifetime();\n function close(restoreFocus = false): void {\n if (!open) return; open = false; panel.hidden = true; trigger.element.setAttribute('aria-expanded', 'false'); options.onToggle?.(false);\n if (restoreFocus && trigger.element.isConnected) trigger.element.focus();\n }\n function show(): void {\n if (state.disabled || open) return; open = true; panel.hidden = false; trigger.element.setAttribute('aria-expanded', 'true'); options.onToggle?.(true);\n }\n life.listen(document, 'pointerdown', (event => { if (open && event.target instanceof Node && !root.contains(event.target)) close(); }) as EventListener);\n life.listen(root, 'keydown', (event => { if (open && (event as KeyboardEvent).key === 'Escape') { event.preventDefault(); event.stopPropagation(); close(true); } }) as EventListener);\n life.listen(root, 'focusout', (() => { queueMicrotask(() => { if (open && !root.contains(document.activeElement)) close(); }); }) as EventListener);\n const update = (next: Readonly<PopoverState>): void => { state = next; trigger.update(next); panel.setAttribute('aria-label', next.label); if (next.disabled) close(); };\n update(options);\n return { element: root, trigger: trigger.element, panel, update, open: show, close, isOpen: () => open,\n destroy() { close(); life.destroy(); trigger.destroy(); } };\n}\n\nexport interface MenuItem { id: string; label: string; disabled?: boolean; intent?: Intent; checked?: boolean; onAction: UIAction; }\nexport interface MenuState extends PopoverState { items: readonly MenuItem[]; }\nexport function createMenu(options: MenuState): PopoverBlock & UIBlock<MenuState> {\n const content = element('div', 'pui-menu'); content.setAttribute('role', 'menu');\n const blocks = new Map<string, ButtonBlock>(); let items: readonly MenuItem[] = options.items;\n const popover = createPopover({ label: options.label, content, disabled: options.disabled });\n popover.trigger.setAttribute('aria-haspopup', 'menu'); const life = new Lifetime();\n const update = (state: Readonly<MenuState>): void => {\n items = state.items; popover.update(state);\n const keep = new Set(state.items.map(item => item.id));\n for (const [id, block] of blocks) if (!keep.has(id)) { block.destroy(); block.element.remove(); blocks.delete(id); }\n for (const item of state.items) {\n let block = blocks.get(item.id);\n if (!block) {\n block = createButton({ ...item, onAction: async () => {\n const current = items.find(candidate => candidate.id === item.id); if (!current || current.disabled) return;\n const result = await current.onAction(); if (!result || result.ok) popover.close(); return result;\n } });\n blocks.set(item.id, block);\n }\n block.update(item); block.element.setAttribute('role', item.checked == null ? 'menuitem' : 'menuitemcheckbox');\n if (item.checked != null) block.element.setAttribute('aria-checked', String(item.checked)); else block.element.removeAttribute('aria-checked');\n content.append(block.element);\n }\n };\n life.listen(popover.trigger, 'keydown', (event => {\n const key = (event as KeyboardEvent).key;\n if (key === 'ArrowDown' || key === 'ArrowUp') { event.preventDefault(); popover.open(); const targets = focusableElements(content); (key === 'ArrowDown' ? targets[0] : targets.at(-1))?.focus(); }\n }) as EventListener);\n life.listen(content, 'keydown', (event => {\n const key = (event as KeyboardEvent).key; if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(key)) return;\n event.preventDefault(); const targets = focusableElements(content); const index = targets.indexOf(document.activeElement as HTMLElement);\n const next = key === 'Home' ? 0 : key === 'End' ? targets.length - 1 : (index + (key === 'ArrowUp' ? -1 : 1) + targets.length) % targets.length;\n targets[next]?.focus();\n }) as EventListener);\n update(options);\n return { ...popover, update, destroy() { life.destroy(); popover.destroy(); for (const block of blocks.values()) block.destroy(); } };\n}\n"]}
|