@auronui/vue 1.0.15 → 1.0.16

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 (150) hide show
  1. package/dist/cjs/index.cjs +562 -73
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js +7 -1
  4. package/dist/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/components/accordion/AccordionContent.vue_vue_type_script_setup_true_lang.js +7 -1
  6. package/dist/components/accordion/AccordionContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  7. package/dist/components/accordion/AccordionHeader.vue_vue_type_script_setup_true_lang.js +7 -1
  8. package/dist/components/accordion/AccordionHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  9. package/dist/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js +7 -1
  10. package/dist/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  11. package/dist/components/accordion/AccordionTrigger.vue_vue_type_script_setup_true_lang.js +7 -1
  12. package/dist/components/accordion/AccordionTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  13. package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js +7 -1
  14. package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js.map +1 -1
  15. package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js +7 -1
  16. package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  17. package/dist/components/aspect-ratio/AspectRatio.vue_vue_type_script_setup_true_lang.js +10 -1
  18. package/dist/components/aspect-ratio/AspectRatio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +7 -1
  20. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  21. package/dist/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js +7 -1
  22. package/dist/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  23. package/dist/components/badge/Badge.vue_vue_type_script_setup_true_lang.js +7 -1
  24. package/dist/components/badge/Badge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/breadcrumbs/BreadcrumbItem.vue_vue_type_script_setup_true_lang.js +7 -1
  26. package/dist/components/breadcrumbs/BreadcrumbItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/components/breadcrumbs/Breadcrumbs.vue_vue_type_script_setup_true_lang.js +7 -1
  28. package/dist/components/breadcrumbs/Breadcrumbs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js +7 -1
  30. package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js.map +1 -1
  31. package/dist/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js +7 -1
  32. package/dist/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/components/button/ToggleButtonGroup.vue_vue_type_script_setup_true_lang.js +7 -1
  34. package/dist/components/button/ToggleButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  35. package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js +7 -1
  36. package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  37. package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js +7 -1
  38. package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  39. package/dist/components/card/Card.vue_vue_type_script_setup_true_lang.js +7 -1
  40. package/dist/components/card/Card.vue_vue_type_script_setup_true_lang.js.map +1 -1
  41. package/dist/components/card/CardBody.vue_vue_type_script_setup_true_lang.js +7 -1
  42. package/dist/components/card/CardBody.vue_vue_type_script_setup_true_lang.js.map +1 -1
  43. package/dist/components/card/CardFooter.vue_vue_type_script_setup_true_lang.js +7 -1
  44. package/dist/components/card/CardFooter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/components/card/CardHeader.vue_vue_type_script_setup_true_lang.js +7 -1
  46. package/dist/components/card/CardHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  47. package/dist/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js +7 -1
  48. package/dist/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  49. package/dist/components/chip/Chip.vue_vue_type_script_setup_true_lang.js +7 -1
  50. package/dist/components/chip/Chip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js +7 -1
  52. package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js.map +1 -1
  53. package/dist/components/collapsible/CollapsibleContent.vue_vue_type_script_setup_true_lang.js +7 -1
  54. package/dist/components/collapsible/CollapsibleContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  55. package/dist/components/collapsible/CollapsibleGroup.vue_vue_type_script_setup_true_lang.js +7 -1
  56. package/dist/components/collapsible/CollapsibleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  57. package/dist/components/collapsible/CollapsibleTrigger.vue_vue_type_script_setup_true_lang.js +7 -1
  58. package/dist/components/collapsible/CollapsibleTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  59. package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js +10 -1
  60. package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  61. package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js +7 -1
  62. package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  63. package/dist/components/date-picker/DatePicker.vue_vue_type_script_setup_true_lang.js +7 -1
  64. package/dist/components/date-picker/DatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  65. package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js +7 -1
  66. package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  67. package/dist/components/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +7 -1
  68. package/dist/components/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +7 -1
  70. package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  71. package/dist/components/input/Input.vue_vue_type_script_setup_true_lang.js +7 -1
  72. package/dist/components/input/Input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js +10 -1
  74. package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
  75. package/dist/components/kbd/Kbd.vue_vue_type_script_setup_true_lang.js +7 -1
  76. package/dist/components/kbd/Kbd.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/components/link/Link.vue_vue_type_script_setup_true_lang.js +7 -1
  78. package/dist/components/link/Link.vue_vue_type_script_setup_true_lang.js.map +1 -1
  79. package/dist/components/list-box/ListBox.js.map +1 -1
  80. package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js +11 -2
  81. package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  82. package/dist/components/list-box/ListBoxItem.vue_vue_type_script_setup_true_lang.js +10 -1
  83. package/dist/components/list-box/ListBoxItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  84. package/dist/components/meter/Meter.vue_vue_type_script_setup_true_lang.js +7 -1
  85. package/dist/components/meter/Meter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  86. package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js +7 -1
  87. package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/components/progress-bar/ProgressBar.vue_vue_type_script_setup_true_lang.js +7 -1
  89. package/dist/components/progress-bar/ProgressBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  90. package/dist/components/progress-circle/ProgressCircle.vue_vue_type_script_setup_true_lang.js +7 -1
  91. package/dist/components/progress-circle/ProgressCircle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  92. package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js +10 -1
  93. package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  94. package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js +7 -1
  95. package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  96. package/dist/components/scroll-shadow/ScrollShadow.vue_vue_type_script_setup_true_lang.js +7 -1
  97. package/dist/components/scroll-shadow/ScrollShadow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js +7 -1
  99. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js.map +1 -1
  100. package/dist/components/skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js +7 -1
  101. package/dist/components/skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  102. package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js +7 -1
  103. package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  104. package/dist/components/splitter/SplitterGroup.vue_vue_type_script_setup_true_lang.js +10 -1
  105. package/dist/components/splitter/SplitterGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  106. package/dist/components/splitter/SplitterPanel.vue_vue_type_script_setup_true_lang.js +10 -1
  107. package/dist/components/splitter/SplitterPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  108. package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js +10 -1
  109. package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  110. package/dist/components/stepper/Stepper.vue_vue_type_script_setup_true_lang.js +10 -1
  111. package/dist/components/stepper/Stepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  112. package/dist/components/stepper/StepperContent.vue_vue_type_script_setup_true_lang.js +10 -1
  113. package/dist/components/stepper/StepperContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  114. package/dist/components/stepper/StepperDescription.vue_vue_type_script_setup_true_lang.js +10 -1
  115. package/dist/components/stepper/StepperDescription.vue_vue_type_script_setup_true_lang.js.map +1 -1
  116. package/dist/components/stepper/StepperIndicator.vue_vue_type_script_setup_true_lang.js +10 -1
  117. package/dist/components/stepper/StepperIndicator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/components/stepper/StepperItem.vue_vue_type_script_setup_true_lang.js +10 -1
  119. package/dist/components/stepper/StepperItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  120. package/dist/components/stepper/StepperSeparator.vue_vue_type_script_setup_true_lang.js +10 -1
  121. package/dist/components/stepper/StepperSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  122. package/dist/components/stepper/StepperTitle.vue_vue_type_script_setup_true_lang.js +10 -1
  123. package/dist/components/stepper/StepperTitle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  124. package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js +7 -1
  125. package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  126. package/dist/components/table/TableRow.vue_vue_type_script_setup_true_lang.js +7 -1
  127. package/dist/components/table/TableRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  128. package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js +7 -1
  129. package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  130. package/dist/components/tabs/TabIndicator.vue_vue_type_script_setup_true_lang.js +7 -1
  131. package/dist/components/tabs/TabIndicator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  132. package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js +7 -1
  133. package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  134. package/dist/components/tabs/TabPanel.vue_vue_type_script_setup_true_lang.js +7 -1
  135. package/dist/components/tabs/TabPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  136. package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js +7 -1
  137. package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  138. package/dist/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js +7 -1
  139. package/dist/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  140. package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js +7 -1
  141. package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  142. package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js +10 -1
  143. package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js.map +1 -1
  144. package/dist/components/tree/TreeItem.vue_vue_type_script_setup_true_lang.js +10 -1
  145. package/dist/components/tree/TreeItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/components/tree/TreeItemToggle.vue_vue_type_script_setup_true_lang.js +10 -1
  147. package/dist/components/tree/TreeItemToggle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  148. package/dist/index.d.ts +18 -18
  149. package/dist/utils/composeClassName.js.map +1 -1
  150. package/package.json +2 -2
@@ -99,7 +99,13 @@ var Input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
99
99
  label: {},
100
100
  description: {},
101
101
  errorMessage: {},
102
- class: {},
102
+ class: { type: [
103
+ String,
104
+ Boolean,
105
+ null,
106
+ Object,
107
+ Array
108
+ ] },
103
109
  classNames: {}
104
110
  }, {
105
111
  "modelValue": { default: "" },
@@ -1 +1 @@
1
- {"version":3,"file":"Input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/input/Input.vue"],"sourcesContent":["<!--\n Input — reference form-field component for @auronui/vue.\n\n This is the canonical template for every form field in the library\n (Textarea, NumberInput, DateInput, Select, etc.). Porting a new field\n means mirroring its prop surface, slot layout, data-attribute contract,\n CSS selector pairing, and a11y wiring. Keep these in sync.\n\n ─── Anatomy ────────────────────────────────────────────────────────────\n base (.input-root) ← layout container, carries class/data-attrs\n label [outside | outside-left] ← rendered here when placement !== 'inside'\n mainWrapper (.input__main-wrapper) ← groups field + helper vertically\n inputWrapper (.input) ← styled field box (border, bg, focus)\n label [inside] ← rendered here when placement === 'inside'\n startContent (.input__start-content) ← leading icon slot\n <input ref=\"inputEl\"> ← the native element\n endContent (.input__end-content) ← trailing icon slot\n clearButton (.input__clear-button) ← × button, after endContent\n passwordToggle (.input__password-toggle) ← eye button, type=\"password\" only\n helperWrapper (.input__helper-wrapper) ← holds description XOR error\n errorMessage | description\n\n ─── Data attributes on base (selector hooks) ──────────────────────────\n data-invalid — mirrors isInvalid\n data-disabled — mirrors isDisabled\n data-readonly — mirrors isReadonly\n data-required — mirrors isRequired\n data-has-label — true when label prop is set (any placement)\n data-has-helper — true when description or error is visible\n data-filled — set on inputWrapper when the value is non-empty (for\n floating-label up-state)\n\n Every interactive CSS rule in input.css pairs a pseudo-class with its\n data-attribute counterpart (Reka UI selector pairing rule), e.g.\n &:focus-within, &[data-focused=\"true\"] { ... }\n\n ─── v-model ───────────────────────────────────────────────────────────\n <Input v-model=\"value\" /> -- string | number | null\n\n ─── Emits ─────────────────────────────────────────────────────────────\n @clear -- emitted when the user activates the clear (×) button.\n The input is already empty and refocused by this point.\n\n ─── Slots ─────────────────────────────────────────────────────────────\n #startContent -- leading icon / adornment\n #endContent -- trailing icon / adornment (renders BEFORE clear/toggle,\n so you can combine them freely)\n\n ─── Accessibility contract (audited by vitest-axe) ────────────────────\n • <label for=\"{inputId}\"> wraps the label text.\n • aria-invalid reflects isInvalid.\n • aria-describedby points to whichever helper is rendered (error wins).\n • Required field uses the native `required` attribute; the visual\n asterisk is aria-hidden.\n • Clear button: tabindex=-1 (out of form tab flow), aria-label.\n • Password toggle: tabbable, aria-pressed reflects visibility.\n • All transitions are wrapped in motion-reduce:transition-none.\n\n ─── Reuse checklist for new form fields ───────────────────────────────\n 1. Copy prop names verbatim (variant, size, color, labelPlacement,\n fullWidth, isInvalid, isDisabled, isReadonly, isRequired, label,\n description, errorMessage, class, classNames).\n 2. Expose the same slot keys in tailwind-variants.\n 3. Emit the same data-attributes on the root + data-filled on the\n field box.\n 4. Reuse the aria-describedby / error-vs-description precedence\n logic verbatim.\n 5. Generate ids with useId(), scope helper ids as `{id}-error` /\n `{id}-description`.\n 6. Default labelPlacement to 'inside' and apply the inside-label\n CSS via a compoundVariant of (hasLabel=true, labelPlacement='inside').\n-->\n<script setup lang=\"ts\">\nimport { computed, nextTick, ref, useAttrs, useId, useTemplateRef } from 'vue'\nimport { inputVariants, type InputVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<Props>(), {\n variant: 'flat',\n size: 'md',\n color: 'default',\n labelPlacement: 'inside',\n fullWidth: false,\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n isRequired: false,\n isClearable: false,\n showPasswordToggle: false,\n type: 'text',\n})\n\nconst emit = defineEmits<{\n /**\n * Fired when the user activates the clear (×) button.\n * At the time this fires the v-model value is already '' and focus\n * has been returned to the input element.\n */\n clear: []\n}>()\n\n/**\n * Two-way value. String for text-like types, number for type=\"number\",\n * null allowed so controlled consumers can represent \"no value\" without\n * coercing to empty string.\n */\nconst modelValue = defineModel<string | number | null>({ default: '' })\n\ntype Props = {\n /** Visual style of the field. @default 'flat' */\n variant?: InputVariants['variant']\n /** Field height. @default 'md' */\n size?: InputVariants['size']\n /** Accent color applied to focus ring + floating label. @default 'default' */\n color?: InputVariants['color']\n /**\n * Where the `label` is rendered relative to the field.\n * - `inside`: floats above the input (shrinks when focused/filled)\n * - `outside`: sits above the field, static\n * - `outside-left`: sits to the left, horizontal layout\n * @default 'inside'\n */\n labelPlacement?: InputVariants['labelPlacement']\n /** Stretches root wrapper to 100% width. @default false */\n fullWidth?: boolean\n /** Marks the field as invalid. Triggers danger styling and enables `errorMessage`. @default false */\n isInvalid?: boolean\n /** Disables the field. @default false */\n isDisabled?: boolean\n /** Makes the field read-only. @default false */\n isReadonly?: boolean\n /** Adds a required asterisk next to the label and the `required` attribute on the input. @default false */\n isRequired?: boolean\n /** Shows an × button that clears the value and refocuses the input when value is non-empty. @default false */\n isClearable?: boolean\n /** Shows a show/hide eye button. Only active when `type === 'password'`. @default false */\n showPasswordToggle?: boolean\n /** Native input type (e.g. `text`, `email`, `password`, `number`). @default 'text' */\n type?: string\n /** Placeholder shown when empty. Hidden behind the floating label until focused/filled for `labelPlacement: 'inside'`. */\n placeholder?: string\n /** Form field name, for native form submission. */\n name?: string\n /** Field label. When omitted, the floating-label behavior is skipped. */\n label?: string\n /** Helper text displayed below the field. Suppressed when `isInvalid && errorMessage` is shown. */\n description?: string\n /** Error text displayed below the field. Only rendered when `isInvalid` is also true. Takes precedence over `description`. */\n errorMessage?: string\n /** Extra classes merged onto the root wrapper via `composeClassName`. */\n class?: ClassValue\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n *\n * @example\n * ```vue\n * <Input :class-names=\"{ input: 'text-xl', inputWrapper: 'border-2 border-blue-500' }\" />\n * ```\n *\n * Available slots: `base`, `mainWrapper`, `inputWrapper`, `input`,\n * `label`, `startContent`, `endContent`, `clearButton`, `passwordToggle`,\n * `helperWrapper`, `description`, `errorMessage`.\n */\n classNames?: Partial<{\n base: ClassValue\n mainWrapper: ClassValue\n inputWrapper: ClassValue\n input: ClassValue\n label: ClassValue\n startContent: ClassValue\n endContent: ClassValue\n clearButton: ClassValue\n passwordToggle: ClassValue\n helperWrapper: ClassValue\n description: ClassValue\n errorMessage: ClassValue\n }>\n}\n\nconst attrs = useAttrs()\nconst generatedId = useId()\nconst inputId = computed(() => (attrs.id as string | undefined) ?? generatedId)\nconst inputAttrs = computed(() =>\n Object.fromEntries(Object.entries(attrs).filter(([k]) => k !== 'id'))\n)\n\nconst inputEl = useTemplateRef<HTMLInputElement>('inputEl')\n\nconst hasLabel = computed(() => !!props.label)\nconst isFilled = computed(\n () => modelValue.value !== null && modelValue.value !== undefined && String(modelValue.value) !== '',\n)\n\nconst descriptionId = computed(() => `${inputId.value}-description`)\nconst errorMessageId = computed(() => `${inputId.value}-error`)\nconst showError = computed(() => props.isInvalid && !!props.errorMessage)\nconst showDescription = computed(() => !!props.description && !showError.value)\nconst hasHelper = computed(() => showError.value || showDescription.value)\nconst ariaDescribedBy = computed(() => {\n if (showError.value) return errorMessageId.value\n if (showDescription.value) return descriptionId.value\n return undefined\n})\n\nconst isPasswordVisible = ref(false)\nconst isPasswordField = computed(() => props.type === 'password')\nconst effectiveType = computed(() =>\n isPasswordField.value && isPasswordVisible.value ? 'text' : props.type,\n)\n\nconst isInteractive = computed(() => !props.isDisabled && !props.isReadonly)\nconst showClearButton = computed(\n () => props.isClearable && isFilled.value && isInteractive.value,\n)\nconst showPasswordToggleButton = computed(\n () => props.showPasswordToggle && isPasswordField.value && isInteractive.value,\n)\n\nfunction handleClear() {\n modelValue.value = ''\n emit('clear')\n nextTick(() => inputEl.value?.focus())\n}\n\nfunction togglePasswordVisibility() {\n isPasswordVisible.value = !isPasswordVisible.value\n}\n\nconst slotFns = computed(() =>\n inputVariants({\n variant: props.variant,\n size: props.size,\n color: props.color,\n fullWidth: props.fullWidth,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isReadonly: props.isReadonly,\n hasLabel: hasLabel.value,\n labelPlacement: props.labelPlacement,\n }),\n)\n\nconst showOutsideLabel = computed(\n () => hasLabel.value && props.labelPlacement !== 'inside',\n)\nconst showInsideLabel = computed(\n () => hasLabel.value && props.labelPlacement === 'inside',\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-invalid=\"isInvalid || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-readonly=\"isReadonly || undefined\"\n :data-required=\"isRequired || undefined\"\n :data-has-label=\"hasLabel || undefined\"\n :data-has-helper=\"hasHelper || undefined\"\n >\n <label\n v-if=\"showOutsideLabel\"\n :for=\"inputId\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}<span\n v-if=\"isRequired\"\n aria-hidden=\"true\"\n > *</span></label>\n\n <div :class=\"composeClassName(slotFns.mainWrapper(), props.classNames?.mainWrapper)\">\n <div\n :class=\"composeClassName(slotFns.inputWrapper(), props.classNames?.inputWrapper)\"\n :data-filled=\"hasLabel ? (isFilled || undefined) : undefined\"\n >\n <label\n v-if=\"showInsideLabel\"\n :for=\"inputId\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}<span\n v-if=\"isRequired\"\n aria-hidden=\"true\"\n > *</span></label>\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n >\n <slot name=\"startContent\" />\n </span>\n <input\n v-bind=\"inputAttrs\"\n :id=\"inputId\"\n ref=\"inputEl\"\n v-model=\"modelValue\"\n :type=\"effectiveType\"\n :placeholder=\"placeholder\"\n :name=\"name\"\n :disabled=\"isDisabled || undefined\"\n :readonly=\"isReadonly || undefined\"\n :required=\"isRequired || undefined\"\n :aria-invalid=\"isInvalid || undefined\"\n :aria-describedby=\"ariaDescribedBy\"\n :class=\"composeClassName(slotFns.input(), props.classNames?.input)\"\n >\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n >\n <slot name=\"endContent\" />\n </span>\n <button\n v-if=\"showClearButton\"\n type=\"button\"\n tabindex=\"-1\"\n :class=\"composeClassName(slotFns.clearButton(), props.classNames?.clearButton)\"\n aria-label=\"Clear input\"\n @click=\"handleClear\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n />\n <line\n x1=\"15\"\n y1=\"9\"\n x2=\"9\"\n y2=\"15\"\n />\n <line\n x1=\"9\"\n y1=\"9\"\n x2=\"15\"\n y2=\"15\"\n />\n </svg>\n </button>\n <button\n v-if=\"showPasswordToggleButton\"\n type=\"button\"\n :class=\"composeClassName(slotFns.passwordToggle(), props.classNames?.passwordToggle)\"\n :aria-label=\"isPasswordVisible ? 'Hide password' : 'Show password'\"\n :aria-pressed=\"isPasswordVisible\"\n @click=\"togglePasswordVisibility\"\n >\n <svg\n v-if=\"isPasswordVisible\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line\n x1=\"1\"\n y1=\"1\"\n x2=\"23\"\n y2=\"23\"\n />\n </svg>\n <svg\n v-else\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"3\"\n />\n </svg>\n </button>\n </div>\n\n <div\n v-if=\"hasHelper\"\n :class=\"composeClassName(slotFns.helperWrapper(), props.classNames?.helperWrapper)\"\n >\n <div\n v-if=\"showError\"\n :id=\"errorMessageId\"\n :class=\"composeClassName(slotFns.errorMessage(), props.classNames?.errorMessage)\"\n >\n {{ errorMessage }}\n </div>\n <div\n v-else-if=\"showDescription\"\n :id=\"descriptionId\"\n :class=\"composeClassName(slotFns.description(), props.classNames?.description)\"\n >\n {{ description }}\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"Input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/input/Input.vue"],"sourcesContent":["<!--\n Input — reference form-field component for @auronui/vue.\n\n This is the canonical template for every form field in the library\n (Textarea, NumberInput, DateInput, Select, etc.). Porting a new field\n means mirroring its prop surface, slot layout, data-attribute contract,\n CSS selector pairing, and a11y wiring. Keep these in sync.\n\n ─── Anatomy ────────────────────────────────────────────────────────────\n base (.input-root) ← layout container, carries class/data-attrs\n label [outside | outside-left] ← rendered here when placement !== 'inside'\n mainWrapper (.input__main-wrapper) ← groups field + helper vertically\n inputWrapper (.input) ← styled field box (border, bg, focus)\n label [inside] ← rendered here when placement === 'inside'\n startContent (.input__start-content) ← leading icon slot\n <input ref=\"inputEl\"> ← the native element\n endContent (.input__end-content) ← trailing icon slot\n clearButton (.input__clear-button) ← × button, after endContent\n passwordToggle (.input__password-toggle) ← eye button, type=\"password\" only\n helperWrapper (.input__helper-wrapper) ← holds description XOR error\n errorMessage | description\n\n ─── Data attributes on base (selector hooks) ──────────────────────────\n data-invalid — mirrors isInvalid\n data-disabled — mirrors isDisabled\n data-readonly — mirrors isReadonly\n data-required — mirrors isRequired\n data-has-label — true when label prop is set (any placement)\n data-has-helper — true when description or error is visible\n data-filled — set on inputWrapper when the value is non-empty (for\n floating-label up-state)\n\n Every interactive CSS rule in input.css pairs a pseudo-class with its\n data-attribute counterpart (Reka UI selector pairing rule), e.g.\n &:focus-within, &[data-focused=\"true\"] { ... }\n\n ─── v-model ───────────────────────────────────────────────────────────\n <Input v-model=\"value\" /> -- string | number | null\n\n ─── Emits ─────────────────────────────────────────────────────────────\n @clear -- emitted when the user activates the clear (×) button.\n The input is already empty and refocused by this point.\n\n ─── Slots ─────────────────────────────────────────────────────────────\n #startContent -- leading icon / adornment\n #endContent -- trailing icon / adornment (renders BEFORE clear/toggle,\n so you can combine them freely)\n\n ─── Accessibility contract (audited by vitest-axe) ────────────────────\n • <label for=\"{inputId}\"> wraps the label text.\n • aria-invalid reflects isInvalid.\n • aria-describedby points to whichever helper is rendered (error wins).\n • Required field uses the native `required` attribute; the visual\n asterisk is aria-hidden.\n • Clear button: tabindex=-1 (out of form tab flow), aria-label.\n • Password toggle: tabbable, aria-pressed reflects visibility.\n • All transitions are wrapped in motion-reduce:transition-none.\n\n ─── Reuse checklist for new form fields ───────────────────────────────\n 1. Copy prop names verbatim (variant, size, color, labelPlacement,\n fullWidth, isInvalid, isDisabled, isReadonly, isRequired, label,\n description, errorMessage, class, classNames).\n 2. Expose the same slot keys in tailwind-variants.\n 3. Emit the same data-attributes on the root + data-filled on the\n field box.\n 4. Reuse the aria-describedby / error-vs-description precedence\n logic verbatim.\n 5. Generate ids with useId(), scope helper ids as `{id}-error` /\n `{id}-description`.\n 6. Default labelPlacement to 'inside' and apply the inside-label\n CSS via a compoundVariant of (hasLabel=true, labelPlacement='inside').\n-->\n<script setup lang=\"ts\">\nimport { computed, nextTick, ref, useAttrs, useId, useTemplateRef } from 'vue'\nimport { inputVariants, type InputVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<Props>(), {\n variant: 'flat',\n size: 'md',\n color: 'default',\n labelPlacement: 'inside',\n fullWidth: false,\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n isRequired: false,\n isClearable: false,\n showPasswordToggle: false,\n type: 'text',\n})\n\nconst emit = defineEmits<{\n /**\n * Fired when the user activates the clear (×) button.\n * At the time this fires the v-model value is already '' and focus\n * has been returned to the input element.\n */\n clear: []\n}>()\n\n/**\n * Two-way value. String for text-like types, number for type=\"number\",\n * null allowed so controlled consumers can represent \"no value\" without\n * coercing to empty string.\n */\nconst modelValue = defineModel<string | number | null>({ default: '' })\n\ntype Props = {\n /** Visual style of the field. @default 'flat' */\n variant?: InputVariants['variant']\n /** Field height. @default 'md' */\n size?: InputVariants['size']\n /** Accent color applied to focus ring + floating label. @default 'default' */\n color?: InputVariants['color']\n /**\n * Where the `label` is rendered relative to the field.\n * - `inside`: floats above the input (shrinks when focused/filled)\n * - `outside`: sits above the field, static\n * - `outside-left`: sits to the left, horizontal layout\n * @default 'inside'\n */\n labelPlacement?: InputVariants['labelPlacement']\n /** Stretches root wrapper to 100% width. @default false */\n fullWidth?: boolean\n /** Marks the field as invalid. Triggers danger styling and enables `errorMessage`. @default false */\n isInvalid?: boolean\n /** Disables the field. @default false */\n isDisabled?: boolean\n /** Makes the field read-only. @default false */\n isReadonly?: boolean\n /** Adds a required asterisk next to the label and the `required` attribute on the input. @default false */\n isRequired?: boolean\n /** Shows an × button that clears the value and refocuses the input when value is non-empty. @default false */\n isClearable?: boolean\n /** Shows a show/hide eye button. Only active when `type === 'password'`. @default false */\n showPasswordToggle?: boolean\n /** Native input type (e.g. `text`, `email`, `password`, `number`). @default 'text' */\n type?: string\n /** Placeholder shown when empty. Hidden behind the floating label until focused/filled for `labelPlacement: 'inside'`. */\n placeholder?: string\n /** Form field name, for native form submission. */\n name?: string\n /** Field label. When omitted, the floating-label behavior is skipped. */\n label?: string\n /** Helper text displayed below the field. Suppressed when `isInvalid && errorMessage` is shown. */\n description?: string\n /** Error text displayed below the field. Only rendered when `isInvalid` is also true. Takes precedence over `description`. */\n errorMessage?: string\n /** Extra classes merged onto the root wrapper via `composeClassName`. */\n class?: ClassValue\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n *\n * @example\n * ```vue\n * <Input :class-names=\"{ input: 'text-xl', inputWrapper: 'border-2 border-blue-500' }\" />\n * ```\n *\n * Available slots: `base`, `mainWrapper`, `inputWrapper`, `input`,\n * `label`, `startContent`, `endContent`, `clearButton`, `passwordToggle`,\n * `helperWrapper`, `description`, `errorMessage`.\n */\n classNames?: Partial<{\n base: ClassValue\n mainWrapper: ClassValue\n inputWrapper: ClassValue\n input: ClassValue\n label: ClassValue\n startContent: ClassValue\n endContent: ClassValue\n clearButton: ClassValue\n passwordToggle: ClassValue\n helperWrapper: ClassValue\n description: ClassValue\n errorMessage: ClassValue\n }>\n}\n\nconst attrs = useAttrs()\nconst generatedId = useId()\nconst inputId = computed(() => (attrs.id as string | undefined) ?? generatedId)\nconst inputAttrs = computed(() =>\n Object.fromEntries(Object.entries(attrs).filter(([k]) => k !== 'id'))\n)\n\nconst inputEl = useTemplateRef<HTMLInputElement>('inputEl')\n\nconst hasLabel = computed(() => !!props.label)\nconst isFilled = computed(\n () => modelValue.value !== null && modelValue.value !== undefined && String(modelValue.value) !== '',\n)\n\nconst descriptionId = computed(() => `${inputId.value}-description`)\nconst errorMessageId = computed(() => `${inputId.value}-error`)\nconst showError = computed(() => props.isInvalid && !!props.errorMessage)\nconst showDescription = computed(() => !!props.description && !showError.value)\nconst hasHelper = computed(() => showError.value || showDescription.value)\nconst ariaDescribedBy = computed(() => {\n if (showError.value) return errorMessageId.value\n if (showDescription.value) return descriptionId.value\n return undefined\n})\n\nconst isPasswordVisible = ref(false)\nconst isPasswordField = computed(() => props.type === 'password')\nconst effectiveType = computed(() =>\n isPasswordField.value && isPasswordVisible.value ? 'text' : props.type,\n)\n\nconst isInteractive = computed(() => !props.isDisabled && !props.isReadonly)\nconst showClearButton = computed(\n () => props.isClearable && isFilled.value && isInteractive.value,\n)\nconst showPasswordToggleButton = computed(\n () => props.showPasswordToggle && isPasswordField.value && isInteractive.value,\n)\n\nfunction handleClear() {\n modelValue.value = ''\n emit('clear')\n nextTick(() => inputEl.value?.focus())\n}\n\nfunction togglePasswordVisibility() {\n isPasswordVisible.value = !isPasswordVisible.value\n}\n\nconst slotFns = computed(() =>\n inputVariants({\n variant: props.variant,\n size: props.size,\n color: props.color,\n fullWidth: props.fullWidth,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isReadonly: props.isReadonly,\n hasLabel: hasLabel.value,\n labelPlacement: props.labelPlacement,\n }),\n)\n\nconst showOutsideLabel = computed(\n () => hasLabel.value && props.labelPlacement !== 'inside',\n)\nconst showInsideLabel = computed(\n () => hasLabel.value && props.labelPlacement === 'inside',\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-invalid=\"isInvalid || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-readonly=\"isReadonly || undefined\"\n :data-required=\"isRequired || undefined\"\n :data-has-label=\"hasLabel || undefined\"\n :data-has-helper=\"hasHelper || undefined\"\n >\n <label\n v-if=\"showOutsideLabel\"\n :for=\"inputId\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}<span\n v-if=\"isRequired\"\n aria-hidden=\"true\"\n > *</span></label>\n\n <div :class=\"composeClassName(slotFns.mainWrapper(), props.classNames?.mainWrapper)\">\n <div\n :class=\"composeClassName(slotFns.inputWrapper(), props.classNames?.inputWrapper)\"\n :data-filled=\"hasLabel ? (isFilled || undefined) : undefined\"\n >\n <label\n v-if=\"showInsideLabel\"\n :for=\"inputId\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}<span\n v-if=\"isRequired\"\n aria-hidden=\"true\"\n > *</span></label>\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n >\n <slot name=\"startContent\" />\n </span>\n <input\n v-bind=\"inputAttrs\"\n :id=\"inputId\"\n ref=\"inputEl\"\n v-model=\"modelValue\"\n :type=\"effectiveType\"\n :placeholder=\"placeholder\"\n :name=\"name\"\n :disabled=\"isDisabled || undefined\"\n :readonly=\"isReadonly || undefined\"\n :required=\"isRequired || undefined\"\n :aria-invalid=\"isInvalid || undefined\"\n :aria-describedby=\"ariaDescribedBy\"\n :class=\"composeClassName(slotFns.input(), props.classNames?.input)\"\n >\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n >\n <slot name=\"endContent\" />\n </span>\n <button\n v-if=\"showClearButton\"\n type=\"button\"\n tabindex=\"-1\"\n :class=\"composeClassName(slotFns.clearButton(), props.classNames?.clearButton)\"\n aria-label=\"Clear input\"\n @click=\"handleClear\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n />\n <line\n x1=\"15\"\n y1=\"9\"\n x2=\"9\"\n y2=\"15\"\n />\n <line\n x1=\"9\"\n y1=\"9\"\n x2=\"15\"\n y2=\"15\"\n />\n </svg>\n </button>\n <button\n v-if=\"showPasswordToggleButton\"\n type=\"button\"\n :class=\"composeClassName(slotFns.passwordToggle(), props.classNames?.passwordToggle)\"\n :aria-label=\"isPasswordVisible ? 'Hide password' : 'Show password'\"\n :aria-pressed=\"isPasswordVisible\"\n @click=\"togglePasswordVisibility\"\n >\n <svg\n v-if=\"isPasswordVisible\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line\n x1=\"1\"\n y1=\"1\"\n x2=\"23\"\n y2=\"23\"\n />\n </svg>\n <svg\n v-else\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"3\"\n />\n </svg>\n </button>\n </div>\n\n <div\n v-if=\"hasHelper\"\n :class=\"composeClassName(slotFns.helperWrapper(), props.classNames?.helperWrapper)\"\n >\n <div\n v-if=\"showError\"\n :id=\"errorMessageId\"\n :class=\"composeClassName(slotFns.errorMessage(), props.classNames?.errorMessage)\"\n >\n {{ errorMessage }}\n </div>\n <div\n v-else-if=\"showDescription\"\n :id=\"descriptionId\"\n :class=\"composeClassName(slotFns.description(), props.classNames?.description)\"\n >\n {{ description }}\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
@@ -25,7 +25,16 @@ var InputOTP_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
25
25
  defaultValue: { default: void 0 },
26
26
  name: { default: void 0 },
27
27
  variant: { default: "primary" },
28
- class: { default: void 0 },
28
+ class: {
29
+ type: [
30
+ String,
31
+ Boolean,
32
+ null,
33
+ Object,
34
+ Array
35
+ ],
36
+ default: void 0
37
+ },
29
38
  classNames: { default: void 0 }
30
39
  },
31
40
  emits: ["update:modelValue", "complete"],
@@ -1 +1 @@
1
- {"version":3,"file":"InputOTP.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/input-otp/InputOTP.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { PinInputRoot, PinInputInput } from 'reka-ui'\nimport { inputOTPVariants, type InputOTPVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n length?: number\n type?: 'text'\n otp?: boolean\n mask?: boolean\n disabled?: boolean\n placeholder?: string\n modelValue?: string\n defaultValue?: string\n name?: string\n variant?: InputOTPVariants['variant']\n class?: ClassValue\n /** Optional per-slot class overrides */\n classNames?: Partial<{\n base: ClassValue\n group: ClassValue\n slot: ClassValue\n }>\n}>(), {\n length: 6,\n type: 'text',\n otp: true,\n mask: false,\n disabled: false,\n placeholder: '',\n modelValue: undefined,\n defaultValue: undefined,\n name: undefined,\n variant: 'primary',\n class: undefined,\n classNames: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n 'complete': [value: string]\n}>()\n\nconst slotFns = computed(() => inputOTPVariants({ variant: props.variant }))\n\nconst modelValueArray = computed(() =>\n (props.modelValue ?? '').split('')\n)\n\nconst handleUpdate = (arr: string[]) => emit('update:modelValue', arr.join(''))\nconst handleComplete = (arr: string[]) => emit('complete', arr.join(''))\n</script>\n\n<template>\n <PinInputRoot\n :model-value=\"modelValueArray\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :type=\"type\"\n :otp=\"otp\"\n :mask=\"mask\"\n :name=\"name\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n @update:model-value=\"handleUpdate\"\n @complete=\"handleComplete\"\n >\n <div :class=\"composeClassName(slotFns.group(), props.classNames?.group)\">\n <PinInputInput\n v-for=\"i in length\"\n :key=\"i - 1\"\n :index=\"i - 1\"\n :class=\"composeClassName(slotFns.slot(), props.classNames?.slot)\"\n />\n </div>\n </PinInputRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAiCd,MAAM,OAAO;EAKb,MAAM,UAAU,eAAe,iBAAiB,EAAE,SAAS,MAAM,SAAS,CAAC,CAAA;EAE3E,MAAM,kBAAkB,gBACrB,MAAM,cAAc,IAAI,MAAM,GAAE,CACnC;EAEA,MAAM,gBAAgB,QAAkB,KAAK,qBAAqB,IAAI,KAAK,GAAG,CAAA;EAC9E,MAAM,kBAAkB,QAAkB,KAAK,YAAY,IAAI,KAAK,GAAG,CAAA;;uBAIrE,YAoBe,MAAA,aAAA,EAAA;IAnBZ,eAAa,gBAAA;IACb,UAAU,QAAA;IACV,aAAa,QAAA;IACb,MAAM,QAAA;IACN,KAAK,QAAA;IACL,MAAM,QAAA;IACN,MAAM,QAAA;IACN,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,uBAAoB;IACpB,YAAU;;2BASL,CAPN,mBAOM,OAAA,EAPA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACpE,mBAKE,UAAA,MAAA,WAJY,QAAA,SAAL,MAAC;yBADV,YAKE,MAAA,cAAA,EAAA;MAHC,KAAK,IAAC;MACN,OAAO,IAAC;MACR,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA"}
1
+ {"version":3,"file":"InputOTP.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/input-otp/InputOTP.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { PinInputRoot, PinInputInput } from 'reka-ui'\nimport { inputOTPVariants, type InputOTPVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n length?: number\n type?: 'text'\n otp?: boolean\n mask?: boolean\n disabled?: boolean\n placeholder?: string\n modelValue?: string\n defaultValue?: string\n name?: string\n variant?: InputOTPVariants['variant']\n class?: ClassValue\n /** Optional per-slot class overrides */\n classNames?: Partial<{\n base: ClassValue\n group: ClassValue\n slot: ClassValue\n }>\n}>(), {\n length: 6,\n type: 'text',\n otp: true,\n mask: false,\n disabled: false,\n placeholder: '',\n modelValue: undefined,\n defaultValue: undefined,\n name: undefined,\n variant: 'primary',\n class: undefined,\n classNames: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n 'complete': [value: string]\n}>()\n\nconst slotFns = computed(() => inputOTPVariants({ variant: props.variant }))\n\nconst modelValueArray = computed(() =>\n (props.modelValue ?? '').split('')\n)\n\nconst handleUpdate = (arr: string[]) => emit('update:modelValue', arr.join(''))\nconst handleComplete = (arr: string[]) => emit('complete', arr.join(''))\n</script>\n\n<template>\n <PinInputRoot\n :model-value=\"modelValueArray\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :type=\"type\"\n :otp=\"otp\"\n :mask=\"mask\"\n :name=\"name\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n @update:model-value=\"handleUpdate\"\n @complete=\"handleComplete\"\n >\n <div :class=\"composeClassName(slotFns.group(), props.classNames?.group)\">\n <PinInputInput\n v-for=\"i in length\"\n :key=\"i - 1\"\n :index=\"i - 1\"\n :class=\"composeClassName(slotFns.slot(), props.classNames?.slot)\"\n />\n </div>\n </PinInputRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAiCd,MAAM,OAAO;EAKb,MAAM,UAAU,eAAe,iBAAiB,EAAE,SAAS,MAAM,SAAS,CAAC,CAAA;EAE3E,MAAM,kBAAkB,gBACrB,MAAM,cAAc,IAAI,MAAM,GAAE,CACnC;EAEA,MAAM,gBAAgB,QAAkB,KAAK,qBAAqB,IAAI,KAAK,GAAG,CAAA;EAC9E,MAAM,kBAAkB,QAAkB,KAAK,YAAY,IAAI,KAAK,GAAG,CAAA;;uBAIrE,YAoBe,MAAA,aAAA,EAAA;IAnBZ,eAAa,gBAAA;IACb,UAAU,QAAA;IACV,aAAa,QAAA;IACb,MAAM,QAAA;IACN,KAAK,QAAA;IACL,MAAM,QAAA;IACN,MAAM,QAAA;IACN,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,uBAAoB;IACpB,YAAU;;2BASL,CAPN,mBAOM,OAAA,EAPA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACpE,mBAKE,UAAA,MAAA,WAJY,QAAA,SAAL,MAAC;yBADV,YAKE,MAAA,cAAA,EAAA;MAHC,KAAK,IAAC;MACN,OAAO,IAAC;MACR,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA"}
@@ -6,7 +6,13 @@ var Kbd_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComp
6
6
  __name: "Kbd",
7
7
  props: {
8
8
  variant: { default: "default" },
9
- class: {},
9
+ class: { type: [
10
+ String,
11
+ Boolean,
12
+ null,
13
+ Object,
14
+ Array
15
+ ] },
10
16
  classNames: {}
11
17
  },
12
18
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Kbd.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/kbd/Kbd.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { kbdVariants, type KbdVariants } from \"@auronui/styles\";\nimport { composeClassName , type ClassValue} from \"../../utils/composeClassName\";\n\nconst props = withDefaults(\n defineProps<{\n variant?: KbdVariants[\"variant\"];\n class?: ClassValue;\n /** Override classes on individual slots */\n classNames?: Partial<{\n base: ClassValue;\n abbr: ClassValue;\n content: ClassValue;\n }>;\n }>(),\n {\n variant: \"default\",\n }\n);\n\nconst slotFns = computed(() => kbdVariants({ variant: props.variant }));\n</script>\n\n<template>\n <kbd :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\">\n <abbr\n v-if=\"$slots.abbr\"\n :class=\"composeClassName(slotFns.abbr(), props.classNames?.abbr)\"\n >\n <slot name=\"abbr\" />\n </abbr>\n <span :class=\"composeClassName(slotFns.content(), props.classNames?.content)\">\n <slot />\n </span>\n </kbd>\n</template>\n"],"mappings":";;;;;;;;;;;;EAKA,MAAM,QAAQ;EAgBd,MAAM,UAAU,eAAe,YAAY,EAAE,SAAS,MAAM,SAAS,CAAC,CAAC;;uBAIrE,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA,EAAA,EAAA,CAEvEA,KAAAA,OAAO,QAAA,WAAA,EADf,mBAKO,QAAA;;IAHJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;OAE/D,WAAoB,KAAA,QAAA,OAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,EAEtB,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA,EAAA,EAAA,CACzE,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"Kbd.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/kbd/Kbd.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { kbdVariants, type KbdVariants } from \"@auronui/styles\";\nimport { composeClassName , type ClassValue} from \"../../utils/composeClassName\";\n\nconst props = withDefaults(\n defineProps<{\n variant?: KbdVariants[\"variant\"];\n class?: ClassValue;\n /** Override classes on individual slots */\n classNames?: Partial<{\n base: ClassValue;\n abbr: ClassValue;\n content: ClassValue;\n }>;\n }>(),\n {\n variant: \"default\",\n }\n);\n\nconst slotFns = computed(() => kbdVariants({ variant: props.variant }));\n</script>\n\n<template>\n <kbd :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\">\n <abbr\n v-if=\"$slots.abbr\"\n :class=\"composeClassName(slotFns.abbr(), props.classNames?.abbr)\"\n >\n <slot name=\"abbr\" />\n </abbr>\n <span :class=\"composeClassName(slotFns.content(), props.classNames?.content)\">\n <slot />\n </span>\n </kbd>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAKA,MAAM,QAAQ;EAgBd,MAAM,UAAU,eAAe,YAAY,EAAE,SAAS,MAAM,SAAS,CAAC,CAAC;;uBAIrE,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA,EAAA,EAAA,CAEvEA,KAAAA,OAAO,QAAA,WAAA,EADf,mBAKO,QAAA;;IAHJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;OAE/D,WAAoB,KAAA,QAAA,OAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,EAEtB,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA,EAAA,EAAA,CACzE,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA"}
@@ -20,7 +20,13 @@ var Link_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCom
20
20
  },
21
21
  color: {},
22
22
  underline: {},
23
- class: {},
23
+ class: { type: [
24
+ String,
25
+ Boolean,
26
+ null,
27
+ Object,
28
+ Array
29
+ ] },
24
30
  classNames: {}
25
31
  },
26
32
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Link.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../src/components/link/Link.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { linkVariants, type LinkVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n as?: string | object\n href?: string\n target?: string\n rel?: string\n isExternal?: boolean\n disabled?: boolean\n color?: LinkVariants['color']\n underline?: LinkVariants['underline']\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n base: ClassValue\n icon: ClassValue\n }>\n}>(), {\n as: 'a',\n isExternal: false,\n disabled: false,\n})\n\nconst slotFns = computed(() => linkVariants({\n color: props.color,\n underline: props.underline,\n}))\n\n// isExternal auto-applies target + rel (D-19, T-02-EXT)\n// Consumer can override by passing explicit target/rel props\nconst resolvedTarget = computed(() => {\n if (props.target) return props.target\n if (props.isExternal) return '_blank'\n return undefined\n})\n\nconst resolvedRel = computed(() => {\n if (props.rel) return props.rel\n if (props.isExternal) return 'noopener noreferrer'\n return undefined\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :href=\"props.href\"\n :target=\"resolvedTarget\"\n :rel=\"resolvedRel\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :aria-disabled=\"props.disabled || undefined\"\n v-bind=\"$attrs\"\n >\n <slot />\n <!-- External link indicator (D-19): inline SVG glyph, 12x12, aria-hidden -->\n <span\n v-if=\"props.isExternal\"\n :class=\"composeClassName(slotFns.icon(), props.classNames?.icon)\"\n aria-hidden=\"true\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line\n x1=\"10\"\n y1=\"14\"\n x2=\"21\"\n y2=\"3\"\n />\n </svg>\n </span>\n </Primitive>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAqBd,MAAM,UAAU,eAAe,aAAa;GAC1C,OAAO,MAAM;GACb,WAAW,MAAM;GAClB,CAAC,CAAA;EAIF,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,OAAQ,QAAO,MAAM;AAC/B,OAAI,MAAM,WAAY,QAAO;IAE9B;EAED,MAAM,cAAc,eAAe;AACjC,OAAI,MAAM,IAAK,QAAO,MAAM;AAC5B,OAAI,MAAM,WAAY,QAAO;IAE9B;;uBAIC,YAuCY,MAAA,UAAA,EAvCZ,WAuCY;IAtCT,IAAI,MAAM;IACV,MAAM,MAAM;IACZ,QAAQ,eAAA;IACR,KAAK,YAAA;IACL,OAAO,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI;IAC3E,iBAAe,MAAM,YAAY,KAAA;MAC1BA,KAAAA,OAAM,EAAA;2BAEN,CAAR,WAAQ,KAAA,QAAA,UAAA,EAGA,MAAM,cAAA,WAAA,EADd,mBA2BO,QAAA;;KAzBJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;KAC/D,eAAY;sCAEZ,mBAqBM,OAAA;KApBJ,OAAM;KACN,OAAM;KACN,QAAO;KACP,SAAQ;KACR,MAAK;KACL,QAAO;KACP,gBAAa;KACb,kBAAe;KACf,mBAAgB;KAChB,eAAY;KACZ,WAAU;;KAEV,mBAAqE,QAAA,EAA/D,GAAE,4DAA0D,CAAA;KAClE,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA;KACjC,mBAKE,QAAA;MAJA,IAAG;MACH,IAAG;MACH,IAAG;MACH,IAAG"}
1
+ {"version":3,"file":"Link.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../src/components/link/Link.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { linkVariants, type LinkVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n as?: string | object\n href?: string\n target?: string\n rel?: string\n isExternal?: boolean\n disabled?: boolean\n color?: LinkVariants['color']\n underline?: LinkVariants['underline']\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n base: ClassValue\n icon: ClassValue\n }>\n}>(), {\n as: 'a',\n isExternal: false,\n disabled: false,\n})\n\nconst slotFns = computed(() => linkVariants({\n color: props.color,\n underline: props.underline,\n}))\n\n// isExternal auto-applies target + rel (D-19, T-02-EXT)\n// Consumer can override by passing explicit target/rel props\nconst resolvedTarget = computed(() => {\n if (props.target) return props.target\n if (props.isExternal) return '_blank'\n return undefined\n})\n\nconst resolvedRel = computed(() => {\n if (props.rel) return props.rel\n if (props.isExternal) return 'noopener noreferrer'\n return undefined\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :href=\"props.href\"\n :target=\"resolvedTarget\"\n :rel=\"resolvedRel\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :aria-disabled=\"props.disabled || undefined\"\n v-bind=\"$attrs\"\n >\n <slot />\n <!-- External link indicator (D-19): inline SVG glyph, 12x12, aria-hidden -->\n <span\n v-if=\"props.isExternal\"\n :class=\"composeClassName(slotFns.icon(), props.classNames?.icon)\"\n aria-hidden=\"true\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line\n x1=\"10\"\n y1=\"14\"\n x2=\"21\"\n y2=\"3\"\n />\n </svg>\n </span>\n </Primitive>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAqBd,MAAM,UAAU,eAAe,aAAa;GAC1C,OAAO,MAAM;GACb,WAAW,MAAM;GAClB,CAAC,CAAA;EAIF,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,OAAQ,QAAO,MAAM;AAC/B,OAAI,MAAM,WAAY,QAAO;IAE9B;EAED,MAAM,cAAc,eAAe;AACjC,OAAI,MAAM,IAAK,QAAO,MAAM;AAC5B,OAAI,MAAM,WAAY,QAAO;IAE9B;;uBAIC,YAuCY,MAAA,UAAA,EAvCZ,WAuCY;IAtCT,IAAI,MAAM;IACV,MAAM,MAAM;IACZ,QAAQ,eAAA;IACR,KAAK,YAAA;IACL,OAAO,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI;IAC3E,iBAAe,MAAM,YAAY,KAAA;MAC1BA,KAAAA,OAAM,EAAA;2BAEN,CAAR,WAAQ,KAAA,QAAA,UAAA,EAGA,MAAM,cAAA,WAAA,EADd,mBA2BO,QAAA;;KAzBJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;KAC/D,eAAY;sCAEZ,mBAqBM,OAAA;KApBJ,OAAM;KACN,OAAM;KACN,QAAO;KACP,SAAQ;KACR,MAAK;KACL,QAAO;KACP,gBAAa;KACb,kBAAe;KACf,mBAAgB;KAChB,eAAY;KACZ,WAAU;;KAEV,mBAAqE,QAAA,EAA/D,GAAE,4DAA0D,CAAA;KAClE,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA;KACjC,mBAKE,QAAA;MAJA,IAAG;MACH,IAAG;MACH,IAAG;MACH,IAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListBox.js","names":[],"sources":["../../../src/components/list-box/ListBox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, useAttrs } from 'vue'\nimport { ListboxRoot, ListboxContent } from 'reka-ui'\nimport { listboxVariants, type ListBoxVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useListBoxProvide } from './ListBox.context'\n\n// Disable Vue attribute fallthrough — we manually forward ARIA attrs to ListboxContent\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n modelValue?: string | string[]\n defaultValue?: string | string[]\n selectionMode?: 'single' | 'multiple'\n variant?: ListBoxVariants['variant']\n isDisabled?: boolean\n class?: ClassValue\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n */\n classNames?: Partial<{\n base: ClassValue\n }>\n}>(), {\n modelValue: undefined,\n defaultValue: undefined,\n selectionMode: 'single',\n variant: 'default',\n isDisabled: false,\n class: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | undefined]\n}>()\n\nconst attrs = useAttrs()\n\n// Provide context for ListBoxItem and ListBoxSection children\nuseListBoxProvide({\n variant: toRef(props, 'variant'),\n itemVariant: toRef(props, 'variant'),\n isDisabled: toRef(props, 'isDisabled'),\n})\n\nconst slotFns = computed(() =>\n listboxVariants({ variant: props.variant })\n)\n</script>\n\n<template>\n <!-- ListboxRoot is an invisible wrapper that manages state; ListboxContent carries role=\"listbox\" -->\n <!-- We forward attrs (aria-label, aria-labelledby, etc.) to ListboxContent, not the root -->\n <ListboxRoot\n :model-value=\"props.modelValue == null ? undefined : ([] as string[]).concat(props.modelValue)\"\n :default-value=\"props.defaultValue == null ? undefined : ([] as string[]).concat(props.defaultValue)\"\n :multiple=\"props.selectionMode === 'multiple'\"\n :selection-behavior=\"props.selectionMode === 'multiple' ? 'toggle' : 'replace'\"\n :disabled=\"props.isDisabled\"\n @update:model-value=\"emit('update:modelValue', props.selectionMode === 'single' ? (Array.isArray($event) ? ($event as string[])[0] : $event as string) : $event as string[])\"\n >\n <ListboxContent\n v-bind=\"attrs\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n >\n <slot />\n </ListboxContent>\n </ListboxRoot>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ListBox.js","names":[],"sources":["../../../src/components/list-box/ListBox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, useAttrs } from 'vue'\nimport { ListboxRoot, ListboxContent } from 'reka-ui'\nimport { listboxVariants, type ListBoxVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useListBoxProvide } from './ListBox.context'\n\n// Disable Vue attribute fallthrough — we manually forward ARIA attrs to ListboxContent\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n modelValue?: string | string[]\n defaultValue?: string | string[]\n selectionMode?: 'single' | 'multiple'\n variant?: ListBoxVariants['variant']\n isDisabled?: boolean\n class?: ClassValue\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n */\n classNames?: Partial<{\n base: ClassValue\n }>\n}>(), {\n modelValue: undefined,\n defaultValue: undefined,\n selectionMode: 'single',\n variant: 'default',\n isDisabled: false,\n class: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | undefined]\n}>()\n\nconst attrs = useAttrs()\n\n// Provide context for ListBoxItem and ListBoxSection children\nuseListBoxProvide({\n variant: toRef(props, 'variant'),\n itemVariant: toRef(props, 'variant'),\n isDisabled: toRef(props, 'isDisabled'),\n})\n\nconst slotFns = computed(() =>\n listboxVariants({ variant: props.variant })\n)\n</script>\n\n<template>\n <!-- ListboxRoot is an invisible wrapper that manages state; ListboxContent carries role=\"listbox\" -->\n <!-- We forward attrs (aria-label, aria-labelledby, etc.) to ListboxContent, not the root -->\n <ListboxRoot\n :model-value=\"props.modelValue == null ? undefined : ([] as string[]).concat(props.modelValue)\"\n :default-value=\"props.defaultValue == null ? undefined : ([] as string[]).concat(props.defaultValue)\"\n :multiple=\"props.selectionMode === 'multiple'\"\n :selection-behavior=\"props.selectionMode === 'multiple' ? 'toggle' : 'replace'\"\n :disabled=\"props.isDisabled\"\n @update:model-value=\"emit('update:modelValue', props.selectionMode === 'single' ? (Array.isArray($event) ? ($event as string[])[0] : $event as string) : $event as string[])\"\n >\n <ListboxContent\n v-bind=\"attrs\"\n :class=\"composeClassName(slotFns, props.class, props.classNames?.base)\"\n >\n <slot />\n </ListboxContent>\n </ListboxRoot>\n</template>\n"],"mappings":""}
@@ -16,7 +16,16 @@ var ListBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
16
16
  type: Boolean,
17
17
  default: false
18
18
  },
19
- class: { default: void 0 },
19
+ class: {
20
+ type: [
21
+ String,
22
+ Boolean,
23
+ null,
24
+ Object,
25
+ Array
26
+ ],
27
+ default: void 0
28
+ },
20
29
  classNames: {}
21
30
  },
22
31
  emits: ["update:modelValue"],
@@ -39,7 +48,7 @@ var ListBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
39
48
  disabled: props.isDisabled,
40
49
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("update:modelValue", props.selectionMode === "single" ? Array.isArray($event) ? $event[0] : $event : $event))
41
50
  }, {
42
- default: withCtx(() => [createVNode(unref(ListboxContent), mergeProps(unref(attrs), { class: unref(composeClassName)(slotFns.value.base(), props.class, props.classNames?.base) }), {
51
+ default: withCtx(() => [createVNode(unref(ListboxContent), mergeProps(unref(attrs), { class: unref(composeClassName)(slotFns.value, props.class, props.classNames?.base) }), {
43
52
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
44
53
  _: 3
45
54
  }, 16, ["class"])]),
@@ -1 +1 @@
1
- {"version":3,"file":"ListBox.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/list-box/ListBox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, useAttrs } from 'vue'\nimport { ListboxRoot, ListboxContent } from 'reka-ui'\nimport { listboxVariants, type ListBoxVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useListBoxProvide } from './ListBox.context'\n\n// Disable Vue attribute fallthrough — we manually forward ARIA attrs to ListboxContent\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n modelValue?: string | string[]\n defaultValue?: string | string[]\n selectionMode?: 'single' | 'multiple'\n variant?: ListBoxVariants['variant']\n isDisabled?: boolean\n class?: ClassValue\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n */\n classNames?: Partial<{\n base: ClassValue\n }>\n}>(), {\n modelValue: undefined,\n defaultValue: undefined,\n selectionMode: 'single',\n variant: 'default',\n isDisabled: false,\n class: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | undefined]\n}>()\n\nconst attrs = useAttrs()\n\n// Provide context for ListBoxItem and ListBoxSection children\nuseListBoxProvide({\n variant: toRef(props, 'variant'),\n itemVariant: toRef(props, 'variant'),\n isDisabled: toRef(props, 'isDisabled'),\n})\n\nconst slotFns = computed(() =>\n listboxVariants({ variant: props.variant })\n)\n</script>\n\n<template>\n <!-- ListboxRoot is an invisible wrapper that manages state; ListboxContent carries role=\"listbox\" -->\n <!-- We forward attrs (aria-label, aria-labelledby, etc.) to ListboxContent, not the root -->\n <ListboxRoot\n :model-value=\"props.modelValue == null ? undefined : ([] as string[]).concat(props.modelValue)\"\n :default-value=\"props.defaultValue == null ? undefined : ([] as string[]).concat(props.defaultValue)\"\n :multiple=\"props.selectionMode === 'multiple'\"\n :selection-behavior=\"props.selectionMode === 'multiple' ? 'toggle' : 'replace'\"\n :disabled=\"props.isDisabled\"\n @update:model-value=\"emit('update:modelValue', props.selectionMode === 'single' ? (Array.isArray($event) ? ($event as string[])[0] : $event as string) : $event as string[])\"\n >\n <ListboxContent\n v-bind=\"attrs\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n >\n <slot />\n </ListboxContent>\n </ListboxRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAUA,MAAM,QAAQ;EAuBd,MAAM,OAAO;EAIb,MAAM,QAAQ,UAAS;AAGvB,oBAAkB;GAChB,SAAS,MAAM,OAAO,UAAU;GAChC,aAAa,MAAM,OAAO,UAAU;GACpC,YAAY,MAAM,OAAO,aAAa;GACvC,CAAA;EAED,MAAM,UAAU,eACd,gBAAgB,EAAE,SAAS,MAAM,SAAS,CAAA,CAC5C;;uBAME,YAcc,MAAA,YAAA,EAAA;IAbX,eAAa,MAAM,cAAU,OAAW,KAAA,IAAS,EAAA,CAAoB,OAAO,MAAM,WAAU;IAC5F,iBAAe,MAAM,gBAAY,OAAW,KAAA,IAAS,EAAA,CAAoB,OAAO,MAAM,aAAY;IAClG,UAAU,MAAM,kBAAa;IAC7B,sBAAoB,MAAM,kBAAa,aAAA,WAAA;IACvC,UAAU,MAAM;IAChB,uBAAkB,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,qBAAsB,MAAM,kBAAa,WAAiB,MAAM,QAAQ,OAAM,GAAK,OAAM,KAAmB,SAAoB,OAAM;;2BAO9I,CALjB,YAKiB,MAAA,eAAA,EALjB,WACU,MAIO,MAJF,EAAA,EACZ,OAAO,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,EAAA,CAAA,EAAA;4BAEpE,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ListBox.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/list-box/ListBox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, useAttrs } from 'vue'\nimport { ListboxRoot, ListboxContent } from 'reka-ui'\nimport { listboxVariants, type ListBoxVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useListBoxProvide } from './ListBox.context'\n\n// Disable Vue attribute fallthrough — we manually forward ARIA attrs to ListboxContent\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n modelValue?: string | string[]\n defaultValue?: string | string[]\n selectionMode?: 'single' | 'multiple'\n variant?: ListBoxVariants['variant']\n isDisabled?: boolean\n class?: ClassValue\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n */\n classNames?: Partial<{\n base: ClassValue\n }>\n}>(), {\n modelValue: undefined,\n defaultValue: undefined,\n selectionMode: 'single',\n variant: 'default',\n isDisabled: false,\n class: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | undefined]\n}>()\n\nconst attrs = useAttrs()\n\n// Provide context for ListBoxItem and ListBoxSection children\nuseListBoxProvide({\n variant: toRef(props, 'variant'),\n itemVariant: toRef(props, 'variant'),\n isDisabled: toRef(props, 'isDisabled'),\n})\n\nconst slotFns = computed(() =>\n listboxVariants({ variant: props.variant })\n)\n</script>\n\n<template>\n <!-- ListboxRoot is an invisible wrapper that manages state; ListboxContent carries role=\"listbox\" -->\n <!-- We forward attrs (aria-label, aria-labelledby, etc.) to ListboxContent, not the root -->\n <ListboxRoot\n :model-value=\"props.modelValue == null ? undefined : ([] as string[]).concat(props.modelValue)\"\n :default-value=\"props.defaultValue == null ? undefined : ([] as string[]).concat(props.defaultValue)\"\n :multiple=\"props.selectionMode === 'multiple'\"\n :selection-behavior=\"props.selectionMode === 'multiple' ? 'toggle' : 'replace'\"\n :disabled=\"props.isDisabled\"\n @update:model-value=\"emit('update:modelValue', props.selectionMode === 'single' ? (Array.isArray($event) ? ($event as string[])[0] : $event as string) : $event as string[])\"\n >\n <ListboxContent\n v-bind=\"attrs\"\n :class=\"composeClassName(slotFns, props.class, props.classNames?.base)\"\n >\n <slot />\n </ListboxContent>\n </ListboxRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUA,MAAM,QAAQ;EAuBd,MAAM,OAAO;EAIb,MAAM,QAAQ,UAAS;AAGvB,oBAAkB;GAChB,SAAS,MAAM,OAAO,UAAU;GAChC,aAAa,MAAM,OAAO,UAAU;GACpC,YAAY,MAAM,OAAO,aAAa;GACvC,CAAA;EAED,MAAM,UAAU,eACd,gBAAgB,EAAE,SAAS,MAAM,SAAS,CAAA,CAC5C;;uBAME,YAcc,MAAA,YAAA,EAAA;IAbX,eAAa,MAAM,cAAU,OAAW,KAAA,IAAS,EAAA,CAAoB,OAAO,MAAM,WAAU;IAC5F,iBAAe,MAAM,gBAAY,OAAW,KAAA,IAAS,EAAA,CAAoB,OAAO,MAAM,aAAY;IAClG,UAAU,MAAM,kBAAa;IAC7B,sBAAoB,MAAM,kBAAa,aAAA,WAAA;IACvC,UAAU,MAAM;IAChB,uBAAkB,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,qBAAsB,MAAM,kBAAa,WAAiB,MAAM,QAAQ,OAAM,GAAK,OAAM,KAAmB,SAAoB,OAAM;;2BAO9I,CALjB,YAKiB,MAAA,eAAA,EALjB,WACU,MAIO,MAJF,EAAA,EACZ,OAAO,MAAA,iBAAgB,CAAC,QAAA,OAAS,MAAM,OAAO,MAAM,YAAY,KAAI,EAAA,CAAA,EAAA;4BAE7D,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
@@ -14,7 +14,16 @@ var ListBoxItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
14
14
  default: false
15
15
  },
16
16
  variant: { default: void 0 },
17
- class: { default: void 0 },
17
+ class: {
18
+ type: [
19
+ String,
20
+ Boolean,
21
+ null,
22
+ Object,
23
+ Array
24
+ ],
25
+ default: void 0
26
+ },
18
27
  classNames: { default: void 0 }
19
28
  },
20
29
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"ListBoxItem.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/list-box/ListBoxItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { ListboxItem, ListboxItemIndicator } from 'reka-ui'\nimport { listboxItemVariants, type ListBoxItemVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useListBoxInject } from './ListBox.context'\n\nconst props = withDefaults(defineProps<{\n value: string\n textValue?: string\n isDisabled?: boolean\n variant?: ListBoxItemVariants['variant']\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n item: ClassValue\n indicator: ClassValue\n }>\n}>(), {\n textValue: undefined,\n isDisabled: false,\n variant: undefined,\n class: undefined,\n classNames: undefined,\n})\n\n// Inject context with fallback (standalone usage)\nconst ctx = useListBoxInject({\n variant: ref('default'),\n itemVariant: ref('default'),\n isDisabled: ref(false),\n})\n\nconst finalVariant = computed(() => props.variant ?? ctx.itemVariant.value)\nconst finalDisabled = computed(() => ctx.isDisabled.value || props.isDisabled)\n\nconst slotFns = computed(() =>\n listboxItemVariants({ variant: finalVariant.value as ListBoxItemVariants['variant'] })\n)\n</script>\n\n<template>\n <ListboxItem\n :value=\"props.value\"\n :disabled=\"finalDisabled\"\n :text-value=\"props.textValue ?? props.value\"\n :class=\"composeClassName(slotFns.item(), props.class, props.classNames?.item)\"\n >\n <slot name=\"startContent\" />\n <slot />\n <slot name=\"endContent\" />\n <ListboxItemIndicator :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\">\n <slot name=\"selectedIcon\">\n <!-- Default check icon -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </ListboxItemIndicator>\n </ListboxItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EAoBd,MAAM,MAAM,iBAAiB;GAC3B,SAAS,IAAI,UAAU;GACvB,aAAa,IAAI,UAAU;GAC3B,YAAY,IAAI,MAAM;GACvB,CAAA;EAED,MAAM,eAAe,eAAe,MAAM,WAAW,IAAI,YAAY,MAAK;EAC1E,MAAM,gBAAgB,eAAe,IAAI,WAAW,SAAS,MAAM,WAAU;EAE7E,MAAM,UAAU,eACd,oBAAoB,EAAE,SAAS,aAAa,OAAyC,CAAA,CACvF;;uBAIE,YA6Bc,MAAA,YAAA,EAAA;IA5BX,OAAO,MAAM;IACb,UAAU,cAAA;IACV,cAAY,MAAM,aAAa,MAAM;IACrC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;;2BAEhD;KAA5B,WAA4B,KAAA,QAAA,eAAA;KAC5B,WAAQ,KAAA,QAAA,UAAA;KACR,WAA0B,KAAA,QAAA,aAAA;KAC1B,YAmBuB,MAAA,qBAAA,EAAA,EAnBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA,EAAA,EAAA;6BAkBtF,CAjBP,WAiBO,KAAA,QAAA,gBAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAfL,mBAcM,OAAA;OAbJ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;OACV,eAAY;UAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ListBoxItem.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/list-box/ListBoxItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { ListboxItem, ListboxItemIndicator } from 'reka-ui'\nimport { listboxItemVariants, type ListBoxItemVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useListBoxInject } from './ListBox.context'\n\nconst props = withDefaults(defineProps<{\n value: string\n textValue?: string\n isDisabled?: boolean\n variant?: ListBoxItemVariants['variant']\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n item: ClassValue\n indicator: ClassValue\n }>\n}>(), {\n textValue: undefined,\n isDisabled: false,\n variant: undefined,\n class: undefined,\n classNames: undefined,\n})\n\n// Inject context with fallback (standalone usage)\nconst ctx = useListBoxInject({\n variant: ref('default'),\n itemVariant: ref('default'),\n isDisabled: ref(false),\n})\n\nconst finalVariant = computed(() => props.variant ?? ctx.itemVariant.value)\nconst finalDisabled = computed(() => ctx.isDisabled.value || props.isDisabled)\n\nconst slotFns = computed(() =>\n listboxItemVariants({ variant: finalVariant.value as ListBoxItemVariants['variant'] })\n)\n</script>\n\n<template>\n <ListboxItem\n :value=\"props.value\"\n :disabled=\"finalDisabled\"\n :text-value=\"props.textValue ?? props.value\"\n :class=\"composeClassName(slotFns.item(), props.class, props.classNames?.item)\"\n >\n <slot name=\"startContent\" />\n <slot />\n <slot name=\"endContent\" />\n <ListboxItemIndicator :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\">\n <slot name=\"selectedIcon\">\n <!-- Default check icon -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </ListboxItemIndicator>\n </ListboxItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EAoBd,MAAM,MAAM,iBAAiB;GAC3B,SAAS,IAAI,UAAU;GACvB,aAAa,IAAI,UAAU;GAC3B,YAAY,IAAI,MAAM;GACvB,CAAA;EAED,MAAM,eAAe,eAAe,MAAM,WAAW,IAAI,YAAY,MAAK;EAC1E,MAAM,gBAAgB,eAAe,IAAI,WAAW,SAAS,MAAM,WAAU;EAE7E,MAAM,UAAU,eACd,oBAAoB,EAAE,SAAS,aAAa,OAAyC,CAAA,CACvF;;uBAIE,YA6Bc,MAAA,YAAA,EAAA;IA5BX,OAAO,MAAM;IACb,UAAU,cAAA;IACV,cAAY,MAAM,aAAa,MAAM;IACrC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;;2BAEhD;KAA5B,WAA4B,KAAA,QAAA,eAAA;KAC5B,WAAQ,KAAA,QAAA,UAAA;KACR,WAA0B,KAAA,QAAA,aAAA;KAC1B,YAmBuB,MAAA,qBAAA,EAAA,EAnBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA,EAAA,EAAA;6BAkBtF,CAjBP,WAiBO,KAAA,QAAA,gBAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAfL,mBAcM,OAAA;OAbJ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;OACV,eAAY;UAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA"}
@@ -24,7 +24,13 @@ var Meter_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
24
24
  formatOptions: {},
25
25
  size: {},
26
26
  color: {},
27
- class: {},
27
+ class: { type: [
28
+ String,
29
+ Boolean,
30
+ null,
31
+ Object,
32
+ Array
33
+ ] },
28
34
  classNames: {}
29
35
  },
30
36
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Meter.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/meter/Meter.vue"],"sourcesContent":["<!--\n Meter — A quantity indicator within a known range.\n\n Implementation note: Although HTML provides a native <meter> element, it is\n notoriously difficult to style cross-browser and does NOT reliably expose the\n ARIA `meter` role to all assistive technologies. This component therefore uses\n a <div role=\"meter\"> with explicit aria-valuenow / aria-valuemin / aria-valuemax\n attributes, matching React's approach (React Aria's useMeter → div-based).\n This is fully compliant with the ARIA 1.1 specification.\n-->\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { meterVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'accent' | 'success' | 'warning' | 'danger'\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n base: ClassValue\n label: ClassValue\n output: ClassValue\n track: ClassValue\n fill: ClassValue\n }>\n}>(), {\n value: 0,\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n})\n\nconst percentage = computed(() => {\n const raw = ((props.value - props.minValue) / (props.maxValue - props.minValue)) * 100\n return Math.min(100, Math.max(0, raw))\n})\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return `${Math.round(percentage.value)}%`\n})\n\nconst slotFns = computed(() =>\n meterVariants({\n size: props.size,\n color: props.color,\n })\n)\n</script>\n\n<template>\n <div :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\">\n <span\n v-if=\"label\"\n data-slot=\"label\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}</span>\n <output\n v-if=\"showValueLabel\"\n :class=\"composeClassName(slotFns.output(), props.classNames?.output)\"\n >{{ formattedValue }}</output>\n <div\n role=\"meter\"\n :aria-valuenow=\"value\"\n :aria-valuemin=\"minValue\"\n :aria-valuemax=\"maxValue\"\n :aria-valuetext=\"formattedValue\"\n :aria-label=\"label || 'Meter'\"\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n >\n <div\n :class=\"composeClassName(slotFns.fill(), props.classNames?.fill)\"\n :style=\"{ width: percentage + '%' }\"\n />\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA,MAAM,QAAQ;EA0Bd,MAAM,aAAa,eAAe;GAChC,MAAM,OAAQ,MAAM,QAAQ,MAAM,aAAa,MAAM,WAAW,MAAM,YAAa;AACnF,UAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;IACtC;EAED,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,WAAY,QAAO,MAAM;AACnC,OAAI,MAAM,cACR,QAAO,IAAI,KAAK,aAAa,KAAA,GAAW,MAAM,cAAc,CAAC,OAAO,MAAM,MAAK;AAEjF,UAAO,GAAG,KAAK,MAAM,WAAW,MAAM,CAAC;IACxC;EAED,MAAM,UAAU,eACd,cAAc;GACZ,MAAM,MAAM;GACZ,OAAO,MAAM;GACd,CAAA,CACH;;uBAIE,mBAwBM,OAAA,EAxBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA,EAAA,EAAA;IAEvE,QAAA,SAAA,WAAA,EADR,mBAImB,QAAA;;KAFjB,aAAU;KACT,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;uBAC/D,QAAA,MAAK,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;IAED,QAAA,kBAAA,WAAA,EADR,mBAG8B,UAAA;;KAD3B,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,QAAM,EAAI,MAAM,YAAY,OAAM,CAAA;uBACjE,eAAA,MAAc,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;IAClB,mBAaM,OAAA;KAZJ,MAAK;KACJ,iBAAe,QAAA;KACf,iBAAe,QAAA;KACf,iBAAe,QAAA;KACf,kBAAgB,eAAA;KAChB,cAAY,QAAA,SAAK;KACjB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;QAEjE,mBAGE,OAAA;KAFC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;KAC9D,OAAK,eAAA,EAAA,OAAW,WAAA,QAAU,KAAA,CAAA"}
1
+ {"version":3,"file":"Meter.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/meter/Meter.vue"],"sourcesContent":["<!--\n Meter — A quantity indicator within a known range.\n\n Implementation note: Although HTML provides a native <meter> element, it is\n notoriously difficult to style cross-browser and does NOT reliably expose the\n ARIA `meter` role to all assistive technologies. This component therefore uses\n a <div role=\"meter\"> with explicit aria-valuenow / aria-valuemin / aria-valuemax\n attributes, matching React's approach (React Aria's useMeter → div-based).\n This is fully compliant with the ARIA 1.1 specification.\n-->\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { meterVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'accent' | 'success' | 'warning' | 'danger'\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n base: ClassValue\n label: ClassValue\n output: ClassValue\n track: ClassValue\n fill: ClassValue\n }>\n}>(), {\n value: 0,\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n})\n\nconst percentage = computed(() => {\n const raw = ((props.value - props.minValue) / (props.maxValue - props.minValue)) * 100\n return Math.min(100, Math.max(0, raw))\n})\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return `${Math.round(percentage.value)}%`\n})\n\nconst slotFns = computed(() =>\n meterVariants({\n size: props.size,\n color: props.color,\n })\n)\n</script>\n\n<template>\n <div :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\">\n <span\n v-if=\"label\"\n data-slot=\"label\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}</span>\n <output\n v-if=\"showValueLabel\"\n :class=\"composeClassName(slotFns.output(), props.classNames?.output)\"\n >{{ formattedValue }}</output>\n <div\n role=\"meter\"\n :aria-valuenow=\"value\"\n :aria-valuemin=\"minValue\"\n :aria-valuemax=\"maxValue\"\n :aria-valuetext=\"formattedValue\"\n :aria-label=\"label || 'Meter'\"\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n >\n <div\n :class=\"composeClassName(slotFns.fill(), props.classNames?.fill)\"\n :style=\"{ width: percentage + '%' }\"\n />\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA,MAAM,QAAQ;EA0Bd,MAAM,aAAa,eAAe;GAChC,MAAM,OAAQ,MAAM,QAAQ,MAAM,aAAa,MAAM,WAAW,MAAM,YAAa;AACnF,UAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;IACtC;EAED,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,WAAY,QAAO,MAAM;AACnC,OAAI,MAAM,cACR,QAAO,IAAI,KAAK,aAAa,KAAA,GAAW,MAAM,cAAc,CAAC,OAAO,MAAM,MAAK;AAEjF,UAAO,GAAG,KAAK,MAAM,WAAW,MAAM,CAAC;IACxC;EAED,MAAM,UAAU,eACd,cAAc;GACZ,MAAM,MAAM;GACZ,OAAO,MAAM;GACd,CAAA,CACH;;uBAIE,mBAwBM,OAAA,EAxBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA,EAAA,EAAA;IAEvE,QAAA,SAAA,WAAA,EADR,mBAImB,QAAA;;KAFjB,aAAU;KACT,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;uBAC/D,QAAA,MAAK,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;IAED,QAAA,kBAAA,WAAA,EADR,mBAG8B,UAAA;;KAD3B,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,QAAM,EAAI,MAAM,YAAY,OAAM,CAAA;uBACjE,eAAA,MAAc,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;IAClB,mBAaM,OAAA;KAZJ,MAAK;KACJ,iBAAe,QAAA;KACf,iBAAe,QAAA;KACf,iBAAe,QAAA;KACf,kBAAgB,eAAA;KAChB,cAAY,QAAA,SAAK;KACjB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;QAEjE,mBAGE,OAAA;KAFC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;KAC9D,OAAK,eAAA,EAAA,OAAW,WAAA,QAAU,KAAA,CAAA"}
@@ -36,7 +36,13 @@ var NumberField_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
36
36
  placeholder: {},
37
37
  label: { default: void 0 },
38
38
  ariaLabel: { default: void 0 },
39
- class: {},
39
+ class: { type: [
40
+ String,
41
+ Boolean,
42
+ null,
43
+ Object,
44
+ Array
45
+ ] },
40
46
  classNames: {}
41
47
  }, {
42
48
  "modelValue": {},
@@ -1 +1 @@
1
- {"version":3,"file":"NumberField.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/number-field/NumberField.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useId } from 'vue'\nimport {\n NumberFieldRoot,\n NumberFieldInput,\n NumberFieldIncrement,\n NumberFieldDecrement,\n} from 'reka-ui'\nimport { numberFieldVariants, type NumberFieldVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n variant?: NumberFieldVariants['variant']\n size?: NumberFieldVariants['size']\n color?: NumberFieldVariants['color']\n fullWidth?: boolean\n isInvalid?: boolean\n isDisabled?: boolean\n isReadonly?: boolean\n min?: number\n max?: number\n step?: number\n formatOptions?: Intl.NumberFormatOptions\n locale?: string\n name?: string\n id?: string\n placeholder?: string\n label?: string\n // camelCase prop; in templates users write aria-label=\"…\" (Vue auto-converts)\n ariaLabel?: string\n class?: ClassValue\n /** Per-slot classNames override object for custom styling */\n classNames?: Partial<{\n base: ClassValue\n group: ClassValue\n decrementButton: ClassValue\n input: ClassValue\n incrementButton: ClassValue\n }>\n}>(), {\n variant: 'flat',\n size: 'md',\n color: 'default',\n fullWidth: false,\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n step: 1,\n min: undefined,\n max: undefined,\n formatOptions: undefined,\n locale: undefined,\n label: undefined,\n ariaLabel: undefined,\n})\n\nconst modelValue = defineModel<number | undefined>()\n\nconst slotFns = computed(() =>\n numberFieldVariants({\n variant: props.variant,\n size: props.size,\n color: props.color,\n fullWidth: props.fullWidth,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isReadonly: props.isReadonly,\n })\n)\n\n// Generate a stable id for the input element.\n// NumberFieldRoot forwards this id to the underlying <input> via context.\n// We use this to wire a <label for=\"inputId\"> which is axe-safe regardless\n// of how Reka UI handles attr forwarding through its Primitive component.\nconst generatedInputId = useId()\n// Use caller-provided id if given, otherwise our generated id.\nconst resolvedInputId = computed(() => props.id ?? generatedInputId)\n\n// Whether to show a label element (visible or sr-only).\nconst hasLabel = computed(() => !!(props.label || props.ariaLabel))\n// When only ariaLabel is given (no visible label), the label is sr-only.\nconst isLabelVisible = computed(() => !!props.label)\n</script>\n\n<template>\n <NumberFieldRoot\n :id=\"resolvedInputId\"\n v-model=\"modelValue\"\n :min=\"props.min\"\n :max=\"props.max\"\n :step=\"props.step\"\n :disabled=\"props.isDisabled || undefined\"\n :readonly=\"props.isReadonly || undefined\"\n :format-options=\"props.formatOptions\"\n :locale=\"props.locale\"\n :name=\"props.name\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-invalid=\"props.isInvalid || undefined\"\n :data-disabled=\"props.isDisabled || undefined\"\n :data-readonly=\"props.isReadonly || undefined\"\n >\n <!--\n Label element — always rendered when `label` or `aria-label` is provided.\n When only `aria-label` is given (no visible label) the element is sr-only.\n Uses label[for=resolvedInputId] to wire to the Reka UI input element —\n this is axe-safe because NumberFieldRoot forwards its `id` prop directly\n to the underlying <input> via context, making label[for] reliable even\n though custom attrs passed to NumberFieldInput don't reach the DOM input.\n -->\n <label\n v-if=\"hasLabel\"\n :for=\"resolvedInputId\"\n :class=\"isLabelVisible ? undefined : 'sr-only'\"\n data-slot=\"label\"\n >{{ props.label || props.ariaLabel }}</label>\n\n <!-- Number field control group -->\n <div\n :class=\"composeClassName(slotFns.group(), props.classNames?.group)\"\n data-slot=\"group\"\n >\n <NumberFieldDecrement :class=\"composeClassName(slotFns.decrementButton(), props.classNames?.decrementButton)\">\n <svg\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"number-field-decrement-button-icon\"\n >\n <path d=\"M5 12h14\" />\n </svg>\n </NumberFieldDecrement>\n\n <NumberFieldInput\n :class=\"composeClassName(slotFns.input(), props.classNames?.input)\"\n :placeholder=\"props.placeholder\"\n />\n\n <NumberFieldIncrement :class=\"composeClassName(slotFns.incrementButton(), props.classNames?.incrementButton)\">\n <svg\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"number-field-increment-button-icon\"\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n </NumberFieldIncrement>\n </div>\n </NumberFieldRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYA,MAAM,QAAQ;EA6Cd,MAAM,aAAa,SAA+B,SAAA,aAAC;EAEnD,MAAM,UAAU,eACd,oBAAoB;GAClB,SAAS,MAAM;GACf,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,WAAW,MAAM;GACjB,WAAW,MAAM;GACjB,YAAY,MAAM;GAClB,YAAY,MAAM;GACnB,CAAA,CACH;EAMA,MAAM,mBAAmB,OAAM;EAE/B,MAAM,kBAAkB,eAAe,MAAM,MAAM,iBAAgB;EAGnE,MAAM,WAAW,eAAe,CAAC,EAAE,MAAM,SAAS,MAAM,WAAU;EAElE,MAAM,iBAAiB,eAAe,CAAC,CAAC,MAAM,MAAK;;uBAIjD,YA8EkB,MAAA,gBAAA,EAAA;IA7Ef,IAAI,gBAAA;gBACI,WAAA;4EAAU,QAAA;IAClB,KAAK,MAAM;IACX,KAAK,MAAM;IACX,MAAM,MAAM;IACZ,UAAU,MAAM,cAAc,KAAA;IAC9B,UAAU,MAAM,cAAc,KAAA;IAC9B,kBAAgB,MAAM;IACtB,QAAQ,MAAM;IACd,MAAM,MAAM;IACZ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,gBAAc,MAAM,aAAa,KAAA;IACjC,iBAAe,MAAM,cAAc,KAAA;IACnC,iBAAe,MAAM,cAAc,KAAA;;2BAeS,CAJrC,SAAA,SAAA,WAAA,EADR,mBAK6C,SAAA;;KAH1C,KAAK,gBAAA;KACL,OAAK,eAAE,eAAA,QAAiB,KAAA,IAAS,UAAA;KAClC,aAAU;uBACR,MAAM,SAAS,MAAM,UAAS,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA,EAGlC,mBA6CM,OAAA;KA5CH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;KACjE,aAAU;;KAEV,YAgBuB,MAAA,qBAAA,EAAA,EAhBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,iBAAe,EAAI,MAAM,YAAY,gBAAe,CAAA,EAAA,EAAA;6BAenG,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAdN,mBAcM,OAAA;OAbJ,eAAY;OACZ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;UAEV,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA;;;KAItB,YAGE,MAAA,iBAAA,EAAA;MAFC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;MAChE,aAAa,MAAM;;KAGtB,YAiBuB,MAAA,qBAAA,EAAA,EAjBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,iBAAe,EAAI,MAAM,YAAY,gBAAe,CAAA,EAAA,EAAA;6BAgBnG,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAfN,mBAeM,OAAA;OAdJ,eAAY;OACZ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;UAEV,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,EAClB,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA"}
1
+ {"version":3,"file":"NumberField.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/number-field/NumberField.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useId } from 'vue'\nimport {\n NumberFieldRoot,\n NumberFieldInput,\n NumberFieldIncrement,\n NumberFieldDecrement,\n} from 'reka-ui'\nimport { numberFieldVariants, type NumberFieldVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n variant?: NumberFieldVariants['variant']\n size?: NumberFieldVariants['size']\n color?: NumberFieldVariants['color']\n fullWidth?: boolean\n isInvalid?: boolean\n isDisabled?: boolean\n isReadonly?: boolean\n min?: number\n max?: number\n step?: number\n formatOptions?: Intl.NumberFormatOptions\n locale?: string\n name?: string\n id?: string\n placeholder?: string\n label?: string\n // camelCase prop; in templates users write aria-label=\"…\" (Vue auto-converts)\n ariaLabel?: string\n class?: ClassValue\n /** Per-slot classNames override object for custom styling */\n classNames?: Partial<{\n base: ClassValue\n group: ClassValue\n decrementButton: ClassValue\n input: ClassValue\n incrementButton: ClassValue\n }>\n}>(), {\n variant: 'flat',\n size: 'md',\n color: 'default',\n fullWidth: false,\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n step: 1,\n min: undefined,\n max: undefined,\n formatOptions: undefined,\n locale: undefined,\n label: undefined,\n ariaLabel: undefined,\n})\n\nconst modelValue = defineModel<number | undefined>()\n\nconst slotFns = computed(() =>\n numberFieldVariants({\n variant: props.variant,\n size: props.size,\n color: props.color,\n fullWidth: props.fullWidth,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isReadonly: props.isReadonly,\n })\n)\n\n// Generate a stable id for the input element.\n// NumberFieldRoot forwards this id to the underlying <input> via context.\n// We use this to wire a <label for=\"inputId\"> which is axe-safe regardless\n// of how Reka UI handles attr forwarding through its Primitive component.\nconst generatedInputId = useId()\n// Use caller-provided id if given, otherwise our generated id.\nconst resolvedInputId = computed(() => props.id ?? generatedInputId)\n\n// Whether to show a label element (visible or sr-only).\nconst hasLabel = computed(() => !!(props.label || props.ariaLabel))\n// When only ariaLabel is given (no visible label), the label is sr-only.\nconst isLabelVisible = computed(() => !!props.label)\n</script>\n\n<template>\n <NumberFieldRoot\n :id=\"resolvedInputId\"\n v-model=\"modelValue\"\n :min=\"props.min\"\n :max=\"props.max\"\n :step=\"props.step\"\n :disabled=\"props.isDisabled || undefined\"\n :readonly=\"props.isReadonly || undefined\"\n :format-options=\"props.formatOptions\"\n :locale=\"props.locale\"\n :name=\"props.name\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-invalid=\"props.isInvalid || undefined\"\n :data-disabled=\"props.isDisabled || undefined\"\n :data-readonly=\"props.isReadonly || undefined\"\n >\n <!--\n Label element — always rendered when `label` or `aria-label` is provided.\n When only `aria-label` is given (no visible label) the element is sr-only.\n Uses label[for=resolvedInputId] to wire to the Reka UI input element —\n this is axe-safe because NumberFieldRoot forwards its `id` prop directly\n to the underlying <input> via context, making label[for] reliable even\n though custom attrs passed to NumberFieldInput don't reach the DOM input.\n -->\n <label\n v-if=\"hasLabel\"\n :for=\"resolvedInputId\"\n :class=\"isLabelVisible ? undefined : 'sr-only'\"\n data-slot=\"label\"\n >{{ props.label || props.ariaLabel }}</label>\n\n <!-- Number field control group -->\n <div\n :class=\"composeClassName(slotFns.group(), props.classNames?.group)\"\n data-slot=\"group\"\n >\n <NumberFieldDecrement :class=\"composeClassName(slotFns.decrementButton(), props.classNames?.decrementButton)\">\n <svg\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"number-field-decrement-button-icon\"\n >\n <path d=\"M5 12h14\" />\n </svg>\n </NumberFieldDecrement>\n\n <NumberFieldInput\n :class=\"composeClassName(slotFns.input(), props.classNames?.input)\"\n :placeholder=\"props.placeholder\"\n />\n\n <NumberFieldIncrement :class=\"composeClassName(slotFns.incrementButton(), props.classNames?.incrementButton)\">\n <svg\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"number-field-increment-button-icon\"\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n </NumberFieldIncrement>\n </div>\n </NumberFieldRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYA,MAAM,QAAQ;EA6Cd,MAAM,aAAa,SAA+B,SAAA,aAAC;EAEnD,MAAM,UAAU,eACd,oBAAoB;GAClB,SAAS,MAAM;GACf,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,WAAW,MAAM;GACjB,WAAW,MAAM;GACjB,YAAY,MAAM;GAClB,YAAY,MAAM;GACnB,CAAA,CACH;EAMA,MAAM,mBAAmB,OAAM;EAE/B,MAAM,kBAAkB,eAAe,MAAM,MAAM,iBAAgB;EAGnE,MAAM,WAAW,eAAe,CAAC,EAAE,MAAM,SAAS,MAAM,WAAU;EAElE,MAAM,iBAAiB,eAAe,CAAC,CAAC,MAAM,MAAK;;uBAIjD,YA8EkB,MAAA,gBAAA,EAAA;IA7Ef,IAAI,gBAAA;gBACI,WAAA;4EAAU,QAAA;IAClB,KAAK,MAAM;IACX,KAAK,MAAM;IACX,MAAM,MAAM;IACZ,UAAU,MAAM,cAAc,KAAA;IAC9B,UAAU,MAAM,cAAc,KAAA;IAC9B,kBAAgB,MAAM;IACtB,QAAQ,MAAM;IACd,MAAM,MAAM;IACZ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,gBAAc,MAAM,aAAa,KAAA;IACjC,iBAAe,MAAM,cAAc,KAAA;IACnC,iBAAe,MAAM,cAAc,KAAA;;2BAeS,CAJrC,SAAA,SAAA,WAAA,EADR,mBAK6C,SAAA;;KAH1C,KAAK,gBAAA;KACL,OAAK,eAAE,eAAA,QAAiB,KAAA,IAAS,UAAA;KAClC,aAAU;uBACR,MAAM,SAAS,MAAM,UAAS,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA,EAGlC,mBA6CM,OAAA;KA5CH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;KACjE,aAAU;;KAEV,YAgBuB,MAAA,qBAAA,EAAA,EAhBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,iBAAe,EAAI,MAAM,YAAY,gBAAe,CAAA,EAAA,EAAA;6BAenG,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAdN,mBAcM,OAAA;OAbJ,eAAY;OACZ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;UAEV,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA;;;KAItB,YAGE,MAAA,iBAAA,EAAA;MAFC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;MAChE,aAAa,MAAM;;KAGtB,YAiBuB,MAAA,qBAAA,EAAA,EAjBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,iBAAe,EAAI,MAAM,YAAY,gBAAe,CAAA,EAAA,EAAA;6BAgBnG,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAfN,mBAeM,OAAA;OAdJ,eAAY;OACZ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;UAEV,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,EAClB,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA"}
@@ -32,7 +32,13 @@ var ProgressBar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
32
32
  type: Boolean,
33
33
  default: false
34
34
  },
35
- class: {},
35
+ class: { type: [
36
+ String,
37
+ Boolean,
38
+ null,
39
+ Object,
40
+ Array
41
+ ] },
36
42
  classNames: {}
37
43
  },
38
44
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/progress-bar/ProgressBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { ProgressRoot, ProgressIndicator } from 'reka-ui'\nimport { progressBarVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number | null\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full'\n isStriped?: boolean\n isIndeterminate?: boolean\n isDisabled?: boolean\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n base: ClassValue\n labelWrapper: ClassValue\n label: ClassValue\n value: ClassValue\n track: ClassValue\n indicator: ClassValue\n }>\n}>(), {\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n isStriped: false,\n isIndeterminate: false,\n isDisabled: false,\n})\n\nconst isInd = computed(\n () => props.isIndeterminate || props.value === null || props.value === undefined\n)\n\nconst percentage = computed(() => {\n if (isInd.value) return 0\n const val = props.value as number\n return ((val - props.minValue) / (props.maxValue - props.minValue)) * 100\n})\n\nconst slotFns = computed(() =>\n progressBarVariants({\n size: props.size,\n color: props.color,\n radius: props.radius,\n isStriped: props.isStriped,\n isIndeterminate: isInd.value,\n isDisabled: props.isDisabled,\n })\n)\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.value === null || props.value === undefined) return ''\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return String(Math.round(percentage.value)) + '%'\n})\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-disabled=\"isDisabled ? '' : undefined\"\n >\n <div\n v-if=\"label || showValueLabel\"\n :class=\"composeClassName(slotFns.labelWrapper(), props.classNames?.labelWrapper)\"\n >\n <span\n v-if=\"label\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}</span>\n <span\n v-if=\"showValueLabel\"\n :class=\"composeClassName(slotFns.value(), props.classNames?.value)\"\n >{{ formattedValue }}</span>\n </div>\n <ProgressRoot\n :model-value=\"isInd ? null : (props.value as number)\"\n :max=\"maxValue\"\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n :aria-label=\"label || 'Progress'\"\n >\n <ProgressIndicator\n :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\"\n :style=\"isInd ? {} : { transform: `translateX(-${100 - percentage}%)` }\"\n />\n </ProgressRoot>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAiCd,MAAM,QAAQ,eACN,MAAM,mBAAmB,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EACzE;EAEA,MAAM,aAAa,eAAe;AAChC,OAAI,MAAM,MAAO,QAAO;AAExB,WADY,MAAM,QACH,MAAM,aAAa,MAAM,WAAW,MAAM,YAAa;IACvE;EAED,MAAM,UAAU,eACd,oBAAoB;GAClB,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,QAAQ,MAAM;GACd,WAAW,MAAM;GACjB,iBAAiB,MAAM;GACvB,YAAY,MAAM;GACnB,CAAA,CACH;EAEA,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,WAAY,QAAO,MAAM;AACnC,OAAI,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EAAW,QAAO;AAC9D,OAAI,MAAM,cACR,QAAO,IAAI,KAAK,aAAa,KAAA,GAAW,MAAM,cAAc,CAAC,OAAO,MAAM,MAAK;AAEjF,UAAO,OAAO,KAAK,MAAM,WAAW,MAAM,CAAC,GAAG;IAC/C;;uBAIC,mBA4BM,OAAA;IA3BH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,iBAAe,QAAA,aAAU,KAAQ,KAAA;OAG1B,QAAA,SAAS,QAAA,kBAAA,WAAA,EADjB,mBAYM,OAAA;;IAVH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA;OAGvE,QAAA,SAAA,WAAA,EADR,mBAGmB,QAAA;;IADhB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;sBAC/D,QAAA,MAAK,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,EAED,QAAA,kBAAA,WAAA,EADR,mBAG4B,QAAA;;IADzB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;sBAC/D,eAAA,MAAc,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,EAEpB,YAUe,MAAA,aAAA,EAAA;IATZ,eAAa,MAAA,QAAK,OAAW,MAAM;IACnC,KAAK,QAAA;IACL,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;IAChE,cAAY,QAAA,SAAK;;2BAKhB,CAHF,YAGE,MAAA,kBAAA,EAAA;KAFC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;KACxE,OAAK,eAAE,MAAA,QAAK,EAAA,GAAA,EAAA,WAAA,eAAA,MAA0C,WAAA,MAAU,KAAA,CAAA"}
1
+ {"version":3,"file":"ProgressBar.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/progress-bar/ProgressBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { ProgressRoot, ProgressIndicator } from 'reka-ui'\nimport { progressBarVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number | null\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full'\n isStriped?: boolean\n isIndeterminate?: boolean\n isDisabled?: boolean\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n base: ClassValue\n labelWrapper: ClassValue\n label: ClassValue\n value: ClassValue\n track: ClassValue\n indicator: ClassValue\n }>\n}>(), {\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n isStriped: false,\n isIndeterminate: false,\n isDisabled: false,\n})\n\nconst isInd = computed(\n () => props.isIndeterminate || props.value === null || props.value === undefined\n)\n\nconst percentage = computed(() => {\n if (isInd.value) return 0\n const val = props.value as number\n return ((val - props.minValue) / (props.maxValue - props.minValue)) * 100\n})\n\nconst slotFns = computed(() =>\n progressBarVariants({\n size: props.size,\n color: props.color,\n radius: props.radius,\n isStriped: props.isStriped,\n isIndeterminate: isInd.value,\n isDisabled: props.isDisabled,\n })\n)\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.value === null || props.value === undefined) return ''\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return String(Math.round(percentage.value)) + '%'\n})\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-disabled=\"isDisabled ? '' : undefined\"\n >\n <div\n v-if=\"label || showValueLabel\"\n :class=\"composeClassName(slotFns.labelWrapper(), props.classNames?.labelWrapper)\"\n >\n <span\n v-if=\"label\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}</span>\n <span\n v-if=\"showValueLabel\"\n :class=\"composeClassName(slotFns.value(), props.classNames?.value)\"\n >{{ formattedValue }}</span>\n </div>\n <ProgressRoot\n :model-value=\"isInd ? null : (props.value as number)\"\n :max=\"maxValue\"\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n :aria-label=\"label || 'Progress'\"\n >\n <ProgressIndicator\n :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\"\n :style=\"isInd ? {} : { transform: `translateX(-${100 - percentage}%)` }\"\n />\n </ProgressRoot>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAiCd,MAAM,QAAQ,eACN,MAAM,mBAAmB,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EACzE;EAEA,MAAM,aAAa,eAAe;AAChC,OAAI,MAAM,MAAO,QAAO;AAExB,WADY,MAAM,QACH,MAAM,aAAa,MAAM,WAAW,MAAM,YAAa;IACvE;EAED,MAAM,UAAU,eACd,oBAAoB;GAClB,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,QAAQ,MAAM;GACd,WAAW,MAAM;GACjB,iBAAiB,MAAM;GACvB,YAAY,MAAM;GACnB,CAAA,CACH;EAEA,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,WAAY,QAAO,MAAM;AACnC,OAAI,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EAAW,QAAO;AAC9D,OAAI,MAAM,cACR,QAAO,IAAI,KAAK,aAAa,KAAA,GAAW,MAAM,cAAc,CAAC,OAAO,MAAM,MAAK;AAEjF,UAAO,OAAO,KAAK,MAAM,WAAW,MAAM,CAAC,GAAG;IAC/C;;uBAIC,mBA4BM,OAAA;IA3BH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,iBAAe,QAAA,aAAU,KAAQ,KAAA;OAG1B,QAAA,SAAS,QAAA,kBAAA,WAAA,EADjB,mBAYM,OAAA;;IAVH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA;OAGvE,QAAA,SAAA,WAAA,EADR,mBAGmB,QAAA;;IADhB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;sBAC/D,QAAA,MAAK,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,EAED,QAAA,kBAAA,WAAA,EADR,mBAG4B,QAAA;;IADzB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;sBAC/D,eAAA,MAAc,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,EAEpB,YAUe,MAAA,aAAA,EAAA;IATZ,eAAa,MAAA,QAAK,OAAW,MAAM;IACnC,KAAK,QAAA;IACL,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;IAChE,cAAY,QAAA,SAAK;;2BAKhB,CAHF,YAGE,MAAA,kBAAA,EAAA;KAFC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;KACxE,OAAK,eAAE,MAAA,QAAK,EAAA,GAAA,EAAA,WAAA,eAAA,MAA0C,WAAA,MAAU,KAAA,CAAA"}
@@ -34,7 +34,13 @@ var ProgressCircle_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
34
34
  type: Boolean,
35
35
  default: false
36
36
  },
37
- class: {},
37
+ class: { type: [
38
+ String,
39
+ Boolean,
40
+ null,
41
+ Object,
42
+ Array
43
+ ] },
38
44
  classNames: {}
39
45
  },
40
46
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressCircle.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/progress-circle/ProgressCircle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { ProgressRoot } from 'reka-ui'\nimport { progressCircleVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number | null\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n strokeWidth?: number\n isIndeterminate?: boolean\n isDisabled?: boolean\n class?: ClassValue\n /** Override classNames for individual slots */\n classNames?: Partial<{\n base: ClassValue\n svg: ClassValue\n track: ClassValue\n indicator: ClassValue\n value: ClassValue\n }>\n}>(), {\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n strokeWidth: 3,\n isIndeterminate: false,\n isDisabled: false,\n})\n\nconst isInd = computed(\n () => props.isIndeterminate || props.value === null || props.value === undefined\n)\n\nconst percentage = computed(() => {\n if (isInd.value) return 0\n const val = props.value as number\n return ((val - props.minValue) / (props.maxValue - props.minValue)) * 100\n})\n\n// SVG geometry\nconst radius = computed(() => 16 - props.strokeWidth)\nconst circumference = computed(() => 2 * Math.PI * radius.value)\nconst offset = computed(() =>\n isInd.value ? circumference.value * 0.25 : circumference.value * (1 - percentage.value / 100)\n)\n\nconst slotFns = computed(() =>\n progressCircleVariants({\n size: props.size,\n color: props.color,\n isIndeterminate: isInd.value,\n isDisabled: props.isDisabled,\n })\n)\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.value === null || props.value === undefined) return ''\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return String(Math.round(props.value as number))\n})\n</script>\n\n<template>\n <ProgressRoot\n :model-value=\"isInd ? null : (value as number)\"\n :max=\"maxValue\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :aria-label=\"label || 'Progress'\"\n :data-disabled=\"isDisabled ? '' : undefined\"\n >\n <svg\n :class=\"composeClassName(slotFns.svg(), props.classNames?.svg)\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <!-- Track circle -->\n <circle\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n cx=\"16\"\n cy=\"16\"\n :r=\"radius\"\n :stroke-width=\"strokeWidth\"\n fill=\"none\"\n />\n <!-- Indicator (progress) circle -->\n <circle\n :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\"\n cx=\"16\"\n cy=\"16\"\n :r=\"radius\"\n :stroke-width=\"strokeWidth\"\n fill=\"none\"\n stroke-linecap=\"round\"\n :stroke-dasharray=\"circumference\"\n :stroke-dashoffset=\"offset\"\n transform=\"rotate(-90 16 16)\"\n style=\"transition: stroke-dashoffset 300ms ease-out\"\n />\n </svg>\n <span\n v-if=\"showValueLabel || label\"\n :class=\"composeClassName(slotFns.value(), props.classNames?.value)\"\n >\n <slot>{{ formattedValue }}</slot>\n </span>\n </ProgressRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EA+Bd,MAAM,QAAQ,eACN,MAAM,mBAAmB,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EACzE;EAEA,MAAM,aAAa,eAAe;AAChC,OAAI,MAAM,MAAO,QAAO;AAExB,WADY,MAAM,QACH,MAAM,aAAa,MAAM,WAAW,MAAM,YAAa;IACvE;EAGD,MAAM,SAAS,eAAe,KAAK,MAAM,YAAW;EACpD,MAAM,gBAAgB,eAAe,IAAI,KAAK,KAAK,OAAO,MAAK;EAC/D,MAAM,SAAS,eACb,MAAM,QAAQ,cAAc,QAAQ,MAAO,cAAc,SAAS,IAAI,WAAW,QAAQ,KAC3F;EAEA,MAAM,UAAU,eACd,uBAAuB;GACrB,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,iBAAiB,MAAM;GACvB,YAAY,MAAM;GACnB,CAAA,CACH;EAEA,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,WAAY,QAAO,MAAM;AACnC,OAAI,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EAAW,QAAO;AAC9D,OAAI,MAAM,cACR,QAAO,IAAI,KAAK,aAAa,KAAA,GAAW,MAAM,cAAc,CAAC,OAAO,MAAM,MAAK;AAEjF,UAAO,OAAO,KAAK,MAAM,MAAM,MAAgB,CAAA;IAChD;;uBAIC,YA2Ce,MAAA,aAAA,EAAA;IA1CZ,eAAa,MAAA,QAAK,OAAW,QAAA;IAC7B,KAAK,QAAA;IACL,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,cAAY,QAAA,SAAK;IACjB,iBAAe,QAAA,aAAU,KAAQ,KAAA;;2BA+B5B,EAAA,WAAA,EA7BN,mBA6BM,OAAA;KA5BH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,KAAG,EAAI,MAAM,YAAY,IAAG,CAAA;KAC7D,SAAQ;KACR,MAAK;KACL,eAAY;QAGZ,mBAOE,UAAA;KANC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;KACjE,IAAG;KACH,IAAG;KACF,GAAG,OAAA;KACH,gBAAc,QAAA;KACf,MAAK;8BAGP,mBAYE,UAAA;KAXC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;KACzE,IAAG;KACH,IAAG;KACF,GAAG,OAAA;KACH,gBAAc,QAAA;KACf,MAAK;KACL,kBAAe;KACd,oBAAkB,cAAA;KAClB,qBAAmB,OAAA;KACpB,WAAU;KACV,OAAA,EAAA,cAAA,oCAAoD;oCAIhD,QAAA,kBAAkB,QAAA,SAAA,WAAA,EAD1B,mBAKO,QAAA;;KAHJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;QAEjE,WAAiC,KAAA,QAAA,WAAA,EAAA,QAAA,CAAA,gBAAA,gBAAxB,eAAA,MAAc,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ProgressCircle.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/progress-circle/ProgressCircle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { ProgressRoot } from 'reka-ui'\nimport { progressCircleVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number | null\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n strokeWidth?: number\n isIndeterminate?: boolean\n isDisabled?: boolean\n class?: ClassValue\n /** Override classNames for individual slots */\n classNames?: Partial<{\n base: ClassValue\n svg: ClassValue\n track: ClassValue\n indicator: ClassValue\n value: ClassValue\n }>\n}>(), {\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n strokeWidth: 3,\n isIndeterminate: false,\n isDisabled: false,\n})\n\nconst isInd = computed(\n () => props.isIndeterminate || props.value === null || props.value === undefined\n)\n\nconst percentage = computed(() => {\n if (isInd.value) return 0\n const val = props.value as number\n return ((val - props.minValue) / (props.maxValue - props.minValue)) * 100\n})\n\n// SVG geometry\nconst radius = computed(() => 16 - props.strokeWidth)\nconst circumference = computed(() => 2 * Math.PI * radius.value)\nconst offset = computed(() =>\n isInd.value ? circumference.value * 0.25 : circumference.value * (1 - percentage.value / 100)\n)\n\nconst slotFns = computed(() =>\n progressCircleVariants({\n size: props.size,\n color: props.color,\n isIndeterminate: isInd.value,\n isDisabled: props.isDisabled,\n })\n)\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.value === null || props.value === undefined) return ''\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return String(Math.round(props.value as number))\n})\n</script>\n\n<template>\n <ProgressRoot\n :model-value=\"isInd ? null : (value as number)\"\n :max=\"maxValue\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :aria-label=\"label || 'Progress'\"\n :data-disabled=\"isDisabled ? '' : undefined\"\n >\n <svg\n :class=\"composeClassName(slotFns.svg(), props.classNames?.svg)\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <!-- Track circle -->\n <circle\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n cx=\"16\"\n cy=\"16\"\n :r=\"radius\"\n :stroke-width=\"strokeWidth\"\n fill=\"none\"\n />\n <!-- Indicator (progress) circle -->\n <circle\n :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\"\n cx=\"16\"\n cy=\"16\"\n :r=\"radius\"\n :stroke-width=\"strokeWidth\"\n fill=\"none\"\n stroke-linecap=\"round\"\n :stroke-dasharray=\"circumference\"\n :stroke-dashoffset=\"offset\"\n transform=\"rotate(-90 16 16)\"\n style=\"transition: stroke-dashoffset 300ms ease-out\"\n />\n </svg>\n <span\n v-if=\"showValueLabel || label\"\n :class=\"composeClassName(slotFns.value(), props.classNames?.value)\"\n >\n <slot>{{ formattedValue }}</slot>\n </span>\n </ProgressRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EA+Bd,MAAM,QAAQ,eACN,MAAM,mBAAmB,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EACzE;EAEA,MAAM,aAAa,eAAe;AAChC,OAAI,MAAM,MAAO,QAAO;AAExB,WADY,MAAM,QACH,MAAM,aAAa,MAAM,WAAW,MAAM,YAAa;IACvE;EAGD,MAAM,SAAS,eAAe,KAAK,MAAM,YAAW;EACpD,MAAM,gBAAgB,eAAe,IAAI,KAAK,KAAK,OAAO,MAAK;EAC/D,MAAM,SAAS,eACb,MAAM,QAAQ,cAAc,QAAQ,MAAO,cAAc,SAAS,IAAI,WAAW,QAAQ,KAC3F;EAEA,MAAM,UAAU,eACd,uBAAuB;GACrB,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,iBAAiB,MAAM;GACvB,YAAY,MAAM;GACnB,CAAA,CACH;EAEA,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,WAAY,QAAO,MAAM;AACnC,OAAI,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EAAW,QAAO;AAC9D,OAAI,MAAM,cACR,QAAO,IAAI,KAAK,aAAa,KAAA,GAAW,MAAM,cAAc,CAAC,OAAO,MAAM,MAAK;AAEjF,UAAO,OAAO,KAAK,MAAM,MAAM,MAAgB,CAAA;IAChD;;uBAIC,YA2Ce,MAAA,aAAA,EAAA;IA1CZ,eAAa,MAAA,QAAK,OAAW,QAAA;IAC7B,KAAK,QAAA;IACL,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,cAAY,QAAA,SAAK;IACjB,iBAAe,QAAA,aAAU,KAAQ,KAAA;;2BA+B5B,EAAA,WAAA,EA7BN,mBA6BM,OAAA;KA5BH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,KAAG,EAAI,MAAM,YAAY,IAAG,CAAA;KAC7D,SAAQ;KACR,MAAK;KACL,eAAY;QAGZ,mBAOE,UAAA;KANC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;KACjE,IAAG;KACH,IAAG;KACF,GAAG,OAAA;KACH,gBAAc,QAAA;KACf,MAAK;8BAGP,mBAYE,UAAA;KAXC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;KACzE,IAAG;KACH,IAAG;KACF,GAAG,OAAA;KACH,gBAAc,QAAA;KACf,MAAK;KACL,kBAAe;KACd,oBAAkB,cAAA;KAClB,qBAAmB,OAAA;KACpB,WAAU;KACV,OAAA,EAAA,cAAA,oCAAoD;oCAIhD,QAAA,kBAAkB,QAAA,SAAA,WAAA,EAD1B,mBAKO,QAAA;;KAHJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;QAEjE,WAAiC,KAAA,QAAA,WAAA,EAAA,QAAA,CAAA,gBAAA,gBAAxB,eAAA,MAAc,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,CAAA"}
@@ -14,7 +14,16 @@ var Radio_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
14
14
  type: Boolean,
15
15
  default: false
16
16
  },
17
- class: { default: void 0 },
17
+ class: {
18
+ type: [
19
+ String,
20
+ Boolean,
21
+ null,
22
+ Object,
23
+ Array
24
+ ],
25
+ default: void 0
26
+ },
18
27
  classNames: { default: void 0 }
19
28
  },
20
29
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/radio/Radio.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue'\nimport { RadioGroupItem, RadioGroupIndicator } from 'reka-ui'\nimport { radioVariants, type RadioGroupVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useRadioGroupInject } from './radio-group.context'\n\n// Disable Vue attribute fallthrough — we manually forward $attrs to RadioGroupItem\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n value: string\n variant?: RadioGroupVariants['variant']\n disabled?: boolean\n class?: ClassValue\n /** Override classNames for individual slots */\n classNames?: Partial<{\n base: ClassValue\n control: ClassValue\n indicator: ClassValue\n content: ClassValue\n }>\n}>(), {\n variant: undefined,\n disabled: false,\n class: undefined,\n classNames: undefined,\n})\n\nconst attrs = useAttrs()\n\n// Inject RadioGroup context with fallback defaults (standalone mode)\nconst groupCtx = useRadioGroupInject({\n variant: ref(undefined),\n disabled: ref(false),\n})\n\n// Prop precedence: group disabled wins (D-02)\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\n\n// Child variant wins over group variant (used for data-variant attribute propagation)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\n\nconst slotFns = computed(() => radioVariants())\n</script>\n\n<template>\n <RadioGroupItem\n v-bind=\"attrs\"\n :value=\"props.value\"\n :disabled=\"isDisabled\"\n :data-variant=\"finalVariant\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n >\n <span :class=\"composeClassName(slotFns.control(), props.classNames?.control)\">\n <RadioGroupIndicator :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\" />\n </span>\n <span :class=\"composeClassName(slotFns.content(), props.classNames?.content)\">\n <slot />\n </span>\n </RadioGroupItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAUA,MAAM,QAAQ;EAmBd,MAAM,QAAQ,UAAS;EAGvB,MAAM,WAAW,oBAAoB;GACnC,SAAS,IAAI,KAAA,EAAU;GACvB,UAAU,IAAI,MAAM;GACrB,CAAA;EAGD,MAAM,aAAa,eAAe,SAAS,SAAS,SAAS,MAAM,SAAQ;EAG3E,MAAM,eAAe,eAAe,MAAM,WAAW,SAAS,QAAQ,MAAK;EAE3E,MAAM,UAAU,eAAe,eAAe,CAAA;;uBAI5C,YAaiB,MAAA,eAAA,EAbjB,WACU,MAYO,MAZF,EAAA;IACZ,OAAO,MAAM;IACb,UAAU,WAAA;IACV,gBAAc,aAAA;IACd,OAAO,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI;;2BAIrE,CAFP,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA,EAAA,EAAA,CACzE,YAAmG,MAAA,oBAAA,EAAA,EAA7E,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA,EAAA,EAAA,MAAA,GAAA,CAAA,QAAA,CAAA,CAAA,EAAA,EAAA,EAEhG,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA,EAAA,EAAA,CACzE,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"Radio.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/radio/Radio.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue'\nimport { RadioGroupItem, RadioGroupIndicator } from 'reka-ui'\nimport { radioVariants, type RadioGroupVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useRadioGroupInject } from './radio-group.context'\n\n// Disable Vue attribute fallthrough — we manually forward $attrs to RadioGroupItem\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n value: string\n variant?: RadioGroupVariants['variant']\n disabled?: boolean\n class?: ClassValue\n /** Override classNames for individual slots */\n classNames?: Partial<{\n base: ClassValue\n control: ClassValue\n indicator: ClassValue\n content: ClassValue\n }>\n}>(), {\n variant: undefined,\n disabled: false,\n class: undefined,\n classNames: undefined,\n})\n\nconst attrs = useAttrs()\n\n// Inject RadioGroup context with fallback defaults (standalone mode)\nconst groupCtx = useRadioGroupInject({\n variant: ref(undefined),\n disabled: ref(false),\n})\n\n// Prop precedence: group disabled wins (D-02)\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\n\n// Child variant wins over group variant (used for data-variant attribute propagation)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\n\nconst slotFns = computed(() => radioVariants())\n</script>\n\n<template>\n <RadioGroupItem\n v-bind=\"attrs\"\n :value=\"props.value\"\n :disabled=\"isDisabled\"\n :data-variant=\"finalVariant\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n >\n <span :class=\"composeClassName(slotFns.control(), props.classNames?.control)\">\n <RadioGroupIndicator :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\" />\n </span>\n <span :class=\"composeClassName(slotFns.content(), props.classNames?.content)\">\n <slot />\n </span>\n </RadioGroupItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUA,MAAM,QAAQ;EAmBd,MAAM,QAAQ,UAAS;EAGvB,MAAM,WAAW,oBAAoB;GACnC,SAAS,IAAI,KAAA,EAAU;GACvB,UAAU,IAAI,MAAM;GACrB,CAAA;EAGD,MAAM,aAAa,eAAe,SAAS,SAAS,SAAS,MAAM,SAAQ;EAG3E,MAAM,eAAe,eAAe,MAAM,WAAW,SAAS,QAAQ,MAAK;EAE3E,MAAM,UAAU,eAAe,eAAe,CAAA;;uBAI5C,YAaiB,MAAA,eAAA,EAbjB,WACU,MAYO,MAZF,EAAA;IACZ,OAAO,MAAM;IACb,UAAU,WAAA;IACV,gBAAc,aAAA;IACd,OAAO,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI;;2BAIrE,CAFP,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA,EAAA,EAAA,CACzE,YAAmG,MAAA,oBAAA,EAAA,EAA7E,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA,EAAA,EAAA,MAAA,GAAA,CAAA,QAAA,CAAA,CAAA,EAAA,EAAA,EAEhG,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA,EAAA,EAAA,CACzE,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,CAAA,CAAA"}
@@ -45,7 +45,13 @@ var RangeCalendar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
45
45
  default: false
46
46
  },
47
47
  calendarLabel: {},
48
- class: {},
48
+ class: { type: [
49
+ String,
50
+ Boolean,
51
+ null,
52
+ Object,
53
+ Array
54
+ ] },
49
55
  classNames: {}
50
56
  }, {
51
57
  "modelValue": {},