pith-ui 0.1.0 → 0.1.1
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 +8 -0
- package/API.md +656 -249
- package/README.md +1 -1
- package/dist/composer.d.ts.map +1 -1
- package/dist/composer.js +13 -4
- package/dist/composer.js.map +1 -1
- package/dist/content/conversation-view.d.ts +21 -4
- package/dist/content/conversation-view.d.ts.map +1 -1
- package/dist/content/conversation-view.js +38 -5
- package/dist/content/conversation-view.js.map +1 -1
- package/dist/content/image-viewer.d.ts +4 -2
- package/dist/content/image-viewer.d.ts.map +1 -1
- package/dist/content/image-viewer.js +25 -12
- package/dist/content/image-viewer.js.map +1 -1
- package/dist/content/paged-preview.d.ts.map +1 -1
- package/dist/content/paged-preview.js +6 -3
- package/dist/content/paged-preview.js.map +1 -1
- package/dist/content/welcome.d.ts.map +1 -1
- package/dist/content/welcome.js +14 -5
- package/dist/content/welcome.js.map +1 -1
- package/dist/files/panels.d.ts +6 -1
- package/dist/files/panels.d.ts.map +1 -1
- package/dist/files/panels.js +48 -7
- package/dist/files/panels.js.map +1 -1
- package/dist/files/systems.d.ts.map +1 -1
- package/dist/files/systems.js +47 -30
- package/dist/files/systems.js.map +1 -1
- package/dist/forms/actions.d.ts +7 -7
- package/dist/forms/actions.d.ts.map +1 -1
- package/dist/forms/actions.js +28 -8
- package/dist/forms/actions.js.map +1 -1
- package/dist/forms/custom-connection.d.ts +2 -1
- package/dist/forms/custom-connection.d.ts.map +1 -1
- package/dist/forms/custom-connection.js +34 -27
- package/dist/forms/custom-connection.js.map +1 -1
- package/dist/forms/dialog-frame.d.ts +2 -0
- package/dist/forms/dialog-frame.d.ts.map +1 -1
- package/dist/forms/dialog-frame.js +46 -26
- package/dist/forms/dialog-frame.js.map +1 -1
- package/dist/forms/identity.d.ts +12 -0
- package/dist/forms/identity.d.ts.map +1 -1
- package/dist/forms/identity.js +32 -0
- package/dist/forms/identity.js.map +1 -1
- package/dist/forms/model-editor.d.ts +8 -3
- package/dist/forms/model-editor.d.ts.map +1 -1
- package/dist/forms/model-editor.js +73 -62
- package/dist/forms/model-editor.js.map +1 -1
- package/dist/forms/panels.d.ts +95 -6
- package/dist/forms/panels.d.ts.map +1 -1
- package/dist/forms/panels.js +142 -27
- package/dist/forms/panels.js.map +1 -1
- package/dist/forms/provider-login.d.ts.map +1 -1
- package/dist/forms/provider-login.js +9 -7
- package/dist/forms/provider-login.js.map +1 -1
- package/dist/forms/resource-editor.d.ts +9 -5
- package/dist/forms/resource-editor.d.ts.map +1 -1
- package/dist/forms/resource-editor.js +18 -8
- package/dist/forms/resource-editor.js.map +1 -1
- package/dist/foundations.d.ts +95 -0
- package/dist/foundations.d.ts.map +1 -0
- package/dist/foundations.js +315 -0
- package/dist/foundations.js.map +1 -0
- package/dist/navigation/context-menu.d.ts +1 -0
- package/dist/navigation/context-menu.d.ts.map +1 -1
- package/dist/navigation/context-menu.js +48 -34
- package/dist/navigation/context-menu.js.map +1 -1
- package/dist/navigation/navigation.d.ts +42 -7
- package/dist/navigation/navigation.d.ts.map +1 -1
- package/dist/navigation/navigation.js +197 -14
- package/dist/navigation/navigation.js.map +1 -1
- package/dist/primitives.d.ts +3 -0
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +60 -168
- package/dist/primitives.js.map +1 -1
- package/dist/styles.css +32 -28
- package/dist/surface.d.ts +29 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +154 -0
- package/dist/surface.js.map +1 -0
- package/dist/tasks/approval.d.ts.map +1 -1
- package/dist/tasks/approval.js +5 -2
- package/dist/tasks/approval.js.map +1 -1
- package/dist/tasks/permission.d.ts +5 -3
- package/dist/tasks/permission.d.ts.map +1 -1
- package/dist/tasks/permission.js +11 -5
- package/dist/tasks/permission.js.map +1 -1
- package/dist/workspace.d.ts +58 -4
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +120 -15
- package/dist/workspace.js.map +1 -1
- package/package.json +1 -1
package/dist/primitives.js.map
CHANGED
|
@@ -1 +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"]}
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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","sourcesContent":["import { Generation, Lifetime } from './core.js';\nimport type { ActionResult, Density, Intent, UIAction, UIBlock } from './core.js';\nimport { element, iconElement, setText, uniqueId } from './dom.js';\nimport { adoptAction, adoptActionLayout, adoptFeedback, adoptNativeControl, reconcileSelectOptions } from './foundations.js';\nimport { installDialogLifecycle, installMenuNavigation } from './surface.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 /** Secondary product action, including the accepted compact application style. */\n appearance?: 'standard' | 'secondary';\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 action = adoptAction(node, { caption, onAction: options.onAction, onError: options.onError });\n const update = (next: Readonly<ButtonState>): void => {\n action.update({ ...next, intent: next.intent ?? 'neutral', density: next.density ?? 'normal',\n disabled: !!next.disabled, pending: !!next.pending, title: next.title ?? '', icon: next.icon ?? '',\n appearance: next.appearance ?? 'standard' });\n };\n update(options);\n return { element: node, update, destroy() { action.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.append(...(options.children ?? []));\n const layout = adoptActionLayout(root, 'toolbar');\n const update = (state: Readonly<ToolbarState>): void => { layout.update({ ...state, density: state.density ?? 'normal' }); };\n update(options); return { element: root, update, destroy() { layout.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 description.id = uniqueId('pui-description');\n error.id = uniqueId('pui-error');\n control.classList.add('pui-control');\n root.append(label, control, description, error);\n const field = adoptNativeControl(control, { label, description, error });\n const update = (state: Readonly<FieldState>): void => {\n field.update({ ...state, label: `${state.label}${state.required ? ' *' : ''}`,\n description: state.description ?? '', error: state.error ?? '', disabled: !!state.disabled, required: !!state.required });\n label.hidden = !state.label;\n root.classList.toggle('pui-invalid', !!state.error);\n };\n update(options);\n return { element: root, control, update, destroy() { field.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 input = adoptNativeControl(control, { onInput: options.onInput, onChange: options.onChange });\n const update = (state: Readonly<InputState>): void => {\n field.update(state);\n input.update({ placeholder: state.placeholder ?? '', readOnly: !!state.readOnly });\n control.classList.toggle('pui-compact', state.density === 'compact');\n };\n update(options);\n return { element: field.element, control, update, getValue: input.getValue,\n reset: input.reset, focus: input.focus,\n destroy() { input.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 input = adoptNativeControl(control, { onChange: () => options.onChange?.(control.value) });\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 reconcileSelectOptions(control, state.options);\n if (!control.multiple && control.selectedIndex < 0 && control.options.length) control.selectedIndex = 0;\n }\n };\n update(options);\n if (options.value != null) control.value = options.value;\n return { element: field.element, control, update, getValue: input.getValue,\n reset: input.reset, focus: input.focus, destroy() { input.destroy(); field.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 input = adoptNativeControl(control, { onChange: () => options.onChange?.(control.checked) });\n const update = (state: Readonly<CheckboxState>): void => {\n setText(caption, state.label); setText(description, state.description); description.hidden = !state.description;\n input.update({ disabled: !!state.disabled });\n };\n update(options);\n return { element: root, control, update, getValue: input.getChecked,\n reset: input.reset, focus: input.focus, destroy() { input.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 notice = adoptFeedback(root, { presentation: 'notice' });\n notice.update(state); return notice;\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 status = adoptFeedback(root, { presentation: 'status', autoHide: false });\n const update = (next: Readonly<StatusState>): void => { status.update({ message: next.label, tone: next.tone }); };\n update(state); return { element: root, update, destroy() { status.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 layout = adoptActionLayout(root, 'actions');\n const update = (state: Readonly<ActionsState>): void => { layout.update({ align: state.align ?? 'end' }); };\n update(options); return { element: root, update, destroy() { layout.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 let state: DialogState = options; 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 const surface = installDialogLifecycle(root, { closeOnBackdrop: options.closeOnBackdrop ?? !!options.dialog,\n canClose: () => !state.closeDisabled, onClose: options.onClose });\n update(options);\n return { element: root, body, update,\n open() { if (!disposed) surface.open(); }, close() { surface.close(); },\n destroy() { if (disposed) return; disposed = true; surface.close(); surface.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 input = adoptNativeControl(control, { label, onInput: value => options.onInput?.(value) });\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 input.update({ disabled: !!next.inputDisabled });\n };\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(target) {\n generation.invalidate(); pending = false;\n update({ ...state, error: '', title: target.title ?? options.title ?? 'Edit message', description: target.description ?? options.description, note: target.note ?? options.note });\n input.reset(target.value); dialog.open(); input.focus();\n }, close() { generation.invalidate(); dialog.close(); }, getValue: input.getValue, focus: input.focus,\n destroy() { generation.destroy(); life.destroy(); input.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; refreshAvailability(): 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 || options.unavailable?.()), 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(); }, refreshAvailability() { update(state); }, 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(); navigation.focus(key === 'ArrowUp' ? 'last' : 'first'); }\n }) as EventListener);\n const navigation = installMenuNavigation(content, { trigger: popover.trigger, isOpen: popover.isOpen,\n onDismiss(restoreFocus) { popover.close(); if (restoreFocus) popover.trigger.focus(); } });\n update(options);\n return { ...popover, update, destroy() { navigation.destroy(); life.destroy(); popover.destroy(); for (const block of blocks.values()) block.destroy(); } };\n}\n"]}
|
package/dist/styles.css
CHANGED
|
@@ -6,8 +6,11 @@
|
|
|
6
6
|
line-height: var(--pui-line-height, 20px);
|
|
7
7
|
color: var(--pui-text);
|
|
8
8
|
}
|
|
9
|
+
.pui .pui-button, .pui .pui-primary-button, .pui .pui-secondary-button, .pui .pui-quiet-icon {
|
|
10
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
11
|
+
}
|
|
12
|
+
.pui .pui-button, .pui .pui-primary-button, .pui .pui-secondary-button { gap: 7px; }
|
|
9
13
|
.pui .pui-button {
|
|
10
|
-
display: inline-flex; align-items: center; justify-content: center; gap: 7px;
|
|
11
14
|
min-height: var(--pui-control-height, 40px); max-width: 100%; padding: 9px 14px;
|
|
12
15
|
border: 1px solid var(--pui-border); border-radius: var(--pui-radius, 8px);
|
|
13
16
|
background: var(--pui-surface); color: var(--pui-text);
|
|
@@ -27,6 +30,17 @@
|
|
|
27
30
|
.pui .pui-icon { display: inline-block; width: 18px; height: 18px; flex-shrink: 0; vertical-align: middle; }
|
|
28
31
|
.pui .pui-icon-button { width: 36px; min-width: 36px; min-height: 36px; padding: 8px; background: transparent; border-color: transparent; }
|
|
29
32
|
.pui .pui-text-action { min-height: 28px; padding: 3px 6px; background: transparent; border-color: transparent; }
|
|
33
|
+
/* Accepted product presentations share the action core, without changing the
|
|
34
|
+
measured compact-chat and ordinary-form dimensions during adoption. */
|
|
35
|
+
.pui .pui-primary-button, .pui .pui-secondary-button { font-size: 12px; font-weight: 500; padding: 10px 15px; border-radius: 7px; }
|
|
36
|
+
.pui .pui-primary-button { background: var(--pui-accent); color: var(--pui-accent-foreground); }
|
|
37
|
+
.pui .pui-primary-button:hover { background: var(--pui-accent-hover); }
|
|
38
|
+
.pui .pui-primary-button .pui-icon { width: 14px; height: 14px; }
|
|
39
|
+
.pui .pui-secondary-button { border: 1px solid var(--pui-border); background: var(--pui-surface-subtle); color: var(--pui-text); }
|
|
40
|
+
.pui .pui-secondary-button:hover { background: var(--pui-surface-hover); }
|
|
41
|
+
.pui .pui-quiet-icon { background: transparent; border-radius: 6px; padding: 4px; color: var(--pui-muted); }
|
|
42
|
+
.pui .pui-quiet-icon:hover { background: var(--pui-surface-hover); color: var(--pui-text); }
|
|
43
|
+
.pui .pui-text-button { background: none; color: var(--pui-accent); padding: 4px 6px; font-size: 12px; text-decoration: underline; text-underline-offset: 3px; }
|
|
30
44
|
.pui .pui-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
|
|
31
45
|
.pui .pui-field { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
|
|
32
46
|
.pui .pui-field-label { font-size: 13px; font-weight: 500; color: var(--pui-text); }
|
|
@@ -50,21 +64,31 @@
|
|
|
50
64
|
.pui .pui-checkbox input { flex-shrink: 0; margin: 3px 0 0; width: 15px; height: 15px; accent-color: var(--pui-accent); }
|
|
51
65
|
.pui .pui-checkbox small { display: block; color: var(--pui-muted); font-size: 12px; }
|
|
52
66
|
.pui .pui-notice { padding: 10px 12px; border: 1px solid var(--pui-border); border-radius: var(--pui-radius, 8px); background: var(--pui-muted-surface, #f4f5f7); overflow-wrap: anywhere; }
|
|
53
|
-
.pui .pui-notice-error
|
|
67
|
+
.pui .pui-notice-error, .pui .pui-form-error, .pui .pui-status-error { color: var(--pui-error-text); }
|
|
68
|
+
.pui .pui-notice-error { border-color: var(--pui-error-border); background: var(--pui-error-surface); }
|
|
54
69
|
.pui .pui-notice-warning { color: var(--pui-warning-text); background: var(--pui-warning-surface); }
|
|
55
70
|
.pui .pui-notice-success { color: var(--pui-success-text, #24683a); background: var(--pui-success-surface, #edf8ef); }
|
|
56
71
|
.pui .pui-status { display: inline-flex; align-items: center; padding: 1px 7px; border-radius: 999px; background: var(--pui-muted-surface, #f0f2f5); font-size: 11px; white-space: nowrap; }
|
|
57
72
|
.pui .pui-status-success { color: var(--pui-success-text, #24683a); }
|
|
58
73
|
.pui .pui-status-warning { color: var(--pui-warning-text); }
|
|
59
|
-
.pui .pui-
|
|
74
|
+
.pui .pui-form-error { font-size: 12px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; margin-top: 14px; }
|
|
75
|
+
.pui .pui-form-error:empty { display: none; }
|
|
60
76
|
.pui .pui-progress { display: grid; gap: 7px; }
|
|
61
77
|
.pui .pui-progress progress { width: 100%; height: 8px; accent-color: var(--pui-accent); }
|
|
62
78
|
.pui .pui-form-section { display: grid; gap: 12px; min-width: 0; padding-block: 14px; }
|
|
63
79
|
.pui .pui-form-section > h3, .pui .pui-form-section > p { margin: 0; }
|
|
64
80
|
.pui .pui-form-section > h3 { font-size: 14px; font-weight: 600; line-height: 20px; }
|
|
65
|
-
.pui .pui-actions
|
|
66
|
-
.pui .pui-actions
|
|
67
|
-
.pui .pui-actions
|
|
81
|
+
.pui .pui-actions, .pui .pui-modal-footer, .pui .pui-file-actions, .pui .pui-feature-toolbar { display: flex; }
|
|
82
|
+
.pui .pui-actions, .pui .pui-feature-toolbar { align-items: center; flex-wrap: wrap; }
|
|
83
|
+
.pui .pui-actions, .pui .pui-modal-footer { justify-content: flex-end; gap: 9px; }
|
|
84
|
+
.pui .pui-actions[data-align="end"], .pui .pui-modal-footer[data-align="end"], .pui .pui-file-actions[data-align="end"], .pui .pui-feature-toolbar[data-align="end"] { justify-content: flex-end; }
|
|
85
|
+
.pui .pui-actions[data-align="start"], .pui .pui-modal-footer[data-align="start"], .pui .pui-file-actions[data-align="start"], .pui .pui-feature-toolbar[data-align="start"] { justify-content: flex-start; }
|
|
86
|
+
.pui .pui-actions[data-align="between"], .pui .pui-modal-footer[data-align="between"], .pui .pui-file-actions[data-align="between"], .pui .pui-feature-toolbar[data-align="between"] { justify-content: space-between; }
|
|
87
|
+
.pui .pui-modal-footer { margin-top: 24px; padding-top: 19px; border-top: 1px solid var(--pui-border); }
|
|
88
|
+
.pui .pui-file-actions { gap: 6px; flex-wrap: wrap; }
|
|
89
|
+
.pui .pui-file-actions .pui-secondary-button { font-size: 11px; padding: 6px 9px; }
|
|
90
|
+
.pui .pui-feature-toolbar { gap: 7px; margin: 0 0 19px; }
|
|
91
|
+
.pui .pui-feature-toolbar .pui-secondary-button { padding: 8px 10px; }
|
|
68
92
|
.pui .pui-disclosure { border: 1px solid var(--pui-border); border-radius: var(--pui-radius, 8px); }
|
|
69
93
|
.pui .pui-disclosure summary { cursor: pointer; padding: 11px 13px; overflow-wrap: anywhere; }
|
|
70
94
|
.pui .pui-disclosure summary small { display: block; margin-inline-start: 16px; }
|
|
@@ -283,8 +307,6 @@
|
|
|
283
307
|
.pui .pui-sidebar-section-label { margin: 32px 9px 12px; display: flex; align-items: center; height: 20px; font-size: 11px; font-weight: 600; letter-spacing: 1.3px; color: var(--pui-muted-tonal); }
|
|
284
308
|
.pui .pui-sidebar-section-label .pui-quiet-icon { margin-left: auto; width: 23px; height: 23px; }
|
|
285
309
|
.pui .pui-sidebar-section-label .pui-icon { width: 14px; height: 14px; }
|
|
286
|
-
.pui .pui-quiet-icon { display: inline-flex; align-items: center; justify-content: center; background: transparent; border-radius: 6px; padding: 4px; color: var(--pui-muted); }
|
|
287
|
-
.pui .pui-quiet-icon:hover { background: var(--pui-surface-hover); color: var(--pui-text); }
|
|
288
310
|
.pui .pui-workspace-list { display: flex; flex-direction: column; gap: 4px; }
|
|
289
311
|
.pui .pui-workspace-item { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 11px; background: transparent; color: var(--pui-muted-tonal); border-radius: 7px; text-align: left; font-size: 13px; }
|
|
290
312
|
.pui .pui-workspace-item:hover { background: var(--pui-surface-hover); }
|
|
@@ -360,7 +382,6 @@
|
|
|
360
382
|
.pui .pui-welcome-workspace { display: inline-flex; align-items: center; gap: 9px; margin-top: 30px; font-size: 12px; color: var(--pui-muted); }
|
|
361
383
|
.pui .pui-welcome-workspace .pui-icon { width: 16px; height: 16px; }
|
|
362
384
|
.pui .pui-welcome-workspace strong { font-weight: 500; color: var(--pui-text); }
|
|
363
|
-
.pui .pui-text-button { background: none; color: var(--pui-accent); padding: 4px 6px; font-size: 12px; text-decoration: underline; text-underline-offset: 3px; }
|
|
364
385
|
.pui .pui-suggestions { display: flex; justify-content: center; gap: 9px; flex-wrap: wrap; margin-top: 28px; }
|
|
365
386
|
.pui .pui-suggestions button { padding: 12px 13px; border: 1px solid var(--pui-border); border-radius: 8px; background: var(--pui-surface); font-size: 12px; display: flex; align-items: center; gap: 8px; color: var(--pui-muted); }
|
|
366
387
|
.pui .pui-suggestions button:hover { background: var(--pui-surface-hover); border-color: var(--pui-border); color: var(--pui-text); }
|
|
@@ -425,7 +446,7 @@
|
|
|
425
446
|
.pui .pui-code-toolbar .pui-code-copy { padding: 4px 9px; font-size: 11px; }
|
|
426
447
|
.pui .pui-markdown .pui-code-block pre { margin: 0; border: 0; border-radius: 0; }
|
|
427
448
|
.pui .pui-conversation-region { position: relative; display: flex; min-height: 0; flex: 1; }
|
|
428
|
-
.pui .pui-back-to-latest { position: absolute; bottom: 12px; right: 30px; display: flex; align-items: center; gap:
|
|
449
|
+
.pui .pui-back-to-latest { position: absolute; bottom: 12px; right: 30px; display: flex; align-items: center; gap: 7px; font-size: 12px; box-shadow: var(--pui-modal-shadow); }
|
|
429
450
|
.pui .pui-back-to-latest .pui-icon { width: 14px; height: 14px; }
|
|
430
451
|
.pui .pui-conversation-find { display: flex; align-items: center; gap: 7px; padding: 7px 30px; border-bottom: 1px solid var(--pui-border); background: var(--pui-surface); }
|
|
431
452
|
.pui .pui-conversation-find input { flex: 1; min-width: 0; max-width: 420px; border: 1px solid var(--pui-border); border-radius: 6px; padding: 6px 9px; background: var(--pui-surface-input); color: var(--pui-text); font-size: 13px; }
|
|
@@ -518,12 +539,6 @@
|
|
|
518
539
|
.pui .pui-approval-actions { display: flex; gap: 8px; justify-content: flex-end; flex-wrap: wrap; }
|
|
519
540
|
.pui .pui-secondary-button.pui-always-allow-button { color: var(--pui-warning-text); background: var(--pui-warning-surface); border-color: var(--pui-warning-border); }
|
|
520
541
|
.pui .pui-secondary-button.pui-always-allow-button:hover { background: var(--pui-warning-hover); }
|
|
521
|
-
.pui .pui-primary-button, .pui .pui-secondary-button { display: inline-flex; align-items: center; justify-content: center; gap: 7px; font-size: 12px; font-weight: 500; padding: 10px 15px; border-radius: 7px; }
|
|
522
|
-
.pui .pui-primary-button { background: var(--pui-accent); color: var(--pui-accent-foreground); }
|
|
523
|
-
.pui .pui-primary-button:hover { background: var(--pui-accent-hover); }
|
|
524
|
-
.pui .pui-primary-button .pui-icon { width: 14px; height: 14px; }
|
|
525
|
-
.pui .pui-secondary-button { border: 1px solid var(--pui-border); background: var(--pui-surface-subtle); color: var(--pui-text); }
|
|
526
|
-
.pui .pui-secondary-button:hover { background: var(--pui-surface-hover); }
|
|
527
542
|
.pui .pui-modal { width: min(500px, calc(100% - 40px)); max-height: calc(100dvh - 60px); overflow-y: auto; scrollbar-width: thin; scrollbar-color: var(--pui-scrollbar) transparent; background: var(--pui-surface); border: 1px solid var(--pui-border-strong); border-radius: 15px; padding: 27px 28px 23px; color: var(--pui-text); box-shadow: var(--pui-modal-shadow); }
|
|
528
543
|
.pui .pui-modal::-webkit-scrollbar { width: 6px; height: 6px; }
|
|
529
544
|
.pui .pui-modal::-webkit-scrollbar-track { background: transparent; margin: 8px 0; }
|
|
@@ -552,9 +567,6 @@
|
|
|
552
567
|
.pui .pui-input-with-icon input { padding-left: 36px; }
|
|
553
568
|
.pui .pui-configured-badge { font-size: 11px; color: var(--pui-muted); padding: 3px 5px; margin-left: 7px; border: 1px solid var(--pui-border); border-radius: 4px; }
|
|
554
569
|
.pui .pui-field-hint { font-size: 12px; line-height: 1.5; color: var(--pui-muted); margin: 9px 0 0; }
|
|
555
|
-
.pui .pui-modal-footer { display: flex; justify-content: flex-end; gap: 9px; margin-top: 24px; padding-top: 19px; border-top: 1px solid var(--pui-border); }
|
|
556
|
-
.pui .pui-form-error { font-size: 12px; line-height: 1.5; color: var(--pui-error-text); white-space: pre-wrap; overflow-wrap: anywhere; margin-top: 14px; }
|
|
557
|
-
.pui .pui-form-error:empty { display: none; }
|
|
558
570
|
.pui .pui-modal-workspaces { display: flex; flex-direction: column; gap: 7px; }
|
|
559
571
|
.pui .pui-modal-workspace { width: 100%; display: flex; align-items: center; gap: 12px; padding: 13px 12px; background: var(--pui-surface-subtle); border: 1px solid var(--pui-border); text-align: left; border-radius: 8px; }
|
|
560
572
|
.pui .pui-modal-workspace:hover { background: var(--pui-surface-hover); }
|
|
@@ -596,8 +608,6 @@
|
|
|
596
608
|
.pui .pui-queued-message-actions { display: flex; gap: 5px; flex-shrink: 0; align-items: center; }
|
|
597
609
|
.pui .pui-queued-message-actions .pui-icon { width: 15px; height: 15px; }
|
|
598
610
|
.pui .pui-queue-steer { gap: 5px; font-size: 12px; }
|
|
599
|
-
.pui .pui-modal textarea.pui-queue-edit-text { font-family: inherit; min-height: 120px; }
|
|
600
|
-
.pui .pui-queue-edit-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 16px; }
|
|
601
611
|
.pui .pui-artifacts-control { position: relative; flex-shrink: 0; }
|
|
602
612
|
.pui .pui-artifacts-toggle { min-width: 36px; height: 36px; gap: 5px; padding: 8px; border-radius: 9px; }
|
|
603
613
|
.pui .pui-artifacts-toggle[aria-expanded="true"] { color: var(--pui-text); background: var(--pui-surface-selected); }
|
|
@@ -619,11 +629,7 @@
|
|
|
619
629
|
.pui .pui-file-info strong { display: block; color: var(--pui-text); font-size: 13px; font-weight: 500; margin-bottom: 5px; }
|
|
620
630
|
.pui .pui-file-info p { color: var(--pui-muted-tonal); font-size: 12px; line-height: 1.5; margin: 5px 0; }
|
|
621
631
|
.pui .pui-file-path { display: block; color: var(--pui-muted-tonal); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; line-height: 1.6; overflow-wrap: anywhere; user-select: text; }
|
|
622
|
-
.pui .pui-file-actions { display: flex; gap: 6px; flex-wrap: wrap; }
|
|
623
|
-
.pui .pui-file-actions .pui-secondary-button { font-size: 11px; padding: 6px 9px; }
|
|
624
632
|
.pui .pui-feature-modal { width: min(660px, calc(100% - 40px)); }
|
|
625
|
-
.pui .pui-feature-toolbar { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin: 0 0 19px; }
|
|
626
|
-
.pui .pui-feature-toolbar .pui-secondary-button { padding: 8px 10px; }
|
|
627
633
|
.pui .pui-feature-hint { color: var(--pui-muted); font-size: 12px; line-height: 1.5; margin: 8px 0; }
|
|
628
634
|
.pui .pui-resource-section { margin-top: 22px; }
|
|
629
635
|
.pui .pui-resource-section h3 { color: var(--pui-text); font-size: 14px; font-weight: 500; margin: 0 0 12px; }
|
|
@@ -759,8 +765,6 @@
|
|
|
759
765
|
.pui .pui-provider-advanced > summary { cursor: pointer; font-size: 12px; color: var(--pui-muted-tonal); }
|
|
760
766
|
.pui .pui-provider-advanced > summary:hover { color: var(--pui-text); }
|
|
761
767
|
|
|
762
|
-
.pui .pui-danger-button { background: var(--pui-error-text); color: var(--pui-bg-main); padding: 10px 14px; border-radius: 7px; font-size: 12px; font-weight: 500; }
|
|
763
|
-
.pui .pui-danger-button:hover { filter: brightness(.9); }
|
|
764
768
|
.pui .pui-sidebar-conversation-menu .pui-destructive-menu-item { color: var(--pui-error-text); }
|
|
765
769
|
.pui .pui-conversation-actions { display: flex; align-items: center; gap: 6px; margin-left: auto; flex-shrink: 0; }
|
|
766
770
|
.pui .pui-compact-action { gap: 6px; padding: 6px 8px; font-size: 12px; }
|
|
@@ -806,7 +810,7 @@
|
|
|
806
810
|
.pui .pui-modal .pui-field-label, .pui .pui-modal .pui-custom-model label { font-size: var(--pui-form-font-size); line-height: 20px; }
|
|
807
811
|
.pui .pui-modal input:not([type="checkbox"]), .pui .pui-modal select:not([size]):not([multiple]), .pui .pui-modal select[size="1"]:not([multiple]) { min-height: var(--pui-control-height); height: var(--pui-control-height); padding: 9px 12px; font-size: var(--pui-form-font-size); line-height: 20px; }
|
|
808
812
|
.pui .pui-modal label > input:not([type="checkbox"]), .pui .pui-modal label > select { margin-top: var(--pui-field-gap); }
|
|
809
|
-
.pui .pui-modal .pui-primary-button, .pui .pui-modal .pui-secondary-button
|
|
813
|
+
.pui .pui-modal .pui-primary-button, .pui .pui-modal .pui-secondary-button { min-height: var(--pui-control-height); padding: 9px 14px; font-size: var(--pui-form-font-size); line-height: 20px; }
|
|
810
814
|
.pui .pui-modal .pui-modal-description, .pui .pui-modal .pui-field-hint, .pui .pui-modal .pui-form-error { font-size: var(--pui-form-font-size); line-height: 20px; }
|
|
811
815
|
.pui .pui-modal .pui-modal-footer { margin-top: 20px; padding-top: 20px; gap: 8px; }
|
|
812
816
|
.pui .pui-modal .pui-provider-login-status { font-size: var(--pui-form-font-size); line-height: 20px; margin: 18px 0 0; }
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface DialogLifecycleOptions {
|
|
2
|
+
closeOnBackdrop?: boolean;
|
|
3
|
+
canClose?: () => boolean;
|
|
4
|
+
onOpen?: () => void;
|
|
5
|
+
onClose?: () => void;
|
|
6
|
+
returnFocus?: () => HTMLElement | null;
|
|
7
|
+
closeButtonSelector?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface DialogLifecycle {
|
|
10
|
+
open(): void;
|
|
11
|
+
close(): void;
|
|
12
|
+
isOpen(): boolean;
|
|
13
|
+
destroy(): void;
|
|
14
|
+
}
|
|
15
|
+
/** One native lifecycle per dialog, including dialogs supplied by a host shell. */
|
|
16
|
+
export declare function installDialogLifecycle(dialog: HTMLDialogElement, options?: DialogLifecycleOptions): DialogLifecycle;
|
|
17
|
+
export interface MenuNavigationOptions {
|
|
18
|
+
trigger?: HTMLElement;
|
|
19
|
+
onDismiss: (restoreFocus: boolean) => void;
|
|
20
|
+
isOpen?: () => boolean;
|
|
21
|
+
closeOnOutside?: boolean;
|
|
22
|
+
contains?: (target: Node) => boolean;
|
|
23
|
+
}
|
|
24
|
+
/** Shared keyboard behavior; each menu retains its own presentation and actions. */
|
|
25
|
+
export declare function installMenuNavigation(menu: HTMLElement, options: MenuNavigationOptions): {
|
|
26
|
+
focus(edge?: 'first' | 'last'): void;
|
|
27
|
+
destroy(): void;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=surface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IACvC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AACD,MAAM,WAAW,eAAe;IAC9B,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,OAAO,CAAC;IAClB,OAAO,IAAI,IAAI,CAAC;CACjB;AA2BD,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,sBAA2B,GAAG,eAAe,CA0EvH;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO,CAAC;CACtC;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,GAAG;IAAE,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE,CAsBlJ"}
|