@vobs/ui 1.3.1 → 1.3.3
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/dist/icon.cjs +8 -1
- package/dist/icon.cjs.map +1 -1
- package/dist/icon.js +8 -1
- package/dist/icon.js.map +1 -1
- package/dist/index.cjs +36 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/toast.cjs +35 -30
- package/dist/toast.cjs.map +1 -1
- package/dist/toast.js +6 -1
- package/dist/toast.js.map +1 -1
- package/package.json +5 -5
- package/src/icon.ts +13 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/button.ts","../src/utils.ts","../src/forms.ts","../src/card.ts","../src/tag.ts","../src/alert.ts","../src/tabs.ts","../src/dialog.ts","../src/overlay.ts","../src/menu.ts","../src/nav-list.ts","../src/pagination.ts","../src/avatar.ts","../src/page-header.ts","../src/table.ts","../src/stat-card.ts","../src/kbd.ts","../src/activity-rail.ts","../src/file-tree.ts","../src/editor-tabs.ts","../src/workbench-titlebar.ts","../src/status-bar.ts","../src/chat-composer.ts","../src/drawer.ts","../src/toast.ts","../src/icon.ts"],"sourcesContent":["export { Button, ButtonGroup } from './button'\nexport type { ButtonProps, ButtonVariant, ButtonGroupProps, ControlSize } from './button'\n\nexport { Input, Textarea, Select, Checkbox, Radio, Switch } from './forms'\nexport type {\n ChoiceProps,\n InputProps,\n InputType,\n SelectProps,\n SwitchProps,\n TextareaProps\n} from './forms'\n\nexport { Card, CardHeader } from './card'\nexport type { CardProps, CardHeaderProps } from './card'\n\nexport { Tag } from './tag'\nexport type { TagProps, TagTone } from './tag'\n\nexport { Alert } from './alert'\nexport type { AlertProps, AlertTone } from './alert'\n\nexport { Tabs } from './tabs'\nexport type { TabItem, TabsProps } from './tabs'\n\nexport { Dialog } from './dialog'\nexport type { DialogCloseReason, DialogProps } from './dialog'\n\nexport { Menu, MenuDivider } from './menu'\nexport type { MenuItem, MenuProps } from './menu'\n\nexport { NavList } from './nav-list'\nexport type { NavGroup, NavItem, NavListProps } from './nav-list'\n\nexport { Pagination } from './pagination'\nexport type { PaginationProps } from './pagination'\n\nexport { Avatar } from './avatar'\nexport type { AvatarProps, AvatarShape, AvatarSize } from './avatar'\n\nexport { PageHeader, PageHeaderAction } from './page-header'\nexport type { PageHeaderActionProps, PageHeaderProps } from './page-header'\n\nexport { Table, TablePanel } from './table'\nexport type { TableAlign, TableColumn, TablePanelProps, TableProps } from './table'\n\nexport { StatCard, StatCardGrid } from './stat-card'\nexport type { StatCardGridProps, StatCardProps, StatDeltaDirection } from './stat-card'\n\nexport { Kbd, KbdCombo, KbdRow } from './kbd'\nexport type { KbdComboProps, KbdProps, KbdRowProps } from './kbd'\n\nexport { ActivityRail } from './activity-rail'\nexport type { ActivityRailItem, ActivityRailProps } from './activity-rail'\n\nexport { FileTree } from './file-tree'\nexport type { FileTreeItem, FileTreeItemKind, FileTreeProps } from './file-tree'\n\nexport { EditorTabs } from './editor-tabs'\nexport type { EditorTabItem, EditorTabsProps } from './editor-tabs'\n\nexport { WorkbenchTitlebar } from './workbench-titlebar'\nexport type { WorkbenchTitlebarProps } from './workbench-titlebar'\n\nexport { StatusBar } from './status-bar'\nexport type { StatusBarDot, StatusBarItem, StatusBarProps } from './status-bar'\n\nexport { ChatComposer } from './chat-composer'\nexport type { ChatComposerProps } from './chat-composer'\n\nexport { Drawer } from './drawer'\nexport type { DrawerCloseReason, DrawerProps } from './drawer'\n\nexport { ToastHost } from './toast'\nexport type { ToastHostProps, ToastPosition } from './toast'\n\nexport {\n createDOMPortalAdapter,\n createFocusTrap,\n createOverlayManager,\n createPortal\n} from './overlay'\nexport type {\n FocusTrapHandle,\n FocusTrapOptions,\n OverlayEntry,\n OverlayManager,\n VuiPortalAdapter\n} from './overlay'\n\nexport { Icon, createIcon, registerIcon, resolveIcon, VUI_ICON_PATHS } from './icon'\nexport type { IconDefinition, IconProps } from './icon'\n\nexport type { VuiAttributeValue, VuiChildren, VuiCommonProps, VuiEventHandler } from './types'\n","import { effect } from '@vobs/reactivity'\nimport {\n createElement,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n hasProp,\n listen,\n mountSlot,\n readProp,\n setOptionalAttribute,\n setOptionalProperty\n} from './utils'\nimport type { VuiCommonProps, VuiEventHandler } from './types'\n\nexport type ButtonVariant =\n | 'brand'\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'ghost'\n | 'danger'\n | 'danger-strong'\n | 'danger-subtle'\n | 'warning'\n | 'link'\n\nexport type ControlSize = 'sm' | 'md' | 'lg'\n\nexport interface ButtonProps extends VuiCommonProps {\n readonly variant?: ButtonVariant\n readonly size?: ControlSize\n readonly type?: 'button' | 'submit' | 'reset'\n readonly disabled?: boolean\n readonly loading?: boolean\n readonly iconOnly?: boolean\n readonly icon?: VobsNode | (() => VobsNode | null | undefined)\n readonly onClick?: VuiEventHandler<MouseEvent>\n}\n\nexport function Button(props: ButtonProps = {}): VobsNode {\n const root = createElement('button')\n\n bindClassList(root, props, () => [\n 'vui-btn',\n `vui-btn--${readProp<ButtonVariant>(props, 'variant', 'primary')}`,\n `vui-btn--${readProp<ControlSize>(props, 'size', 'md')}`,\n readProp(props, 'iconOnly', false) ? 'vui-btn--icon' : undefined\n ])\n bindCommonAttributes(root, props, [\n 'variant',\n 'size',\n 'type',\n 'disabled',\n 'loading',\n 'iconOnly',\n 'icon',\n 'onClick'\n ])\n\n effect(() => {\n const disabled = readProp(props, 'disabled', false) || readProp(props, 'loading', false)\n setOptionalProperty(root, 'disabled', disabled)\n setOptionalAttribute(root, 'type', readProp(props, 'type', 'button'))\n setOptionalAttribute(root, 'aria-disabled', disabled ? 'true' : undefined)\n setOptionalAttribute(root, 'aria-busy', readProp(props, 'loading', false) ? 'true' : undefined)\n })\n\n listen(root, 'click', props, 'onClick', () => (\n readProp(props, 'disabled', false) || readProp(props, 'loading', false)\n ))\n\n if (hasProp(props, 'icon')) mountSlot(root, props, 'icon')\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport interface ButtonGroupProps extends VuiCommonProps {}\n\nexport function ButtonGroup(props: ButtonGroupProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-btn-group'])\n bindCommonAttributes(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n addEventListener,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n setTextContent,\n type VobsNode\n} from '@vobs/vobs'\nimport type { VuiCommonProps } from './types'\n\ntype VuiProps = VuiCommonProps | object\n\nexport function classNames(...values: readonly (string | false | null | undefined)[]): string {\n return values\n .flatMap(value => typeof value === 'string' ? value.trim().split(/\\s+/u) : [])\n .filter(Boolean)\n .join(' ')\n}\n\nexport function readProp<T>(props: object, name: string, fallback: T): T {\n const value = Reflect.get(props, name)\n return (value === undefined ? fallback : value) as T\n}\n\nexport function hasProp(props: object, name: string): boolean {\n return name in props\n}\n\nexport function bindClass(\n root: Element,\n props: VuiProps,\n ...baseClasses: readonly (string | undefined)[]\n): void {\n effect(() => {\n setAttribute(root, 'class', classNames(\n ...baseClasses,\n readString(props, 'class'),\n readString(props, 'className')\n ))\n })\n}\n\nexport function bindClassList(\n root: Element,\n props: VuiProps,\n readBaseClasses: () => readonly (string | undefined)[]\n): void {\n effect(() => {\n setAttribute(root, 'class', classNames(\n ...readBaseClasses(),\n readString(props, 'class'),\n readString(props, 'className')\n ))\n })\n}\n\nexport function bindCommonAttributes(\n root: Element,\n props: VuiProps,\n skip: readonly string[] = [],\n options: { readonly includeDataAria?: boolean } = {}\n): void {\n const ignored = new Set(skip)\n ignored.add('class')\n ignored.add('className')\n ignored.add('children')\n ignored.add('style')\n\n effect(() => {\n const next = new Map<string, string>()\n for (const name of Object.keys(props)) {\n if (ignored.has(name) || name.startsWith('on')) continue\n if (!isCommonAttribute(name)) continue\n if (options.includeDataAria === false && (name.startsWith('aria-') || name.startsWith('data-'))) continue\n\n const value = Reflect.get(props, name)\n const normalized = normalizeAttribute(name, value)\n if (normalized !== undefined) next.set(normalized.name, normalized.value)\n }\n\n const managed = getManagedAttributes(root)\n for (const name of managed) {\n if (!next.has(name)) removeAttribute(root, name)\n }\n for (const [name, value] of next) setAttribute(root, name, value)\n setManagedAttributes(root, next.keys())\n })\n}\n\nexport function bindUserStyle(root: Element, props: VuiProps): void {\n bindStyle(root, props, () => '')\n}\n\nexport function bindStyle(root: Element, props: VuiProps, createStyle: () => string): void {\n effect(() => {\n const userStyle = readString(props, 'style')\n const internalStyle = createStyle()\n const style = [internalStyle, userStyle].filter(Boolean).join('; ')\n if (style) setAttribute(root, 'style', style)\n else removeAttribute(root, 'style')\n })\n}\n\nexport function bindTextContent(\n node: Text,\n read: () => unknown\n): void {\n effect(() => {\n setTextContent(node, String(read() ?? ''))\n })\n}\n\nexport function bindPropertyValue(\n node: Element,\n name: string,\n read: () => unknown\n): void {\n effect(() => setProperty(node, name, read()))\n}\n\nexport function bindAttributeValue(\n node: Element,\n name: string,\n read: () => unknown\n): void {\n effect(() => {\n const value = read()\n if (value === undefined || value === null || value === false) removeAttribute(node, name)\n else setAttribute(node, name, String(value))\n })\n}\n\nexport function listen(\n root: Element,\n event: string,\n props: object,\n propName: string,\n disabled?: () => boolean\n): void {\n addEventListener(root, event, (reason: Event) => {\n if (disabled?.()) return\n const handler = Reflect.get(props, propName)\n if (typeof handler === 'function') handler(reason)\n })\n}\n\nexport function mountSlot(\n parent: Node,\n props: object,\n propName: string\n): void {\n insertDynamic(parent, null, () => resolveSlot(Reflect.get(props, propName)))\n}\n\nexport function resolveSlot(value: unknown): VobsNode | null {\n const resolved = typeof value === 'function' ? value() : value\n if (resolved === undefined || resolved === null || resolved === false) return null\n if (typeof resolved === 'string' || typeof resolved === 'number') return createText(String(resolved))\n if (Array.isArray(resolved)) {\n const children = resolved\n return createFragment((parent, anchor) => {\n for (const child of children) {\n const node = resolveSlot(child)\n if (node) insertBefore(parent, node, anchor)\n }\n })\n }\n return resolved as VobsNode\n}\n\nexport function setOptionalAttribute(node: Element, name: string, value: unknown): void {\n if (value === undefined || value === null || value === false || value === '') {\n removeAttribute(node, name)\n return\n }\n setAttribute(node, name, String(value))\n}\n\nexport function setOptionalProperty(node: Element, name: string, value: unknown): void {\n if (value === undefined || value === null) return\n setProperty(node, name, value)\n}\n\nfunction readString(props: object, name: string): string | undefined {\n const value = Reflect.get(props, name)\n return typeof value === 'string' ? value : undefined\n}\n\nfunction isCommonAttribute(name: string): boolean {\n return name === 'id'\n || name === 'title'\n || name === 'role'\n || name === 'tabIndex'\n || name.startsWith('aria-')\n || name.startsWith('data-')\n}\n\nfunction normalizeAttribute(name: string, value: unknown): { name: string; value: string } | undefined {\n if (value === undefined || value === null) return undefined\n if (value === false && !name.startsWith('aria-') && !name.startsWith('data-')) return undefined\n return { name: name === 'tabIndex' ? 'tabindex' : name, value: String(value) }\n}\n\nconst managedAttributes = new WeakMap<object, Set<string>>()\n\nfunction getManagedAttributes(node: Element): Set<string> {\n return managedAttributes.get(node) ?? new Set<string>()\n}\n\nfunction setManagedAttributes(node: Element, names: IterableIterator<string>): void {\n managedAttributes.set(node, new Set(names))\n}\n\nfunction removeAttribute(node: Element, name: string): void {\n const candidate = node as Element & { removeAttribute?: (attribute: string) => void }\n candidate.removeAttribute?.(name)\n}\n","import { effect, type Signal } from '@vobs/reactivity'\nimport {\n createElement,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindPropertyValue,\n bindUserStyle,\n hasProp,\n listen,\n mountSlot,\n readProp,\n setOptionalAttribute,\n setOptionalProperty\n} from './utils'\nimport type { VuiCommonProps, VuiEventHandler } from './types'\n\nexport type InputType = 'date' | 'email' | 'number' | 'password' | 'search' | 'text' | 'url'\n\n/** bind 传入 Signal 时组件建立双向绑定:信号→DOM property、用户输入→信号写回。 */\nfunction bindSignalProp<T>(props: object): Signal<T> | undefined {\n const value = readProp<Signal<T> | undefined>(props, 'bind', undefined)\n return value && typeof value === 'object' && 'value' in value ? value : undefined\n}\n\nexport interface InputProps extends VuiCommonProps {\n readonly type?: InputType\n readonly name?: string\n readonly value?: string | number\n readonly bind?: Signal<string | number | undefined>\n readonly placeholder?: string\n readonly disabled?: boolean\n readonly readOnly?: boolean\n readonly required?: boolean\n readonly icon?: VobsNode | (() => VobsNode | null | undefined)\n readonly onInput?: VuiEventHandler<InputEvent>\n readonly onChange?: VuiEventHandler<Event>\n readonly onBlur?: VuiEventHandler<FocusEvent>\n}\n\nexport function Input(props: InputProps = {}): VobsNode {\n const root = createElement('div')\n const control = createElement('input')\n\n bindClassList(root, props, () => [\n 'vui-input',\n readProp<InputType>(props, 'type', 'text') === 'search' ? 'vui-search' : undefined\n ])\n bindUserStyle(root, props)\n bindCommonAttributes(control, props, [\n 'type',\n 'name',\n 'value',\n 'placeholder',\n 'disabled',\n 'readOnly',\n 'required',\n 'icon',\n 'onInput',\n 'onChange',\n 'onBlur'\n ])\n\n effect(() => {\n setOptionalAttribute(control, 'type', readProp<InputType>(props, 'type', 'text'))\n setOptionalAttribute(control, 'name', readProp<string | undefined>(props, 'name', undefined))\n setOptionalAttribute(control, 'placeholder', readProp<string | undefined>(props, 'placeholder', undefined))\n setOptionalProperty(control, 'disabled', readProp(props, 'disabled', false))\n setOptionalProperty(control, 'readOnly', readProp(props, 'readOnly', false))\n setOptionalProperty(control, 'required', readProp(props, 'required', false))\n })\n const bind = bindSignalProp<string | number | undefined>(props)\n if (bind) {\n bindPropertyValue(control, 'value', () => String(bind.value ?? ''))\n listen(control, 'input', { onInput: (event: Event) => { bind.value = (event.target as HTMLInputElement).value } }, 'onInput', () => readProp(props, 'disabled', false))\n } else if (hasProp(props, 'value')) {\n bindPropertyValue(control, 'value', () => readProp<string | number | undefined>(props, 'value', undefined) ?? '')\n }\n\n if (hasProp(props, 'icon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-input__icon')\n mountSlot(icon, props, 'icon')\n insertBefore(root, icon, null)\n }\n insertBefore(root, control, null)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n\n listen(control, 'input', props, 'onInput', () => readProp(props, 'disabled', false))\n listen(control, 'change', props, 'onChange', () => readProp(props, 'disabled', false))\n listen(control, 'blur', props, 'onBlur', () => false)\n return root\n}\n\nexport interface TextareaProps extends VuiCommonProps {\n readonly value?: string | number\n readonly bind?: Signal<string | number | undefined>\n readonly placeholder?: string\n readonly disabled?: boolean\n readonly readOnly?: boolean\n readonly required?: boolean\n readonly rows?: number\n readonly name?: string\n readonly onInput?: VuiEventHandler<InputEvent>\n readonly onChange?: VuiEventHandler<Event>\n readonly onBlur?: VuiEventHandler<FocusEvent>\n}\n\nexport function Textarea(props: TextareaProps = {}): VobsNode {\n const root = createElement('textarea')\n bindClassList(root, props, () => ['vui-textarea'])\n bindCommonAttributes(root, props, [\n 'value',\n 'placeholder',\n 'disabled',\n 'readOnly',\n 'required',\n 'rows',\n 'name',\n 'onInput',\n 'onChange',\n 'onBlur'\n ])\n effect(() => {\n setOptionalAttribute(root, 'name', readProp<string | undefined>(props, 'name', undefined))\n setOptionalAttribute(root, 'placeholder', readProp<string | undefined>(props, 'placeholder', undefined))\n setOptionalProperty(root, 'disabled', readProp(props, 'disabled', false))\n setOptionalProperty(root, 'readOnly', readProp(props, 'readOnly', false))\n setOptionalProperty(root, 'required', readProp(props, 'required', false))\n setOptionalAttribute(root, 'rows', readProp<number | undefined>(props, 'rows', undefined))\n })\n const bind = bindSignalProp<string | number | undefined>(props)\n if (bind) {\n bindPropertyValue(root, 'value', () => String(bind.value ?? ''))\n listen(root, 'input', { onInput: (event: Event) => { bind.value = (event.target as HTMLTextAreaElement).value } }, 'onInput', () => readProp(props, 'disabled', false))\n } else if (hasProp(props, 'value')) {\n bindPropertyValue(root, 'value', () => readProp<string | number | undefined>(props, 'value', undefined) ?? '')\n }\n listen(root, 'input', props, 'onInput', () => readProp(props, 'disabled', false))\n listen(root, 'change', props, 'onChange', () => readProp(props, 'disabled', false))\n listen(root, 'blur', props, 'onBlur', () => false)\n return root\n}\n\nexport interface SelectProps extends VuiCommonProps {\n readonly name?: string\n readonly value?: string | number\n readonly bind?: Signal<string | number | undefined>\n readonly disabled?: boolean\n readonly required?: boolean\n readonly multiple?: boolean\n readonly size?: number\n readonly onChange?: VuiEventHandler<Event>\n}\n\nexport function Select(props: SelectProps = {}): VobsNode {\n const root = createElement('select')\n bindClassList(root, props, () => ['vui-select'])\n bindCommonAttributes(root, props, [\n 'name',\n 'value',\n 'disabled',\n 'required',\n 'multiple',\n 'size',\n 'onChange'\n ])\n effect(() => {\n setOptionalAttribute(root, 'name', readProp<string | undefined>(props, 'name', undefined))\n setOptionalProperty(root, 'disabled', readProp(props, 'disabled', false))\n setOptionalProperty(root, 'required', readProp(props, 'required', false))\n setOptionalProperty(root, 'multiple', readProp(props, 'multiple', false))\n setOptionalAttribute(root, 'size', readProp<number | undefined>(props, 'size', undefined))\n })\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n const bind = bindSignalProp<string | number | undefined>(props)\n if (bind) {\n bindPropertyValue(root, 'value', () => String(bind.value ?? ''))\n listen(root, 'change', { onChange: (event: Event) => { bind.value = (event.target as HTMLSelectElement).value } }, 'onChange', () => readProp(props, 'disabled', false))\n } else if (hasProp(props, 'value')) {\n bindPropertyValue(root, 'value', () => readProp<string | number | undefined>(props, 'value', undefined) ?? '')\n }\n listen(root, 'change', props, 'onChange', () => readProp(props, 'disabled', false))\n return root\n}\n\nexport interface ChoiceProps extends VuiCommonProps {\n readonly name?: string\n readonly value?: string\n readonly checked?: boolean\n readonly bind?: Signal<boolean>\n readonly disabled?: boolean\n readonly required?: boolean\n readonly onChange?: VuiEventHandler<Event>\n}\n\nexport function Checkbox(props: ChoiceProps = {}): VobsNode {\n return createChoice('checkbox', props)\n}\n\nexport function Radio(props: ChoiceProps = {}): VobsNode {\n return createChoice('radio', props)\n}\n\nfunction createChoice(type: 'checkbox' | 'radio', props: ChoiceProps): VobsNode {\n const root = createElement('label')\n const control = createElement('input')\n const visual = createElement('span')\n\n bindClassList(root, props, () => [`vui-${type}`])\n bindUserStyle(root, props)\n bindCommonAttributes(control, props, [\n 'name',\n 'value',\n 'checked',\n 'disabled',\n 'required',\n 'onChange'\n ])\n setAttribute(visual, 'class', type === 'checkbox' ? 'vui-check__box' : 'vui-radio__dot')\n\n effect(() => {\n setOptionalAttribute(control, 'type', type)\n setOptionalAttribute(control, 'name', readProp<string | undefined>(props, 'name', undefined))\n setOptionalAttribute(control, 'value', readProp<string | undefined>(props, 'value', undefined))\n setOptionalProperty(control, 'disabled', readProp(props, 'disabled', false))\n setOptionalProperty(control, 'required', readProp(props, 'required', false))\n })\n const bind = bindSignalProp<boolean>(props)\n if (bind) {\n bindPropertyValue(control, 'checked', () => bind.value)\n listen(control, 'change', { onChange: (event: Event) => { bind.value = (event.target as HTMLInputElement).checked } }, 'onChange', () => readProp(props, 'disabled', false))\n } else if (hasProp(props, 'checked')) {\n bindPropertyValue(control, 'checked', () => readProp(props, 'checked', false))\n }\n insertBefore(root, control, null)\n insertBefore(root, visual, null)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n listen(control, 'change', props, 'onChange', () => readProp(props, 'disabled', false))\n return root\n}\n\nexport interface SwitchProps extends VuiCommonProps {\n readonly checked?: boolean\n readonly bind?: Signal<boolean>\n readonly disabled?: boolean\n readonly readOnly?: boolean\n readonly size?: 'sm' | 'md'\n readonly name?: string\n readonly value?: string\n readonly onChange?: VuiEventHandler<Event>\n}\n\nexport function Switch(props: SwitchProps = {}): VobsNode {\n const root = createElement('label')\n const control = createElement('input')\n const thumb = createElement('span')\n\n bindClassList(root, props, () => [\n 'vui-switch',\n readProp<'sm' | 'md'>(props, 'size', 'md') === 'sm' ? 'vui-switch--sm' : undefined\n ])\n bindUserStyle(root, props)\n bindCommonAttributes(root, props, ['role'])\n bindCommonAttributes(control, props, [\n 'checked',\n 'disabled',\n 'readOnly',\n 'name',\n 'value',\n 'onChange'\n ])\n setAttribute(thumb, 'class', 'vui-switch__thumb')\n setAttribute(root, 'role', 'switch')\n const bind = bindSignalProp<boolean>(props)\n\n effect(() => {\n setOptionalAttribute(control, 'type', 'checkbox')\n setOptionalAttribute(control, 'name', readProp<string | undefined>(props, 'name', undefined))\n setOptionalAttribute(control, 'value', readProp<string | undefined>(props, 'value', undefined))\n setOptionalProperty(control, 'disabled', readProp(props, 'disabled', false))\n setOptionalProperty(control, 'readOnly', readProp(props, 'readOnly', false))\n setOptionalAttribute(root, 'aria-checked', (bind ? bind.value : readProp(props, 'checked', false)) ? 'true' : 'false')\n setOptionalAttribute(root, 'aria-disabled', readProp(props, 'disabled', false) ? 'true' : undefined)\n })\n if (bind) {\n bindPropertyValue(control, 'checked', () => bind.value)\n listen(control, 'change', { onChange: (event: Event) => { bind.value = (event.target as HTMLInputElement).checked } }, 'onChange', () => readProp(props, 'disabled', false))\n } else if (hasProp(props, 'checked')) {\n bindPropertyValue(control, 'checked', () => readProp(props, 'checked', false))\n }\n insertBefore(root, control, null)\n insertBefore(root, thumb, null)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n listen(control, 'change', props, 'onChange', () => readProp(props, 'disabled', false))\n return root\n}\n","import {\n createElement,\n createText,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp\n} from './utils'\nimport type { VuiCommonProps } from './types'\n\nexport interface CardProps extends VuiCommonProps {\n readonly title?: string\n readonly description?: string\n}\n\nexport function Card(props: CardProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-card'])\n bindCommonAttributes(root, props, ['title', 'description'])\n bindUserStyle(root, props)\n\n if (hasProp(props, 'title')) {\n const title = createElement('div')\n const text = createText('')\n setAttribute(title, 'class', 'vui-card__title')\n bindTextContent(text, () => readProp(props, 'title', ''))\n insertBefore(title, text, null)\n insertBefore(root, title, null)\n }\n if (hasProp(props, 'description')) {\n const description = createElement('p')\n const text = createText('')\n setAttribute(description, 'class', 'vui-card__desc')\n bindTextContent(text, () => readProp(props, 'description', ''))\n insertBefore(description, text, null)\n insertBefore(root, description, null)\n }\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport interface CardHeaderProps extends VuiCommonProps {}\n\nexport function CardHeader(props: CardHeaderProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-card__header'])\n bindCommonAttributes(root, props)\n bindUserStyle(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n","import {\n createElement,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp\n} from './utils'\nimport type { VuiCommonProps } from './types'\n\nexport type TagTone = 'default' | 'brand' | 'success' | 'warning' | 'danger' | 'count' | 'neutral-strong'\n\nexport interface TagProps extends VuiCommonProps {\n readonly tone?: TagTone\n}\n\nexport function Tag(props: TagProps = {}): VobsNode {\n const root = createElement('span')\n bindClassList(root, props, () => [\n 'vui-tag',\n readProp<TagTone>(props, 'tone', 'default') === 'default'\n ? undefined\n : `vui-tag--${readProp<TagTone>(props, 'tone', 'default')}`\n ])\n bindCommonAttributes(root, props, ['tone'])\n bindUserStyle(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n","import {\n createElement,\n createText,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp\n} from './utils'\nimport type { VuiCommonProps } from './types'\n\nexport type AlertTone = 'info' | 'success' | 'warning' | 'danger'\n\nexport interface AlertProps extends VuiCommonProps {\n readonly tone?: AlertTone\n readonly title?: string\n readonly description?: string\n readonly icon?: VobsNode | (() => VobsNode | null | undefined)\n}\n\nexport function Alert(props: AlertProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => [\n 'vui-alert',\n `vui-alert--${readProp<AlertTone>(props, 'tone', 'info')}`\n ])\n bindCommonAttributes(root, props, ['tone', 'title', 'description', 'icon', 'role'])\n bindUserStyle(root, props)\n setAttribute(root, 'role', 'alert')\n\n if (hasProp(props, 'icon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-alert__icon')\n mountSlot(icon, props, 'icon')\n insertBefore(root, icon, null)\n }\n\n const content = createElement('div')\n if (hasProp(props, 'title')) {\n const title = createElement('div')\n const text = createText('')\n setAttribute(title, 'class', 'vui-alert__title')\n bindTextContent(text, () => readProp(props, 'title', ''))\n insertBefore(title, text, null)\n insertBefore(content, title, null)\n }\n if (hasProp(props, 'description')) {\n const description = createElement('div')\n const text = createText('')\n setAttribute(description, 'class', 'vui-alert__desc')\n bindTextContent(text, () => readProp(props, 'description', ''))\n insertBefore(description, text, null)\n insertBefore(content, description, null)\n }\n if (hasProp(props, 'children')) mountSlot(content, props, 'children')\n insertBefore(root, content, null)\n return root\n}\n","import { effect, state } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface TabItem {\n readonly id: string\n readonly label: string\n readonly disabled?: boolean\n readonly content?: VuiChildren\n}\n\nexport interface TabsProps extends VuiCommonProps {\n readonly items: readonly TabItem[]\n readonly value?: string\n readonly variant?: 'default' | 'filled'\n readonly onChange?: (id: string) => void\n}\n\nexport function Tabs(props: TabsProps): VobsNode {\n const root = createElement('div')\n const tablist = createElement('div')\n const panel = createElement('div')\n const internalValue = state<string | undefined>(undefined)\n\n bindClassList(root, props, () => ['vui-tabs-root'])\n bindCommonAttributes(root, props, ['items', 'value', 'variant', 'onChange'])\n setAttribute(tablist, 'role', 'tablist')\n effect(() => {\n const variant = readProp<'default' | 'filled'>(props, 'variant', 'default')\n setAttribute(tablist, 'class', `vui-tabs${variant === 'filled' ? ' vui-tabs--filled' : ''}`)\n })\n setAttribute(panel, 'class', 'vui-tabs__panel')\n\n insertDynamic(tablist, null, () => createTabButtons(props, internalValue))\n insertDynamic(panel, null, () => {\n const item = activeItem(readProp<readonly TabItem[]>(props, 'items', []), activeId(props, internalValue))\n return item?.content === undefined ? null : resolveSlot(item.content)\n })\n insertBefore(root, tablist, null)\n insertBefore(root, panel, null)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createTabButtons(props: TabsProps, internalValue: { value: string | undefined }): VobsNode {\n const items = readProp<readonly TabItem[]>(props, 'items', [])\n const selected = activeId(props, internalValue)\n return createFragment((parent, anchor) => {\n for (const item of items) {\n const button = createElement('button')\n const isActive = item.id === selected\n setAttribute(button, 'class', `vui-tab${isActive ? ' is-active' : ''}`)\n setAttribute(button, 'role', 'tab')\n setAttribute(button, 'type', 'button')\n setAttribute(button, 'aria-selected', isActive ? 'true' : 'false')\n setAttribute(button, 'data-tab-id', item.id)\n if (item.disabled === true) {\n setAttribute(button, 'aria-disabled', 'true')\n setProperty(button, 'disabled', true)\n }\n insertBefore(button, createText(item.label), null)\n addEventListener(button, 'click', () => {\n if (item.disabled === true) return\n if (readProp<string | undefined>(props, 'value', undefined) === undefined) internalValue.value = item.id\n const onChange = readProp<unknown>(props, 'onChange', undefined)\n if (typeof onChange === 'function') onChange(item.id)\n })\n insertBefore(parent, button, anchor)\n }\n })\n}\n\nfunction activeId(props: TabsProps, internalValue: { value: string | undefined }): string | undefined {\n const controlled = readProp<string | undefined>(props, 'value', undefined)\n if (controlled !== undefined) return controlled\n if (internalValue.value !== undefined) return internalValue.value\n return readProp<readonly TabItem[]>(props, 'items', []).find(item => item.disabled !== true)?.id\n}\n\nfunction activeItem(items: readonly TabItem[], id: string | undefined): TabItem | undefined {\n return items.find(item => item.id === id)\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createText,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute,\n setOptionalProperty\n} from './utils'\nimport type { VuiCommonProps } from './types'\nimport type { VuiPortalAdapter } from './overlay'\nimport { createPortal } from './overlay'\n\nexport type DialogCloseReason = 'close-button' | 'backdrop' | 'escape'\n\nexport interface DialogProps extends VuiCommonProps {\n readonly open?: boolean\n readonly title?: string\n readonly headerActions?: VobsNode | (() => VobsNode | null | undefined)\n readonly size?: 'sm' | 'md' | 'lg'\n readonly modal?: boolean\n readonly closeOnBackdrop?: boolean\n readonly closeOnEscape?: boolean\n readonly titleId?: string\n readonly descriptionId?: string\n readonly closeLabel?: string\n readonly onClose?: (reason: DialogCloseReason) => void\n readonly portal?: VuiPortalAdapter<unknown>\n readonly portalTarget?: unknown\n}\n\nexport function Dialog(props: DialogProps = {}): VobsNode {\n const root = createElement('div')\n const surface = createElement('section')\n const body = createElement('div')\n\n bindClassList(root, props, () => ['vui-backdrop'])\n bindUserStyle(root, props)\n bindCommonAttributes(surface, props, [\n 'open',\n 'title',\n 'headerActions',\n 'size',\n 'modal',\n 'closeOnBackdrop',\n 'closeOnEscape',\n 'titleId',\n 'descriptionId',\n 'closeLabel',\n 'onClose',\n 'portal',\n 'portalTarget'\n ])\n setAttribute(root, 'role', 'presentation')\n setAttribute(surface, 'class', 'vui-dialog')\n setAttribute(surface, 'role', 'dialog')\n setAttribute(body, 'class', 'vui-dialog__body')\n\n effect(() => {\n const open = readProp(props, 'open', false)\n const modal = readProp(props, 'modal', true)\n setOptionalProperty(root, 'hidden', !open)\n setOptionalAttribute(root, 'data-state', open ? 'open' : 'closed')\n setOptionalAttribute(surface, 'aria-modal', modal ? 'true' : 'false')\n setOptionalAttribute(surface, 'aria-labelledby', readProp<string | undefined>(props, 'titleId', undefined))\n setOptionalAttribute(surface, 'aria-describedby', readProp<string | undefined>(props, 'descriptionId', undefined))\n setOptionalAttribute(surface, 'data-size', readProp(props, 'size', 'md'))\n })\n\n if (hasProp(props, 'title') || hasProp(props, 'headerActions') || hasProp(props, 'onClose')) {\n const head = createElement('header')\n setAttribute(head, 'class', 'vui-dialog__head')\n if (hasProp(props, 'title')) {\n const title = createElement('div')\n const text = createText('')\n setAttribute(title, 'class', 'vui-dialog__title')\n bindTextContent(text, () => readProp(props, 'title', ''))\n insertBefore(title, text, null)\n insertBefore(head, title, null)\n }\n if (hasProp(props, 'headerActions')) mountSlot(head, props, 'headerActions')\n if (hasProp(props, 'onClose')) {\n const close = createElement('button')\n setAttribute(close, 'class', 'vui-dialog__close')\n setAttribute(close, 'type', 'button')\n setAttribute(close, 'aria-label', readProp(props, 'closeLabel', 'Close'))\n insertBefore(close, createText('x'), null)\n addEventListener(close, 'click', () => emitClose(props, 'close-button'))\n insertBefore(head, close, null)\n }\n insertBefore(surface, head, null)\n }\n\n if (hasProp(props, 'children')) mountSlot(body, props, 'children')\n insertBefore(surface, body, null)\n insertBefore(root, surface, null)\n\n addEventListener(root, 'click', event => {\n if (event.target !== root) return\n if (readProp(props, 'closeOnBackdrop', true)) emitClose(props, 'backdrop')\n })\n addEventListener(root, 'keydown', event => {\n if ((event as KeyboardEvent).key !== 'Escape') return\n if (readProp(props, 'closeOnEscape', true)) emitClose(props, 'escape')\n })\n const portal = readProp<VuiPortalAdapter<unknown> | undefined>(props, 'portal', undefined)\n return portal\n ? createPortal(root, portal, readProp(props, 'portalTarget', undefined))\n : root\n}\n\nfunction emitClose(props: DialogProps, reason: DialogCloseReason): void {\n if (!readProp(props, 'open', false)) return\n const handler = readProp<unknown>(props, 'onClose', undefined)\n if (typeof handler === 'function') handler(reason)\n}\n","import { getCurrentOwner, onDispose } from '@vobs/reactivity'\nimport {\n createComment,\n insertBefore,\n isVobsFragment,\n type VobsNode\n} from '@vobs/vobs'\n\nexport interface VuiPortalAdapter<Target = unknown> {\n mount(node: VobsNode, target: Target): void\n unmount(node: VobsNode, target: Target): void\n}\n\nexport function createPortal<Target>(\n node: VobsNode,\n adapter: VuiPortalAdapter<Target>,\n target: Target\n): VobsNode {\n const placeholder = createComment('vui:portal')\n const owner = getCurrentOwner()\n if (!owner) throw new Error('Vobs UI: createPortal 必须在组件 Owner 作用域内调用')\n adapter.mount(node, target)\n const cleanup = (): void => adapter.unmount(node, target)\n owner.onDispose(cleanup)\n return placeholder\n}\n\nexport function createDOMPortalAdapter(): VuiPortalAdapter<Node> {\n return {\n mount(node, target): void {\n insertBefore(target, node, null)\n },\n unmount(node, target): void {\n removePortalNode(node, target)\n }\n }\n}\n\nexport interface FocusTrapOptions {\n readonly initialFocus?: HTMLElement | (() => HTMLElement | null)\n readonly restoreFocus?: boolean\n readonly onEscape?: (event: KeyboardEvent) => void\n}\n\nexport interface FocusTrapHandle {\n readonly active: boolean\n activate(): void\n deactivate(): void\n dispose(): void\n}\n\nexport function createFocusTrap(\n root: HTMLElement,\n options: FocusTrapOptions = {}\n): FocusTrapHandle {\n let isActive = false\n let disposed = false\n let previouslyFocused: Element | null = null\n\n const focusable = (): HTMLElement[] => [...root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)]\n .filter(element => !element.hasAttribute('disabled') && element.getAttribute('aria-hidden') !== 'true')\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (!isActive || disposed) return\n if (event.key === 'Escape') {\n options.onEscape?.(event)\n return\n }\n if (event.key !== 'Tab') return\n const elements = focusable()\n if (elements.length === 0) {\n event.preventDefault()\n root.focus()\n return\n }\n const first = elements[0]\n const last = elements[elements.length - 1]\n const current = document.activeElement\n if (event.shiftKey && current === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && current === last) {\n event.preventDefault()\n first.focus()\n }\n }\n\n const activate = (): void => {\n if (disposed || isActive) return\n isActive = true\n previouslyFocused = document.activeElement\n root.addEventListener('keydown', onKeyDown)\n const initial = resolveInitialFocus(options.initialFocus) ?? focusable()[0] ?? root\n if (!root.hasAttribute('tabindex') && initial === root) root.setAttribute('tabindex', '-1')\n initial.focus()\n }\n\n const deactivate = (): void => {\n if (!isActive) return\n isActive = false\n root.removeEventListener('keydown', onKeyDown)\n if (options.restoreFocus !== false\n && typeof HTMLElement !== 'undefined'\n && previouslyFocused instanceof HTMLElement) previouslyFocused.focus()\n previouslyFocused = null\n }\n\n const handle: FocusTrapHandle = {\n get active(): boolean { return isActive },\n activate,\n deactivate,\n dispose(): void {\n if (disposed) return\n deactivate()\n disposed = true\n }\n }\n if (getCurrentOwner()) onDispose(() => handle.dispose())\n return handle\n}\n\nexport interface OverlayEntry {\n readonly id: string\n readonly modal?: boolean\n readonly closeOnEscape?: boolean\n readonly onEscape?: () => void\n}\n\nexport interface OverlayManager {\n readonly entries: readonly OverlayEntry[]\n open(entry: OverlayEntry): void\n close(id: string): void\n bringToFront(id: string): void\n subscribe(listener: (entries: readonly OverlayEntry[]) => void): () => void\n}\n\nexport function createOverlayManager(): OverlayManager {\n let entries: OverlayEntry[] = []\n const listeners = new Set<(entries: readonly OverlayEntry[]) => void>()\n const notify = (): void => {\n const snapshot = entries.slice()\n for (const listener of listeners) listener(snapshot)\n }\n\n return {\n get entries(): readonly OverlayEntry[] { return entries },\n open(entry): void {\n entries = [...entries.filter(current => current.id !== entry.id), entry]\n notify()\n },\n close(id): void {\n const next = entries.filter(entry => entry.id !== id)\n if (next.length === entries.length) return\n entries = next\n notify()\n },\n bringToFront(id): void {\n const entry = entries.find(current => current.id === id)\n if (!entry || entries[entries.length - 1] === entry) return\n entries = [...entries.filter(current => current !== entry), entry]\n notify()\n },\n subscribe(listener): () => void {\n listeners.add(listener)\n listener(entries.slice())\n return () => listeners.delete(listener)\n }\n }\n}\n\nfunction resolveInitialFocus(\n target: FocusTrapOptions['initialFocus']\n): HTMLElement | null {\n if (!target) return null\n return typeof target === 'function' ? target() : target\n}\n\nfunction removePortalNode(node: VobsNode, target: Node): void {\n if (isVobsFragment(node)) {\n let current = node.start.nextSibling\n while (current && current !== node.end) {\n const next = current.nextSibling\n target.removeChild(current)\n current = next\n }\n if (node.start.parentNode === target) target.removeChild(node.start)\n if (node.end.parentNode === target) target.removeChild(node.end)\n return\n }\n if (node.parentNode === target) target.removeChild(node)\n}\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'iframe',\n 'object',\n 'embed',\n '[contenteditable]',\n '[tabindex]'\n].join(',')\n","import {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface MenuItem {\n readonly id?: string\n readonly label?: string\n readonly icon?: VobsNode | (() => VobsNode | null | undefined)\n readonly shortcut?: string\n readonly danger?: boolean\n readonly disabled?: boolean\n readonly divider?: boolean\n readonly content?: VuiChildren\n}\n\nexport interface MenuProps extends VuiCommonProps {\n readonly items?: readonly MenuItem[]\n readonly onSelect?: (id: string, event: MouseEvent) => void\n}\n\nexport function Menu(props: MenuProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-menu'])\n bindCommonAttributes(root, props, ['items', 'onSelect'])\n if (!hasProp(props, 'role')) setAttribute(root, 'role', 'menu')\n\n if (hasProp(props, 'items')) {\n insertDynamic(root, null, () => createMenuItems(props))\n }\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport function MenuDivider(props: VuiCommonProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-menu__divider'])\n bindCommonAttributes(root, props)\n setAttribute(root, 'role', 'separator')\n return root\n}\n\nfunction createMenuItems(props: MenuProps): VobsNode {\n const items = readProp<readonly MenuItem[]>(props, 'items', [])\n return createFragment((parent, anchor) => {\n for (const item of items) {\n const node = item.divider === true\n ? createMenuDividerNode(item)\n : createMenuItemNode(item, props)\n insertBefore(parent, node, anchor)\n }\n })\n}\n\nfunction createMenuDividerNode(item: MenuItem): VobsNode {\n const divider = createElement('div')\n setAttribute(divider, 'class', 'vui-menu__divider')\n setAttribute(divider, 'role', 'separator')\n setOptionalAttribute(divider, 'data-menu-item-id', item.id)\n return divider\n}\n\nfunction createMenuItemNode(item: MenuItem, props: MenuProps): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', `vui-menu__item${item.danger === true ? ' vui-menu__item--danger' : ''}`)\n setAttribute(button, 'type', 'button')\n setAttribute(button, 'role', 'menuitem')\n setOptionalAttribute(button, 'data-menu-item-id', item.id)\n if (item.disabled === true) {\n setProperty(button, 'disabled', true)\n setAttribute(button, 'aria-disabled', 'true')\n }\n\n if (item.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-menu__icon')\n mountSlot(icon, item, 'icon')\n insertBefore(button, icon, null)\n }\n\n if (item.label !== undefined) {\n const label = createElement('span')\n setAttribute(label, 'class', 'vui-menu__label')\n insertBefore(label, createText(item.label), null)\n insertBefore(button, label, null)\n } else if (item.content !== undefined) {\n mountSlot(button, item, 'content')\n }\n\n if (item.shortcut !== undefined) {\n const shortcut = createElement('span')\n setAttribute(shortcut, 'class', 'vui-menu__shortcut')\n insertBefore(shortcut, createText(item.shortcut), null)\n insertBefore(button, shortcut, null)\n }\n\n addEventListener(button, 'click', event => {\n if (item.disabled === true || item.id === undefined) return\n const handler = readProp<unknown>(props, 'onSelect', undefined)\n if (typeof handler === 'function') (handler as MenuProps['onSelect'])!(item.id, event as MouseEvent)\n })\n return button\n}\n","import { state } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface NavItem {\n readonly id: string\n readonly label: string\n readonly icon?: VobsNode | (() => VobsNode | null | undefined)\n readonly badge?: VuiChildren\n readonly href?: string\n readonly target?: string\n readonly rel?: string\n readonly active?: boolean\n readonly disabled?: boolean\n}\n\nexport interface NavGroup {\n readonly id?: string\n readonly title?: string\n readonly items: readonly NavItem[]\n}\n\nexport interface NavListProps extends VuiCommonProps {\n readonly groups?: readonly NavGroup[]\n readonly value?: string\n readonly defaultValue?: string\n readonly onChange?: (id: string, event: MouseEvent) => void\n}\n\nexport function NavList(props: NavListProps = {}): VobsNode {\n const root = createElement('nav')\n const internalValue = state<string | undefined>(undefined)\n\n bindClassList(root, props, () => ['vui-navlist'])\n bindCommonAttributes(root, props, ['groups', 'value', 'defaultValue', 'onChange'])\n insertDynamic(root, null, () => createNavGroups(props, internalValue))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createNavGroups(\n props: NavListProps,\n internalValue: { value: string | undefined }\n): VobsNode {\n const groups = readProp<readonly NavGroup[]>(props, 'groups', [])\n const selected = activeId(props, groups, internalValue)\n return createFragment((parent, anchor) => {\n for (const group of groups) {\n const groupRoot = createElement('div')\n setAttribute(groupRoot, 'class', 'vui-navlist__group')\n setOptionalAttribute(groupRoot, 'data-nav-group-id', group.id)\n\n if (group.title !== undefined) {\n const title = createElement('div')\n setAttribute(title, 'class', 'vui-navlist__group-title')\n insertBefore(title, createText(group.title), null)\n insertBefore(groupRoot, title, null)\n }\n\n for (const item of group.items) {\n insertBefore(groupRoot, createNavItem(item, props, selected, internalValue), null)\n }\n insertBefore(parent, groupRoot, anchor)\n }\n })\n}\n\nfunction createNavItem(\n item: NavItem,\n props: NavListProps,\n selected: string | undefined,\n internalValue: { value: string | undefined }\n): VobsNode {\n const active = item.id === selected\n const element = createElement(item.href === undefined ? 'button' : 'a')\n setAttribute(element, 'class', `vui-navlist__item${active ? ' is-active' : ''}`)\n if (item.href !== undefined) setAttribute(element, 'role', 'link')\n setOptionalAttribute(element, 'data-nav-id', item.id)\n if (item.href !== undefined) {\n setAttribute(element, 'href', item.href)\n setOptionalAttribute(element, 'target', item.target)\n setOptionalAttribute(element, 'rel', item.rel)\n } else {\n setAttribute(element, 'type', 'button')\n }\n if (active) setAttribute(element, 'aria-current', 'page')\n if (item.disabled === true) {\n setAttribute(element, 'aria-disabled', 'true')\n setProperty(element, 'tabIndex', -1)\n if (item.href === undefined) setProperty(element, 'disabled', true)\n }\n\n if (item.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-navlist__icon')\n mountSlot(icon, item, 'icon')\n insertBefore(element, icon, null)\n }\n\n const label = createElement('span')\n setAttribute(label, 'class', 'vui-navlist__label')\n insertBefore(label, createText(item.label), null)\n insertBefore(element, label, null)\n\n if (item.badge !== undefined) {\n const badge = createElement('span')\n setAttribute(badge, 'class', 'vui-navlist__badge')\n mountSlot(badge, item, 'badge')\n insertBefore(element, badge, null)\n }\n\n addEventListener(element, 'click', event => {\n if (item.disabled === true) {\n event.preventDefault?.()\n return\n }\n if (readProp<string | undefined>(props, 'value', undefined) === undefined) internalValue.value = item.id\n const handler = readProp<unknown>(props, 'onChange', undefined)\n if (typeof handler === 'function') (handler as NavListProps['onChange'])!(item.id, event as MouseEvent)\n })\n return element\n}\n\nfunction activeId(\n props: NavListProps,\n groups: readonly NavGroup[],\n internalValue: { value: string | undefined }\n): string | undefined {\n const controlled = readProp<string | undefined>(props, 'value', undefined)\n if (controlled !== undefined) return controlled\n if (internalValue.value !== undefined) return internalValue.value\n const defaultValue = readProp<string | undefined>(props, 'defaultValue', undefined)\n if (defaultValue !== undefined) return defaultValue\n for (const group of groups) {\n const active = group.items.find(item => item.active === true)\n if (active) return active.id\n }\n return undefined\n}\n","import {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface PaginationProps extends VuiCommonProps {\n readonly page?: number\n readonly pageCount?: number\n readonly siblingCount?: number\n readonly disabled?: boolean\n readonly previousLabel?: string\n readonly nextLabel?: string\n readonly previousIcon?: VuiChildren\n readonly nextIcon?: VuiChildren\n readonly onChange?: (page: number) => void\n}\n\ntype PaginationItem = number | 'ellipsis-left' | 'ellipsis-right'\n\nexport function Pagination(props: PaginationProps = {}): VobsNode {\n const root = createElement('nav')\n bindClassList(root, props, () => ['vui-pagination'])\n bindCommonAttributes(root, props, [\n 'page',\n 'pageCount',\n 'siblingCount',\n 'disabled',\n 'previousLabel',\n 'nextLabel',\n 'previousIcon',\n 'nextIcon',\n 'onChange'\n ])\n if (!hasProp(props, 'aria-label')) setAttribute(root, 'aria-label', 'Pagination')\n insertDynamic(root, null, () => createPaginationItems(props))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createPaginationItems(props: PaginationProps): VobsNode {\n const pageCount = Math.max(0, Math.floor(readProp(props, 'pageCount', 0)))\n const page = clampPage(readProp(props, 'page', 1), pageCount)\n const siblingCount = Math.max(0, Math.floor(readProp(props, 'siblingCount', 1)))\n const disabled = readProp(props, 'disabled', false)\n const items = pageCount === 0 ? [] : buildPaginationItems(page, pageCount, siblingCount)\n\n return createFragment((parent, anchor) => {\n insertBefore(parent, createPaginationControl(props, 'previous', page <= 1 || disabled), anchor)\n for (const item of items) {\n if (typeof item === 'number') {\n insertBefore(parent, createPageButton(item, item === page, disabled, props), anchor)\n } else {\n insertBefore(parent, createEllipsis(item), anchor)\n }\n }\n insertBefore(parent, createPaginationControl(props, 'next', page >= pageCount || pageCount === 0 || disabled), anchor)\n })\n}\n\nfunction createPaginationControl(\n props: PaginationProps,\n direction: 'previous' | 'next',\n disabled: boolean\n): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', 'vui-pagination__item')\n setAttribute(button, 'type', 'button')\n setProperty(button, 'disabled', disabled)\n setOptionalAttribute(button, 'aria-label', direction === 'previous'\n ? readProp(props, 'previousLabel', 'Previous')\n : readProp(props, 'nextLabel', 'Next'))\n if (disabled) setAttribute(button, 'aria-disabled', 'true')\n\n const icon = direction === 'previous'\n ? readProp<VuiChildren | undefined>(props, 'previousIcon', undefined)\n : readProp<VuiChildren | undefined>(props, 'nextIcon', undefined)\n const fallback = direction === 'previous' ? '<' : '>'\n const node = icon === undefined ? createText(fallback) : resolveSlot(icon)\n if (node) insertBefore(button, node, null)\n\n addEventListener(button, 'click', () => {\n if (disabled) return\n const current = readProp(props, 'page', 1)\n const nextPage = direction === 'previous' ? current - 1 : current + 1\n emitPageChange(props, clampPage(nextPage, readProp(props, 'pageCount', 0)))\n })\n return button\n}\n\nfunction createPageButton(\n page: number,\n active: boolean,\n disabled: boolean,\n props: PaginationProps\n): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', `vui-pagination__item${active ? ' is-active' : ''}`)\n setAttribute(button, 'type', 'button')\n setProperty(button, 'disabled', disabled)\n setAttribute(button, 'aria-label', `Page ${page}`)\n if (active) setAttribute(button, 'aria-current', 'page')\n if (disabled) setAttribute(button, 'aria-disabled', 'true')\n insertBefore(button, createText(String(page)), null)\n addEventListener(button, 'click', () => {\n if (!disabled) emitPageChange(props, page)\n })\n return button\n}\n\nfunction createEllipsis(item: 'ellipsis-left' | 'ellipsis-right'): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', 'vui-pagination__item')\n setAttribute(button, 'type', 'button')\n setProperty(button, 'disabled', true)\n setAttribute(button, 'aria-label', item === 'ellipsis-left' ? 'Previous pages' : 'Next pages')\n setAttribute(button, 'aria-hidden', 'true')\n insertBefore(button, createText('...'), null)\n return button\n}\n\nfunction emitPageChange(props: PaginationProps, page: number): void {\n const handler = readProp<unknown>(props, 'onChange', undefined)\n if (typeof handler === 'function') (handler as PaginationProps['onChange'])!(page)\n}\n\nfunction clampPage(page: number, pageCount: number): number {\n if (pageCount <= 0) return 1\n return Math.min(pageCount, Math.max(1, Math.floor(Number.isFinite(page) ? page : 1)))\n}\n\nfunction buildPaginationItems(page: number, pageCount: number, siblingCount: number): PaginationItem[] {\n const totalVisible = siblingCount * 2 + 5\n if (pageCount <= totalVisible) {\n return Array.from({ length: pageCount }, (_, index) => index + 1)\n }\n\n const left = Math.max(page - siblingCount, 2)\n const right = Math.min(page + siblingCount, pageCount - 1)\n const items: PaginationItem[] = [1]\n\n if (left > 2) items.push('ellipsis-left')\n for (let value = left; value <= right; value++) items.push(value)\n if (right < pageCount - 1) items.push('ellipsis-right')\n items.push(pageCount)\n return items\n}\n","import {\n createElement,\n createText,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n readProp,\n resolveSlot\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport type AvatarSize = 'sm' | 'md' | 'lg'\nexport type AvatarShape = 'circle' | 'square'\n\nexport interface AvatarProps extends VuiCommonProps {\n readonly src?: string\n readonly alt?: string\n readonly size?: AvatarSize\n readonly shape?: AvatarShape\n readonly accent?: boolean\n readonly fallback?: VuiChildren\n}\n\nexport function Avatar(props: AvatarProps = {}): VobsNode {\n const root = createElement('span')\n bindClassList(root, props, () => [\n 'vui-avatar',\n readProp<AvatarSize>(props, 'size', 'md') === 'sm' ? 'vui-avatar--sm' : undefined,\n readProp<AvatarSize>(props, 'size', 'md') === 'lg' ? 'vui-avatar--lg' : undefined,\n readProp<AvatarShape>(props, 'shape', 'circle') === 'square' ? 'vui-avatar--square' : undefined,\n readProp(props, 'accent', false) ? 'vui-avatar--accent' : undefined\n ])\n bindCommonAttributes(root, props, ['src', 'alt', 'size', 'shape', 'accent', 'fallback'])\n bindUserStyle(root, props)\n insertDynamic(root, null, () => createAvatarContent(props))\n return root\n}\n\nfunction createAvatarContent(props: AvatarProps): VobsNode | null {\n const src = readProp<string | undefined>(props, 'src', undefined)\n if (src) {\n const image = createElement('img')\n setAttribute(image, 'class', 'vui-avatar__image')\n setAttribute(image, 'src', src)\n setAttribute(image, 'alt', readProp<string>(props, 'alt', ''))\n return image\n }\n\n if (hasProp(props, 'fallback')) {\n const fallback = resolveSlot(Reflect.get(props, 'fallback'))\n if (fallback) return fallback\n }\n if (hasProp(props, 'children')) {\n const children = resolveSlot(Reflect.get(props, 'children'))\n if (children) return children\n }\n return createText('')\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createText,\n insertBefore,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface PageHeaderProps extends VuiCommonProps {\n readonly title?: string\n readonly subtitle?: string\n readonly actions?: VuiChildren\n}\n\nexport function PageHeader(props: PageHeaderProps = {}): VobsNode {\n const root = createElement('header')\n const main = createElement('div')\n bindClassList(root, props, () => ['vui-pagehead'])\n bindCommonAttributes(root, props, ['title', 'subtitle', 'actions'])\n bindUserStyle(root, props)\n\n setAttribute(main, 'class', 'vui-pagehead__main')\n if (hasProp(props, 'title')) {\n const title = createElement('h1')\n const text = createText('')\n setAttribute(title, 'class', 'vui-pagehead__title')\n bindTextContent(text, () => readProp(props, 'title', ''))\n insertBefore(title, text, null)\n insertBefore(main, title, null)\n }\n if (hasProp(props, 'subtitle')) {\n const subtitle = createElement('p')\n const text = createText('')\n setAttribute(subtitle, 'class', 'vui-pagehead__subtitle')\n bindTextContent(text, () => readProp(props, 'subtitle', ''))\n insertBefore(subtitle, text, null)\n insertBefore(main, subtitle, null)\n }\n if (hasProp(props, 'children')) mountSlot(main, props, 'children')\n insertBefore(root, main, null)\n\n if (hasProp(props, 'actions')) {\n const actions = createElement('div')\n setAttribute(actions, 'class', 'vui-pagehead__actions')\n mountSlot(actions, props, 'actions')\n insertBefore(root, actions, null)\n }\n return root\n}\n\nexport interface PageHeaderActionProps extends VuiCommonProps {\n readonly href?: string\n readonly primary?: boolean\n readonly disabled?: boolean\n readonly onClick?: (event: MouseEvent) => void\n}\n\nexport function PageHeaderAction(props: PageHeaderActionProps = {}): VobsNode {\n const root = createElement(props.href === undefined ? 'button' : 'a')\n bindClassList(root, props, () => [\n 'vui-pagehead__btn',\n readProp(props, 'primary', false) ? 'is-primary' : undefined\n ])\n bindCommonAttributes(root, props, ['href', 'primary', 'disabled', 'onClick'])\n if (props.href === undefined) setAttribute(root, 'type', 'button')\n else setAttribute(root, 'href', props.href)\n effect(() => {\n const disabled = readProp(props, 'disabled', false)\n setOptionalAttribute(root, 'aria-disabled', disabled ? 'true' : undefined)\n if (props.href === undefined) setProperty(root, 'disabled', disabled)\n })\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n\n addEventListener(root, 'click', event => {\n if (readProp(props, 'disabled', false)) {\n event.preventDefault?.()\n return\n }\n const handler = readProp<unknown>(props, 'onClick', undefined)\n if (typeof handler === 'function') (handler as PageHeaderActionProps['onClick'])!(event as MouseEvent)\n })\n return root\n}\n","import {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport type TableAlign = 'start' | 'center' | 'end'\n\nexport interface TableColumn<Row = Record<string, unknown>> {\n readonly id: string\n readonly label: string\n readonly key?: keyof Row\n readonly render?: (row: Row, index: number) => VuiChildren\n readonly align?: TableAlign\n}\n\nexport interface TableProps<Row = Record<string, unknown>> extends VuiCommonProps {\n readonly columns?: readonly TableColumn<Row>[]\n readonly rows?: readonly Row[]\n readonly caption?: string\n readonly empty?: VuiChildren\n readonly rowKey?: (row: Row, index: number) => unknown\n readonly onRowClick?: (row: Row, index: number) => void\n}\n\nexport function Table<Row = Record<string, unknown>>(props?: TableProps<Row>): VobsNode\nexport function Table(props?: TableProps<any>): VobsNode\nexport function Table<Row = Record<string, unknown>>(props: TableProps<Row> = {}): VobsNode {\n const root = createElement('table')\n const head = createElement('thead')\n const body = createElement('tbody')\n\n bindClassList(root, props, () => ['vui-table'])\n bindCommonAttributes(root, props, ['columns', 'rows', 'caption', 'empty', 'rowKey', 'onRowClick'])\n bindUserStyle(root, props)\n\n if (hasProp(props, 'caption')) {\n const caption = createElement('caption')\n const text = createText('')\n bindTextContent(text, () => readProp(props, 'caption', ''))\n insertBefore(caption, text, null)\n insertBefore(root, caption, null)\n }\n insertDynamic(head, null, () => createTableHead(props))\n insertDynamic(body, null, () => createTableBody(props))\n insertBefore(root, head, null)\n insertBefore(root, body, null)\n return root\n}\n\nexport interface TablePanelProps<Row = Record<string, unknown>> extends VuiCommonProps {\n readonly columns?: readonly TableColumn<Row>[]\n readonly rows?: readonly Row[]\n readonly empty?: VuiChildren\n readonly footer?: VuiChildren\n readonly rowKey?: (row: Row, index: number) => unknown\n readonly onRowClick?: (row: Row, index: number) => void\n}\n\nexport function TablePanel<Row = Record<string, unknown>>(props?: TablePanelProps<Row>): VobsNode\nexport function TablePanel(props?: TablePanelProps<any>): VobsNode\nexport function TablePanel<Row = Record<string, unknown>>(props: TablePanelProps<Row> = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-tablepanel'])\n bindCommonAttributes(root, props, ['columns', 'rows', 'empty', 'footer', 'rowKey', 'onRowClick'])\n bindUserStyle(root, props)\n\n const table = Table<Row>({\n get columns() { return readProp<readonly TableColumn<Row>[]>(props, 'columns', []) },\n get rows() { return readProp<readonly Row[]>(props, 'rows', []) },\n get empty() { return readProp<VuiChildren | undefined>(props, 'empty', undefined) },\n get rowKey() { return readProp<TablePanelProps<Row>['rowKey']>(props, 'rowKey', undefined) },\n get onRowClick() { return readProp<TablePanelProps<Row>['onRowClick']>(props, 'onRowClick', undefined) }\n })\n insertBefore(root, table, null)\n\n if (hasProp(props, 'footer')) {\n const footer = createElement('div')\n setAttribute(footer, 'class', 'vui-tablepanel__foot')\n mountSlot(footer, props, 'footer')\n insertBefore(root, footer, null)\n }\n return root\n}\n\nfunction createTableHead<Row>(props: TableProps<Row>): VobsNode {\n const columns = readProp<readonly TableColumn<Row>[]>(props, 'columns', [])\n return createFragment((parent, anchor) => {\n const row = createElement('tr')\n for (const column of columns) {\n const cell = createElement('th')\n setAttribute(cell, 'scope', 'col')\n setAttribute(cell, 'data-column-id', column.id)\n applyAlignment(cell, column.align)\n insertBefore(cell, createText(column.label), null)\n insertBefore(row, cell, null)\n }\n insertBefore(parent, row, anchor)\n })\n}\n\nfunction createTableBody<Row>(props: TableProps<Row>): VobsNode {\n const columns = readProp<readonly TableColumn<Row>[]>(props, 'columns', [])\n const rows = readProp<readonly Row[]>(props, 'rows', [])\n if (rows.length === 0) return createEmptyRow(props, columns.length)\n\n return createFragment((parent, anchor) => {\n for (let index = 0; index < rows.length; index++) {\n insertBefore(parent, createTableRow(rows[index], index, columns, props), anchor)\n }\n })\n}\n\nfunction createTableRow<Row>(\n row: Row,\n index: number,\n columns: readonly TableColumn<Row>[],\n props: TableProps<Row>\n): VobsNode {\n const tableRow = createElement('tr')\n const rowKey = readProp<TableProps<Row>['rowKey']>(props, 'rowKey', undefined)\n if (rowKey) setOptionalAttribute(tableRow, 'data-row-key', rowKey(row, index))\n\n for (const column of columns) {\n const cell = createElement('td')\n setAttribute(cell, 'data-column-id', column.id)\n applyAlignment(cell, column.align)\n insertDynamic(cell, null, () => {\n const value = column.render\n ? column.render(row, index)\n : column.key === undefined\n ? undefined\n : readRowValue(row, column.key)\n return resolveSlot(value)\n })\n insertBefore(tableRow, cell, null)\n }\n\n const onRowClick = readProp<TableProps<Row>['onRowClick']>(props, 'onRowClick', undefined)\n if (onRowClick) {\n setProperty(tableRow, 'tabIndex', 0)\n setAttribute(tableRow, 'data-clickable', 'true')\n addEventListener(tableRow, 'click', () => onRowClick(row, index))\n }\n return tableRow\n}\n\nfunction createEmptyRow<Row>(props: TableProps<Row>, columnCount: number): VobsNode {\n const row = createElement('tr')\n const cell = createElement('td')\n setAttribute(cell, 'colspan', String(Math.max(1, columnCount)))\n if (hasProp(props, 'empty')) {\n insertDynamic(cell, null, () => resolveSlot(Reflect.get(props, 'empty')))\n } else {\n insertBefore(cell, createText('No data'), null)\n }\n insertBefore(row, cell, null)\n return row\n}\n\nfunction applyAlignment(cell: Element, align: TableAlign | undefined): void {\n if (align === 'end') {\n setAttribute(cell, 'class', 'num')\n setAttribute(cell, 'data-align', 'end')\n } else if (align === 'center') {\n setAttribute(cell, 'data-align', 'center')\n }\n}\n\nfunction readRowValue<Row>(row: Row, key: keyof Row): unknown {\n if (row === null || row === undefined) return undefined\n return Reflect.get(row as object, key)\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n createElement,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport type StatDeltaDirection = 'up' | 'down'\n\nexport interface StatCardProps extends VuiCommonProps {\n readonly label?: string\n readonly value?: VuiChildren\n readonly delta?: VuiChildren\n readonly deltaDirection?: StatDeltaDirection\n readonly deltaIcon?: VuiChildren\n readonly deltaCaption?: VuiChildren\n}\n\nexport function StatCard(props: StatCardProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-statcard'])\n bindCommonAttributes(root, props, [\n 'label',\n 'value',\n 'delta',\n 'deltaDirection',\n 'deltaIcon',\n 'deltaCaption'\n ])\n bindUserStyle(root, props)\n\n if (hasProp(props, 'label')) {\n const label = createElement('span')\n const text = createText('')\n setAttribute(label, 'class', 'vui-statcard__label')\n bindTextContent(text, () => readProp(props, 'label', ''))\n insertBefore(label, text, null)\n insertBefore(root, label, null)\n }\n\n if (hasProp(props, 'value')) {\n const value = createElement('span')\n setAttribute(value, 'class', 'vui-statcard__value')\n insertDynamic(value, null, () => resolveSlot(Reflect.get(props, 'value')))\n insertBefore(root, value, null)\n }\n\n if (hasProp(props, 'delta') || hasProp(props, 'deltaIcon') || hasProp(props, 'deltaCaption')) {\n const delta = createElement('span')\n effect(() => {\n const direction = readProp<StatDeltaDirection | undefined>(props, 'deltaDirection', undefined)\n setAttribute(delta, 'class', `vui-statcard__delta${direction ? ` is-${direction}` : ''}`)\n })\n if (hasProp(props, 'deltaIcon')) mountSlot(delta, props, 'deltaIcon')\n if (hasProp(props, 'delta')) mountSlot(delta, props, 'delta')\n if (hasProp(props, 'deltaCaption')) {\n const caption = createElement('span')\n setAttribute(caption, 'class', 'vui-statcard__caption')\n mountSlot(caption, props, 'deltaCaption')\n insertBefore(delta, caption, null)\n }\n insertBefore(root, delta, null)\n }\n\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport interface StatCardGridProps extends VuiCommonProps {}\n\nexport function StatCardGrid(props: StatCardGridProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-statcard__grid'])\n bindCommonAttributes(root, props)\n bindUserStyle(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n","import {\n createElement,\n createFragment,\n insertBefore,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface KbdProps extends VuiCommonProps {}\n\nexport function Kbd(props: KbdProps = {}): VobsNode {\n const root = createElement('kbd')\n bindClassList(root, props, () => ['vui-kbd'])\n bindCommonAttributes(root, props)\n bindUserStyle(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport interface KbdComboProps extends VuiCommonProps {\n readonly keys?: readonly VuiChildren[]\n readonly separator?: VuiChildren\n}\n\nexport function KbdCombo(props: KbdComboProps = {}): VobsNode {\n const root = createElement('span')\n bindClassList(root, props, () => ['vui-kbd__combo'])\n bindCommonAttributes(root, props, ['keys', 'separator'])\n bindUserStyle(root, props)\n if (hasProp(props, 'keys')) insertDynamic(root, null, () => createComboKeys(props))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport interface KbdRowProps extends VuiCommonProps {}\n\nexport function KbdRow(props: KbdRowProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-kbd__row'])\n bindCommonAttributes(root, props)\n bindUserStyle(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createComboKeys(props: KbdComboProps): VobsNode {\n const keys = readProp<readonly VuiChildren[]>(props, 'keys', [])\n const separator = readProp<VuiChildren>(props, 'separator', '+')\n return createFragment((parent, anchor) => {\n for (let index = 0; index < keys.length; index++) {\n if (index > 0) {\n const plus = createElement('span')\n setAttribute(plus, 'class', 'vui-kbd__plus')\n const separatorNode = resolveSlot(separator)\n if (separatorNode) insertBefore(plus, separatorNode, null)\n insertBefore(parent, plus, anchor)\n }\n insertBefore(parent, Kbd({ children: keys[index] }), anchor)\n }\n })\n}\n","import { state } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface ActivityRailItem {\n readonly id?: string\n readonly label?: string\n readonly icon?: VuiChildren\n readonly divider?: boolean\n readonly spacer?: boolean\n readonly disabled?: boolean\n}\n\nexport interface ActivityRailProps extends VuiCommonProps {\n readonly items?: readonly ActivityRailItem[]\n readonly value?: string\n readonly defaultValue?: string\n readonly onChange?: (id: string, event: MouseEvent) => void\n}\n\nexport function ActivityRail(props: ActivityRailProps = {}): VobsNode {\n const root = createElement('nav')\n const internalValue = state<string | undefined>(undefined)\n bindClassList(root, props, () => ['vui-activityrail'])\n bindCommonAttributes(root, props, ['items', 'value', 'defaultValue', 'onChange'])\n bindUserStyle(root, props)\n if (!hasProp(props, 'aria-label')) setAttribute(root, 'aria-label', 'Activity')\n if (hasProp(props, 'items')) insertDynamic(root, null, () => createActivityItems(props, internalValue))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createActivityItems(\n props: ActivityRailProps,\n internalValue: { value: string | undefined }\n): VobsNode {\n const items = readProp<readonly ActivityRailItem[]>(props, 'items', [])\n const selected = activeId(props, items, internalValue)\n return createFragment((parent, anchor) => {\n for (const item of items) {\n if (item.divider === true) {\n const divider = createElement('div')\n setAttribute(divider, 'class', 'vui-activityrail__divider')\n setAttribute(divider, 'role', 'separator')\n insertBefore(parent, divider, anchor)\n continue\n }\n if (item.spacer === true) {\n const spacer = createElement('span')\n setAttribute(spacer, 'class', 'vui-activityrail__spacer')\n insertBefore(parent, spacer, anchor)\n continue\n }\n insertBefore(parent, createActivityButton(item, props, selected, internalValue), anchor)\n }\n })\n}\n\nfunction createActivityButton(\n item: ActivityRailItem,\n props: ActivityRailProps,\n selected: string | undefined,\n internalValue: { value: string | undefined }\n): VobsNode {\n const button = createElement('button')\n const active = item.id !== undefined && item.id === selected\n setAttribute(button, 'class', `vui-activityrail__btn${active ? ' is-active' : ''}`)\n setAttribute(button, 'type', 'button')\n setOptionalAttribute(button, 'aria-label', item.label)\n setOptionalAttribute(button, 'title', item.label)\n setAttribute(button, 'aria-pressed', active ? 'true' : 'false')\n if (item.disabled === true) {\n setProperty(button, 'disabled', true)\n setAttribute(button, 'aria-disabled', 'true')\n }\n\n if (item.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-activityrail__icon')\n mountSlot(icon, item, 'icon')\n insertBefore(button, icon, null)\n } else if (item.label !== undefined) {\n insertBefore(button, createText(item.label), null)\n }\n\n addEventListener(button, 'click', event => {\n if (item.disabled === true || item.id === undefined) return\n if (readProp<string | undefined>(props, 'value', undefined) === undefined) internalValue.value = item.id\n const handler = readProp<unknown>(props, 'onChange', undefined)\n if (typeof handler === 'function') (handler as ActivityRailProps['onChange'])!(item.id, event as MouseEvent)\n })\n return button\n}\n\nfunction activeId(\n props: ActivityRailProps,\n items: readonly ActivityRailItem[],\n internalValue: { value: string | undefined }\n): string | undefined {\n const controlled = readProp<string | undefined>(props, 'value', undefined)\n if (controlled !== undefined) return controlled\n if (internalValue.value !== undefined) return internalValue.value\n const defaultValue = readProp<string | undefined>(props, 'defaultValue', undefined)\n if (defaultValue !== undefined) return defaultValue\n return items.find(item => item.id !== undefined)?.id\n}\n","import { state } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport type FileTreeItemKind = 'file' | 'folder'\n\nexport interface FileTreeItem {\n readonly id: string\n readonly label: string\n readonly kind?: FileTreeItemKind\n readonly icon?: VuiChildren\n readonly chevron?: VuiChildren\n readonly children?: readonly FileTreeItem[]\n readonly expanded?: boolean\n readonly active?: boolean\n readonly disabled?: boolean\n}\n\nexport interface FileTreeProps extends VuiCommonProps {\n readonly items?: readonly FileTreeItem[]\n readonly value?: string\n readonly defaultValue?: string\n readonly expanded?: readonly string[]\n readonly defaultExpanded?: readonly string[]\n readonly onSelect?: (id: string, event: MouseEvent) => void\n readonly onToggle?: (id: string, expanded: boolean, event: MouseEvent) => void\n}\n\ninterface VisibleFileTreeItem {\n readonly item: FileTreeItem\n readonly depth: number\n readonly expanded: boolean\n}\n\nexport function FileTree(props: FileTreeProps = {}): VobsNode {\n const items = readProp<readonly FileTreeItem[]>(props, 'items', [])\n const internalExpanded = state<readonly string[]>(initialExpanded(props, items))\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-filetree'])\n bindCommonAttributes(root, props, [\n 'items',\n 'value',\n 'defaultValue',\n 'expanded',\n 'defaultExpanded',\n 'onSelect',\n 'onToggle'\n ])\n bindUserStyle(root, props)\n if (!hasProp(props, 'role')) setAttribute(root, 'role', 'tree')\n if (!hasProp(props, 'aria-label')) setAttribute(root, 'aria-label', 'Files')\n insertDynamic(root, null, () => createTreeRows(props, internalExpanded))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createTreeRows(\n props: FileTreeProps,\n internalExpanded: { value: readonly string[] }\n): VobsNode {\n const items = readProp<readonly FileTreeItem[]>(props, 'items', [])\n const expanded = new Set(readProp<readonly string[] | undefined>(props, 'expanded', undefined) ?? internalExpanded.value)\n const visible = flattenVisible(items, expanded)\n const selected = activeId(props, items)\n return createFragment((parent, anchor) => {\n for (const entry of visible) {\n insertBefore(parent, createTreeRow(entry, props, internalExpanded, selected, expanded), anchor)\n }\n })\n}\n\nfunction createTreeRow(\n entry: VisibleFileTreeItem,\n props: FileTreeProps,\n internalExpanded: { value: readonly string[] },\n selected: string | undefined,\n expanded: ReadonlySet<string>\n): VobsNode {\n const { item } = entry\n const isFolder = item.kind === 'folder'\n const hasChildren = isFolder && Boolean(item.children?.length)\n const active = item.id === selected\n const row = createElement('div')\n setAttribute(row, 'class', `vui-filetree__row${active ? ' is-active' : ''}`)\n setAttribute(row, 'role', 'treeitem')\n setAttribute(row, 'data-depth', String(entry.depth))\n setAttribute(row, 'data-file-id', item.id)\n setProperty(row, 'tabIndex', item.disabled === true ? -1 : 0)\n if (active) setAttribute(row, 'aria-selected', 'true')\n if (isFolder) setAttribute(row, 'aria-expanded', entry.expanded ? 'true' : 'false')\n if (item.disabled === true) setAttribute(row, 'aria-disabled', 'true')\n\n const chevron = createElement('span')\n setAttribute(chevron, 'class', `vui-filetree__chevron${hasChildren ? '' : ' vui-filetree__chevron--leaf'}`)\n if (hasChildren) {\n if (item.chevron !== undefined) mountSlot(chevron, item, 'chevron')\n else insertBefore(chevron, createText(entry.expanded ? 'v' : '>'), null)\n }\n insertBefore(row, chevron, null)\n\n if (item.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, `class`, `vui-filetree__icon ${fileIconClass(item)}`.trim())\n mountSlot(icon, item, 'icon')\n insertBefore(row, icon, null)\n }\n\n const label = createElement('span')\n setAttribute(label, 'class', 'vui-filetree__label')\n setOptionalAttribute(label, 'title', item.label)\n insertBefore(label, createText(item.label), null)\n insertBefore(row, label, null)\n\n addEventListener(row, 'click', event => {\n if (item.disabled === true) return\n if (isFolder && hasChildren) {\n const nextExpanded = !expanded.has(item.id)\n if (readProp<readonly string[] | undefined>(props, 'expanded', undefined) === undefined) {\n const next = new Set(internalExpanded.value)\n if (nextExpanded) next.add(item.id)\n else next.delete(item.id)\n internalExpanded.value = [...next]\n }\n const onToggle = readProp<unknown>(props, 'onToggle', undefined)\n if (typeof onToggle === 'function') {\n (onToggle as FileTreeProps['onToggle'])!(item.id, nextExpanded, event as MouseEvent)\n }\n }\n const onSelect = readProp<unknown>(props, 'onSelect', undefined)\n if (typeof onSelect === 'function') (onSelect as FileTreeProps['onSelect'])!(item.id, event as MouseEvent)\n })\n addEventListener(row, 'keydown', event => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key !== 'Enter' && keyboardEvent.key !== ' ') return\n keyboardEvent.preventDefault?.()\n row.dispatchEvent?.(new MouseEvent('click', { bubbles: true }))\n })\n return row\n}\n\nfunction flattenVisible(\n items: readonly FileTreeItem[],\n expanded: ReadonlySet<string>,\n depth = 0\n): VisibleFileTreeItem[] {\n const visible: VisibleFileTreeItem[] = []\n for (const item of items) {\n const folder = item.kind === 'folder'\n const open = folder && expanded.has(item.id)\n visible.push({ item, depth, expanded: open })\n if (open && item.children) visible.push(...flattenVisible(item.children, expanded, depth + 1))\n }\n return visible\n}\n\nfunction initialExpanded(props: FileTreeProps, items: readonly FileTreeItem[]): readonly string[] {\n const ids = new Set(readProp<readonly string[]>(props, 'defaultExpanded', []))\n collectExpanded(items, ids)\n return [...ids]\n}\n\nfunction collectExpanded(items: readonly FileTreeItem[], ids: Set<string>): void {\n for (const item of items) {\n if (item.expanded === true) ids.add(item.id)\n if (item.children) collectExpanded(item.children, ids)\n }\n}\n\nfunction activeId(props: FileTreeProps, items: readonly FileTreeItem[]): string | undefined {\n const controlled = readProp<string | undefined>(props, 'value', undefined)\n if (controlled !== undefined) return controlled\n const defaultValue = readProp<string | undefined>(props, 'defaultValue', undefined)\n if (defaultValue !== undefined) return defaultValue\n return findActive(items)\n}\n\nfunction findActive(items: readonly FileTreeItem[]): string | undefined {\n for (const item of items) {\n if (item.active === true) return item.id\n if (item.children) {\n const nested = findActive(item.children)\n if (nested !== undefined) return nested\n }\n }\n return undefined\n}\n\nfunction fileIconClass(item: FileTreeItem): string {\n if (item.kind === 'folder') return 'vui-filetree__icon--folder'\n const extension = item.label.slice(item.label.lastIndexOf('.') + 1).toLowerCase()\n if (extension === 'ts' || extension === 'tsx') return 'vui-filetree__icon--ts'\n if (extension === 'css' || extension === 'scss') return 'vui-filetree__icon--css'\n if (extension === 'json') return 'vui-filetree__icon--json'\n return ''\n}\n","import { state } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface EditorTabItem {\n readonly id: string\n readonly label: string\n readonly icon?: VuiChildren\n readonly closeIcon?: VuiChildren\n readonly closeable?: boolean\n readonly disabled?: boolean\n}\n\nexport interface EditorTabsProps extends VuiCommonProps {\n readonly tabs?: readonly EditorTabItem[]\n readonly value?: string\n readonly defaultValue?: string\n readonly closeIcon?: VuiChildren\n readonly actions?: VuiChildren\n readonly onChange?: (id: string, event: MouseEvent | KeyboardEvent) => void\n readonly onClose?: (id: string, event: MouseEvent) => void\n}\n\nexport function EditorTabs(props: EditorTabsProps = {}): VobsNode {\n const root = createElement('div')\n const internalValue = state<string | undefined>(undefined)\n bindClassList(root, props, () => ['vui-editortabs'])\n bindCommonAttributes(root, props, [\n 'tabs',\n 'value',\n 'defaultValue',\n 'closeIcon',\n 'actions',\n 'onChange',\n 'onClose'\n ])\n bindUserStyle(root, props)\n insertDynamic(root, null, () => createEditorTabs(props, internalValue))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createEditorTabs(\n props: EditorTabsProps,\n internalValue: { value: string | undefined }\n): VobsNode {\n const tabs = readProp<readonly EditorTabItem[]>(props, 'tabs', [])\n const selected = activeId(props, tabs, internalValue)\n return createFragment((parent, anchor) => {\n for (const tab of tabs) {\n insertBefore(parent, createEditorTab(tab, tabs, selected, props, internalValue), anchor)\n }\n\n const spacer = createElement('span')\n setAttribute(spacer, 'class', 'vui-editortabs__spacer')\n insertBefore(parent, spacer, anchor)\n\n if (hasProp(props, 'actions')) {\n const actions = createElement('span')\n setAttribute(actions, 'class', 'vui-editortabs__actions')\n mountSlot(actions, props, 'actions')\n insertBefore(parent, actions, anchor)\n }\n })\n}\n\nfunction createEditorTab(\n tab: EditorTabItem,\n tabs: readonly EditorTabItem[],\n selected: string | undefined,\n props: EditorTabsProps,\n internalValue: { value: string | undefined }\n): VobsNode {\n const active = tab.id === selected\n const root = createElement('span')\n setAttribute(root, 'class', `vui-editortab${active ? ' is-active' : ''}`)\n setAttribute(root, 'role', 'tab')\n setAttribute(root, 'aria-selected', active ? 'true' : 'false')\n setAttribute(root, 'tabindex', active ? '0' : '-1')\n setOptionalAttribute(root, 'data-editor-tab-id', tab.id)\n if (tab.disabled === true) setAttribute(root, 'aria-disabled', 'true')\n\n if (tab.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'ic')\n mountSlot(icon, tab, 'icon')\n insertBefore(root, icon, null)\n }\n const label = createElement('span')\n setAttribute(label, 'class', 'vui-editortab__label')\n insertBefore(label, createText(tab.label), null)\n insertBefore(root, label, null)\n\n if (tab.closeable === true) {\n const close = createElement('button')\n setAttribute(close, 'class', 'close')\n setAttribute(close, 'type', 'button')\n setAttribute(close, 'aria-label', `Close ${tab.label}`)\n const closeIcon = tab.closeIcon ?? readProp<VuiChildren | undefined>(props, 'closeIcon', undefined)\n const icon = closeIcon === undefined ? createText('x') : resolveSlot(closeIcon)\n if (icon) insertBefore(close, icon, null)\n addEventListener(close, 'click', event => {\n event.stopPropagation?.()\n const handler = readProp<unknown>(props, 'onClose', undefined)\n if (typeof handler === 'function') (handler as EditorTabsProps['onClose'])!(tab.id, event as MouseEvent)\n })\n insertBefore(root, close, null)\n }\n\n addEventListener(root, 'click', event => {\n if (tab.disabled === true) return\n selectTab(tab.id, props, internalValue, event as MouseEvent)\n })\n addEventListener(root, 'keydown', event => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'Enter' || keyboardEvent.key === ' ') {\n keyboardEvent.preventDefault?.()\n if (tab.disabled !== true) selectTab(tab.id, props, internalValue, keyboardEvent)\n return\n }\n if (keyboardEvent.key !== 'ArrowLeft' && keyboardEvent.key !== 'ArrowRight') return\n keyboardEvent.preventDefault?.()\n const direction = keyboardEvent.key === 'ArrowLeft' ? -1 : 1\n const next = adjacentTab(tabs, tab.id, direction)\n if (next) selectTab(next.id, props, internalValue, keyboardEvent)\n })\n return root\n}\n\nfunction selectTab(\n id: string,\n props: EditorTabsProps,\n internalValue: { value: string | undefined },\n event: MouseEvent | KeyboardEvent\n): void {\n if (readProp<string | undefined>(props, 'value', undefined) === undefined) internalValue.value = id\n const handler = readProp<unknown>(props, 'onChange', undefined)\n if (typeof handler === 'function') (handler as EditorTabsProps['onChange'])!(id, event)\n}\n\nfunction adjacentTab(\n tabs: readonly EditorTabItem[],\n id: string,\n direction: -1 | 1\n): EditorTabItem | undefined {\n const start = tabs.findIndex(tab => tab.id === id)\n if (start < 0) return undefined\n for (let index = start + direction; index >= 0 && index < tabs.length; index += direction) {\n if (tabs[index].disabled !== true) return tabs[index]\n }\n return undefined\n}\n\nfunction activeId(\n props: EditorTabsProps,\n tabs: readonly EditorTabItem[],\n internalValue: { value: string | undefined }\n): string | undefined {\n const controlled = readProp<string | undefined>(props, 'value', undefined)\n if (controlled !== undefined) return controlled\n if (internalValue.value !== undefined) return internalValue.value\n const defaultValue = readProp<string | undefined>(props, 'defaultValue', undefined)\n if (defaultValue !== undefined) return defaultValue\n return tabs.find(tab => tab.disabled !== true)?.id\n}\n","import {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface WorkbenchTitlebarProps extends VuiCommonProps {\n readonly mode?: string\n readonly modeIcon?: VuiChildren\n readonly project?: string\n readonly projectIcon?: VuiChildren\n readonly projectChevron?: VuiChildren\n readonly actions?: VuiChildren\n readonly windowControls?: boolean\n readonly onWindowClose?: (event: MouseEvent) => void\n readonly onWindowMinimize?: (event: MouseEvent) => void\n readonly onWindowMaximize?: (event: MouseEvent) => void\n readonly onProjectClick?: (event: MouseEvent) => void\n}\n\nexport function WorkbenchTitlebar(props: WorkbenchTitlebarProps = {}): VobsNode {\n const root = createElement('header')\n const left = createElement('div')\n const right = createElement('div')\n bindClassList(root, props, () => ['vui-wbtitlebar'])\n bindCommonAttributes(root, props, [\n 'mode',\n 'modeIcon',\n 'project',\n 'projectIcon',\n 'projectChevron',\n 'actions',\n 'windowControls',\n 'onWindowClose',\n 'onWindowMinimize',\n 'onWindowMaximize',\n 'onProjectClick'\n ])\n bindUserStyle(root, props)\n setAttribute(left, 'class', 'vui-wbtitlebar__left')\n setAttribute(right, 'class', 'vui-wbtitlebar__right')\n insertDynamic(left, null, () => createTitlebarLeft(props))\n if (hasProp(props, 'actions')) mountSlot(right, props, 'actions')\n if (hasProp(props, 'children')) mountSlot(right, props, 'children')\n insertBefore(root, left, null)\n insertBefore(root, right, null)\n return root\n}\n\nfunction createTitlebarLeft(props: WorkbenchTitlebarProps): VobsNode {\n return createFragment((parent, anchor) => {\n if (readProp(props, 'windowControls', true)) {\n const lights = createElement('div')\n setAttribute(lights, 'class', 'vui-wbtitlebar__lights')\n insertBefore(lights, createWindowLight('close', props, 'onWindowClose'), null)\n insertBefore(lights, createWindowLight('min', props, 'onWindowMinimize'), null)\n insertBefore(lights, createWindowLight('max', props, 'onWindowMaximize'), null)\n insertBefore(parent, lights, anchor)\n }\n\n if (hasProp(props, 'mode')) {\n const mode = createElement('span')\n setAttribute(mode, 'class', 'vui-wbtitlebar__mode-chip')\n if (hasProp(props, 'modeIcon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-wbtitlebar__mode-icon')\n mountSlot(icon, props, 'modeIcon')\n insertBefore(mode, icon, null)\n }\n const text = createText('')\n bindTextContent(text, () => readProp(props, 'mode', ''))\n insertBefore(mode, text, null)\n insertBefore(parent, mode, anchor)\n }\n\n if (hasProp(props, 'project')) insertBefore(parent, createProjectSelector(props), anchor)\n })\n}\n\nfunction createWindowLight(\n kind: 'close' | 'min' | 'max',\n props: WorkbenchTitlebarProps,\n handlerName: 'onWindowClose' | 'onWindowMinimize' | 'onWindowMaximize'\n): VobsNode {\n const light = createElement('button')\n setAttribute(light, 'class', `vui-wbtitlebar__light vui-wbtitlebar__light--${kind}`)\n setAttribute(light, 'type', 'button')\n setAttribute(light, 'aria-label', kind === 'close' ? 'Close window' : kind === 'min' ? 'Minimize window' : 'Maximize window')\n addEventListener(light, 'click', event => {\n const handler = readProp<unknown>(props, handlerName, undefined)\n if (typeof handler === 'function') (handler as WorkbenchTitlebarProps[typeof handlerName])!(event as MouseEvent)\n })\n return light\n}\n\nfunction createProjectSelector(props: WorkbenchTitlebarProps): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', 'vui-wbtitlebar__project-selector')\n setAttribute(button, 'type', 'button')\n setOptionalAttribute(button, 'aria-label', readProp(props, 'project', 'Project'))\n if (hasProp(props, 'projectIcon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-wbtitlebar__project-icon')\n mountSlot(icon, props, 'projectIcon')\n insertBefore(button, icon, null)\n }\n const project = createText('')\n bindTextContent(project, () => readProp(props, 'project', ''))\n insertBefore(button, project, null)\n if (hasProp(props, 'projectChevron')) {\n const chevron = createElement('span')\n setAttribute(chevron, 'class', 'vui-wbtitlebar__project-chevron')\n mountSlot(chevron, props, 'projectChevron')\n insertBefore(button, chevron, null)\n }\n addEventListener(button, 'click', event => {\n const handler = readProp<unknown>(props, 'onProjectClick', undefined)\n if (typeof handler === 'function') (handler as WorkbenchTitlebarProps['onProjectClick'])!(event as MouseEvent)\n })\n return button\n}\n","import {\n addEventListener,\n createElement,\n createFragment,\n insertBefore,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport type StatusBarDot = 'success' | 'warning' | 'error'\n\nexport interface StatusBarItem {\n readonly id?: string\n readonly icon?: VuiChildren\n readonly dot?: StatusBarDot\n readonly label?: VuiChildren\n readonly disabled?: boolean\n}\n\nexport interface StatusBarProps extends VuiCommonProps {\n readonly left?: readonly StatusBarItem[]\n readonly right?: readonly StatusBarItem[]\n readonly onItemClick?: (id: string, event: MouseEvent) => void\n}\n\nexport function StatusBar(props: StatusBarProps = {}): VobsNode {\n const root = createElement('footer')\n bindClassList(root, props, () => ['vui-statusbar'])\n bindCommonAttributes(root, props, ['left', 'right', 'onItemClick'])\n bindUserStyle(root, props)\n setAttribute(root, 'role', 'status')\n\n if (hasProp(props, 'left')) insertDynamic(root, null, () => createStatusGroup(props, 'left'))\n if (hasProp(props, 'right') || hasProp(props, 'children')) {\n const group = createElement('div')\n setAttribute(group, 'class', 'vui-statusbar__group')\n if (hasProp(props, 'right')) insertDynamic(group, null, () => createStatusItems(props, 'right'))\n if (hasProp(props, 'children')) mountSlot(group, props, 'children')\n insertBefore(root, group, null)\n }\n return root\n}\n\nfunction createStatusGroup(props: StatusBarProps, side: 'left' | 'right'): VobsNode {\n const group = createElement('div')\n setAttribute(group, 'class', 'vui-statusbar__group')\n insertDynamic(group, null, () => createStatusItems(props, side))\n return group\n}\n\nfunction createStatusItems(props: StatusBarProps, side: 'left' | 'right'): VobsNode {\n const items = side === 'left'\n ? readProp<readonly StatusBarItem[]>(props, 'left', [])\n : readProp<readonly StatusBarItem[]>(props, 'right', [])\n return createFragment((parent, anchor) => {\n for (const item of items) insertBefore(parent, createStatusItem(item, props), anchor)\n })\n}\n\nfunction createStatusItem(item: StatusBarItem, props: StatusBarProps): VobsNode {\n const root = createElement('span')\n setAttribute(root, 'class', 'vui-statusbar__item')\n if (item.id !== undefined && readProp<unknown>(props, 'onItemClick', undefined)) {\n setAttribute(root, 'role', 'button')\n setAttribute(root, 'tabindex', item.disabled === true ? '-1' : '0')\n }\n if (item.disabled === true) setAttribute(root, 'aria-disabled', 'true')\n\n if (item.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-statusbar__icon')\n mountSlot(icon, item, 'icon')\n insertBefore(root, icon, null)\n }\n if (item.dot !== undefined) {\n const dot = createElement('span')\n setAttribute(dot, 'class', `vui-statusbar__dot vui-statusbar__dot--${item.dot}`)\n setAttribute(dot, 'aria-hidden', 'true')\n insertBefore(root, dot, null)\n }\n if (item.label !== undefined) mountSlot(root, item, 'label')\n\n const activate = (event: Event): void => {\n if (item.disabled === true || item.id === undefined) return\n const handler = readProp<unknown>(props, 'onItemClick', undefined)\n if (typeof handler === 'function') (handler as StatusBarProps['onItemClick'])!(item.id, event as MouseEvent)\n }\n if (item.id !== undefined) {\n addEventListener(root, 'click', activate)\n addEventListener(root, 'keydown', event => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key !== 'Enter' && keyboardEvent.key !== ' ') return\n keyboardEvent.preventDefault?.()\n activate(keyboardEvent)\n })\n }\n return root\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createText,\n insertBefore,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindPropertyValue,\n bindUserStyle,\n hasProp,\n listen,\n mountSlot,\n readProp,\n setOptionalAttribute,\n setOptionalProperty\n} from './utils'\nimport type { VuiChildren, VuiCommonProps, VuiEventHandler } from './types'\n\nexport interface ChatComposerProps extends VuiCommonProps {\n readonly value?: string\n readonly placeholder?: string\n readonly disabled?: boolean\n readonly model?: string\n readonly modelIcon?: VuiChildren\n readonly modelChevron?: VuiChildren\n readonly tools?: VuiChildren\n readonly actions?: VuiChildren\n readonly sendIcon?: VuiChildren\n readonly sendLabel?: string\n readonly onInput?: VuiEventHandler<InputEvent>\n readonly onSubmit?: (value: string, event: KeyboardEvent) => void\n readonly onSend?: (value: string, event: MouseEvent) => void\n readonly onModelClick?: (event: MouseEvent) => void\n}\n\nexport function ChatComposer(props: ChatComposerProps = {}): VobsNode {\n const root = createElement('div')\n const input = createElement('textarea')\n const toolbar = createElement('div')\n const tools = createElement('div')\n const actions = createElement('div')\n\n bindClassList(root, props, () => ['vui-composer'])\n bindUserStyle(root, props)\n bindCommonAttributes(input, props, [\n 'value',\n 'placeholder',\n 'disabled',\n 'model',\n 'modelIcon',\n 'modelChevron',\n 'tools',\n 'actions',\n 'sendIcon',\n 'sendLabel',\n 'onInput',\n 'onSubmit',\n 'onSend',\n 'onModelClick'\n ])\n setAttribute(input, 'class', 'vui-composer__input')\n setAttribute(toolbar, 'class', 'vui-composer__toolbar')\n setAttribute(tools, 'class', 'vui-composer__tools')\n setAttribute(actions, 'class', 'vui-composer__actions')\n\n effect(() => {\n setOptionalAttribute(input, 'placeholder', readProp<string | undefined>(props, 'placeholder', undefined))\n setOptionalProperty(input, 'disabled', readProp(props, 'disabled', false))\n setOptionalAttribute(input, 'aria-disabled', readProp(props, 'disabled', false) ? 'true' : undefined)\n })\n if (hasProp(props, 'value')) {\n bindPropertyValue(input, 'value', () => readProp(props, 'value', '') ?? '')\n }\n listen(input, 'input', props, 'onInput', () => readProp(props, 'disabled', false))\n addEventListener(input, 'keydown', event => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key !== 'Enter' || (!keyboardEvent.metaKey && !keyboardEvent.ctrlKey)) return\n keyboardEvent.preventDefault?.()\n const handler = readProp<unknown>(props, 'onSubmit', undefined)\n if (typeof handler === 'function') (handler as ChatComposerProps['onSubmit'])!(currentValue(input, props), keyboardEvent)\n })\n\n if (hasProp(props, 'tools')) mountSlot(tools, props, 'tools')\n else if (hasProp(props, 'children')) mountSlot(tools, props, 'children')\n if (hasProp(props, 'model')) insertBefore(tools, createModelSelector(props), null)\n\n if (hasProp(props, 'actions')) mountSlot(actions, props, 'actions')\n else insertBefore(actions, createSendButton(input, props), null)\n\n insertBefore(root, input, null)\n insertBefore(toolbar, tools, null)\n insertBefore(toolbar, actions, null)\n insertBefore(root, toolbar, null)\n return root\n}\n\nfunction createModelSelector(props: ChatComposerProps): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', 'vui-composer__model')\n setAttribute(button, 'type', 'button')\n if (hasProp(props, 'modelIcon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-composer__model-icon')\n mountSlot(icon, props, 'modelIcon')\n insertBefore(button, icon, null)\n }\n const text = createText('')\n bindTextContent(text, () => readProp(props, 'model', ''))\n insertBefore(button, text, null)\n if (hasProp(props, 'modelChevron')) {\n const chevron = createElement('span')\n setAttribute(chevron, 'class', 'vui-composer__model-chevron')\n mountSlot(chevron, props, 'modelChevron')\n insertBefore(button, chevron, null)\n }\n addEventListener(button, 'click', event => {\n const handler = readProp<unknown>(props, 'onModelClick', undefined)\n if (typeof handler === 'function') (handler as ChatComposerProps['onModelClick'])!(event as MouseEvent)\n })\n return button\n}\n\nfunction createSendButton(input: Element, props: ChatComposerProps): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', 'vui-composer__send')\n setAttribute(button, 'type', 'button')\n const label = readProp(props, 'sendLabel', 'Send')\n setOptionalAttribute(button, 'aria-label', label)\n if (hasProp(props, 'sendIcon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-composer__send-icon')\n mountSlot(icon, props, 'sendIcon')\n insertBefore(button, icon, null)\n } else {\n insertBefore(button, createText(label), null)\n }\n effect(() => setProperty(button, 'disabled', readProp(props, 'disabled', false)))\n addEventListener(button, 'click', event => {\n if (readProp(props, 'disabled', false)) return\n const handler = readProp<unknown>(props, 'onSend', undefined)\n if (typeof handler === 'function') (handler as ChatComposerProps['onSend'])!(currentValue(input, props), event as MouseEvent)\n })\n return button\n}\n\nfunction currentValue(input: Element, props: ChatComposerProps): string {\n const value = Reflect.get(input, 'value')\n return typeof value === 'string' ? value : readProp(props, 'value', '') ?? ''\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createText,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute,\n setOptionalProperty\n} from './utils'\nimport { createPortal, type VuiPortalAdapter } from './overlay'\nimport type { VuiCommonProps } from './types'\n\nexport type DrawerCloseReason = 'close-button' | 'backdrop' | 'escape'\n\nexport interface DrawerProps extends VuiCommonProps {\n readonly open?: boolean\n readonly title?: string\n readonly side?: 'left' | 'right'\n readonly closeOnBackdrop?: boolean\n readonly closeOnEscape?: boolean\n readonly modal?: boolean\n readonly titleId?: string\n readonly descriptionId?: string\n readonly closeLabel?: string\n readonly footer?: VuiCommonProps['children']\n readonly onClose?: (reason: DrawerCloseReason) => void\n readonly portal?: VuiPortalAdapter<unknown>\n readonly portalTarget?: unknown\n}\n\nexport function Drawer(props: DrawerProps = {}): VobsNode {\n const root = createElement('div')\n const surface = createElement('aside')\n const body = createElement('div')\n bindClassList(root, props, () => ['vui-backdrop'])\n bindUserStyle(root, props)\n bindCommonAttributes(surface, props, [\n 'open',\n 'title',\n 'side',\n 'closeOnBackdrop',\n 'closeOnEscape',\n 'modal',\n 'titleId',\n 'descriptionId',\n 'closeLabel',\n 'footer',\n 'onClose',\n 'portal',\n 'portalTarget'\n ])\n setAttribute(root, 'role', 'presentation')\n setAttribute(surface, 'class', 'vui-drawer')\n setAttribute(surface, 'role', 'dialog')\n setAttribute(body, 'class', 'vui-drawer__body')\n\n effect(() => {\n const open = readProp(props, 'open', false)\n const modal = readProp(props, 'modal', true)\n setOptionalProperty(root, 'hidden', !open)\n setOptionalAttribute(root, 'data-state', open ? 'open' : 'closed')\n setOptionalAttribute(surface, 'aria-modal', modal ? 'true' : 'false')\n setOptionalAttribute(surface, 'aria-labelledby', readProp<string | undefined>(props, 'titleId', undefined))\n setOptionalAttribute(surface, 'aria-describedby', readProp<string | undefined>(props, 'descriptionId', undefined))\n setOptionalAttribute(surface, 'data-side', readProp(props, 'side', 'right'))\n })\n\n if (hasProp(props, 'title') || hasProp(props, 'onClose')) {\n const head = createElement('header')\n setAttribute(head, 'class', 'vui-drawer__head')\n if (hasProp(props, 'title')) {\n const title = createElement('div')\n const text = createText('')\n setAttribute(title, 'class', 'vui-dialog__title')\n bindTextContent(text, () => readProp(props, 'title', ''))\n insertBefore(title, text, null)\n insertBefore(head, title, null)\n }\n if (hasProp(props, 'onClose')) {\n const close = createElement('button')\n setAttribute(close, 'class', 'vui-dialog__close')\n setAttribute(close, 'type', 'button')\n setAttribute(close, 'aria-label', readProp(props, 'closeLabel', 'Close'))\n insertBefore(close, createText('x'), null)\n addEventListener(close, 'click', () => emitClose(props, 'close-button'))\n insertBefore(head, close, null)\n }\n insertBefore(surface, head, null)\n }\n\n if (hasProp(props, 'children')) mountSlot(body, props, 'children')\n insertBefore(surface, body, null)\n if (hasProp(props, 'footer')) {\n const footer = createElement('footer')\n setAttribute(footer, 'class', 'vui-dialog__foot')\n mountSlot(footer, props, 'footer')\n insertBefore(surface, footer, null)\n }\n insertBefore(root, surface, null)\n\n addEventListener(root, 'click', event => {\n if (event.target !== root) return\n if (readProp(props, 'closeOnBackdrop', true)) emitClose(props, 'backdrop')\n })\n addEventListener(root, 'keydown', event => {\n if ((event as KeyboardEvent).key !== 'Escape') return\n if (readProp(props, 'closeOnEscape', true)) emitClose(props, 'escape')\n })\n\n const portal = readProp<VuiPortalAdapter<unknown> | undefined>(props, 'portal', undefined)\n return portal\n ? createPortal(root, portal, readProp(props, 'portalTarget', undefined))\n : root\n}\n\nfunction emitClose(props: DrawerProps, reason: DrawerCloseReason): void {\n if (!readProp(props, 'open', false)) return\n const handler = readProp<unknown>(props, 'onClose', undefined)\n if (typeof handler === 'function') handler(reason)\n}\n","import { insertList } from '@vobs/vobs'\nimport {\n addEventListener,\n createElement,\n createText,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport { type Notification, type NotificationContext, useNotification } from '@vobs/notification'\nimport { Icon } from './icon'\nimport { createPortal, type VuiPortalAdapter } from './overlay'\nimport { bindClassList, bindCommonAttributes, bindUserStyle, readProp } from './utils'\nimport type { VuiCommonProps } from './types'\n\nexport type ToastPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n\nexport interface ToastHostProps extends VuiCommonProps {\n readonly notification?: NotificationContext\n readonly position?: ToastPosition\n readonly closeLabel?: string\n readonly portal?: VuiPortalAdapter<unknown>\n readonly portalTarget?: unknown\n}\n\nexport function ToastHost(props: ToastHostProps = {}): VobsNode {\n const notification = props.notification ?? useNotification()\n const root = createElement('ol')\n bindClassList(root, props, () => [\n 'vui-toast-host',\n `vui-toast-host--${readProp<ToastPosition>(props, 'position', 'top-right')}`\n ])\n bindCommonAttributes(root, props, ['notification', 'position', 'closeLabel', 'portal', 'portalTarget'])\n bindUserStyle(root, props)\n setAttribute(root, 'aria-label', 'Notifications')\n setAttribute(root, 'role', 'region')\n\n insertList(root, null, () => notification.notifications.value, entry => (\n createToast(entry, notification, readProp(props, 'closeLabel', 'Dismiss notification'))\n ), entry => entry.id)\n\n const portal = readProp<VuiPortalAdapter<unknown> | undefined>(props, 'portal', undefined)\n return portal\n ? createPortal(root, portal, readProp(props, 'portalTarget', undefined))\n : root\n}\n\nfunction createToast(\n notification: Notification,\n context: NotificationContext,\n closeLabel: string\n): VobsNode {\n const item = createElement('li')\n const content = createElement('div')\n const close = createElement('button')\n setAttribute(item, 'class', `vui-toast vui-toast--${notification.type}`)\n setAttribute(item, 'data-notification-id', notification.id)\n setAttribute(item, 'role', notification.type === 'error' ? 'alert' : 'status')\n setAttribute(content, 'class', 'vui-toast__content')\n setAttribute(close, 'class', 'vui-toast__close')\n setAttribute(close, 'type', 'button')\n setAttribute(close, 'aria-label', closeLabel)\n addEventListener(close, 'click', () => context.dismiss(notification.id))\n\n if (notification.title) {\n const title = createElement('div')\n setAttribute(title, 'class', 'vui-toast__title')\n insertBefore(title, createText(notification.title), null)\n insertBefore(content, title, null)\n }\n const message = createElement('div')\n setAttribute(message, 'class', 'vui-toast__message')\n insertBefore(message, createText(notification.content), null)\n insertBefore(content, message, null)\n insertBefore(close, Icon({ name: 'x', size: 16, decorative: true }), null)\n insertBefore(item, content, null)\n insertBefore(item, close, null)\n return item\n}\n","import {\n createIcon,\n createSvgIconNode,\n type IconDefinition,\n type SvgIconDefinition,\n type VobsIconProps\n} from '@vobs/icon-core'\nimport { hasProp, mountSlot, readProp } from './utils'\nimport type { VobsNode } from '@vobs/vobs'\nimport type { VuiCommonProps } from './types'\n\nexport type { IconDefinition } from '@vobs/icon-core'\n\nexport interface IconProps extends VuiCommonProps, VobsIconProps {\n readonly name?: string\n readonly icon?: IconDefinition\n}\n\nexport function Icon(props: IconProps = {}): VobsNode {\n const root = createSvgIconNode(() => {\n const definition = resolveIcon(\n readProp<IconDefinition | string | undefined>(props, 'icon', undefined)\n ?? readProp<string | undefined>(props, 'name', undefined)\n )\n if (!definition) {\n if (hasProp(props, 'children')) return undefined\n throw new Error('Vobs UI: Icon requires a registered `name` or an `icon` definition')\n }\n return iconDefinitionToSvg(definition)\n }, props, {\n class: 'vui-icon icon',\n defaultSvgAttributes: {\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'butt',\n 'stroke-linejoin': 'miter'\n }\n }) as Element\n\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction iconDefinitionToSvg(definition: IconDefinition): SvgIconDefinition {\n return {\n name: definition.name,\n body: definition.path,\n viewBox: definition.viewBox\n }\n}\n\nconst VUI_ICON_PATHS = {\n search: '<circle cx=\"11\" cy=\"11\" r=\"7\"/><path d=\"m20 20-3.5-3.5\"/>',\n check: '<polyline points=\"4 12 10 18 20 6\"/>',\n x: '<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/>',\n plus: '<line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/>',\n minus: '<line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/>',\n 'chevron-right': '<polyline points=\"9 6 15 12 9 18\"/>',\n 'chevron-down': '<polyline points=\"6 9 12 15 18 9\"/>',\n 'chevron-up': '<polyline points=\"6 15 12 9 18 15\"/>',\n 'chevron-left': '<polyline points=\"15 6 9 12 15 18\"/>',\n 'arrow-left': '<line x1=\"20\" y1=\"12\" x2=\"4\" y2=\"12\"/><polyline points=\"10 6 4 12 10 18\"/>',\n 'arrow-right': '<line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"/><polyline points=\"14 6 20 12 14 18\"/>',\n 'arrow-up': '<line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"/><polyline points=\"6 10 12 4 18 10\"/>',\n 'arrow-down': '<line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\"/><polyline points=\"6 14 12 20 18 14\"/>',\n atom: '<circle cx=\"12\" cy=\"12\" r=\"2\"/><ellipse cx=\"12\" cy=\"12\" rx=\"10\" ry=\"4\"/><ellipse cx=\"12\" cy=\"12\" rx=\"10\" ry=\"4\" transform=\"rotate(60 12 12)\"/><ellipse cx=\"12\" cy=\"12\" rx=\"10\" ry=\"4\" transform=\"rotate(120 12 12)\"/>',\n globe: '<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18\"/>',\n 'arrow-expand': '<polyline points=\"14 4 20 4 20 10\"/><line x1=\"14\" y1=\"10\" x2=\"20\" y2=\"4\"/><polyline points=\"10 20 4 20 4 14\"/><line x1=\"10\" y1=\"14\" x2=\"4\" y2=\"20\"/>',\n 'arrow-minimize': '<polyline points=\"20 4 14 10 20 10\"/><line x1=\"14\" y1=\"10\" x2=\"14\" y2=\"4\"/><polyline points=\"4 20 10 14 4 14\"/><line x1=\"10\" y1=\"14\" x2=\"10\" y2=\"20\"/>',\n 'check-circle': '<circle cx=\"12\" cy=\"12\" r=\"9\"/><polyline points=\"8 12 11 15 16 9\"/>',\n 'alert-circle': '<circle cx=\"12\" cy=\"12\" r=\"9\"/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"13\"/><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"16.01\"/>',\n 'alert-triangle': '<path d=\"M12 3 22 20 2 20 Z\"/><line x1=\"12\" y1=\"10\" x2=\"12\" y2=\"15\"/><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"18.01\"/>',\n info: '<circle cx=\"12\" cy=\"12\" r=\"9\"/><line x1=\"12\" y1=\"11\" x2=\"12\" y2=\"16\"/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"8.01\"/>',\n home: '<polygon points=\"3 11 12 3 21 11 21 21 14 21 14 14 10 14 10 21 3 21 3 11\"/>',\n user: '<path d=\"M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1\"/><circle cx=\"12\" cy=\"8\" r=\"4\"/>',\n settings: '<circle cx=\"12\" cy=\"12\" r=\"3\"/><path d=\"M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z\"/>',\n menu: '<line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"/><line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"/><line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\"/>',\n 'more-h': '<circle cx=\"5\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"/><circle cx=\"12\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"/><circle cx=\"19\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"/>',\n calendar: '<rect x=\"3\" y=\"5\" width=\"18\" height=\"16\"/><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"/><line x1=\"8\" y1=\"3\" x2=\"8\" y2=\"7\"/><line x1=\"16\" y1=\"3\" x2=\"16\" y2=\"7\"/>',\n filter: '<polygon points=\"3 4 21 4 14 12 14 20 10 18 10 12 3 4\"/>',\n sort: '<path d=\"M8 20V4\"/><polyline points=\"4 8 8 4 12 8\"/><path d=\"M16 4v16\"/><polyline points=\"12 16 16 20 20 16\"/>',\n edit: '<path d=\"M4 20h4l10-10-4-4L4 16v4z\"/><path d=\"M14 6l4 4\"/>',\n trash: '<polyline points=\"4 6 20 6\"/><path d=\"M6 6v14h12V6\"/><path d=\"M9 6V4h6v2\"/><line x1=\"10\" y1=\"10\" x2=\"10\" y2=\"17\"/><line x1=\"14\" y1=\"10\" x2=\"14\" y2=\"17\"/>',\n download: '<path d=\"M12 3v12\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"3\" y1=\"21\" x2=\"21\" y2=\"21\"/>',\n upload: '<path d=\"M12 21V6\"/><polyline points=\"7 11 12 6 17 11\"/><line x1=\"3\" y1=\"21\" x2=\"21\" y2=\"21\"/>',\n pause: '<line x1=\"9\" y1=\"5\" x2=\"9\" y2=\"19\"/><line x1=\"15\" y1=\"5\" x2=\"15\" y2=\"19\"/>',\n play: '<polygon points=\"8 5 19 12 8 19 8 5\"/>',\n refresh: '<polyline points=\"21 4 21 10 15 10\"/><polyline points=\"3 20 3 14 9 14\"/><path d=\"M20.5 9A9 9 0 0 0 5 5.5L3 7M3.5 15A9 9 0 0 0 19 18.5L21 17\"/>',\n bell: '<path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 8 3 8H3s3-1 3-8z\"/><path d=\"M10 21a2 2 0 0 0 4 0\"/>',\n folder: '<path d=\"M3 6h6l2 3h10v10H3z\"/>',\n code: '<polyline points=\"16 18 22 12 16 6\"/><polyline points=\"8 6 2 12 8 18\"/>',\n sparkles: '<path d=\"M12 3l1.8 4.2L18 9l-4.2 1.8L12 15l-1.8-4.2L6 9l4.2-1.8L12 3z\"/><path d=\"M19 14l1 2.2 2.2 1-2.2 1L19 20.4l-1-2.2-2.2-1 2.2-1L19 14z\"/>',\n zap: '<polygon points=\"13 2 4 14 12 14 11 22 20 10 12 10 13 2\"/>',\n sun: '<circle cx=\"12\" cy=\"12\" r=\"4\"/><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"5\"/><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"22\"/><line x1=\"2\" y1=\"12\" x2=\"5\" y2=\"12\"/><line x1=\"19\" y1=\"12\" x2=\"22\" y2=\"12\"/><line x1=\"4.6\" y1=\"4.6\" x2=\"6.7\" y2=\"6.7\"/><line x1=\"17.3\" y1=\"17.3\" x2=\"19.4\" y2=\"19.4\"/><line x1=\"4.6\" y1=\"19.4\" x2=\"6.7\" y2=\"17.3\"/><line x1=\"17.3\" y1=\"6.7\" x2=\"19.4\" y2=\"4.6\"/>',\n moon: '<path d=\"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z\"/>',\n terminal: '<polyline points=\"4 7 9 12 4 17\"/><line x1=\"12\" y1=\"17\" x2=\"20\" y2=\"17\"/>'\n} as const\n\nconst iconRegistry = new Map<string, IconDefinition>(\n Object.entries(VUI_ICON_PATHS).map(([name, path]) => [name, { name, path }])\n)\n\nexport { VUI_ICON_PATHS }\nexport { createIcon, registerIcon, resolveIcon }\n\nfunction registerIcon(icon: IconDefinition): () => void {\n const previous = iconRegistry.get(icon.name)\n iconRegistry.set(icon.name, icon)\n return () => {\n if (previous) iconRegistry.set(icon.name, previous)\n else iconRegistry.delete(icon.name)\n }\n}\n\nfunction resolveIcon(icon: string | IconDefinition | undefined): IconDefinition | undefined {\n return typeof icon === 'string' ? iconRegistry.get(icon) : icon\n}\n"],"mappings":"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","names":["import_reactivity","import_vobs","import_reactivity","import_vobs","import_vobs","import_vobs","import_vobs","import_reactivity","import_vobs","import_reactivity","import_vobs","import_reactivity","import_vobs","import_vobs","import_reactivity","import_vobs","activeId","import_vobs","import_vobs","import_reactivity","import_vobs","import_vobs","import_reactivity","import_vobs","import_vobs","import_reactivity","import_vobs","activeId","import_reactivity","import_vobs","activeId","import_reactivity","import_vobs","activeId","import_vobs","import_vobs","import_reactivity","import_vobs","import_reactivity","import_vobs","emitClose","import_vobs"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/button.ts","../src/utils.ts","../src/forms.ts","../src/card.ts","../src/tag.ts","../src/alert.ts","../src/tabs.ts","../src/dialog.ts","../src/overlay.ts","../src/menu.ts","../src/nav-list.ts","../src/pagination.ts","../src/avatar.ts","../src/page-header.ts","../src/table.ts","../src/stat-card.ts","../src/kbd.ts","../src/activity-rail.ts","../src/file-tree.ts","../src/editor-tabs.ts","../src/workbench-titlebar.ts","../src/status-bar.ts","../src/chat-composer.ts","../src/drawer.ts","../src/toast.ts","../src/icon.ts"],"sourcesContent":["export { Button, ButtonGroup } from './button'\nexport type { ButtonProps, ButtonVariant, ButtonGroupProps, ControlSize } from './button'\n\nexport { Input, Textarea, Select, Checkbox, Radio, Switch } from './forms'\nexport type {\n ChoiceProps,\n InputProps,\n InputType,\n SelectProps,\n SwitchProps,\n TextareaProps\n} from './forms'\n\nexport { Card, CardHeader } from './card'\nexport type { CardProps, CardHeaderProps } from './card'\n\nexport { Tag } from './tag'\nexport type { TagProps, TagTone } from './tag'\n\nexport { Alert } from './alert'\nexport type { AlertProps, AlertTone } from './alert'\n\nexport { Tabs } from './tabs'\nexport type { TabItem, TabsProps } from './tabs'\n\nexport { Dialog } from './dialog'\nexport type { DialogCloseReason, DialogProps } from './dialog'\n\nexport { Menu, MenuDivider } from './menu'\nexport type { MenuItem, MenuProps } from './menu'\n\nexport { NavList } from './nav-list'\nexport type { NavGroup, NavItem, NavListProps } from './nav-list'\n\nexport { Pagination } from './pagination'\nexport type { PaginationProps } from './pagination'\n\nexport { Avatar } from './avatar'\nexport type { AvatarProps, AvatarShape, AvatarSize } from './avatar'\n\nexport { PageHeader, PageHeaderAction } from './page-header'\nexport type { PageHeaderActionProps, PageHeaderProps } from './page-header'\n\nexport { Table, TablePanel } from './table'\nexport type { TableAlign, TableColumn, TablePanelProps, TableProps } from './table'\n\nexport { StatCard, StatCardGrid } from './stat-card'\nexport type { StatCardGridProps, StatCardProps, StatDeltaDirection } from './stat-card'\n\nexport { Kbd, KbdCombo, KbdRow } from './kbd'\nexport type { KbdComboProps, KbdProps, KbdRowProps } from './kbd'\n\nexport { ActivityRail } from './activity-rail'\nexport type { ActivityRailItem, ActivityRailProps } from './activity-rail'\n\nexport { FileTree } from './file-tree'\nexport type { FileTreeItem, FileTreeItemKind, FileTreeProps } from './file-tree'\n\nexport { EditorTabs } from './editor-tabs'\nexport type { EditorTabItem, EditorTabsProps } from './editor-tabs'\n\nexport { WorkbenchTitlebar } from './workbench-titlebar'\nexport type { WorkbenchTitlebarProps } from './workbench-titlebar'\n\nexport { StatusBar } from './status-bar'\nexport type { StatusBarDot, StatusBarItem, StatusBarProps } from './status-bar'\n\nexport { ChatComposer } from './chat-composer'\nexport type { ChatComposerProps } from './chat-composer'\n\nexport { Drawer } from './drawer'\nexport type { DrawerCloseReason, DrawerProps } from './drawer'\n\nexport { ToastHost } from './toast'\nexport type { ToastHostProps, ToastPosition } from './toast'\n\nexport {\n createDOMPortalAdapter,\n createFocusTrap,\n createOverlayManager,\n createPortal\n} from './overlay'\nexport type {\n FocusTrapHandle,\n FocusTrapOptions,\n OverlayEntry,\n OverlayManager,\n VuiPortalAdapter\n} from './overlay'\n\nexport { Icon, createIcon, registerIcon, resolveIcon, VUI_ICON_PATHS } from './icon'\nexport type { IconDefinition, IconProps } from './icon'\n\nexport type { VuiAttributeValue, VuiChildren, VuiCommonProps, VuiEventHandler } from './types'\n","import { effect } from '@vobs/reactivity'\nimport {\n createElement,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n hasProp,\n listen,\n mountSlot,\n readProp,\n setOptionalAttribute,\n setOptionalProperty\n} from './utils'\nimport type { VuiCommonProps, VuiEventHandler } from './types'\n\nexport type ButtonVariant =\n | 'brand'\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'ghost'\n | 'danger'\n | 'danger-strong'\n | 'danger-subtle'\n | 'warning'\n | 'link'\n\nexport type ControlSize = 'sm' | 'md' | 'lg'\n\nexport interface ButtonProps extends VuiCommonProps {\n readonly variant?: ButtonVariant\n readonly size?: ControlSize\n readonly type?: 'button' | 'submit' | 'reset'\n readonly disabled?: boolean\n readonly loading?: boolean\n readonly iconOnly?: boolean\n readonly icon?: VobsNode | (() => VobsNode | null | undefined)\n readonly onClick?: VuiEventHandler<MouseEvent>\n}\n\nexport function Button(props: ButtonProps = {}): VobsNode {\n const root = createElement('button')\n\n bindClassList(root, props, () => [\n 'vui-btn',\n `vui-btn--${readProp<ButtonVariant>(props, 'variant', 'primary')}`,\n `vui-btn--${readProp<ControlSize>(props, 'size', 'md')}`,\n readProp(props, 'iconOnly', false) ? 'vui-btn--icon' : undefined\n ])\n bindCommonAttributes(root, props, [\n 'variant',\n 'size',\n 'type',\n 'disabled',\n 'loading',\n 'iconOnly',\n 'icon',\n 'onClick'\n ])\n\n effect(() => {\n const disabled = readProp(props, 'disabled', false) || readProp(props, 'loading', false)\n setOptionalProperty(root, 'disabled', disabled)\n setOptionalAttribute(root, 'type', readProp(props, 'type', 'button'))\n setOptionalAttribute(root, 'aria-disabled', disabled ? 'true' : undefined)\n setOptionalAttribute(root, 'aria-busy', readProp(props, 'loading', false) ? 'true' : undefined)\n })\n\n listen(root, 'click', props, 'onClick', () => (\n readProp(props, 'disabled', false) || readProp(props, 'loading', false)\n ))\n\n if (hasProp(props, 'icon')) mountSlot(root, props, 'icon')\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport interface ButtonGroupProps extends VuiCommonProps {}\n\nexport function ButtonGroup(props: ButtonGroupProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-btn-group'])\n bindCommonAttributes(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n addEventListener,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n setTextContent,\n type VobsNode\n} from '@vobs/vobs'\nimport type { VuiCommonProps } from './types'\n\ntype VuiProps = VuiCommonProps | object\n\nexport function classNames(...values: readonly (string | false | null | undefined)[]): string {\n return values\n .flatMap(value => typeof value === 'string' ? value.trim().split(/\\s+/u) : [])\n .filter(Boolean)\n .join(' ')\n}\n\nexport function readProp<T>(props: object, name: string, fallback: T): T {\n const value = Reflect.get(props, name)\n return (value === undefined ? fallback : value) as T\n}\n\nexport function hasProp(props: object, name: string): boolean {\n return name in props\n}\n\nexport function bindClass(\n root: Element,\n props: VuiProps,\n ...baseClasses: readonly (string | undefined)[]\n): void {\n effect(() => {\n setAttribute(root, 'class', classNames(\n ...baseClasses,\n readString(props, 'class'),\n readString(props, 'className')\n ))\n })\n}\n\nexport function bindClassList(\n root: Element,\n props: VuiProps,\n readBaseClasses: () => readonly (string | undefined)[]\n): void {\n effect(() => {\n setAttribute(root, 'class', classNames(\n ...readBaseClasses(),\n readString(props, 'class'),\n readString(props, 'className')\n ))\n })\n}\n\nexport function bindCommonAttributes(\n root: Element,\n props: VuiProps,\n skip: readonly string[] = [],\n options: { readonly includeDataAria?: boolean } = {}\n): void {\n const ignored = new Set(skip)\n ignored.add('class')\n ignored.add('className')\n ignored.add('children')\n ignored.add('style')\n\n effect(() => {\n const next = new Map<string, string>()\n for (const name of Object.keys(props)) {\n if (ignored.has(name) || name.startsWith('on')) continue\n if (!isCommonAttribute(name)) continue\n if (options.includeDataAria === false && (name.startsWith('aria-') || name.startsWith('data-'))) continue\n\n const value = Reflect.get(props, name)\n const normalized = normalizeAttribute(name, value)\n if (normalized !== undefined) next.set(normalized.name, normalized.value)\n }\n\n const managed = getManagedAttributes(root)\n for (const name of managed) {\n if (!next.has(name)) removeAttribute(root, name)\n }\n for (const [name, value] of next) setAttribute(root, name, value)\n setManagedAttributes(root, next.keys())\n })\n}\n\nexport function bindUserStyle(root: Element, props: VuiProps): void {\n bindStyle(root, props, () => '')\n}\n\nexport function bindStyle(root: Element, props: VuiProps, createStyle: () => string): void {\n effect(() => {\n const userStyle = readString(props, 'style')\n const internalStyle = createStyle()\n const style = [internalStyle, userStyle].filter(Boolean).join('; ')\n if (style) setAttribute(root, 'style', style)\n else removeAttribute(root, 'style')\n })\n}\n\nexport function bindTextContent(\n node: Text,\n read: () => unknown\n): void {\n effect(() => {\n setTextContent(node, String(read() ?? ''))\n })\n}\n\nexport function bindPropertyValue(\n node: Element,\n name: string,\n read: () => unknown\n): void {\n effect(() => setProperty(node, name, read()))\n}\n\nexport function bindAttributeValue(\n node: Element,\n name: string,\n read: () => unknown\n): void {\n effect(() => {\n const value = read()\n if (value === undefined || value === null || value === false) removeAttribute(node, name)\n else setAttribute(node, name, String(value))\n })\n}\n\nexport function listen(\n root: Element,\n event: string,\n props: object,\n propName: string,\n disabled?: () => boolean\n): void {\n addEventListener(root, event, (reason: Event) => {\n if (disabled?.()) return\n const handler = Reflect.get(props, propName)\n if (typeof handler === 'function') handler(reason)\n })\n}\n\nexport function mountSlot(\n parent: Node,\n props: object,\n propName: string\n): void {\n insertDynamic(parent, null, () => resolveSlot(Reflect.get(props, propName)))\n}\n\nexport function resolveSlot(value: unknown): VobsNode | null {\n const resolved = typeof value === 'function' ? value() : value\n if (resolved === undefined || resolved === null || resolved === false) return null\n if (typeof resolved === 'string' || typeof resolved === 'number') return createText(String(resolved))\n if (Array.isArray(resolved)) {\n const children = resolved\n return createFragment((parent, anchor) => {\n for (const child of children) {\n const node = resolveSlot(child)\n if (node) insertBefore(parent, node, anchor)\n }\n })\n }\n return resolved as VobsNode\n}\n\nexport function setOptionalAttribute(node: Element, name: string, value: unknown): void {\n if (value === undefined || value === null || value === false || value === '') {\n removeAttribute(node, name)\n return\n }\n setAttribute(node, name, String(value))\n}\n\nexport function setOptionalProperty(node: Element, name: string, value: unknown): void {\n if (value === undefined || value === null) return\n setProperty(node, name, value)\n}\n\nfunction readString(props: object, name: string): string | undefined {\n const value = Reflect.get(props, name)\n return typeof value === 'string' ? value : undefined\n}\n\nfunction isCommonAttribute(name: string): boolean {\n return name === 'id'\n || name === 'title'\n || name === 'role'\n || name === 'tabIndex'\n || name.startsWith('aria-')\n || name.startsWith('data-')\n}\n\nfunction normalizeAttribute(name: string, value: unknown): { name: string; value: string } | undefined {\n if (value === undefined || value === null) return undefined\n if (value === false && !name.startsWith('aria-') && !name.startsWith('data-')) return undefined\n return { name: name === 'tabIndex' ? 'tabindex' : name, value: String(value) }\n}\n\nconst managedAttributes = new WeakMap<object, Set<string>>()\n\nfunction getManagedAttributes(node: Element): Set<string> {\n return managedAttributes.get(node) ?? new Set<string>()\n}\n\nfunction setManagedAttributes(node: Element, names: IterableIterator<string>): void {\n managedAttributes.set(node, new Set(names))\n}\n\nfunction removeAttribute(node: Element, name: string): void {\n const candidate = node as Element & { removeAttribute?: (attribute: string) => void }\n candidate.removeAttribute?.(name)\n}\n","import { effect, type Signal } from '@vobs/reactivity'\nimport {\n createElement,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindPropertyValue,\n bindUserStyle,\n hasProp,\n listen,\n mountSlot,\n readProp,\n setOptionalAttribute,\n setOptionalProperty\n} from './utils'\nimport type { VuiCommonProps, VuiEventHandler } from './types'\n\nexport type InputType = 'date' | 'email' | 'number' | 'password' | 'search' | 'text' | 'url'\n\n/** bind 传入 Signal 时组件建立双向绑定:信号→DOM property、用户输入→信号写回。 */\nfunction bindSignalProp<T>(props: object): Signal<T> | undefined {\n const value = readProp<Signal<T> | undefined>(props, 'bind', undefined)\n return value && typeof value === 'object' && 'value' in value ? value : undefined\n}\n\nexport interface InputProps extends VuiCommonProps {\n readonly type?: InputType\n readonly name?: string\n readonly value?: string | number\n readonly bind?: Signal<string | number | undefined>\n readonly placeholder?: string\n readonly disabled?: boolean\n readonly readOnly?: boolean\n readonly required?: boolean\n readonly icon?: VobsNode | (() => VobsNode | null | undefined)\n readonly onInput?: VuiEventHandler<InputEvent>\n readonly onChange?: VuiEventHandler<Event>\n readonly onBlur?: VuiEventHandler<FocusEvent>\n}\n\nexport function Input(props: InputProps = {}): VobsNode {\n const root = createElement('div')\n const control = createElement('input')\n\n bindClassList(root, props, () => [\n 'vui-input',\n readProp<InputType>(props, 'type', 'text') === 'search' ? 'vui-search' : undefined\n ])\n bindUserStyle(root, props)\n bindCommonAttributes(control, props, [\n 'type',\n 'name',\n 'value',\n 'placeholder',\n 'disabled',\n 'readOnly',\n 'required',\n 'icon',\n 'onInput',\n 'onChange',\n 'onBlur'\n ])\n\n effect(() => {\n setOptionalAttribute(control, 'type', readProp<InputType>(props, 'type', 'text'))\n setOptionalAttribute(control, 'name', readProp<string | undefined>(props, 'name', undefined))\n setOptionalAttribute(control, 'placeholder', readProp<string | undefined>(props, 'placeholder', undefined))\n setOptionalProperty(control, 'disabled', readProp(props, 'disabled', false))\n setOptionalProperty(control, 'readOnly', readProp(props, 'readOnly', false))\n setOptionalProperty(control, 'required', readProp(props, 'required', false))\n })\n const bind = bindSignalProp<string | number | undefined>(props)\n if (bind) {\n bindPropertyValue(control, 'value', () => String(bind.value ?? ''))\n listen(control, 'input', { onInput: (event: Event) => { bind.value = (event.target as HTMLInputElement).value } }, 'onInput', () => readProp(props, 'disabled', false))\n } else if (hasProp(props, 'value')) {\n bindPropertyValue(control, 'value', () => readProp<string | number | undefined>(props, 'value', undefined) ?? '')\n }\n\n if (hasProp(props, 'icon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-input__icon')\n mountSlot(icon, props, 'icon')\n insertBefore(root, icon, null)\n }\n insertBefore(root, control, null)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n\n listen(control, 'input', props, 'onInput', () => readProp(props, 'disabled', false))\n listen(control, 'change', props, 'onChange', () => readProp(props, 'disabled', false))\n listen(control, 'blur', props, 'onBlur', () => false)\n return root\n}\n\nexport interface TextareaProps extends VuiCommonProps {\n readonly value?: string | number\n readonly bind?: Signal<string | number | undefined>\n readonly placeholder?: string\n readonly disabled?: boolean\n readonly readOnly?: boolean\n readonly required?: boolean\n readonly rows?: number\n readonly name?: string\n readonly onInput?: VuiEventHandler<InputEvent>\n readonly onChange?: VuiEventHandler<Event>\n readonly onBlur?: VuiEventHandler<FocusEvent>\n}\n\nexport function Textarea(props: TextareaProps = {}): VobsNode {\n const root = createElement('textarea')\n bindClassList(root, props, () => ['vui-textarea'])\n bindCommonAttributes(root, props, [\n 'value',\n 'placeholder',\n 'disabled',\n 'readOnly',\n 'required',\n 'rows',\n 'name',\n 'onInput',\n 'onChange',\n 'onBlur'\n ])\n effect(() => {\n setOptionalAttribute(root, 'name', readProp<string | undefined>(props, 'name', undefined))\n setOptionalAttribute(root, 'placeholder', readProp<string | undefined>(props, 'placeholder', undefined))\n setOptionalProperty(root, 'disabled', readProp(props, 'disabled', false))\n setOptionalProperty(root, 'readOnly', readProp(props, 'readOnly', false))\n setOptionalProperty(root, 'required', readProp(props, 'required', false))\n setOptionalAttribute(root, 'rows', readProp<number | undefined>(props, 'rows', undefined))\n })\n const bind = bindSignalProp<string | number | undefined>(props)\n if (bind) {\n bindPropertyValue(root, 'value', () => String(bind.value ?? ''))\n listen(root, 'input', { onInput: (event: Event) => { bind.value = (event.target as HTMLTextAreaElement).value } }, 'onInput', () => readProp(props, 'disabled', false))\n } else if (hasProp(props, 'value')) {\n bindPropertyValue(root, 'value', () => readProp<string | number | undefined>(props, 'value', undefined) ?? '')\n }\n listen(root, 'input', props, 'onInput', () => readProp(props, 'disabled', false))\n listen(root, 'change', props, 'onChange', () => readProp(props, 'disabled', false))\n listen(root, 'blur', props, 'onBlur', () => false)\n return root\n}\n\nexport interface SelectProps extends VuiCommonProps {\n readonly name?: string\n readonly value?: string | number\n readonly bind?: Signal<string | number | undefined>\n readonly disabled?: boolean\n readonly required?: boolean\n readonly multiple?: boolean\n readonly size?: number\n readonly onChange?: VuiEventHandler<Event>\n}\n\nexport function Select(props: SelectProps = {}): VobsNode {\n const root = createElement('select')\n bindClassList(root, props, () => ['vui-select'])\n bindCommonAttributes(root, props, [\n 'name',\n 'value',\n 'disabled',\n 'required',\n 'multiple',\n 'size',\n 'onChange'\n ])\n effect(() => {\n setOptionalAttribute(root, 'name', readProp<string | undefined>(props, 'name', undefined))\n setOptionalProperty(root, 'disabled', readProp(props, 'disabled', false))\n setOptionalProperty(root, 'required', readProp(props, 'required', false))\n setOptionalProperty(root, 'multiple', readProp(props, 'multiple', false))\n setOptionalAttribute(root, 'size', readProp<number | undefined>(props, 'size', undefined))\n })\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n const bind = bindSignalProp<string | number | undefined>(props)\n if (bind) {\n bindPropertyValue(root, 'value', () => String(bind.value ?? ''))\n listen(root, 'change', { onChange: (event: Event) => { bind.value = (event.target as HTMLSelectElement).value } }, 'onChange', () => readProp(props, 'disabled', false))\n } else if (hasProp(props, 'value')) {\n bindPropertyValue(root, 'value', () => readProp<string | number | undefined>(props, 'value', undefined) ?? '')\n }\n listen(root, 'change', props, 'onChange', () => readProp(props, 'disabled', false))\n return root\n}\n\nexport interface ChoiceProps extends VuiCommonProps {\n readonly name?: string\n readonly value?: string\n readonly checked?: boolean\n readonly bind?: Signal<boolean>\n readonly disabled?: boolean\n readonly required?: boolean\n readonly onChange?: VuiEventHandler<Event>\n}\n\nexport function Checkbox(props: ChoiceProps = {}): VobsNode {\n return createChoice('checkbox', props)\n}\n\nexport function Radio(props: ChoiceProps = {}): VobsNode {\n return createChoice('radio', props)\n}\n\nfunction createChoice(type: 'checkbox' | 'radio', props: ChoiceProps): VobsNode {\n const root = createElement('label')\n const control = createElement('input')\n const visual = createElement('span')\n\n bindClassList(root, props, () => [`vui-${type}`])\n bindUserStyle(root, props)\n bindCommonAttributes(control, props, [\n 'name',\n 'value',\n 'checked',\n 'disabled',\n 'required',\n 'onChange'\n ])\n setAttribute(visual, 'class', type === 'checkbox' ? 'vui-check__box' : 'vui-radio__dot')\n\n effect(() => {\n setOptionalAttribute(control, 'type', type)\n setOptionalAttribute(control, 'name', readProp<string | undefined>(props, 'name', undefined))\n setOptionalAttribute(control, 'value', readProp<string | undefined>(props, 'value', undefined))\n setOptionalProperty(control, 'disabled', readProp(props, 'disabled', false))\n setOptionalProperty(control, 'required', readProp(props, 'required', false))\n })\n const bind = bindSignalProp<boolean>(props)\n if (bind) {\n bindPropertyValue(control, 'checked', () => bind.value)\n listen(control, 'change', { onChange: (event: Event) => { bind.value = (event.target as HTMLInputElement).checked } }, 'onChange', () => readProp(props, 'disabled', false))\n } else if (hasProp(props, 'checked')) {\n bindPropertyValue(control, 'checked', () => readProp(props, 'checked', false))\n }\n insertBefore(root, control, null)\n insertBefore(root, visual, null)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n listen(control, 'change', props, 'onChange', () => readProp(props, 'disabled', false))\n return root\n}\n\nexport interface SwitchProps extends VuiCommonProps {\n readonly checked?: boolean\n readonly bind?: Signal<boolean>\n readonly disabled?: boolean\n readonly readOnly?: boolean\n readonly size?: 'sm' | 'md'\n readonly name?: string\n readonly value?: string\n readonly onChange?: VuiEventHandler<Event>\n}\n\nexport function Switch(props: SwitchProps = {}): VobsNode {\n const root = createElement('label')\n const control = createElement('input')\n const thumb = createElement('span')\n\n bindClassList(root, props, () => [\n 'vui-switch',\n readProp<'sm' | 'md'>(props, 'size', 'md') === 'sm' ? 'vui-switch--sm' : undefined\n ])\n bindUserStyle(root, props)\n bindCommonAttributes(root, props, ['role'])\n bindCommonAttributes(control, props, [\n 'checked',\n 'disabled',\n 'readOnly',\n 'name',\n 'value',\n 'onChange'\n ])\n setAttribute(thumb, 'class', 'vui-switch__thumb')\n setAttribute(root, 'role', 'switch')\n const bind = bindSignalProp<boolean>(props)\n\n effect(() => {\n setOptionalAttribute(control, 'type', 'checkbox')\n setOptionalAttribute(control, 'name', readProp<string | undefined>(props, 'name', undefined))\n setOptionalAttribute(control, 'value', readProp<string | undefined>(props, 'value', undefined))\n setOptionalProperty(control, 'disabled', readProp(props, 'disabled', false))\n setOptionalProperty(control, 'readOnly', readProp(props, 'readOnly', false))\n setOptionalAttribute(root, 'aria-checked', (bind ? bind.value : readProp(props, 'checked', false)) ? 'true' : 'false')\n setOptionalAttribute(root, 'aria-disabled', readProp(props, 'disabled', false) ? 'true' : undefined)\n })\n if (bind) {\n bindPropertyValue(control, 'checked', () => bind.value)\n listen(control, 'change', { onChange: (event: Event) => { bind.value = (event.target as HTMLInputElement).checked } }, 'onChange', () => readProp(props, 'disabled', false))\n } else if (hasProp(props, 'checked')) {\n bindPropertyValue(control, 'checked', () => readProp(props, 'checked', false))\n }\n insertBefore(root, control, null)\n insertBefore(root, thumb, null)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n listen(control, 'change', props, 'onChange', () => readProp(props, 'disabled', false))\n return root\n}\n","import {\n createElement,\n createText,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp\n} from './utils'\nimport type { VuiCommonProps } from './types'\n\nexport interface CardProps extends VuiCommonProps {\n readonly title?: string\n readonly description?: string\n}\n\nexport function Card(props: CardProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-card'])\n bindCommonAttributes(root, props, ['title', 'description'])\n bindUserStyle(root, props)\n\n if (hasProp(props, 'title')) {\n const title = createElement('div')\n const text = createText('')\n setAttribute(title, 'class', 'vui-card__title')\n bindTextContent(text, () => readProp(props, 'title', ''))\n insertBefore(title, text, null)\n insertBefore(root, title, null)\n }\n if (hasProp(props, 'description')) {\n const description = createElement('p')\n const text = createText('')\n setAttribute(description, 'class', 'vui-card__desc')\n bindTextContent(text, () => readProp(props, 'description', ''))\n insertBefore(description, text, null)\n insertBefore(root, description, null)\n }\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport interface CardHeaderProps extends VuiCommonProps {}\n\nexport function CardHeader(props: CardHeaderProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-card__header'])\n bindCommonAttributes(root, props)\n bindUserStyle(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n","import {\n createElement,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp\n} from './utils'\nimport type { VuiCommonProps } from './types'\n\nexport type TagTone = 'default' | 'brand' | 'success' | 'warning' | 'danger' | 'count' | 'neutral-strong'\n\nexport interface TagProps extends VuiCommonProps {\n readonly tone?: TagTone\n}\n\nexport function Tag(props: TagProps = {}): VobsNode {\n const root = createElement('span')\n bindClassList(root, props, () => [\n 'vui-tag',\n readProp<TagTone>(props, 'tone', 'default') === 'default'\n ? undefined\n : `vui-tag--${readProp<TagTone>(props, 'tone', 'default')}`\n ])\n bindCommonAttributes(root, props, ['tone'])\n bindUserStyle(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n","import {\n createElement,\n createText,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp\n} from './utils'\nimport type { VuiCommonProps } from './types'\n\nexport type AlertTone = 'info' | 'success' | 'warning' | 'danger'\n\nexport interface AlertProps extends VuiCommonProps {\n readonly tone?: AlertTone\n readonly title?: string\n readonly description?: string\n readonly icon?: VobsNode | (() => VobsNode | null | undefined)\n}\n\nexport function Alert(props: AlertProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => [\n 'vui-alert',\n `vui-alert--${readProp<AlertTone>(props, 'tone', 'info')}`\n ])\n bindCommonAttributes(root, props, ['tone', 'title', 'description', 'icon', 'role'])\n bindUserStyle(root, props)\n setAttribute(root, 'role', 'alert')\n\n if (hasProp(props, 'icon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-alert__icon')\n mountSlot(icon, props, 'icon')\n insertBefore(root, icon, null)\n }\n\n const content = createElement('div')\n if (hasProp(props, 'title')) {\n const title = createElement('div')\n const text = createText('')\n setAttribute(title, 'class', 'vui-alert__title')\n bindTextContent(text, () => readProp(props, 'title', ''))\n insertBefore(title, text, null)\n insertBefore(content, title, null)\n }\n if (hasProp(props, 'description')) {\n const description = createElement('div')\n const text = createText('')\n setAttribute(description, 'class', 'vui-alert__desc')\n bindTextContent(text, () => readProp(props, 'description', ''))\n insertBefore(description, text, null)\n insertBefore(content, description, null)\n }\n if (hasProp(props, 'children')) mountSlot(content, props, 'children')\n insertBefore(root, content, null)\n return root\n}\n","import { effect, state } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface TabItem {\n readonly id: string\n readonly label: string\n readonly disabled?: boolean\n readonly content?: VuiChildren\n}\n\nexport interface TabsProps extends VuiCommonProps {\n readonly items: readonly TabItem[]\n readonly value?: string\n readonly variant?: 'default' | 'filled'\n readonly onChange?: (id: string) => void\n}\n\nexport function Tabs(props: TabsProps): VobsNode {\n const root = createElement('div')\n const tablist = createElement('div')\n const panel = createElement('div')\n const internalValue = state<string | undefined>(undefined)\n\n bindClassList(root, props, () => ['vui-tabs-root'])\n bindCommonAttributes(root, props, ['items', 'value', 'variant', 'onChange'])\n setAttribute(tablist, 'role', 'tablist')\n effect(() => {\n const variant = readProp<'default' | 'filled'>(props, 'variant', 'default')\n setAttribute(tablist, 'class', `vui-tabs${variant === 'filled' ? ' vui-tabs--filled' : ''}`)\n })\n setAttribute(panel, 'class', 'vui-tabs__panel')\n\n insertDynamic(tablist, null, () => createTabButtons(props, internalValue))\n insertDynamic(panel, null, () => {\n const item = activeItem(readProp<readonly TabItem[]>(props, 'items', []), activeId(props, internalValue))\n return item?.content === undefined ? null : resolveSlot(item.content)\n })\n insertBefore(root, tablist, null)\n insertBefore(root, panel, null)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createTabButtons(props: TabsProps, internalValue: { value: string | undefined }): VobsNode {\n const items = readProp<readonly TabItem[]>(props, 'items', [])\n const selected = activeId(props, internalValue)\n return createFragment((parent, anchor) => {\n for (const item of items) {\n const button = createElement('button')\n const isActive = item.id === selected\n setAttribute(button, 'class', `vui-tab${isActive ? ' is-active' : ''}`)\n setAttribute(button, 'role', 'tab')\n setAttribute(button, 'type', 'button')\n setAttribute(button, 'aria-selected', isActive ? 'true' : 'false')\n setAttribute(button, 'data-tab-id', item.id)\n if (item.disabled === true) {\n setAttribute(button, 'aria-disabled', 'true')\n setProperty(button, 'disabled', true)\n }\n insertBefore(button, createText(item.label), null)\n addEventListener(button, 'click', () => {\n if (item.disabled === true) return\n if (readProp<string | undefined>(props, 'value', undefined) === undefined) internalValue.value = item.id\n const onChange = readProp<unknown>(props, 'onChange', undefined)\n if (typeof onChange === 'function') onChange(item.id)\n })\n insertBefore(parent, button, anchor)\n }\n })\n}\n\nfunction activeId(props: TabsProps, internalValue: { value: string | undefined }): string | undefined {\n const controlled = readProp<string | undefined>(props, 'value', undefined)\n if (controlled !== undefined) return controlled\n if (internalValue.value !== undefined) return internalValue.value\n return readProp<readonly TabItem[]>(props, 'items', []).find(item => item.disabled !== true)?.id\n}\n\nfunction activeItem(items: readonly TabItem[], id: string | undefined): TabItem | undefined {\n return items.find(item => item.id === id)\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createText,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute,\n setOptionalProperty\n} from './utils'\nimport type { VuiCommonProps } from './types'\nimport type { VuiPortalAdapter } from './overlay'\nimport { createPortal } from './overlay'\n\nexport type DialogCloseReason = 'close-button' | 'backdrop' | 'escape'\n\nexport interface DialogProps extends VuiCommonProps {\n readonly open?: boolean\n readonly title?: string\n readonly headerActions?: VobsNode | (() => VobsNode | null | undefined)\n readonly size?: 'sm' | 'md' | 'lg'\n readonly modal?: boolean\n readonly closeOnBackdrop?: boolean\n readonly closeOnEscape?: boolean\n readonly titleId?: string\n readonly descriptionId?: string\n readonly closeLabel?: string\n readonly onClose?: (reason: DialogCloseReason) => void\n readonly portal?: VuiPortalAdapter<unknown>\n readonly portalTarget?: unknown\n}\n\nexport function Dialog(props: DialogProps = {}): VobsNode {\n const root = createElement('div')\n const surface = createElement('section')\n const body = createElement('div')\n\n bindClassList(root, props, () => ['vui-backdrop'])\n bindUserStyle(root, props)\n bindCommonAttributes(surface, props, [\n 'open',\n 'title',\n 'headerActions',\n 'size',\n 'modal',\n 'closeOnBackdrop',\n 'closeOnEscape',\n 'titleId',\n 'descriptionId',\n 'closeLabel',\n 'onClose',\n 'portal',\n 'portalTarget'\n ])\n setAttribute(root, 'role', 'presentation')\n setAttribute(surface, 'class', 'vui-dialog')\n setAttribute(surface, 'role', 'dialog')\n setAttribute(body, 'class', 'vui-dialog__body')\n\n effect(() => {\n const open = readProp(props, 'open', false)\n const modal = readProp(props, 'modal', true)\n setOptionalProperty(root, 'hidden', !open)\n setOptionalAttribute(root, 'data-state', open ? 'open' : 'closed')\n setOptionalAttribute(surface, 'aria-modal', modal ? 'true' : 'false')\n setOptionalAttribute(surface, 'aria-labelledby', readProp<string | undefined>(props, 'titleId', undefined))\n setOptionalAttribute(surface, 'aria-describedby', readProp<string | undefined>(props, 'descriptionId', undefined))\n setOptionalAttribute(surface, 'data-size', readProp(props, 'size', 'md'))\n })\n\n if (hasProp(props, 'title') || hasProp(props, 'headerActions') || hasProp(props, 'onClose')) {\n const head = createElement('header')\n setAttribute(head, 'class', 'vui-dialog__head')\n if (hasProp(props, 'title')) {\n const title = createElement('div')\n const text = createText('')\n setAttribute(title, 'class', 'vui-dialog__title')\n bindTextContent(text, () => readProp(props, 'title', ''))\n insertBefore(title, text, null)\n insertBefore(head, title, null)\n }\n if (hasProp(props, 'headerActions')) mountSlot(head, props, 'headerActions')\n if (hasProp(props, 'onClose')) {\n const close = createElement('button')\n setAttribute(close, 'class', 'vui-dialog__close')\n setAttribute(close, 'type', 'button')\n setAttribute(close, 'aria-label', readProp(props, 'closeLabel', 'Close'))\n insertBefore(close, createText('x'), null)\n addEventListener(close, 'click', () => emitClose(props, 'close-button'))\n insertBefore(head, close, null)\n }\n insertBefore(surface, head, null)\n }\n\n if (hasProp(props, 'children')) mountSlot(body, props, 'children')\n insertBefore(surface, body, null)\n insertBefore(root, surface, null)\n\n addEventListener(root, 'click', event => {\n if (event.target !== root) return\n if (readProp(props, 'closeOnBackdrop', true)) emitClose(props, 'backdrop')\n })\n addEventListener(root, 'keydown', event => {\n if ((event as KeyboardEvent).key !== 'Escape') return\n if (readProp(props, 'closeOnEscape', true)) emitClose(props, 'escape')\n })\n const portal = readProp<VuiPortalAdapter<unknown> | undefined>(props, 'portal', undefined)\n return portal\n ? createPortal(root, portal, readProp(props, 'portalTarget', undefined))\n : root\n}\n\nfunction emitClose(props: DialogProps, reason: DialogCloseReason): void {\n if (!readProp(props, 'open', false)) return\n const handler = readProp<unknown>(props, 'onClose', undefined)\n if (typeof handler === 'function') handler(reason)\n}\n","import { getCurrentOwner, onDispose } from '@vobs/reactivity'\nimport {\n createComment,\n insertBefore,\n isVobsFragment,\n type VobsNode\n} from '@vobs/vobs'\n\nexport interface VuiPortalAdapter<Target = unknown> {\n mount(node: VobsNode, target: Target): void\n unmount(node: VobsNode, target: Target): void\n}\n\nexport function createPortal<Target>(\n node: VobsNode,\n adapter: VuiPortalAdapter<Target>,\n target: Target\n): VobsNode {\n const placeholder = createComment('vui:portal')\n const owner = getCurrentOwner()\n if (!owner) throw new Error('Vobs UI: createPortal 必须在组件 Owner 作用域内调用')\n adapter.mount(node, target)\n const cleanup = (): void => adapter.unmount(node, target)\n owner.onDispose(cleanup)\n return placeholder\n}\n\nexport function createDOMPortalAdapter(): VuiPortalAdapter<Node> {\n return {\n mount(node, target): void {\n insertBefore(target, node, null)\n },\n unmount(node, target): void {\n removePortalNode(node, target)\n }\n }\n}\n\nexport interface FocusTrapOptions {\n readonly initialFocus?: HTMLElement | (() => HTMLElement | null)\n readonly restoreFocus?: boolean\n readonly onEscape?: (event: KeyboardEvent) => void\n}\n\nexport interface FocusTrapHandle {\n readonly active: boolean\n activate(): void\n deactivate(): void\n dispose(): void\n}\n\nexport function createFocusTrap(\n root: HTMLElement,\n options: FocusTrapOptions = {}\n): FocusTrapHandle {\n let isActive = false\n let disposed = false\n let previouslyFocused: Element | null = null\n\n const focusable = (): HTMLElement[] => [...root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)]\n .filter(element => !element.hasAttribute('disabled') && element.getAttribute('aria-hidden') !== 'true')\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (!isActive || disposed) return\n if (event.key === 'Escape') {\n options.onEscape?.(event)\n return\n }\n if (event.key !== 'Tab') return\n const elements = focusable()\n if (elements.length === 0) {\n event.preventDefault()\n root.focus()\n return\n }\n const first = elements[0]\n const last = elements[elements.length - 1]\n const current = document.activeElement\n if (event.shiftKey && current === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && current === last) {\n event.preventDefault()\n first.focus()\n }\n }\n\n const activate = (): void => {\n if (disposed || isActive) return\n isActive = true\n previouslyFocused = document.activeElement\n root.addEventListener('keydown', onKeyDown)\n const initial = resolveInitialFocus(options.initialFocus) ?? focusable()[0] ?? root\n if (!root.hasAttribute('tabindex') && initial === root) root.setAttribute('tabindex', '-1')\n initial.focus()\n }\n\n const deactivate = (): void => {\n if (!isActive) return\n isActive = false\n root.removeEventListener('keydown', onKeyDown)\n if (options.restoreFocus !== false\n && typeof HTMLElement !== 'undefined'\n && previouslyFocused instanceof HTMLElement) previouslyFocused.focus()\n previouslyFocused = null\n }\n\n const handle: FocusTrapHandle = {\n get active(): boolean { return isActive },\n activate,\n deactivate,\n dispose(): void {\n if (disposed) return\n deactivate()\n disposed = true\n }\n }\n if (getCurrentOwner()) onDispose(() => handle.dispose())\n return handle\n}\n\nexport interface OverlayEntry {\n readonly id: string\n readonly modal?: boolean\n readonly closeOnEscape?: boolean\n readonly onEscape?: () => void\n}\n\nexport interface OverlayManager {\n readonly entries: readonly OverlayEntry[]\n open(entry: OverlayEntry): void\n close(id: string): void\n bringToFront(id: string): void\n subscribe(listener: (entries: readonly OverlayEntry[]) => void): () => void\n}\n\nexport function createOverlayManager(): OverlayManager {\n let entries: OverlayEntry[] = []\n const listeners = new Set<(entries: readonly OverlayEntry[]) => void>()\n const notify = (): void => {\n const snapshot = entries.slice()\n for (const listener of listeners) listener(snapshot)\n }\n\n return {\n get entries(): readonly OverlayEntry[] { return entries },\n open(entry): void {\n entries = [...entries.filter(current => current.id !== entry.id), entry]\n notify()\n },\n close(id): void {\n const next = entries.filter(entry => entry.id !== id)\n if (next.length === entries.length) return\n entries = next\n notify()\n },\n bringToFront(id): void {\n const entry = entries.find(current => current.id === id)\n if (!entry || entries[entries.length - 1] === entry) return\n entries = [...entries.filter(current => current !== entry), entry]\n notify()\n },\n subscribe(listener): () => void {\n listeners.add(listener)\n listener(entries.slice())\n return () => listeners.delete(listener)\n }\n }\n}\n\nfunction resolveInitialFocus(\n target: FocusTrapOptions['initialFocus']\n): HTMLElement | null {\n if (!target) return null\n return typeof target === 'function' ? target() : target\n}\n\nfunction removePortalNode(node: VobsNode, target: Node): void {\n if (isVobsFragment(node)) {\n let current = node.start.nextSibling\n while (current && current !== node.end) {\n const next = current.nextSibling\n target.removeChild(current)\n current = next\n }\n if (node.start.parentNode === target) target.removeChild(node.start)\n if (node.end.parentNode === target) target.removeChild(node.end)\n return\n }\n if (node.parentNode === target) target.removeChild(node)\n}\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'iframe',\n 'object',\n 'embed',\n '[contenteditable]',\n '[tabindex]'\n].join(',')\n","import {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface MenuItem {\n readonly id?: string\n readonly label?: string\n readonly icon?: VobsNode | (() => VobsNode | null | undefined)\n readonly shortcut?: string\n readonly danger?: boolean\n readonly disabled?: boolean\n readonly divider?: boolean\n readonly content?: VuiChildren\n}\n\nexport interface MenuProps extends VuiCommonProps {\n readonly items?: readonly MenuItem[]\n readonly onSelect?: (id: string, event: MouseEvent) => void\n}\n\nexport function Menu(props: MenuProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-menu'])\n bindCommonAttributes(root, props, ['items', 'onSelect'])\n if (!hasProp(props, 'role')) setAttribute(root, 'role', 'menu')\n\n if (hasProp(props, 'items')) {\n insertDynamic(root, null, () => createMenuItems(props))\n }\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport function MenuDivider(props: VuiCommonProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-menu__divider'])\n bindCommonAttributes(root, props)\n setAttribute(root, 'role', 'separator')\n return root\n}\n\nfunction createMenuItems(props: MenuProps): VobsNode {\n const items = readProp<readonly MenuItem[]>(props, 'items', [])\n return createFragment((parent, anchor) => {\n for (const item of items) {\n const node = item.divider === true\n ? createMenuDividerNode(item)\n : createMenuItemNode(item, props)\n insertBefore(parent, node, anchor)\n }\n })\n}\n\nfunction createMenuDividerNode(item: MenuItem): VobsNode {\n const divider = createElement('div')\n setAttribute(divider, 'class', 'vui-menu__divider')\n setAttribute(divider, 'role', 'separator')\n setOptionalAttribute(divider, 'data-menu-item-id', item.id)\n return divider\n}\n\nfunction createMenuItemNode(item: MenuItem, props: MenuProps): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', `vui-menu__item${item.danger === true ? ' vui-menu__item--danger' : ''}`)\n setAttribute(button, 'type', 'button')\n setAttribute(button, 'role', 'menuitem')\n setOptionalAttribute(button, 'data-menu-item-id', item.id)\n if (item.disabled === true) {\n setProperty(button, 'disabled', true)\n setAttribute(button, 'aria-disabled', 'true')\n }\n\n if (item.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-menu__icon')\n mountSlot(icon, item, 'icon')\n insertBefore(button, icon, null)\n }\n\n if (item.label !== undefined) {\n const label = createElement('span')\n setAttribute(label, 'class', 'vui-menu__label')\n insertBefore(label, createText(item.label), null)\n insertBefore(button, label, null)\n } else if (item.content !== undefined) {\n mountSlot(button, item, 'content')\n }\n\n if (item.shortcut !== undefined) {\n const shortcut = createElement('span')\n setAttribute(shortcut, 'class', 'vui-menu__shortcut')\n insertBefore(shortcut, createText(item.shortcut), null)\n insertBefore(button, shortcut, null)\n }\n\n addEventListener(button, 'click', event => {\n if (item.disabled === true || item.id === undefined) return\n const handler = readProp<unknown>(props, 'onSelect', undefined)\n if (typeof handler === 'function') (handler as MenuProps['onSelect'])!(item.id, event as MouseEvent)\n })\n return button\n}\n","import { state } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface NavItem {\n readonly id: string\n readonly label: string\n readonly icon?: VobsNode | (() => VobsNode | null | undefined)\n readonly badge?: VuiChildren\n readonly href?: string\n readonly target?: string\n readonly rel?: string\n readonly active?: boolean\n readonly disabled?: boolean\n}\n\nexport interface NavGroup {\n readonly id?: string\n readonly title?: string\n readonly items: readonly NavItem[]\n}\n\nexport interface NavListProps extends VuiCommonProps {\n readonly groups?: readonly NavGroup[]\n readonly value?: string\n readonly defaultValue?: string\n readonly onChange?: (id: string, event: MouseEvent) => void\n}\n\nexport function NavList(props: NavListProps = {}): VobsNode {\n const root = createElement('nav')\n const internalValue = state<string | undefined>(undefined)\n\n bindClassList(root, props, () => ['vui-navlist'])\n bindCommonAttributes(root, props, ['groups', 'value', 'defaultValue', 'onChange'])\n insertDynamic(root, null, () => createNavGroups(props, internalValue))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createNavGroups(\n props: NavListProps,\n internalValue: { value: string | undefined }\n): VobsNode {\n const groups = readProp<readonly NavGroup[]>(props, 'groups', [])\n const selected = activeId(props, groups, internalValue)\n return createFragment((parent, anchor) => {\n for (const group of groups) {\n const groupRoot = createElement('div')\n setAttribute(groupRoot, 'class', 'vui-navlist__group')\n setOptionalAttribute(groupRoot, 'data-nav-group-id', group.id)\n\n if (group.title !== undefined) {\n const title = createElement('div')\n setAttribute(title, 'class', 'vui-navlist__group-title')\n insertBefore(title, createText(group.title), null)\n insertBefore(groupRoot, title, null)\n }\n\n for (const item of group.items) {\n insertBefore(groupRoot, createNavItem(item, props, selected, internalValue), null)\n }\n insertBefore(parent, groupRoot, anchor)\n }\n })\n}\n\nfunction createNavItem(\n item: NavItem,\n props: NavListProps,\n selected: string | undefined,\n internalValue: { value: string | undefined }\n): VobsNode {\n const active = item.id === selected\n const element = createElement(item.href === undefined ? 'button' : 'a')\n setAttribute(element, 'class', `vui-navlist__item${active ? ' is-active' : ''}`)\n if (item.href !== undefined) setAttribute(element, 'role', 'link')\n setOptionalAttribute(element, 'data-nav-id', item.id)\n if (item.href !== undefined) {\n setAttribute(element, 'href', item.href)\n setOptionalAttribute(element, 'target', item.target)\n setOptionalAttribute(element, 'rel', item.rel)\n } else {\n setAttribute(element, 'type', 'button')\n }\n if (active) setAttribute(element, 'aria-current', 'page')\n if (item.disabled === true) {\n setAttribute(element, 'aria-disabled', 'true')\n setProperty(element, 'tabIndex', -1)\n if (item.href === undefined) setProperty(element, 'disabled', true)\n }\n\n if (item.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-navlist__icon')\n mountSlot(icon, item, 'icon')\n insertBefore(element, icon, null)\n }\n\n const label = createElement('span')\n setAttribute(label, 'class', 'vui-navlist__label')\n insertBefore(label, createText(item.label), null)\n insertBefore(element, label, null)\n\n if (item.badge !== undefined) {\n const badge = createElement('span')\n setAttribute(badge, 'class', 'vui-navlist__badge')\n mountSlot(badge, item, 'badge')\n insertBefore(element, badge, null)\n }\n\n addEventListener(element, 'click', event => {\n if (item.disabled === true) {\n event.preventDefault?.()\n return\n }\n if (readProp<string | undefined>(props, 'value', undefined) === undefined) internalValue.value = item.id\n const handler = readProp<unknown>(props, 'onChange', undefined)\n if (typeof handler === 'function') (handler as NavListProps['onChange'])!(item.id, event as MouseEvent)\n })\n return element\n}\n\nfunction activeId(\n props: NavListProps,\n groups: readonly NavGroup[],\n internalValue: { value: string | undefined }\n): string | undefined {\n const controlled = readProp<string | undefined>(props, 'value', undefined)\n if (controlled !== undefined) return controlled\n if (internalValue.value !== undefined) return internalValue.value\n const defaultValue = readProp<string | undefined>(props, 'defaultValue', undefined)\n if (defaultValue !== undefined) return defaultValue\n for (const group of groups) {\n const active = group.items.find(item => item.active === true)\n if (active) return active.id\n }\n return undefined\n}\n","import {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface PaginationProps extends VuiCommonProps {\n readonly page?: number\n readonly pageCount?: number\n readonly siblingCount?: number\n readonly disabled?: boolean\n readonly previousLabel?: string\n readonly nextLabel?: string\n readonly previousIcon?: VuiChildren\n readonly nextIcon?: VuiChildren\n readonly onChange?: (page: number) => void\n}\n\ntype PaginationItem = number | 'ellipsis-left' | 'ellipsis-right'\n\nexport function Pagination(props: PaginationProps = {}): VobsNode {\n const root = createElement('nav')\n bindClassList(root, props, () => ['vui-pagination'])\n bindCommonAttributes(root, props, [\n 'page',\n 'pageCount',\n 'siblingCount',\n 'disabled',\n 'previousLabel',\n 'nextLabel',\n 'previousIcon',\n 'nextIcon',\n 'onChange'\n ])\n if (!hasProp(props, 'aria-label')) setAttribute(root, 'aria-label', 'Pagination')\n insertDynamic(root, null, () => createPaginationItems(props))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createPaginationItems(props: PaginationProps): VobsNode {\n const pageCount = Math.max(0, Math.floor(readProp(props, 'pageCount', 0)))\n const page = clampPage(readProp(props, 'page', 1), pageCount)\n const siblingCount = Math.max(0, Math.floor(readProp(props, 'siblingCount', 1)))\n const disabled = readProp(props, 'disabled', false)\n const items = pageCount === 0 ? [] : buildPaginationItems(page, pageCount, siblingCount)\n\n return createFragment((parent, anchor) => {\n insertBefore(parent, createPaginationControl(props, 'previous', page <= 1 || disabled), anchor)\n for (const item of items) {\n if (typeof item === 'number') {\n insertBefore(parent, createPageButton(item, item === page, disabled, props), anchor)\n } else {\n insertBefore(parent, createEllipsis(item), anchor)\n }\n }\n insertBefore(parent, createPaginationControl(props, 'next', page >= pageCount || pageCount === 0 || disabled), anchor)\n })\n}\n\nfunction createPaginationControl(\n props: PaginationProps,\n direction: 'previous' | 'next',\n disabled: boolean\n): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', 'vui-pagination__item')\n setAttribute(button, 'type', 'button')\n setProperty(button, 'disabled', disabled)\n setOptionalAttribute(button, 'aria-label', direction === 'previous'\n ? readProp(props, 'previousLabel', 'Previous')\n : readProp(props, 'nextLabel', 'Next'))\n if (disabled) setAttribute(button, 'aria-disabled', 'true')\n\n const icon = direction === 'previous'\n ? readProp<VuiChildren | undefined>(props, 'previousIcon', undefined)\n : readProp<VuiChildren | undefined>(props, 'nextIcon', undefined)\n const fallback = direction === 'previous' ? '<' : '>'\n const node = icon === undefined ? createText(fallback) : resolveSlot(icon)\n if (node) insertBefore(button, node, null)\n\n addEventListener(button, 'click', () => {\n if (disabled) return\n const current = readProp(props, 'page', 1)\n const nextPage = direction === 'previous' ? current - 1 : current + 1\n emitPageChange(props, clampPage(nextPage, readProp(props, 'pageCount', 0)))\n })\n return button\n}\n\nfunction createPageButton(\n page: number,\n active: boolean,\n disabled: boolean,\n props: PaginationProps\n): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', `vui-pagination__item${active ? ' is-active' : ''}`)\n setAttribute(button, 'type', 'button')\n setProperty(button, 'disabled', disabled)\n setAttribute(button, 'aria-label', `Page ${page}`)\n if (active) setAttribute(button, 'aria-current', 'page')\n if (disabled) setAttribute(button, 'aria-disabled', 'true')\n insertBefore(button, createText(String(page)), null)\n addEventListener(button, 'click', () => {\n if (!disabled) emitPageChange(props, page)\n })\n return button\n}\n\nfunction createEllipsis(item: 'ellipsis-left' | 'ellipsis-right'): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', 'vui-pagination__item')\n setAttribute(button, 'type', 'button')\n setProperty(button, 'disabled', true)\n setAttribute(button, 'aria-label', item === 'ellipsis-left' ? 'Previous pages' : 'Next pages')\n setAttribute(button, 'aria-hidden', 'true')\n insertBefore(button, createText('...'), null)\n return button\n}\n\nfunction emitPageChange(props: PaginationProps, page: number): void {\n const handler = readProp<unknown>(props, 'onChange', undefined)\n if (typeof handler === 'function') (handler as PaginationProps['onChange'])!(page)\n}\n\nfunction clampPage(page: number, pageCount: number): number {\n if (pageCount <= 0) return 1\n return Math.min(pageCount, Math.max(1, Math.floor(Number.isFinite(page) ? page : 1)))\n}\n\nfunction buildPaginationItems(page: number, pageCount: number, siblingCount: number): PaginationItem[] {\n const totalVisible = siblingCount * 2 + 5\n if (pageCount <= totalVisible) {\n return Array.from({ length: pageCount }, (_, index) => index + 1)\n }\n\n const left = Math.max(page - siblingCount, 2)\n const right = Math.min(page + siblingCount, pageCount - 1)\n const items: PaginationItem[] = [1]\n\n if (left > 2) items.push('ellipsis-left')\n for (let value = left; value <= right; value++) items.push(value)\n if (right < pageCount - 1) items.push('ellipsis-right')\n items.push(pageCount)\n return items\n}\n","import {\n createElement,\n createText,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n readProp,\n resolveSlot\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport type AvatarSize = 'sm' | 'md' | 'lg'\nexport type AvatarShape = 'circle' | 'square'\n\nexport interface AvatarProps extends VuiCommonProps {\n readonly src?: string\n readonly alt?: string\n readonly size?: AvatarSize\n readonly shape?: AvatarShape\n readonly accent?: boolean\n readonly fallback?: VuiChildren\n}\n\nexport function Avatar(props: AvatarProps = {}): VobsNode {\n const root = createElement('span')\n bindClassList(root, props, () => [\n 'vui-avatar',\n readProp<AvatarSize>(props, 'size', 'md') === 'sm' ? 'vui-avatar--sm' : undefined,\n readProp<AvatarSize>(props, 'size', 'md') === 'lg' ? 'vui-avatar--lg' : undefined,\n readProp<AvatarShape>(props, 'shape', 'circle') === 'square' ? 'vui-avatar--square' : undefined,\n readProp(props, 'accent', false) ? 'vui-avatar--accent' : undefined\n ])\n bindCommonAttributes(root, props, ['src', 'alt', 'size', 'shape', 'accent', 'fallback'])\n bindUserStyle(root, props)\n insertDynamic(root, null, () => createAvatarContent(props))\n return root\n}\n\nfunction createAvatarContent(props: AvatarProps): VobsNode | null {\n const src = readProp<string | undefined>(props, 'src', undefined)\n if (src) {\n const image = createElement('img')\n setAttribute(image, 'class', 'vui-avatar__image')\n setAttribute(image, 'src', src)\n setAttribute(image, 'alt', readProp<string>(props, 'alt', ''))\n return image\n }\n\n if (hasProp(props, 'fallback')) {\n const fallback = resolveSlot(Reflect.get(props, 'fallback'))\n if (fallback) return fallback\n }\n if (hasProp(props, 'children')) {\n const children = resolveSlot(Reflect.get(props, 'children'))\n if (children) return children\n }\n return createText('')\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createText,\n insertBefore,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface PageHeaderProps extends VuiCommonProps {\n readonly title?: string\n readonly subtitle?: string\n readonly actions?: VuiChildren\n}\n\nexport function PageHeader(props: PageHeaderProps = {}): VobsNode {\n const root = createElement('header')\n const main = createElement('div')\n bindClassList(root, props, () => ['vui-pagehead'])\n bindCommonAttributes(root, props, ['title', 'subtitle', 'actions'])\n bindUserStyle(root, props)\n\n setAttribute(main, 'class', 'vui-pagehead__main')\n if (hasProp(props, 'title')) {\n const title = createElement('h1')\n const text = createText('')\n setAttribute(title, 'class', 'vui-pagehead__title')\n bindTextContent(text, () => readProp(props, 'title', ''))\n insertBefore(title, text, null)\n insertBefore(main, title, null)\n }\n if (hasProp(props, 'subtitle')) {\n const subtitle = createElement('p')\n const text = createText('')\n setAttribute(subtitle, 'class', 'vui-pagehead__subtitle')\n bindTextContent(text, () => readProp(props, 'subtitle', ''))\n insertBefore(subtitle, text, null)\n insertBefore(main, subtitle, null)\n }\n if (hasProp(props, 'children')) mountSlot(main, props, 'children')\n insertBefore(root, main, null)\n\n if (hasProp(props, 'actions')) {\n const actions = createElement('div')\n setAttribute(actions, 'class', 'vui-pagehead__actions')\n mountSlot(actions, props, 'actions')\n insertBefore(root, actions, null)\n }\n return root\n}\n\nexport interface PageHeaderActionProps extends VuiCommonProps {\n readonly href?: string\n readonly primary?: boolean\n readonly disabled?: boolean\n readonly onClick?: (event: MouseEvent) => void\n}\n\nexport function PageHeaderAction(props: PageHeaderActionProps = {}): VobsNode {\n const root = createElement(props.href === undefined ? 'button' : 'a')\n bindClassList(root, props, () => [\n 'vui-pagehead__btn',\n readProp(props, 'primary', false) ? 'is-primary' : undefined\n ])\n bindCommonAttributes(root, props, ['href', 'primary', 'disabled', 'onClick'])\n if (props.href === undefined) setAttribute(root, 'type', 'button')\n else setAttribute(root, 'href', props.href)\n effect(() => {\n const disabled = readProp(props, 'disabled', false)\n setOptionalAttribute(root, 'aria-disabled', disabled ? 'true' : undefined)\n if (props.href === undefined) setProperty(root, 'disabled', disabled)\n })\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n\n addEventListener(root, 'click', event => {\n if (readProp(props, 'disabled', false)) {\n event.preventDefault?.()\n return\n }\n const handler = readProp<unknown>(props, 'onClick', undefined)\n if (typeof handler === 'function') (handler as PageHeaderActionProps['onClick'])!(event as MouseEvent)\n })\n return root\n}\n","import {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport type TableAlign = 'start' | 'center' | 'end'\n\nexport interface TableColumn<Row = Record<string, unknown>> {\n readonly id: string\n readonly label: string\n readonly key?: keyof Row\n readonly render?: (row: Row, index: number) => VuiChildren\n readonly align?: TableAlign\n}\n\nexport interface TableProps<Row = Record<string, unknown>> extends VuiCommonProps {\n readonly columns?: readonly TableColumn<Row>[]\n readonly rows?: readonly Row[]\n readonly caption?: string\n readonly empty?: VuiChildren\n readonly rowKey?: (row: Row, index: number) => unknown\n readonly onRowClick?: (row: Row, index: number) => void\n}\n\nexport function Table<Row = Record<string, unknown>>(props?: TableProps<Row>): VobsNode\nexport function Table(props?: TableProps<any>): VobsNode\nexport function Table<Row = Record<string, unknown>>(props: TableProps<Row> = {}): VobsNode {\n const root = createElement('table')\n const head = createElement('thead')\n const body = createElement('tbody')\n\n bindClassList(root, props, () => ['vui-table'])\n bindCommonAttributes(root, props, ['columns', 'rows', 'caption', 'empty', 'rowKey', 'onRowClick'])\n bindUserStyle(root, props)\n\n if (hasProp(props, 'caption')) {\n const caption = createElement('caption')\n const text = createText('')\n bindTextContent(text, () => readProp(props, 'caption', ''))\n insertBefore(caption, text, null)\n insertBefore(root, caption, null)\n }\n insertDynamic(head, null, () => createTableHead(props))\n insertDynamic(body, null, () => createTableBody(props))\n insertBefore(root, head, null)\n insertBefore(root, body, null)\n return root\n}\n\nexport interface TablePanelProps<Row = Record<string, unknown>> extends VuiCommonProps {\n readonly columns?: readonly TableColumn<Row>[]\n readonly rows?: readonly Row[]\n readonly empty?: VuiChildren\n readonly footer?: VuiChildren\n readonly rowKey?: (row: Row, index: number) => unknown\n readonly onRowClick?: (row: Row, index: number) => void\n}\n\nexport function TablePanel<Row = Record<string, unknown>>(props?: TablePanelProps<Row>): VobsNode\nexport function TablePanel(props?: TablePanelProps<any>): VobsNode\nexport function TablePanel<Row = Record<string, unknown>>(props: TablePanelProps<Row> = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-tablepanel'])\n bindCommonAttributes(root, props, ['columns', 'rows', 'empty', 'footer', 'rowKey', 'onRowClick'])\n bindUserStyle(root, props)\n\n const table = Table<Row>({\n get columns() { return readProp<readonly TableColumn<Row>[]>(props, 'columns', []) },\n get rows() { return readProp<readonly Row[]>(props, 'rows', []) },\n get empty() { return readProp<VuiChildren | undefined>(props, 'empty', undefined) },\n get rowKey() { return readProp<TablePanelProps<Row>['rowKey']>(props, 'rowKey', undefined) },\n get onRowClick() { return readProp<TablePanelProps<Row>['onRowClick']>(props, 'onRowClick', undefined) }\n })\n insertBefore(root, table, null)\n\n if (hasProp(props, 'footer')) {\n const footer = createElement('div')\n setAttribute(footer, 'class', 'vui-tablepanel__foot')\n mountSlot(footer, props, 'footer')\n insertBefore(root, footer, null)\n }\n return root\n}\n\nfunction createTableHead<Row>(props: TableProps<Row>): VobsNode {\n const columns = readProp<readonly TableColumn<Row>[]>(props, 'columns', [])\n return createFragment((parent, anchor) => {\n const row = createElement('tr')\n for (const column of columns) {\n const cell = createElement('th')\n setAttribute(cell, 'scope', 'col')\n setAttribute(cell, 'data-column-id', column.id)\n applyAlignment(cell, column.align)\n insertBefore(cell, createText(column.label), null)\n insertBefore(row, cell, null)\n }\n insertBefore(parent, row, anchor)\n })\n}\n\nfunction createTableBody<Row>(props: TableProps<Row>): VobsNode {\n const columns = readProp<readonly TableColumn<Row>[]>(props, 'columns', [])\n const rows = readProp<readonly Row[]>(props, 'rows', [])\n if (rows.length === 0) return createEmptyRow(props, columns.length)\n\n return createFragment((parent, anchor) => {\n for (let index = 0; index < rows.length; index++) {\n insertBefore(parent, createTableRow(rows[index], index, columns, props), anchor)\n }\n })\n}\n\nfunction createTableRow<Row>(\n row: Row,\n index: number,\n columns: readonly TableColumn<Row>[],\n props: TableProps<Row>\n): VobsNode {\n const tableRow = createElement('tr')\n const rowKey = readProp<TableProps<Row>['rowKey']>(props, 'rowKey', undefined)\n if (rowKey) setOptionalAttribute(tableRow, 'data-row-key', rowKey(row, index))\n\n for (const column of columns) {\n const cell = createElement('td')\n setAttribute(cell, 'data-column-id', column.id)\n applyAlignment(cell, column.align)\n insertDynamic(cell, null, () => {\n const value = column.render\n ? column.render(row, index)\n : column.key === undefined\n ? undefined\n : readRowValue(row, column.key)\n return resolveSlot(value)\n })\n insertBefore(tableRow, cell, null)\n }\n\n const onRowClick = readProp<TableProps<Row>['onRowClick']>(props, 'onRowClick', undefined)\n if (onRowClick) {\n setProperty(tableRow, 'tabIndex', 0)\n setAttribute(tableRow, 'data-clickable', 'true')\n addEventListener(tableRow, 'click', () => onRowClick(row, index))\n }\n return tableRow\n}\n\nfunction createEmptyRow<Row>(props: TableProps<Row>, columnCount: number): VobsNode {\n const row = createElement('tr')\n const cell = createElement('td')\n setAttribute(cell, 'colspan', String(Math.max(1, columnCount)))\n if (hasProp(props, 'empty')) {\n insertDynamic(cell, null, () => resolveSlot(Reflect.get(props, 'empty')))\n } else {\n insertBefore(cell, createText('No data'), null)\n }\n insertBefore(row, cell, null)\n return row\n}\n\nfunction applyAlignment(cell: Element, align: TableAlign | undefined): void {\n if (align === 'end') {\n setAttribute(cell, 'class', 'num')\n setAttribute(cell, 'data-align', 'end')\n } else if (align === 'center') {\n setAttribute(cell, 'data-align', 'center')\n }\n}\n\nfunction readRowValue<Row>(row: Row, key: keyof Row): unknown {\n if (row === null || row === undefined) return undefined\n return Reflect.get(row as object, key)\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n createElement,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport type StatDeltaDirection = 'up' | 'down'\n\nexport interface StatCardProps extends VuiCommonProps {\n readonly label?: string\n readonly value?: VuiChildren\n readonly delta?: VuiChildren\n readonly deltaDirection?: StatDeltaDirection\n readonly deltaIcon?: VuiChildren\n readonly deltaCaption?: VuiChildren\n}\n\nexport function StatCard(props: StatCardProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-statcard'])\n bindCommonAttributes(root, props, [\n 'label',\n 'value',\n 'delta',\n 'deltaDirection',\n 'deltaIcon',\n 'deltaCaption'\n ])\n bindUserStyle(root, props)\n\n if (hasProp(props, 'label')) {\n const label = createElement('span')\n const text = createText('')\n setAttribute(label, 'class', 'vui-statcard__label')\n bindTextContent(text, () => readProp(props, 'label', ''))\n insertBefore(label, text, null)\n insertBefore(root, label, null)\n }\n\n if (hasProp(props, 'value')) {\n const value = createElement('span')\n setAttribute(value, 'class', 'vui-statcard__value')\n insertDynamic(value, null, () => resolveSlot(Reflect.get(props, 'value')))\n insertBefore(root, value, null)\n }\n\n if (hasProp(props, 'delta') || hasProp(props, 'deltaIcon') || hasProp(props, 'deltaCaption')) {\n const delta = createElement('span')\n effect(() => {\n const direction = readProp<StatDeltaDirection | undefined>(props, 'deltaDirection', undefined)\n setAttribute(delta, 'class', `vui-statcard__delta${direction ? ` is-${direction}` : ''}`)\n })\n if (hasProp(props, 'deltaIcon')) mountSlot(delta, props, 'deltaIcon')\n if (hasProp(props, 'delta')) mountSlot(delta, props, 'delta')\n if (hasProp(props, 'deltaCaption')) {\n const caption = createElement('span')\n setAttribute(caption, 'class', 'vui-statcard__caption')\n mountSlot(caption, props, 'deltaCaption')\n insertBefore(delta, caption, null)\n }\n insertBefore(root, delta, null)\n }\n\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport interface StatCardGridProps extends VuiCommonProps {}\n\nexport function StatCardGrid(props: StatCardGridProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-statcard__grid'])\n bindCommonAttributes(root, props)\n bindUserStyle(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n","import {\n createElement,\n createFragment,\n insertBefore,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface KbdProps extends VuiCommonProps {}\n\nexport function Kbd(props: KbdProps = {}): VobsNode {\n const root = createElement('kbd')\n bindClassList(root, props, () => ['vui-kbd'])\n bindCommonAttributes(root, props)\n bindUserStyle(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport interface KbdComboProps extends VuiCommonProps {\n readonly keys?: readonly VuiChildren[]\n readonly separator?: VuiChildren\n}\n\nexport function KbdCombo(props: KbdComboProps = {}): VobsNode {\n const root = createElement('span')\n bindClassList(root, props, () => ['vui-kbd__combo'])\n bindCommonAttributes(root, props, ['keys', 'separator'])\n bindUserStyle(root, props)\n if (hasProp(props, 'keys')) insertDynamic(root, null, () => createComboKeys(props))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nexport interface KbdRowProps extends VuiCommonProps {}\n\nexport function KbdRow(props: KbdRowProps = {}): VobsNode {\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-kbd__row'])\n bindCommonAttributes(root, props)\n bindUserStyle(root, props)\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createComboKeys(props: KbdComboProps): VobsNode {\n const keys = readProp<readonly VuiChildren[]>(props, 'keys', [])\n const separator = readProp<VuiChildren>(props, 'separator', '+')\n return createFragment((parent, anchor) => {\n for (let index = 0; index < keys.length; index++) {\n if (index > 0) {\n const plus = createElement('span')\n setAttribute(plus, 'class', 'vui-kbd__plus')\n const separatorNode = resolveSlot(separator)\n if (separatorNode) insertBefore(plus, separatorNode, null)\n insertBefore(parent, plus, anchor)\n }\n insertBefore(parent, Kbd({ children: keys[index] }), anchor)\n }\n })\n}\n","import { state } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface ActivityRailItem {\n readonly id?: string\n readonly label?: string\n readonly icon?: VuiChildren\n readonly divider?: boolean\n readonly spacer?: boolean\n readonly disabled?: boolean\n}\n\nexport interface ActivityRailProps extends VuiCommonProps {\n readonly items?: readonly ActivityRailItem[]\n readonly value?: string\n readonly defaultValue?: string\n readonly onChange?: (id: string, event: MouseEvent) => void\n}\n\nexport function ActivityRail(props: ActivityRailProps = {}): VobsNode {\n const root = createElement('nav')\n const internalValue = state<string | undefined>(undefined)\n bindClassList(root, props, () => ['vui-activityrail'])\n bindCommonAttributes(root, props, ['items', 'value', 'defaultValue', 'onChange'])\n bindUserStyle(root, props)\n if (!hasProp(props, 'aria-label')) setAttribute(root, 'aria-label', 'Activity')\n if (hasProp(props, 'items')) insertDynamic(root, null, () => createActivityItems(props, internalValue))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createActivityItems(\n props: ActivityRailProps,\n internalValue: { value: string | undefined }\n): VobsNode {\n const items = readProp<readonly ActivityRailItem[]>(props, 'items', [])\n const selected = activeId(props, items, internalValue)\n return createFragment((parent, anchor) => {\n for (const item of items) {\n if (item.divider === true) {\n const divider = createElement('div')\n setAttribute(divider, 'class', 'vui-activityrail__divider')\n setAttribute(divider, 'role', 'separator')\n insertBefore(parent, divider, anchor)\n continue\n }\n if (item.spacer === true) {\n const spacer = createElement('span')\n setAttribute(spacer, 'class', 'vui-activityrail__spacer')\n insertBefore(parent, spacer, anchor)\n continue\n }\n insertBefore(parent, createActivityButton(item, props, selected, internalValue), anchor)\n }\n })\n}\n\nfunction createActivityButton(\n item: ActivityRailItem,\n props: ActivityRailProps,\n selected: string | undefined,\n internalValue: { value: string | undefined }\n): VobsNode {\n const button = createElement('button')\n const active = item.id !== undefined && item.id === selected\n setAttribute(button, 'class', `vui-activityrail__btn${active ? ' is-active' : ''}`)\n setAttribute(button, 'type', 'button')\n setOptionalAttribute(button, 'aria-label', item.label)\n setOptionalAttribute(button, 'title', item.label)\n setAttribute(button, 'aria-pressed', active ? 'true' : 'false')\n if (item.disabled === true) {\n setProperty(button, 'disabled', true)\n setAttribute(button, 'aria-disabled', 'true')\n }\n\n if (item.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-activityrail__icon')\n mountSlot(icon, item, 'icon')\n insertBefore(button, icon, null)\n } else if (item.label !== undefined) {\n insertBefore(button, createText(item.label), null)\n }\n\n addEventListener(button, 'click', event => {\n if (item.disabled === true || item.id === undefined) return\n if (readProp<string | undefined>(props, 'value', undefined) === undefined) internalValue.value = item.id\n const handler = readProp<unknown>(props, 'onChange', undefined)\n if (typeof handler === 'function') (handler as ActivityRailProps['onChange'])!(item.id, event as MouseEvent)\n })\n return button\n}\n\nfunction activeId(\n props: ActivityRailProps,\n items: readonly ActivityRailItem[],\n internalValue: { value: string | undefined }\n): string | undefined {\n const controlled = readProp<string | undefined>(props, 'value', undefined)\n if (controlled !== undefined) return controlled\n if (internalValue.value !== undefined) return internalValue.value\n const defaultValue = readProp<string | undefined>(props, 'defaultValue', undefined)\n if (defaultValue !== undefined) return defaultValue\n return items.find(item => item.id !== undefined)?.id\n}\n","import { state } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport type FileTreeItemKind = 'file' | 'folder'\n\nexport interface FileTreeItem {\n readonly id: string\n readonly label: string\n readonly kind?: FileTreeItemKind\n readonly icon?: VuiChildren\n readonly chevron?: VuiChildren\n readonly children?: readonly FileTreeItem[]\n readonly expanded?: boolean\n readonly active?: boolean\n readonly disabled?: boolean\n}\n\nexport interface FileTreeProps extends VuiCommonProps {\n readonly items?: readonly FileTreeItem[]\n readonly value?: string\n readonly defaultValue?: string\n readonly expanded?: readonly string[]\n readonly defaultExpanded?: readonly string[]\n readonly onSelect?: (id: string, event: MouseEvent) => void\n readonly onToggle?: (id: string, expanded: boolean, event: MouseEvent) => void\n}\n\ninterface VisibleFileTreeItem {\n readonly item: FileTreeItem\n readonly depth: number\n readonly expanded: boolean\n}\n\nexport function FileTree(props: FileTreeProps = {}): VobsNode {\n const items = readProp<readonly FileTreeItem[]>(props, 'items', [])\n const internalExpanded = state<readonly string[]>(initialExpanded(props, items))\n const root = createElement('div')\n bindClassList(root, props, () => ['vui-filetree'])\n bindCommonAttributes(root, props, [\n 'items',\n 'value',\n 'defaultValue',\n 'expanded',\n 'defaultExpanded',\n 'onSelect',\n 'onToggle'\n ])\n bindUserStyle(root, props)\n if (!hasProp(props, 'role')) setAttribute(root, 'role', 'tree')\n if (!hasProp(props, 'aria-label')) setAttribute(root, 'aria-label', 'Files')\n insertDynamic(root, null, () => createTreeRows(props, internalExpanded))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createTreeRows(\n props: FileTreeProps,\n internalExpanded: { value: readonly string[] }\n): VobsNode {\n const items = readProp<readonly FileTreeItem[]>(props, 'items', [])\n const expanded = new Set(readProp<readonly string[] | undefined>(props, 'expanded', undefined) ?? internalExpanded.value)\n const visible = flattenVisible(items, expanded)\n const selected = activeId(props, items)\n return createFragment((parent, anchor) => {\n for (const entry of visible) {\n insertBefore(parent, createTreeRow(entry, props, internalExpanded, selected, expanded), anchor)\n }\n })\n}\n\nfunction createTreeRow(\n entry: VisibleFileTreeItem,\n props: FileTreeProps,\n internalExpanded: { value: readonly string[] },\n selected: string | undefined,\n expanded: ReadonlySet<string>\n): VobsNode {\n const { item } = entry\n const isFolder = item.kind === 'folder'\n const hasChildren = isFolder && Boolean(item.children?.length)\n const active = item.id === selected\n const row = createElement('div')\n setAttribute(row, 'class', `vui-filetree__row${active ? ' is-active' : ''}`)\n setAttribute(row, 'role', 'treeitem')\n setAttribute(row, 'data-depth', String(entry.depth))\n setAttribute(row, 'data-file-id', item.id)\n setProperty(row, 'tabIndex', item.disabled === true ? -1 : 0)\n if (active) setAttribute(row, 'aria-selected', 'true')\n if (isFolder) setAttribute(row, 'aria-expanded', entry.expanded ? 'true' : 'false')\n if (item.disabled === true) setAttribute(row, 'aria-disabled', 'true')\n\n const chevron = createElement('span')\n setAttribute(chevron, 'class', `vui-filetree__chevron${hasChildren ? '' : ' vui-filetree__chevron--leaf'}`)\n if (hasChildren) {\n if (item.chevron !== undefined) mountSlot(chevron, item, 'chevron')\n else insertBefore(chevron, createText(entry.expanded ? 'v' : '>'), null)\n }\n insertBefore(row, chevron, null)\n\n if (item.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, `class`, `vui-filetree__icon ${fileIconClass(item)}`.trim())\n mountSlot(icon, item, 'icon')\n insertBefore(row, icon, null)\n }\n\n const label = createElement('span')\n setAttribute(label, 'class', 'vui-filetree__label')\n setOptionalAttribute(label, 'title', item.label)\n insertBefore(label, createText(item.label), null)\n insertBefore(row, label, null)\n\n addEventListener(row, 'click', event => {\n if (item.disabled === true) return\n if (isFolder && hasChildren) {\n const nextExpanded = !expanded.has(item.id)\n if (readProp<readonly string[] | undefined>(props, 'expanded', undefined) === undefined) {\n const next = new Set(internalExpanded.value)\n if (nextExpanded) next.add(item.id)\n else next.delete(item.id)\n internalExpanded.value = [...next]\n }\n const onToggle = readProp<unknown>(props, 'onToggle', undefined)\n if (typeof onToggle === 'function') {\n (onToggle as FileTreeProps['onToggle'])!(item.id, nextExpanded, event as MouseEvent)\n }\n }\n const onSelect = readProp<unknown>(props, 'onSelect', undefined)\n if (typeof onSelect === 'function') (onSelect as FileTreeProps['onSelect'])!(item.id, event as MouseEvent)\n })\n addEventListener(row, 'keydown', event => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key !== 'Enter' && keyboardEvent.key !== ' ') return\n keyboardEvent.preventDefault?.()\n row.dispatchEvent?.(new MouseEvent('click', { bubbles: true }))\n })\n return row\n}\n\nfunction flattenVisible(\n items: readonly FileTreeItem[],\n expanded: ReadonlySet<string>,\n depth = 0\n): VisibleFileTreeItem[] {\n const visible: VisibleFileTreeItem[] = []\n for (const item of items) {\n const folder = item.kind === 'folder'\n const open = folder && expanded.has(item.id)\n visible.push({ item, depth, expanded: open })\n if (open && item.children) visible.push(...flattenVisible(item.children, expanded, depth + 1))\n }\n return visible\n}\n\nfunction initialExpanded(props: FileTreeProps, items: readonly FileTreeItem[]): readonly string[] {\n const ids = new Set(readProp<readonly string[]>(props, 'defaultExpanded', []))\n collectExpanded(items, ids)\n return [...ids]\n}\n\nfunction collectExpanded(items: readonly FileTreeItem[], ids: Set<string>): void {\n for (const item of items) {\n if (item.expanded === true) ids.add(item.id)\n if (item.children) collectExpanded(item.children, ids)\n }\n}\n\nfunction activeId(props: FileTreeProps, items: readonly FileTreeItem[]): string | undefined {\n const controlled = readProp<string | undefined>(props, 'value', undefined)\n if (controlled !== undefined) return controlled\n const defaultValue = readProp<string | undefined>(props, 'defaultValue', undefined)\n if (defaultValue !== undefined) return defaultValue\n return findActive(items)\n}\n\nfunction findActive(items: readonly FileTreeItem[]): string | undefined {\n for (const item of items) {\n if (item.active === true) return item.id\n if (item.children) {\n const nested = findActive(item.children)\n if (nested !== undefined) return nested\n }\n }\n return undefined\n}\n\nfunction fileIconClass(item: FileTreeItem): string {\n if (item.kind === 'folder') return 'vui-filetree__icon--folder'\n const extension = item.label.slice(item.label.lastIndexOf('.') + 1).toLowerCase()\n if (extension === 'ts' || extension === 'tsx') return 'vui-filetree__icon--ts'\n if (extension === 'css' || extension === 'scss') return 'vui-filetree__icon--css'\n if (extension === 'json') return 'vui-filetree__icon--json'\n return ''\n}\n","import { state } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n resolveSlot,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface EditorTabItem {\n readonly id: string\n readonly label: string\n readonly icon?: VuiChildren\n readonly closeIcon?: VuiChildren\n readonly closeable?: boolean\n readonly disabled?: boolean\n}\n\nexport interface EditorTabsProps extends VuiCommonProps {\n readonly tabs?: readonly EditorTabItem[]\n readonly value?: string\n readonly defaultValue?: string\n readonly closeIcon?: VuiChildren\n readonly actions?: VuiChildren\n readonly onChange?: (id: string, event: MouseEvent | KeyboardEvent) => void\n readonly onClose?: (id: string, event: MouseEvent) => void\n}\n\nexport function EditorTabs(props: EditorTabsProps = {}): VobsNode {\n const root = createElement('div')\n const internalValue = state<string | undefined>(undefined)\n bindClassList(root, props, () => ['vui-editortabs'])\n bindCommonAttributes(root, props, [\n 'tabs',\n 'value',\n 'defaultValue',\n 'closeIcon',\n 'actions',\n 'onChange',\n 'onClose'\n ])\n bindUserStyle(root, props)\n insertDynamic(root, null, () => createEditorTabs(props, internalValue))\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction createEditorTabs(\n props: EditorTabsProps,\n internalValue: { value: string | undefined }\n): VobsNode {\n const tabs = readProp<readonly EditorTabItem[]>(props, 'tabs', [])\n const selected = activeId(props, tabs, internalValue)\n return createFragment((parent, anchor) => {\n for (const tab of tabs) {\n insertBefore(parent, createEditorTab(tab, tabs, selected, props, internalValue), anchor)\n }\n\n const spacer = createElement('span')\n setAttribute(spacer, 'class', 'vui-editortabs__spacer')\n insertBefore(parent, spacer, anchor)\n\n if (hasProp(props, 'actions')) {\n const actions = createElement('span')\n setAttribute(actions, 'class', 'vui-editortabs__actions')\n mountSlot(actions, props, 'actions')\n insertBefore(parent, actions, anchor)\n }\n })\n}\n\nfunction createEditorTab(\n tab: EditorTabItem,\n tabs: readonly EditorTabItem[],\n selected: string | undefined,\n props: EditorTabsProps,\n internalValue: { value: string | undefined }\n): VobsNode {\n const active = tab.id === selected\n const root = createElement('span')\n setAttribute(root, 'class', `vui-editortab${active ? ' is-active' : ''}`)\n setAttribute(root, 'role', 'tab')\n setAttribute(root, 'aria-selected', active ? 'true' : 'false')\n setAttribute(root, 'tabindex', active ? '0' : '-1')\n setOptionalAttribute(root, 'data-editor-tab-id', tab.id)\n if (tab.disabled === true) setAttribute(root, 'aria-disabled', 'true')\n\n if (tab.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'ic')\n mountSlot(icon, tab, 'icon')\n insertBefore(root, icon, null)\n }\n const label = createElement('span')\n setAttribute(label, 'class', 'vui-editortab__label')\n insertBefore(label, createText(tab.label), null)\n insertBefore(root, label, null)\n\n if (tab.closeable === true) {\n const close = createElement('button')\n setAttribute(close, 'class', 'close')\n setAttribute(close, 'type', 'button')\n setAttribute(close, 'aria-label', `Close ${tab.label}`)\n const closeIcon = tab.closeIcon ?? readProp<VuiChildren | undefined>(props, 'closeIcon', undefined)\n const icon = closeIcon === undefined ? createText('x') : resolveSlot(closeIcon)\n if (icon) insertBefore(close, icon, null)\n addEventListener(close, 'click', event => {\n event.stopPropagation?.()\n const handler = readProp<unknown>(props, 'onClose', undefined)\n if (typeof handler === 'function') (handler as EditorTabsProps['onClose'])!(tab.id, event as MouseEvent)\n })\n insertBefore(root, close, null)\n }\n\n addEventListener(root, 'click', event => {\n if (tab.disabled === true) return\n selectTab(tab.id, props, internalValue, event as MouseEvent)\n })\n addEventListener(root, 'keydown', event => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'Enter' || keyboardEvent.key === ' ') {\n keyboardEvent.preventDefault?.()\n if (tab.disabled !== true) selectTab(tab.id, props, internalValue, keyboardEvent)\n return\n }\n if (keyboardEvent.key !== 'ArrowLeft' && keyboardEvent.key !== 'ArrowRight') return\n keyboardEvent.preventDefault?.()\n const direction = keyboardEvent.key === 'ArrowLeft' ? -1 : 1\n const next = adjacentTab(tabs, tab.id, direction)\n if (next) selectTab(next.id, props, internalValue, keyboardEvent)\n })\n return root\n}\n\nfunction selectTab(\n id: string,\n props: EditorTabsProps,\n internalValue: { value: string | undefined },\n event: MouseEvent | KeyboardEvent\n): void {\n if (readProp<string | undefined>(props, 'value', undefined) === undefined) internalValue.value = id\n const handler = readProp<unknown>(props, 'onChange', undefined)\n if (typeof handler === 'function') (handler as EditorTabsProps['onChange'])!(id, event)\n}\n\nfunction adjacentTab(\n tabs: readonly EditorTabItem[],\n id: string,\n direction: -1 | 1\n): EditorTabItem | undefined {\n const start = tabs.findIndex(tab => tab.id === id)\n if (start < 0) return undefined\n for (let index = start + direction; index >= 0 && index < tabs.length; index += direction) {\n if (tabs[index].disabled !== true) return tabs[index]\n }\n return undefined\n}\n\nfunction activeId(\n props: EditorTabsProps,\n tabs: readonly EditorTabItem[],\n internalValue: { value: string | undefined }\n): string | undefined {\n const controlled = readProp<string | undefined>(props, 'value', undefined)\n if (controlled !== undefined) return controlled\n if (internalValue.value !== undefined) return internalValue.value\n const defaultValue = readProp<string | undefined>(props, 'defaultValue', undefined)\n if (defaultValue !== undefined) return defaultValue\n return tabs.find(tab => tab.disabled !== true)?.id\n}\n","import {\n addEventListener,\n createElement,\n createFragment,\n createText,\n insertBefore,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport interface WorkbenchTitlebarProps extends VuiCommonProps {\n readonly mode?: string\n readonly modeIcon?: VuiChildren\n readonly project?: string\n readonly projectIcon?: VuiChildren\n readonly projectChevron?: VuiChildren\n readonly actions?: VuiChildren\n readonly windowControls?: boolean\n readonly onWindowClose?: (event: MouseEvent) => void\n readonly onWindowMinimize?: (event: MouseEvent) => void\n readonly onWindowMaximize?: (event: MouseEvent) => void\n readonly onProjectClick?: (event: MouseEvent) => void\n}\n\nexport function WorkbenchTitlebar(props: WorkbenchTitlebarProps = {}): VobsNode {\n const root = createElement('header')\n const left = createElement('div')\n const right = createElement('div')\n bindClassList(root, props, () => ['vui-wbtitlebar'])\n bindCommonAttributes(root, props, [\n 'mode',\n 'modeIcon',\n 'project',\n 'projectIcon',\n 'projectChevron',\n 'actions',\n 'windowControls',\n 'onWindowClose',\n 'onWindowMinimize',\n 'onWindowMaximize',\n 'onProjectClick'\n ])\n bindUserStyle(root, props)\n setAttribute(left, 'class', 'vui-wbtitlebar__left')\n setAttribute(right, 'class', 'vui-wbtitlebar__right')\n insertDynamic(left, null, () => createTitlebarLeft(props))\n if (hasProp(props, 'actions')) mountSlot(right, props, 'actions')\n if (hasProp(props, 'children')) mountSlot(right, props, 'children')\n insertBefore(root, left, null)\n insertBefore(root, right, null)\n return root\n}\n\nfunction createTitlebarLeft(props: WorkbenchTitlebarProps): VobsNode {\n return createFragment((parent, anchor) => {\n if (readProp(props, 'windowControls', true)) {\n const lights = createElement('div')\n setAttribute(lights, 'class', 'vui-wbtitlebar__lights')\n insertBefore(lights, createWindowLight('close', props, 'onWindowClose'), null)\n insertBefore(lights, createWindowLight('min', props, 'onWindowMinimize'), null)\n insertBefore(lights, createWindowLight('max', props, 'onWindowMaximize'), null)\n insertBefore(parent, lights, anchor)\n }\n\n if (hasProp(props, 'mode')) {\n const mode = createElement('span')\n setAttribute(mode, 'class', 'vui-wbtitlebar__mode-chip')\n if (hasProp(props, 'modeIcon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-wbtitlebar__mode-icon')\n mountSlot(icon, props, 'modeIcon')\n insertBefore(mode, icon, null)\n }\n const text = createText('')\n bindTextContent(text, () => readProp(props, 'mode', ''))\n insertBefore(mode, text, null)\n insertBefore(parent, mode, anchor)\n }\n\n if (hasProp(props, 'project')) insertBefore(parent, createProjectSelector(props), anchor)\n })\n}\n\nfunction createWindowLight(\n kind: 'close' | 'min' | 'max',\n props: WorkbenchTitlebarProps,\n handlerName: 'onWindowClose' | 'onWindowMinimize' | 'onWindowMaximize'\n): VobsNode {\n const light = createElement('button')\n setAttribute(light, 'class', `vui-wbtitlebar__light vui-wbtitlebar__light--${kind}`)\n setAttribute(light, 'type', 'button')\n setAttribute(light, 'aria-label', kind === 'close' ? 'Close window' : kind === 'min' ? 'Minimize window' : 'Maximize window')\n addEventListener(light, 'click', event => {\n const handler = readProp<unknown>(props, handlerName, undefined)\n if (typeof handler === 'function') (handler as WorkbenchTitlebarProps[typeof handlerName])!(event as MouseEvent)\n })\n return light\n}\n\nfunction createProjectSelector(props: WorkbenchTitlebarProps): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', 'vui-wbtitlebar__project-selector')\n setAttribute(button, 'type', 'button')\n setOptionalAttribute(button, 'aria-label', readProp(props, 'project', 'Project'))\n if (hasProp(props, 'projectIcon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-wbtitlebar__project-icon')\n mountSlot(icon, props, 'projectIcon')\n insertBefore(button, icon, null)\n }\n const project = createText('')\n bindTextContent(project, () => readProp(props, 'project', ''))\n insertBefore(button, project, null)\n if (hasProp(props, 'projectChevron')) {\n const chevron = createElement('span')\n setAttribute(chevron, 'class', 'vui-wbtitlebar__project-chevron')\n mountSlot(chevron, props, 'projectChevron')\n insertBefore(button, chevron, null)\n }\n addEventListener(button, 'click', event => {\n const handler = readProp<unknown>(props, 'onProjectClick', undefined)\n if (typeof handler === 'function') (handler as WorkbenchTitlebarProps['onProjectClick'])!(event as MouseEvent)\n })\n return button\n}\n","import {\n addEventListener,\n createElement,\n createFragment,\n insertBefore,\n insertDynamic,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp\n} from './utils'\nimport type { VuiChildren, VuiCommonProps } from './types'\n\nexport type StatusBarDot = 'success' | 'warning' | 'error'\n\nexport interface StatusBarItem {\n readonly id?: string\n readonly icon?: VuiChildren\n readonly dot?: StatusBarDot\n readonly label?: VuiChildren\n readonly disabled?: boolean\n}\n\nexport interface StatusBarProps extends VuiCommonProps {\n readonly left?: readonly StatusBarItem[]\n readonly right?: readonly StatusBarItem[]\n readonly onItemClick?: (id: string, event: MouseEvent) => void\n}\n\nexport function StatusBar(props: StatusBarProps = {}): VobsNode {\n const root = createElement('footer')\n bindClassList(root, props, () => ['vui-statusbar'])\n bindCommonAttributes(root, props, ['left', 'right', 'onItemClick'])\n bindUserStyle(root, props)\n setAttribute(root, 'role', 'status')\n\n if (hasProp(props, 'left')) insertDynamic(root, null, () => createStatusGroup(props, 'left'))\n if (hasProp(props, 'right') || hasProp(props, 'children')) {\n const group = createElement('div')\n setAttribute(group, 'class', 'vui-statusbar__group')\n if (hasProp(props, 'right')) insertDynamic(group, null, () => createStatusItems(props, 'right'))\n if (hasProp(props, 'children')) mountSlot(group, props, 'children')\n insertBefore(root, group, null)\n }\n return root\n}\n\nfunction createStatusGroup(props: StatusBarProps, side: 'left' | 'right'): VobsNode {\n const group = createElement('div')\n setAttribute(group, 'class', 'vui-statusbar__group')\n insertDynamic(group, null, () => createStatusItems(props, side))\n return group\n}\n\nfunction createStatusItems(props: StatusBarProps, side: 'left' | 'right'): VobsNode {\n const items = side === 'left'\n ? readProp<readonly StatusBarItem[]>(props, 'left', [])\n : readProp<readonly StatusBarItem[]>(props, 'right', [])\n return createFragment((parent, anchor) => {\n for (const item of items) insertBefore(parent, createStatusItem(item, props), anchor)\n })\n}\n\nfunction createStatusItem(item: StatusBarItem, props: StatusBarProps): VobsNode {\n const root = createElement('span')\n setAttribute(root, 'class', 'vui-statusbar__item')\n if (item.id !== undefined && readProp<unknown>(props, 'onItemClick', undefined)) {\n setAttribute(root, 'role', 'button')\n setAttribute(root, 'tabindex', item.disabled === true ? '-1' : '0')\n }\n if (item.disabled === true) setAttribute(root, 'aria-disabled', 'true')\n\n if (item.icon !== undefined) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-statusbar__icon')\n mountSlot(icon, item, 'icon')\n insertBefore(root, icon, null)\n }\n if (item.dot !== undefined) {\n const dot = createElement('span')\n setAttribute(dot, 'class', `vui-statusbar__dot vui-statusbar__dot--${item.dot}`)\n setAttribute(dot, 'aria-hidden', 'true')\n insertBefore(root, dot, null)\n }\n if (item.label !== undefined) mountSlot(root, item, 'label')\n\n const activate = (event: Event): void => {\n if (item.disabled === true || item.id === undefined) return\n const handler = readProp<unknown>(props, 'onItemClick', undefined)\n if (typeof handler === 'function') (handler as StatusBarProps['onItemClick'])!(item.id, event as MouseEvent)\n }\n if (item.id !== undefined) {\n addEventListener(root, 'click', activate)\n addEventListener(root, 'keydown', event => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key !== 'Enter' && keyboardEvent.key !== ' ') return\n keyboardEvent.preventDefault?.()\n activate(keyboardEvent)\n })\n }\n return root\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createText,\n insertBefore,\n setAttribute,\n setProperty,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindPropertyValue,\n bindUserStyle,\n hasProp,\n listen,\n mountSlot,\n readProp,\n setOptionalAttribute,\n setOptionalProperty\n} from './utils'\nimport type { VuiChildren, VuiCommonProps, VuiEventHandler } from './types'\n\nexport interface ChatComposerProps extends VuiCommonProps {\n readonly value?: string\n readonly placeholder?: string\n readonly disabled?: boolean\n readonly model?: string\n readonly modelIcon?: VuiChildren\n readonly modelChevron?: VuiChildren\n readonly tools?: VuiChildren\n readonly actions?: VuiChildren\n readonly sendIcon?: VuiChildren\n readonly sendLabel?: string\n readonly onInput?: VuiEventHandler<InputEvent>\n readonly onSubmit?: (value: string, event: KeyboardEvent) => void\n readonly onSend?: (value: string, event: MouseEvent) => void\n readonly onModelClick?: (event: MouseEvent) => void\n}\n\nexport function ChatComposer(props: ChatComposerProps = {}): VobsNode {\n const root = createElement('div')\n const input = createElement('textarea')\n const toolbar = createElement('div')\n const tools = createElement('div')\n const actions = createElement('div')\n\n bindClassList(root, props, () => ['vui-composer'])\n bindUserStyle(root, props)\n bindCommonAttributes(input, props, [\n 'value',\n 'placeholder',\n 'disabled',\n 'model',\n 'modelIcon',\n 'modelChevron',\n 'tools',\n 'actions',\n 'sendIcon',\n 'sendLabel',\n 'onInput',\n 'onSubmit',\n 'onSend',\n 'onModelClick'\n ])\n setAttribute(input, 'class', 'vui-composer__input')\n setAttribute(toolbar, 'class', 'vui-composer__toolbar')\n setAttribute(tools, 'class', 'vui-composer__tools')\n setAttribute(actions, 'class', 'vui-composer__actions')\n\n effect(() => {\n setOptionalAttribute(input, 'placeholder', readProp<string | undefined>(props, 'placeholder', undefined))\n setOptionalProperty(input, 'disabled', readProp(props, 'disabled', false))\n setOptionalAttribute(input, 'aria-disabled', readProp(props, 'disabled', false) ? 'true' : undefined)\n })\n if (hasProp(props, 'value')) {\n bindPropertyValue(input, 'value', () => readProp(props, 'value', '') ?? '')\n }\n listen(input, 'input', props, 'onInput', () => readProp(props, 'disabled', false))\n addEventListener(input, 'keydown', event => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key !== 'Enter' || (!keyboardEvent.metaKey && !keyboardEvent.ctrlKey)) return\n keyboardEvent.preventDefault?.()\n const handler = readProp<unknown>(props, 'onSubmit', undefined)\n if (typeof handler === 'function') (handler as ChatComposerProps['onSubmit'])!(currentValue(input, props), keyboardEvent)\n })\n\n if (hasProp(props, 'tools')) mountSlot(tools, props, 'tools')\n else if (hasProp(props, 'children')) mountSlot(tools, props, 'children')\n if (hasProp(props, 'model')) insertBefore(tools, createModelSelector(props), null)\n\n if (hasProp(props, 'actions')) mountSlot(actions, props, 'actions')\n else insertBefore(actions, createSendButton(input, props), null)\n\n insertBefore(root, input, null)\n insertBefore(toolbar, tools, null)\n insertBefore(toolbar, actions, null)\n insertBefore(root, toolbar, null)\n return root\n}\n\nfunction createModelSelector(props: ChatComposerProps): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', 'vui-composer__model')\n setAttribute(button, 'type', 'button')\n if (hasProp(props, 'modelIcon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-composer__model-icon')\n mountSlot(icon, props, 'modelIcon')\n insertBefore(button, icon, null)\n }\n const text = createText('')\n bindTextContent(text, () => readProp(props, 'model', ''))\n insertBefore(button, text, null)\n if (hasProp(props, 'modelChevron')) {\n const chevron = createElement('span')\n setAttribute(chevron, 'class', 'vui-composer__model-chevron')\n mountSlot(chevron, props, 'modelChevron')\n insertBefore(button, chevron, null)\n }\n addEventListener(button, 'click', event => {\n const handler = readProp<unknown>(props, 'onModelClick', undefined)\n if (typeof handler === 'function') (handler as ChatComposerProps['onModelClick'])!(event as MouseEvent)\n })\n return button\n}\n\nfunction createSendButton(input: Element, props: ChatComposerProps): VobsNode {\n const button = createElement('button')\n setAttribute(button, 'class', 'vui-composer__send')\n setAttribute(button, 'type', 'button')\n const label = readProp(props, 'sendLabel', 'Send')\n setOptionalAttribute(button, 'aria-label', label)\n if (hasProp(props, 'sendIcon')) {\n const icon = createElement('span')\n setAttribute(icon, 'class', 'vui-composer__send-icon')\n mountSlot(icon, props, 'sendIcon')\n insertBefore(button, icon, null)\n } else {\n insertBefore(button, createText(label), null)\n }\n effect(() => setProperty(button, 'disabled', readProp(props, 'disabled', false)))\n addEventListener(button, 'click', event => {\n if (readProp(props, 'disabled', false)) return\n const handler = readProp<unknown>(props, 'onSend', undefined)\n if (typeof handler === 'function') (handler as ChatComposerProps['onSend'])!(currentValue(input, props), event as MouseEvent)\n })\n return button\n}\n\nfunction currentValue(input: Element, props: ChatComposerProps): string {\n const value = Reflect.get(input, 'value')\n return typeof value === 'string' ? value : readProp(props, 'value', '') ?? ''\n}\n","import { effect } from '@vobs/reactivity'\nimport {\n addEventListener,\n createElement,\n createText,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport {\n bindClassList,\n bindCommonAttributes,\n bindTextContent,\n bindUserStyle,\n hasProp,\n mountSlot,\n readProp,\n setOptionalAttribute,\n setOptionalProperty\n} from './utils'\nimport { createPortal, type VuiPortalAdapter } from './overlay'\nimport type { VuiCommonProps } from './types'\n\nexport type DrawerCloseReason = 'close-button' | 'backdrop' | 'escape'\n\nexport interface DrawerProps extends VuiCommonProps {\n readonly open?: boolean\n readonly title?: string\n readonly side?: 'left' | 'right'\n readonly closeOnBackdrop?: boolean\n readonly closeOnEscape?: boolean\n readonly modal?: boolean\n readonly titleId?: string\n readonly descriptionId?: string\n readonly closeLabel?: string\n readonly footer?: VuiCommonProps['children']\n readonly onClose?: (reason: DrawerCloseReason) => void\n readonly portal?: VuiPortalAdapter<unknown>\n readonly portalTarget?: unknown\n}\n\nexport function Drawer(props: DrawerProps = {}): VobsNode {\n const root = createElement('div')\n const surface = createElement('aside')\n const body = createElement('div')\n bindClassList(root, props, () => ['vui-backdrop'])\n bindUserStyle(root, props)\n bindCommonAttributes(surface, props, [\n 'open',\n 'title',\n 'side',\n 'closeOnBackdrop',\n 'closeOnEscape',\n 'modal',\n 'titleId',\n 'descriptionId',\n 'closeLabel',\n 'footer',\n 'onClose',\n 'portal',\n 'portalTarget'\n ])\n setAttribute(root, 'role', 'presentation')\n setAttribute(surface, 'class', 'vui-drawer')\n setAttribute(surface, 'role', 'dialog')\n setAttribute(body, 'class', 'vui-drawer__body')\n\n effect(() => {\n const open = readProp(props, 'open', false)\n const modal = readProp(props, 'modal', true)\n setOptionalProperty(root, 'hidden', !open)\n setOptionalAttribute(root, 'data-state', open ? 'open' : 'closed')\n setOptionalAttribute(surface, 'aria-modal', modal ? 'true' : 'false')\n setOptionalAttribute(surface, 'aria-labelledby', readProp<string | undefined>(props, 'titleId', undefined))\n setOptionalAttribute(surface, 'aria-describedby', readProp<string | undefined>(props, 'descriptionId', undefined))\n setOptionalAttribute(surface, 'data-side', readProp(props, 'side', 'right'))\n })\n\n if (hasProp(props, 'title') || hasProp(props, 'onClose')) {\n const head = createElement('header')\n setAttribute(head, 'class', 'vui-drawer__head')\n if (hasProp(props, 'title')) {\n const title = createElement('div')\n const text = createText('')\n setAttribute(title, 'class', 'vui-dialog__title')\n bindTextContent(text, () => readProp(props, 'title', ''))\n insertBefore(title, text, null)\n insertBefore(head, title, null)\n }\n if (hasProp(props, 'onClose')) {\n const close = createElement('button')\n setAttribute(close, 'class', 'vui-dialog__close')\n setAttribute(close, 'type', 'button')\n setAttribute(close, 'aria-label', readProp(props, 'closeLabel', 'Close'))\n insertBefore(close, createText('x'), null)\n addEventListener(close, 'click', () => emitClose(props, 'close-button'))\n insertBefore(head, close, null)\n }\n insertBefore(surface, head, null)\n }\n\n if (hasProp(props, 'children')) mountSlot(body, props, 'children')\n insertBefore(surface, body, null)\n if (hasProp(props, 'footer')) {\n const footer = createElement('footer')\n setAttribute(footer, 'class', 'vui-dialog__foot')\n mountSlot(footer, props, 'footer')\n insertBefore(surface, footer, null)\n }\n insertBefore(root, surface, null)\n\n addEventListener(root, 'click', event => {\n if (event.target !== root) return\n if (readProp(props, 'closeOnBackdrop', true)) emitClose(props, 'backdrop')\n })\n addEventListener(root, 'keydown', event => {\n if ((event as KeyboardEvent).key !== 'Escape') return\n if (readProp(props, 'closeOnEscape', true)) emitClose(props, 'escape')\n })\n\n const portal = readProp<VuiPortalAdapter<unknown> | undefined>(props, 'portal', undefined)\n return portal\n ? createPortal(root, portal, readProp(props, 'portalTarget', undefined))\n : root\n}\n\nfunction emitClose(props: DrawerProps, reason: DrawerCloseReason): void {\n if (!readProp(props, 'open', false)) return\n const handler = readProp<unknown>(props, 'onClose', undefined)\n if (typeof handler === 'function') handler(reason)\n}\n","import { insertList } from '@vobs/vobs'\nimport {\n addEventListener,\n createElement,\n createText,\n insertBefore,\n setAttribute,\n type VobsNode\n} from '@vobs/vobs'\nimport { type Notification, type NotificationContext, useNotification } from '@vobs/notification'\nimport { Icon } from './icon'\nimport { createPortal, type VuiPortalAdapter } from './overlay'\nimport { bindClassList, bindCommonAttributes, bindUserStyle, readProp } from './utils'\nimport type { VuiCommonProps } from './types'\n\nexport type ToastPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n\nexport interface ToastHostProps extends VuiCommonProps {\n readonly notification?: NotificationContext\n readonly position?: ToastPosition\n readonly closeLabel?: string\n readonly portal?: VuiPortalAdapter<unknown>\n readonly portalTarget?: unknown\n}\n\nexport function ToastHost(props: ToastHostProps = {}): VobsNode {\n const notification = props.notification ?? useNotification()\n const root = createElement('ol')\n bindClassList(root, props, () => [\n 'vui-toast-host',\n `vui-toast-host--${readProp<ToastPosition>(props, 'position', 'top-right')}`\n ])\n bindCommonAttributes(root, props, ['notification', 'position', 'closeLabel', 'portal', 'portalTarget'])\n bindUserStyle(root, props)\n setAttribute(root, 'aria-label', 'Notifications')\n setAttribute(root, 'role', 'region')\n\n insertList(root, null, () => notification.notifications.value, entry => (\n createToast(entry, notification, readProp(props, 'closeLabel', 'Dismiss notification'))\n ), entry => entry.id)\n\n const portal = readProp<VuiPortalAdapter<unknown> | undefined>(props, 'portal', undefined)\n return portal\n ? createPortal(root, portal, readProp(props, 'portalTarget', undefined))\n : root\n}\n\nfunction createToast(\n notification: Notification,\n context: NotificationContext,\n closeLabel: string\n): VobsNode {\n const item = createElement('li')\n const content = createElement('div')\n const close = createElement('button')\n setAttribute(item, 'class', `vui-toast vui-toast--${notification.type}`)\n setAttribute(item, 'data-notification-id', notification.id)\n setAttribute(item, 'role', notification.type === 'error' ? 'alert' : 'status')\n setAttribute(content, 'class', 'vui-toast__content')\n setAttribute(close, 'class', 'vui-toast__close')\n setAttribute(close, 'type', 'button')\n setAttribute(close, 'aria-label', closeLabel)\n addEventListener(close, 'click', () => context.dismiss(notification.id))\n\n if (notification.title) {\n const title = createElement('div')\n setAttribute(title, 'class', 'vui-toast__title')\n insertBefore(title, createText(notification.title), null)\n insertBefore(content, title, null)\n }\n const message = createElement('div')\n setAttribute(message, 'class', 'vui-toast__message')\n insertBefore(message, createText(notification.content), null)\n insertBefore(content, message, null)\n insertBefore(close, Icon({ name: 'x', size: 16, decorative: true }), null)\n insertBefore(item, content, null)\n insertBefore(item, close, null)\n return item\n}\n","import {\n createIcon,\n createSvgIconNode,\n type IconDefinition,\n type SvgIconDefinition,\n type VobsIconProps\n} from '@vobs/icon-core'\nimport { state } from '@vobs/vobs'\nimport { hasProp, mountSlot, readProp } from './utils'\nimport type { VobsNode } from '@vobs/vobs'\nimport type { VuiCommonProps } from './types'\n\nexport type { IconDefinition } from '@vobs/icon-core'\n\nexport interface IconProps extends VuiCommonProps, VobsIconProps {\n readonly name?: string\n readonly icon?: IconDefinition\n}\n\nexport function Icon(props: IconProps = {}): VobsNode {\n const root = createSvgIconNode(() => {\n // 读取注册表版本号:registerIcon 后已挂载的 Icon 自动补渲染,\n // 支持异步/按需注册(如 Iconify 集合、在线加载)。\n registryVersion.value\n const definition = resolveIcon(\n readProp<IconDefinition | string | undefined>(props, 'icon', undefined)\n ?? readProp<string | undefined>(props, 'name', undefined)\n )\n if (!definition) {\n if (hasProp(props, 'children')) return undefined\n const requested = readProp<IconDefinition | string | undefined>(props, 'icon', undefined)\n ?? readProp<string | undefined>(props, 'name', undefined)\n console.warn(`Vobs UI: 未注册的图标 \"${String(requested)}\",已渲染为空。请先 registerIcon 或改用已注册的名称。`)\n return undefined\n }\n return iconDefinitionToSvg(definition)\n }, props, {\n class: 'vui-icon icon',\n defaultSvgAttributes: {\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'butt',\n 'stroke-linejoin': 'miter'\n }\n }) as Element\n\n if (hasProp(props, 'children')) mountSlot(root, props, 'children')\n return root\n}\n\nfunction iconDefinitionToSvg(definition: IconDefinition): SvgIconDefinition {\n return {\n name: definition.name,\n body: definition.path,\n viewBox: definition.viewBox\n }\n}\n\nconst VUI_ICON_PATHS = {\n search: '<circle cx=\"11\" cy=\"11\" r=\"7\"/><path d=\"m20 20-3.5-3.5\"/>',\n check: '<polyline points=\"4 12 10 18 20 6\"/>',\n x: '<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/>',\n plus: '<line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/>',\n minus: '<line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/>',\n 'chevron-right': '<polyline points=\"9 6 15 12 9 18\"/>',\n 'chevron-down': '<polyline points=\"6 9 12 15 18 9\"/>',\n 'chevron-up': '<polyline points=\"6 15 12 9 18 15\"/>',\n 'chevron-left': '<polyline points=\"15 6 9 12 15 18\"/>',\n 'arrow-left': '<line x1=\"20\" y1=\"12\" x2=\"4\" y2=\"12\"/><polyline points=\"10 6 4 12 10 18\"/>',\n 'arrow-right': '<line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"/><polyline points=\"14 6 20 12 14 18\"/>',\n 'arrow-up': '<line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"/><polyline points=\"6 10 12 4 18 10\"/>',\n 'arrow-down': '<line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\"/><polyline points=\"6 14 12 20 18 14\"/>',\n atom: '<circle cx=\"12\" cy=\"12\" r=\"2\"/><ellipse cx=\"12\" cy=\"12\" rx=\"10\" ry=\"4\"/><ellipse cx=\"12\" cy=\"12\" rx=\"10\" ry=\"4\" transform=\"rotate(60 12 12)\"/><ellipse cx=\"12\" cy=\"12\" rx=\"10\" ry=\"4\" transform=\"rotate(120 12 12)\"/>',\n globe: '<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18\"/>',\n 'arrow-expand': '<polyline points=\"14 4 20 4 20 10\"/><line x1=\"14\" y1=\"10\" x2=\"20\" y2=\"4\"/><polyline points=\"10 20 4 20 4 14\"/><line x1=\"10\" y1=\"14\" x2=\"4\" y2=\"20\"/>',\n 'arrow-minimize': '<polyline points=\"20 4 14 10 20 10\"/><line x1=\"14\" y1=\"10\" x2=\"14\" y2=\"4\"/><polyline points=\"4 20 10 14 4 14\"/><line x1=\"10\" y1=\"14\" x2=\"10\" y2=\"20\"/>',\n 'check-circle': '<circle cx=\"12\" cy=\"12\" r=\"9\"/><polyline points=\"8 12 11 15 16 9\"/>',\n 'alert-circle': '<circle cx=\"12\" cy=\"12\" r=\"9\"/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"13\"/><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"16.01\"/>',\n 'alert-triangle': '<path d=\"M12 3 22 20 2 20 Z\"/><line x1=\"12\" y1=\"10\" x2=\"12\" y2=\"15\"/><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"18.01\"/>',\n info: '<circle cx=\"12\" cy=\"12\" r=\"9\"/><line x1=\"12\" y1=\"11\" x2=\"12\" y2=\"16\"/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"8.01\"/>',\n home: '<polygon points=\"3 11 12 3 21 11 21 21 14 21 14 14 10 14 10 21 3 21 3 11\"/>',\n user: '<path d=\"M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1\"/><circle cx=\"12\" cy=\"8\" r=\"4\"/>',\n settings: '<circle cx=\"12\" cy=\"12\" r=\"3\"/><path d=\"M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z\"/>',\n menu: '<line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"/><line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"/><line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\"/>',\n 'more-h': '<circle cx=\"5\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"/><circle cx=\"12\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"/><circle cx=\"19\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"/>',\n calendar: '<rect x=\"3\" y=\"5\" width=\"18\" height=\"16\"/><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"/><line x1=\"8\" y1=\"3\" x2=\"8\" y2=\"7\"/><line x1=\"16\" y1=\"3\" x2=\"16\" y2=\"7\"/>',\n filter: '<polygon points=\"3 4 21 4 14 12 14 20 10 18 10 12 3 4\"/>',\n sort: '<path d=\"M8 20V4\"/><polyline points=\"4 8 8 4 12 8\"/><path d=\"M16 4v16\"/><polyline points=\"12 16 16 20 20 16\"/>',\n edit: '<path d=\"M4 20h4l10-10-4-4L4 16v4z\"/><path d=\"M14 6l4 4\"/>',\n trash: '<polyline points=\"4 6 20 6\"/><path d=\"M6 6v14h12V6\"/><path d=\"M9 6V4h6v2\"/><line x1=\"10\" y1=\"10\" x2=\"10\" y2=\"17\"/><line x1=\"14\" y1=\"10\" x2=\"14\" y2=\"17\"/>',\n download: '<path d=\"M12 3v12\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"3\" y1=\"21\" x2=\"21\" y2=\"21\"/>',\n upload: '<path d=\"M12 21V6\"/><polyline points=\"7 11 12 6 17 11\"/><line x1=\"3\" y1=\"21\" x2=\"21\" y2=\"21\"/>',\n pause: '<line x1=\"9\" y1=\"5\" x2=\"9\" y2=\"19\"/><line x1=\"15\" y1=\"5\" x2=\"15\" y2=\"19\"/>',\n play: '<polygon points=\"8 5 19 12 8 19 8 5\"/>',\n refresh: '<polyline points=\"21 4 21 10 15 10\"/><polyline points=\"3 20 3 14 9 14\"/><path d=\"M20.5 9A9 9 0 0 0 5 5.5L3 7M3.5 15A9 9 0 0 0 19 18.5L21 17\"/>',\n bell: '<path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 8 3 8H3s3-1 3-8z\"/><path d=\"M10 21a2 2 0 0 0 4 0\"/>',\n folder: '<path d=\"M3 6h6l2 3h10v10H3z\"/>',\n code: '<polyline points=\"16 18 22 12 16 6\"/><polyline points=\"8 6 2 12 8 18\"/>',\n sparkles: '<path d=\"M12 3l1.8 4.2L18 9l-4.2 1.8L12 15l-1.8-4.2L6 9l4.2-1.8L12 3z\"/><path d=\"M19 14l1 2.2 2.2 1-2.2 1L19 20.4l-1-2.2-2.2-1 2.2-1L19 14z\"/>',\n zap: '<polygon points=\"13 2 4 14 12 14 11 22 20 10 12 10 13 2\"/>',\n sun: '<circle cx=\"12\" cy=\"12\" r=\"4\"/><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"5\"/><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"22\"/><line x1=\"2\" y1=\"12\" x2=\"5\" y2=\"12\"/><line x1=\"19\" y1=\"12\" x2=\"22\" y2=\"12\"/><line x1=\"4.6\" y1=\"4.6\" x2=\"6.7\" y2=\"6.7\"/><line x1=\"17.3\" y1=\"17.3\" x2=\"19.4\" y2=\"19.4\"/><line x1=\"4.6\" y1=\"19.4\" x2=\"6.7\" y2=\"17.3\"/><line x1=\"17.3\" y1=\"6.7\" x2=\"19.4\" y2=\"4.6\"/>',\n moon: '<path d=\"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z\"/>',\n terminal: '<polyline points=\"4 7 9 12 4 17\"/><line x1=\"12\" y1=\"17\" x2=\"20\" y2=\"17\"/>'\n} as const\n\nconst iconRegistry = new Map<string, IconDefinition>(\n Object.entries(VUI_ICON_PATHS).map(([name, path]) => [name, { name, path }])\n)\n\n/** 注册表版本号:registerIcon/注销时递增,驱动已挂载 Icon 的 effect 重取定义。 */\nconst registryVersion = state(0, 'vui.iconRegistry.version')\n\nexport { VUI_ICON_PATHS }\nexport { createIcon, registerIcon, resolveIcon }\n\nfunction registerIcon(icon: IconDefinition): () => void {\n const previous = iconRegistry.get(icon.name)\n iconRegistry.set(icon.name, icon)\n registryVersion.value++\n return () => {\n if (previous) iconRegistry.set(icon.name, previous)\n else iconRegistry.delete(icon.name)\n registryVersion.value++\n }\n}\n\nfunction resolveIcon(icon: string | IconDefinition | undefined): IconDefinition | undefined {\n return typeof icon === 'string' ? iconRegistry.get(icon) : icon\n}\n"],"mappings":"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","names":["import_reactivity","import_vobs","import_reactivity","import_vobs","import_vobs","import_vobs","import_vobs","import_reactivity","import_vobs","import_reactivity","import_vobs","import_reactivity","import_vobs","import_vobs","import_reactivity","import_vobs","activeId","import_vobs","import_vobs","import_reactivity","import_vobs","import_vobs","import_reactivity","import_vobs","import_vobs","import_reactivity","import_vobs","activeId","import_reactivity","import_vobs","activeId","import_reactivity","import_vobs","activeId","import_vobs","import_vobs","import_reactivity","import_vobs","import_reactivity","import_vobs","emitClose","import_vobs","import_vobs"]}
|