@ansh-ui/vue 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/LICENSE +21 -0
  2. package/dist/chunk-2VSROZ2N.js +1281 -0
  3. package/dist/chunk-2VSROZ2N.js.map +1 -0
  4. package/dist/chunk-5BQEZYG6.cjs +1294 -0
  5. package/dist/chunk-5BQEZYG6.cjs.map +1 -0
  6. package/dist/chunk-6732H4BQ.cjs +28 -0
  7. package/dist/chunk-6732H4BQ.cjs.map +1 -0
  8. package/dist/chunk-6ABPGOJP.js +722 -0
  9. package/dist/chunk-6ABPGOJP.js.map +1 -0
  10. package/dist/chunk-6XJOB6LE.js +62 -0
  11. package/dist/chunk-6XJOB6LE.js.map +1 -0
  12. package/dist/chunk-774WBLDR.cjs +24 -0
  13. package/dist/chunk-774WBLDR.cjs.map +1 -0
  14. package/dist/chunk-B6OXKW5Q.js +567 -0
  15. package/dist/chunk-B6OXKW5Q.js.map +1 -0
  16. package/dist/chunk-DMPNT3MY.cjs +64 -0
  17. package/dist/chunk-DMPNT3MY.cjs.map +1 -0
  18. package/dist/chunk-EISHOEB6.cjs +158 -0
  19. package/dist/chunk-EISHOEB6.cjs.map +1 -0
  20. package/dist/chunk-EVO23GUS.js +223 -0
  21. package/dist/chunk-EVO23GUS.js.map +1 -0
  22. package/dist/chunk-FVKLCGA4.js +1035 -0
  23. package/dist/chunk-FVKLCGA4.js.map +1 -0
  24. package/dist/chunk-IOXGBPOV.cjs +3681 -0
  25. package/dist/chunk-IOXGBPOV.cjs.map +1 -0
  26. package/dist/chunk-J2LA4GRP.cjs +1051 -0
  27. package/dist/chunk-J2LA4GRP.cjs.map +1 -0
  28. package/dist/chunk-JQ4YLXXM.cjs +580 -0
  29. package/dist/chunk-JQ4YLXXM.cjs.map +1 -0
  30. package/dist/chunk-KCA7RNJ4.cjs +781 -0
  31. package/dist/chunk-KCA7RNJ4.cjs.map +1 -0
  32. package/dist/chunk-NJDDNO4C.js +23 -0
  33. package/dist/chunk-NJDDNO4C.js.map +1 -0
  34. package/dist/chunk-OAQ7MDYX.js +22 -0
  35. package/dist/chunk-OAQ7MDYX.js.map +1 -0
  36. package/dist/chunk-PP6OYURM.cjs +238 -0
  37. package/dist/chunk-PP6OYURM.cjs.map +1 -0
  38. package/dist/chunk-SHX2JGID.cjs +269 -0
  39. package/dist/chunk-SHX2JGID.cjs.map +1 -0
  40. package/dist/chunk-SOYRICHU.js +3645 -0
  41. package/dist/chunk-SOYRICHU.js.map +1 -0
  42. package/dist/chunk-T425FIC7.js +773 -0
  43. package/dist/chunk-T425FIC7.js.map +1 -0
  44. package/dist/chunk-TMG3M6TK.js +152 -0
  45. package/dist/chunk-TMG3M6TK.js.map +1 -0
  46. package/dist/chunk-XLLSS464.cjs +286 -0
  47. package/dist/chunk-XLLSS464.cjs.map +1 -0
  48. package/dist/chunk-XZ5ZFLZM.js +280 -0
  49. package/dist/chunk-XZ5ZFLZM.js.map +1 -0
  50. package/dist/chunk-Z7XOFKM4.cjs +733 -0
  51. package/dist/chunk-Z7XOFKM4.cjs.map +1 -0
  52. package/dist/chunk-ZGMXOMCB.js +266 -0
  53. package/dist/chunk-ZGMXOMCB.js.map +1 -0
  54. package/dist/data.cjs +70 -0
  55. package/dist/data.cjs.map +1 -0
  56. package/dist/data.d.cts +963 -0
  57. package/dist/data.d.ts +963 -0
  58. package/dist/data.js +5 -0
  59. package/dist/data.js.map +1 -0
  60. package/dist/form.cjs +151 -0
  61. package/dist/form.cjs.map +1 -0
  62. package/dist/form.d.cts +2639 -0
  63. package/dist/form.d.ts +2639 -0
  64. package/dist/form.js +6 -0
  65. package/dist/form.js.map +1 -0
  66. package/dist/index.cjs +1158 -0
  67. package/dist/index.cjs.map +1 -0
  68. package/dist/index.d.cts +439 -0
  69. package/dist/index.d.ts +439 -0
  70. package/dist/index.js +547 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/layout.cjs +67 -0
  73. package/dist/layout.cjs.map +1 -0
  74. package/dist/layout.d.cts +729 -0
  75. package/dist/layout.d.ts +729 -0
  76. package/dist/layout.js +6 -0
  77. package/dist/layout.js.map +1 -0
  78. package/dist/motion.cjs +50 -0
  79. package/dist/motion.cjs.map +1 -0
  80. package/dist/motion.d.cts +681 -0
  81. package/dist/motion.d.ts +681 -0
  82. package/dist/motion.js +5 -0
  83. package/dist/motion.js.map +1 -0
  84. package/dist/navigation.cjs +48 -0
  85. package/dist/navigation.cjs.map +1 -0
  86. package/dist/navigation.d.cts +515 -0
  87. package/dist/navigation.d.ts +515 -0
  88. package/dist/navigation.js +7 -0
  89. package/dist/navigation.js.map +1 -0
  90. package/dist/overlay.cjs +61 -0
  91. package/dist/overlay.cjs.map +1 -0
  92. package/dist/overlay.d.cts +772 -0
  93. package/dist/overlay.d.ts +772 -0
  94. package/dist/overlay.js +8 -0
  95. package/dist/overlay.js.map +1 -0
  96. package/dist/position-Cn7qP1pn.d.cts +50 -0
  97. package/dist/position-Cn7qP1pn.d.ts +50 -0
  98. package/dist/primitives.cjs +129 -0
  99. package/dist/primitives.cjs.map +1 -0
  100. package/dist/primitives.d.cts +300 -0
  101. package/dist/primitives.d.ts +300 -0
  102. package/dist/primitives.js +8 -0
  103. package/dist/primitives.js.map +1 -0
  104. package/dist/sidebar-CQqEmpid.d.cts +124 -0
  105. package/dist/sidebar-CTZ-Ckko.d.ts +124 -0
  106. package/dist/styles.css +5593 -0
  107. package/dist/utils-IKPG3zcC.d.cts +46 -0
  108. package/dist/utils-IKPG3zcC.d.ts +46 -0
  109. package/package.json +91 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/form/field.ts","../src/components/form/input.ts","../src/components/form/toggles.ts","../src/components/form/listbox.ts","../src/components/form/select.ts","../src/components/form/combobox.ts","../src/components/form/slider.ts","../src/components/form/pin-input.ts","../src/components/form/tags-input.ts","../src/components/form/rating.ts","../src/components/form/dropzone.ts","../src/components/form/color-picker.ts","../src/components/form/calendar.ts","../src/components/form/date-picker.ts"],"names":["inject","computed","defineComponent","useId","provide","h","cx","resolveSlotContent","ref","useControllableState","watch","getCurrentScope","onScopeDispose","useAnchoredPosition","useDismiss","Teleport","rgbToHsv","tryParseColor","parseColor","hsvToRgb","toOklchString","toHex","contrastRatio"],"mappings":"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","file":"chunk-IOXGBPOV.cjs","sourcesContent":["import {\n type ComputedRef,\n type InjectionKey,\n type PropType,\n computed,\n defineComponent,\n h,\n inject,\n provide,\n} from 'vue'\nimport { type SlotContent, cx, resolveSlotContent, useId } from '../../primitives/utils'\n\n/**\n * The label / description / error scaffolding every form control shares — the Vue counterpart of\n * `@ansh-ui/react`'s `Field`.\n *\n * Wiring this by hand is where forms lose their accessibility. The control needs `id` matching the\n * label's `for`, `aria-describedby` pointing at *both* the hint and the error, and `aria-invalid`\n * when it's wrong. Six attributes across four elements, per field — so in practice some fields get\n * it and some don't.\n *\n * `Field` generates the ids and distributes them through `provide`/`inject`, so a control only has\n * to spread what `useFieldControl()` returns.\n *\n * ```vue\n * <Field label=\"Work email\" description=\"We'll never share it.\" :error=\"errors.email\">\n * <Input type=\"email\" v-model=\"email\" />\n * </Field>\n * ```\n */\n\nexport interface FieldContextValue {\n id: string\n describedBy: string | undefined\n invalid: boolean\n required: boolean\n disabled: boolean\n}\n\nconst FieldKey: InjectionKey<FieldContextValue> = Symbol('ansh-field')\n\nexport interface FieldControlAttrs {\n id?: string\n 'aria-describedby'?: string\n 'aria-invalid'?: true\n 'aria-required'?: true\n disabled?: boolean\n}\n\n/**\n * Props a control should spread onto its interactive element.\n *\n * Returns an empty object outside a `Field`, so every control works standalone — a control that\n * throws without a wrapper is a control people stop using.\n *\n * **Returns a `ComputedRef`, not a plain object — read `.value` inside your render function, never\n * destructure it in `setup()`.** `inject()` may only be called during `setup()`, which runs once per\n * instance, so the lookup itself happens once; but `Field`'s `error`/`disabled`/`description` are\n * reactive props that can change after that. Wrapping the derived attrs in `computed()` means the\n * getters on the injected context (which close over `Field`'s own reactive props) are re-evaluated\n * — and correctly tracked — every time this control re-renders. Returning a plain object built with\n * a one-time spread would freeze the very first render's values forever, which is a real bug this\n * exact shape produced during development: a field that started valid and then failed validation\n * never gained `aria-invalid` because the snapshot was taken before the error existed.\n */\nexport function useFieldControl(): ComputedRef<FieldControlAttrs> {\n const field = inject(FieldKey, null)\n return computed<FieldControlAttrs>(() => {\n if (!field) return {}\n return {\n id: field.id,\n ...(field.describedBy ? { 'aria-describedby': field.describedBy } : null),\n ...(field.invalid ? { 'aria-invalid': true as const } : null),\n ...(field.required ? { 'aria-required': true as const } : null),\n ...(field.disabled ? { disabled: true } : null),\n }\n })\n}\n\n/** The raw context, for controls that need the ids rather than the spreadable props. */\nexport function useFieldContext(): FieldContextValue | null {\n return inject(FieldKey, null)\n}\n\nexport const Field = defineComponent({\n name: 'AnshField',\n props: {\n label: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n /** Helper text below the label. Announced as part of the control's description. */\n description: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n /** Error message. Its presence sets `aria-invalid` on the control. */\n error: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n /** Marks the field required and appends an asterisk to the label. */\n required: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n /** Label to the side rather than above — denser, for settings screens. */\n orientation: { type: String as PropType<'vertical' | 'horizontal'>, default: 'vertical' },\n },\n setup(props, { slots, attrs }) {\n const id = useId('field')\n const descriptionId = `${id}-description`\n const errorId = `${id}-error`\n\n // Order matters: a screen reader reads descriptions in the order listed, and the error is the\n // more urgent of the two, so it comes first.\n const describedBy = computed(\n () =>\n [props.error ? errorId : null, props.description ? descriptionId : null]\n .filter(Boolean)\n .join(' ') || undefined,\n )\n\n provide(FieldKey, {\n id,\n get describedBy() {\n return describedBy.value\n },\n get invalid() {\n return Boolean(props.error)\n },\n get required() {\n return props.required\n },\n get disabled() {\n return props.disabled\n },\n } as FieldContextValue)\n\n return () =>\n h(\n 'div',\n {\n class: cx(\n 'ansh-field',\n `ansh-field--${props.orientation}`,\n props.disabled && 'ansh-field--disabled',\n attrs.class as string,\n ),\n },\n [\n props.label\n ? h('label', { class: 'ansh-field__label', for: id }, [\n resolveSlotContent(props.label),\n props.required\n ? [\n h('span', { 'aria-hidden': 'true', class: 'ansh-field__required' }, '*'),\n // The asterisk alone is a visual convention with no meaning to a screen\n // reader; `aria-required` on the control carries it, and this covers the rest.\n h('span', { class: 'ansh-visually-hidden' }, ' (required)'),\n ]\n : null,\n ])\n : null,\n\n h('div', { class: 'ansh-field__control' }, slots.default?.()),\n\n props.description\n ? h('p', { class: 'ansh-field__description', id: descriptionId }, [\n resolveSlotContent(props.description),\n ])\n : null,\n\n props.error\n ? // `role=\"alert\"` announces the message when it appears after a failed submit, which\n // is the moment it matters. `aria-describedby` alone would only be read on re-focus.\n h('p', { class: 'ansh-field__error', id: errorId, role: 'alert' }, [\n resolveSlotContent(props.error),\n ])\n : null,\n ],\n )\n },\n})\n\nexport const Fieldset = defineComponent({\n name: 'AnshFieldset',\n props: {\n legend: { type: [String, Object, Function] as PropType<SlotContent>, required: true },\n description: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n },\n setup(props, { slots, attrs }) {\n const id = useId('fieldset')\n return () =>\n h(\n 'fieldset',\n {\n class: cx('ansh-fieldset', attrs.class as string),\n ...(props.description ? { 'aria-describedby': id } : null),\n },\n [\n h('legend', { class: 'ansh-fieldset__legend' }, [resolveSlotContent(props.legend)]),\n props.description\n ? h('p', { class: 'ansh-fieldset__description', id }, [\n resolveSlotContent(props.description),\n ])\n : null,\n slots.default?.(),\n ],\n )\n },\n})\n\n/**\n * Visually hidden, still announced.\n *\n * The clip-path technique rather than `display: none` or `visibility: hidden`, both of which remove\n * the element from the accessibility tree entirely — which is the opposite of the intent.\n */\nexport const VisuallyHidden = defineComponent({\n name: 'AnshVisuallyHidden',\n setup(_props, { slots, attrs }) {\n return () => h('span', { class: 'ansh-visually-hidden', ...attrs }, slots.default?.())\n },\n})\n","import { type PropType, computed, defineComponent, h, ref, watch } from 'vue'\nimport { type SlotContent, cx, resolveSlotContent } from '../../primitives/utils'\nimport { useControllableState } from '../../primitives/use-controllable-state'\nimport { useFieldControl } from './field'\n\nexport type InputSize = 'sm' | 'md' | 'lg'\n\n/**\n * A text input — the Vue counterpart of `@ansh-ui/react`'s `Input`.\n *\n * `v-model` for two-way binding (backed by `modelValue`/`update:modelValue`), or leave it\n * unbound for an uncontrolled field seeded from `defaultValue`. Both modes flow through the same\n * `useControllableState`, so there's no separate uncontrolled code path to drift from the\n * controlled one.\n *\n * Native attributes not declared as props (`type`, `placeholder`, `maxlength`, `autocomplete`, …)\n * fall through automatically via Vue's attribute inheritance — `inheritAttrs: false` plus an\n * explicit bind is only needed here because the *grouped* layout (a prefix, suffix or clear button)\n * renders a wrapper `<div>` and the attributes must land on the inner `<input>`, not the wrapper.\n *\n * The affordance most inputs get wrong is the click target: with an icon inside the field, clicking\n * the icon should focus the input. That works here because the wrapper forwards the click, rather\n * than the icon being an absolutely positioned sibling that swallows it.\n */\nexport const Input = defineComponent({\n name: 'AnshInput',\n inheritAttrs: false,\n props: {\n modelValue: { type: String, default: undefined },\n defaultValue: { type: String, default: '' },\n size: { type: String as PropType<InputSize>, default: 'md' },\n /** Content inside the field, before the text — an icon or a currency symbol. */\n prefix: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n /** Content inside the field, after the text — a unit, or a button. */\n suffix: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n /** Show a clear button when non-empty. */\n clearable: { type: Boolean, default: false },\n /** Force the error style outside a `Field`. */\n invalid: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n readonly: { type: Boolean, default: false },\n /** Class for the outer wrapper, when there is a prefix or suffix. */\n wrapperClassName: { type: String, default: undefined },\n },\n emits: ['update:modelValue', 'input', 'change', 'clear'],\n setup(props, { attrs, emit, expose, slots }) {\n const fieldProps = useFieldControl()\n const inputRef = ref<HTMLInputElement | null>(null)\n\n const [value, setValue] = useControllableState(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n\n expose({\n focus: (options?: FocusOptions) => inputRef.value?.focus(options),\n blur: () => inputRef.value?.blur(),\n get element() {\n return inputRef.value\n },\n })\n\n const grouped = computed(() => Boolean(props.prefix || props.suffix || props.clearable))\n const showClear = computed(\n () => props.clearable && value.value.length > 0 && !props.disabled && !props.readonly,\n )\n\n const renderInput = () => {\n const { class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n return h('input', {\n ref: inputRef,\n class: cx(\n 'ansh-input',\n `ansh-input--${props.size}`,\n !grouped.value && (attrClass as string),\n ),\n disabled: props.disabled,\n readonly: props.readonly || undefined,\n ...fieldProps.value,\n ...restAttrs,\n value: value.value,\n ...(props.invalid ? { 'aria-invalid': true } : null),\n onInput: (event: Event) => {\n setValue((event.target as HTMLInputElement).value)\n emit('input', event)\n },\n onChange: (event: Event) => emit('change', event),\n })\n }\n\n return () => {\n if (!grouped.value) return renderInput()\n\n const { class: attrClass } = attrs as Record<string, unknown>\n\n return h(\n 'div',\n {\n class: cx(\n 'ansh-input-group',\n `ansh-input-group--${props.size}`,\n props.disabled && 'ansh-input-group--disabled',\n (props.invalid || fieldProps.value['aria-invalid']) && 'ansh-input-group--invalid',\n props.wrapperClassName,\n attrClass as string,\n ),\n // Clicking anywhere in the group focuses the input, including the padding and the icons.\n // Guarded so a click on a button inside the suffix still reaches that button.\n onMousedown: (event: MouseEvent) => {\n if (event.target === event.currentTarget) {\n event.preventDefault()\n inputRef.value?.focus()\n }\n },\n },\n [\n props.prefix\n ? h('span', { class: 'ansh-input-group__affix', 'aria-hidden': 'true' }, [\n resolveSlotContent(props.prefix ?? slots.prefix?.()),\n ])\n : null,\n\n renderInput(),\n\n showClear.value\n ? h(\n 'button',\n {\n type: 'button',\n class: 'ansh-input-group__clear ansh-focusable',\n 'aria-label': 'Clear',\n onClick: () => {\n setValue('')\n inputRef.value?.focus()\n emit('clear')\n },\n },\n [\n h(\n 'svg',\n { viewBox: '0 0 16 16', width: '12', height: '12', 'aria-hidden': 'true' },\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 props.suffix\n ? h('span', { class: 'ansh-input-group__affix' }, [resolveSlotContent(props.suffix)])\n : null,\n ],\n )\n }\n },\n})\n\n/** A multi-line text input, optionally growing with its content. */\nexport const Textarea = defineComponent({\n name: 'AnshTextarea',\n inheritAttrs: false,\n props: {\n modelValue: { type: String, default: undefined },\n defaultValue: { type: String, default: '' },\n /** Grow with the content instead of scrolling. */\n autoResize: { type: Boolean, default: false },\n /** Upper bound for `autoResize`, in rows. Default `12`. */\n maxRows: { type: Number, default: 12 },\n /** Show a live character count. Needs `maxlength` (passed through as a native attribute). */\n showCount: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n },\n emits: ['update:modelValue', 'input', 'change'],\n setup(props, { attrs, emit, expose }) {\n const fieldProps = useFieldControl()\n const textareaRef = ref<HTMLTextAreaElement | null>(null)\n\n const [value, setValue] = useControllableState(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n\n expose({\n focus: (options?: FocusOptions) => textareaRef.value?.focus(options),\n blur: () => textareaRef.value?.blur(),\n get element() {\n return textareaRef.value\n },\n })\n\n const resize = (): void => {\n const node = textareaRef.value\n if (!node || !props.autoResize) return\n // Reset first: without it the height only ever ratchets upward, because `scrollHeight` of an\n // already-tall element includes the empty space.\n node.style.height = 'auto'\n const lineHeight = Number.parseFloat(getComputedStyle(node).lineHeight) || 20\n const max = lineHeight * props.maxRows\n node.style.height = `${Math.min(node.scrollHeight, max)}px`\n node.style.overflowY = node.scrollHeight > max ? 'auto' : 'hidden'\n }\n\n return () => {\n const { class: attrClass, maxlength, ...restAttrs } = attrs as Record<string, unknown>\n const max = maxlength !== undefined ? Number(maxlength) : undefined\n\n return h('div', { class: cx('ansh-textarea-wrap', attrClass as string) }, [\n h('textarea', {\n ref: (node) => {\n textareaRef.value = (node as HTMLTextAreaElement | null) ?? null\n resize()\n },\n class: cx('ansh-input', 'ansh-textarea', props.autoResize && 'ansh-textarea--auto'),\n maxlength,\n ...fieldProps.value,\n ...restAttrs,\n value: value.value,\n ...(props.invalid ? { 'aria-invalid': true } : null),\n onInput: (event: Event) => {\n setValue((event.target as HTMLTextAreaElement).value)\n resize()\n emit('input', event)\n },\n onChange: (event: Event) => emit('change', event),\n }),\n props.showCount\n ? h(\n 'span',\n {\n class: cx(\n 'ansh-textarea__count',\n max !== undefined &&\n value.value.length > max * 0.9 &&\n 'ansh-textarea__count--near',\n ),\n // Announced politely so a screen-reader user isn't interrupted on every keystroke.\n 'aria-live': 'polite',\n },\n max !== undefined ? `${value.value.length} / ${max}` : String(value.value.length),\n )\n : null,\n ])\n }\n },\n})\n\n/**\n * A numeric input with steppers — the Vue counterpart of `@ansh-ui/react`'s `NumberInput`.\n *\n * Deliberately `type=\"text\"` with `inputmode=\"decimal\"` rather than `type=\"number\"`. Native number\n * inputs silently discard invalid intermediate text (typing \"1e\" clears the field), scroll-wheel\n * over a focused field changes the value by accident, and the spinner cannot be styled consistently\n * across browsers. All three are real bugs users hit on data-entry screens.\n */\nexport const NumberInput = defineComponent({\n name: 'AnshNumberInput',\n inheritAttrs: false,\n props: {\n modelValue: { type: Number, default: undefined },\n defaultValue: { type: Number, default: 0 },\n min: { type: Number, default: Number.NEGATIVE_INFINITY },\n max: { type: Number, default: Number.POSITIVE_INFINITY },\n step: { type: Number, default: 1 },\n /** Decimal places to display. Default: inferred from `step`. */\n precision: { type: Number, default: undefined },\n size: { type: String as PropType<InputSize>, default: 'md' },\n /** Unit shown after the number — \"kg\", \"%\", \"days\". */\n unit: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n /** Show the stepper buttons. Default `true`. */\n steppers: { type: Boolean, default: true },\n disabled: { type: Boolean, default: false },\n },\n emits: ['update:modelValue', 'change'],\n setup(props, { attrs, emit }) {\n const fieldProps = useFieldControl()\n const inputRef = ref<HTMLInputElement | null>(null)\n const editing = ref(false)\n\n const [current, setCurrent] = useControllableState(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('change', next),\n )\n\n // Inferred from the step, so `:step=\"0.01\"` displays two decimals without being told twice.\n const decimals = computed(\n () =>\n props.precision ??\n (String(props.step).includes('.') ? String(props.step).split('.')[1]!.length : 0),\n )\n\n // Raw text is separate from the numeric value so a partial entry (\"-\", \"1.\") survives\n // keystrokes instead of being normalised out from under the cursor.\n const text = ref(current.value.toFixed(decimals.value))\n\n const syncText = (): void => {\n if (!editing.value) text.value = current.value.toFixed(decimals.value)\n }\n\n // Covers the case `nudge`/`commit` don't: `current` changing because a controlled\n // `modelValue` was updated from outside.\n watch([current, decimals], syncText)\n\n const clamp = (n: number): number => Math.min(Math.max(n, props.min), props.max)\n\n const nudge = (direction: 1 | -1, multiplier = 1): void => {\n const next = clamp(current.value + props.step * direction * multiplier)\n setCurrent(Number(next.toFixed(decimals.value)))\n syncText()\n }\n\n const commit = (raw: string): void => {\n const parsed = Number.parseFloat(raw)\n const next = Number.isFinite(parsed) ? clamp(parsed) : current.value\n setCurrent(Number(next.toFixed(decimals.value)))\n text.value = next.toFixed(decimals.value)\n }\n\n return () => {\n const { class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n\n return h(\n 'div',\n {\n class: cx(\n 'ansh-number',\n `ansh-number--${props.size}`,\n props.disabled && 'ansh-number--disabled',\n attrClass as string,\n ),\n },\n [\n h('input', {\n ref: inputRef,\n type: 'text',\n inputmode: 'decimal',\n class: 'ansh-input ansh-number__input',\n value: text.value,\n disabled: props.disabled,\n // The ARIA spinbutton contract, so the current, minimum and maximum are announced.\n role: 'spinbutton',\n 'aria-valuenow': current.value,\n ...(Number.isFinite(props.min) ? { 'aria-valuemin': props.min } : null),\n ...(Number.isFinite(props.max) ? { 'aria-valuemax': props.max } : null),\n ...fieldProps.value,\n ...restAttrs,\n onFocus: () => {\n editing.value = true\n },\n onInput: (event: Event) => {\n text.value = (event.target as HTMLInputElement).value\n },\n onBlur: (event: FocusEvent) => {\n editing.value = false\n commit((event.target as HTMLInputElement).value)\n },\n onKeydown: (event: KeyboardEvent) => {\n // PageUp/PageDown move by 10 steps — the spinbutton convention, and a real help on a\n // field with a step of 0.01.\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n nudge(1, event.shiftKey ? 10 : 1)\n } else if (event.key === 'ArrowDown') {\n event.preventDefault()\n nudge(-1, event.shiftKey ? 10 : 1)\n } else if (event.key === 'PageUp') {\n event.preventDefault()\n nudge(1, 10)\n } else if (event.key === 'PageDown') {\n event.preventDefault()\n nudge(-1, 10)\n } else if (event.key === 'Home' && Number.isFinite(props.min)) {\n event.preventDefault()\n setCurrent(props.min)\n syncText()\n } else if (event.key === 'End' && Number.isFinite(props.max)) {\n event.preventDefault()\n setCurrent(props.max)\n syncText()\n } else if (event.key === 'Enter') {\n commit((event.target as HTMLInputElement).value)\n }\n },\n }),\n\n props.unit\n ? h('span', { class: 'ansh-number__unit' }, [resolveSlotContent(props.unit)])\n : null,\n\n props.steppers\n ? // `tabindex=\"-1\"` and `aria-hidden`: the input is already a spinbutton with\n // arrow-key support, so these buttons would be redundant tab stops announcing\n // nothing new.\n h('span', { class: 'ansh-number__steppers', 'aria-hidden': 'true' }, [\n h(\n 'button',\n {\n type: 'button',\n tabindex: '-1',\n class: 'ansh-number__step',\n disabled: props.disabled || current.value >= props.max,\n onClick: () => nudge(1),\n },\n [\n h('svg', { viewBox: '0 0 10 6', width: '10', height: '6' }, [\n h('path', {\n d: 'M1 5l4-4 4 4',\n stroke: 'currentColor',\n 'stroke-width': '1.5',\n fill: 'none',\n 'stroke-linecap': 'round',\n }),\n ]),\n ],\n ),\n h(\n 'button',\n {\n type: 'button',\n tabindex: '-1',\n class: 'ansh-number__step',\n disabled: props.disabled || current.value <= props.min,\n onClick: () => nudge(-1),\n },\n [\n h('svg', { viewBox: '0 0 10 6', width: '10', height: '6' }, [\n h('path', {\n d: 'M1 1l4 4 4-4',\n stroke: 'currentColor',\n 'stroke-width': '1.5',\n fill: 'none',\n 'stroke-linecap': 'round',\n }),\n ]),\n ],\n ),\n ])\n : null,\n ],\n )\n }\n },\n})\n","import {\n type ComputedRef,\n type InjectionKey,\n type PropType,\n defineComponent,\n h,\n inject,\n provide,\n ref,\n watch,\n} from 'vue'\nimport { type SlotContent, cx, resolveSlotContent, useId } from '../../primitives/utils'\nimport { useControllableState } from '../../primitives/use-controllable-state'\nimport { useFieldControl } from './field'\n\n/**\n * Binary and single-choice controls — the Vue counterpart of `@ansh-ui/react`'s `toggles.tsx`.\n *\n * All three wrap a **real** `<input>` rather than painting a div. That decision carries a lot: form\n * submission works, `:checked` styling works, the label association works, autofill works, password\n * managers and browser translation work, and every assistive technology already knows what the\n * control is. The visual is a sibling element the input drives via `:checked + .indicator`.\n *\n * The input is not `display: none` — that removes it from the accessibility tree and the tab order.\n * It is transparent and stretched over the control, so it stays focusable and clickable.\n */\n\ntype ChoiceSize = 'sm' | 'md'\n\ninterface ExposedInput {\n focus: (options?: FocusOptions) => void\n blur: () => void\n readonly element: HTMLInputElement | null\n}\n\n// --- Checkbox ---------------------------------------------------------------\n\n/**\n * A binary control that submits with a form.\n *\n * `v-model` binds `checked`. `indeterminate` has no HTML attribute — it exists only as a DOM\n * property, so it is set imperatively via a `watch` each time it changes, the same reason React's\n * counterpart needs an effect for it.\n */\nexport const Checkbox = defineComponent({\n name: 'AnshCheckbox',\n inheritAttrs: false,\n props: {\n modelValue: { type: Boolean, default: undefined },\n defaultValue: { type: Boolean, default: false },\n /** Neither checked nor unchecked — a parent whose children are partly selected. */\n indeterminate: { type: Boolean, default: false },\n label: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n description: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n size: { type: String as PropType<ChoiceSize>, default: 'md' },\n invalid: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n },\n emits: ['update:modelValue'],\n setup(props, { attrs, emit, expose }) {\n const fieldProps = useFieldControl()\n const inputRef = ref<HTMLInputElement | null>(null)\n const generatedId = useId()\n\n const [checked, setChecked] = useControllableState(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n\n expose({\n focus: (options?: FocusOptions) => inputRef.value?.focus(options),\n blur: () => inputRef.value?.blur(),\n get element() {\n return inputRef.value\n },\n } satisfies ExposedInput)\n\n // `indeterminate` has no HTML attribute — it exists only as a DOM property, so it is set\n // imperatively. A `watch(..., { immediate: true })` is not enough on its own: the immediate\n // invocation of a watch callback runs synchronously during `setup()` regardless of `flush`\n // mode — `flush` only governs the scheduler used for *subsequent*, reactively-triggered runs —\n // so it would fire before the `ref` callback below has ever attached the input, finding\n // `inputRef.value` still `null`. The initial value is therefore applied from the `ref` callback\n // itself, which fires exactly when the node mounts; the watch (deliberately non-immediate)\n // handles every change after that.\n watch(\n () => props.indeterminate,\n (value) => {\n if (inputRef.value) inputRef.value.indeterminate = value\n },\n )\n\n return () => {\n const { id: attrId, class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n const id = (attrId as string | undefined) ?? fieldProps.value.id ?? generatedId\n const descriptionId = `${id}-hint`\n const isDisabled = props.disabled || Boolean(fieldProps.value.disabled)\n\n return h(\n 'div',\n {\n class: cx(\n 'ansh-choice',\n `ansh-choice--${props.size}`,\n isDisabled && 'ansh-choice--disabled',\n attrClass as string,\n ),\n },\n [\n h('span', { class: 'ansh-choice__box' }, [\n h('input', {\n ref: (node) => {\n const element = (node as HTMLInputElement | null) ?? null\n inputRef.value = element\n if (element) element.indeterminate = props.indeterminate\n },\n type: 'checkbox',\n class: 'ansh-choice__input',\n checked: checked.value,\n disabled: isDisabled,\n // Announces \"mixed\" rather than \"checked\"/\"unchecked\" — the whole point of the state.\n ...(props.indeterminate ? { 'aria-checked': 'mixed' as const } : null),\n ...(props.invalid ? { 'aria-invalid': true } : null),\n ...(props.description ? { 'aria-describedby': descriptionId } : null),\n ...restAttrs,\n id,\n onChange: (event: Event) => setChecked((event.target as HTMLInputElement).checked),\n }),\n h(\n 'span',\n {\n class: 'ansh-choice__indicator ansh-choice__indicator--check',\n 'aria-hidden': 'true',\n },\n [\n props.indeterminate\n ? h('svg', { viewBox: '0 0 14 14', width: '10', height: '10' }, [\n h('path', {\n d: 'M3 7h8',\n stroke: 'currentColor',\n 'stroke-width': '2',\n 'stroke-linecap': 'round',\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 ]),\n\n props.label || props.description\n ? h('span', { class: 'ansh-choice__text' }, [\n props.label\n ? h('label', { class: 'ansh-choice__label', for: id }, [\n resolveSlotContent(props.label),\n ])\n : null,\n props.description\n ? h('span', { class: 'ansh-choice__description', id: descriptionId }, [\n resolveSlotContent(props.description),\n ])\n : null,\n ])\n : null,\n ],\n )\n }\n },\n})\n\n// --- Switch -------------------------------------------------------------\n\n/**\n * An on/off toggle.\n *\n * `role=\"switch\"` rather than a plain checkbox: it makes a screen reader announce \"on\"/\"off\" instead\n * of \"checked\"/\"not checked\", which is the difference between a setting and a selection.\n *\n * A switch applies immediately; a checkbox applies on submit. If the change needs a Save button, the\n * control should be a checkbox.\n */\nexport const Switch = defineComponent({\n name: 'AnshSwitch',\n inheritAttrs: false,\n props: {\n modelValue: { type: Boolean, default: undefined },\n defaultValue: { type: Boolean, default: false },\n label: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n description: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n /** Where the label sits. Default `'end'`; `'start'` suits settings rows. */\n labelPosition: { type: String as PropType<'start' | 'end'>, default: 'end' },\n size: { type: String as PropType<ChoiceSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n },\n emits: ['update:modelValue'],\n setup(props, { attrs, emit, expose }) {\n const fieldProps = useFieldControl()\n const inputRef = ref<HTMLInputElement | null>(null)\n const generatedId = useId()\n\n const [checked, setChecked] = useControllableState(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n\n expose({\n focus: (options?: FocusOptions) => inputRef.value?.focus(options),\n blur: () => inputRef.value?.blur(),\n get element() {\n return inputRef.value\n },\n } satisfies ExposedInput)\n\n return () => {\n const { id: attrId, class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n const id = (attrId as string | undefined) ?? fieldProps.value.id ?? generatedId\n const descriptionId = `${id}-hint`\n const isDisabled = props.disabled || Boolean(fieldProps.value.disabled)\n\n return h(\n 'div',\n {\n class: cx(\n 'ansh-switch-row',\n `ansh-switch-row--${props.labelPosition}`,\n isDisabled && 'ansh-choice--disabled',\n attrClass as string,\n ),\n },\n [\n h('span', { class: 'ansh-switch', 'data-size': props.size }, [\n h('input', {\n ref: inputRef,\n type: 'checkbox',\n role: 'switch',\n class: 'ansh-choice__input',\n checked: checked.value,\n disabled: isDisabled,\n ...(props.description ? { 'aria-describedby': descriptionId } : null),\n ...restAttrs,\n id,\n onChange: (event: Event) => setChecked((event.target as HTMLInputElement).checked),\n }),\n h('span', { class: 'ansh-switch__track', 'aria-hidden': 'true' }, [\n h('span', { class: 'ansh-switch__thumb' }),\n ]),\n ]),\n\n props.label || props.description\n ? h('span', { class: 'ansh-choice__text' }, [\n props.label\n ? h('label', { class: 'ansh-choice__label', for: id }, [\n resolveSlotContent(props.label),\n ])\n : null,\n props.description\n ? h('span', { class: 'ansh-choice__description', id: descriptionId }, [\n resolveSlotContent(props.description),\n ])\n : null,\n ])\n : null,\n ],\n )\n }\n },\n})\n\n// --- Radio ----------------------------------------------------------------\n\ninterface RadioGroupContextValue {\n name: string\n value: ComputedRef<string | undefined>\n setValue: (value: string) => void\n readonly disabled: boolean\n}\n\nconst RadioGroupKey: InjectionKey<RadioGroupContextValue> = Symbol('ansh-radio-group')\n\nexport interface RadioGroupProps {\n modelValue?: string\n defaultValue?: string\n /** Shared `name`. Generated when omitted, which is fine outside a native form. */\n name?: string\n label?: string\n orientation?: 'vertical' | 'horizontal'\n disabled?: boolean\n}\n\n/**\n * A group of mutually exclusive choices.\n *\n * Native radios already implement roving focus: arrow keys move between them and Tab enters and\n * leaves the group as a unit. That behaviour is free as long as every input shares a `name`, which\n * is what this context distributes — and it is why this doesn't reimplement key handling.\n */\nexport const RadioGroup = defineComponent({\n name: 'AnshRadioGroup',\n props: {\n modelValue: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n name: { type: String, default: undefined },\n label: { type: String, default: undefined },\n orientation: { type: String as PropType<'vertical' | 'horizontal'>, default: 'vertical' },\n disabled: { type: Boolean, default: false },\n },\n emits: ['update:modelValue'],\n setup(props, { slots, emit, attrs }) {\n const generatedName = useId('radiogroup')\n\n const [current, setCurrent] = useControllableState<string | undefined>(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n\n provide(RadioGroupKey, {\n get name() {\n return props.name ?? generatedName\n },\n value: current,\n setValue: setCurrent,\n get disabled() {\n return props.disabled\n },\n } as RadioGroupContextValue)\n\n return () =>\n h(\n 'div',\n {\n role: 'radiogroup',\n ...(props.label ? { 'aria-label': props.label } : null),\n class: cx(\n 'ansh-radio-group',\n `ansh-radio-group--${props.orientation}`,\n attrs.class as string,\n ),\n },\n slots.default?.(),\n )\n },\n})\n\nexport const Radio = defineComponent({\n name: 'AnshRadio',\n inheritAttrs: false,\n props: {\n value: { type: String, required: true },\n label: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n description: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n size: { type: String as PropType<ChoiceSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n },\n setup(props, { attrs, expose }) {\n const group = inject(RadioGroupKey, null)\n const inputRef = ref<HTMLInputElement | null>(null)\n const generatedId = useId()\n\n expose({\n focus: (options?: FocusOptions) => inputRef.value?.focus(options),\n blur: () => inputRef.value?.blur(),\n get element() {\n return inputRef.value\n },\n } satisfies ExposedInput)\n\n return () => {\n const { id: attrId, class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n const id = (attrId as string | undefined) ?? generatedId\n const descriptionId = `${id}-hint`\n const isDisabled = props.disabled || Boolean(group?.disabled)\n\n return h(\n 'div',\n {\n class: cx(\n 'ansh-choice',\n `ansh-choice--${props.size}`,\n isDisabled && 'ansh-choice--disabled',\n attrClass as string,\n ),\n },\n [\n h('span', { class: 'ansh-choice__box' }, [\n h('input', {\n ref: inputRef,\n type: 'radio',\n class: 'ansh-choice__input',\n // Omitted rather than set to `undefined` when there is no group: `checked` is a DOM\n // property, and explicitly assigning `undefined` to it coerces to `false`, forcing an\n // uncontrolled radio back to unchecked on every re-render.\n ...(group ? { name: group.name, checked: group.value.value === props.value } : null),\n value: props.value,\n disabled: isDisabled,\n ...(props.description ? { 'aria-describedby': descriptionId } : null),\n ...restAttrs,\n id,\n onChange: () => group?.setValue(props.value),\n }),\n h('span', {\n class: 'ansh-choice__indicator ansh-choice__indicator--dot',\n 'aria-hidden': 'true',\n }),\n ]),\n\n props.label || props.description\n ? h('span', { class: 'ansh-choice__text' }, [\n props.label\n ? h('label', { class: 'ansh-choice__label', for: id }, [\n resolveSlotContent(props.label),\n ])\n : null,\n props.description\n ? h('span', { class: 'ansh-choice__description', id: descriptionId }, [\n resolveSlotContent(props.description),\n ])\n : null,\n ])\n : null,\n ],\n )\n }\n },\n})\n\n// --- Card-style choices ---------------------------------------------------\n\n/**\n * A radio rendered as a selectable card — plan pickers, onboarding branches.\n *\n * Still a radio underneath, so keyboard and screen-reader behaviour is identical to the plain one.\n * Selection is marked by a border *and* a check, never colour alone: WCAG 1.4.1 requires that colour\n * not be the sole carrier of information, and roughly 1 in 12 men cannot rely on it.\n */\nexport const ChoiceCard = defineComponent({\n name: 'AnshChoiceCard',\n inheritAttrs: false,\n props: {\n value: { type: String, required: true },\n label: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n description: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n icon: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n size: { type: String as PropType<ChoiceSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n },\n setup(props, { attrs, expose }) {\n const group = inject(RadioGroupKey, null)\n const radioRef = ref<ExposedInput | null>(null)\n\n expose({\n focus: (options?: FocusOptions) => radioRef.value?.focus(options),\n blur: () => radioRef.value?.blur(),\n get element() {\n return radioRef.value?.element ?? null\n },\n } satisfies ExposedInput)\n\n return () => {\n const { class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n const selected = group?.value.value === props.value\n\n return h(\n 'label',\n {\n class: cx(\n 'ansh-choice-card',\n selected && 'ansh-choice-card--selected',\n attrClass as string,\n ),\n },\n [\n h(Radio, {\n ref: radioRef,\n value: props.value,\n size: props.size,\n disabled: props.disabled,\n class: 'ansh-choice-card__radio',\n ...restAttrs,\n }),\n props.icon\n ? h('span', { class: 'ansh-choice-card__icon' }, [resolveSlotContent(props.icon)])\n : null,\n h('span', { class: 'ansh-choice-card__body' }, [\n h('span', { class: 'ansh-choice-card__label' }, [resolveSlotContent(props.label)]),\n props.description\n ? h('span', { class: 'ansh-choice-card__description' }, [\n resolveSlotContent(props.description),\n ])\n : null,\n ]),\n ],\n )\n }\n },\n})\n","import {\n type PropType,\n type VNodeChild,\n defineComponent,\n getCurrentScope,\n h,\n onScopeDispose,\n} from 'vue'\nimport { type SlotContent, cx, resolveSlotContent } from '../../primitives/utils'\n\n/**\n * Shared machinery for `Select` and `Combobox` — the Vue counterpart of `@ansh-ui/react`'s\n * `listbox.tsx`.\n *\n * Both are listboxes: same option shape, same grouping, same active-descendant navigation, same\n * \"skip disabled items\" rule. What differs is only how the query is entered — a hidden typeahead\n * buffer versus a visible text input. Sharing this is what keeps the two consistent; the alternative\n * is a `Select` whose Home key works and a `Combobox` whose doesn't.\n */\n\nexport interface SelectOption {\n value: string\n label: string\n /** Secondary line under the label. */\n description?: string\n icon?: SlotContent\n disabled?: boolean\n /** Options sharing a group render under one heading. */\n group?: string\n /** Extra text matched by search but never displayed. */\n keywords?: string\n}\n\n/** Move `active` by `delta`, skipping disabled options and stopping at the ends. */\nexport function stepActive(\n options: readonly SelectOption[],\n active: number,\n delta: number,\n loop = true,\n): number {\n if (options.length === 0) return -1\n\n let index = active\n // Bounded by length so an all-disabled list terminates instead of spinning.\n for (let attempts = 0; attempts < options.length; attempts++) {\n index += delta\n if (index < 0) {\n if (!loop) return active\n index = options.length - 1\n }\n if (index >= options.length) {\n if (!loop) return active\n index = 0\n }\n if (!options[index]?.disabled) return index\n }\n return active\n}\n\n/** First enabled option at or after `from`. */\nexport function firstEnabled(options: readonly SelectOption[], from = 0): number {\n for (let i = from; i < options.length; i++) {\n if (!options[i]?.disabled) return i\n }\n return -1\n}\n\n/**\n * Type-ahead over a listbox with no text input.\n *\n * Typing \"ca\" jumps to \"Canada\". The buffer resets after a pause, so typing \"c\", waiting, then \"a\"\n * moves to the first \"c\" and then the first \"a\" — which is what the native `<select>` does and what\n * users have internalised over three decades.\n *\n * `getOptions` is a function rather than a snapshot array: unlike a React hook (recreated every\n * render, so it always closes over the render's own props), this runs once in `setup()`, so it has\n * to read the *current* options itself on every keystroke rather than close over a stale list.\n */\nexport function useTypeahead(\n getOptions: () => readonly SelectOption[],\n onMatch: (index: number) => void,\n timeout = 600,\n): (key: string) => boolean {\n let buffer = ''\n let timer: ReturnType<typeof setTimeout> | undefined\n\n if (getCurrentScope()) onScopeDispose(() => clearTimeout(timer))\n\n return (key: string) => {\n // Single printable characters only — modifier combinations and named keys are commands.\n if (key.length !== 1 || key === ' ') return false\n\n clearTimeout(timer)\n buffer += key.toLowerCase()\n timer = setTimeout(() => {\n buffer = ''\n }, timeout)\n\n const options = getOptions()\n const index = options.findIndex(\n (option) => !option.disabled && option.label.toLowerCase().startsWith(buffer),\n )\n if (index >= 0) {\n onMatch(index)\n return true\n }\n return false\n }\n}\n\n/**\n * Subsequence match with a relevance score. `-1` means no match.\n *\n * Subsequence rather than substring because that is what users of a modern picker expect: typing\n * \"nds\" should find \"**N**ew **D**ata**s**ource\".\n */\nexport function scoreOption(query: string, option: SelectOption): number {\n if (query.trim() === '') return 0\n const q = query.toLowerCase()\n const haystacks = [option.label, option.keywords ?? '', option.description ?? '']\n\n let best = -1\n for (let h = 0; h < haystacks.length; h++) {\n const text = haystacks[h]!.toLowerCase()\n let queryIndex = 0\n let total = 0\n let run = 0\n\n for (let i = 0; i < text.length && queryIndex < q.length; i++) {\n if (text[i] === q[queryIndex]) {\n run++\n total += run * 2 + (i === 0 ? 8 : 0)\n queryIndex++\n } else {\n run = 0\n }\n }\n\n // Fields after the label are weaker signals; a label match should always outrank a keyword one.\n if (queryIndex === q.length) best = Math.max(best, total - h * 4)\n }\n return best\n}\n\n/** Filter and rank options against a query, preserving order when the query is empty. */\nexport function filterOptions(\n options: readonly SelectOption[],\n query: string,\n): readonly SelectOption[] {\n if (query.trim() === '') return options\n return options\n .map((option) => ({ option, score: scoreOption(query, option) }))\n .filter((entry) => entry.score >= 0)\n .sort((a, b) => b.score - a.score)\n .map((entry) => entry.option)\n}\n\n/**\n * Mark the subsequence characters in `text` that matched `query`.\n *\n * Uses `<mark>` rather than a styled span: it carries the semantic, so a screen reader in verbose\n * mode can convey the emphasis, and it needs no class to be meaningful.\n */\nfunction highlightMatches(text: string, query: string): VNodeChild[] {\n const q = query.toLowerCase()\n const lower = text.toLowerCase()\n\n const parts: VNodeChild[] = []\n let queryIndex = 0\n let plain = ''\n\n for (let i = 0; i < text.length; i++) {\n if (queryIndex < q.length && lower[i] === q[queryIndex]) {\n if (plain) {\n parts.push(plain)\n plain = ''\n }\n parts.push(h('mark', { key: i, class: 'ansh-listbox__mark' }, text[i]))\n queryIndex++\n } else {\n plain += text[i]\n }\n }\n if (plain) parts.push(plain)\n\n return parts\n}\n\nexport interface OptionListProps {\n options: readonly SelectOption[]\n active: number\n selected: readonly string[]\n listId: string\n multiple?: boolean\n emptyMessage?: SlotContent\n onSelect: (option: SelectOption) => void\n onActiveChange: (index: number) => void\n /** Highlight the matched characters. */\n query?: string\n}\n\n/** Render the option rows, with group headings emitted on change. */\nexport const OptionList = defineComponent({\n name: 'AnshOptionList',\n props: {\n options: { type: Array as PropType<readonly SelectOption[]>, required: true },\n active: { type: Number, required: true },\n selected: { type: Array as PropType<readonly string[]>, required: true },\n listId: { type: String, required: true },\n multiple: { type: Boolean, default: false },\n emptyMessage: {\n type: [String, Object, Function] as PropType<SlotContent>,\n default: 'No results',\n },\n onSelect: { type: Function as PropType<(option: SelectOption) => void>, required: true },\n onActiveChange: { type: Function as PropType<(index: number) => void>, required: true },\n query: { type: String, default: undefined },\n },\n setup(props) {\n return () => {\n if (props.options.length === 0) {\n return h('div', { class: 'ansh-listbox__empty' }, [resolveSlotContent(props.emptyMessage)])\n }\n\n const selectedSet = new Set(props.selected)\n let lastGroup: string | undefined\n\n return props.options.map((option, index) => {\n const heading = option.group && option.group !== lastGroup ? option.group : null\n lastGroup = option.group\n const isSelected = selectedSet.has(option.value)\n\n return h('div', { key: option.value, role: 'presentation' }, [\n heading\n ? h('div', { class: 'ansh-listbox__group', role: 'presentation' }, heading)\n : null,\n h(\n 'div',\n {\n id: `${props.listId}-option-${index}`,\n role: 'option',\n 'aria-selected': isSelected,\n 'aria-disabled': option.disabled || undefined,\n class: cx(\n 'ansh-listbox__option',\n index === props.active && 'ansh-listbox__option--active',\n isSelected && 'ansh-listbox__option--selected',\n option.disabled && 'ansh-listbox__option--disabled',\n ),\n // A mousedown on the list would blur the input/trigger and close the popup before the\n // click ever lands, so it is prevented here.\n onMousedown: (event: MouseEvent) => event.preventDefault(),\n onMouseenter: () => !option.disabled && props.onActiveChange(index),\n onClick: () => !option.disabled && props.onSelect(option),\n },\n [\n props.multiple\n ? h(\n 'span',\n {\n class: cx('ansh-listbox__check', isSelected && 'ansh-listbox__check--on'),\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 : null,\n\n option.icon\n ? h('span', { class: 'ansh-listbox__icon' }, [resolveSlotContent(option.icon)])\n : null,\n\n h('span', { class: 'ansh-listbox__text' }, [\n h('span', { class: 'ansh-listbox__label' }, [\n props.query ? highlightMatches(option.label, props.query) : option.label,\n ]),\n option.description\n ? h('span', { class: 'ansh-listbox__description' }, option.description)\n : null,\n ]),\n\n !props.multiple && isSelected\n ? h('span', { class: 'ansh-listbox__tick', 'aria-hidden': 'true' }, [\n h('svg', { viewBox: '0 0 14 14', width: '12', height: '12' }, [\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 : null,\n ],\n ),\n ])\n })\n }\n },\n})\n","import { type PropType, Teleport, defineComponent, h, ref, watch } from 'vue'\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 { useFieldControl } from './field'\nimport { type SelectOption, OptionList, firstEnabled, stepActive, useTypeahead } from './listbox'\n\nexport type { SelectOption }\n\n/**\n * A single-choice select — the Vue counterpart of `@ansh-ui/react`'s `Select`.\n *\n * Follows the ARIA 1.2 collapsed-listbox pattern: the trigger is a `button` with\n * `aria-haspopup=\"listbox\"`, and while open, focus moves to the listbox with a virtual cursor\n * carried by `aria-activedescendant`.\n *\n * A custom select is only justified when the native one can't do the job — option descriptions,\n * icons, grouping with custom rendering. When a plain list of strings will do, `<select>` is still\n * better: it gets the platform's own picker on mobile, which no custom implementation matches. This\n * exists because CRM and admin screens genuinely need the richer version.\n *\n * ```vue\n * <Select v-model=\"country\" :options=\"countries\" label=\"Country\" />\n * ```\n */\nexport const Select = defineComponent({\n name: 'AnshSelect',\n props: {\n options: { type: Array as PropType<readonly SelectOption[]>, required: true },\n // `null` is a legitimate \"cleared\" value alongside `string`; Vue's optional-prop check skips\n // type validation whenever the resolved value is `null` or `undefined`, so declaring the runtime\n // type as `String` here does not produce a dev-mode warning when `null` is passed.\n modelValue: { type: String as PropType<string | null>, default: undefined },\n defaultValue: { type: String as PropType<string | null>, default: null },\n placeholder: { type: String, default: 'Select…' },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: 'md' },\n /** Show a clear button once something is selected. */\n clearable: { type: Boolean, default: false },\n /** Accessible name when there is no wrapping `Field`. */\n label: { type: String, default: undefined },\n /** Emit a hidden input so the value posts in a native form submit. */\n name: { type: String, default: undefined },\n /** Max height of the popup before it scrolls. Default `'18rem'`. */\n maxHeight: { type: String, default: '18rem' },\n emptyMessage: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n },\n emits: ['update:modelValue'],\n setup(props, { attrs, emit }) {\n const fieldProps = useFieldControl()\n const open = ref(false)\n\n const [current, setCurrent] = useControllableState<string | null>(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n\n const triggerRef = ref<HTMLButtonElement | null>(null)\n const listRef = ref<HTMLDivElement | null>(null)\n const listId = useId('select')\n\n const selectedIndex = () => props.options.findIndex((option) => option.value === current.value)\n const active = ref(0)\n\n const { position } = useAnchoredPosition(triggerRef, listRef, open, {\n placement: 'bottom-start',\n offset: 6,\n matchWidth: true,\n })\n\n useDismiss(\n listRef,\n open,\n () => {\n open.value = false\n },\n { ignore: [triggerRef] },\n )\n\n const openList = (): void => {\n if (props.disabled) return\n // Open with the cursor on the current selection, not at the top. Reopening a select and\n // finding the highlight back at item one is disorienting when the list is long.\n const index = selectedIndex()\n active.value = index >= 0 ? index : firstEnabled(props.options)\n open.value = true\n }\n\n const commit = (option: SelectOption): void => {\n setCurrent(option.value)\n open.value = false\n triggerRef.value?.focus()\n }\n\n const typeahead = useTypeahead(\n () => props.options,\n (index) => {\n active.value = index\n // Closed-list typeahead selects directly, matching `<select>`.\n if (!open.value) setCurrent(props.options[index]!.value)\n },\n )\n\n /** Keys handled by the trigger, which only has focus while the list is closed. */\n const onTriggerKeydown = (event: KeyboardEvent): void => {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault()\n openList()\n return\n }\n if (typeahead(event.key)) event.preventDefault()\n }\n\n /** Keys handled by the listbox, which takes focus while open. */\n const onListKeydown = (event: KeyboardEvent): void => {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n active.value = stepActive(props.options, active.value, 1)\n break\n case 'ArrowUp':\n event.preventDefault()\n active.value = stepActive(props.options, active.value, -1)\n break\n case 'Home':\n event.preventDefault()\n active.value = firstEnabled(props.options)\n break\n case 'End':\n event.preventDefault()\n active.value = stepActive(props.options, props.options.length, -1, false)\n break\n case 'Enter':\n case ' ': {\n event.preventDefault()\n const option = props.options[active.value]\n if (option && !option.disabled) commit(option)\n break\n }\n case 'Escape':\n event.preventDefault()\n open.value = false\n triggerRef.value?.focus()\n break\n case 'Tab':\n // Focus is inside a teleported node at the end of `<body>`, so a default Tab would jump\n // somewhere unrelated to the field. Close and hand focus back to the trigger instead,\n // leaving the user exactly where they were in the form's tab order.\n event.preventDefault()\n open.value = false\n triggerRef.value?.focus()\n break\n default:\n typeahead(event.key)\n }\n }\n\n watch(\n [active, open],\n () => {\n if (!open.value) return\n document\n .getElementById(`${listId}-option-${active.value}`)\n ?.scrollIntoView?.({ block: 'nearest' })\n },\n { flush: 'post' },\n )\n\n return () => {\n const selected = (() => {\n const index = selectedIndex()\n return index >= 0 ? props.options[index] : undefined\n })()\n\n return h(\n 'div',\n { class: cx('ansh-select', `ansh-select--${props.size}`, attrs.class as string) },\n [\n h(\n 'button',\n {\n ref: triggerRef,\n type: 'button',\n class: cx(\n 'ansh-select__trigger',\n 'ansh-focusable',\n open.value && 'ansh-select__trigger--open',\n (props.invalid || fieldProps.value['aria-invalid']) &&\n 'ansh-select__trigger--invalid',\n !selected && 'ansh-select__trigger--placeholder',\n ),\n disabled: props.disabled || fieldProps.value.disabled,\n 'aria-haspopup': 'listbox',\n 'aria-expanded': open.value,\n 'aria-controls': open.value ? listId : undefined,\n ...(props.label ? { 'aria-label': props.label } : null),\n ...fieldProps.value,\n onClick: () => (open.value ? (open.value = false) : openList()),\n onKeydown: onTriggerKeydown,\n },\n [\n selected?.icon\n ? h('span', { class: 'ansh-select__icon' }, [resolveSlotContent(selected.icon)])\n : null,\n h('span', { class: 'ansh-select__value' }, selected?.label ?? props.placeholder),\n\n props.clearable && selected && !props.disabled\n ? // A `<span role=\"button\">` rather than a nested `<button>`: nesting interactive\n // elements is invalid HTML and browsers resolve it by dropping the inner one.\n h(\n 'span',\n {\n role: 'button',\n tabindex: '-1',\n 'aria-label': 'Clear selection',\n class: 'ansh-select__clear',\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n setCurrent(null)\n },\n },\n [\n h(\n 'svg',\n { viewBox: '0 0 16 16', width: '12', height: '12', 'aria-hidden': 'true' },\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 h('span', { class: 'ansh-select__arrow', 'aria-hidden': 'true' }, [\n h('svg', { viewBox: '0 0 12 12', width: '12', height: '12' }, [\n h('path', {\n d: 'M3 4.5L6 7.5l3-3',\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 // Posts the value in a plain HTML form. Without this the select is invisible to a\n // non-JavaScript submit, which still matters for progressively enhanced forms.\n props.name\n ? h('input', { type: 'hidden', name: props.name, value: current.value ?? '' })\n : null,\n\n open.value\n ? h(Teleport, { to: 'body' }, [\n h(\n 'div',\n {\n // Move focus into the listbox the moment it attaches. Focus has to be *on* the\n // element carrying `aria-activedescendant` — that is what the attribute means.\n // Leaving focus on the trigger and pointing at an option from the list is a\n // common shortcut that screen readers ignore, producing a select that navigates\n // in silence.\n //\n // Done with a function ref rather than a watcher: the listbox is teleported, and\n // its content mounts on its own schedule, so a watcher here can run while the\n // teleported node does not yet exist, leaving focus on `<body>`. A function ref\n // fires exactly when Vue attaches the node, which is the only moment that is\n // guaranteed to be correct.\n ref: (node) => {\n const element = (node as HTMLDivElement | null) ?? null\n listRef.value = element\n element?.focus({ preventScroll: true })\n },\n id: listId,\n role: 'listbox',\n tabindex: '-1',\n 'aria-activedescendant': props.options[active.value]\n ? `${listId}-option-${active.value}`\n : undefined,\n ...(props.label ? { 'aria-label': props.label } : null),\n class: 'ansh-listbox',\n style: { ...position.value.style, maxHeight: props.maxHeight },\n 'data-side': position.value.side,\n onKeydown: onListKeydown,\n },\n [\n h(OptionList, {\n options: props.options,\n active: active.value,\n selected: current.value ? [current.value] : [],\n listId,\n emptyMessage: props.emptyMessage,\n onSelect: commit,\n onActiveChange: (index: number) => {\n active.value = index\n },\n }),\n ],\n ),\n ])\n : null,\n ],\n )\n }\n },\n})\n","import { type PropType, Teleport, computed, defineComponent, h, ref, watch } from 'vue'\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 { useFieldControl } from './field'\nimport { type SelectOption, OptionList, filterOptions, firstEnabled, stepActive } from './listbox'\n\nconst CREATE_VALUE = '__au_create__'\n\n/**\n * A searchable select, single or multiple — the Vue counterpart of `@ansh-ui/react`'s `Combobox`.\n *\n * This is the ARIA 1.2 combobox pattern, and the distinguishing detail is that **focus never leaves\n * the input**. Arrow keys move a virtual cursor announced through `aria-activedescendant`, so the\n * user can keep typing to narrow the list while navigating it. Implementations that move DOM focus\n * into the list break that: the next keystroke goes to the list, not the query. (`Select`, next\n * door, is the one that does move focus into its listbox — the two patterns differ for exactly this\n * reason.)\n *\n * Shares `SelectOption`, `OptionList`, `filterOptions`, `firstEnabled` and `stepActive` with `Select`\n * via `./listbox`, same as the React source shares them with its own `Select` via `listbox.tsx`.\n *\n * ```vue\n * <Combobox multiple :options=\"owners\" v-model=\"selected\" />\n * ```\n */\nexport const Combobox = defineComponent({\n name: 'AnshCombobox',\n props: {\n options: { type: Array as PropType<readonly SelectOption[]>, required: true },\n /** Selected values. Single-select uses a one-element array. */\n modelValue: { type: Array as PropType<readonly string[]>, default: undefined },\n defaultValue: { type: Array as PropType<readonly string[]>, default: () => [] },\n multiple: { type: Boolean, default: false },\n placeholder: { type: String, default: 'Search…' },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: 'md' },\n label: { type: String, default: undefined },\n maxHeight: { type: String, default: '18rem' },\n emptyMessage: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n /**\n * Offer the typed text as a new option. Returns the created option's value.\n *\n * Kept as a plain callback prop rather than a Vue `emit` (unlike `search`, below): the returned\n * value feeds straight back into what gets selected, and `emit` has no return channel for a\n * parent to hand a value back synchronously.\n */\n onCreate: { type: Function as PropType<(label: string) => string>, default: undefined },\n /** Text for the create row. Receives the current query. */\n createLabel: {\n type: Function as PropType<(query: string) => string>,\n default: (query: string) => `Create “${query}”`,\n },\n /** Skip local filtering, e.g. when a `search` listener already returns filtered options. */\n filter: { type: Boolean, default: true },\n /** Cap on how many chips render before collapsing to \"+N\". Default `Infinity`. */\n maxVisibleChips: { type: Number, default: Number.POSITIVE_INFINITY },\n },\n emits: ['update:modelValue', 'search'],\n setup(props, { emit, attrs }) {\n const fieldProps = useFieldControl()\n const open = ref(false)\n const query = ref('')\n const active = ref(0)\n\n const [selected, setSelected] = useControllableState<readonly string[]>(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n\n const inputRef = ref<HTMLInputElement | null>(null)\n const wrapRef = ref<HTMLDivElement | null>(null)\n const listRef = ref<HTMLDivElement | null>(null)\n const listId = useId('combobox')\n\n const visible = computed<readonly SelectOption[]>(() =>\n props.filter ? filterOptions(props.options, query.value) : props.options,\n )\n\n const byValue = computed(() => new Map(props.options.map((o) => [o.value, o])))\n\n // The create row is appended as a real option so it participates in arrow navigation and in the\n // active-descendant announcements, rather than being a special case bolted on below the list.\n const canCreate = computed(\n () =>\n Boolean(props.onCreate) &&\n query.value.trim().length > 0 &&\n !props.options.some(\n (option) => option.label.toLowerCase() === query.value.trim().toLowerCase(),\n ),\n )\n\n const rows = computed<readonly SelectOption[]>(() =>\n canCreate.value\n ? [...visible.value, { value: CREATE_VALUE, label: props.createLabel(query.value.trim()) }]\n : visible.value,\n )\n\n const { position } = useAnchoredPosition(wrapRef, listRef, open, {\n placement: 'bottom-start',\n offset: 6,\n matchWidth: true,\n })\n\n useDismiss(\n listRef,\n open,\n () => {\n open.value = false\n },\n { ignore: [wrapRef] },\n )\n\n // Reset the cursor whenever the result set changes, or it can point past the end.\n watch(rows, () => (active.value = firstEnabled(rows.value)), { immediate: true })\n\n const toggle = (option: SelectOption): void => {\n let optionValue = option.value\n\n if (optionValue === CREATE_VALUE && props.onCreate) {\n optionValue = props.onCreate(query.value.trim())\n }\n\n if (props.multiple) {\n const next = selected.value.includes(optionValue)\n ? selected.value.filter((v) => v !== optionValue)\n : [...selected.value, optionValue]\n setSelected(next)\n // The query is cleared but the list stays open: picking several values in a row is the\n // whole reason someone chose the multi variant.\n query.value = ''\n inputRef.value?.focus()\n } else {\n setSelected([optionValue])\n query.value = ''\n open.value = false\n }\n }\n\n const remove = (optionValue: string): void => {\n setSelected(selected.value.filter((v) => v !== optionValue))\n }\n\n const onKeydown = (event: KeyboardEvent): void => {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n if (!open.value) {\n open.value = true\n return\n }\n active.value = stepActive(rows.value, active.value, 1)\n break\n case 'ArrowUp':\n event.preventDefault()\n if (!open.value) {\n open.value = true\n return\n }\n active.value = stepActive(rows.value, active.value, -1)\n break\n case 'Home':\n if (!open.value) return\n event.preventDefault()\n active.value = firstEnabled(rows.value)\n break\n case 'End':\n if (!open.value) return\n event.preventDefault()\n active.value = stepActive(rows.value, rows.value.length, -1, false)\n break\n case 'Enter': {\n if (!open.value) return\n const option = rows.value[active.value]\n if (option && !option.disabled) {\n event.preventDefault()\n toggle(option)\n }\n break\n }\n case 'Escape':\n if (!open.value) return\n event.preventDefault()\n open.value = false\n break\n case 'Backspace':\n // Backspace on an empty query removes the last chip — the behaviour every tag input has\n // and the fastest way to undo a mis-click.\n if (props.multiple && query.value === '' && selected.value.length > 0) {\n remove(selected.value[selected.value.length - 1]!)\n }\n break\n }\n }\n\n watch(\n [active, open],\n () => {\n if (!open.value) return\n document\n .getElementById(`${listId}-option-${active.value}`)\n ?.scrollIntoView?.({ block: 'nearest' })\n },\n { flush: 'post' },\n )\n\n return () => {\n const chips = props.multiple ? selected.value : []\n const overflow = Math.max(0, chips.length - props.maxVisibleChips)\n const shownChips = overflow > 0 ? chips.slice(0, props.maxVisibleChips) : chips\n\n // Single-select shows the chosen label as the input's text when not actively searching, which\n // is what makes it read as a select rather than an empty search box.\n const singleLabel =\n !props.multiple && selected.value[0]\n ? (byValue.value.get(selected.value[0])?.label ?? '')\n : ''\n const inputValue = open.value || props.multiple ? query.value : singleLabel\n\n return h(\n 'div',\n { class: cx('ansh-combobox', `ansh-combobox--${props.size}`, attrs.class as string) },\n [\n h(\n 'div',\n {\n ref: wrapRef,\n class: cx(\n 'ansh-combobox__control',\n 'ansh-focusable-within',\n open.value && 'ansh-combobox__control--open',\n (props.invalid || fieldProps.value['aria-invalid']) &&\n 'ansh-combobox__control--invalid',\n props.disabled && 'ansh-combobox__control--disabled',\n ),\n // Clicking the padding focuses the input, but a click on a chip's remove button must\n // still reach that button.\n onMousedown: (event: MouseEvent) => {\n if (event.target === event.currentTarget) {\n event.preventDefault()\n inputRef.value?.focus()\n open.value = true\n }\n },\n },\n [\n ...shownChips.map((chipValue) => {\n const option = byValue.value.get(chipValue)\n return h('span', { key: chipValue, class: 'ansh-chip' }, [\n option?.icon\n ? h('span', { class: 'ansh-chip__icon' }, [resolveSlotContent(option.icon)])\n : null,\n h('span', { class: 'ansh-chip__label' }, option?.label ?? chipValue),\n h(\n 'button',\n {\n type: 'button',\n class: 'ansh-chip__remove',\n 'aria-label': `Remove ${option?.label ?? chipValue}`,\n disabled: props.disabled,\n onClick: () => remove(chipValue),\n },\n [\n h(\n 'svg',\n { viewBox: '0 0 16 16', width: '10', height: '10', 'aria-hidden': 'true' },\n [\n h('path', {\n d: 'M4 4l8 8M12 4l-8 8',\n stroke: 'currentColor',\n 'stroke-width': '2',\n 'stroke-linecap': 'round',\n fill: 'none',\n }),\n ],\n ),\n ],\n ),\n ])\n }),\n\n overflow > 0\n ? h('span', { class: 'ansh-chip ansh-chip--count' }, `+${overflow}`)\n : null,\n\n h('input', {\n ref: inputRef,\n type: 'text',\n role: 'combobox',\n class: 'ansh-combobox__input',\n value: inputValue,\n placeholder: chips.length > 0 ? '' : props.placeholder,\n disabled: props.disabled || fieldProps.value.disabled,\n autocomplete: 'off',\n spellcheck: false,\n 'aria-expanded': open.value,\n 'aria-controls': open.value ? listId : undefined,\n 'aria-autocomplete': 'list',\n 'aria-activedescendant':\n open.value && rows.value[active.value]\n ? `${listId}-option-${active.value}`\n : undefined,\n ...(props.label ? { 'aria-label': props.label } : null),\n ...fieldProps.value,\n onInput: (event: Event) => {\n query.value = (event.target as HTMLInputElement).value\n open.value = true\n // React's `onSearch` callback prop, here as an `emit` — a fire-and-forget\n // notification with no return value the way `onCreate` above needs, so the\n // idiomatic Vue shape is `@search`, not another callback prop.\n emit('search', query.value)\n },\n onFocus: () => {\n open.value = true\n },\n onKeydown,\n }),\n\n h('span', { class: 'ansh-select__arrow', 'aria-hidden': 'true' }, [\n h('svg', { viewBox: '0 0 12 12', width: '12', height: '12' }, [\n h('path', {\n d: 'M3 4.5L6 7.5l3-3',\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 // The count is announced when it changes, so a screen-reader user knows filtering is\n // narrowing the list without having to arrow through it.\n h(\n 'span',\n { class: 'ansh-visually-hidden', 'aria-live': 'polite' },\n open.value\n ? `${visible.value.length} result${visible.value.length === 1 ? '' : 's'} available`\n : '',\n ),\n\n open.value\n ? h(Teleport, { to: 'body' }, [\n h(\n 'div',\n {\n ref: listRef,\n id: listId,\n role: 'listbox',\n 'aria-multiselectable': props.multiple || undefined,\n ...(props.label ? { 'aria-label': props.label } : null),\n class: 'ansh-listbox',\n style: { ...position.value.style, maxHeight: props.maxHeight },\n 'data-side': position.value.side,\n },\n [\n h(OptionList, {\n options: rows.value,\n active: active.value,\n selected: selected.value,\n listId,\n multiple: props.multiple,\n query: query.value,\n emptyMessage: props.emptyMessage,\n onSelect: toggle,\n onActiveChange: (index: number) => {\n active.value = index\n },\n }),\n ],\n ),\n ])\n : null,\n ],\n )\n }\n },\n})\n","import { type PropType, computed, defineComponent, h, ref } from 'vue'\nimport { type SlotContent, cx, resolveSlotContent, useId } from '../../primitives/utils'\nimport { useControllableState } from '../../primitives/use-controllable-state'\nimport { useFieldControl } from './field'\n\nexport interface SliderMark {\n value: number\n label?: SlotContent\n}\n\n/** Round to the nearest step, anchored at `min` so a min of 5 with step 10 gives 5, 15, 25. */\nfunction snap(value: number, min: number, max: number, step: number): number {\n if (step <= 0) return Math.min(Math.max(value, min), max)\n const stepped = Math.round((value - min) / step) * step + min\n // Re-rounded against the step's decimal count: 0.1 + 0.2 arithmetic otherwise yields values\n // like 0.30000000000000004 straight into the label.\n const decimals = String(step).includes('.') ? String(step).split('.')[1]!.length : 0\n return Number(Math.min(Math.max(stepped, min), max).toFixed(decimals))\n}\n\n/**\n * A single-value slider — the Vue counterpart of `@ansh-ui/react`'s `Slider`.\n *\n * The thumb is the focusable element and carries `role=\"slider\"` with the full value triple, so a\n * screen reader announces \"40, slider, minimum 0, maximum 100\". Dragging writes the position via\n * `useControllableState` on every pointer move and only fires `commit` (React's `onCommit`) on\n * release — a re-render per pointer move is what makes hand-rolled sliders feel sticky.\n */\nexport const Slider = defineComponent({\n name: 'AnshSlider',\n props: {\n modelValue: { type: Number, default: undefined },\n defaultValue: { type: Number, default: 0 },\n min: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n step: { type: Number, default: 1 },\n disabled: { type: Boolean, default: false },\n /** Vertical sliders are for mixers and volume; default is horizontal. */\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\n marks: { type: Array as PropType<readonly SliderMark[]>, default: undefined },\n /** Show the value in a bubble above the thumb while dragging. */\n showValue: { type: [Boolean, String] as PropType<boolean | 'always'>, default: false },\n /**\n * Format the bubble and the screen-reader announcement.\n *\n * `String` itself as the default — not a factory returning it. Vue never invokes a `Function`-\n * typed prop's `default` to resolve it (unlike `Object`/`Array`, where a factory is required);\n * it is used as-is. Wrapping it (`() => String`) would make `formatValue` itself resolve to that\n * wrapper, so calling `formatValue(current.value)` returns the `String` constructor instead of a\n * formatted string.\n */\n formatValue: { type: Function as PropType<(value: number) => string>, default: String },\n label: { type: String, default: undefined },\n name: { type: String, default: undefined },\n },\n emits: ['update:modelValue', 'commit'],\n setup(props, { emit, attrs }) {\n const fieldProps = useFieldControl()\n const [current, setCurrent] = useControllableState<number>(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n const trackRef = ref<HTMLDivElement | null>(null)\n const dragging = ref(false)\n const id = useId('slider')\n\n const percent = computed(() => ((current.value - props.min) / (props.max - props.min)) * 100)\n\n const valueFromPointer = (event: PointerEvent): number => {\n const track = trackRef.value\n if (!track) return current.value\n const rect = track.getBoundingClientRect()\n const fraction =\n props.orientation === 'horizontal'\n ? (event.clientX - rect.left) / rect.width\n : // Inverted: in a vertical slider, up is more.\n 1 - (event.clientY - rect.top) / rect.height\n return snap(props.min + fraction * (props.max - props.min), props.min, props.max, props.step)\n }\n\n const onPointerdown = (event: PointerEvent): void => {\n if (props.disabled) return\n event.preventDefault()\n ;(event.currentTarget as HTMLElement).setPointerCapture(event.pointerId)\n dragging.value = true\n\n // Jump to where the track was clicked, then continue dragging from there.\n let latest = valueFromPointer(event)\n setCurrent(latest)\n\n const onMove = (moveEvent: PointerEvent): void => {\n latest = valueFromPointer(moveEvent)\n setCurrent(latest)\n }\n const onUp = (): void => {\n dragging.value = false\n emit('commit', latest)\n window.removeEventListener('pointermove', onMove)\n window.removeEventListener('pointerup', onUp)\n window.removeEventListener('pointercancel', onUp)\n }\n\n window.addEventListener('pointermove', onMove)\n window.addEventListener('pointerup', onUp)\n window.addEventListener('pointercancel', onUp)\n }\n\n const onKeydown = (event: KeyboardEvent): void => {\n if (props.disabled) return\n const large = (props.max - props.min) / 10\n let next: number | null = null\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n next = current.value + props.step\n break\n case 'ArrowLeft':\n case 'ArrowDown':\n next = current.value - props.step\n break\n case 'PageUp':\n next = current.value + large\n break\n case 'PageDown':\n next = current.value - large\n break\n case 'Home':\n next = props.min\n break\n case 'End':\n next = props.max\n break\n }\n\n if (next === null) return\n event.preventDefault()\n const snapped = snap(next, props.min, props.max, props.step)\n setCurrent(snapped)\n emit('commit', snapped)\n }\n\n return () =>\n h(\n 'div',\n {\n class: cx(\n 'ansh-slider',\n `ansh-slider--${props.orientation}`,\n props.disabled && 'ansh-slider--disabled',\n dragging.value && 'ansh-slider--dragging',\n attrs.class as string,\n ),\n style: { ['--ansh-slider-percent' as string]: `${percent.value}%` },\n },\n [\n h('div', { ref: trackRef, class: 'ansh-slider__track', onPointerdown }, [\n h('div', { class: 'ansh-slider__fill' }),\n\n ...(props.marks?.map((mark) => {\n const markPercent = ((mark.value - props.min) / (props.max - props.min)) * 100\n return h(\n 'span',\n {\n key: mark.value,\n class: cx(\n 'ansh-slider__mark',\n current.value >= mark.value && 'ansh-slider__mark--passed',\n ),\n style: { ['--ansh-mark' as string]: `${markPercent}%` },\n },\n [\n mark.label\n ? h('span', { class: 'ansh-slider__mark-label' }, [\n resolveSlotContent(mark.label),\n ])\n : null,\n ],\n )\n }) ?? []),\n\n h(\n 'div',\n {\n role: 'slider',\n tabindex: props.disabled ? '-1' : '0',\n class: 'ansh-slider__thumb ansh-focusable',\n 'aria-valuenow': current.value,\n 'aria-valuemin': props.min,\n 'aria-valuemax': props.max,\n // The formatted string, when it differs from the raw number. A slider showing\n // \"£1,200\" should not be announced as \"1200\".\n ...(props.formatValue(current.value) !== String(current.value)\n ? { 'aria-valuetext': props.formatValue(current.value) }\n : null),\n 'aria-orientation': props.orientation,\n 'aria-disabled': props.disabled || undefined,\n ...(props.label ? { 'aria-label': props.label } : null),\n ...(fieldProps.value.id ? { id: fieldProps.value.id } : null),\n ...(fieldProps.value['aria-describedby']\n ? { 'aria-describedby': fieldProps.value['aria-describedby'] }\n : null),\n onPointerdown,\n onKeydown,\n },\n [\n props.showValue === 'always' || (props.showValue && dragging.value)\n ? h(\n 'span',\n { class: 'ansh-slider__bubble', 'aria-hidden': 'true' },\n props.formatValue(current.value),\n )\n : null,\n ],\n ),\n ]),\n\n props.name\n ? h('input', {\n type: 'hidden',\n name: props.name,\n value: current.value,\n id: `${id}-hidden`,\n })\n : null,\n ],\n )\n },\n})\n\n/**\n * A two-thumb range slider — the Vue counterpart of `@ansh-ui/react`'s `RangeSlider`. Price filters,\n * date windows, numeric facets.\n *\n * The thumbs are allowed to pass each other, swapping roles when they do. Blocking the crossing is\n * the more common implementation and it is worse: a user dragging the lower thumb to the right hits\n * an invisible wall and has to work out that they need to grab the other one instead.\n *\n * The React `RangeSliderProps` type technically inherits an `orientation` field from `SliderProps`\n * via `Omit`, but the implementation never reads it — every drag and layout calculation is\n * horizontal-only. That field is dropped here rather than carried over as a prop that would do\n * nothing.\n */\nexport const RangeSlider = defineComponent({\n name: 'AnshRangeSlider',\n props: {\n // `Array as PropType<readonly [number, number]>` doesn't typecheck directly — TS won't accept\n // the cast because `any[]` (what `ArrayConstructor` produces) doesn't sufficiently overlap with\n // a fixed-length tuple. Routing through `unknown` is the standard escape for a tuple-typed Vue\n // prop; the runtime `type: Array` validation is unaffected.\n modelValue: {\n type: Array as unknown as PropType<readonly [number, number]>,\n default: undefined,\n },\n defaultValue: {\n type: Array as unknown as PropType<readonly [number, number]>,\n default: (): readonly [number, number] => [0, 100],\n },\n min: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n step: { type: Number, default: 1 },\n /** Smallest allowed gap between the two thumbs. Default `0`. */\n minDistance: { type: Number, default: 0 },\n disabled: { type: Boolean, default: false },\n marks: { type: Array as PropType<readonly SliderMark[]>, default: undefined },\n showValue: { type: [Boolean, String] as PropType<boolean | 'always'>, default: false },\n // `String` itself, not a factory — see the note on `Slider`'s `formatValue` above.\n formatValue: { type: Function as PropType<(value: number) => string>, default: String },\n label: { type: String, default: undefined },\n },\n emits: ['update:modelValue', 'commit'],\n setup(props, { emit, attrs }) {\n const [range, setRange] = useControllableState<readonly [number, number]>(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n const trackRef = ref<HTMLDivElement | null>(null)\n const dragging = ref<0 | 1 | null>(null)\n\n const low = computed(() => range.value[0])\n const high = computed(() => range.value[1])\n const lowPercent = computed(() => ((low.value - props.min) / (props.max - props.min)) * 100)\n const highPercent = computed(() => ((high.value - props.min) / (props.max - props.min)) * 100)\n\n const valueFromPointer = (event: PointerEvent): number => {\n const track = trackRef.value\n if (!track) return low.value\n const rect = track.getBoundingClientRect()\n return snap(\n props.min + ((event.clientX - rect.left) / rect.width) * (props.max - props.min),\n props.min,\n props.max,\n props.step,\n )\n }\n\n const apply = (thumb: 0 | 1, next: number): readonly [number, number] => {\n if (thumb === 0) {\n return next > high.value - props.minDistance\n ? [high.value - props.minDistance, high.value]\n : [next, high.value]\n }\n return next < low.value + props.minDistance\n ? [low.value, low.value + props.minDistance]\n : [low.value, next]\n }\n\n const startDrag =\n (thumb: 0 | 1) =>\n (event: PointerEvent): void => {\n if (props.disabled) return\n event.preventDefault()\n ;(event.currentTarget as HTMLElement).setPointerCapture(event.pointerId)\n dragging.value = thumb\n\n let latest = range.value\n const onMove = (moveEvent: PointerEvent): void => {\n latest = apply(thumb, valueFromPointer(moveEvent))\n setRange(latest)\n }\n const onUp = (): void => {\n dragging.value = null\n emit('commit', latest)\n window.removeEventListener('pointermove', onMove)\n window.removeEventListener('pointerup', onUp)\n }\n window.addEventListener('pointermove', onMove)\n window.addEventListener('pointerup', onUp)\n }\n\n const keyHandler =\n (thumb: 0 | 1) =>\n (event: KeyboardEvent): void => {\n if (props.disabled) return\n const currentValue = range.value[thumb]\n const large = (props.max - props.min) / 10\n let next: number | null = null\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n next = currentValue + props.step\n break\n case 'ArrowLeft':\n case 'ArrowDown':\n next = currentValue - props.step\n break\n case 'PageUp':\n next = currentValue + large\n break\n case 'PageDown':\n next = currentValue - large\n break\n case 'Home':\n next = props.min\n break\n case 'End':\n next = props.max\n break\n }\n if (next === null) return\n event.preventDefault()\n const applied = apply(thumb, snap(next, props.min, props.max, props.step))\n setRange(applied)\n emit('commit', applied)\n }\n\n const renderThumb = (index: 0 | 1, thumbLabel: string) =>\n h(\n 'div',\n {\n key: index,\n role: 'slider',\n tabindex: props.disabled ? '-1' : '0',\n class: 'ansh-slider__thumb ansh-focusable',\n style: {\n ['--ansh-thumb' as string]: `${index === 0 ? lowPercent.value : highPercent.value}%`,\n },\n 'aria-label': props.label ? `${props.label} ${thumbLabel}` : thumbLabel,\n 'aria-valuenow': range.value[index],\n // Each thumb's range is bounded by the other, so the announced limits match what the\n // control will actually accept.\n 'aria-valuemin': index === 0 ? props.min : low.value + props.minDistance,\n 'aria-valuemax': index === 0 ? high.value - props.minDistance : props.max,\n ...(props.formatValue(range.value[index]) !== String(range.value[index])\n ? { 'aria-valuetext': props.formatValue(range.value[index]) }\n : null),\n 'aria-disabled': props.disabled || undefined,\n onPointerdown: startDrag(index),\n onKeydown: keyHandler(index),\n },\n [\n props.showValue === 'always' || (props.showValue && dragging.value === index)\n ? h(\n 'span',\n { class: 'ansh-slider__bubble', 'aria-hidden': 'true' },\n props.formatValue(range.value[index]),\n )\n : null,\n ],\n )\n\n return () =>\n h(\n 'div',\n {\n class: cx(\n 'ansh-slider',\n 'ansh-slider--horizontal',\n 'ansh-slider--range',\n props.disabled && 'ansh-slider--disabled',\n attrs.class as string,\n ),\n style: {\n ['--ansh-range-start' as string]: `${lowPercent.value}%`,\n ['--ansh-range-end' as string]: `${highPercent.value}%`,\n },\n },\n [\n h('div', { ref: trackRef, class: 'ansh-slider__track' }, [\n h('div', { class: 'ansh-slider__fill ansh-slider__fill--range' }),\n ...(props.marks?.map((mark) =>\n h(\n 'span',\n {\n key: mark.value,\n class: cx(\n 'ansh-slider__mark',\n mark.value >= low.value &&\n mark.value <= high.value &&\n 'ansh-slider__mark--passed',\n ),\n style: {\n ['--ansh-mark' as string]: `${((mark.value - props.min) / (props.max - props.min)) * 100}%`,\n },\n },\n [\n mark.label\n ? h('span', { class: 'ansh-slider__mark-label' }, [\n resolveSlotContent(mark.label),\n ])\n : null,\n ],\n ),\n ) ?? []),\n renderThumb(0, 'minimum'),\n renderThumb(1, 'maximum'),\n ]),\n ],\n )\n },\n})\n","import { type PropType, defineComponent, h, ref, watch } from 'vue'\nimport { cx, useId } from '../../primitives/utils'\nimport { useControllableState } from '../../primitives/use-controllable-state'\n\n/**\n * A one-time-code input — the Vue counterpart of `@ansh-ui/react`'s `PinInput`.\n *\n * The details that make or break this component are all about paste and autofill:\n *\n * - `autocomplete=\"one-time-code\"` on the first cell is what triggers iOS and Android to offer the\n * code from the SMS. Without it users retype a six-digit code by hand.\n * - Pasting into any cell distributes across all of them. Users paste from their SMS app\n * constantly, and a per-cell input that only accepts the first character is infuriating. Each\n * cell's `maxlength` is deliberately the *full* code length, not `1` — the browser would truncate\n * a paste to one character before this component's own `input` handler ever saw the rest.\n * - Backspace on an empty cell moves back *and* clears, so holding it wipes the field.\n *\n * A single input styled to look segmented would be simpler, but the caret cannot be positioned per\n * segment and mobile keyboards behave inconsistently with it.\n */\nexport const PinInput = defineComponent({\n name: 'AnshPinInput',\n props: {\n /** Number of cells. Default `6`. */\n length: { type: Number, default: 6 },\n modelValue: { type: String, default: undefined },\n defaultValue: { type: String, default: '' },\n /** Restrict input. Default `'numeric'`. */\n type: { type: String as PropType<'numeric' | 'alphanumeric'>, default: 'numeric' },\n /** Render as password dots. */\n mask: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n /** Focus the first cell on mount. Native `autofocus`, spelled lower-case to match the attribute. */\n autofocus: { type: Boolean, default: false },\n label: { type: String, default: 'Verification code' },\n },\n emits: ['update:modelValue', 'complete'],\n setup(props, { emit, attrs }) {\n const [code, setCode] = useControllableState<string>(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n const inputs = ref<Array<HTMLInputElement | null>>([])\n const id = useId('pin')\n\n // Fired when every cell is filled — latched so correcting a digit and refilling fires again,\n // but a value that merely stays complete across renders does not re-fire.\n let completed = false\n watch(\n code,\n (value) => {\n if (value.length === props.length && !completed) {\n completed = true\n emit('complete', value)\n } else if (value.length < props.length) {\n completed = false\n }\n },\n { immediate: true },\n )\n\n const setCharAt = (index: number, char: string): void => {\n const chars = code.value.padEnd(props.length, ' ').split('')\n chars[index] = char\n setCode(chars.join('').trimEnd())\n }\n\n const focusCell = (index: number): void => {\n const target = inputs.value[Math.min(Math.max(index, 0), props.length - 1)]\n target?.focus()\n target?.select()\n }\n\n const onCellChange = (index: number, raw: string): void => {\n const pattern = props.type === 'numeric' ? /[^0-9]/g : /[^a-zA-Z0-9]/g\n const cleaned = raw.replace(pattern, '')\n if (cleaned === '') {\n setCharAt(index, ' ')\n return\n }\n\n // More than one character means a paste (or a fast typist on a soft keyboard) — spread it.\n if (cleaned.length > 1) {\n const chars = code.value.padEnd(props.length, ' ').split('')\n for (let i = 0; i < cleaned.length && index + i < props.length; i++) {\n chars[index + i] = cleaned[i]!\n }\n setCode(chars.join('').trimEnd())\n focusCell(index + cleaned.length)\n return\n }\n\n setCharAt(index, cleaned)\n focusCell(index + 1)\n }\n\n const onCellKeydown = (index: number) => (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Backspace': {\n event.preventDefault()\n if ((code.value[index] ?? ' ').trim() === '') {\n // Empty cell: step back and clear that one instead, so holding Backspace empties the\n // field rather than stalling.\n setCharAt(index - 1, ' ')\n focusCell(index - 1)\n } else {\n setCharAt(index, ' ')\n }\n break\n }\n case 'Delete':\n event.preventDefault()\n setCharAt(index, ' ')\n break\n case 'ArrowLeft':\n event.preventDefault()\n focusCell(index - 1)\n break\n case 'ArrowRight':\n event.preventDefault()\n focusCell(index + 1)\n break\n case 'Home':\n event.preventDefault()\n focusCell(0)\n break\n case 'End':\n event.preventDefault()\n focusCell(props.length - 1)\n break\n }\n }\n\n return () =>\n h(\n 'div',\n {\n class: cx(\n 'ansh-pin',\n props.invalid && 'ansh-pin--invalid',\n props.disabled && 'ansh-pin--disabled',\n attrs.class as string,\n ),\n role: 'group',\n 'aria-label': props.label,\n // The group is described by the live region below, so progress is announced without each\n // cell interrupting with \"1 of 6, edit text\".\n 'aria-describedby': `${id}-status`,\n },\n [\n ...Array.from({ length: props.length }, (_, index) =>\n h('input', {\n key: index,\n ref: (node) => {\n inputs.value[index] = (node as HTMLInputElement | null) ?? null\n },\n class: 'ansh-pin__cell ansh-focusable',\n type: props.mask ? 'password' : 'text',\n inputmode: props.type === 'numeric' ? 'numeric' : 'text',\n // Only the first cell advertises one-time-code; on the others it makes the platform\n // offer to fill a single character, which is nonsense.\n autocomplete: index === 0 ? 'one-time-code' : 'off',\n autofocus: props.autofocus && index === 0,\n maxlength: props.length,\n disabled: props.disabled,\n 'aria-label': `Digit ${index + 1} of ${props.length}`,\n 'aria-invalid': props.invalid || undefined,\n value: (code.value[index] ?? '').trim(),\n onInput: (event: Event) =>\n onCellChange(index, (event.target as HTMLInputElement).value),\n onKeydown: onCellKeydown(index),\n onFocus: (event: FocusEvent) => (event.target as HTMLInputElement).select(),\n }),\n ),\n\n h(\n 'span',\n { class: 'ansh-visually-hidden', id: `${id}-status`, 'aria-live': 'polite' },\n code.value.trim().length === props.length\n ? 'Code complete'\n : `${code.value.trim().length} of ${props.length} digits entered`,\n ),\n ],\n )\n },\n})\n","import { type PropType, defineComponent, h, ref } from 'vue'\nimport { cx } from '../../primitives/utils'\nimport { useControllableState } from '../../primitives/use-controllable-state'\nimport { useFieldControl } from './field'\n\n/**\n * Free-text tags — the Vue counterpart of `@ansh-ui/react`'s `TagsInput`. Recipients, labels,\n * keywords.\n *\n * Distinct from a multi-`Combobox`: there is no option list, any text is valid. The two are often\n * conflated, and the giveaway is a \"tags\" component that forces you to pick from a list.\n *\n * Each tag is a real button so it can be reached with Tab and removed with Enter. Removing a tag\n * moves focus to the next one rather than to the document, which is what stops keyboard users\n * losing their place after deleting three in a row.\n */\nexport const TagsInput = defineComponent({\n name: 'AnshTagsInput',\n props: {\n modelValue: { type: Array as PropType<readonly string[]>, default: undefined },\n defaultValue: { type: Array as PropType<readonly string[]>, default: () => [] },\n placeholder: { type: String, default: 'Add and press Enter' },\n /** Maximum number of tags. The input hides once reached. */\n max: { type: Number, default: Number.POSITIVE_INFINITY },\n /** Keys that commit the current text. Default Enter, Tab and comma. */\n delimiters: {\n type: Array as PropType<readonly string[]>,\n default: () => ['Enter', 'Tab', ','],\n },\n /** Reject a value — return an error string, or `null` to accept. */\n validate: { type: Function as PropType<(value: string) => string | null>, default: undefined },\n /** Fold duplicates silently instead of flagging them. Default `true`. */\n dedupe: { type: Boolean, default: true },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n label: { type: String, default: 'Tags' },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n const fieldProps = useFieldControl()\n const [tags, setTags] = useControllableState<readonly string[]>(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n const draft = ref('')\n const error = ref<string | null>(null)\n\n const inputRef = ref<HTMLInputElement | null>(null)\n const tagRefs = ref<Array<HTMLButtonElement | null>>([])\n\n const commit = (raw: string): boolean => {\n const text = raw.trim()\n if (text === '') return false\n\n if (tags.value.length >= props.max) {\n error.value = `Up to ${props.max} allowed`\n return false\n }\n if (props.dedupe && tags.value.includes(text)) {\n // Duplicates are folded silently — pasting a list with a repeat should not read as an error.\n draft.value = ''\n return true\n }\n const failure = props.validate?.(text)\n if (failure) {\n error.value = failure\n return false\n }\n\n setTags([...tags.value, text])\n draft.value = ''\n error.value = null\n return true\n }\n\n const removeAt = (index: number): void => {\n setTags(tags.value.filter((_, i) => i !== index))\n error.value = null\n // Focus the tag that slid into this position, or the input if it was the last one.\n queueMicrotask(() => {\n const next = tagRefs.value[index] ?? tagRefs.value[index - 1]\n if (next?.isConnected) next.focus()\n else inputRef.value?.focus()\n })\n }\n\n const onKeydown = (event: KeyboardEvent): void => {\n // Tab only commits when there's something to commit; otherwise it must move focus, or the\n // field becomes a keyboard trap.\n if (event.key === 'Tab' && draft.value.trim() === '') return\n\n if (props.delimiters.includes(event.key)) {\n event.preventDefault()\n commit(draft.value)\n return\n }\n\n if (event.key === 'Backspace' && draft.value === '' && tags.value.length > 0) {\n event.preventDefault()\n removeAt(tags.value.length - 1)\n }\n }\n\n return () => {\n const atLimit = tags.value.length >= props.max\n\n return h('div', { class: cx('ansh-tags', attrs.class as string) }, [\n h(\n 'div',\n {\n class: cx(\n 'ansh-tags__control',\n 'ansh-focusable-within',\n (props.invalid || error.value) && 'ansh-tags__control--invalid',\n props.disabled && 'ansh-tags__control--disabled',\n ),\n onMousedown: (event: MouseEvent) => {\n if (event.target === event.currentTarget) {\n event.preventDefault()\n inputRef.value?.focus()\n }\n },\n },\n [\n // Labelled distinctly from the input. Giving both the same accessible name produces two\n // different elements indistinguishable in a screen reader's element list — and ambiguous\n // to every testing query.\n h(\n 'ul',\n { class: 'ansh-tags__list', 'aria-label': `${props.label}: selected` },\n tags.value.map((tag, index) =>\n h('li', { key: `${tag}-${index}`, class: 'ansh-chip' }, [\n h('span', { class: 'ansh-chip__label' }, tag),\n h(\n 'button',\n {\n ref: (node) => {\n tagRefs.value[index] = (node as HTMLButtonElement | null) ?? null\n },\n type: 'button',\n class: 'ansh-chip__remove',\n 'aria-label': `Remove ${tag}`,\n disabled: props.disabled,\n onClick: () => removeAt(index),\n },\n [\n h(\n 'svg',\n { viewBox: '0 0 16 16', width: '10', height: '10', 'aria-hidden': 'true' },\n [\n h('path', {\n d: 'M4 4l8 8M12 4l-8 8',\n stroke: 'currentColor',\n 'stroke-width': '2',\n 'stroke-linecap': 'round',\n fill: 'none',\n }),\n ],\n ),\n ],\n ),\n ]),\n ),\n ),\n\n !atLimit\n ? h('input', {\n ref: inputRef,\n type: 'text',\n class: 'ansh-tags__input',\n value: draft.value,\n placeholder: tags.value.length === 0 ? props.placeholder : '',\n disabled: props.disabled,\n 'aria-label': props.label,\n 'aria-invalid': props.invalid || Boolean(error.value) || undefined,\n ...fieldProps.value,\n onInput: (event: Event) => {\n draft.value = (event.target as HTMLInputElement).value\n error.value = null\n },\n onKeydown,\n // Committing on blur stops the most common data-loss complaint: typing a tag,\n // clicking Save, and finding it was never added.\n onBlur: () => commit(draft.value),\n onPaste: (event: ClipboardEvent) => {\n const text = event.clipboardData?.getData('text') ?? ''\n if (!/[,\\n\\t]/.test(text)) return\n event.preventDefault()\n for (const part of text.split(/[,\\n\\t]+/)) commit(part)\n },\n })\n : null,\n ],\n ),\n\n error.value ? h('p', { class: 'ansh-field__error', role: 'alert' }, error.value) : null,\n ])\n }\n },\n})\n","import { type PropType, computed, defineComponent, h, ref } from 'vue'\nimport { type SlotContent, cx, resolveSlotContent, useId } from '../../primitives/utils'\nimport { useControllableState } from '../../primitives/use-controllable-state'\n\nexport type RatingSize = 'sm' | 'md' | 'lg'\n\n/**\n * A star rating — the Vue counterpart of `@ansh-ui/react`'s `Rating`.\n *\n * Interactive ratings are a **radio group**, not a set of buttons: exactly one of N is chosen, which\n * is what a radio group means, and it gets arrow-key navigation and correct announcements for free.\n * Read-only ratings are `role=\"img\"` with a text label instead — \"4.2 out of 5\" is the entire\n * content, and exposing five separate radios that can't be changed is noise.\n *\n * `v-model` for two-way binding, same as every other control here. The React `readOnly` prop is\n * spelled `readonly` — lower-case, one word — to match the native HTML attribute it mirrors and the\n * convention `Input`'s own `readonly` prop already set in this package.\n */\nexport const Rating = defineComponent({\n name: 'AnshRating',\n props: {\n modelValue: { type: Number, default: undefined },\n defaultValue: { type: Number, default: 0 },\n /** Number of symbols. Default `5`. */\n max: { type: Number, default: 5 },\n /** Allow halves. Default `false`. */\n allowHalf: { type: Boolean, default: false },\n /** Display only — no interaction, no focus. */\n readonly: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n size: { type: String as PropType<RatingSize>, default: 'md' },\n /** Custom symbol. Defaults to a star. */\n icon: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n label: { type: String, default: 'Rating' },\n name: { type: String, default: undefined },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n const [current, setCurrent] = useControllableState<number>(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n const preview = ref<number | null>(null)\n const groupName = useId('rating')\n\n const shown = computed(() => preview.value ?? current.value)\n\n const renderSymbol = () =>\n props.icon\n ? resolveSlotContent(props.icon)\n : h('svg', { viewBox: '0 0 20 20', class: 'ansh-rating__glyph', 'aria-hidden': 'true' }, [\n h('path', {\n d: 'M10 1.6l2.6 5.3 5.8.8-4.2 4.1 1 5.8-5.2-2.7-5.2 2.7 1-5.8L1.6 7.7l5.8-.8z',\n fill: 'currentColor',\n }),\n ])\n\n return () => {\n if (props.readonly) {\n return h(\n 'span',\n {\n class: cx(\n 'ansh-rating',\n `ansh-rating--${props.size}`,\n 'ansh-rating--readonly',\n attrs.class as string,\n ),\n role: 'img',\n 'aria-label': `${current.value} out of ${props.max}`,\n },\n Array.from({ length: props.max }, (_, index) =>\n h(\n 'span',\n {\n key: index,\n class: 'ansh-rating__item',\n // A percentage per symbol, so 4.2 fills the fifth star 20% of the way rather than\n // rounding to a whole star and misreporting the value.\n style: {\n ['--ansh-fill' as string]: `${Math.min(Math.max(current.value - index, 0), 1) * 100}%`,\n },\n },\n [renderSymbol()],\n ),\n ),\n )\n }\n\n const steps = props.allowHalf ? props.max * 2 : props.max\n\n return h(\n 'span',\n {\n role: 'radiogroup',\n 'aria-label': props.label,\n class: cx(\n 'ansh-rating',\n `ansh-rating--${props.size}`,\n props.disabled && 'ansh-rating--disabled',\n attrs.class as string,\n ),\n onMouseleave: () => {\n preview.value = null\n },\n },\n Array.from({ length: steps }, (_, step) => {\n const stepValue = props.allowHalf ? (step + 1) / 2 : step + 1\n const index = Math.ceil(stepValue) - 1\n const isHalf = props.allowHalf && stepValue % 1 !== 0\n\n return h(\n 'label',\n {\n key: stepValue,\n class: cx('ansh-rating__hit', isHalf && 'ansh-rating__hit--half'),\n onMouseenter: () => {\n if (!props.disabled) preview.value = stepValue\n },\n },\n [\n h('input', {\n type: 'radio',\n class: 'ansh-visually-hidden',\n name: props.name ?? groupName,\n value: stepValue,\n checked: current.value === stepValue,\n disabled: props.disabled,\n 'aria-label': `${stepValue} ${stepValue === 1 ? 'star' : 'stars'}`,\n onChange: () => setCurrent(stepValue),\n }),\n // Only whole steps draw a symbol; the half-step label is an invisible hit area\n // layered over the left side of the one that follows it.\n !isHalf\n ? h(\n 'span',\n {\n class: 'ansh-rating__item',\n style: {\n ['--ansh-fill' as string]: `${Math.min(Math.max(shown.value - index, 0), 1) * 100}%`,\n },\n },\n [renderSymbol()],\n )\n : null,\n ],\n )\n }),\n )\n }\n },\n})\n","import { type PropType, defineComponent, h, ref } from 'vue'\nimport { type SlotContent, cx, resolveSlotContent, useId } from '../../primitives/utils'\n\nexport interface DropzoneFile {\n file: File\n id: string\n /** Object URL for image previews. Revoked automatically on removal. */\n preview?: string\n error?: string\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n const units = ['KB', 'MB', 'GB']\n let size = bytes / 1024\n let unit = 0\n while (size >= 1024 && unit < units.length - 1) {\n size /= 1024\n unit++\n }\n return `${size.toFixed(size >= 10 ? 0 : 1)} ${units[unit]}`\n}\n\n/**\n * A file dropzone with previews and validation — the Vue counterpart of `@ansh-ui/react`'s\n * `Dropzone`.\n *\n * Two things distinguish a working dropzone from a broken one:\n *\n * 1. **Drag counting.** `dragleave` fires when the pointer crosses onto a *child* element, so the\n * naive implementation flickers the highlight constantly while you move across it. A depth\n * counter incremented on enter and decremented on leave fixes it.\n * 2. **A real `<input type=\"file\">` underneath.** Drag-and-drop is unusable with a keyboard, a\n * screen reader, or on a phone. The input is the actual control; the drop surface is an\n * enhancement layered on top.\n *\n * Object URLs are revoked when a file is removed. Skipping that leaks the entire file into memory\n * for the page's lifetime, which is invisible in testing and obvious after a user uploads forty\n * photos.\n *\n * There is no `modelValue` here — the React source doesn't expose the file list as a controllable\n * prop either, only the `files` event (React's `onFiles`) to observe it. The list is owned\n * internally, same as upstream.\n */\nexport const Dropzone = defineComponent({\n name: 'AnshDropzone',\n props: {\n /** `accept` attribute, e.g. `'image/*,.pdf'`. */\n accept: { type: String, default: undefined },\n multiple: { type: Boolean, default: false },\n /** Per-file size cap, in bytes. */\n maxSize: { type: Number, default: undefined },\n /** Maximum number of files. */\n maxFiles: { type: Number, default: Number.POSITIVE_INFINITY },\n disabled: { type: Boolean, default: false },\n /** Show thumbnails for images. Default `true`. */\n previews: { type: Boolean, default: true },\n label: {\n type: [String, Object, Function] as PropType<SlotContent>,\n default: 'Drop files here, or browse',\n },\n hint: { type: [String, Object, Function] as PropType<SlotContent>, default: undefined },\n },\n emits: ['files'],\n setup(props, { emit, attrs, slots }) {\n const files = ref<readonly DropzoneFile[]>([])\n const dragging = ref(false)\n let depth = 0\n const inputRef = ref<HTMLInputElement | null>(null)\n const id = useId('dropzone')\n\n const validate = (file: File): string | undefined => {\n if (props.maxSize !== undefined && file.size > props.maxSize) {\n return `Larger than ${formatBytes(props.maxSize)}`\n }\n if (props.accept) {\n const patterns = props.accept.split(',').map((part) => part.trim().toLowerCase())\n const name = file.name.toLowerCase()\n const type = file.type.toLowerCase()\n const ok = patterns.some((pattern) => {\n if (pattern.startsWith('.')) return name.endsWith(pattern)\n if (pattern.endsWith('/*')) return type.startsWith(pattern.slice(0, -1))\n return type === pattern\n })\n if (!ok) return 'Unsupported file type'\n }\n return undefined\n }\n\n const add = (incoming: FileList | null): void => {\n if (!incoming || props.disabled) return\n\n const accepted: DropzoneFile[] = []\n const room = props.maxFiles - files.value.length\n\n for (const file of Array.from(incoming).slice(0, props.multiple ? room : 1)) {\n const error = validate(file)\n accepted.push({\n file,\n id: `${file.name}-${file.size}-${file.lastModified}`,\n ...(props.previews && file.type.startsWith('image/') && !error\n ? { preview: URL.createObjectURL(file) }\n : null),\n ...(error ? { error } : null),\n })\n }\n\n const next = props.multiple ? [...files.value, ...accepted] : accepted\n // Replacing in single mode discards the previous preview, so revoke it here rather than\n // leaving it to the removal path that will never run.\n if (!props.multiple) {\n for (const previous of files.value) {\n if (previous.preview) URL.revokeObjectURL(previous.preview)\n }\n }\n\n files.value = next\n emit('files', next)\n }\n\n const remove = (fileId: string): void => {\n const target = files.value.find((entry) => entry.id === fileId)\n if (target?.preview) URL.revokeObjectURL(target.preview)\n const next = files.value.filter((entry) => entry.id !== fileId)\n files.value = next\n emit('files', next)\n // Clearing the input's value allows re-selecting the same file; browsers suppress `change`\n // when the value is unchanged, so removing and re-adding one file would otherwise do nothing.\n if (inputRef.value) inputRef.value.value = ''\n }\n\n return () => {\n const rejected = files.value.filter((entry) => entry.error)\n\n return h('div', { class: cx('ansh-dropzone-wrap', attrs.class as string) }, [\n h(\n 'div',\n {\n class: cx(\n 'ansh-dropzone',\n dragging.value && 'ansh-dropzone--active',\n props.disabled && 'ansh-dropzone--disabled',\n ),\n onDragenter: (event: DragEvent) => {\n event.preventDefault()\n depth++\n if (!props.disabled) dragging.value = true\n },\n onDragover: (event: DragEvent) => {\n // Required: without preventing the default the browser navigates to the dropped file.\n event.preventDefault()\n if (event.dataTransfer)\n event.dataTransfer.dropEffect = props.disabled ? 'none' : 'copy'\n },\n onDragleave: (event: DragEvent) => {\n event.preventDefault()\n depth--\n if (depth <= 0) {\n depth = 0\n dragging.value = false\n }\n },\n onDrop: (event: DragEvent) => {\n event.preventDefault()\n depth = 0\n dragging.value = false\n add(event.dataTransfer?.files ?? null)\n },\n },\n [\n h('input', {\n ref: inputRef,\n id,\n type: 'file',\n class: 'ansh-dropzone__input',\n accept: props.accept,\n multiple: props.multiple,\n disabled: props.disabled,\n onChange: (event: Event) => add((event.target as HTMLInputElement).files),\n }),\n\n h('label', { for: id, class: 'ansh-dropzone__label' }, [\n h('span', { class: 'ansh-dropzone__icon', 'aria-hidden': 'true' }, [\n h(\n 'svg',\n {\n viewBox: '0 0 24 24',\n width: '28',\n height: '28',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': '1.5',\n },\n [\n h('path', {\n d: 'M12 16V4m0 0L8 8m4-4l4 4',\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n }),\n h('path', {\n d: 'M3 15v3a3 3 0 003 3h12a3 3 0 003-3v-3',\n 'stroke-linecap': 'round',\n }),\n ],\n ),\n ]),\n h('span', { class: 'ansh-dropzone__text' }, [resolveSlotContent(props.label)]),\n props.hint\n ? h('span', { class: 'ansh-dropzone__hint' }, [resolveSlotContent(props.hint)])\n : null,\n ]),\n\n slots.default?.(),\n ],\n ),\n\n files.value.length > 0\n ? h(\n 'ul',\n { class: 'ansh-dropzone__files' },\n files.value.map((entry) =>\n h(\n 'li',\n {\n key: entry.id,\n class: cx('ansh-dropzone__file', entry.error && 'ansh-dropzone__file--error'),\n },\n [\n entry.preview\n ? // Decorative: the file name beside it is the accessible content.\n h('img', { src: entry.preview, alt: '', class: 'ansh-dropzone__thumb' })\n : h(\n 'span',\n {\n class: 'ansh-dropzone__thumb ansh-dropzone__thumb--generic',\n 'aria-hidden': 'true',\n },\n entry.file.name.split('.').pop()?.slice(0, 4).toUpperCase(),\n ),\n\n h('span', { class: 'ansh-dropzone__meta' }, [\n h('span', { class: 'ansh-dropzone__name' }, entry.file.name),\n h(\n 'span',\n { class: 'ansh-dropzone__size' },\n entry.error ?? formatBytes(entry.file.size),\n ),\n ]),\n\n h(\n 'button',\n {\n type: 'button',\n class: 'ansh-dropzone__remove ansh-focusable',\n 'aria-label': `Remove ${entry.file.name}`,\n onClick: () => remove(entry.id),\n },\n [\n h(\n 'svg',\n {\n viewBox: '0 0 16 16',\n width: '12',\n height: '12',\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 ],\n ),\n ),\n )\n : null,\n\n // Rejections are announced. A file silently missing from the list after a drop is the\n // single most confusing failure mode this component has.\n h(\n 'span',\n { class: 'ansh-visually-hidden', role: 'status', 'aria-live': 'polite' },\n rejected.length > 0\n ? `${rejected.length} file${rejected.length === 1 ? '' : 's'} rejected`\n : files.value.length > 0\n ? `${files.value.length} file${files.value.length === 1 ? '' : 's'} ready`\n : '',\n ),\n ])\n }\n },\n})\n","import { type PropType, Teleport, computed, defineComponent, h, ref } from 'vue'\nimport {\n type Hsv,\n contrastRatio,\n hsvToRgb,\n parseColor,\n rgbToHsv,\n toHex,\n toOklchString,\n tryParseColor,\n} from '@ansh-ui/core'\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'\n\n/** Documents the shape of `ColorPicker`'s props. Not consumed by `defineComponent` directly. */\nexport interface ColorPickerProps {\n /** Any CSS colour — hex, rgb, hsl, oklch, or a named colour. */\n modelValue?: string\n defaultValue?: string\n /** Output format. Default `'hex'`. */\n format?: 'hex' | 'rgb' | 'hsl' | 'oklch'\n /** Show the alpha slider. Default `false`. */\n alpha?: boolean\n /** Swatches shown under the picker. */\n presets?: readonly string[]\n /** Report the contrast ratio against this colour, live. */\n contrastAgainst?: string\n disabled?: boolean\n label?: string\n}\n\n/**\n * A colour picker built on the engine's colour system — the Vue counterpart of `@ansh-ui/react`'s\n * `ColorPicker`.\n *\n * The saturation/value plane, hue rail and alpha rail are the conventional layout. What's less\n * conventional, and the reason this is worth shipping over a generic picker:\n *\n * - **It speaks every format the engine does.** Paste `oklch(62% 0.2 264)` into the text field and\n * it parses. Most pickers accept hex and nothing else.\n * - **It can report contrast live.** On a theme editor — which is what colour pickers in admin\n * tools are usually for — picking a brand colour without seeing that it fails WCAG against your\n * background is how inaccessible products get built one reasonable decision at a time.\n *\n * State is held as HSV, not as the output string. Round-tripping through hex on every pointer move\n * loses information: dragging into the black corner would discard the hue, so releasing and\n * dragging back out returns red instead of the colour you started from.\n */\nexport const ColorPicker = defineComponent({\n name: 'AnshColorPicker',\n props: {\n modelValue: { type: String, default: undefined },\n defaultValue: { type: String, default: '#0275f4' },\n format: { type: String as PropType<'hex' | 'rgb' | 'hsl' | 'oklch'>, default: 'hex' },\n alpha: { type: Boolean, default: false },\n presets: { type: Array as PropType<readonly string[]>, default: undefined },\n contrastAgainst: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n label: { type: String, default: 'Colour' },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n const [current, setCurrent] = useControllableState<string>(\n () => props.modelValue,\n props.defaultValue,\n (next) => emit('update:modelValue', next),\n )\n const open = ref(false)\n\n const triggerRef = ref<HTMLButtonElement | null>(null)\n const panelRef = ref<HTMLDivElement | null>(null)\n const planeRef = ref<HTMLDivElement | null>(null)\n const id = useId('colorpicker')\n\n // Parsed from the incoming value, but held in a closure variable (not reactive state) while\n // dragging, so hue survives a trip through a zero-saturation colour. Mirrors the React\n // version's render-phase `useRef` mutation: read and written every time `hsv` is recomputed.\n let hueMemory = rgbToHsv(tryParseColor(current.value) ?? parseColor(props.defaultValue)).h\n\n const hsv = computed<Hsv>(() => {\n const rgb = tryParseColor(current.value) ?? parseColor(props.defaultValue)\n const parsed = rgbToHsv(rgb)\n if (parsed.s > 0.001 && parsed.v > 0.001) hueMemory = parsed.h\n return { ...parsed, h: parsed.s < 0.001 || parsed.v < 0.001 ? hueMemory : parsed.h }\n })\n\n const commitHsv = (next: Hsv): void => {\n const rgb = hsvToRgb(next)\n switch (props.format) {\n case 'rgb':\n setCurrent(\n next.a < 1\n ? `rgba(${Math.round(rgb.r * 255)}, ${Math.round(rgb.g * 255)}, ${Math.round(rgb.b * 255)}, ${Number(next.a.toFixed(2))})`\n : `rgb(${Math.round(rgb.r * 255)}, ${Math.round(rgb.g * 255)}, ${Math.round(rgb.b * 255)})`,\n )\n break\n case 'hsl':\n setCurrent(\n `hsl(${Math.round(next.h)} ${Math.round(next.s * 100)}% ${Math.round(next.v * (1 - next.s / 2) * 100)}%${next.a < 1 ? ` / ${Number(next.a.toFixed(2))}` : ''})`,\n )\n break\n case 'oklch':\n setCurrent(toOklchString(rgb))\n break\n default:\n setCurrent(toHex(rgb, next.a < 1))\n }\n }\n\n const { position } = useAnchoredPosition(triggerRef, panelRef, open, {\n placement: 'bottom-start',\n offset: 8,\n })\n useDismiss(\n panelRef,\n open,\n () => {\n open.value = false\n },\n { ignore: [triggerRef] },\n )\n\n // --- Drag handling ------------------------------------------------------\n const dragPlane = (event: PointerEvent): void => {\n if (props.disabled) return\n const plane = planeRef.value\n if (!plane) return\n ;(event.currentTarget as HTMLElement).setPointerCapture(event.pointerId)\n\n const apply = (clientX: number, clientY: number): void => {\n const rect = plane.getBoundingClientRect()\n const s = Math.min(Math.max((clientX - rect.left) / rect.width, 0), 1)\n const v = 1 - Math.min(Math.max((clientY - rect.top) / rect.height, 0), 1)\n commitHsv({ ...hsv.value, s, v })\n }\n\n apply(event.clientX, event.clientY)\n const onMove = (moveEvent: PointerEvent): void => apply(moveEvent.clientX, moveEvent.clientY)\n const onUp = (): void => {\n window.removeEventListener('pointermove', onMove)\n window.removeEventListener('pointerup', onUp)\n }\n window.addEventListener('pointermove', onMove)\n window.addEventListener('pointerup', onUp)\n }\n\n const onPlaneKeyDown = (event: KeyboardEvent): void => {\n const step = event.shiftKey ? 0.1 : 0.02\n let { s, v } = hsv.value\n switch (event.key) {\n case 'ArrowRight':\n s = Math.min(1, s + step)\n break\n case 'ArrowLeft':\n s = Math.max(0, s - step)\n break\n case 'ArrowUp':\n v = Math.min(1, v + step)\n break\n case 'ArrowDown':\n v = Math.max(0, v - step)\n break\n default:\n return\n }\n event.preventDefault()\n commitHsv({ ...hsv.value, s, v })\n }\n\n return () => {\n const swatch = toHex(hsvToRgb(hsv.value), hsv.value.a < 1)\n const pureHue = toHex(hsvToRgb({ h: hsv.value.h, s: 1, v: 1, a: 1 }))\n const contrast = props.contrastAgainst\n ? contrastRatio(hsvToRgb(hsv.value), parseColor(props.contrastAgainst))\n : null\n\n return h('div', { class: cx('ansh-colorpicker', attrs.class as string) }, [\n h(\n 'button',\n {\n ref: triggerRef,\n type: 'button',\n class: 'ansh-colorpicker__trigger ansh-focusable',\n disabled: props.disabled,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': open.value,\n 'aria-label': `${props.label}: ${swatch}`,\n onClick: () => {\n open.value = !open.value\n },\n },\n [\n h('span', {\n class: 'ansh-colorpicker__swatch',\n style: { background: swatch },\n 'aria-hidden': 'true',\n }),\n h('span', { class: 'ansh-colorpicker__value' }, current.value),\n ],\n ),\n\n open.value\n ? h(Teleport, { to: 'body' }, [\n h(\n 'div',\n {\n ref: panelRef,\n role: 'dialog',\n 'aria-label': props.label,\n class: 'ansh-colorpicker__panel',\n style: position.value.style,\n },\n [\n h(\n 'div',\n {\n ref: planeRef,\n class: 'ansh-colorpicker__plane',\n style: { '--ansh-hue': pureHue },\n onPointerdown: dragPlane,\n },\n [\n h('div', {\n role: 'slider',\n tabindex: '0',\n class: 'ansh-colorpicker__knob ansh-focusable',\n style: {\n left: `${hsv.value.s * 100}%`,\n top: `${(1 - hsv.value.v) * 100}%`,\n background: swatch,\n },\n 'aria-label': 'Saturation and brightness',\n 'aria-valuetext': `Saturation ${Math.round(hsv.value.s * 100)}%, brightness ${Math.round(hsv.value.v * 100)}%`,\n 'aria-valuenow': Math.round(hsv.value.s * 100),\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n onKeydown: onPlaneKeyDown,\n }),\n ],\n ),\n\n h('div', { class: 'ansh-colorpicker__rails' }, [\n h('div', {\n class: 'ansh-colorpicker__preview',\n style: { background: swatch },\n 'aria-hidden': 'true',\n }),\n\n h('div', { class: 'ansh-colorpicker__rail-group' }, [\n h('input', {\n type: 'range',\n class: 'ansh-colorpicker__rail ansh-colorpicker__rail--hue ansh-focusable',\n min: 0,\n max: 360,\n step: 1,\n value: Math.round(hsv.value.h),\n 'aria-label': 'Hue',\n 'aria-valuetext': `${Math.round(hsv.value.h)} degrees`,\n onInput: (event: Event) => {\n commitHsv({\n ...hsv.value,\n h: Number((event.target as HTMLInputElement).value),\n })\n },\n }),\n\n props.alpha\n ? h('input', {\n type: 'range',\n class:\n 'ansh-colorpicker__rail ansh-colorpicker__rail--alpha ansh-focusable',\n style: { '--ansh-solid': toHex(hsvToRgb({ ...hsv.value, a: 1 })) },\n min: 0,\n max: 100,\n step: 1,\n value: Math.round(hsv.value.a * 100),\n 'aria-label': 'Opacity',\n 'aria-valuetext': `${Math.round(hsv.value.a * 100)} percent`,\n onInput: (event: Event) => {\n commitHsv({\n ...hsv.value,\n a: Number((event.target as HTMLInputElement).value) / 100,\n })\n },\n })\n : null,\n ]),\n ]),\n\n h('div', { class: 'ansh-colorpicker__row' }, [\n h('input', {\n type: 'text',\n class: 'ansh-input ansh-input--sm ansh-colorpicker__text',\n value: current.value,\n 'aria-label': `${props.label} value`,\n spellcheck: false,\n onInput: (event: Event) => {\n const text = (event.target as HTMLInputElement).value\n setCurrent(text)\n // Only re-derive HSV when the text parses; typing \"#0\" mid-edit must not\n // reset the picker to black.\n const rgb = tryParseColor(text)\n if (rgb) hueMemory = rgbToHsv(rgb).h\n },\n }),\n ]),\n\n contrast !== null\n ? h(\n 'p',\n {\n class: cx(\n 'ansh-colorpicker__contrast',\n contrast >= 4.5 && 'ansh-colorpicker__contrast--pass',\n contrast < 3 && 'ansh-colorpicker__contrast--fail',\n ),\n 'aria-live': 'polite',\n },\n `${contrast.toFixed(2)}:1 against ${props.contrastAgainst} — ${\n contrast >= 7\n ? 'AAA'\n : contrast >= 4.5\n ? 'AA'\n : contrast >= 3\n ? 'AA large only'\n : 'fails'\n }`,\n )\n : null,\n\n props.presets && props.presets.length > 0\n ? h(\n 'div',\n {\n class: 'ansh-colorpicker__presets',\n role: 'group',\n 'aria-label': 'Preset colours',\n },\n props.presets.map((preset) =>\n h('button', {\n key: preset,\n type: 'button',\n class: cx(\n 'ansh-colorpicker__preset',\n preset.toLowerCase() === swatch.toLowerCase() &&\n 'ansh-colorpicker__preset--on',\n ),\n style: { background: preset },\n 'aria-label': preset,\n 'aria-pressed': preset.toLowerCase() === swatch.toLowerCase(),\n onClick: () => {\n const rgb = tryParseColor(preset)\n if (rgb) {\n hueMemory = rgbToHsv(rgb).h\n setCurrent(preset)\n }\n },\n }),\n ),\n )\n : null,\n\n h(\n 'span',\n { class: 'ansh-visually-hidden', 'aria-live': 'polite', id: `${id}-live` },\n swatch,\n ),\n ],\n ),\n ])\n : null,\n ])\n }\n },\n})\n","import { type PropType, defineComponent, h, ref, watch } from 'vue'\nimport { cx } from '../../primitives/utils'\nimport { useControllableState } from '../../primitives/use-controllable-state'\n\n/**\n * A month calendar — the Vue counterpart of `@ansh-ui/react`'s `Calendar`.\n *\n * Dates are plain `Date` objects normalised to local midnight. No date library: the whole surface\n * this needs is \"add days\", \"same day?\" and \"days in month\", and pulling in a 70 KB dependency for\n * that is how component libraries end up heavier than the app using them.\n *\n * Local midnight, specifically. Working in UTC makes a date shift by a day for anyone west of\n * Greenwich — the bug where a birthday saved on the 14th displays as the 13th, which is the single\n * most reported issue in every date picker ever shipped.\n *\n * Keyboard support is the WAI-ARIA date grid pattern: arrows by day, PageUp/PageDown by month,\n * Shift+PageUp/PageDown by year, Home/End to the week's ends. A calendar without these is\n * mouse-only, and entering a date of birth by clicking back 300 months is not a real option.\n */\n\n/** Strip the time, in local time. */\nexport function startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\nexport function addDays(date: Date, days: number): Date {\n // Going through the day-of-month constructor handles month and year rollover, and — unlike\n // adding milliseconds — stays correct across daylight-saving transitions, where a \"day\" is 23\n // or 25 hours long.\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days)\n}\n\nexport function addMonths(date: Date, months: number): Date {\n const target = new Date(date.getFullYear(), date.getMonth() + months, 1)\n // Clamp the day: 31 January + 1 month must be 28/29 February, not 3 March.\n const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate()\n return new Date(target.getFullYear(), target.getMonth(), Math.min(date.getDate(), lastDay))\n}\n\nexport function isSameDay(a: Date | null | undefined, b: Date | null | undefined): boolean {\n if (!a || !b) return false\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\nexport type DateRange = { start: Date | null; end: Date | null }\n\n/** Documents the shape of `Calendar`'s props. Not consumed by `defineComponent` directly. */\nexport interface CalendarProps {\n /** `'single'` picks one date; `'range'` picks a start and an end. */\n mode?: 'single' | 'range'\n modelValue?: Date | null | DateRange\n defaultValue?: Date | null | DateRange\n min?: Date\n max?: Date\n /** Disable specific dates — weekends, holidays, booked days. */\n isDateDisabled?: (date: Date) => boolean\n /** 0 = Sunday, 1 = Monday. Default: inferred from the locale. */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n locale?: string\n /** Months shown side by side. Default `1`; `2` suits range pickers. */\n months?: number\n /** Show ISO week numbers down the left. */\n showWeekNumbers?: boolean\n}\n\n/** Monday-first for most of the world; Sunday-first for the locales that use it. */\nfunction defaultWeekStart(locale: string | undefined): 0 | 1 {\n const region = (locale ?? (typeof navigator !== 'undefined' ? navigator.language : 'en-GB'))\n .split('-')[1]\n ?.toUpperCase()\n return region && ['US', 'CA', 'JP', 'IL', 'BR', 'MX', 'PH', 'KR'].includes(region) ? 0 : 1\n}\n\n/** ISO 8601 week number — the Thursday rule. */\nfunction isoWeek(date: Date): number {\n const target = new Date(date.getFullYear(), date.getMonth(), date.getDate())\n target.setDate(target.getDate() + 3 - ((target.getDay() + 6) % 7))\n const firstThursday = new Date(target.getFullYear(), 0, 4)\n firstThursday.setDate(firstThursday.getDate() + 3 - ((firstThursday.getDay() + 6) % 7))\n return 1 + Math.round((target.getTime() - firstThursday.getTime()) / (7 * 86_400_000))\n}\n\nexport const Calendar = defineComponent({\n name: 'AnshCalendar',\n props: {\n mode: { type: String as PropType<'single' | 'range'>, default: 'single' },\n modelValue: { type: [Date, Object] as PropType<Date | null | DateRange>, default: undefined },\n defaultValue: { type: [Date, Object] as PropType<Date | null | DateRange>, default: undefined },\n min: { type: Date, default: undefined },\n max: { type: Date, default: undefined },\n isDateDisabled: { type: Function as PropType<(date: Date) => boolean>, default: undefined },\n weekStartsOn: {\n type: Number as PropType<0 | 1 | 2 | 3 | 4 | 5 | 6>,\n default: undefined,\n },\n locale: { type: String, default: undefined },\n months: { type: Number, default: 1 },\n showWeekNumbers: { type: Boolean, default: false },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n const initialDefault: Date | null | DateRange =\n props.defaultValue ?? (props.mode === 'range' ? { start: null, end: null } : null)\n\n const [selection, setSelection] = useControllableState<Date | null | DateRange>(\n () => props.modelValue,\n initialDefault,\n (next) => emit('update:modelValue', next),\n )\n\n const singleValue = (): Date | null =>\n props.mode === 'single' ? (selection.value as Date | null) : null\n const rangeValue = (): DateRange =>\n props.mode === 'range' ? (selection.value as DateRange) : { start: null, end: null }\n\n const today = startOfDay(new Date())\n\n // The month on screen, and the day that owns the grid's single tab stop. Separate concerns:\n // arrowing to the 31st then to the 1st must move the view *and* the cursor together, but\n // clicking the next-month button moves only the view.\n const initialAnchor = startOfDay(singleValue() ?? rangeValue().start ?? new Date())\n const viewMonth = ref(initialAnchor)\n const cursor = ref(initialAnchor)\n const hovered = ref<Date | null>(null)\n\n const gridRef = ref<HTMLDivElement | null>(null)\n let shouldFocus = false\n\n const firstWeekday = (): 0 | 1 | 2 | 3 | 4 | 5 | 6 =>\n props.weekStartsOn ?? defaultWeekStart(props.locale)\n\n const dayNames = (): Array<{ short: string; long: string }> => {\n const formatter = new Intl.DateTimeFormat(props.locale, { weekday: 'short' })\n const longFormatter = new Intl.DateTimeFormat(props.locale, { weekday: 'long' })\n const start = firstWeekday()\n // 2024-01-07 was a Sunday, so offsetting from it enumerates the week in order.\n return Array.from({ length: 7 }, (_, i) => {\n const date = new Date(2024, 0, 7 + ((start + i) % 7))\n return { short: formatter.format(date), long: longFormatter.format(date) }\n })\n }\n\n const monthLabel = (): Intl.DateTimeFormat =>\n new Intl.DateTimeFormat(props.locale, { month: 'long', year: 'numeric' })\n const fullDate = (): Intl.DateTimeFormat =>\n new Intl.DateTimeFormat(props.locale, {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n })\n\n const isDisabled = (date: Date): boolean => {\n if (props.min && date < startOfDay(props.min)) return true\n if (props.max && date > startOfDay(props.max)) return true\n return props.isDateDisabled?.(date) ?? false\n }\n\n /** Move the cursor, pulling the view along when it leaves the visible months. */\n const moveCursor = (next: Date): void => {\n shouldFocus = true\n cursor.value = next\n const firstVisible = new Date(viewMonth.value.getFullYear(), viewMonth.value.getMonth(), 1)\n const lastVisible = new Date(\n viewMonth.value.getFullYear(),\n viewMonth.value.getMonth() + props.months,\n 0,\n )\n if (next < firstVisible || next > lastVisible) viewMonth.value = next\n }\n\n // Focus follows the cursor, but only when the cursor moved by keyboard. Focusing after a click\n // would steal focus back from wherever the user clicked next.\n watch(\n [cursor, viewMonth],\n () => {\n if (!shouldFocus) return\n shouldFocus = false\n gridRef.value\n ?.querySelector<HTMLElement>('[data-ansh-day][tabindex=\"0\"]')\n ?.focus({ preventScroll: true })\n },\n { flush: 'post' },\n )\n\n const commit = (date: Date): void => {\n if (isDisabled(date)) return\n\n if (props.mode === 'single') {\n setSelection(date)\n return\n }\n\n // Range: a click either starts a new range or completes the open one. Clicking before the\n // start re-anchors rather than producing a backwards range.\n const range = rangeValue()\n if (!range.start || range.end || date < range.start) {\n setSelection({ start: date, end: null })\n } else {\n setSelection({ start: range.start, end: date })\n }\n }\n\n const onKeyDown = (event: KeyboardEvent): void => {\n let next: Date | null = null\n\n switch (event.key) {\n case 'ArrowLeft':\n next = addDays(cursor.value, -1)\n break\n case 'ArrowRight':\n next = addDays(cursor.value, 1)\n break\n case 'ArrowUp':\n next = addDays(cursor.value, -7)\n break\n case 'ArrowDown':\n next = addDays(cursor.value, 7)\n break\n case 'Home':\n next = addDays(cursor.value, -((cursor.value.getDay() - firstWeekday() + 7) % 7))\n break\n case 'End':\n next = addDays(cursor.value, 6 - ((cursor.value.getDay() - firstWeekday() + 7) % 7))\n break\n case 'PageUp':\n next = addMonths(cursor.value, event.shiftKey ? -12 : -1)\n break\n case 'PageDown':\n next = addMonths(cursor.value, event.shiftKey ? 12 : 1)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n commit(cursor.value)\n return\n default:\n return\n }\n\n event.preventDefault()\n moveCursor(next)\n }\n\n const inRange = (date: Date): boolean => {\n if (props.mode !== 'range') return false\n const range = rangeValue()\n if (!range.start) return false\n // While choosing the end, the hovered day previews the range — without it, selecting a\n // range is guesswork until the second click lands.\n const end = range.end ?? hovered.value\n if (!end) return false\n const [low, high] = range.start <= end ? [range.start, end] : [end, range.start]\n return date > low && date < high\n }\n\n const renderMonth = (offset: number) => {\n const monthDate = new Date(\n viewMonth.value.getFullYear(),\n viewMonth.value.getMonth() + offset,\n 1,\n )\n const firstOfMonth = new Date(monthDate.getFullYear(), monthDate.getMonth(), 1)\n const leading = (firstOfMonth.getDay() - firstWeekday() + 7) % 7\n const gridStart = addDays(firstOfMonth, -leading)\n\n // Always six rows. A month that needs five would otherwise make the popover change height\n // between months, shifting everything below it.\n const days = Array.from({ length: 42 }, (_, i) => addDays(gridStart, i))\n const weeks = Array.from({ length: 6 }, (_, w) => days.slice(w * 7, w * 7 + 7))\n\n const label = monthLabel()\n const fullDateFormatter = fullDate()\n const names = dayNames()\n const single = singleValue()\n const range = rangeValue()\n\n return h('div', { class: 'ansh-calendar__month', key: offset }, [\n h(\n 'div',\n { class: 'ansh-calendar__caption', 'aria-hidden': 'true' },\n label.format(monthDate),\n ),\n\n h(\n 'table',\n { class: 'ansh-calendar__grid', role: 'grid', 'aria-label': label.format(monthDate) },\n [\n h('thead', {}, [\n h('tr', {}, [\n props.showWeekNumbers\n ? h('th', { scope: 'col', class: 'ansh-calendar__weekno-head' }, [\n h('span', { class: 'ansh-visually-hidden' }, 'Week'),\n ])\n : null,\n ...names.map((day) =>\n h(\n 'th',\n {\n key: day.long,\n scope: 'col',\n class: 'ansh-calendar__weekday',\n abbr: day.long,\n },\n [\n h('span', { 'aria-hidden': 'true' }, day.short),\n h('span', { class: 'ansh-visually-hidden' }, day.long),\n ],\n ),\n ),\n ]),\n ]),\n h(\n 'tbody',\n {},\n weeks.map((week) =>\n h('tr', { key: week[0]!.toISOString() }, [\n props.showWeekNumbers\n ? h('td', { class: 'ansh-calendar__weekno' }, isoWeek(week[0]!))\n : null,\n ...week.map((date) => {\n const outside = date.getMonth() !== monthDate.getMonth()\n const dateDisabled = isDisabled(date)\n const isSelected =\n props.mode === 'single'\n ? isSameDay(date, single)\n : isSameDay(date, range.start) || isSameDay(date, range.end)\n const isCursor = isSameDay(date, cursor.value)\n\n return h(\n 'td',\n { key: date.toISOString(), class: 'ansh-calendar__cell', role: 'gridcell' },\n [\n h(\n 'button',\n {\n type: 'button',\n 'data-ansh-day': '',\n class: cx(\n 'ansh-calendar__day',\n outside && 'ansh-calendar__day--outside',\n isSelected && 'ansh-calendar__day--selected',\n inRange(date) && 'ansh-calendar__day--in-range',\n isSameDay(date, today) && 'ansh-calendar__day--today',\n ),\n // Roving tabindex: exactly one day is a tab stop, so Tab enters and\n // leaves the calendar rather than walking 42 buttons.\n tabindex: isCursor ? '0' : '-1',\n disabled: dateDisabled,\n 'aria-selected': isSelected,\n 'aria-current': isSameDay(date, today) ? 'date' : undefined,\n // The full date is the accessible name; the visible number alone would\n // be announced as a bare \"14\".\n 'aria-label': fullDateFormatter.format(date),\n onClick: () => {\n cursor.value = date\n commit(date)\n },\n onMouseenter: () => {\n if (props.mode === 'range') hovered.value = date\n },\n onFocus: () => {\n cursor.value = date\n },\n },\n String(date.getDate()),\n ),\n ],\n )\n }),\n ]),\n ),\n ),\n ],\n ),\n ])\n }\n\n return () =>\n h(\n 'div',\n {\n class: cx(\n 'ansh-calendar',\n props.months > 1 && 'ansh-calendar--multi',\n attrs.class as string,\n ),\n onKeydown: onKeyDown,\n onMouseleave: () => {\n hovered.value = null\n },\n },\n [\n h('div', { class: 'ansh-calendar__header' }, [\n h(\n 'button',\n {\n type: 'button',\n class: 'ansh-calendar__nav ansh-focusable',\n 'aria-label': 'Previous month',\n onClick: () => {\n viewMonth.value = addMonths(viewMonth.value, -1)\n },\n },\n [\n h(\n 'svg',\n { viewBox: '0 0 12 12', width: '14', height: '14', '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 // One live region for the whole calendar. Per-month headings marked `aria-hidden`\n // above, so a month change is announced once rather than twice in a two-month view.\n h(\n 'div',\n { class: 'ansh-calendar__title', 'aria-live': 'polite' },\n props.months > 1\n ? `${monthLabel().format(viewMonth.value)} – ${monthLabel().format(new Date(viewMonth.value.getFullYear(), viewMonth.value.getMonth() + props.months - 1, 1))}`\n : monthLabel().format(viewMonth.value),\n ),\n\n h(\n 'button',\n {\n type: 'button',\n class: 'ansh-calendar__nav ansh-focusable',\n 'aria-label': 'Next month',\n onClick: () => {\n viewMonth.value = addMonths(viewMonth.value, 1)\n },\n },\n [\n h(\n 'svg',\n { viewBox: '0 0 12 12', width: '14', height: '14', '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 h(\n 'div',\n { class: 'ansh-calendar__months', ref: gridRef },\n Array.from({ length: props.months }, (_, index) => renderMonth(index)),\n ),\n ],\n )\n },\n})\n","import { type PropType, Teleport, computed, defineComponent, h, ref } from 'vue'\nimport { cx } from '../../primitives/utils'\nimport { useAnchoredPosition } from '../../primitives/use-anchored-position'\nimport { useControllableState } from '../../primitives/use-controllable-state'\nimport { useDismiss } from '../../primitives/use-dismiss'\nimport { useFieldControl } from './field'\nimport { Calendar, type DateRange, startOfDay } from './calendar'\n\n/** Fields shared by `DatePicker` and `DateRangePicker`, forwarded straight to `Calendar`. */\nconst calendarForwardProps = {\n min: { type: Date, default: undefined },\n max: { type: Date, default: undefined },\n isDateDisabled: { type: Function as PropType<(date: Date) => boolean>, default: undefined },\n weekStartsOn: {\n type: Number as PropType<0 | 1 | 2 | 3 | 4 | 5 | 6>,\n default: undefined,\n },\n locale: { type: String, default: undefined },\n showWeekNumbers: { type: Boolean, default: false },\n}\n\n/** Documents the shape of `DatePicker`'s props. Not consumed by `defineComponent` directly. */\nexport interface DatePickerProps {\n modelValue?: Date | null\n defaultValue?: Date | null\n placeholder?: string\n disabled?: boolean\n invalid?: boolean\n /** Show a clear button once a date is chosen. */\n clearable?: boolean\n /** Format the displayed date. Defaults to the locale's medium date. */\n format?: (date: Date) => string\n label?: string\n name?: string\n min?: Date\n max?: Date\n isDateDisabled?: (date: Date) => boolean\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n locale?: string\n months?: number\n showWeekNumbers?: boolean\n}\n\n/**\n * A date field with a calendar popover — the Vue counterpart of `@ansh-ui/react`'s `DatePicker`.\n *\n * The text input is editable, not just a display. Typing \"14/03/2026\" is faster than clicking\n * through a calendar for anyone who knows the date they want, and a picker that forces the calendar\n * is a picker people complain about. The calendar is the fallback for \"some Thursday next month\",\n * which is the case typing can't serve.\n *\n * Parsing is deliberately forgiving of separators and order within a locale, but never guesses\n * between `03/04` as March 4th and April 3rd — it follows the locale's own order. Guessing is how\n * date fields silently record the wrong day.\n */\nexport const DatePicker = defineComponent({\n name: 'AnshDatePicker',\n inheritAttrs: false,\n props: {\n modelValue: { type: Date as PropType<Date | null>, default: undefined },\n defaultValue: { type: Date as PropType<Date | null>, default: undefined },\n placeholder: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n clearable: { type: Boolean, default: true },\n format: { type: Function as PropType<(date: Date) => string>, default: undefined },\n label: { type: String, default: 'Date' },\n name: { type: String, default: undefined },\n months: { type: Number, default: undefined },\n ...calendarForwardProps,\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n const fieldProps = useFieldControl()\n const [selected, setSelected] = useControllableState<Date | null>(\n () => props.modelValue,\n props.defaultValue ?? null,\n (next) => emit('update:modelValue', next),\n )\n const open = ref(false)\n const text = ref('')\n const editing = ref(false)\n\n const anchorRef = ref<HTMLDivElement | null>(null)\n const panelRef = ref<HTMLDivElement | null>(null)\n const inputRef = ref<HTMLInputElement | null>(null)\n\n const formatter = computed(\n () =>\n new Intl.DateTimeFormat(props.locale, {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n }),\n )\n\n /** The locale's field order, derived rather than assumed. */\n const order = computed(() => {\n const parts = formatter.value.formatToParts(new Date(2026, 2, 14))\n return parts\n .filter((p): p is Intl.DateTimeFormatPart & { type: 'day' | 'month' | 'year' } =>\n ['day', 'month', 'year'].includes(p.type),\n )\n .map((p) => p.type)\n })\n\n const display = computed(() => {\n const sel = selected.value\n if (props.format) return sel ? props.format(sel) : ''\n return sel ? formatter.value.format(sel) : ''\n })\n\n const parse = (raw: string): Date | null => {\n const numbers = raw.split(/\\D+/).filter(Boolean).map(Number)\n if (numbers.length < 3) return null\n\n const parts: Record<string, number> = {}\n order.value.forEach((type, index) => {\n parts[type] = numbers[index]!\n })\n\n const { month = 0, day = 0 } = parts\n let { year = 0 } = parts\n // Two-digit years: 00–69 is 2000s, 70–99 is 1900s. The Unicode CLDR convention, and the one\n // every spreadsheet uses.\n if (year < 100) year += year < 70 ? 2000 : 1900\n\n const date = new Date(year, month - 1, day)\n // Round-trip check rejects 31 February, which `Date` would silently roll into March.\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null\n }\n return startOfDay(date)\n }\n\n const commitText = (): void => {\n editing.value = false\n if (text.value.trim() === '') {\n setSelected(null)\n return\n }\n const parsed = parse(text.value)\n if (parsed) setSelected(parsed)\n // An unparseable entry reverts rather than clearing — silently discarding what someone\n // typed is worse than ignoring it.\n text.value = ''\n }\n\n const { position } = useAnchoredPosition(anchorRef, panelRef, open, {\n placement: 'bottom-start',\n offset: 6,\n })\n useDismiss(\n panelRef,\n open,\n () => {\n open.value = false\n },\n { ignore: [anchorRef] },\n )\n\n const placeholderText = computed(\n () =>\n props.placeholder ??\n order.value\n .map((type) => (type === 'year' ? 'yyyy' : type === 'month' ? 'mm' : 'dd'))\n .join('/'),\n )\n\n return () => {\n const { class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n\n return h('div', { class: cx('ansh-datepicker', attrClass as string) }, [\n h(\n 'div',\n {\n ref: anchorRef,\n class: cx(\n 'ansh-input-group',\n 'ansh-focusable-within',\n (props.invalid || fieldProps.value['aria-invalid']) && 'ansh-input-group--invalid',\n props.disabled && 'ansh-input-group--disabled',\n ),\n },\n [\n h('input', {\n ref: inputRef,\n type: 'text',\n inputmode: 'numeric',\n class: 'ansh-input',\n value: editing.value ? text.value : display.value,\n placeholder: placeholderText.value,\n disabled: props.disabled || fieldProps.value.disabled,\n 'aria-label': props.label,\n 'aria-invalid': props.invalid || undefined,\n autocomplete: 'off',\n ...fieldProps.value,\n ...restAttrs,\n onInput: (event: Event) => {\n editing.value = true\n text.value = (event.target as HTMLInputElement).value\n },\n onBlur: commitText,\n onKeydown: (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n commitText()\n open.value = false\n } else if (event.key === 'ArrowDown' && !open.value) {\n event.preventDefault()\n open.value = true\n } else if (event.key === 'Escape' && open.value) {\n event.preventDefault()\n open.value = false\n }\n },\n }),\n\n props.clearable && selected.value && !props.disabled\n ? h(\n 'button',\n {\n type: 'button',\n class: 'ansh-input-group__clear ansh-focusable',\n 'aria-label': 'Clear date',\n onClick: () => {\n setSelected(null)\n text.value = ''\n inputRef.value?.focus()\n },\n },\n [\n h(\n 'svg',\n { viewBox: '0 0 16 16', width: '12', height: '12', 'aria-hidden': 'true' },\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 h(\n 'button',\n {\n type: 'button',\n class: 'ansh-input-group__button ansh-focusable',\n 'aria-label': 'Open calendar',\n 'aria-haspopup': 'dialog',\n 'aria-expanded': open.value,\n disabled: props.disabled,\n onClick: () => {\n open.value = !open.value\n },\n },\n [\n h(\n 'svg',\n {\n viewBox: '0 0 20 20',\n width: '16',\n height: '16',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': '1.5',\n 'aria-hidden': 'true',\n },\n [\n h('rect', { x: '3', y: '4.5', width: '14', height: '13', rx: '2.5' }),\n h('path', { d: 'M3 8.5h14M7 2.5v3M13 2.5v3', 'stroke-linecap': 'round' }),\n ],\n ),\n ],\n ),\n ],\n ),\n\n props.name\n ? // ISO in the hidden field. A server parsing \"14/03/2026\" has to guess the locale; an\n // ISO date is unambiguous everywhere.\n h('input', {\n type: 'hidden',\n name: props.name,\n value: selected.value\n ? `${selected.value.getFullYear()}-${String(selected.value.getMonth() + 1).padStart(2, '0')}-${String(selected.value.getDate()).padStart(2, '0')}`\n : '',\n })\n : null,\n\n open.value\n ? h(Teleport, { to: 'body' }, [\n h(\n 'div',\n {\n ref: panelRef,\n role: 'dialog',\n 'aria-label': props.label,\n class: 'ansh-datepicker__panel',\n style: position.value.style,\n },\n [\n h(Calendar, {\n mode: 'single',\n modelValue: selected.value,\n 'onUpdate:modelValue': (next: Date | null | DateRange) => {\n setSelected(next as Date | null)\n open.value = false\n inputRef.value?.focus()\n },\n locale: props.locale,\n min: props.min,\n max: props.max,\n isDateDisabled: props.isDateDisabled,\n weekStartsOn: props.weekStartsOn,\n months: props.months,\n showWeekNumbers: props.showWeekNumbers,\n }),\n ],\n ),\n ])\n : null,\n ])\n }\n },\n})\n\n/** Documents the shape of `DateRangePicker`'s props. Not consumed by `defineComponent` directly. */\nexport interface DateRangePickerProps {\n modelValue?: DateRange\n defaultValue?: DateRange\n disabled?: boolean\n invalid?: boolean\n label?: string\n /** Months shown side by side. Default `2`. */\n months?: number\n min?: Date\n max?: Date\n isDateDisabled?: (date: Date) => boolean\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n locale?: string\n showWeekNumbers?: boolean\n}\n\n/**\n * A start/end date range — the Vue counterpart of `@ansh-ui/react`'s `DateRangePicker`.\n *\n * Two months by default: choosing a range that crosses a month boundary with one month visible\n * means paging back and forth to compare, which is where users lose track of what they picked.\n */\nexport const DateRangePicker = defineComponent({\n name: 'AnshDateRangePicker',\n inheritAttrs: false,\n props: {\n modelValue: { type: Object as PropType<DateRange>, default: undefined },\n defaultValue: { type: Object as PropType<DateRange>, default: undefined },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n label: { type: String, default: 'Date range' },\n months: { type: Number, default: 2 },\n ...calendarForwardProps,\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n const [range, setRange] = useControllableState<DateRange>(\n () => props.modelValue,\n props.defaultValue ?? { start: null, end: null },\n (next) => emit('update:modelValue', next),\n )\n const open = ref(false)\n\n const anchorRef = ref<HTMLButtonElement | null>(null)\n const panelRef = ref<HTMLDivElement | null>(null)\n\n const formatter = computed(\n () =>\n new Intl.DateTimeFormat(props.locale, { day: 'numeric', month: 'short', year: 'numeric' }),\n )\n\n const { position } = useAnchoredPosition(anchorRef, panelRef, open, {\n placement: 'bottom-start',\n offset: 6,\n })\n useDismiss(\n panelRef,\n open,\n () => {\n open.value = false\n },\n { ignore: [anchorRef] },\n )\n\n const summary = computed(() => {\n const r = range.value\n if (r.start && r.end)\n return `${formatter.value.format(r.start)} – ${formatter.value.format(r.end)}`\n if (r.start) return `${formatter.value.format(r.start)} – …`\n return 'Select dates'\n })\n\n return () => {\n const { class: attrClass, ...restAttrs } = attrs as Record<string, unknown>\n\n return h('div', { class: cx('ansh-datepicker', attrClass as string) }, [\n h(\n 'button',\n {\n ref: anchorRef,\n type: 'button',\n class: cx(\n 'ansh-select__trigger',\n 'ansh-focusable',\n open.value && 'ansh-select__trigger--open',\n props.invalid && 'ansh-select__trigger--invalid',\n !range.value.start && 'ansh-select__trigger--placeholder',\n ),\n disabled: props.disabled,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': open.value,\n 'aria-label': `${props.label}: ${summary.value}`,\n ...restAttrs,\n onClick: () => {\n open.value = !open.value\n },\n },\n [\n h(\n 'svg',\n {\n viewBox: '0 0 20 20',\n width: '16',\n height: '16',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': '1.5',\n 'aria-hidden': 'true',\n },\n [\n h('rect', { x: '3', y: '4.5', width: '14', height: '13', rx: '2.5' }),\n h('path', { d: 'M3 8.5h14M7 2.5v3M13 2.5v3', 'stroke-linecap': 'round' }),\n ],\n ),\n h('span', { class: 'ansh-select__value' }, summary.value),\n ],\n ),\n\n open.value\n ? h(Teleport, { to: 'body' }, [\n h(\n 'div',\n {\n ref: panelRef,\n role: 'dialog',\n 'aria-label': props.label,\n class: 'ansh-datepicker__panel',\n style: position.value.style,\n },\n [\n h(Calendar, {\n mode: 'range',\n months: props.months,\n modelValue: range.value,\n 'onUpdate:modelValue': (next: Date | null | DateRange) => {\n const nextRange = next as DateRange\n setRange(nextRange)\n // Close only once both ends are chosen, so the second click doesn't have to\n // reopen the panel.\n if (nextRange.start && nextRange.end) open.value = false\n },\n locale: props.locale,\n min: props.min,\n max: props.max,\n isDateDisabled: props.isDateDisabled,\n weekStartsOn: props.weekStartsOn,\n showWeekNumbers: props.showWeekNumbers,\n }),\n ],\n ),\n ])\n : null,\n ])\n }\n },\n})\n"]}