iryx-ui 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/README.md +35 -1315
  2. package/dist/component-names.d.ts +1 -1
  3. package/dist/component-names.js +1 -1
  4. package/dist/components/Accordion.js +5 -0
  5. package/dist/components/Accordion.vue.d.ts +80 -0
  6. package/dist/components/Accordion.vue_vue_type_script_setup_true_lang.js +87 -0
  7. package/dist/components/Alert.vue.d.ts +1 -1
  8. package/dist/components/Alert.vue_vue_type_script_setup_true_lang.js +7 -7
  9. package/dist/components/App.vue.d.ts +1 -1
  10. package/dist/components/AppShell.js +5 -0
  11. package/dist/components/AppShell.vue.d.ts +46 -0
  12. package/dist/components/AppShell.vue_vue_type_script_setup_true_lang.js +59 -0
  13. package/dist/components/AspectRatio.js +5 -0
  14. package/dist/components/AspectRatio.vue.d.ts +26 -0
  15. package/dist/components/AspectRatio.vue_vue_type_script_setup_true_lang.js +27 -0
  16. package/dist/components/Avatar.js +5 -0
  17. package/dist/components/Avatar.vue.d.ts +52 -0
  18. package/dist/components/Avatar.vue_vue_type_script_setup_true_lang.js +67 -0
  19. package/dist/components/AvatarGroup.js +5 -0
  20. package/dist/components/AvatarGroup.vue.d.ts +39 -0
  21. package/dist/components/AvatarGroup.vue_vue_type_script_setup_true_lang.js +45 -0
  22. package/dist/components/Badge.vue.d.ts +1 -1
  23. package/dist/components/Banner.vue.d.ts +2 -2
  24. package/dist/components/BarChart.vue.d.ts +1 -1
  25. package/dist/components/BarChart.vue_vue_type_script_setup_true_lang.js +14 -14
  26. package/dist/components/Button.vue.d.ts +2 -2
  27. package/dist/components/ButtonGroup.vue.d.ts +1 -1
  28. package/dist/components/Card.vue.d.ts +1 -1
  29. package/dist/components/Collapsible.js +5 -0
  30. package/dist/components/Collapsible.vue.d.ts +58 -0
  31. package/dist/components/Collapsible.vue_vue_type_script_setup_true_lang.js +67 -0
  32. package/dist/components/ColorPicker.js +5 -0
  33. package/dist/components/ColorPicker.vue.d.ts +49 -0
  34. package/dist/components/ColorPicker.vue_vue_type_script_setup_true_lang.js +172 -0
  35. package/dist/components/Combobox.vue.d.ts +6 -6
  36. package/dist/components/CommandPalette.js +5 -0
  37. package/dist/components/CommandPalette.vue.d.ts +63 -0
  38. package/dist/components/CommandPalette.vue_vue_type_script_setup_true_lang.js +185 -0
  39. package/dist/components/Container.js +5 -0
  40. package/dist/components/Container.vue.d.ts +33 -0
  41. package/dist/components/Container.vue_vue_type_script_setup_true_lang.js +40 -0
  42. package/dist/components/ContextMenu.js +5 -0
  43. package/dist/components/ContextMenu.vue.d.ts +42 -0
  44. package/dist/components/ContextMenu.vue_vue_type_script_setup_true_lang.js +49 -0
  45. package/dist/components/DateRangePicker.vue.d.ts +1 -1
  46. package/dist/components/Dialog.vue.d.ts +1 -1
  47. package/dist/components/Drawer.vue.d.ts +2 -2
  48. package/dist/components/EmptyState.vue.d.ts +1 -1
  49. package/dist/components/Input.vue.d.ts +1 -1
  50. package/dist/components/Input.vue_vue_type_script_setup_true_lang.js +4 -4
  51. package/dist/components/Kbd.js +5 -0
  52. package/dist/components/Kbd.vue.d.ts +46 -0
  53. package/dist/components/Kbd.vue_vue_type_script_setup_true_lang.js +41 -0
  54. package/dist/components/LineChart.vue_vue_type_script_setup_true_lang.js +19 -19
  55. package/dist/components/Menubar.js +5 -0
  56. package/dist/components/Menubar.vue.d.ts +62 -0
  57. package/dist/components/Menubar.vue_vue_type_script_setup_true_lang.js +79 -0
  58. package/dist/components/NavigationMenu.js +5 -0
  59. package/dist/components/NavigationMenu.vue.d.ts +75 -0
  60. package/dist/components/NavigationMenu.vue_vue_type_script_setup_true_lang.js +167 -0
  61. package/dist/components/NumberInput.vue_vue_type_script_setup_true_lang.js +2 -2
  62. package/dist/components/PageHeader.js +5 -0
  63. package/dist/components/PageHeader.vue.d.ts +52 -0
  64. package/dist/components/PageHeader.vue_vue_type_script_setup_true_lang.js +59 -0
  65. package/dist/components/PinInput.js +5 -0
  66. package/dist/components/PinInput.vue.d.ts +65 -0
  67. package/dist/components/PinInput.vue_vue_type_script_setup_true_lang.js +76 -0
  68. package/dist/components/Popover.js +5 -0
  69. package/dist/components/Popover.vue.d.ts +75 -0
  70. package/dist/components/Popover.vue_vue_type_script_setup_true_lang.js +99 -0
  71. package/dist/components/Progress.vue.d.ts +20 -1
  72. package/dist/components/Progress.vue_vue_type_script_setup_true_lang.js +84 -44
  73. package/dist/components/RadioGroup.vue_vue_type_script_setup_true_lang.js +4 -1
  74. package/dist/components/ScrollArea.js +5 -0
  75. package/dist/components/ScrollArea.vue.d.ts +41 -0
  76. package/dist/components/ScrollArea.vue_vue_type_script_setup_true_lang.js +68 -0
  77. package/dist/components/ScrollFade.js +5 -0
  78. package/dist/components/ScrollFade.vue.d.ts +36 -0
  79. package/dist/components/ScrollFade.vue_vue_type_script_setup_true_lang.js +59 -0
  80. package/dist/components/Select.vue.d.ts +2 -2
  81. package/dist/components/Sidebar.js +5 -0
  82. package/dist/components/Sidebar.vue.d.ts +72 -0
  83. package/dist/components/Sidebar.vue_vue_type_script_setup_true_lang.js +183 -0
  84. package/dist/components/SignaturePad.js +5 -0
  85. package/dist/components/SignaturePad.vue.d.ts +60 -0
  86. package/dist/components/SignaturePad.vue_vue_type_script_setup_true_lang.js +158 -0
  87. package/dist/components/Skeleton.vue.d.ts +1 -1
  88. package/dist/components/Skeleton.vue_vue_type_script_setup_true_lang.js +8 -8
  89. package/dist/components/Slider.js +5 -0
  90. package/dist/components/Slider.vue.d.ts +80 -0
  91. package/dist/components/Slider.vue_vue_type_script_setup_true_lang.js +115 -0
  92. package/dist/components/Splitter.js +5 -0
  93. package/dist/components/Splitter.vue.d.ts +59 -0
  94. package/dist/components/Splitter.vue_vue_type_script_setup_true_lang.js +69 -0
  95. package/dist/components/Stat.vue.d.ts +1 -1
  96. package/dist/components/Switch.vue.d.ts +1 -0
  97. package/dist/components/Switch.vue_vue_type_script_setup_true_lang.js +7 -3
  98. package/dist/components/Table.vue.d.ts +7 -1
  99. package/dist/components/Table.vue_vue_type_script_setup_true_lang.js +73 -58
  100. package/dist/components/TagsInput.js +5 -0
  101. package/dist/components/TagsInput.vue.d.ts +71 -0
  102. package/dist/components/TagsInput.vue_vue_type_script_setup_true_lang.js +119 -0
  103. package/dist/components/Textarea.vue_vue_type_script_setup_true_lang.js +3 -3
  104. package/dist/components/TimeField.js +5 -0
  105. package/dist/components/TimeField.vue.d.ts +50 -0
  106. package/dist/components/TimeField.vue_vue_type_script_setup_true_lang.js +85 -0
  107. package/dist/components/Timeline.js +5 -0
  108. package/dist/components/Timeline.vue.d.ts +61 -0
  109. package/dist/components/Timeline.vue_vue_type_script_setup_true_lang.js +60 -0
  110. package/dist/components/Toaster.vue.d.ts +1 -1
  111. package/dist/components/Toggle.js +5 -0
  112. package/dist/components/Toggle.vue.d.ts +42 -0
  113. package/dist/components/Toggle.vue_vue_type_script_setup_true_lang.js +52 -0
  114. package/dist/components/ToggleGroup.js +5 -0
  115. package/dist/components/ToggleGroup.vue.d.ts +64 -0
  116. package/dist/components/ToggleGroup.vue_vue_type_script_setup_true_lang.js +78 -0
  117. package/dist/components/Toolbar.js +5 -0
  118. package/dist/components/Toolbar.vue.d.ts +52 -0
  119. package/dist/components/Toolbar.vue_vue_type_script_setup_true_lang.js +94 -0
  120. package/dist/components/Tree.js +5 -0
  121. package/dist/components/Tree.vue.d.ts +70 -0
  122. package/dist/components/Tree.vue_vue_type_script_setup_true_lang.js +112 -0
  123. package/dist/components/index.d.ts +29 -0
  124. package/dist/components/index.js +144 -86
  125. package/dist/composables/appearance.js +5 -1
  126. package/dist/composables/cartesian.d.ts +11 -0
  127. package/dist/composables/cartesian.js +18 -19
  128. package/dist/composables/command-palette.d.ts +42 -0
  129. package/dist/composables/command-palette.js +32 -0
  130. package/dist/composables/date.d.ts +18 -2
  131. package/dist/composables/date.js +23 -12
  132. package/dist/composables/kbd.d.ts +26 -0
  133. package/dist/composables/kbd.js +161 -0
  134. package/dist/composables/navigation-menu.d.ts +29 -0
  135. package/dist/composables/navigation-menu.js +6 -0
  136. package/dist/composables/scroll-fade.d.ts +35 -0
  137. package/dist/composables/scroll-fade.js +36 -0
  138. package/dist/composables/sidebar.d.ts +35 -0
  139. package/dist/composables/sidebar.js +23 -0
  140. package/dist/composables/signature.d.ts +22 -0
  141. package/dist/composables/signature.js +13 -0
  142. package/dist/index.d.ts +35 -0
  143. package/dist/index.js +153 -93
  144. package/dist/theme/accordion.d.ts +68 -0
  145. package/dist/theme/accordion.js +24 -0
  146. package/dist/theme/alert.d.ts +0 -3
  147. package/dist/theme/app-shell.d.ts +77 -0
  148. package/dist/theme/app-shell.js +35 -0
  149. package/dist/theme/avatar.d.ts +253 -0
  150. package/dist/theme/avatar.js +84 -0
  151. package/dist/theme/banner.d.ts +0 -9
  152. package/dist/theme/bar-chart.d.ts +0 -16
  153. package/dist/theme/breadcrumb.d.ts +3 -3
  154. package/dist/theme/button-group.d.ts +0 -3
  155. package/dist/theme/button.d.ts +0 -3
  156. package/dist/theme/card.js +2 -2
  157. package/dist/theme/chart-legend.d.ts +3 -11
  158. package/dist/theme/collapsible.d.ts +44 -0
  159. package/dist/theme/collapsible.js +17 -0
  160. package/dist/theme/color-picker.d.ts +98 -0
  161. package/dist/theme/color-picker.js +19 -0
  162. package/dist/theme/command-palette.d.ts +122 -0
  163. package/dist/theme/command-palette.js +22 -0
  164. package/dist/theme/container.d.ts +101 -0
  165. package/dist/theme/container.js +26 -0
  166. package/dist/theme/date-picker.d.ts +12 -0
  167. package/dist/theme/date-picker.js +1 -1
  168. package/dist/theme/dropdown-menu.d.ts +0 -9
  169. package/dist/theme/file-upload.d.ts +0 -3
  170. package/dist/theme/form.d.ts +12 -12
  171. package/dist/theme/index.d.ts +25 -0
  172. package/dist/theme/kbd.d.ts +71 -0
  173. package/dist/theme/kbd.js +29 -0
  174. package/dist/theme/line-chart.d.ts +0 -9
  175. package/dist/theme/menubar.d.ts +29 -0
  176. package/dist/theme/menubar.js +11 -0
  177. package/dist/theme/navigation-menu.d.ts +161 -0
  178. package/dist/theme/navigation-menu.js +43 -0
  179. package/dist/theme/number-input.d.ts +0 -3
  180. package/dist/theme/page-header.d.ts +47 -0
  181. package/dist/theme/page-header.js +17 -0
  182. package/dist/theme/pagination.d.ts +0 -3
  183. package/dist/theme/pin-input.d.ts +86 -0
  184. package/dist/theme/pin-input.js +32 -0
  185. package/dist/theme/popover.d.ts +119 -0
  186. package/dist/theme/popover.js +31 -0
  187. package/dist/theme/presets.d.ts +0 -2
  188. package/dist/theme/progress.d.ts +93 -0
  189. package/dist/theme/progress.js +37 -7
  190. package/dist/theme/radio-group.d.ts +24 -0
  191. package/dist/theme/radio-group.js +23 -14
  192. package/dist/theme/scroll-area.d.ts +65 -0
  193. package/dist/theme/scroll-area.js +57 -0
  194. package/dist/theme/scroll-fade.d.ts +35 -0
  195. package/dist/theme/scroll-fade.js +12 -0
  196. package/dist/theme/sidebar.d.ts +167 -0
  197. package/dist/theme/sidebar.js +43 -0
  198. package/dist/theme/signature-pad.d.ts +50 -0
  199. package/dist/theme/signature-pad.js +17 -0
  200. package/dist/theme/slider.d.ts +128 -0
  201. package/dist/theme/slider.js +49 -0
  202. package/dist/theme/sparkline.d.ts +0 -6
  203. package/dist/theme/splitter.d.ts +59 -0
  204. package/dist/theme/splitter.js +25 -0
  205. package/dist/theme/stat.d.ts +0 -3
  206. package/dist/theme/stepper.js +2 -2
  207. package/dist/theme/switch.d.ts +53 -29
  208. package/dist/theme/switch.js +33 -8
  209. package/dist/theme/table.d.ts +51 -3
  210. package/dist/theme/table.js +8 -3
  211. package/dist/theme/tabs.d.ts +0 -3
  212. package/dist/theme/tags-input.d.ts +110 -0
  213. package/dist/theme/tags-input.js +42 -0
  214. package/dist/theme/time-field.d.ts +68 -0
  215. package/dist/theme/time-field.js +21 -0
  216. package/dist/theme/timeline.d.ts +182 -0
  217. package/dist/theme/timeline.js +83 -0
  218. package/dist/theme/toggle.d.ts +145 -0
  219. package/dist/theme/toggle.js +84 -0
  220. package/dist/theme/toolbar.d.ts +56 -0
  221. package/dist/theme/toolbar.js +21 -0
  222. package/dist/theme/tree.d.ts +68 -0
  223. package/dist/theme/tree.js +28 -0
  224. package/package.json +2 -2
  225. package/theme.css +221 -0
@@ -0,0 +1,62 @@
1
+ import type { DropdownMenuEntry } from '../composables/dropdown-menu';
2
+ export interface MenubarMenuOption {
3
+ label: string;
4
+ /** Identifies the menu. Defaults to the label. */
5
+ value?: string;
6
+ disabled?: boolean;
7
+ /** The menu's entries, in the same shape `IDropdownMenu` takes. */
8
+ items?: DropdownMenuEntry[];
9
+ }
10
+ export interface MenubarProps {
11
+ menus?: MenubarMenuOption[];
12
+ /** Drop the container so the triggers sit directly on the page. */
13
+ bare?: boolean;
14
+ /** Wrap from the last menu back to the first when arrowing past the end. */
15
+ loop?: boolean;
16
+ align?: 'start' | 'center' | 'end';
17
+ sideOffset?: number;
18
+ /** Skip built-in classes; you take over styling entirely. */
19
+ unstyled?: boolean;
20
+ class?: string;
21
+ /** Override classes per slot, e.g. `{ trigger: 'px-4' }`. */
22
+ ui?: {
23
+ root?: string;
24
+ trigger?: string;
25
+ content?: string;
26
+ item?: string;
27
+ label?: string;
28
+ separator?: string;
29
+ subTrigger?: string;
30
+ subContent?: string;
31
+ };
32
+ }
33
+ /** Menus share the entry shape, renderer and panel styling with `IDropdownMenu`. */
34
+ type __VLS_Props = MenubarProps;
35
+ type __VLS_ModelProps = {
36
+ /** Which menu is open, by value. Empty string means none. */
37
+ modelValue?: string;
38
+ };
39
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
40
+ declare var __VLS_20: {
41
+ menu: MenubarMenuOption;
42
+ };
43
+ type __VLS_Slots = {} & {
44
+ trigger?: (props: typeof __VLS_20) => any;
45
+ };
46
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
47
+ "update:modelValue": (value: string) => any;
48
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
49
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
50
+ }>, {
51
+ unstyled: boolean;
52
+ align: "start" | "center" | "end";
53
+ sideOffset: number;
54
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
55
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
56
+ declare const _default: typeof __VLS_export;
57
+ export default _default;
58
+ type __VLS_WithSlots<T, S> = T & {
59
+ new (): {
60
+ $slots: S;
61
+ };
62
+ };
@@ -0,0 +1,79 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import { dropdownMenuTheme as t } from "../theme/dropdown-menu.js";
3
+ import n from "./DropdownMenuItems.js";
4
+ import { menubarTheme as r } from "../theme/menubar.js";
5
+ import { Fragment as i, computed as a, createBlock as o, createElementBlock as s, createTextVNode as c, createVNode as l, defineComponent as u, mergeModels as d, normalizeClass as f, openBlock as p, renderList as m, renderSlot as h, toDisplayString as g, unref as _, useModel as v, withCtx as y } from "vue";
6
+ import { MenubarContent as b, MenubarMenu as x, MenubarPortal as S, MenubarRoot as C, MenubarTrigger as w } from "reka-ui";
7
+ //#region src/components/Menubar.vue?vue&type=script&setup=true&lang.ts
8
+ var T = /*@__PURE__*/ u({
9
+ __name: "Menubar",
10
+ props: /*@__PURE__*/ d({
11
+ menus: {},
12
+ bare: { type: Boolean },
13
+ loop: { type: Boolean },
14
+ align: { default: "start" },
15
+ sideOffset: { default: 6 },
16
+ unstyled: {
17
+ type: Boolean,
18
+ default: void 0
19
+ },
20
+ class: {},
21
+ ui: {}
22
+ }, {
23
+ modelValue: { default: void 0 },
24
+ modelModifiers: {}
25
+ }),
26
+ emits: ["update:modelValue"],
27
+ setup(u) {
28
+ let d = u, T = v(u, "modelValue"), E = a(() => d.menus ?? []), D = (e) => e.value ?? e.label, O = e(), k = a(() => d.unstyled ?? O.unstyled), A = a(() => r({ bare: d.bare })), j = a(() => k.value ? [d.ui?.root, d.class] : A.value.root({ class: [d.ui?.root, d.class] })), M = a(() => k.value ? d.ui?.trigger : A.value.trigger({ class: d.ui?.trigger })), N = a(() => k.value ? d.ui?.content : t().content({ class: d.ui?.content }));
29
+ return (e, t) => (p(), o(_(C), {
30
+ modelValue: T.value,
31
+ "onUpdate:modelValue": t[0] ||= (e) => T.value = e,
32
+ loop: d.loop,
33
+ class: f(j.value)
34
+ }, {
35
+ default: y(() => [(p(!0), s(i, null, m(E.value, (t) => (p(), o(_(x), {
36
+ key: D(t),
37
+ value: D(t)
38
+ }, {
39
+ default: y(() => [l(_(w), {
40
+ disabled: t.disabled,
41
+ class: f(M.value)
42
+ }, {
43
+ default: y(() => [h(e.$slots, "trigger", { menu: t }, () => [c(g(t.label), 1)])]),
44
+ _: 2
45
+ }, 1032, ["disabled", "class"]), l(_(S), null, {
46
+ default: y(() => [l(_(b), {
47
+ align: d.align,
48
+ "side-offset": d.sideOffset,
49
+ class: f(N.value)
50
+ }, {
51
+ default: y(() => [l(n, {
52
+ entries: t.items ?? [],
53
+ unstyled: k.value,
54
+ ui: d.ui
55
+ }, null, 8, [
56
+ "entries",
57
+ "unstyled",
58
+ "ui"
59
+ ])]),
60
+ _: 2
61
+ }, 1032, [
62
+ "align",
63
+ "side-offset",
64
+ "class"
65
+ ])]),
66
+ _: 2
67
+ }, 1024)]),
68
+ _: 2
69
+ }, 1032, ["value"]))), 128))]),
70
+ _: 3
71
+ }, 8, [
72
+ "modelValue",
73
+ "loop",
74
+ "class"
75
+ ]));
76
+ }
77
+ });
78
+ //#endregion
79
+ export { T as default };
@@ -0,0 +1,5 @@
1
+ import e from "./NavigationMenu.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/NavigationMenu.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,75 @@
1
+ import type { NavigationMenuEntry, NavigationMenuGroupItem, NavigationMenuLinkItem } from '../composables/navigation-menu';
2
+ export interface NavigationMenuProps {
3
+ /** Top-level entries. An entry with `items` opens a panel. */
4
+ items?: NavigationMenuEntry[];
5
+ orientation?: 'horizontal' | 'vertical';
6
+ /** Columns in a panel. An entry can override this with its own `columns`. */
7
+ columns?: 1 | 2 | 3;
8
+ /**
9
+ * Accessible name for the navigation landmark — override for non-English
10
+ * apps.
11
+ */
12
+ label?: string;
13
+ /** Milliseconds a pointer must rest on a trigger before its panel opens. */
14
+ delayDuration?: number;
15
+ /** Open panels on click only, for touch-first apps. */
16
+ disableHoverTrigger?: boolean;
17
+ /** Skip built-in classes; you take over styling entirely. */
18
+ unstyled?: boolean;
19
+ class?: string;
20
+ /** Override classes per slot, e.g. `{ viewport: 'w-96' }`. */
21
+ ui?: {
22
+ root?: string;
23
+ list?: string;
24
+ item?: string;
25
+ link?: string;
26
+ triggerIcon?: string;
27
+ viewportWrapper?: string;
28
+ viewport?: string;
29
+ content?: string;
30
+ panelLink?: string;
31
+ panelLabel?: string;
32
+ panelDescription?: string;
33
+ panelIcon?: string;
34
+ };
35
+ }
36
+ type __VLS_Props = NavigationMenuProps;
37
+ type __VLS_ModelProps = {
38
+ /** Which panel is open, by entry value. Empty string means none. */
39
+ modelValue?: string;
40
+ };
41
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
42
+ declare var __VLS_14: {}, __VLS_28: {
43
+ item: NavigationMenuGroupItem;
44
+ }, __VLS_46: {
45
+ item: NavigationMenuGroupItem;
46
+ }, __VLS_81: {
47
+ item: NavigationMenuLinkItem;
48
+ };
49
+ type __VLS_Slots = {} & {
50
+ list?: (props: typeof __VLS_14) => any;
51
+ } & {
52
+ trigger?: (props: typeof __VLS_28) => any;
53
+ } & {
54
+ panel?: (props: typeof __VLS_46) => any;
55
+ } & {
56
+ item?: (props: typeof __VLS_81) => any;
57
+ };
58
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
59
+ "update:modelValue": (value: string) => any;
60
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
61
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
62
+ }>, {
63
+ unstyled: boolean;
64
+ orientation: "horizontal" | "vertical";
65
+ label: string;
66
+ columns: 1 | 2 | 3;
67
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
68
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
69
+ declare const _default: typeof __VLS_export;
70
+ export default _default;
71
+ type __VLS_WithSlots<T, S> = T & {
72
+ new (): {
73
+ $slots: S;
74
+ };
75
+ };
@@ -0,0 +1,167 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import t from "./Icon.js";
3
+ import { isNavigationGroup as n } from "../composables/navigation-menu.js";
4
+ import { navigationMenuTheme as r } from "../theme/navigation-menu.js";
5
+ import { Fragment as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, mergeModels as p, normalizeClass as m, openBlock as h, renderList as g, renderSlot as _, resolveDynamicComponent as v, toDisplayString as y, unref as b, useModel as x, withCtx as S } from "vue";
6
+ import { ArrowDown01Icon as C } from "@hugeicons/core-free-icons";
7
+ import { NavigationMenuContent as w, NavigationMenuItem as T, NavigationMenuLink as E, NavigationMenuList as D, NavigationMenuRoot as O, NavigationMenuTrigger as k, NavigationMenuViewport as A } from "reka-ui";
8
+ //#region src/components/NavigationMenu.vue?vue&type=script&setup=true&lang.ts
9
+ var j = /*@__PURE__*/ f({
10
+ __name: "NavigationMenu",
11
+ props: /*@__PURE__*/ p({
12
+ items: {},
13
+ orientation: { default: "horizontal" },
14
+ columns: { default: 1 },
15
+ label: { default: "Main" },
16
+ delayDuration: {},
17
+ disableHoverTrigger: { type: Boolean },
18
+ unstyled: {
19
+ type: Boolean,
20
+ default: void 0
21
+ },
22
+ class: {},
23
+ ui: {}
24
+ }, {
25
+ modelValue: { default: void 0 },
26
+ modelModifiers: {}
27
+ }),
28
+ emits: ["update:modelValue"],
29
+ setup(f) {
30
+ let p = f, j = x(f, "modelValue"), M = e(), N = a(() => p.unstyled ?? M.unstyled), P = a(() => p.items ?? []), F = (e) => e.label, I = a(() => P.value.some(n)), L = a(() => r({ orientation: p.orientation }));
31
+ function R(e) {
32
+ let t = p.ui?.[e];
33
+ return N.value ? t : L.value[e]({ class: t });
34
+ }
35
+ function z(e) {
36
+ let t = p.ui?.content;
37
+ return N.value ? t : r({
38
+ orientation: p.orientation,
39
+ columns: e.columns ?? p.columns
40
+ }).content({ class: t });
41
+ }
42
+ let B = (e) => e.href ? "a" : "button";
43
+ function V(e, t) {
44
+ if (e.disabled) {
45
+ t.preventDefault();
46
+ return;
47
+ }
48
+ e.onSelect?.();
49
+ }
50
+ return (e, r) => (h(), o(b(O), {
51
+ modelValue: j.value,
52
+ "onUpdate:modelValue": r[0] ||= (e) => j.value = e,
53
+ orientation: p.orientation,
54
+ "delay-duration": p.delayDuration,
55
+ "disable-hover-trigger": p.disableHoverTrigger,
56
+ "aria-label": p.label,
57
+ class: m(N.value ? [p.ui?.root, p.class] : L.value.root({ class: [p.ui?.root, p.class] }))
58
+ }, {
59
+ default: S(() => [d(b(D), { class: m(R("list")) }, {
60
+ default: S(() => [_(e.$slots, "list", {}, () => [(h(!0), c(i, null, g(P.value, (r) => (h(), o(b(T), {
61
+ key: F(r),
62
+ value: F(r),
63
+ class: m(R("item"))
64
+ }, {
65
+ default: S(() => [b(n)(r) ? (h(), c(i, { key: 0 }, [d(b(k), {
66
+ disabled: r.disabled,
67
+ class: m(R("link"))
68
+ }, {
69
+ default: S(() => [_(e.$slots, "trigger", { item: r }, () => [
70
+ r.icon ? (h(), o(t, {
71
+ key: 0,
72
+ icon: r.icon
73
+ }, null, 8, ["icon"])) : s("", !0),
74
+ u(" " + y(r.label) + " ", 1),
75
+ d(t, {
76
+ icon: b(C),
77
+ class: m(R("triggerIcon"))
78
+ }, null, 8, ["icon", "class"])
79
+ ])]),
80
+ _: 2
81
+ }, 1032, ["disabled", "class"]), d(b(w), { class: m(z(r)) }, {
82
+ default: S(() => [_(e.$slots, "panel", { item: r }, () => [(h(!0), c(i, null, g(r.items, (e) => (h(), o(b(E), {
83
+ key: e.label,
84
+ "as-child": "",
85
+ active: e.active,
86
+ onSelect: (t) => V(e, t)
87
+ }, {
88
+ default: S(() => [(h(), o(v(B(e)), {
89
+ href: e.href,
90
+ target: e.target,
91
+ type: e.href ? void 0 : "button",
92
+ "aria-current": e.active ? "page" : void 0,
93
+ "aria-disabled": e.disabled || void 0,
94
+ "data-disabled": e.disabled ? "" : void 0,
95
+ class: m(R("panelLink"))
96
+ }, {
97
+ default: S(() => [e.icon ? (h(), c("span", {
98
+ key: 0,
99
+ class: m(R("panelIcon"))
100
+ }, [d(t, { icon: e.icon }, null, 8, ["icon"])], 2)) : s("", !0), l("span", null, [l("span", { class: m(R("panelLabel")) }, y(e.label), 3), e.description ? (h(), c("span", {
101
+ key: 0,
102
+ class: m(R("panelDescription"))
103
+ }, y(e.description), 3)) : s("", !0)])]),
104
+ _: 2
105
+ }, 1032, [
106
+ "href",
107
+ "target",
108
+ "type",
109
+ "aria-current",
110
+ "aria-disabled",
111
+ "data-disabled",
112
+ "class"
113
+ ]))]),
114
+ _: 2
115
+ }, 1032, ["active", "onSelect"]))), 128))])]),
116
+ _: 2
117
+ }, 1032, ["class"])], 64)) : (h(), o(b(E), {
118
+ key: 1,
119
+ "as-child": "",
120
+ active: r.active,
121
+ onSelect: (e) => V(r, e)
122
+ }, {
123
+ default: S(() => [(h(), o(v(B(r)), {
124
+ href: r.href,
125
+ target: r.target,
126
+ type: r.href ? void 0 : "button",
127
+ "aria-current": r.active ? "page" : void 0,
128
+ "aria-disabled": r.disabled || void 0,
129
+ "data-disabled": r.disabled ? "" : void 0,
130
+ class: m(R("link"))
131
+ }, {
132
+ default: S(() => [_(e.$slots, "item", { item: r }, () => [r.icon ? (h(), o(t, {
133
+ key: 0,
134
+ icon: r.icon
135
+ }, null, 8, ["icon"])) : s("", !0), u(" " + y(r.label), 1)])]),
136
+ _: 2
137
+ }, 1032, [
138
+ "href",
139
+ "target",
140
+ "type",
141
+ "aria-current",
142
+ "aria-disabled",
143
+ "data-disabled",
144
+ "class"
145
+ ]))]),
146
+ _: 2
147
+ }, 1032, ["active", "onSelect"]))]),
148
+ _: 2
149
+ }, 1032, ["value", "class"]))), 128))])]),
150
+ _: 3
151
+ }, 8, ["class"]), I.value ? (h(), c("div", {
152
+ key: 0,
153
+ class: m(R("viewportWrapper"))
154
+ }, [d(b(A), { class: m(R("viewport")) }, null, 8, ["class"])], 2)) : s("", !0)]),
155
+ _: 3
156
+ }, 8, [
157
+ "modelValue",
158
+ "orientation",
159
+ "delay-duration",
160
+ "disable-hover-trigger",
161
+ "aria-label",
162
+ "class"
163
+ ]));
164
+ }
165
+ });
166
+ //#endregion
167
+ export { j as default };
@@ -94,7 +94,7 @@ var M = [
94
94
  let n = v.ui?.[e];
95
95
  return B.value ? [n, t] : X.value[e]({ class: [n, t] });
96
96
  }
97
- return (e, n) => (x(), m("div", { class: b(Z("root")) }, [D(h("input", y({
97
+ return (e, n) => (x(), m("div", { class: b(B.value ? [v.ui?.root, v.class] : X.value.root({ class: [v.ui?.root, v.class] })) }, [D(h("input", y({
98
98
  id: L.value,
99
99
  "onUpdate:modelValue": n[0] ||= (e) => V.value = e
100
100
  }, e.$attrs, {
@@ -110,7 +110,7 @@ var M = [
110
110
  required: v.required,
111
111
  "aria-invalid": R.value || void 0,
112
112
  "aria-describedby": C(I)?.describedBy.value,
113
- class: B.value ? [v.ui?.input, v.class] : X.value.input({ class: [v.ui?.input, v.class] }),
113
+ class: Z("input"),
114
114
  onFocus: G,
115
115
  onBlur: K,
116
116
  onKeydown: [n[1] ||= O(k((e) => q(1), ["prevent"]), ["up"]), n[2] ||= O(k((e) => q(-1), ["prevent"]), ["down"])]
@@ -0,0 +1,5 @@
1
+ import e from "./PageHeader.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/PageHeader.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,52 @@
1
+ export interface PageHeaderProps {
2
+ /** Render as a different element or component. */
3
+ as?: string;
4
+ title?: string;
5
+ description?: string;
6
+ /**
7
+ * Heading level for the title. A page header is usually the `h1`, but a
8
+ * panel or a nested view may need to sit lower in the outline.
9
+ */
10
+ level?: 1 | 2 | 3;
11
+ /** Draw a rule underneath, for pages that run straight into content. */
12
+ bordered?: boolean;
13
+ /** Skip built-in classes; you take over styling entirely. */
14
+ unstyled?: boolean;
15
+ class?: string;
16
+ /** Override classes per slot, e.g. `{ title: 'text-3xl' }`. */
17
+ ui?: {
18
+ root?: string;
19
+ top?: string;
20
+ row?: string;
21
+ heading?: string;
22
+ title?: string;
23
+ description?: string;
24
+ actions?: string;
25
+ };
26
+ }
27
+ declare var __VLS_8: {}, __VLS_16: {}, __VLS_18: {}, __VLS_20: {}, __VLS_22: {};
28
+ type __VLS_Slots = {} & {
29
+ breadcrumb?: (props: typeof __VLS_8) => any;
30
+ } & {
31
+ title?: (props: typeof __VLS_16) => any;
32
+ } & {
33
+ description?: (props: typeof __VLS_18) => any;
34
+ } & {
35
+ actions?: (props: typeof __VLS_20) => any;
36
+ } & {
37
+ default?: (props: typeof __VLS_22) => any;
38
+ };
39
+ declare const __VLS_base: import("vue").DefineComponent<PageHeaderProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PageHeaderProps> & Readonly<{}>, {
40
+ unstyled: boolean;
41
+ as: string;
42
+ bordered: boolean;
43
+ level: 1 | 2 | 3;
44
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
45
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
46
+ declare const _default: typeof __VLS_export;
47
+ export default _default;
48
+ type __VLS_WithSlots<T, S> = T & {
49
+ new (): {
50
+ $slots: S;
51
+ };
52
+ };
@@ -0,0 +1,59 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import { pageHeaderTheme as t } from "../theme/page-header.js";
3
+ import { computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, defineComponent as c, normalizeClass as l, openBlock as u, renderSlot as d, resolveDynamicComponent as f, toDisplayString as p, unref as m, withCtx as h } from "vue";
4
+ import { Primitive as g } from "reka-ui";
5
+ //#region src/components/PageHeader.vue?vue&type=script&setup=true&lang.ts
6
+ var _ = /*@__PURE__*/ c({
7
+ __name: "PageHeader",
8
+ props: {
9
+ as: { default: "header" },
10
+ title: {},
11
+ description: {},
12
+ level: { default: 1 },
13
+ bordered: {
14
+ type: Boolean,
15
+ default: void 0
16
+ },
17
+ unstyled: {
18
+ type: Boolean,
19
+ default: void 0
20
+ },
21
+ class: {},
22
+ ui: {}
23
+ },
24
+ setup(c) {
25
+ let _ = c, v = e(), y = n(() => _.unstyled ?? v.unstyled), b = n(() => `h${_.level}`), x = n(() => t({ bordered: _.bordered }));
26
+ function S(e) {
27
+ let t = _.ui?.[e];
28
+ return y.value ? t : x.value[e]({ class: t });
29
+ }
30
+ return (e, t) => (u(), r(m(g), {
31
+ as: _.as,
32
+ class: l(y.value ? [_.ui?.root, _.class] : x.value.root({ class: [_.ui?.root, _.class] }))
33
+ }, {
34
+ default: h(() => [
35
+ e.$slots.breadcrumb ? (u(), a("div", {
36
+ key: 0,
37
+ class: l(S("top"))
38
+ }, [d(e.$slots, "breadcrumb")], 2)) : i("", !0),
39
+ o("div", { class: l(S("row")) }, [o("div", { class: l(S("heading")) }, [_.title || e.$slots.title ? (u(), r(f(b.value), {
40
+ key: 0,
41
+ class: l(S("title"))
42
+ }, {
43
+ default: h(() => [d(e.$slots, "title", {}, () => [s(p(_.title), 1)])]),
44
+ _: 3
45
+ }, 8, ["class"])) : i("", !0), _.description || e.$slots.description ? (u(), a("p", {
46
+ key: 1,
47
+ class: l(S("description"))
48
+ }, [d(e.$slots, "description", {}, () => [s(p(_.description), 1)])], 2)) : i("", !0)], 2), e.$slots.actions ? (u(), a("div", {
49
+ key: 0,
50
+ class: l(S("actions"))
51
+ }, [d(e.$slots, "actions")], 2)) : i("", !0)], 2),
52
+ d(e.$slots, "default")
53
+ ]),
54
+ _: 3
55
+ }, 8, ["as", "class"]));
56
+ }
57
+ });
58
+ //#endregion
59
+ export { _ as default };
@@ -0,0 +1,5 @@
1
+ import e from "./PinInput.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/PinInput.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,65 @@
1
+ export interface PinInputProps {
2
+ /**
3
+ * The code, as a plain string. Reka works in arrays of single characters;
4
+ * a PIN is a string everywhere else in an app — in the request body, in the
5
+ * validator, in the email it arrived in — so the array stays an internal
6
+ * detail and never reaches your model.
7
+ */
8
+ modelValue?: string;
9
+ /** How many cells to render. */
10
+ length?: number;
11
+ /** `number` gets the numeric keypad on mobile and rejects non-digits. */
12
+ type?: 'text' | 'number';
13
+ /** Render the entered characters as dots, like a password field. */
14
+ mask?: boolean;
15
+ /**
16
+ * Let phones offer the code from an SMS. Sets the one-time-code autofill
17
+ * hint, which is the whole reason a reader does not have to retype it.
18
+ */
19
+ otp?: boolean;
20
+ /** Character shown in an empty cell. */
21
+ placeholder?: string;
22
+ /**
23
+ * Insert a separator after every N cells — `3` gives 123–456. Long codes
24
+ * are read in chunks, and an unbroken row of eight is hard to check.
25
+ */
26
+ groupSize?: number;
27
+ /** What that separator shows. */
28
+ separator?: string;
29
+ disabled?: boolean;
30
+ invalid?: boolean;
31
+ size?: 'sm' | 'md' | 'lg';
32
+ id?: string;
33
+ /** Skip built-in classes; you take over styling entirely. */
34
+ unstyled?: boolean;
35
+ class?: string;
36
+ /** Override classes per slot, e.g. `{ input: 'size-14' }`. */
37
+ ui?: {
38
+ root?: string;
39
+ input?: string;
40
+ separator?: string;
41
+ };
42
+ }
43
+ declare var __VLS_15: {};
44
+ type __VLS_Slots = {} & {
45
+ separator?: (props: typeof __VLS_15) => any;
46
+ };
47
+ declare const __VLS_base: import("vue").DefineComponent<PinInputProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
48
+ "update:modelValue": (value: string) => any;
49
+ complete: (value: string) => any;
50
+ }, string, import("vue").PublicProps, Readonly<PinInputProps> & Readonly<{
51
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
52
+ onComplete?: ((value: string) => any) | undefined;
53
+ }>, {
54
+ length: number;
55
+ unstyled: boolean;
56
+ separator: string;
57
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
58
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
59
+ declare const _default: typeof __VLS_export;
60
+ export default _default;
61
+ type __VLS_WithSlots<T, S> = T & {
62
+ new (): {
63
+ $slots: S;
64
+ };
65
+ };
@@ -0,0 +1,76 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import { pinInputTheme as t } from "../theme/pin-input.js";
3
+ import { Fragment as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createTextVNode as s, createVNode as c, defineComponent as l, normalizeClass as u, openBlock as d, renderList as f, renderSlot as p, toDisplayString as m, unref as h, withCtx as g } from "vue";
4
+ import { PinInputInput as _, PinInputRoot as v } from "reka-ui";
5
+ //#region src/components/PinInput.vue?vue&type=script&setup=true&lang.ts
6
+ var y = /*@__PURE__*/ l({
7
+ __name: "PinInput",
8
+ props: {
9
+ modelValue: {},
10
+ length: { default: 6 },
11
+ type: {},
12
+ mask: { type: Boolean },
13
+ otp: { type: Boolean },
14
+ placeholder: {},
15
+ groupSize: {},
16
+ separator: { default: "–" },
17
+ disabled: { type: Boolean },
18
+ invalid: { type: Boolean },
19
+ size: {},
20
+ id: {},
21
+ unstyled: {
22
+ type: Boolean,
23
+ default: void 0
24
+ },
25
+ class: {},
26
+ ui: {}
27
+ },
28
+ emits: ["update:modelValue", "complete"],
29
+ setup(l, { emit: y }) {
30
+ let b = l, x = y, S = r(() => (b.modelValue ?? "").split("")), C = (e) => e.join(""), w = r(() => Array.from({ length: b.length }, (e, t) => t)), T = r(() => {
31
+ let e = b.groupSize;
32
+ return !e || e <= 0 ? /* @__PURE__ */ new Set() : new Set(w.value.filter((t) => (t + 1) % e === 0 && t !== b.length - 1));
33
+ }), E = e(), D = r(() => b.unstyled ?? E.unstyled), O = r(() => t({
34
+ size: b.size,
35
+ invalid: b.invalid
36
+ })), k = r(() => D.value ? [b.ui?.root, b.class] : O.value.root({ class: [b.ui?.root, b.class] })), A = r(() => D.value ? b.ui?.input : O.value.input({ class: b.ui?.input })), j = r(() => D.value ? b.ui?.separator : O.value.separator({ class: b.ui?.separator }));
37
+ return (e, t) => (d(), i(h(v), {
38
+ id: b.id,
39
+ "model-value": S.value,
40
+ type: b.type,
41
+ mask: b.mask,
42
+ otp: b.otp,
43
+ placeholder: b.placeholder,
44
+ disabled: b.disabled,
45
+ class: u(k.value),
46
+ "onUpdate:modelValue": t[0] ||= (e) => x("update:modelValue", C(e)),
47
+ onComplete: t[1] ||= (e) => x("complete", C(e))
48
+ }, {
49
+ default: g(() => [(d(!0), o(n, null, f(w.value, (t) => (d(), o(n, { key: t }, [c(h(_), {
50
+ index: t,
51
+ "aria-invalid": b.invalid || void 0,
52
+ class: u(A.value)
53
+ }, null, 8, [
54
+ "index",
55
+ "aria-invalid",
56
+ "class"
57
+ ]), T.value.has(t) ? (d(), o("span", {
58
+ key: 0,
59
+ class: u(j.value),
60
+ "aria-hidden": "true"
61
+ }, [p(e.$slots, "separator", {}, () => [s(m(b.separator), 1)])], 2)) : a("", !0)], 64))), 128))]),
62
+ _: 3
63
+ }, 8, [
64
+ "id",
65
+ "model-value",
66
+ "type",
67
+ "mask",
68
+ "otp",
69
+ "placeholder",
70
+ "disabled",
71
+ "class"
72
+ ]));
73
+ }
74
+ });
75
+ //#endregion
76
+ export { y as default };
@@ -0,0 +1,5 @@
1
+ import e from "./Popover.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/Popover.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };