iryx-ui 0.12.0 → 0.14.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 (234) 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/Breadcrumb.vue.d.ts +1 -1
  27. package/dist/components/Button.vue.d.ts +2 -2
  28. package/dist/components/ButtonGroup.vue.d.ts +1 -1
  29. package/dist/components/Card.vue.d.ts +1 -1
  30. package/dist/components/Collapsible.js +5 -0
  31. package/dist/components/Collapsible.vue.d.ts +58 -0
  32. package/dist/components/Collapsible.vue_vue_type_script_setup_true_lang.js +67 -0
  33. package/dist/components/ColorPicker.js +5 -0
  34. package/dist/components/ColorPicker.vue.d.ts +49 -0
  35. package/dist/components/ColorPicker.vue_vue_type_script_setup_true_lang.js +172 -0
  36. package/dist/components/Combobox.vue.d.ts +40 -13
  37. package/dist/components/Combobox.vue_vue_type_script_setup_true_lang.js +172 -103
  38. package/dist/components/CommandPalette.js +5 -0
  39. package/dist/components/CommandPalette.vue.d.ts +63 -0
  40. package/dist/components/CommandPalette.vue_vue_type_script_setup_true_lang.js +185 -0
  41. package/dist/components/Container.js +5 -0
  42. package/dist/components/Container.vue.d.ts +33 -0
  43. package/dist/components/Container.vue_vue_type_script_setup_true_lang.js +40 -0
  44. package/dist/components/ContextMenu.js +5 -0
  45. package/dist/components/ContextMenu.vue.d.ts +42 -0
  46. package/dist/components/ContextMenu.vue_vue_type_script_setup_true_lang.js +49 -0
  47. package/dist/components/DatePicker.vue.d.ts +1 -1
  48. package/dist/components/DateRangePicker.vue.d.ts +2 -2
  49. package/dist/components/Dialog.vue.d.ts +1 -1
  50. package/dist/components/Drawer.vue.d.ts +2 -2
  51. package/dist/components/EmptyState.vue.d.ts +1 -1
  52. package/dist/components/FileUpload.vue.d.ts +2 -2
  53. package/dist/components/Icon.vue.d.ts +6 -0
  54. package/dist/components/Icon.vue_vue_type_script_setup_true_lang.js +11 -9
  55. package/dist/components/Input.vue.d.ts +1 -1
  56. package/dist/components/Input.vue_vue_type_script_setup_true_lang.js +4 -4
  57. package/dist/components/Kbd.js +5 -0
  58. package/dist/components/Kbd.vue.d.ts +46 -0
  59. package/dist/components/Kbd.vue_vue_type_script_setup_true_lang.js +41 -0
  60. package/dist/components/LineChart.vue_vue_type_script_setup_true_lang.js +19 -19
  61. package/dist/components/Menubar.js +5 -0
  62. package/dist/components/Menubar.vue.d.ts +62 -0
  63. package/dist/components/Menubar.vue_vue_type_script_setup_true_lang.js +79 -0
  64. package/dist/components/NavigationMenu.js +5 -0
  65. package/dist/components/NavigationMenu.vue.d.ts +75 -0
  66. package/dist/components/NavigationMenu.vue_vue_type_script_setup_true_lang.js +167 -0
  67. package/dist/components/NumberInput.vue_vue_type_script_setup_true_lang.js +2 -2
  68. package/dist/components/PageHeader.js +5 -0
  69. package/dist/components/PageHeader.vue.d.ts +52 -0
  70. package/dist/components/PageHeader.vue_vue_type_script_setup_true_lang.js +59 -0
  71. package/dist/components/Pagination.vue.d.ts +1 -1
  72. package/dist/components/PinInput.js +5 -0
  73. package/dist/components/PinInput.vue.d.ts +65 -0
  74. package/dist/components/PinInput.vue_vue_type_script_setup_true_lang.js +76 -0
  75. package/dist/components/Popover.js +5 -0
  76. package/dist/components/Popover.vue.d.ts +75 -0
  77. package/dist/components/Popover.vue_vue_type_script_setup_true_lang.js +99 -0
  78. package/dist/components/Progress.vue.d.ts +20 -1
  79. package/dist/components/Progress.vue_vue_type_script_setup_true_lang.js +84 -44
  80. package/dist/components/RadioGroup.vue_vue_type_script_setup_true_lang.js +4 -1
  81. package/dist/components/ScrollArea.js +5 -0
  82. package/dist/components/ScrollArea.vue.d.ts +41 -0
  83. package/dist/components/ScrollArea.vue_vue_type_script_setup_true_lang.js +68 -0
  84. package/dist/components/ScrollFade.js +5 -0
  85. package/dist/components/ScrollFade.vue.d.ts +36 -0
  86. package/dist/components/ScrollFade.vue_vue_type_script_setup_true_lang.js +59 -0
  87. package/dist/components/Select.vue.d.ts +2 -2
  88. package/dist/components/Sidebar.js +5 -0
  89. package/dist/components/Sidebar.vue.d.ts +72 -0
  90. package/dist/components/Sidebar.vue_vue_type_script_setup_true_lang.js +183 -0
  91. package/dist/components/SignaturePad.js +5 -0
  92. package/dist/components/SignaturePad.vue.d.ts +60 -0
  93. package/dist/components/SignaturePad.vue_vue_type_script_setup_true_lang.js +158 -0
  94. package/dist/components/Skeleton.vue.d.ts +2 -2
  95. package/dist/components/Skeleton.vue_vue_type_script_setup_true_lang.js +8 -8
  96. package/dist/components/Slider.js +5 -0
  97. package/dist/components/Slider.vue.d.ts +80 -0
  98. package/dist/components/Slider.vue_vue_type_script_setup_true_lang.js +115 -0
  99. package/dist/components/Splitter.js +5 -0
  100. package/dist/components/Splitter.vue.d.ts +59 -0
  101. package/dist/components/Splitter.vue_vue_type_script_setup_true_lang.js +69 -0
  102. package/dist/components/Stat.vue.d.ts +1 -1
  103. package/dist/components/Switch.vue.d.ts +1 -0
  104. package/dist/components/Switch.vue_vue_type_script_setup_true_lang.js +7 -3
  105. package/dist/components/Table.vue.d.ts +7 -1
  106. package/dist/components/Table.vue_vue_type_script_setup_true_lang.js +73 -58
  107. package/dist/components/TagsInput.js +5 -0
  108. package/dist/components/TagsInput.vue.d.ts +71 -0
  109. package/dist/components/TagsInput.vue_vue_type_script_setup_true_lang.js +119 -0
  110. package/dist/components/Textarea.vue_vue_type_script_setup_true_lang.js +3 -3
  111. package/dist/components/TimeField.js +5 -0
  112. package/dist/components/TimeField.vue.d.ts +50 -0
  113. package/dist/components/TimeField.vue_vue_type_script_setup_true_lang.js +85 -0
  114. package/dist/components/Timeline.js +5 -0
  115. package/dist/components/Timeline.vue.d.ts +61 -0
  116. package/dist/components/Timeline.vue_vue_type_script_setup_true_lang.js +60 -0
  117. package/dist/components/Toaster.vue.d.ts +1 -1
  118. package/dist/components/Toggle.js +5 -0
  119. package/dist/components/Toggle.vue.d.ts +42 -0
  120. package/dist/components/Toggle.vue_vue_type_script_setup_true_lang.js +52 -0
  121. package/dist/components/ToggleGroup.js +5 -0
  122. package/dist/components/ToggleGroup.vue.d.ts +64 -0
  123. package/dist/components/ToggleGroup.vue_vue_type_script_setup_true_lang.js +78 -0
  124. package/dist/components/Toolbar.js +5 -0
  125. package/dist/components/Toolbar.vue.d.ts +52 -0
  126. package/dist/components/Toolbar.vue_vue_type_script_setup_true_lang.js +94 -0
  127. package/dist/components/Tree.js +5 -0
  128. package/dist/components/Tree.vue.d.ts +70 -0
  129. package/dist/components/Tree.vue_vue_type_script_setup_true_lang.js +112 -0
  130. package/dist/components/index.d.ts +30 -0
  131. package/dist/components/index.js +146 -86
  132. package/dist/composables/appearance.js +5 -1
  133. package/dist/composables/cartesian.d.ts +11 -0
  134. package/dist/composables/cartesian.js +18 -19
  135. package/dist/composables/command-palette.d.ts +42 -0
  136. package/dist/composables/command-palette.js +32 -0
  137. package/dist/composables/date.d.ts +18 -2
  138. package/dist/composables/date.js +23 -12
  139. package/dist/composables/kbd.d.ts +26 -0
  140. package/dist/composables/kbd.js +161 -0
  141. package/dist/composables/navigation-menu.d.ts +29 -0
  142. package/dist/composables/navigation-menu.js +6 -0
  143. package/dist/composables/scroll-fade.d.ts +35 -0
  144. package/dist/composables/scroll-fade.js +36 -0
  145. package/dist/composables/sidebar.d.ts +35 -0
  146. package/dist/composables/sidebar.js +23 -0
  147. package/dist/composables/signature.d.ts +22 -0
  148. package/dist/composables/signature.js +13 -0
  149. package/dist/index.d.ts +37 -0
  150. package/dist/index.js +155 -93
  151. package/dist/theme/accordion.d.ts +68 -0
  152. package/dist/theme/accordion.js +24 -0
  153. package/dist/theme/alert.d.ts +0 -3
  154. package/dist/theme/app-shell.d.ts +77 -0
  155. package/dist/theme/app-shell.js +35 -0
  156. package/dist/theme/avatar.d.ts +253 -0
  157. package/dist/theme/avatar.js +84 -0
  158. package/dist/theme/banner.d.ts +0 -9
  159. package/dist/theme/bar-chart.d.ts +0 -16
  160. package/dist/theme/breadcrumb.d.ts +3 -3
  161. package/dist/theme/button-group.d.ts +0 -3
  162. package/dist/theme/button.d.ts +0 -3
  163. package/dist/theme/card.js +2 -2
  164. package/dist/theme/chart-legend.d.ts +3 -11
  165. package/dist/theme/collapsible.d.ts +44 -0
  166. package/dist/theme/collapsible.js +17 -0
  167. package/dist/theme/color-picker.d.ts +98 -0
  168. package/dist/theme/color-picker.js +19 -0
  169. package/dist/theme/combobox.d.ts +48 -0
  170. package/dist/theme/combobox.js +23 -3
  171. package/dist/theme/command-palette.d.ts +122 -0
  172. package/dist/theme/command-palette.js +22 -0
  173. package/dist/theme/container.d.ts +101 -0
  174. package/dist/theme/container.js +26 -0
  175. package/dist/theme/date-picker.d.ts +12 -0
  176. package/dist/theme/date-picker.js +1 -1
  177. package/dist/theme/dropdown-menu.d.ts +0 -9
  178. package/dist/theme/file-upload.d.ts +0 -3
  179. package/dist/theme/form.d.ts +12 -12
  180. package/dist/theme/index.d.ts +25 -0
  181. package/dist/theme/kbd.d.ts +71 -0
  182. package/dist/theme/kbd.js +29 -0
  183. package/dist/theme/line-chart.d.ts +0 -9
  184. package/dist/theme/menubar.d.ts +29 -0
  185. package/dist/theme/menubar.js +11 -0
  186. package/dist/theme/navigation-menu.d.ts +161 -0
  187. package/dist/theme/navigation-menu.js +43 -0
  188. package/dist/theme/number-input.d.ts +0 -3
  189. package/dist/theme/page-header.d.ts +47 -0
  190. package/dist/theme/page-header.js +17 -0
  191. package/dist/theme/pagination.d.ts +0 -3
  192. package/dist/theme/pin-input.d.ts +86 -0
  193. package/dist/theme/pin-input.js +32 -0
  194. package/dist/theme/popover.d.ts +119 -0
  195. package/dist/theme/popover.js +31 -0
  196. package/dist/theme/presets.d.ts +0 -2
  197. package/dist/theme/progress.d.ts +93 -0
  198. package/dist/theme/progress.js +37 -7
  199. package/dist/theme/radio-group.d.ts +24 -0
  200. package/dist/theme/radio-group.js +23 -14
  201. package/dist/theme/scroll-area.d.ts +65 -0
  202. package/dist/theme/scroll-area.js +57 -0
  203. package/dist/theme/scroll-fade.d.ts +35 -0
  204. package/dist/theme/scroll-fade.js +12 -0
  205. package/dist/theme/sidebar.d.ts +167 -0
  206. package/dist/theme/sidebar.js +43 -0
  207. package/dist/theme/signature-pad.d.ts +50 -0
  208. package/dist/theme/signature-pad.js +17 -0
  209. package/dist/theme/slider.d.ts +128 -0
  210. package/dist/theme/slider.js +49 -0
  211. package/dist/theme/sparkline.d.ts +0 -6
  212. package/dist/theme/splitter.d.ts +59 -0
  213. package/dist/theme/splitter.js +25 -0
  214. package/dist/theme/stat.d.ts +0 -3
  215. package/dist/theme/stepper.js +2 -2
  216. package/dist/theme/switch.d.ts +53 -29
  217. package/dist/theme/switch.js +33 -8
  218. package/dist/theme/table.d.ts +51 -3
  219. package/dist/theme/table.js +8 -3
  220. package/dist/theme/tabs.d.ts +0 -3
  221. package/dist/theme/tags-input.d.ts +110 -0
  222. package/dist/theme/tags-input.js +42 -0
  223. package/dist/theme/time-field.d.ts +68 -0
  224. package/dist/theme/time-field.js +21 -0
  225. package/dist/theme/timeline.d.ts +182 -0
  226. package/dist/theme/timeline.js +83 -0
  227. package/dist/theme/toggle.d.ts +145 -0
  228. package/dist/theme/toggle.js +84 -0
  229. package/dist/theme/toolbar.d.ts +56 -0
  230. package/dist/theme/toolbar.js +21 -0
  231. package/dist/theme/tree.d.ts +68 -0
  232. package/dist/theme/tree.js +28 -0
  233. package/package.json +2 -2
  234. package/theme.css +221 -0
@@ -0,0 +1,75 @@
1
+ export interface PopoverProps {
2
+ side?: 'top' | 'right' | 'bottom' | 'left';
3
+ align?: 'start' | 'center' | 'end';
4
+ sideOffset?: number;
5
+ /** Render the little pointer against the trigger. */
6
+ arrow?: boolean;
7
+ /**
8
+ * Trap focus and make the rest of the page inert, as a dialog does. For a
9
+ * popover holding a form rather than a passing detail.
10
+ */
11
+ modal?: boolean;
12
+ /** Show a close button in the corner. */
13
+ showClose?: boolean;
14
+ /** Names that close button, since it is an icon on its own. */
15
+ closeLabel?: string;
16
+ padding?: 'none' | 'sm' | 'md' | 'lg';
17
+ /** `none` lets the content size itself — for a grid or a menu. */
18
+ width?: 'none' | 'sm' | 'md' | 'lg';
19
+ /**
20
+ * Heading shown above the content. It is also the only row inset to clear
21
+ * the close button, so the body below can fill the panel's full width.
22
+ */
23
+ title?: string;
24
+ /** Names the panel for a screen reader. Without one it is an unnamed dialog. */
25
+ ariaLabel?: string;
26
+ /** Skip built-in classes; you take over styling entirely. */
27
+ unstyled?: boolean;
28
+ class?: string;
29
+ /** Override classes per slot, e.g. `{ content: 'w-96' }`. */
30
+ ui?: {
31
+ content?: string;
32
+ title?: string;
33
+ arrow?: string;
34
+ close?: string;
35
+ };
36
+ }
37
+ /**
38
+ * A panel anchored to whatever opened it, for content too big for a tooltip
39
+ * and too small for a dialog. Unlike `ITooltip` it takes focus and can hold
40
+ * interactive content; unlike `IDialog` it leaves the page usable behind it.
41
+ */
42
+ type __VLS_Props = PopoverProps;
43
+ type __VLS_ModelProps = {
44
+ 'open'?: boolean;
45
+ };
46
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
47
+ declare var __VLS_14: {}, __VLS_28: {}, __VLS_30: {
48
+ close: () => boolean;
49
+ };
50
+ type __VLS_Slots = {} & {
51
+ trigger?: (props: typeof __VLS_14) => any;
52
+ } & {
53
+ title?: (props: typeof __VLS_28) => any;
54
+ } & {
55
+ default?: (props: typeof __VLS_30) => any;
56
+ };
57
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
58
+ "update:open": (value: boolean) => any;
59
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
60
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
61
+ }>, {
62
+ unstyled: boolean;
63
+ closeLabel: string;
64
+ align: "start" | "center" | "end";
65
+ side: "top" | "right" | "bottom" | "left";
66
+ sideOffset: number;
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,99 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import t from "./Icon.js";
3
+ import { popoverTheme as n } from "../theme/popover.js";
4
+ import { computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createTextVNode as s, createVNode as c, defineComponent as l, mergeModels as u, normalizeClass as d, openBlock as f, renderSlot as p, toDisplayString as m, unref as h, useModel as g, withCtx as _ } from "vue";
5
+ import { Cancel01Icon as v } from "@hugeicons/core-free-icons";
6
+ import { PopoverArrow as y, PopoverClose as b, PopoverContent as x, PopoverPortal as S, PopoverRoot as C, PopoverTrigger as w } from "reka-ui";
7
+ //#region src/components/Popover.vue?vue&type=script&setup=true&lang.ts
8
+ var T = /*@__PURE__*/ l({
9
+ __name: "Popover",
10
+ props: /*@__PURE__*/ u({
11
+ side: { default: "bottom" },
12
+ align: { default: "center" },
13
+ sideOffset: { default: 6 },
14
+ arrow: { type: Boolean },
15
+ modal: { type: Boolean },
16
+ showClose: { type: Boolean },
17
+ closeLabel: { default: "Close" },
18
+ padding: {},
19
+ width: {},
20
+ title: {},
21
+ ariaLabel: {},
22
+ unstyled: {
23
+ type: Boolean,
24
+ default: void 0
25
+ },
26
+ class: {},
27
+ ui: {}
28
+ }, {
29
+ open: {
30
+ type: Boolean,
31
+ default: void 0
32
+ },
33
+ openModifiers: {}
34
+ }),
35
+ emits: ["update:open"],
36
+ setup(l) {
37
+ let u = l, T = g(l, "open"), E = e(), D = r(() => u.unstyled ?? E.unstyled), O = r(() => n({
38
+ padding: u.padding,
39
+ width: u.width,
40
+ withClose: u.showClose
41
+ })), k = r(() => D.value ? [u.ui?.content, u.class] : O.value.content({ class: [
42
+ u.showClose && "relative",
43
+ u.ui?.content,
44
+ u.class
45
+ ] })), A = r(() => D.value ? u.ui?.arrow : O.value.arrow({ class: u.ui?.arrow })), j = r(() => D.value ? u.ui?.close : O.value.close({ class: u.ui?.close })), M = r(() => D.value ? u.ui?.title : O.value.title({ class: u.ui?.title }));
46
+ return (e, n) => (f(), i(h(C), {
47
+ open: T.value,
48
+ "onUpdate:open": n[0] ||= (e) => T.value = e,
49
+ modal: u.modal
50
+ }, {
51
+ default: _(() => [c(h(w), { "as-child": "" }, {
52
+ default: _(() => [p(e.$slots, "trigger")]),
53
+ _: 3
54
+ }), c(h(S), null, {
55
+ default: _(() => [c(h(x), {
56
+ side: u.side,
57
+ align: u.align,
58
+ "side-offset": u.sideOffset,
59
+ "aria-label": u.ariaLabel,
60
+ class: d(k.value)
61
+ }, {
62
+ default: _(() => [
63
+ u.title || e.$slots.title ? (f(), o("p", {
64
+ key: 0,
65
+ class: d(M.value)
66
+ }, [p(e.$slots, "title", {}, () => [s(m(u.title), 1)])], 2)) : a("", !0),
67
+ p(e.$slots, "default", { close: () => T.value = !1 }),
68
+ u.showClose ? (f(), i(h(b), {
69
+ key: 1,
70
+ "data-popover-close": "",
71
+ "aria-label": u.closeLabel,
72
+ class: d(j.value)
73
+ }, {
74
+ default: _(() => [c(t, { icon: h(v) }, null, 8, ["icon"])]),
75
+ _: 1
76
+ }, 8, ["aria-label", "class"])) : a("", !0),
77
+ u.arrow ? (f(), i(h(y), {
78
+ key: 2,
79
+ class: d(A.value),
80
+ width: 10,
81
+ height: 5
82
+ }, null, 8, ["class"])) : a("", !0)
83
+ ]),
84
+ _: 3
85
+ }, 8, [
86
+ "side",
87
+ "align",
88
+ "side-offset",
89
+ "aria-label",
90
+ "class"
91
+ ])]),
92
+ _: 3
93
+ })]),
94
+ _: 3
95
+ }, 8, ["open", "modal"]));
96
+ }
97
+ });
98
+ //#endregion
99
+ export { T as default };
@@ -1,8 +1,22 @@
1
+ export type ProgressVariant = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';
2
+ export interface ProgressSegment {
3
+ /** Amount this run covers, on the same scale as `max`. */
4
+ value: number;
5
+ /** Named in the legend. Without one, no legend row is rendered for it. */
6
+ label?: string;
7
+ variant?: ProgressVariant;
8
+ }
1
9
  export interface ProgressProps {
2
10
  /** Current value. `null` (or `indeterminate`) means unknown duration. */
3
11
  modelValue?: number | null;
4
12
  max?: number;
5
- variant?: 'primary' | 'success' | 'warning' | 'danger' | 'info';
13
+ variant?: ProgressVariant;
14
+ /**
15
+ * Break the bar into runs that share one track — storage by file type, a
16
+ * budget by category. Given `segments`, `modelValue` is ignored and the
17
+ * accessible value becomes their sum.
18
+ */
19
+ segments?: ProgressSegment[];
6
20
  size?: 'sm' | 'md' | 'lg';
7
21
  /** Unknown duration — animates instead of tracking a value. */
8
22
  indeterminate?: boolean;
@@ -26,6 +40,11 @@ export interface ProgressProps {
26
40
  value?: string;
27
41
  track?: string;
28
42
  indicator?: string;
43
+ segment?: string;
44
+ legend?: string;
45
+ legendItem?: string;
46
+ legendSwatch?: string;
47
+ legendValue?: string;
29
48
  };
30
49
  }
31
50
  declare var __VLS_1: {}, __VLS_3: {
@@ -1,15 +1,19 @@
1
1
  import { useIryxUiConfig as e } from "../config.js";
2
2
  import { progressTheme as t } from "../theme/progress.js";
3
- import { computed as n, createCommentVNode as r, createElementBlock as i, createTextVNode as a, createVNode as o, defineComponent as s, mergeProps as c, normalizeClass as l, normalizeStyle as u, openBlock as d, renderSlot as f, toDisplayString as p, unref as m, useSlots as h, withCtx as g } from "vue";
4
- import { ProgressIndicator as _, ProgressRoot as v, useId as y } from "reka-ui";
3
+ import { Fragment as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, mergeProps as d, normalizeClass as f, normalizeStyle as p, openBlock as m, renderList as h, renderSlot as g, toDisplayString as _, unref as v, useSlots as y, withCtx as b } from "vue";
4
+ import { ProgressIndicator as x, ProgressRoot as S, useId as C } from "reka-ui";
5
5
  //#region src/components/Progress.vue?vue&type=script&setup=true&lang.ts
6
- var b = ["id"], x = /*@__PURE__*/ s({
6
+ var w = ["id"], T = {
7
+ key: 0,
8
+ class: "flex h-full w-full"
9
+ }, E = /*@__PURE__*/ u({
7
10
  inheritAttrs: !1,
8
11
  __name: "Progress",
9
12
  props: {
10
13
  modelValue: {},
11
14
  max: { default: 100 },
12
15
  variant: {},
16
+ segments: {},
13
17
  size: {},
14
18
  indeterminate: { type: Boolean },
15
19
  label: {},
@@ -22,47 +26,83 @@ var b = ["id"], x = /*@__PURE__*/ s({
22
26
  class: {},
23
27
  ui: {}
24
28
  },
25
- setup(s) {
26
- let x = s, S = h(), C = y(), w = n(() => !!(x.label || S.label)), T = n(() => x.indeterminate || x.modelValue == null), E = n(() => T.value ? null : Math.min(Math.max(x.modelValue ?? 0, 0), x.max)), D = n(() => E.value == null ? 0 : E.value / x.max * 100), O = n(() => {
27
- if (E.value != null) return x.formatValue ? x.formatValue(E.value, x.max) : `${Math.round(D.value)}%`;
28
- }), k = n(() => !!(x.label || x.showValue && O.value)), A = e(), j = n(() => x.unstyled ?? A.unstyled), M = n(() => t({
29
- variant: x.variant,
30
- size: x.size,
31
- indeterminate: T.value
32
- })), N = n(() => j.value ? [x.ui?.root, x.class] : M.value.root({ class: [x.ui?.root, x.class] })), P = n(() => j.value ? x.ui?.header : M.value.header({ class: x.ui?.header })), F = n(() => j.value ? x.ui?.label : M.value.label({ class: x.ui?.label })), I = n(() => j.value ? x.ui?.value : M.value.value({ class: x.ui?.value })), L = n(() => j.value ? x.ui?.track : M.value.track({ class: x.ui?.track })), R = n(() => j.value ? x.ui?.indicator : M.value.indicator({ class: x.ui?.indicator })), z = n(() => T.value ? void 0 : { transform: `translateX(-${100 - D.value}%)` });
33
- return (e, t) => (d(), i("div", { class: l(N.value) }, [k.value ? (d(), i("div", {
34
- key: 0,
35
- class: l(P.value)
36
- }, [w.value ? (d(), i("span", {
37
- key: 0,
38
- id: m(C),
39
- class: l(F.value)
40
- }, [f(e.$slots, "label", {}, () => [a(p(x.label), 1)])], 10, b)) : r("", !0), x.showValue && O.value ? (d(), i("span", {
41
- key: 1,
42
- class: l(I.value)
43
- }, [f(e.$slots, "value", {
44
- value: E.value,
45
- percent: D.value,
46
- formatted: O.value
47
- }, () => [a(p(O.value), 1)])], 2)) : r("", !0)], 2)) : r("", !0), o(m(v), c({
48
- "model-value": E.value,
49
- max: x.max,
50
- "get-value-label": () => O.value ?? "",
51
- "aria-labelledby": w.value ? m(C) : void 0
52
- }, e.$attrs, { class: L.value }), {
53
- default: g(() => [o(m(_), {
54
- class: l(R.value),
55
- style: u(z.value)
56
- }, null, 8, ["class", "style"])]),
57
- _: 1
58
- }, 16, [
59
- "model-value",
60
- "max",
61
- "get-value-label",
62
- "aria-labelledby",
63
- "class"
64
- ])], 2));
29
+ setup(u) {
30
+ let E = u, D = y(), O = C(), k = r(() => !!(E.label || D.label)), A = r(() => (E.segments?.length ?? 0) > 0), j = r(() => !A.value && (E.indeterminate || E.modelValue == null)), M = r(() => {
31
+ let e = 0;
32
+ return (E.segments ?? []).map((t) => {
33
+ let n = Math.max(t.value, 0), r = Math.max(E.max - e, 0), i = Math.min(n, r);
34
+ return e += i, {
35
+ ...t,
36
+ value: n,
37
+ percent: E.max > 0 ? i / E.max * 100 : 0
38
+ };
39
+ });
40
+ }), N = r(() => M.value.reduce((e, t) => e + t.value, 0)), P = r(() => M.value.filter((e) => e.label)), F = r(() => j.value ? null : A.value ? Math.min(N.value, E.max) : Math.min(Math.max(E.modelValue ?? 0, 0), E.max)), I = r(() => F.value == null ? 0 : F.value / E.max * 100), L = r(() => {
41
+ if (F.value != null) return E.formatValue ? E.formatValue(F.value, E.max) : `${Math.round(I.value)}%`;
42
+ }), R = r(() => !!(E.label || E.showValue && L.value)), z = e(), B = r(() => E.unstyled ?? z.unstyled), V = r(() => t({
43
+ variant: E.variant,
44
+ size: E.size,
45
+ indeterminate: j.value
46
+ })), H = r(() => B.value ? [E.ui?.root, E.class] : V.value.root({ class: [E.ui?.root, E.class] })), U = r(() => B.value ? E.ui?.header : V.value.header({ class: E.ui?.header })), W = r(() => B.value ? E.ui?.label : V.value.label({ class: E.ui?.label })), G = r(() => B.value ? E.ui?.value : V.value.value({ class: E.ui?.value })), K = r(() => B.value ? E.ui?.track : V.value.track({ class: E.ui?.track })), q = r(() => B.value ? E.ui?.indicator : V.value.indicator({ class: E.ui?.indicator })), J = r(() => B.value ? E.ui?.legend : V.value.legend({ class: E.ui?.legend })), Y = r(() => B.value ? E.ui?.legendItem : V.value.legendItem({ class: E.ui?.legendItem })), X = r(() => B.value ? E.ui?.legendValue : V.value.legendValue({ class: E.ui?.legendValue }));
47
+ function Z(e) {
48
+ return B.value ? E.ui?.segment : t({ variant: e ?? "neutral" }).segment({ class: E.ui?.segment });
49
+ }
50
+ function Q(e) {
51
+ return B.value ? E.ui?.legendSwatch : t({ variant: e ?? "neutral" }).legendSwatch({ class: E.ui?.legendSwatch });
52
+ }
53
+ let $ = r(() => j.value ? void 0 : { transform: `translateX(-${100 - I.value}%)` });
54
+ return (e, t) => (m(), o("div", { class: f(H.value) }, [
55
+ R.value ? (m(), o("div", {
56
+ key: 0,
57
+ class: f(U.value)
58
+ }, [k.value ? (m(), o("span", {
59
+ key: 0,
60
+ id: v(O),
61
+ class: f(W.value)
62
+ }, [g(e.$slots, "label", {}, () => [c(_(E.label), 1)])], 10, w)) : a("", !0), E.showValue && L.value ? (m(), o("span", {
63
+ key: 1,
64
+ class: f(G.value)
65
+ }, [g(e.$slots, "value", {
66
+ value: F.value,
67
+ percent: I.value,
68
+ formatted: L.value
69
+ }, () => [c(_(L.value), 1)])], 2)) : a("", !0)], 2)) : a("", !0),
70
+ l(v(S), d({
71
+ "model-value": F.value,
72
+ max: E.max,
73
+ "get-value-label": () => L.value ?? "",
74
+ "aria-labelledby": k.value ? v(O) : void 0
75
+ }, e.$attrs, { class: K.value }), {
76
+ default: b(() => [A.value ? (m(), o("div", T, [(m(!0), o(n, null, h(M.value, (e, t) => (m(), o("div", {
77
+ key: e.label ?? t,
78
+ class: f(Z(e.variant)),
79
+ style: p({ width: `${e.percent}%` })
80
+ }, null, 6))), 128))])) : (m(), i(v(x), {
81
+ key: 1,
82
+ class: f(q.value),
83
+ style: p($.value)
84
+ }, null, 8, ["class", "style"]))]),
85
+ _: 1
86
+ }, 16, [
87
+ "model-value",
88
+ "max",
89
+ "get-value-label",
90
+ "aria-labelledby",
91
+ "class"
92
+ ]),
93
+ P.value.length ? (m(), o("ul", {
94
+ key: 1,
95
+ class: f(J.value)
96
+ }, [(m(!0), o(n, null, h(P.value, (e, t) => (m(), o("li", {
97
+ key: e.label ?? t,
98
+ class: f(Y.value)
99
+ }, [
100
+ s("span", { class: f(Q(e.variant)) }, null, 2),
101
+ s("span", null, _(e.label), 1),
102
+ s("span", { class: f(X.value) }, _(E.formatValue ? E.formatValue(e.value, E.max) : `${Math.round(e.value / E.max * 100)}%`), 3)
103
+ ], 2))), 128))], 2)) : a("", !0)
104
+ ], 2));
65
105
  }
66
106
  });
67
107
  //#endregion
68
- export { x as default };
108
+ export { E as default };
@@ -33,7 +33,10 @@ var T = ["id"], E = /*@__PURE__*/ u({
33
33
  }), O), A = r(() => (D.items ?? []).map((e) => typeof e == "string" ? {
34
34
  label: e,
35
35
  value: e
36
- } : e)), j = w(), M = e(), N = r(() => D.unstyled ?? M.unstyled), P = r(() => t({ size: D.size })), F = r(() => N.value ? [D.ui?.root, D.class] : P.value.root({ class: [D.ui?.root, D.class] })), I = r(() => N.value ? D.ui?.item : P.value.item({ class: D.ui?.item })), L = r(() => N.value ? D.ui?.label : P.value.label({ class: D.ui?.label })), R = r(() => N.value ? D.ui?.description : P.value.description({ class: D.ui?.description }));
36
+ } : e)), j = w(), M = e(), N = r(() => D.unstyled ?? M.unstyled), P = r(() => t({
37
+ size: D.size,
38
+ orientation: D.orientation ?? "vertical"
39
+ })), F = r(() => N.value ? [D.ui?.root, D.class] : P.value.root({ class: [D.ui?.root, D.class] })), I = r(() => N.value ? D.ui?.item : P.value.item({ class: D.ui?.item })), L = r(() => N.value ? D.ui?.label : P.value.label({ class: D.ui?.label })), R = r(() => N.value ? D.ui?.description : P.value.description({ class: D.ui?.description }));
37
40
  return (e, t) => (p(), i(_(S), d(_(k), { class: F.value }), {
38
41
  default: v(() => [h(e.$slots, "default", {}, () => [(p(!0), o(n, null, m(A.value, (e) => (p(), o("div", {
39
42
  key: e.value,
@@ -0,0 +1,5 @@
1
+ import e from "./ScrollArea.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/ScrollArea.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,41 @@
1
+ export interface ScrollAreaProps {
2
+ /**
3
+ * When the bars show. `hover` is the quietest and `always` the most
4
+ * discoverable; `auto` behaves like a native bar that appears only when
5
+ * there is something to scroll.
6
+ */
7
+ type?: 'auto' | 'always' | 'scroll' | 'hover';
8
+ /** Which axes get a bar. */
9
+ orientation?: 'vertical' | 'horizontal' | 'both';
10
+ size?: 'sm' | 'md' | 'lg';
11
+ /** How long the bars linger after scrolling stops, for `scroll` and `hover`. */
12
+ scrollHideDelay?: number;
13
+ /** Skip built-in classes; you take over styling entirely. */
14
+ unstyled?: boolean;
15
+ class?: string;
16
+ /** Override classes per slot, e.g. `{ thumb: 'bg-primary' }`. */
17
+ ui?: {
18
+ root?: string;
19
+ viewport?: string;
20
+ scrollbar?: string;
21
+ thumb?: string;
22
+ corner?: string;
23
+ };
24
+ }
25
+ declare var __VLS_14: {};
26
+ type __VLS_Slots = {} & {
27
+ default?: (props: typeof __VLS_14) => any;
28
+ };
29
+ declare const __VLS_base: import("vue").DefineComponent<ScrollAreaProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ScrollAreaProps> & Readonly<{}>, {
30
+ type: "auto" | "always" | "scroll" | "hover";
31
+ unstyled: boolean;
32
+ orientation: "vertical" | "horizontal" | "both";
33
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
34
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
35
+ declare const _default: typeof __VLS_export;
36
+ export default _default;
37
+ type __VLS_WithSlots<T, S> = T & {
38
+ new (): {
39
+ $slots: S;
40
+ };
41
+ };
@@ -0,0 +1,68 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import { scrollAreaTheme as t } from "../theme/scroll-area.js";
3
+ import { computed as n, createBlock as r, createCommentVNode as i, createVNode as a, defineComponent as o, normalizeClass as s, openBlock as c, renderSlot as l, unref as u, withCtx as d } from "vue";
4
+ import { ScrollAreaCorner as f, ScrollAreaRoot as p, ScrollAreaScrollbar as m, ScrollAreaThumb as h, ScrollAreaViewport as g } from "reka-ui";
5
+ //#region src/components/ScrollArea.vue?vue&type=script&setup=true&lang.ts
6
+ var _ = /*@__PURE__*/ o({
7
+ __name: "ScrollArea",
8
+ props: {
9
+ type: { default: "hover" },
10
+ orientation: { default: "vertical" },
11
+ size: {},
12
+ scrollHideDelay: {},
13
+ unstyled: {
14
+ type: Boolean,
15
+ default: void 0
16
+ },
17
+ class: {},
18
+ ui: {}
19
+ },
20
+ setup(o) {
21
+ let _ = o, v = n(() => _.orientation !== "horizontal"), y = n(() => _.orientation !== "vertical"), b = e(), x = n(() => _.unstyled ?? b.unstyled), S = n(() => t({
22
+ orientation: "vertical",
23
+ size: _.size
24
+ })), C = n(() => t({
25
+ orientation: "horizontal",
26
+ size: _.size
27
+ })), w = n(() => x.value ? [_.ui?.root, _.class] : S.value.root({ class: [_.ui?.root, _.class] })), T = n(() => x.value ? _.ui?.viewport : S.value.viewport({ class: _.ui?.viewport })), E = n(() => x.value ? _.ui?.thumb : S.value.thumb({ class: _.ui?.thumb })), D = n(() => x.value ? _.ui?.corner : S.value.corner({ class: _.ui?.corner }));
28
+ return (e, t) => (c(), r(u(p), {
29
+ type: _.type,
30
+ "scroll-hide-delay": _.scrollHideDelay,
31
+ class: s(w.value)
32
+ }, {
33
+ default: d(() => [
34
+ a(u(g), { class: s(T.value) }, {
35
+ default: d(() => [l(e.$slots, "default")]),
36
+ _: 3
37
+ }, 8, ["class"]),
38
+ v.value ? (c(), r(u(m), {
39
+ key: 0,
40
+ orientation: "vertical",
41
+ class: s(x.value ? _.ui?.scrollbar : S.value.scrollbar({ class: _.ui?.scrollbar }))
42
+ }, {
43
+ default: d(() => [a(u(h), { class: s(E.value) }, null, 8, ["class"])]),
44
+ _: 1
45
+ }, 8, ["class"])) : i("", !0),
46
+ y.value ? (c(), r(u(m), {
47
+ key: 1,
48
+ orientation: "horizontal",
49
+ class: s(x.value ? _.ui?.scrollbar : C.value.scrollbar({ class: _.ui?.scrollbar }))
50
+ }, {
51
+ default: d(() => [a(u(h), { class: s(E.value) }, null, 8, ["class"])]),
52
+ _: 1
53
+ }, 8, ["class"])) : i("", !0),
54
+ _.orientation === "both" ? (c(), r(u(f), {
55
+ key: 2,
56
+ class: s(D.value)
57
+ }, null, 8, ["class"])) : i("", !0)
58
+ ]),
59
+ _: 3
60
+ }, 8, [
61
+ "type",
62
+ "scroll-hide-delay",
63
+ "class"
64
+ ]));
65
+ }
66
+ });
67
+ //#endregion
68
+ export { _ as default };
@@ -0,0 +1,5 @@
1
+ import e from "./ScrollFade.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/ScrollFade.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,36 @@
1
+ export interface ScrollFadeProps {
2
+ /** Which way it scrolls. */
3
+ orientation?: 'vertical' | 'horizontal';
4
+ /** Length of the fade, as any CSS length. */
5
+ size?: string;
6
+ /** Never fade the leading edge, e.g. under a sticky header that hides it. */
7
+ fadeStart?: boolean;
8
+ /** Never fade the trailing edge. */
9
+ fadeEnd?: boolean;
10
+ /** Skip built-in classes; you take over styling entirely. */
11
+ unstyled?: boolean;
12
+ class?: string;
13
+ }
14
+ type __VLS_Slots = {
15
+ /** Receives the live edge state, for a caller who wants to react to it. */
16
+ default: (props: {
17
+ atStart: boolean;
18
+ atEnd: boolean;
19
+ overflowing: boolean;
20
+ }) => any;
21
+ };
22
+ declare const __VLS_base: import("vue").DefineComponent<ScrollFadeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ScrollFadeProps> & Readonly<{}>, {
23
+ size: string;
24
+ unstyled: boolean;
25
+ orientation: "vertical" | "horizontal";
26
+ fadeStart: boolean;
27
+ fadeEnd: boolean;
28
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
29
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
30
+ declare const _default: typeof __VLS_export;
31
+ export default _default;
32
+ type __VLS_WithSlots<T, S> = T & {
33
+ new (): {
34
+ $slots: S;
35
+ };
36
+ };
@@ -0,0 +1,59 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import { scrollFadeMask as t, useScrollEdges as n } from "../composables/scroll-fade.js";
3
+ import { scrollFadeTheme as r } from "../theme/scroll-fade.js";
4
+ import { computed as i, createElementBlock as a, defineComponent as o, normalizeClass as s, normalizeStyle as c, openBlock as l, ref as u, renderSlot as d, toRef as f, unref as p } from "vue";
5
+ //#region src/components/ScrollFade.vue?vue&type=script&setup=true&lang.ts
6
+ var m = [
7
+ "data-at-start",
8
+ "data-at-end",
9
+ "data-overflowing"
10
+ ], h = /*@__PURE__*/ o({
11
+ __name: "ScrollFade",
12
+ props: {
13
+ orientation: { default: "vertical" },
14
+ size: { default: "2rem" },
15
+ fadeStart: {
16
+ type: Boolean,
17
+ default: !0
18
+ },
19
+ fadeEnd: {
20
+ type: Boolean,
21
+ default: !0
22
+ },
23
+ unstyled: {
24
+ type: Boolean,
25
+ default: void 0
26
+ },
27
+ class: {}
28
+ },
29
+ setup(o) {
30
+ let h = o, g = u(), { atStart: _, atEnd: v, overflowing: y } = n(g, f(h, "orientation")), b = i(() => {
31
+ if (!y.value) return;
32
+ let e = t({
33
+ orientation: h.orientation,
34
+ size: h.size,
35
+ fadeStart: h.fadeStart && !_.value,
36
+ fadeEnd: h.fadeEnd && !v.value
37
+ });
38
+ return e ? {
39
+ maskImage: e,
40
+ WebkitMaskImage: e
41
+ } : void 0;
42
+ }), x = e(), S = i(() => h.unstyled ?? x.unstyled), C = i(() => r({ orientation: h.orientation })), w = i(() => S.value ? h.class : C.value.root({ class: h.class }));
43
+ return (e, t) => (l(), a("div", {
44
+ ref_key: "root",
45
+ ref: g,
46
+ class: s(w.value),
47
+ style: c(b.value),
48
+ "data-at-start": p(_) ? "" : void 0,
49
+ "data-at-end": p(v) ? "" : void 0,
50
+ "data-overflowing": p(y) ? "" : void 0
51
+ }, [d(e.$slots, "default", {
52
+ atStart: p(_),
53
+ atEnd: p(v),
54
+ overflowing: p(y)
55
+ })], 14, m));
56
+ }
57
+ });
58
+ //#endregion
59
+ export { h as default };
@@ -35,11 +35,11 @@ type __VLS_Slots = {} & {
35
35
  default?: (props: typeof __VLS_48) => any;
36
36
  };
37
37
  declare const __VLS_base: import("vue").DefineComponent<SelectProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
38
- "update:open": (value: boolean) => any;
39
38
  "update:modelValue": (value: import("reka-ui").AcceptableValue) => any;
39
+ "update:open": (value: boolean) => any;
40
40
  }, string, import("vue").PublicProps, Readonly<SelectProps> & Readonly<{
41
- "onUpdate:open"?: ((value: boolean) => any) | undefined;
42
41
  "onUpdate:modelValue"?: ((value: import("reka-ui").AcceptableValue) => any) | undefined;
42
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
43
43
  }>, {
44
44
  unstyled: boolean;
45
45
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,5 @@
1
+ import e from "./Sidebar.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/Sidebar.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };