@ansh-ui/vue 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/{chunk-HIVA75XC.js → chunk-D3HH726R.js} +151 -143
  2. package/dist/chunk-D3HH726R.js.map +1 -0
  3. package/dist/{chunk-FK536ZUI.cjs → chunk-EDAF7RAN.cjs} +150 -142
  4. package/dist/chunk-EDAF7RAN.cjs.map +1 -0
  5. package/dist/{chunk-LRTNIUAG.js → chunk-G3EIU6VM.js} +13 -7
  6. package/dist/chunk-G3EIU6VM.js.map +1 -0
  7. package/dist/{chunk-J2LA4GRP.cjs → chunk-IO6WJEJI.cjs} +122 -120
  8. package/dist/chunk-IO6WJEJI.cjs.map +1 -0
  9. package/dist/{chunk-IK3E4MPB.cjs → chunk-JJBYF7AH.cjs} +13 -7
  10. package/dist/chunk-JJBYF7AH.cjs.map +1 -0
  11. package/dist/{chunk-Z7XOFKM4.cjs → chunk-KKCZ5RUE.cjs} +4 -2
  12. package/dist/chunk-KKCZ5RUE.cjs.map +1 -0
  13. package/dist/{chunk-6ABPGOJP.js → chunk-LFGAOD32.js} +4 -2
  14. package/dist/chunk-LFGAOD32.js.map +1 -0
  15. package/dist/{chunk-FVKLCGA4.js → chunk-NJMTWLT2.js} +123 -121
  16. package/dist/chunk-NJMTWLT2.js.map +1 -0
  17. package/dist/data.cjs +16 -16
  18. package/dist/data.d.cts +45 -44
  19. package/dist/data.d.ts +45 -44
  20. package/dist/data.js +1 -1
  21. package/dist/form.cjs +36 -36
  22. package/dist/form.d.cts +28 -21
  23. package/dist/form.d.ts +28 -21
  24. package/dist/form.js +1 -1
  25. package/dist/index.cjs +134 -134
  26. package/dist/index.js +8 -8
  27. package/dist/layout.d.cts +1 -1
  28. package/dist/layout.d.ts +1 -1
  29. package/dist/motion.cjs +11 -11
  30. package/dist/motion.d.cts +27 -24
  31. package/dist/motion.d.ts +27 -24
  32. package/dist/motion.js +1 -1
  33. package/dist/navigation.d.cts +1 -1
  34. package/dist/navigation.d.ts +1 -1
  35. package/dist/overlay.cjs +13 -13
  36. package/dist/overlay.d.cts +27 -25
  37. package/dist/overlay.d.ts +27 -25
  38. package/dist/overlay.js +1 -1
  39. package/package.json +3 -3
  40. package/dist/chunk-6ABPGOJP.js.map +0 -1
  41. package/dist/chunk-FK536ZUI.cjs.map +0 -1
  42. package/dist/chunk-FVKLCGA4.js.map +0 -1
  43. package/dist/chunk-HIVA75XC.js.map +0 -1
  44. package/dist/chunk-IK3E4MPB.cjs.map +0 -1
  45. package/dist/chunk-J2LA4GRP.cjs.map +0 -1
  46. package/dist/chunk-LRTNIUAG.js.map +0 -1
  47. package/dist/chunk-Z7XOFKM4.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data/table.ts","../src/components/data/display.ts","../src/components/data/progress.ts"],"names":["_","defineComponent","h","computed"],"mappings":"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","file":"chunk-FVKLCGA4.js","sourcesContent":["import {\n type PropType,\n type SetupContext,\n type VNodeChild,\n computed,\n defineComponent,\n h,\n} from 'vue'\nimport { type SlotContent, cx, resolveSlotContent } from '../../primitives/utils'\nimport { useControllableState } from '../../primitives/use-controllable-state'\n\n/**\n * Tables — the Vue counterpart of `@ansh-ui/react`'s `Table`/`DataTable`.\n *\n * A real `<table>` with `<th scope>`, not a grid of divs. The semantics are the entire point: a\n * screen reader announces \"Column 3 of 7, Status, row 12\" only if the markup says so. Every\n * div-based table reimplements navigation badly or not at all, and the CSS argument for divs\n * disappeared when `display: contents` and `position: sticky` landed.\n *\n * `DataTable` adds sorting, selection and pagination on top. It stays deliberately short of a full\n * data grid — no virtualisation, no column resizing, no pinned regions. Those need a different\n * architecture (windowing, measured columns), and half-implementing them produces a component that\n * breaks at exactly the scale it was added for.\n *\n * `DataTable` is generic over the row type `T`, which Vue only supports for a plain (non-SFC)\n * component through `defineComponent`'s \"generic setup function\" overload — the setup function\n * itself stays generic (`<T,>(props: DataTableProps<T>, ctx) => …`) while the runtime `props` list\n * is a plain array of keys. That trade means no per-prop runtime validation or default-value\n * coercion (booleans aren't coerced from attribute presence, defaults are applied by hand inside\n * `setup`, mirroring the destructured defaults the React version uses) — acceptable here because the\n * real contract for a data-shaped component like this is the TypeScript signature, not template\n * shorthand.\n */\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport interface SortState {\n columnId: string\n direction: SortDirection\n}\n\nexport interface Column<T> {\n id: string\n header: SlotContent\n /** Render the cell. Receives the row and its index. */\n cell: (row: T, index: number) => VNodeChild\n /** Allow sorting by this column. */\n sortable?: boolean\n /**\n * Value used for the default comparator. Without it a sortable column falls back to comparing\n * rendered output, which sorts \"10\" before \"9\".\n */\n sortValue?: (row: T) => string | number | Date | null | undefined\n align?: 'start' | 'center' | 'end'\n /** Any CSS width — `'12rem'`, `'25%'`, `'minmax(8rem, 1fr)'`. */\n width?: string\n /** Hide below this breakpoint. Uses the token breakpoints. */\n hideBelow?: 'sm' | 'md' | 'lg'\n /** Short label announced instead of a complex header. */\n ariaLabel?: string\n}\n\nexport interface DataTableProps<T> {\n data: readonly T[]\n columns: ReadonlyArray<Column<T>>\n /** Stable row identity. Required — array index breaks selection the moment rows reorder. */\n getRowId: (row: T) => string\n /** Describes the table for screen readers. Rendered as a visually hidden `<caption>`. */\n caption: string\n /** Row checkboxes plus a header select-all. */\n selectable?: boolean\n /** `v-model:selected` — omit for an uncontrolled table that owns its own selection. */\n selected?: readonly string[]\n /** `v-model:sort` — omit for an uncontrolled table that owns its own sort state. */\n sort?: SortState | null\n defaultSort?: SortState | null\n /** Rows per page. Omit to render everything. */\n pageSize?: number\n /** `v-model:page` — omit for an uncontrolled table that owns its own page. */\n page?: number\n /** Show skeleton rows. */\n loading?: boolean\n /** Rendered in place of the body when there are no rows. */\n emptyState?: SlotContent\n onRowClick?: (row: T) => void\n /** Keep the header visible while the body scrolls. */\n stickyHeader?: boolean\n density?: 'comfortable' | 'compact'\n /** Zebra striping. Off by default — borders read as cleaner at density. */\n striped?: boolean\n /** Per-row extra class, for status highlighting. */\n rowClassName?: (row: T) => string | undefined\n}\n\ninterface DataTableEmits {\n 'update:sort': (sort: SortState | null) => void\n 'update:selected': (ids: readonly string[]) => void\n 'update:page': (page: number) => void\n}\n\nconst DATA_TABLE_PROP_KEYS = [\n 'data',\n 'columns',\n 'getRowId',\n 'caption',\n 'selectable',\n 'selected',\n 'sort',\n 'defaultSort',\n 'pageSize',\n 'page',\n 'loading',\n 'emptyState',\n 'onRowClick',\n 'stickyHeader',\n 'density',\n 'striped',\n 'rowClassName',\n] satisfies Array<keyof DataTableProps<unknown>>\n\n/** Default comparator: numbers and dates numerically, strings by locale. */\nfunction compare(a: unknown, b: unknown): number {\n if (a == null && b == null) return 0\n // Nulls sort last in both directions — an empty cell is not \"smallest\", it's absent, and\n // flipping the sort should not fill the top of the table with blanks.\n if (a == null) return 1\n if (b == null) return -1\n\n if (typeof a === 'number' && typeof b === 'number') return a - b\n if (a instanceof Date && b instanceof Date) return a.getTime() - b.getTime()\n // `localeCompare` with `numeric` so \"Item 2\" precedes \"Item 10\".\n return String(a).localeCompare(String(b), undefined, { numeric: true, sensitivity: 'base' })\n}\n\nexport const DataTable = defineComponent(\n <T>(props: DataTableProps<T>, { emit, attrs }: SetupContext<DataTableEmits>) => {\n const [sortState, setSortState] = useControllableState<SortState | null>(\n () => props.sort,\n props.defaultSort ?? null,\n (next) => emit('update:sort', next),\n )\n const [selection, setSelection] = useControllableState<readonly string[]>(\n () => props.selected,\n [],\n (next) => emit('update:selected', next),\n )\n const [currentPage, setCurrentPage] = useControllableState<number>(\n () => props.page,\n 0,\n (next) => emit('update:page', next),\n )\n\n const sorted = computed<readonly T[]>(() => {\n const state = sortState.value\n if (!state) return props.data\n const column = props.columns.find((c) => c.id === state.columnId)\n const sortValue = column?.sortValue\n if (!sortValue) return props.data\n\n // Copied before sorting: mutating the caller's array in place is a bug that surfaces as\n // \"my list reorders when I open the table\".\n const rows = [...props.data]\n rows.sort((a, b) => {\n const result = compare(sortValue(a), sortValue(b))\n return state.direction === 'asc' ? result : -result\n })\n return rows\n })\n\n const pageCount = computed(() =>\n props.pageSize ? Math.max(1, Math.ceil(sorted.value.length / props.pageSize)) : 1,\n )\n const safePage = computed(() => Math.min(currentPage.value, pageCount.value - 1))\n const visible = computed<readonly T[]>(() => {\n const pageSize = props.pageSize\n if (!pageSize) return sorted.value\n const start = safePage.value * pageSize\n return sorted.value.slice(start, start + pageSize)\n })\n\n const visibleIds = computed(() => visible.value.map(props.getRowId))\n const selectedSet = computed(() => new Set(selection.value))\n\n const allVisibleSelected = computed(\n () =>\n visibleIds.value.length > 0 && visibleIds.value.every((id) => selectedSet.value.has(id)),\n )\n const someVisibleSelected = computed(() =>\n visibleIds.value.some((id) => selectedSet.value.has(id)),\n )\n\n const toggleAll = (): void => {\n if (allVisibleSelected.value) {\n // Only clears the current page. Wiping selections on other pages would silently discard\n // work when someone selects across pages then unticks the header.\n setSelection(selection.value.filter((id) => !visibleIds.value.includes(id)))\n } else {\n setSelection([...new Set([...selection.value, ...visibleIds.value])])\n }\n }\n\n const toggleRow = (rowId: string): void => {\n setSelection(\n selectedSet.value.has(rowId)\n ? selection.value.filter((v) => v !== rowId)\n : [...selection.value, rowId],\n )\n }\n\n const onSort = (column: Column<T>): void => {\n if (!column.sortable) return\n const state = sortState.value\n // asc → desc → none. The third state matters: without it there is no way back to the data's\n // natural order, which is often \"most recent first\" from the server.\n if (state?.columnId !== column.id) {\n setSortState({ columnId: column.id, direction: 'asc' })\n } else if (state.direction === 'asc') {\n setSortState({ columnId: column.id, direction: 'desc' })\n } else {\n setSortState(null)\n }\n }\n\n return () => {\n const columns = props.columns\n const selectable = props.selectable ?? false\n const density = props.density ?? 'comfortable'\n const striped = props.striped ?? false\n const columnCount = columns.length + (selectable ? 1 : 0)\n const onRowClick = props.onRowClick\n\n const renderBody = (): VNodeChild[] => {\n if (props.loading) {\n return Array.from({ length: props.pageSize ?? 5 }, (_, rowIndex) =>\n h('tr', { key: `skeleton-${rowIndex}`, class: 'ansh-table__row' }, [\n ...Array.from({ length: columnCount }, (_, cellIndex) =>\n h('td', { key: cellIndex, class: 'ansh-table__cell' }, [\n h('span', {\n class: 'ansh-skeleton',\n style: { width: `${50 + ((cellIndex * 37) % 40)}%`, height: '1em' },\n }),\n ]),\n ),\n ]),\n )\n }\n\n if (visible.value.length === 0) {\n return [\n h('tr', {}, [\n h('td', { colspan: columnCount, class: 'ansh-table__empty' }, [\n props.emptyState ? resolveSlotContent(props.emptyState) : 'No results',\n ]),\n ]),\n ]\n }\n\n return visible.value.map((row, index) => {\n const rowId = props.getRowId(row)\n const isSelected = selectedSet.value.has(rowId)\n\n return h(\n 'tr',\n {\n key: rowId,\n class: cx(\n 'ansh-table__row',\n isSelected && 'ansh-table__row--selected',\n Boolean(onRowClick) && 'ansh-table__row--clickable',\n props.rowClassName?.(row),\n ),\n 'aria-selected': selectable ? isSelected : undefined,\n // A click that started on a control inside the row belongs to that control —\n // opening a detail view because someone ticked a checkbox is the classic\n // clickable-row bug.\n onClick: onRowClick\n ? (event: MouseEvent) => {\n const target = event.target as HTMLElement\n if (target.closest('button, a, input, select, textarea')) return\n onRowClick(row)\n }\n : undefined,\n },\n [\n selectable\n ? h('td', { class: 'ansh-table__cell ansh-table__cell--check' }, [\n h('input', {\n type: 'checkbox',\n class: 'ansh-table__checkbox',\n checked: isSelected,\n 'aria-label': `Select row ${index + 1}`,\n onChange: () => toggleRow(rowId),\n }),\n ])\n : null,\n\n ...columns.map((column) =>\n h(\n 'td',\n {\n key: column.id,\n class: cx(\n 'ansh-table__cell',\n column.align && `ansh-table__cell--${column.align}`,\n column.hideBelow && `ansh-hide-below-${column.hideBelow}`,\n ),\n },\n [column.cell(row, index)],\n ),\n ),\n ],\n )\n })\n }\n\n return h(\n 'div',\n {\n class: cx(\n 'ansh-table-wrap',\n props.stickyHeader && 'ansh-table-wrap--sticky',\n attrs.class as string,\n ),\n },\n [\n h(\n 'table',\n { class: cx('ansh-table', `ansh-table--${density}`, striped && 'ansh-table--striped') },\n [\n h('caption', { class: 'ansh-visually-hidden' }, [\n props.caption,\n sortState.value\n ? `, sorted by ${columns.find((c) => c.id === sortState.value!.columnId)?.id} ${sortState.value.direction === 'asc' ? 'ascending' : 'descending'}`\n : '',\n ]),\n\n h('thead', { class: 'ansh-table__head' }, [\n h('tr', {}, [\n selectable\n ? h('th', { scope: 'col', class: 'ansh-table__cell ansh-table__cell--check' }, [\n h('input', {\n type: 'checkbox',\n class: 'ansh-table__checkbox',\n checked: allVisibleSelected.value,\n // Mixed state when only some rows are ticked — announced as \"partially\n // checked\" rather than lying about the state. A fresh function\n // identity every render is what makes Vue re-invoke this ref callback\n // (mirroring the React version's inline ref) so the flag stays current.\n ref: (el) => {\n if (el) {\n ;(el as HTMLInputElement).indeterminate =\n !allVisibleSelected.value && someVisibleSelected.value\n }\n },\n 'aria-label': allVisibleSelected.value\n ? 'Deselect all rows'\n : 'Select all rows',\n onChange: toggleAll,\n }),\n ])\n : null,\n\n ...columns.map((column) => {\n const isSorted = sortState.value?.columnId === column.id\n return h(\n 'th',\n {\n key: column.id,\n scope: 'col',\n class: cx(\n 'ansh-table__cell',\n 'ansh-table__cell--head',\n column.align && `ansh-table__cell--${column.align}`,\n column.hideBelow && `ansh-hide-below-${column.hideBelow}`,\n ),\n style: column.width ? { width: column.width } : undefined,\n // `aria-sort` on the header is what makes a screen reader announce the\n // sort state; the arrow glyph alone conveys nothing.\n 'aria-sort': isSorted\n ? sortState.value!.direction === 'asc'\n ? 'ascending'\n : 'descending'\n : undefined,\n },\n [\n column.sortable\n ? h(\n 'button',\n {\n type: 'button',\n class: 'ansh-table__sort ansh-focusable',\n onClick: () => onSort(column),\n 'aria-label': column.ariaLabel\n ? `Sort by ${column.ariaLabel}`\n : typeof column.header === 'string'\n ? `Sort by ${column.header}`\n : 'Sort column',\n },\n [\n h('span', {}, [resolveSlotContent(column.header)]),\n h(\n 'span',\n {\n class: cx(\n 'ansh-table__arrow',\n isSorted && 'ansh-table__arrow--on',\n ),\n 'aria-hidden': 'true',\n 'data-direction': isSorted\n ? sortState.value!.direction\n : 'none',\n },\n [\n h('svg', { viewBox: '0 0 10 12', width: '10', height: '12' }, [\n h('path', {\n d: 'M5 1v10M2 4l3-3 3 3M2 8l3 3 3-3',\n stroke: 'currentColor',\n 'stroke-width': '1.4',\n fill: 'none',\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n }),\n ]),\n ],\n ),\n ],\n )\n : resolveSlotContent(column.header),\n ],\n )\n }),\n ]),\n ]),\n\n h('tbody', {}, renderBody()),\n ],\n ),\n\n // Selection count and page changes announced without stealing focus.\n h(\n 'span',\n { class: 'ansh-visually-hidden', role: 'status', 'aria-live': 'polite' },\n selectable && selection.value.length > 0 ? `${selection.value.length} selected` : '',\n ),\n\n props.pageSize && pageCount.value > 1\n ? h(Pagination, {\n page: safePage.value,\n pageCount: pageCount.value,\n total: sorted.value.length,\n pageSize: props.pageSize,\n onPageChange: setCurrentPage,\n })\n : null,\n ],\n )\n }\n },\n {\n name: 'AnshDataTable',\n inheritAttrs: false,\n props: DATA_TABLE_PROP_KEYS,\n emits: ['update:sort', 'update:selected', 'update:page'],\n },\n)\n\nexport interface PaginationProps {\n /** Zero-based. */\n page: number\n pageCount: number\n onPageChange: (page: number) => void\n /** Total row count, for the \"1–20 of 340\" summary. */\n total?: number\n pageSize?: number\n /** Page buttons either side of the current one. Default `1`. */\n siblings?: number\n}\n\n/**\n * Page navigation.\n *\n * `<nav>` with an ordered list, because that is what a pager is — a list of links to positions in a\n * sequence. The current page is marked `aria-current=\"page\"`, which is how a screen reader user\n * knows where they are without counting buttons.\n *\n * The ellipsis is `aria-hidden`; announcing \"ellipsis\" between page 3 and page 12 conveys nothing\n * that the numbers don't already.\n *\n * Fully controlled, same as the React version — there is no internal page state to fall back to, so\n * `onPageChange` stays a plain callback prop rather than a `v-model`-style emit.\n */\nexport const Pagination = defineComponent({\n name: 'AnshPagination',\n inheritAttrs: false,\n props: {\n page: { type: Number, required: true },\n pageCount: { type: Number, required: true },\n onPageChange: { type: Function as PropType<(page: number) => void>, required: true },\n total: { type: Number, default: undefined },\n pageSize: { type: Number, default: undefined },\n siblings: { type: Number, default: 1 },\n },\n setup(props, { attrs }) {\n return () => {\n const pages: Array<number | 'gap'> = []\n const first = 0\n const last = props.pageCount - 1\n\n for (let index = first; index <= last; index++) {\n const nearCurrent = Math.abs(index - props.page) <= props.siblings\n const isEdge = index === first || index === last\n if (nearCurrent || isEdge) {\n pages.push(index)\n } else if (pages[pages.length - 1] !== 'gap') {\n pages.push('gap')\n }\n }\n\n const from = props.pageSize ? props.page * props.pageSize + 1 : null\n const to =\n props.pageSize && props.total\n ? Math.min((props.page + 1) * props.pageSize, props.total)\n : null\n\n return h(\n 'nav',\n { class: cx('ansh-pagination', attrs.class as string), 'aria-label': 'Pagination' },\n [\n from !== null && to !== null\n ? h('p', { class: 'ansh-pagination__summary' }, `${from}–${to} of ${props.total}`)\n : null,\n\n h('ol', { class: 'ansh-pagination__list' }, [\n h('li', {}, [\n h(\n 'button',\n {\n type: 'button',\n class: 'ansh-pagination__button ansh-focusable',\n disabled: props.page === 0,\n 'aria-label': 'Previous page',\n onClick: () => props.onPageChange(props.page - 1),\n },\n [\n h(\n 'svg',\n { viewBox: '0 0 12 12', width: '12', height: '12', 'aria-hidden': 'true' },\n [\n h('path', {\n d: 'M7.5 2.5L4 6l3.5 3.5',\n stroke: 'currentColor',\n 'stroke-width': '1.5',\n fill: 'none',\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n }),\n ],\n ),\n ],\n ),\n ]),\n\n ...pages.map((entry, index) =>\n entry === 'gap'\n ? h(\n 'li',\n { key: `gap-${index}`, 'aria-hidden': 'true', class: 'ansh-pagination__gap' },\n '…',\n )\n : h('li', { key: entry }, [\n h(\n 'button',\n {\n type: 'button',\n class: cx(\n 'ansh-pagination__button',\n entry === props.page && 'ansh-pagination__button--current',\n 'ansh-focusable',\n ),\n 'aria-current': entry === props.page ? 'page' : undefined,\n 'aria-label': `Page ${entry + 1}`,\n onClick: () => props.onPageChange(entry),\n },\n String(entry + 1),\n ),\n ]),\n ),\n\n h('li', {}, [\n h(\n 'button',\n {\n type: 'button',\n class: 'ansh-pagination__button ansh-focusable',\n disabled: props.page >= props.pageCount - 1,\n 'aria-label': 'Next page',\n onClick: () => props.onPageChange(props.page + 1),\n },\n [\n h(\n 'svg',\n { viewBox: '0 0 12 12', width: '12', height: '12', 'aria-hidden': 'true' },\n [\n h('path', {\n d: 'M4.5 2.5L8 6l-3.5 3.5',\n stroke: 'currentColor',\n 'stroke-width': '1.5',\n fill: 'none',\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n }),\n ],\n ),\n ],\n ),\n ]),\n ]),\n ],\n )\n }\n },\n})\n\n/** A plain styled table, for content that isn't driven by data props. */\nexport const Table = defineComponent({\n name: 'AnshTable',\n inheritAttrs: false,\n props: {\n caption: { type: String, default: undefined },\n density: { type: String as PropType<'comfortable' | 'compact'>, default: 'comfortable' },\n striped: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n return () =>\n h('div', { class: cx('ansh-table-wrap', attrs.class as string) }, [\n h(\n 'table',\n {\n class: cx(\n 'ansh-table',\n `ansh-table--${props.density}`,\n props.striped && 'ansh-table--striped',\n ),\n },\n [\n props.caption ? h('caption', { class: 'ansh-visually-hidden' }, props.caption) : null,\n slots.default?.(),\n ],\n ),\n ])\n },\n})\n","import { type PropType, type VNode, computed, defineComponent, h, onBeforeUnmount, ref } from 'vue'\nimport { parseColor, pickReadable, toHex } from '@ansh-ui/core'\nimport { type SlotContent, cx, resolveSlotContent } from '../../primitives/utils'\n\n/**\n * Small display components — the Vue counterpart of `@ansh-ui/react`'s data-display primitives.\n *\n * Individually trivial, collectively most of what an application screen is made of. The care here\n * goes into the details that get skipped: a badge whose meaning isn't carried by colour alone, an\n * avatar whose fallback initials are readable against a generated background, an empty state that\n * says what to do next rather than just \"no data\".\n */\n\n// --- Badge ------------------------------------------------------------------\n\nexport type BadgeTone = 'neutral' | 'accent' | 'success' | 'warning' | 'danger' | 'info'\n\n/**\n * A status label.\n *\n * Every badge carries its meaning in **text**, not just colour. A red badge reading \"Failed\" works\n * for everyone; a red dot alone works for nobody using a screen reader and for the ~4% of the\n * population with a colour vision deficiency. The `dot` is decorative reinforcement.\n *\n * `children` in the React version becomes the default slot here. Badge extends `HTMLAttributes` in\n * React, so — unlike the rest of this file — arbitrary native attributes fall through, not just\n * `class`.\n */\nexport const Badge = defineComponent({\n name: 'AnshBadge',\n inheritAttrs: false,\n props: {\n tone: { type: String as PropType<BadgeTone>, default: 'neutral' },\n variant: { type: String as PropType<'soft' | 'solid' | 'outline'>, default: 'soft' },\n size: { type: String as PropType<'sm' | 'md'>, default: 'md' },\n /** Leading dot. Useful for statuses where the label is short. */\n dot: { type: Boolean, default: false },\n icon: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n },\n setup(props, { slots, attrs }) {\n return () => {\n const { class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n return h(\n 'span',\n {\n class: cx(\n 'ansh-badge',\n `ansh-badge--${props.tone}`,\n `ansh-badge--${props.variant}`,\n `ansh-badge--${props.size}`,\n attrClass as string,\n ),\n ...restAttrs,\n },\n [\n props.dot ? h('span', { class: 'ansh-badge__dot', 'aria-hidden': 'true' }) : null,\n props.icon\n ? h('span', { class: 'ansh-badge__icon' }, [resolveSlotContent(props.icon)])\n : null,\n slots.default?.(),\n ],\n )\n }\n },\n})\n\n// --- Avatar -------------------------------------------------------------------\n\nexport interface AvatarProps {\n src?: string\n /** The person's name. Used for the alt text and to derive the fallback initials. */\n name: string\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n shape?: 'circle' | 'square'\n /** Presence indicator. */\n status?: 'online' | 'offline' | 'busy' | 'away'\n}\n\n/** First letters of the first and last words — \"Ada Lovelace\" → \"AL\". */\nfunction initials(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean)\n if (words.length === 0) return '?'\n if (words.length === 1) return words[0]!.slice(0, 2).toUpperCase()\n return (words[0]![0]! + words[words.length - 1]![0]!).toUpperCase()\n}\n\n/** Stable hash so the same name always gets the same colour. */\nfunction hash(text: string): number {\n let value = 0\n for (let i = 0; i < text.length; i++) {\n value = (value * 31 + text.charCodeAt(i)) | 0\n }\n return Math.abs(value)\n}\n\n/**\n * Avatar extends `HTMLAttributes` in React too, so arbitrary attributes fall through here as well.\n *\n * The fallback colour is derived from the name via `@ansh-ui/core`'s colour engine, then the *text*\n * colour is chosen for contrast against it with `pickReadable` — reused rather than reimplemented, as\n * required. Picking a random background and hardcoding white text is how you get illegible initials\n * on a pale hue, and it is the most common avatar bug there is.\n */\nexport const Avatar = defineComponent({\n name: 'AnshAvatar',\n inheritAttrs: false,\n props: {\n src: { type: String, default: undefined },\n name: { type: String, required: true },\n size: { type: String as PropType<'xs' | 'sm' | 'md' | 'lg' | 'xl'>, default: 'md' },\n shape: { type: String as PropType<'circle' | 'square'>, default: 'circle' },\n status: {\n type: String as PropType<'online' | 'offline' | 'busy' | 'away'>,\n default: undefined,\n },\n },\n setup(props, { attrs }) {\n const failed = ref(false)\n\n // OKLCH rather than HSL for the generated hue: at fixed HSL lightness the yellows come out far\n // brighter than the blues, so a set of avatars looks uneven. Fixed OKLCH lightness is\n // perceptually even across the whole hue circle, which is the entire reason to use it here.\n const colors = computed(() => {\n const hue = hash(props.name) % 360\n const backgroundHex = toHex(parseColor(`oklch(72% 0.13 ${hue})`))\n return {\n background: backgroundHex,\n foreground: toHex(pickReadable(backgroundHex, '#ffffff', '#101828')),\n }\n })\n\n const showImage = computed(() => Boolean(props.src) && !failed.value)\n\n return () => {\n const { class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n return h(\n 'span',\n {\n class: cx(\n 'ansh-avatar',\n `ansh-avatar--${props.size}`,\n `ansh-avatar--${props.shape}`,\n attrClass as string,\n ),\n ...restAttrs,\n },\n [\n showImage.value\n ? h('img', {\n src: props.src,\n alt: props.name,\n class: 'ansh-avatar__image',\n // Falling back on error rather than showing a broken-image icon, which is what a\n // bare `<img>` does when a CDN URL expires.\n onError: () => {\n failed.value = true\n },\n })\n : h(\n 'span',\n {\n class: 'ansh-avatar__fallback',\n style: { background: colors.value.background, color: colors.value.foreground },\n 'aria-hidden': 'true',\n },\n initials(props.name),\n ),\n\n // The name is always available to assistive technology, even when the initials are\n // shown as decorative.\n !showImage.value ? h('span', { class: 'ansh-visually-hidden' }, props.name) : null,\n\n props.status\n ? h(\n 'span',\n { class: cx('ansh-avatar__status', `ansh-avatar__status--${props.status}`) },\n [h('span', { class: 'ansh-visually-hidden' }, props.status)],\n )\n : null,\n ],\n )\n }\n },\n})\n\n/** Overlapping avatars with an overflow count. */\nexport const AvatarGroup = defineComponent({\n name: 'AnshAvatarGroup',\n inheritAttrs: false,\n props: {\n /** Maximum shown before collapsing into a \"+N\" chip. Default `4`. */\n max: { type: Number, default: 4 },\n size: { type: String as PropType<AvatarProps['size']>, default: undefined },\n },\n setup(props, { slots, attrs }) {\n return () => {\n const items: VNode[] = slots.default?.() ?? []\n const shown = items.slice(0, props.max)\n const overflow = items.length - shown.length\n\n return h(\n 'span',\n {\n class: cx(\n 'ansh-avatar-group',\n props.size && `ansh-avatar-group--${props.size}`,\n attrs.class as string,\n ),\n },\n [\n shown,\n overflow > 0\n ? h(\n 'span',\n {\n class: cx(\n 'ansh-avatar',\n props.size && `ansh-avatar--${props.size}`,\n 'ansh-avatar--circle',\n 'ansh-avatar--more',\n ),\n },\n [\n h(\n 'span',\n { class: 'ansh-avatar__fallback', 'aria-hidden': 'true' },\n `+${overflow}`,\n ),\n h('span', { class: 'ansh-visually-hidden' }, `and ${overflow} more`),\n ],\n )\n : null,\n ],\n )\n }\n },\n})\n\n// --- Kbd ------------------------------------------------------------------\n\n/**\n * A keyboard key.\n *\n * Splits on `+` so `<Kbd>⌘+K</Kbd>` renders two keys with a separator, and the separator is\n * `aria-hidden` — a screen reader should say \"command K\", not \"command plus K\".\n *\n * The React version types its children as a plain `string` rather than a general `ReactNode`, since\n * the split only makes sense on literal text. The default slot is kept here (matching the React\n * call site, `<Kbd>⌘+K</Kbd>`) rather than switching to a string prop, and the text is recovered from\n * the rendered slot nodes — which is exactly what that slot is expected to contain.\n */\nexport const Kbd = defineComponent({\n name: 'AnshKbd',\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n return () => {\n const nodes = slots.default?.() ?? []\n const text = nodes\n .map((node) => (typeof node.children === 'string' ? node.children : ''))\n .join('')\n const keys = text.split('+').map((key) => key.trim())\n\n return h(\n 'span',\n { class: cx('ansh-kbd-group', attrs.class as string) },\n keys.map((key, index) =>\n h('span', { key: `${key}-${index}` }, [\n index > 0 ? h('span', { class: 'ansh-kbd__plus', 'aria-hidden': 'true' }, '+') : null,\n h('kbd', { class: 'ansh-kbd' }, key),\n ]),\n ),\n )\n }\n },\n})\n\n// --- Stat -------------------------------------------------------------------\n\nexport interface StatProps {\n label: SlotContent\n value: SlotContent\n /** Change since the previous period. Sign decides the direction and colour. */\n delta?: number\n /** How the delta reads — `'2.4%'` or `'+18 users'`. Defaults to the number with a sign. */\n deltaLabel?: string\n /** For metrics where down is good, like churn or latency. */\n invertDelta?: boolean\n hint?: SlotContent\n icon?: SlotContent\n}\n\n/**\n * A single metric — the building block of every dashboard.\n *\n * The delta's direction is shown by an arrow *and* a sign *and* a colour. Three redundant signals\n * because this is the number people scan fastest and misreading it has consequences.\n */\nexport const Stat = defineComponent({\n name: 'AnshStat',\n inheritAttrs: false,\n props: {\n label: { type: [String, Object, Function] as PropType<SlotContent>, required: true },\n value: { type: [String, Object, Function] as PropType<SlotContent>, required: true },\n delta: { type: Number, default: undefined },\n deltaLabel: { type: String, default: undefined },\n invertDelta: { type: Boolean, default: false },\n hint: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n icon: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n },\n setup(props, { attrs }) {\n return () => {\n const delta = props.delta\n const positive = delta !== undefined && delta > 0\n const negative = delta !== undefined && delta < 0\n const good = props.invertDelta ? negative : positive\n\n return h('div', { class: cx('ansh-stat', attrs.class as string) }, [\n h('div', { class: 'ansh-stat__head' }, [\n h('span', { class: 'ansh-stat__label' }, [resolveSlotContent(props.label)]),\n props.icon\n ? h('span', { class: 'ansh-stat__icon' }, [resolveSlotContent(props.icon)])\n : null,\n ]),\n\n h('div', { class: 'ansh-stat__value' }, [resolveSlotContent(props.value)]),\n\n delta !== undefined\n ? h(\n 'div',\n {\n class: cx(\n 'ansh-stat__delta',\n delta !== 0 && (good ? 'ansh-stat__delta--good' : 'ansh-stat__delta--bad'),\n ),\n },\n [\n h(\n 'span',\n { class: 'ansh-stat__arrow', 'aria-hidden': 'true' },\n positive ? '↑' : negative ? '↓' : '→',\n ),\n h('span', {}, props.deltaLabel ?? `${delta > 0 ? '+' : ''}${delta}%`),\n props.hint\n ? h('span', { class: 'ansh-stat__hint' }, [resolveSlotContent(props.hint)])\n : null,\n ],\n )\n : props.hint\n ? h('div', { class: 'ansh-stat__hint' }, [resolveSlotContent(props.hint)])\n : null,\n ])\n }\n },\n})\n\n// --- Empty state --------------------------------------------------------------\n\nexport interface EmptyStateProps {\n title: SlotContent\n description?: SlotContent\n icon?: SlotContent\n /** The action that resolves the emptiness — \"Create your first invoice\". */\n action?: SlotContent\n size?: 'sm' | 'md'\n}\n\n/**\n * The \"nothing here yet\" panel.\n *\n * Always offers the next step. An empty state that only says \"No results\" leaves the user to work\n * out whether the filter is wrong, the data hasn't loaded, or they need to create something — and\n * that ambiguity is where people abandon a screen.\n */\nexport const EmptyState = defineComponent({\n name: 'AnshEmptyState',\n inheritAttrs: false,\n props: {\n title: { type: [String, Object, Function] as PropType<SlotContent>, required: true },\n description: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n icon: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n action: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n size: { type: String as PropType<'sm' | 'md'>, default: 'md' },\n },\n setup(props, { attrs }) {\n return () =>\n h('div', { class: cx('ansh-empty', `ansh-empty--${props.size}`, attrs.class as string) }, [\n props.icon\n ? h('span', { class: 'ansh-empty__icon', 'aria-hidden': 'true' }, [\n resolveSlotContent(props.icon),\n ])\n : null,\n h('p', { class: 'ansh-empty__title' }, [resolveSlotContent(props.title)]),\n props.description\n ? h('p', { class: 'ansh-empty__description' }, [resolveSlotContent(props.description)])\n : null,\n props.action\n ? h('div', { class: 'ansh-empty__action' }, [resolveSlotContent(props.action)])\n : null,\n ])\n },\n})\n\n// --- Description list -----------------------------------------------------\n\nexport interface DescriptionListProps {\n items: ReadonlyArray<{ term: SlotContent; description: SlotContent }>\n /** Side-by-side rather than stacked. Default `'horizontal'` on wide screens. */\n orientation?: 'horizontal' | 'vertical'\n}\n\n/**\n * Key–value pairs — the detail panel of every record in a CRM.\n *\n * A real `<dl>`/`<dt>`/`<dd>`, which is what makes a screen reader pair each label with its value\n * instead of reading twenty unconnected strings.\n */\nexport const DescriptionList = defineComponent({\n name: 'AnshDescriptionList',\n inheritAttrs: false,\n props: {\n items: {\n type: Array as PropType<DescriptionListProps['items']>,\n required: true,\n },\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\n },\n setup(props, { attrs }) {\n return () =>\n h(\n 'dl',\n { class: cx('ansh-dl', `ansh-dl--${props.orientation}`, attrs.class as string) },\n props.items.map((item, index) =>\n h('div', { class: 'ansh-dl__row', key: index }, [\n h('dt', { class: 'ansh-dl__term' }, [resolveSlotContent(item.term)]),\n h('dd', { class: 'ansh-dl__description' }, [resolveSlotContent(item.description)]),\n ]),\n ),\n )\n },\n})\n\n// --- Timeline ---------------------------------------------------------------\n\nexport interface TimelineItem {\n id: string\n title: SlotContent\n description?: SlotContent\n /** Rendered as-is; pass an already-formatted string or a `<time>` VNode. */\n timestamp?: SlotContent\n icon?: SlotContent\n tone?: BadgeTone\n}\n\n/**\n * A chronological feed — audit logs, order history, activity streams.\n *\n * An ordered list, because the order carries meaning. The connecting line is drawn with a\n * pseudo-element on the list item rather than a real element, so it can't be selected, read, or land\n * in a copy-paste of the page.\n */\nexport const Timeline = defineComponent({\n name: 'AnshTimeline',\n inheritAttrs: false,\n props: {\n items: { type: Array as PropType<readonly TimelineItem[]>, required: true },\n },\n setup(props, { attrs }) {\n return () =>\n h(\n 'ol',\n { class: cx('ansh-timeline', attrs.class as string) },\n props.items.map((item) =>\n h(\n 'li',\n {\n key: item.id,\n class: cx('ansh-timeline__item', item.tone && `ansh-timeline__item--${item.tone}`),\n },\n [\n h('span', { class: 'ansh-timeline__marker', 'aria-hidden': 'true' }, [\n item.icon ? resolveSlotContent(item.icon) : null,\n ]),\n h('div', { class: 'ansh-timeline__body' }, [\n h('div', { class: 'ansh-timeline__head' }, [\n h('span', { class: 'ansh-timeline__title' }, [resolveSlotContent(item.title)]),\n item.timestamp\n ? h('span', { class: 'ansh-timeline__time' }, [\n resolveSlotContent(item.timestamp),\n ])\n : null,\n ]),\n item.description\n ? h('p', { class: 'ansh-timeline__description' }, [\n resolveSlotContent(item.description),\n ])\n : null,\n ]),\n ],\n ),\n ),\n )\n },\n})\n\n// --- Code block ---------------------------------------------------------------\n\nexport interface CodeBlockProps {\n code: string\n language?: string\n /** Show a copy button. Default `true`. */\n copyable?: boolean\n /** Show line numbers. */\n lineNumbers?: boolean\n /** Filename or title shown in the header bar. */\n filename?: string\n}\n\n/**\n * A code block with a copy button.\n *\n * No syntax highlighter, matching the React version — shipping one means a tokeniser and a theme in\n * the bundle of every app that displays a snippet, for a cost that lands on consumers who may never\n * render code at all.\n */\nexport const CodeBlock = defineComponent({\n name: 'AnshCodeBlock',\n inheritAttrs: false,\n props: {\n code: { type: String, required: true },\n language: { type: String, default: 'tsx' },\n copyable: { type: Boolean, default: true },\n lineNumbers: { type: Boolean, default: false },\n filename: { type: String, default: undefined },\n },\n setup(props, { attrs }) {\n const copied = ref(false)\n let timer: ReturnType<typeof setTimeout> | undefined\n\n const copy = async (): Promise<void> => {\n try {\n await navigator.clipboard.writeText(props.code)\n copied.value = true\n clearTimeout(timer)\n timer = setTimeout(() => {\n copied.value = false\n }, 1600)\n } catch {\n // Clipboard access is refused on insecure origins and under some permission policies. The\n // code is selectable either way, so failing quietly beats an error dialog.\n }\n }\n\n onBeforeUnmount(() => clearTimeout(timer))\n\n return () => {\n const lines = props.code.split('\\n')\n\n return h('div', { class: cx('ansh-code', attrs.class as string) }, [\n props.filename || props.copyable\n ? h('div', { class: 'ansh-code__bar' }, [\n h('span', { class: 'ansh-code__filename' }, props.filename ?? props.language),\n props.copyable\n ? h(\n 'button',\n { type: 'button', class: 'ansh-code__copy ansh-focusable', onClick: copy },\n [\n copied.value ? 'Copied' : 'Copy',\n h('span', { class: 'ansh-visually-hidden' }, ' code to clipboard'),\n ],\n )\n : null,\n ])\n : null,\n\n h('pre', { class: cx('ansh-code__pre', props.lineNumbers && 'ansh-code__pre--numbered') }, [\n h(\n 'code',\n { class: `language-${props.language}` },\n props.lineNumbers\n ? lines.map((line, index) =>\n h('span', { class: 'ansh-code__line', key: index }, [\n h(\n 'span',\n { class: 'ansh-code__lineno', 'aria-hidden': 'true' },\n String(index + 1),\n ),\n line,\n '\\n',\n ]),\n )\n : props.code,\n ),\n ]),\n ])\n }\n },\n})\n","import { type PropType, defineComponent, h } from 'vue'\nimport { cx } from '../../primitives/utils'\n\n/**\n * Progress indicators — the Vue counterpart of `@ansh-ui/react`'s `Progress`/`CircularProgress`/\n * `Meter`.\n *\n * The distinction that matters and is usually missed: **progress** is work advancing toward\n * completion (`role=\"progressbar\"`), a **meter** is a static measurement within a range\n * (`role=\"meter\"` — disk usage, a score, a quota). Announcing a disk-usage bar as progress tells a\n * screen-reader user that something is loading, which it isn't.\n */\n\nexport interface ProgressProps {\n /** `0`–`max`. Omit for an indeterminate bar. */\n value?: number\n max?: number\n size?: 'sm' | 'md' | 'lg'\n tone?: 'accent' | 'success' | 'warning' | 'danger'\n /** Accessible name — \"Upload progress\", not \"Progress\". */\n label: string\n /** Show the label and percentage above the bar. */\n showLabel?: boolean\n /** Override the announced/displayed text. */\n formatValue?: (value: number, max: number) => string\n}\n\nexport const Progress = defineComponent({\n name: 'AnshProgress',\n inheritAttrs: false,\n props: {\n value: { type: Number, default: undefined },\n max: { type: Number, default: 100 },\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: 'md' },\n tone: {\n type: String as PropType<'accent' | 'success' | 'warning' | 'danger'>,\n default: 'accent',\n },\n label: { type: String, required: true },\n showLabel: { type: Boolean, default: false },\n formatValue: {\n type: Function as PropType<(value: number, max: number) => string>,\n default: undefined,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const rawValue = props.value\n const indeterminate = rawValue === undefined\n const clamped = rawValue === undefined ? 0 : Math.min(Math.max(rawValue, 0), props.max)\n const percent = (clamped / props.max) * 100\n const text = props.formatValue\n ? props.formatValue(clamped, props.max)\n : `${Math.round(percent)}%`\n\n return h(\n 'div',\n {\n class: cx(\n 'ansh-progress',\n `ansh-progress--${props.size}`,\n `ansh-progress--${props.tone}`,\n attrs.class as string,\n ),\n },\n [\n props.showLabel\n ? h('div', { class: 'ansh-progress__labels' }, [\n h('span', { class: 'ansh-progress__label' }, props.label),\n !indeterminate ? h('span', { class: 'ansh-progress__value' }, text) : null,\n ])\n : null,\n\n h(\n 'div',\n {\n class: cx(\n 'ansh-progress__track',\n indeterminate && 'ansh-progress__track--indeterminate',\n ),\n role: 'progressbar',\n 'aria-label': props.label,\n // An indeterminate progressbar omits `aria-valuenow` entirely. Setting it to 0 would\n // be announced as \"0 percent\", implying stalled work rather than unknown duration.\n ...(indeterminate\n ? null\n : {\n 'aria-valuenow': clamped,\n 'aria-valuemin': 0,\n 'aria-valuemax': props.max,\n 'aria-valuetext': text,\n }),\n },\n [\n h('div', {\n class: 'ansh-progress__fill',\n style: indeterminate ? undefined : { width: `${percent}%` },\n }),\n ],\n ),\n ],\n )\n }\n },\n})\n\nexport interface CircularProgressProps extends Omit<ProgressProps, 'size'> {\n /** Diameter in px. Default `48`. */\n size?: number\n /** Ring thickness in px. Default `4`. */\n thickness?: number\n}\n\n/**\n * A ring progress indicator.\n *\n * Drawn with `stroke-dasharray` on an SVG circle rather than with conic gradients, so the ends can\n * be rounded and the ring animates smoothly at any size. The circle is rotated -90° so 0% starts at\n * the top, which is where everyone expects it.\n *\n * `children` in the React version — content in the middle, usually the percentage — becomes the\n * default slot here.\n */\nexport const CircularProgress = defineComponent({\n name: 'AnshCircularProgress',\n inheritAttrs: false,\n props: {\n value: { type: Number, default: undefined },\n max: { type: Number, default: 100 },\n size: { type: Number, default: 48 },\n thickness: { type: Number, default: 4 },\n tone: {\n type: String as PropType<'accent' | 'success' | 'warning' | 'danger'>,\n default: 'accent',\n },\n label: { type: String, required: true },\n formatValue: {\n type: Function as PropType<(value: number, max: number) => string>,\n default: undefined,\n },\n },\n setup(props, { attrs, slots }) {\n return () => {\n const rawValue = props.value\n const indeterminate = rawValue === undefined\n const clamped = rawValue === undefined ? 25 : Math.min(Math.max(rawValue, 0), props.max)\n const fraction = clamped / props.max\n\n const radius = (props.size - props.thickness) / 2\n const circumference = 2 * Math.PI * radius\n const text = props.formatValue\n ? props.formatValue(clamped, props.max)\n : `${Math.round(fraction * 100)}%`\n\n return h(\n 'div',\n {\n class: cx(\n 'ansh-ring',\n `ansh-ring--${props.tone}`,\n indeterminate && 'ansh-ring--indeterminate',\n attrs.class as string,\n ),\n style: { width: `${props.size}px`, height: `${props.size}px` },\n role: 'progressbar',\n 'aria-label': props.label,\n ...(indeterminate\n ? null\n : {\n 'aria-valuenow': clamped,\n 'aria-valuemin': 0,\n 'aria-valuemax': props.max,\n 'aria-valuetext': text,\n }),\n },\n [\n h(\n 'svg',\n {\n width: props.size,\n height: props.size,\n viewBox: `0 0 ${props.size} ${props.size}`,\n 'aria-hidden': 'true',\n },\n [\n h('circle', {\n class: 'ansh-ring__track',\n cx: props.size / 2,\n cy: props.size / 2,\n r: radius,\n fill: 'none',\n 'stroke-width': props.thickness,\n }),\n h('circle', {\n class: 'ansh-ring__fill',\n cx: props.size / 2,\n cy: props.size / 2,\n r: radius,\n fill: 'none',\n 'stroke-width': props.thickness,\n 'stroke-linecap': 'round',\n 'stroke-dasharray': circumference,\n 'stroke-dashoffset': circumference * (1 - fraction),\n transform: `rotate(-90 ${props.size / 2} ${props.size / 2})`,\n }),\n ],\n ),\n slots.default ? h('span', { class: 'ansh-ring__content' }, slots.default()) : null,\n ],\n )\n }\n },\n})\n\nexport interface MeterProps {\n value: number\n min?: number\n max?: number\n /** Thresholds that colour the bar — below `low` is danger, above `high` is success. */\n low?: number\n high?: number\n /** Flip the colours, for metrics where high is bad (disk usage, error rate). */\n inverted?: boolean\n label: string\n showValue?: boolean\n formatValue?: (value: number) => string\n}\n\n/**\n * A measurement within a known range — quota, score, capacity.\n *\n * `role=\"meter\"`, not `progressbar`. Colour follows the thresholds, but the numeric value is always\n * rendered too, so the state is never conveyed by colour alone.\n */\nexport const Meter = defineComponent({\n name: 'AnshMeter',\n inheritAttrs: false,\n props: {\n value: { type: Number, required: true },\n min: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n low: { type: Number, default: undefined },\n high: { type: Number, default: undefined },\n inverted: { type: Boolean, default: false },\n label: { type: String, required: true },\n showValue: { type: Boolean, default: true },\n formatValue: { type: Function as PropType<(value: number) => string>, default: undefined },\n },\n setup(props, { attrs }) {\n return () => {\n const clamped = Math.min(Math.max(props.value, props.min), props.max)\n const percent = ((clamped - props.min) / (props.max - props.min)) * 100\n\n let tone: 'danger' | 'warning' | 'success' = 'success'\n if (props.low !== undefined && clamped < props.low)\n tone = props.inverted ? 'success' : 'danger'\n else if (props.high !== undefined && clamped > props.high)\n tone = props.inverted ? 'danger' : 'success'\n else if (props.low !== undefined || props.high !== undefined) tone = 'warning'\n\n const text = props.formatValue ? props.formatValue(clamped) : String(clamped)\n\n return h('div', { class: cx('ansh-meter', `ansh-meter--${tone}`, attrs.class as string) }, [\n h('div', { class: 'ansh-progress__labels' }, [\n h('span', { class: 'ansh-progress__label' }, props.label),\n props.showValue ? h('span', { class: 'ansh-progress__value' }, text) : null,\n ]),\n h(\n 'div',\n {\n class: 'ansh-progress__track',\n role: 'meter',\n 'aria-label': props.label,\n 'aria-valuenow': clamped,\n 'aria-valuemin': props.min,\n 'aria-valuemax': props.max,\n 'aria-valuetext': text,\n },\n [h('div', { class: 'ansh-progress__fill', style: { width: `${percent}%` } })],\n ),\n ])\n }\n },\n})\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/overlay/popover.ts","../src/components/overlay/tooltip.ts","../src/components/overlay/dialog.ts","../src/components/overlay/drawer.ts","../src/components/overlay/menu.ts"],"names":["defineComponent","ref","provide","inject","onBeforeUnmount","h","Teleport","computed","index"],"mappings":"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","file":"chunk-HIVA75XC.js","sourcesContent":["import {\n type ComputedRef,\n type InjectionKey,\n type PropType,\n type Ref,\n Teleport,\n computed,\n defineComponent,\n h,\n inject,\n onBeforeUnmount,\n provide,\n ref,\n} from 'vue'\nimport { type Placement } from '../../primitives/position'\nimport { cx, useId } from '../../primitives/utils'\nimport { useAnchoredPosition } from '../../primitives/use-anchored-position'\nimport { useControllableState } from '../../primitives/use-controllable-state'\nimport { useDismiss } from '../../primitives/use-dismiss'\nimport { useAutoFocus, useFocusRestore, useFocusTrap } from '../../primitives/focus'\nimport { usePresence } from '../../primitives/presence'\n\n/**\n * A popover — the Vue counterpart of `@ansh-ui/react`'s `Popover`, and the pattern every other\n * overlay in this package (`Tooltip`, `Dialog`, `Drawer`, `DropdownMenu`, `ContextMenu`) follows.\n *\n * The compound API (`Popover` / `PopoverTrigger` / `PopoverContent`) rather than a single component\n * with a `content` prop, because the trigger needs attributes that only the popover can supply —\n * `aria-expanded`, `aria-controls` — and a `content` prop can't put them anywhere. Context is\n * distributed with `provide`/`inject` in place of React context; `open` is a `ComputedRef` for the\n * same controlled/uncontrolled reason `useFieldControl` is (see `form/field.ts`).\n *\n * Focus moves into the content on open and returns to the trigger on close, and Tab is trapped\n * inside when `modal`. A popover containing a form that lets Tab wander onto the page behind it is a\n * popover keyboard users cannot fill in.\n *\n * ```vue\n * <Popover v-model:open=\"open\">\n * <PopoverTrigger>Open</PopoverTrigger>\n * <PopoverContent label=\"Settings\">…</PopoverContent>\n * </Popover>\n * ```\n */\n\ninterface PopoverContextValue {\n open: ComputedRef<boolean>\n setOpen: (open: boolean) => void\n triggerRef: Ref<HTMLElement | null>\n contentId: string\n placement: Placement\n offset: number\n modal: boolean\n}\n\nconst PopoverKey: InjectionKey<PopoverContextValue> = Symbol('ansh-popover')\n\nfunction usePopoverContext(component: string): PopoverContextValue {\n const context = inject(PopoverKey, null)\n if (!context) throw new Error(`<${component}> must be rendered inside <Popover>.`)\n return context\n}\n\nexport const Popover = defineComponent({\n name: 'AnshPopover',\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: false },\n placement: { type: String as PropType<Placement>, default: 'bottom' },\n /** Gap from the trigger, in px. Default `8`. */\n offset: { type: Number, default: 8 },\n /** Trap focus and block interaction behind. Default `false` — most popovers are non-modal. */\n modal: { type: Boolean, default: false },\n },\n emits: ['update:open'],\n setup(props, { slots, emit }) {\n const [isOpen, setOpen] = useControllableState(\n () => props.open,\n props.defaultOpen,\n (next) => emit('update:open', next),\n )\n const triggerRef = ref<HTMLElement | null>(null)\n const contentId = useId('popover')\n\n provide(PopoverKey, {\n open: isOpen,\n setOpen,\n triggerRef,\n contentId,\n get placement() {\n return props.placement\n },\n get offset() {\n return props.offset\n },\n get modal() {\n return props.modal\n },\n })\n\n return () => slots.default?.()\n },\n})\n\nexport const PopoverTrigger = defineComponent({\n name: 'AnshPopoverTrigger',\n inheritAttrs: false,\n props: {\n /** Tag to render. Default `'button'`. */\n as: { type: String, default: 'button' },\n },\n setup(props, { slots, attrs }) {\n const ctx = usePopoverContext('PopoverTrigger')\n\n return () => {\n const { onClick, ...restAttrs } = attrs as Record<string, unknown>\n return h(\n props.as,\n {\n ref: ctx.triggerRef,\n ...(props.as === 'button' ? { type: 'button' } : null),\n 'aria-haspopup': 'dialog',\n 'aria-expanded': ctx.open.value,\n 'aria-controls': ctx.open.value ? ctx.contentId : undefined,\n ...restAttrs,\n onClick: (event: MouseEvent) => {\n ;(onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented) return\n ctx.setOpen(!ctx.open.value)\n },\n },\n slots.default?.(),\n )\n }\n },\n})\n\nexport const PopoverContent = defineComponent({\n name: 'AnshPopoverContent',\n inheritAttrs: false,\n props: {\n /** Draw an arrow pointing at the trigger. Default `false`. */\n arrow: { type: Boolean, default: false },\n /** Match the trigger's width — for a popover acting as a dropdown panel. */\n matchWidth: { type: Boolean, default: false },\n /** Accessible name. Required unless the content contains its own heading. */\n label: { type: String, default: undefined },\n },\n setup(props, { slots, attrs }) {\n const ctx = usePopoverContext('PopoverContent')\n const contentRef = ref<HTMLDivElement | null>(null)\n\n const { mounted, state } = usePresence(ctx.open, contentRef)\n\n const { position } = useAnchoredPosition(ctx.triggerRef, contentRef, mounted, {\n placement: ctx.placement,\n offset: ctx.offset,\n matchWidth: props.matchWidth,\n arrowSize: props.arrow ? 10 : 0,\n })\n\n useDismiss(contentRef, ctx.open, () => ctx.setOpen(false), { ignore: [ctx.triggerRef] })\n const trapActive = computed(() => ctx.open.value && ctx.modal)\n useFocusTrap(contentRef, trapActive)\n useAutoFocus(contentRef, ctx.open)\n useFocusRestore(ctx.open)\n\n return () => {\n if (!mounted.value) return null\n\n const { class: attrClass, style: attrStyle, ...restAttrs } = attrs as Record<string, unknown>\n\n return h(Teleport, { to: 'body' }, [\n h(\n 'div',\n {\n ref: contentRef,\n id: ctx.contentId,\n role: 'dialog',\n 'aria-modal': ctx.modal || undefined,\n ...(props.label ? { 'aria-label': props.label } : null),\n tabindex: '-1',\n 'data-state': state.value,\n 'data-side': position.value.side,\n class: cx('ansh-popover', attrClass as string),\n style: [position.value.style, attrStyle as Record<string, string>],\n ...restAttrs,\n },\n [\n slots.default?.(),\n props.arrow && position.value.arrowStyle\n ? h('span', {\n class: 'ansh-popover__arrow',\n style: position.value.arrowStyle,\n 'aria-hidden': 'true',\n })\n : null,\n ],\n ),\n ])\n }\n },\n})\n\n// --- HoverCard --------------------------------------------------------------\n\n/**\n * A rich preview shown on hover — a user card on an @mention, a link preview.\n *\n * Two delays, not one. The open delay stops cards firing as the pointer sweeps across a paragraph of\n * links. The close delay is what lets the pointer travel from the trigger to the card without it\n * vanishing en route, which is the failure that makes hover cards feel broken.\n *\n * Hover-only content is invisible to keyboard and touch users, so this also opens on focus. It is\n * strictly for *supplementary* information — anything essential belongs in a click-opened popover.\n *\n * The React version takes the card's body as a `content` prop; here it's the `#content` slot and\n * the trigger is the default slot — passing a render tree through a prop is idiomatic React and\n * awkward Vue, so this is one of the few places the two APIs deliberately differ:\n * ```vue\n * <HoverCard>\n * @user\n * <template #content>…</template>\n * </HoverCard>\n * ```\n */\nexport const HoverCard = defineComponent({\n name: 'AnshHoverCard',\n props: {\n /** Delay before opening, in ms. Default `500`. */\n openDelay: { type: Number, default: 500 },\n /** Delay before closing, in ms. Default `200`. */\n closeDelay: { type: Number, default: 200 },\n placement: { type: String as PropType<Placement>, default: 'bottom' },\n },\n setup(props, { slots, attrs }) {\n const open = ref(false)\n const triggerRef = ref<HTMLElement | null>(null)\n const cardRef = ref<HTMLDivElement | null>(null)\n const id = useId('hovercard')\n let timer: ReturnType<typeof setTimeout> | undefined\n\n const { mounted, state } = usePresence(open, cardRef)\n const { position } = useAnchoredPosition(triggerRef, cardRef, mounted, {\n placement: props.placement,\n offset: 8,\n })\n\n const schedule = (next: boolean): void => {\n clearTimeout(timer)\n timer = setTimeout(\n () => {\n open.value = next\n },\n next ? props.openDelay : props.closeDelay,\n )\n }\n\n onBeforeUnmount(() => clearTimeout(timer))\n\n return () =>\n h('span', { style: { display: 'contents' } }, [\n h(\n 'span',\n {\n ref: triggerRef,\n class: 'ansh-hovercard__trigger',\n // `aria-describedby` rather than `aria-details`: support for details is still patchy,\n // and a description is the honest relationship for supplementary content.\n 'aria-describedby': open.value ? id : undefined,\n onMouseenter: () => schedule(true),\n onMouseleave: () => schedule(false),\n onFocus: () => {\n open.value = true\n },\n onBlur: () => {\n open.value = false\n },\n },\n slots.default?.(),\n ),\n\n mounted.value\n ? h(Teleport, { to: 'body' }, [\n h(\n 'div',\n {\n ref: cardRef,\n id,\n role: 'tooltip',\n 'data-state': state.value,\n class: cx('ansh-hovercard', attrs.class as string),\n style: position.value.style,\n // Keeping the card open while the pointer is over it is what makes its contents\n // clickable at all.\n onMouseenter: () => schedule(true),\n onMouseleave: () => schedule(false),\n },\n slots.content?.(),\n ),\n ])\n : null,\n ])\n },\n})\n","import {\n type InjectionKey,\n type PropType,\n type Ref,\n Teleport,\n defineComponent,\n h,\n inject,\n onBeforeUnmount,\n provide,\n ref,\n} from 'vue'\nimport { type Placement } from '../../primitives/position'\nimport { type SlotContent, cx, resolveSlotContent, useId } from '../../primitives/utils'\nimport { useAnchoredPosition } from '../../primitives/use-anchored-position'\nimport { useDismiss } from '../../primitives/use-dismiss'\nimport { usePresence } from '../../primitives/presence'\n\n/**\n * Tooltips — the Vue counterpart of `@ansh-ui/react`'s `Tooltip`.\n *\n * The rules this follows, all from WCAG 1.4.13 (Content on Hover or Focus) and the ARIA practices:\n *\n * - **Focus shows it too.** A tooltip only on hover doesn't exist for keyboard users.\n * - **Escape dismisses it** without moving focus, for anyone whose magnifier it is covering.\n * - **It is a description, not a name.** Wired with `aria-describedby`, so the trigger keeps its\n * own label. Using it as the label means an icon button announces nothing until the tooltip\n * opens, which on touch is never.\n * - **It never contains interactive content.** There is no way to reach a button inside a tooltip\n * with a keyboard. That's what `HoverCard` and `Popover` are for.\n *\n * Never put essential information here: tooltips do not appear on touch devices at all.\n *\n * React merges the tooltip's handlers onto the trigger element itself via `Slot` (no wrapper node\n * reaches the DOM). There's no `asChild` equivalent here, so — matching `HoverCard`, the established\n * pattern for exactly this shape in this package — the trigger content is wrapped in a\n * `<span style=\"display:contents\">` that carries the ARIA and event wiring instead; the wrapper adds\n * no box of its own. Listeners bind to `focusin`/`focusout` rather than `focus`/`blur` (which do not\n * bubble) so a focusable element *nested inside* the wrapper — the common case, an icon button — still\n * opens the tooltip on Tab, not only a direct hit on the wrapper itself.\n */\n\ninterface TooltipGroupValue {\n /** Whether some tooltip in the group is already open — the next skips its delay. */\n active: Ref<boolean>\n setActive: (active: boolean) => void\n delay: number\n}\n\nconst TooltipGroupKey: InjectionKey<TooltipGroupValue> = Symbol('ansh-tooltip-group')\n\n/**\n * Share a delay across a set of tooltips.\n *\n * Once one is open, moving to a neighbour shows its tooltip immediately. Without this, scanning a\n * toolbar means waiting out the delay on every single button — the behaviour every desktop OS gets\n * right and most web implementations miss.\n *\n * ```vue\n * <TooltipProvider :delay=\"600\">\n * <Toolbar />\n * </TooltipProvider>\n * ```\n */\nexport const TooltipProvider = defineComponent({\n name: 'AnshTooltipProvider',\n props: {\n /** Delay before the first tooltip in a group opens, in ms. Default `600`. */\n delay: { type: Number, default: 600 },\n },\n setup(props, { slots }) {\n const active = ref(false)\n\n provide(TooltipGroupKey, {\n active,\n setActive: (next: boolean) => {\n active.value = next\n },\n get delay() {\n return props.delay\n },\n })\n\n return () => slots.default?.()\n },\n})\n\nexport const Tooltip = defineComponent({\n name: 'AnshTooltip',\n inheritAttrs: false,\n props: {\n /** The tooltip text. Keep it short — it is read as one description. */\n content: { type: [String, Object, Function] as PropType<SlotContent>, required: true },\n placement: { type: String as PropType<Placement>, default: 'top' },\n /** Override the group delay, in ms. */\n delay: { type: Number, default: undefined },\n /** Draw an arrow. Default `true`. */\n arrow: { type: Boolean, default: true },\n disabled: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const group = inject(TooltipGroupKey, null)\n const open = ref(false)\n\n const triggerRef = ref<HTMLElement | null>(null)\n const tipRef = ref<HTMLDivElement | null>(null)\n let timer: ReturnType<typeof setTimeout> | undefined\n const id = useId('tooltip')\n\n const { mounted, state } = usePresence(open, tipRef)\n const { position } = useAnchoredPosition(triggerRef, tipRef, mounted, {\n placement: props.placement,\n offset: 6,\n arrowSize: props.arrow ? 8 : 0,\n })\n\n const effectiveDelay = (): number => props.delay ?? group?.delay ?? 600\n\n const show = (immediate = false): void => {\n if (props.disabled) return\n clearTimeout(timer)\n // Skip the delay when a sibling tooltip is already open, or on focus — a keyboard user has\n // already made a deliberate move and shouldn't be made to wait.\n if (immediate || group?.active.value) {\n open.value = true\n group?.setActive(true)\n return\n }\n timer = setTimeout(() => {\n open.value = true\n group?.setActive(true)\n }, effectiveDelay())\n }\n\n const hide = (): void => {\n clearTimeout(timer)\n open.value = false\n // Grace period before the group goes cold, so moving between adjacent triggers stays instant.\n timer = setTimeout(() => group?.setActive(false), 200)\n }\n\n onBeforeUnmount(() => clearTimeout(timer))\n\n // WCAG 1.4.13: dismissable without moving the pointer or focus. Routed through `useDismiss`\n // rather than a bare document listener so it composes with the layer stack — a tooltip nested\n // inside a dialog doesn't steal Escape from the dialog beneath it.\n useDismiss(\n tipRef,\n open,\n () => {\n open.value = false\n group?.setActive(false)\n },\n { outsidePress: false, escapeKey: true },\n )\n\n return () => {\n const { class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n\n return h(\n 'span',\n {\n // No box of its own — see the module comment on why this wrapper exists at all.\n style: { display: 'contents' },\n },\n [\n h(\n 'span',\n {\n ...restAttrs,\n ref: triggerRef,\n class: cx('ansh-tooltip-trigger', attrClass as string),\n 'aria-describedby': open.value ? id : undefined,\n onMouseenter: () => show(),\n onMouseleave: hide,\n onFocusin: () => show(true),\n onFocusout: hide,\n },\n slots.default?.(),\n ),\n\n mounted.value && !props.disabled\n ? h(Teleport, { to: 'body' }, [\n h(\n 'div',\n {\n ref: tipRef,\n id,\n role: 'tooltip',\n 'data-state': state.value,\n 'data-side': position.value.side,\n class: 'ansh-tooltip',\n style: position.value.style,\n },\n [\n resolveSlotContent(props.content),\n props.arrow && position.value.arrowStyle\n ? h('span', {\n class: 'ansh-tooltip__arrow',\n style: position.value.arrowStyle,\n 'aria-hidden': 'true',\n })\n : null,\n ],\n ),\n ])\n : null,\n ],\n )\n }\n },\n})\n","import { type PropType, type Ref, Teleport, defineComponent, h, ref } from 'vue'\nimport { type SlotContent, cx, resolveSlotContent, useId } from '../../primitives/utils'\nimport { useAutoFocus, useFocusRestore, useFocusTrap } from '../../primitives/focus'\nimport { usePresence } from '../../primitives/presence'\nimport { useDismiss, useScrollLock } from '../../primitives/use-dismiss'\nimport { useControllableState } from '../../primitives/use-controllable-state'\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full'\n\n/**\n * A modal dialog — the Vue counterpart of `@ansh-ui/react`'s `Dialog`.\n *\n * Not `<dialog showModal>`: the native element's top-layer behaviour is genuinely better, but its\n * backdrop cannot be animated consistently, `::backdrop` inherits nothing, and closing behaviour\n * differs enough across browsers to need working around anyway. The pieces the native element gives\n * for free — focus trap, scroll lock, inert background, focus restore — are all here explicitly, via\n * the same primitives `Popover` uses.\n *\n * `title` is a required prop rather than an optional slot. Every accessibility audit of a component\n * library turns up unnamed dialogs, and the reliable fix is to make the name impossible to omit.\n *\n * React takes the body as `children` and the actions row as a `footer` prop; here they're the\n * default slot and the `#footer` slot respectively — passing a render tree through a prop is\n * idiomatic React and awkward Vue.\n *\n * ```vue\n * <Dialog v-model:open=\"open\" title=\"Delete project\" description=\"This cannot be undone.\">\n * <p>Body</p>\n * <template #footer>\n * <button @click=\"open = false\">Cancel</button>\n * </template>\n * </Dialog>\n * ```\n */\nexport const Dialog = defineComponent({\n name: 'AnshDialog',\n inheritAttrs: false,\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: false },\n /** The dialog's accessible name. Required — a dialog announced as just \"dialog\" is useless. */\n title: { type: [String, Object, Function] as PropType<SlotContent>, required: true },\n /** Supporting text, wired to `aria-describedby`. */\n description: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n size: { type: String as PropType<DialogSize>, default: 'md' },\n /** Show the close button. Default `true`. */\n showClose: { type: Boolean, default: true },\n /** Allow closing via scrim click and Escape. Default `true`. */\n dismissable: { type: Boolean, default: true },\n /** Element to focus on open. Defaults to the first tabbable one. */\n initialFocus: { type: Object as PropType<Ref<HTMLElement | null>>, default: undefined },\n },\n emits: ['update:open'],\n setup(props, { slots, attrs, emit }) {\n const [isOpen, setOpen] = useControllableState(\n () => props.open,\n props.defaultOpen,\n (next) => emit('update:open', next),\n )\n\n const panelRef = ref<HTMLDivElement | null>(null)\n const id = useId('dialog')\n const titleId = `${id}-title`\n const descriptionId = `${id}-description`\n\n const { mounted, state } = usePresence(isOpen, panelRef)\n\n const close = (): void => {\n if (props.dismissable) setOpen(false)\n }\n\n useDismiss(panelRef, isOpen, close, {\n outsidePress: props.dismissable,\n escapeKey: props.dismissable,\n })\n useFocusTrap(panelRef, isOpen)\n useAutoFocus(panelRef, isOpen, props.initialFocus)\n useFocusRestore(isOpen)\n useScrollLock(isOpen)\n\n return () => {\n if (!mounted.value) return null\n\n const { class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n\n return h(Teleport, { to: 'body' }, [\n h('div', { class: 'ansh-dialog__layer', 'data-state': state.value }, [\n // The scrim is not a button and takes no focus — it's decorative. Dismissal is handled\n // by `useDismiss` on a pointerdown outside the panel, which also covers the gap around\n // the panel that isn't the scrim element itself.\n h('div', {\n class: 'ansh-dialog__scrim',\n 'data-state': state.value,\n 'aria-hidden': 'true',\n }),\n\n h(\n 'div',\n {\n ref: panelRef,\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-labelledby': titleId,\n ...(props.description ? { 'aria-describedby': descriptionId } : null),\n tabindex: '-1',\n 'data-state': state.value,\n class: cx('ansh-dialog', `ansh-dialog--${props.size}`, attrClass as string),\n ...restAttrs,\n },\n [\n h('header', { class: 'ansh-dialog__header' }, [\n h('div', { class: 'ansh-dialog__heading' }, [\n h('h2', { class: 'ansh-dialog__title', id: titleId }, [\n resolveSlotContent(props.title),\n ]),\n props.description\n ? h('p', { class: 'ansh-dialog__description', id: descriptionId }, [\n resolveSlotContent(props.description),\n ])\n : null,\n ]),\n\n props.showClose\n ? h(\n 'button',\n {\n type: 'button',\n class: 'ansh-dialog__close ansh-focusable',\n 'aria-label': 'Close dialog',\n onClick: () => setOpen(false),\n },\n [\n h(\n 'svg',\n {\n viewBox: '0 0 16 16',\n width: '14',\n height: '14',\n 'aria-hidden': 'true',\n },\n [\n h('path', {\n d: 'M4 4l8 8M12 4l-8 8',\n stroke: 'currentColor',\n 'stroke-width': '1.75',\n 'stroke-linecap': 'round',\n fill: 'none',\n }),\n ],\n ),\n ],\n )\n : null,\n ]),\n\n slots.default ? h('div', { class: 'ansh-dialog__body' }, slots.default()) : null,\n slots.footer ? h('footer', { class: 'ansh-dialog__footer' }, slots.footer()) : null,\n ],\n ),\n ]),\n ])\n }\n },\n})\n\n/**\n * A confirmation dialog — the Vue counterpart of `@ansh-ui/react`'s `AlertDialog`.\n *\n * `role=\"alertdialog\"` and `aria-describedby` on the message, which makes a screen reader read the\n * consequence immediately on open rather than waiting for the user to navigate to it. That is the\n * entire difference from a regular dialog, and it matters precisely because these appear before\n * irreversible actions.\n *\n * It is deliberately **not** dismissable by clicking the scrim: an accidental click outside should\n * not silently cancel a decision the user was asked to make. Escape still works, because trapping\n * someone in a dialog is worse. Neither is configurable — unlike `Dialog`, there is no\n * `dismissable` prop, matching the React version exactly.\n *\n * Focus starts on **Cancel**, not Confirm. A keyboard user who hits Enter reflexively should not\n * delete their account.\n *\n * React takes `onConfirm`/`onCancel` as function props (`onConfirm` can return a `Promise`, awaited\n * by the caller before flipping `busy` back off). Function props aren't the Vue idiom for actions —\n * every other component in this package emits an event for them instead (see `emits:\n * ['update:modelValue', ...]` throughout `components/form`) — so this emits `confirm`/`cancel`\n * rather than accepting callback props. The caller drives `busy` themselves either way.\n */\nexport const AlertDialog = defineComponent({\n name: 'AnshAlertDialog',\n inheritAttrs: false,\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: false },\n title: { type: [String, Object, Function] as PropType<SlotContent>, required: true },\n description: { type: [String, Object, Function] as PropType<SlotContent>, required: true },\n /** Confirm button text. Default `'Confirm'`. */\n confirmLabel: { type: String, default: 'Confirm' },\n cancelLabel: { type: String, default: 'Cancel' },\n /** Style the confirm action as destructive. */\n destructive: { type: Boolean, default: false },\n /** Disable the buttons while an async confirm runs. */\n busy: { type: Boolean, default: false },\n },\n emits: ['update:open', 'confirm', 'cancel'],\n setup(props, { attrs, emit }) {\n const [isOpen, setOpen] = useControllableState(\n () => props.open,\n props.defaultOpen,\n (next) => emit('update:open', next),\n )\n\n const panelRef = ref<HTMLDivElement | null>(null)\n const cancelRef = ref<HTMLButtonElement | null>(null)\n const id = useId('alertdialog')\n const titleId = `${id}-title`\n const descriptionId = `${id}-description`\n\n const { mounted, state } = usePresence(isOpen, panelRef)\n\n const cancel = (): void => {\n emit('cancel')\n setOpen(false)\n }\n\n useDismiss(panelRef, isOpen, cancel, { outsidePress: false, escapeKey: true })\n useFocusTrap(panelRef, isOpen)\n useAutoFocus(panelRef, isOpen, cancelRef)\n useFocusRestore(isOpen)\n useScrollLock(isOpen)\n\n return () => {\n if (!mounted.value) return null\n\n const { class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n\n return h(Teleport, { to: 'body' }, [\n h('div', { class: 'ansh-dialog__layer', 'data-state': state.value }, [\n h('div', {\n class: 'ansh-dialog__scrim',\n 'data-state': state.value,\n 'aria-hidden': 'true',\n }),\n\n h(\n 'div',\n {\n ref: panelRef,\n role: 'alertdialog',\n 'aria-modal': 'true',\n 'aria-labelledby': titleId,\n 'aria-describedby': descriptionId,\n tabindex: '-1',\n 'data-state': state.value,\n class: cx(\n 'ansh-dialog',\n 'ansh-dialog--sm',\n 'ansh-dialog--alert',\n attrClass as string,\n ),\n ...restAttrs,\n },\n [\n h('div', { class: 'ansh-dialog__body' }, [\n props.destructive\n ? h(\n 'span',\n {\n class: 'ansh-dialog__alert-icon ansh-dialog__alert-icon--danger',\n 'aria-hidden': 'true',\n },\n [\n h(\n 'svg',\n {\n viewBox: '0 0 24 24',\n width: '20',\n height: '20',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': '1.75',\n },\n [\n h('path', { d: 'M12 8v5', 'stroke-linecap': 'round' }),\n h('circle', {\n cx: '12',\n cy: '16.5',\n r: '1',\n fill: 'currentColor',\n stroke: 'none',\n }),\n h('path', {\n d: 'M10.3 3.9L2.6 17.4A2 2 0 004.3 20.4h15.4a2 2 0 001.7-3L13.7 3.9a2 2 0 00-3.4 0z',\n 'stroke-linejoin': 'round',\n }),\n ],\n ),\n ],\n )\n : null,\n\n h('h2', { class: 'ansh-dialog__title', id: titleId }, [\n resolveSlotContent(props.title),\n ]),\n h('p', { class: 'ansh-dialog__description', id: descriptionId }, [\n resolveSlotContent(props.description),\n ]),\n ]),\n\n h('footer', { class: 'ansh-dialog__footer' }, [\n h(\n 'button',\n {\n ref: cancelRef,\n type: 'button',\n class: 'ansh-btn ansh-btn--ghost ansh-btn--sm ansh-focusable',\n disabled: props.busy,\n onClick: cancel,\n },\n [props.cancelLabel],\n ),\n h(\n 'button',\n {\n type: 'button',\n class: cx(\n 'ansh-btn',\n 'ansh-btn--sm',\n props.destructive ? 'ansh-btn--danger' : 'ansh-btn--solid',\n 'ansh-focusable',\n ),\n disabled: props.busy,\n onClick: () => emit('confirm'),\n },\n [\n props.busy\n ? h('span', { class: 'ansh-spinner ansh-spinner--sm', 'aria-hidden': 'true' })\n : null,\n props.confirmLabel,\n ],\n ),\n ]),\n ],\n ),\n ]),\n ])\n }\n },\n})\n\n/** Layout helper for a dialog's action row. Right-aligned, reversed on narrow screens. */\nexport const DialogFooter = defineComponent({\n name: 'AnshDialogFooter',\n setup(_props, { slots, attrs }) {\n return () =>\n h('div', { class: cx('ansh-dialog__actions', attrs.class as string) }, slots.default?.())\n },\n})\n","import { type PropType, Teleport, computed, defineComponent, h, ref } from 'vue'\nimport { type SlotContent, cx, resolveSlotContent, useId } from '../../primitives/utils'\nimport { useAutoFocus, useFocusRestore, useFocusTrap } from '../../primitives/focus'\nimport { usePresence } from '../../primitives/presence'\nimport { useDismiss, useScrollLock } from '../../primitives/use-dismiss'\nimport { useControllableState } from '../../primitives/use-controllable-state'\n\nexport type DrawerSide = 'left' | 'right' | 'top' | 'bottom'\n\n/**\n * A panel that slides in from an edge — the Vue counterpart of `@ansh-ui/react`'s `Drawer`.\n *\n * Same accessibility contract as `Dialog` — it is a dialog, just positioned differently. The reason\n * it exists separately is that the *content* pattern differs: drawers hold navigation, filters and\n * detail views that stay open while the user works, so they support a non-modal mode where the page\n * behind stays usable.\n *\n * On a phone a bottom drawer is the right shape for what would be a dialog on a desktop; that's a\n * layout decision for the consumer, which is why `side` is a plain prop rather than a breakpoint\n * rule baked in here.\n *\n * ```vue\n * <Drawer v-model:open=\"open\" side=\"left\" title=\"Filters\">\n * …\n * </Drawer>\n * ```\n */\nexport const Drawer = defineComponent({\n name: 'AnshDrawer',\n inheritAttrs: false,\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: false },\n /** Which edge it slides from. Default `'right'`. */\n side: { type: String as PropType<DrawerSide>, default: 'right' },\n title: { type: [String, Object, Function] as PropType<SlotContent>, required: true },\n description: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n /** Width for left/right, height for top/bottom. Default `'22rem'`. */\n size: { type: String, default: '22rem' },\n showClose: { type: Boolean, default: true },\n /** Block interaction behind and lock scroll. Default `true`. */\n modal: { type: Boolean, default: true },\n dismissable: { type: Boolean, default: true },\n },\n emits: ['update:open'],\n setup(props, { slots, attrs, emit }) {\n const [isOpen, setOpen] = useControllableState(\n () => props.open,\n props.defaultOpen,\n (next) => emit('update:open', next),\n )\n\n const panelRef = ref<HTMLDivElement | null>(null)\n const id = useId('drawer')\n const titleId = `${id}-title`\n const descriptionId = `${id}-description`\n\n const { mounted, state } = usePresence(isOpen, panelRef)\n\n const close = (): void => {\n if (props.dismissable) setOpen(false)\n }\n\n useDismiss(panelRef, isOpen, close, {\n outsidePress: props.dismissable && props.modal,\n escapeKey: props.dismissable,\n })\n const trapActive = computed(() => isOpen.value && props.modal)\n useFocusTrap(panelRef, trapActive)\n useAutoFocus(panelRef, isOpen)\n useFocusRestore(isOpen)\n const scrollLockActive = computed(() => isOpen.value && props.modal)\n useScrollLock(scrollLockActive)\n\n return () => {\n if (!mounted.value) return null\n\n const { class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n const horizontal = props.side === 'left' || props.side === 'right'\n\n return h(Teleport, { to: 'body' }, [\n h(\n 'div',\n {\n class: cx('ansh-drawer__layer', !props.modal && 'ansh-drawer__layer--inline'),\n 'data-state': state.value,\n },\n [\n props.modal\n ? h('div', {\n class: 'ansh-dialog__scrim',\n 'data-state': state.value,\n 'aria-hidden': 'true',\n })\n : null,\n\n h(\n 'div',\n {\n ref: panelRef,\n role: 'dialog',\n 'aria-modal': props.modal || undefined,\n 'aria-labelledby': titleId,\n ...(props.description ? { 'aria-describedby': descriptionId } : null),\n tabindex: '-1',\n 'data-state': state.value,\n 'data-side': props.side,\n class: cx('ansh-drawer', `ansh-drawer--${props.side}`, attrClass as string),\n // The size travels as a custom property so the closed-state transform can be\n // written in terms of it — `translateX(100%)` alone breaks when the panel has a\n // max-width.\n style: {\n [horizontal ? 'width' : 'height']: props.size,\n '--ansh-drawer-size': props.size,\n } as Record<string, string>,\n ...restAttrs,\n },\n [\n h('header', { class: 'ansh-drawer__header' }, [\n h('div', { class: 'ansh-dialog__heading' }, [\n h('h2', { class: 'ansh-dialog__title', id: titleId }, [\n resolveSlotContent(props.title),\n ]),\n props.description\n ? h('p', { class: 'ansh-dialog__description', id: descriptionId }, [\n resolveSlotContent(props.description),\n ])\n : null,\n ]),\n\n props.showClose\n ? h(\n 'button',\n {\n type: 'button',\n class: 'ansh-dialog__close ansh-focusable',\n 'aria-label': 'Close panel',\n onClick: () => setOpen(false),\n },\n [\n h(\n 'svg',\n {\n viewBox: '0 0 16 16',\n width: '14',\n height: '14',\n 'aria-hidden': 'true',\n },\n [\n h('path', {\n d: 'M4 4l8 8M12 4l-8 8',\n stroke: 'currentColor',\n 'stroke-width': '1.75',\n 'stroke-linecap': 'round',\n fill: 'none',\n }),\n ],\n ),\n ],\n )\n : null,\n ]),\n\n h('div', { class: 'ansh-drawer__body' }, slots.default?.()),\n slots.footer ? h('footer', { class: 'ansh-drawer__footer' }, slots.footer()) : null,\n ],\n ),\n ],\n ),\n ])\n }\n },\n})\n","import {\n type PropType,\n type Ref,\n type VNode,\n Teleport,\n computed,\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n ref,\n} from 'vue'\nimport { type Placement } from '../../primitives/position'\nimport { type SlotContent, cx, resolveSlotContent, useId } from '../../primitives/utils'\nimport { useAnchoredPosition } from '../../primitives/use-anchored-position'\nimport { useControllableState } from '../../primitives/use-controllable-state'\nimport { useDismiss } from '../../primitives/use-dismiss'\nimport { usePresence } from '../../primitives/presence'\n\n/**\n * Menus — dropdown and context. The Vue counterpart of `@ansh-ui/react`'s `DropdownMenu` /\n * `ContextMenu`.\n *\n * Data-driven (`:items=\"[…]\"`) rather than compound. Menus are almost always built from a\n * configuration array anyway — permissions filter entries, a selection decides what's enabled — and\n * expressing that as template children means `v-if` scattered through the tree, which breaks keyboard\n * navigation indices in ways that are painful to debug.\n *\n * Follows the ARIA menu pattern, where **DOM focus moves to the item** (unlike a listbox, which\n * keeps focus on the container). That's what makes Right/Left arrow submenu traversal work the way\n * it does in every desktop application.\n *\n * Keyboard navigation (`Home`/`End`/arrows/typeahead) is implemented directly rather than through\n * `useRovingFocus`: that primitive's arrow-key stepping doesn't skip disabled rows, while this menu's\n * navigation must — landing the roving tab stop on a disabled item is the one behaviour the ARIA menu\n * pattern explicitly forbids. The tabindex-per-row wiring below (`0` on the active row, `-1`\n * elsewhere) is the same roving-tabindex shape `useRovingFocus` implements, just with the\n * skip-disabled search this menu needs and the extra keys (`Enter`, `Escape`, `Tab`, typeahead,\n * `ArrowRight`/`ArrowLeft` for submenus) a generic composite widget hook doesn't know about — ported\n * directly from `@ansh-ui/react`'s own hand-rolled `move()`/`activate()`.\n */\n\ninterface MenuItemBase {\n id?: string\n disabled?: boolean\n}\n\nexport interface MenuAction extends MenuItemBase {\n type?: 'item'\n label: SlotContent\n icon?: SlotContent\n /** Display-only shortcut hint, e.g. `'⌘S'`. */\n shortcut?: string\n /** Style as destructive, and mark it in the accessible name. */\n danger?: boolean\n onSelect?: () => void\n}\n\nexport interface MenuCheckbox extends MenuItemBase {\n type: 'checkbox'\n label: SlotContent\n checked: boolean\n onChange: (checked: boolean) => void\n shortcut?: string\n}\n\nexport interface MenuRadioGroup {\n type: 'radio'\n value: string\n onChange: (value: string) => void\n options: ReadonlyArray<{ value: string; label: SlotContent; disabled?: boolean }>\n}\n\nexport interface MenuSubmenu extends MenuItemBase {\n type: 'submenu'\n label: SlotContent\n icon?: SlotContent\n items: readonly MenuEntry[]\n}\n\nexport type MenuEntry =\n | MenuAction\n | MenuCheckbox\n | MenuRadioGroup\n | MenuSubmenu\n | { type: 'separator' }\n | { type: 'label'; label: SlotContent }\n\n/** Flatten to the rows that can actually receive focus, for keyboard navigation. */\ninterface Focusable {\n entry: MenuEntry\n /** For radio groups, which option this row is. */\n optionIndex?: number\n disabled: boolean\n}\n\nfunction flatten(items: readonly MenuEntry[]): Focusable[] {\n const rows: Focusable[] = []\n for (const entry of items) {\n if ('type' in entry && (entry.type === 'separator' || entry.type === 'label')) continue\n if ('type' in entry && entry.type === 'radio') {\n entry.options.forEach((option, optionIndex) => {\n rows.push({ entry, optionIndex, disabled: option.disabled ?? false })\n })\n continue\n }\n rows.push({ entry, disabled: (entry as MenuItemBase).disabled ?? false })\n }\n return rows\n}\n\n/**\n * A dropdown menu.\n *\n * ```vue\n * <DropdownMenu :items=\"[\n * { label: 'Edit', shortcut: '⌘E', onSelect: edit },\n * { type: 'separator' },\n * { label: 'Delete', danger: true, onSelect: remove },\n * ]\">\n * <IconButton label=\"Actions\" />\n * </DropdownMenu>\n * ```\n */\nexport const DropdownMenu = defineComponent({\n name: 'AnshDropdownMenu',\n inheritAttrs: false,\n props: {\n items: { type: Array as PropType<readonly MenuEntry[]>, required: true },\n placement: { type: String as PropType<Placement>, default: 'bottom-start' },\n /** Accessible name for the menu itself. */\n label: { type: String, default: 'Menu' },\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: false },\n },\n emits: ['update:open'],\n setup(props, { slots, attrs, emit }) {\n const [isOpen, setOpen] = useControllableState(\n () => props.open,\n props.defaultOpen,\n (next) => emit('update:open', next),\n )\n\n const triggerRef = ref<HTMLElement | null>(null)\n const menuRef = ref<HTMLDivElement | null>(null)\n const menuId = useId('menu')\n\n const { mounted, state } = usePresence(isOpen, menuRef)\n const { position } = useAnchoredPosition(triggerRef, menuRef, mounted, {\n placement: props.placement,\n offset: 6,\n })\n useDismiss(menuRef, isOpen, () => setOpen(false), { ignore: [triggerRef] })\n\n return () => {\n const panelClass = attrs.class as string | undefined\n\n return h('span', { style: { display: 'contents' } }, [\n h(\n 'span',\n {\n ref: triggerRef,\n class: 'ansh-menu-trigger',\n 'aria-haspopup': 'menu',\n 'aria-expanded': isOpen.value,\n 'aria-controls': isOpen.value ? menuId : undefined,\n onClick: () => setOpen(!isOpen.value),\n onKeydown: (event: KeyboardEvent) => {\n // ArrowDown opens *and* lands on the first item, which is the single most-used path\n // into a menu for keyboard users.\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault()\n setOpen(true)\n }\n },\n },\n slots.default?.(),\n ),\n\n mounted.value\n ? h(Teleport, { to: 'body' }, [\n h(MenuSurface, {\n panelRef: menuRef,\n id: menuId,\n items: props.items,\n label: props.label,\n state: state.value,\n positionStyle: position.value.style,\n panelClass,\n onClose: () => {\n setOpen(false)\n triggerRef.value?.focus?.()\n },\n }),\n ])\n : null,\n ])\n }\n },\n})\n\n/**\n * A right-click menu.\n *\n * Also opens on the **context-menu key** and on Shift+F10, which is how keyboard users reach one —\n * a right-click-only implementation is inaccessible, and it is the most commonly missed keyboard\n * binding in the whole component set.\n *\n * Anchored to the pointer via a zero-size virtual rect, so the existing positioning code flips and\n * shifts it near the viewport edges without needing a separate path.\n */\nexport const ContextMenu = defineComponent({\n name: 'AnshContextMenu',\n inheritAttrs: false,\n props: {\n items: { type: Array as PropType<readonly MenuEntry[]>, required: true },\n label: { type: String, default: 'Context menu' },\n },\n setup(props, { slots, attrs }) {\n const point = ref<{ x: number; y: number } | null>(null)\n const menuRef = ref<HTMLDivElement | null>(null)\n const anchorRef = ref<HTMLSpanElement | null>(null)\n const menuId = useId('contextmenu')\n\n const open = computed(() => point.value !== null)\n const { mounted, state } = usePresence(open, menuRef)\n const { position } = useAnchoredPosition(anchorRef, menuRef, mounted, {\n placement: 'bottom-start',\n offset: 2,\n })\n\n useDismiss(menuRef, open, () => {\n point.value = null\n })\n\n return () => {\n const panelClass = attrs.class as string | undefined\n\n return h('span', { style: { display: 'contents' } }, [\n h(\n 'span',\n {\n class: 'ansh-contextmenu__area',\n onContextmenu: (event: MouseEvent) => {\n event.preventDefault()\n point.value = { x: event.clientX, y: event.clientY }\n },\n onKeydown: (event: KeyboardEvent) => {\n if (event.key === 'ContextMenu' || (event.shiftKey && event.key === 'F10')) {\n event.preventDefault()\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect()\n point.value = { x: rect.left + 8, y: rect.top + 8 }\n }\n },\n },\n slots.default?.(),\n ),\n\n // A zero-size anchor placed at the pointer. Cheaper than teaching the positioner about\n // virtual elements, and it inherits flip/shift behaviour for free.\n point.value\n ? h('span', {\n ref: anchorRef,\n 'aria-hidden': 'true',\n style: {\n position: 'fixed',\n left: `${point.value.x}px`,\n top: `${point.value.y}px`,\n width: '0px',\n height: '0px',\n },\n })\n : null,\n\n mounted.value\n ? h(Teleport, { to: 'body' }, [\n h(MenuSurface, {\n panelRef: menuRef,\n id: menuId,\n items: props.items,\n label: props.label,\n state: state.value,\n positionStyle: position.value.style,\n panelClass,\n onClose: () => {\n point.value = null\n },\n }),\n ])\n : null,\n ])\n }\n },\n})\n\n// --- The menu surface itself ---------------------------------------------\n//\n// Not exported — an internal implementation detail shared by `DropdownMenu`, `ContextMenu` and\n// `Submenu`, exactly like `@ansh-ui/react`'s own (also unexported) `MenuSurface`.\n\nconst MenuSurface = defineComponent({\n name: 'AnshMenuSurface',\n props: {\n panelRef: { type: Object as PropType<Ref<HTMLDivElement | null>>, required: true },\n id: { type: String, required: true },\n items: { type: Array as PropType<readonly MenuEntry[]>, required: true },\n label: { type: String, required: true },\n state: { type: String as PropType<'open' | 'closed'>, required: true },\n // Named `positionStyle`/`panelClass` rather than `style`/`class` — Vue merges those two\n // particular prop names onto a component's root element automatically regardless of whether\n // they're declared, which would double up the class list.\n positionStyle: { type: Object as PropType<Record<string, string>>, required: true },\n panelClass: { type: String, default: undefined },\n onClose: { type: Function as PropType<() => void>, required: true },\n },\n setup(props) {\n const rows = computed(() => flatten(props.items))\n const itemRefs = ref<Array<HTMLElement | null>>([])\n const active = ref(rows.value.findIndex((row) => !row.disabled))\n const openSubmenu = ref<number | null>(null)\n let typeaheadBuffer = ''\n let typeaheadTimer: ReturnType<typeof setTimeout> | undefined\n\n // Focus the first enabled item on open. The ARIA menu pattern puts DOM focus on the item, which\n // is what allows Right-arrow to hand focus to a submenu and Left-arrow to take it back.\n onMounted(() => {\n itemRefs.value[active.value]?.focus()\n })\n\n onBeforeUnmount(() => clearTimeout(typeaheadTimer))\n\n const move = (delta: number): void => {\n const list = rows.value\n if (list.length === 0) return\n let next = active.value\n for (let attempts = 0; attempts < list.length; attempts++) {\n next = (next + delta + list.length) % list.length\n if (!list[next]?.disabled) break\n }\n active.value = next\n itemRefs.value[next]?.focus()\n }\n\n const activate = (index: number): void => {\n const row = rows.value[index]\n if (!row || row.disabled) return\n const { entry } = row\n\n if ('type' in entry && entry.type === 'submenu') {\n openSubmenu.value = index\n return\n }\n if ('type' in entry && entry.type === 'checkbox') {\n entry.onChange(!entry.checked)\n // Checkbox items keep the menu open: toggling three view options should not require\n // reopening the menu twice.\n return\n }\n if ('type' in entry && entry.type === 'radio') {\n entry.onChange(entry.options[row.optionIndex!]!.value)\n props.onClose()\n return\n }\n ;(entry as MenuAction).onSelect?.()\n props.onClose()\n }\n\n const onKeydown = (event: KeyboardEvent): void => {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n move(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n move(-1)\n break\n case 'Home':\n event.preventDefault()\n active.value = 0\n itemRefs.value[0]?.focus()\n break\n case 'End':\n event.preventDefault()\n active.value = rows.value.length - 1\n itemRefs.value[rows.value.length - 1]?.focus()\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n activate(active.value)\n break\n case 'ArrowRight': {\n const row = rows.value[active.value]\n if (row && 'type' in row.entry && row.entry.type === 'submenu') {\n event.preventDefault()\n openSubmenu.value = active.value\n }\n break\n }\n case 'Escape':\n event.preventDefault()\n props.onClose()\n break\n case 'Tab':\n // A menu is a single stop in the tab order; Tab closes it rather than walking the items.\n event.preventDefault()\n props.onClose()\n break\n default: {\n if (event.key.length !== 1) return\n clearTimeout(typeaheadTimer)\n typeaheadBuffer += event.key.toLowerCase()\n typeaheadTimer = setTimeout(() => {\n typeaheadBuffer = ''\n }, 600)\n\n const match = rows.value.findIndex((row, index) => {\n if (row.disabled || index === active.value) return false\n const text =\n typeof (row.entry as MenuAction).label === 'string'\n ? ((row.entry as MenuAction).label as string)\n : ''\n return text.toLowerCase().startsWith(typeaheadBuffer)\n })\n if (match >= 0) {\n active.value = match\n itemRefs.value[match]?.focus()\n }\n }\n }\n }\n\n return (): VNode => {\n let rowIndex = -1\n\n return h(\n 'div',\n {\n ref: props.panelRef,\n id: props.id,\n role: 'menu',\n 'aria-label': props.label,\n 'data-state': props.state,\n class: cx('ansh-menu', props.panelClass),\n style: props.positionStyle,\n onKeydown,\n },\n props.items.map((entry, entryIndex) => {\n if ('type' in entry && entry.type === 'separator') {\n return h('div', {\n key: `sep-${entryIndex}`,\n role: 'separator',\n class: 'ansh-menu__separator',\n })\n }\n\n if ('type' in entry && entry.type === 'label') {\n return h(\n 'div',\n { key: `label-${entryIndex}`, role: 'presentation', class: 'ansh-menu__label' },\n [resolveSlotContent(entry.label)],\n )\n }\n\n if ('type' in entry && entry.type === 'radio') {\n return h(\n 'div',\n { key: `radio-${entryIndex}`, role: 'group', class: 'ansh-menu__group' },\n entry.options.map((option) => {\n rowIndex++\n const index = rowIndex\n return h(\n 'div',\n {\n key: option.value,\n ref: (node) => {\n itemRefs.value[index] = node as HTMLElement | null\n },\n role: 'menuitemradio',\n 'aria-checked': entry.value === option.value,\n 'aria-disabled': option.disabled || undefined,\n tabindex: index === active.value ? '0' : '-1',\n class: cx('ansh-menu__item', option.disabled && 'ansh-menu__item--disabled'),\n onClick: () => activate(index),\n onMouseenter: () => {\n if (!option.disabled) active.value = index\n },\n },\n [\n h('span', {\n class: cx(\n 'ansh-menu__indicator',\n entry.value === option.value && 'ansh-menu__indicator--on',\n ),\n 'aria-hidden': 'true',\n }),\n h('span', { class: 'ansh-menu__text' }, [resolveSlotContent(option.label)]),\n ],\n )\n }),\n )\n }\n\n rowIndex++\n const index = rowIndex\n\n if ('type' in entry && entry.type === 'checkbox') {\n return h(\n 'div',\n {\n key: entry.id ?? `check-${entryIndex}`,\n ref: (node) => {\n itemRefs.value[index] = node as HTMLElement | null\n },\n role: 'menuitemcheckbox',\n 'aria-checked': entry.checked,\n 'aria-disabled': entry.disabled || undefined,\n tabindex: index === active.value ? '0' : '-1',\n class: cx('ansh-menu__item', entry.disabled && 'ansh-menu__item--disabled'),\n onClick: () => activate(index),\n onMouseenter: () => {\n if (!entry.disabled) active.value = index\n },\n },\n [\n h(\n 'span',\n {\n class: cx(\n 'ansh-menu__indicator',\n 'ansh-menu__indicator--check',\n entry.checked && 'ansh-menu__indicator--on',\n ),\n 'aria-hidden': 'true',\n },\n [\n h('svg', { viewBox: '0 0 14 14', width: '10', height: '10' }, [\n h('path', {\n d: 'M2.5 7.5l3 3 6-6.5',\n stroke: 'currentColor',\n 'stroke-width': '2',\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n fill: 'none',\n }),\n ]),\n ],\n ),\n h('span', { class: 'ansh-menu__text' }, [resolveSlotContent(entry.label)]),\n entry.shortcut ? h('kbd', { class: 'ansh-menu__shortcut' }, entry.shortcut) : null,\n ],\n )\n }\n\n if ('type' in entry && entry.type === 'submenu') {\n return h(Submenu, {\n key: entry.id ?? `sub-${entryIndex}`,\n entry,\n active: index === active.value,\n open: openSubmenu.value === index,\n onOpenChange: (next: boolean) => {\n openSubmenu.value = next ? index : null\n },\n onHover: () => {\n active.value = index\n },\n onCloseAll: () => props.onClose(),\n onItemRef: (node: HTMLElement | null) => {\n itemRefs.value[index] = node\n },\n })\n }\n\n const action = entry as MenuAction\n return h(\n 'div',\n {\n key: action.id ?? `item-${entryIndex}`,\n ref: (node) => {\n itemRefs.value[index] = node as HTMLElement | null\n },\n role: 'menuitem',\n 'aria-disabled': action.disabled || undefined,\n tabindex: index === active.value ? '0' : '-1',\n class: cx(\n 'ansh-menu__item',\n action.danger && 'ansh-menu__item--danger',\n action.disabled && 'ansh-menu__item--disabled',\n ),\n onClick: () => activate(index),\n onMouseenter: () => {\n if (!action.disabled) active.value = index\n },\n },\n [\n action.icon\n ? h('span', { class: 'ansh-menu__icon' }, [resolveSlotContent(action.icon)])\n : null,\n h('span', { class: 'ansh-menu__text' }, [resolveSlotContent(action.label)]),\n action.shortcut ? h('kbd', { class: 'ansh-menu__shortcut' }, action.shortcut) : null,\n ],\n )\n }),\n )\n }\n },\n})\n\nconst Submenu = defineComponent({\n name: 'AnshMenuSubmenu',\n props: {\n entry: { type: Object as PropType<MenuSubmenu>, required: true },\n active: { type: Boolean, required: true },\n open: { type: Boolean, required: true },\n onOpenChange: { type: Function as PropType<(open: boolean) => void>, required: true },\n onHover: { type: Function as PropType<() => void>, required: true },\n onCloseAll: { type: Function as PropType<() => void>, required: true },\n /** Reports this submenu's trigger element up so the parent's roving-focus array includes it. */\n onItemRef: { type: Function as PropType<(el: HTMLElement | null) => void>, required: true },\n },\n setup(props) {\n const triggerRef = ref<HTMLElement | null>(null)\n const panelRef = ref<HTMLDivElement | null>(null)\n let timer: ReturnType<typeof setTimeout> | undefined\n const id = useId('submenu')\n\n const openRef = computed(() => props.open)\n const { mounted, state } = usePresence(openRef, panelRef)\n const { position } = useAnchoredPosition(triggerRef, panelRef, mounted, {\n placement: 'right-start',\n offset: 2,\n })\n\n onBeforeUnmount(() => clearTimeout(timer))\n\n return (): VNode =>\n h('span', { style: { display: 'contents' } }, [\n h(\n 'div',\n {\n ref: (node) => {\n triggerRef.value = node as HTMLElement | null\n props.onItemRef(node as HTMLElement | null)\n },\n role: 'menuitem',\n 'aria-haspopup': 'menu',\n 'aria-expanded': props.open,\n 'aria-controls': props.open ? id : undefined,\n 'aria-disabled': props.entry.disabled || undefined,\n tabindex: props.active ? '0' : '-1',\n class: cx(\n 'ansh-menu__item',\n 'ansh-menu__item--submenu',\n props.entry.disabled && 'ansh-menu__item--disabled',\n ),\n onMouseenter: () => {\n props.onHover()\n // A short delay before opening on hover, so dragging the pointer diagonally across a\n // submenu trigger toward another item doesn't flash a panel open.\n clearTimeout(timer)\n timer = setTimeout(() => props.onOpenChange(true), 120)\n },\n onMouseleave: () => {\n clearTimeout(timer)\n timer = setTimeout(() => props.onOpenChange(false), 200)\n },\n onClick: () => props.onOpenChange(!props.open),\n },\n [\n props.entry.icon\n ? h('span', { class: 'ansh-menu__icon' }, [resolveSlotContent(props.entry.icon)])\n : null,\n h('span', { class: 'ansh-menu__text' }, [resolveSlotContent(props.entry.label)]),\n h('span', { class: 'ansh-menu__chevron', 'aria-hidden': 'true' }, [\n h('svg', { viewBox: '0 0 12 12', width: '12', height: '12' }, [\n h('path', {\n d: 'M4.5 2.5L8 6l-3.5 3.5',\n stroke: 'currentColor',\n 'stroke-width': '1.5',\n fill: 'none',\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n }),\n ]),\n ]),\n ],\n ),\n\n mounted.value\n ? h(Teleport, { to: 'body' }, [\n h(\n 'div',\n {\n onMouseenter: () => clearTimeout(timer),\n onMouseleave: () => {\n timer = setTimeout(() => props.onOpenChange(false), 200)\n },\n onKeydown: (event: KeyboardEvent) => {\n // Left arrow closes the submenu and returns focus to its trigger — the inverse\n // of the Right arrow that opened it.\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n event.stopPropagation()\n props.onOpenChange(false)\n triggerRef.value?.focus()\n }\n },\n },\n [\n h(MenuSurface, {\n panelRef,\n id,\n items: props.entry.items,\n label: typeof props.entry.label === 'string' ? props.entry.label : 'Submenu',\n state: state.value,\n positionStyle: position.value.style,\n onClose: props.onCloseAll,\n }),\n ],\n ),\n ])\n : null,\n ])\n },\n})\n"]}