iryx-ui 0.2.0 → 0.3.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 (164) hide show
  1. package/README.md +180 -20
  2. package/dist/component-names.d.ts +1 -1
  3. package/dist/components/Alert.vue.d.ts +3 -3
  4. package/dist/components/Breadcrumb.vue.d.ts +45 -0
  5. package/dist/components/Button.vue.d.ts +8 -0
  6. package/dist/components/ButtonGroup.vue.d.ts +32 -0
  7. package/dist/components/ConfirmDialog.vue.d.ts +18 -0
  8. package/dist/components/Dialog.vue.d.ts +65 -0
  9. package/dist/components/DropdownMenu.vue.d.ts +49 -0
  10. package/dist/components/DropdownMenuItems.vue.d.ts +24 -0
  11. package/dist/components/EmptyState.vue.d.ts +46 -0
  12. package/dist/components/FormField.vue.d.ts +9 -0
  13. package/dist/components/Icon.vue.d.ts +8 -0
  14. package/dist/components/Label.vue.d.ts +6 -0
  15. package/dist/components/Pagination.vue.d.ts +57 -0
  16. package/dist/components/Progress.vue.d.ts +52 -0
  17. package/dist/components/Separator.vue.d.ts +36 -0
  18. package/dist/components/Skeleton.vue.d.ts +20 -0
  19. package/dist/components/Stat.vue.d.ts +57 -0
  20. package/dist/components/Stepper.vue.d.ts +61 -0
  21. package/dist/components/Tabs.vue.d.ts +63 -0
  22. package/dist/components/Toaster.vue.d.ts +28 -0
  23. package/dist/components/Tooltip.vue.d.ts +49 -0
  24. package/dist/components/index.d.ts +15 -0
  25. package/dist/composables/button-group.d.ts +12 -0
  26. package/dist/composables/confirm.d.ts +36 -0
  27. package/dist/composables/dropdown-menu.d.ts +22 -0
  28. package/dist/composables/icon.d.ts +10 -0
  29. package/dist/composables/toast.d.ts +42 -0
  30. package/dist/config.d.ts +9 -0
  31. package/dist/index.d.ts +19 -0
  32. package/dist/index.js +64 -31
  33. package/dist/node_modules/.pnpm/@hugeicons_core-free-icons@4.2.3/node_modules/@hugeicons/core-free-icons/dist/esm/index.js +201 -0
  34. package/dist/node_modules/.pnpm/@hugeicons_vue@1.0.7_vue@3.5.35_typescript@6.0.3_/node_modules/@hugeicons/vue/dist/esm/_virtual/_plugin-vue_export-helper.js +8 -0
  35. package/dist/node_modules/.pnpm/@hugeicons_vue@1.0.7_vue@3.5.35_typescript@6.0.3_/node_modules/@hugeicons/vue/dist/esm/components/HugeiconsIcon.vue.js +25 -0
  36. package/dist/node_modules/.pnpm/@hugeicons_vue@1.0.7_vue@3.5.35_typescript@6.0.3_/node_modules/@hugeicons/vue/dist/esm/components/HugeiconsIcon.vue2.js +63 -0
  37. package/dist/nuxt.js +1 -1
  38. package/dist/packages/iryx-ui/src/component-names.js +4 -0
  39. package/dist/packages/iryx-ui/src/components/Alert.vue_vue_type_script_setup_true_lang.js +75 -0
  40. package/dist/packages/iryx-ui/src/components/Breadcrumb.js +5 -0
  41. package/dist/packages/iryx-ui/src/components/Breadcrumb.vue_vue_type_script_setup_true_lang.js +68 -0
  42. package/dist/packages/iryx-ui/src/components/Button.vue_vue_type_script_setup_true_lang.js +59 -0
  43. package/dist/packages/iryx-ui/src/components/ButtonGroup.js +5 -0
  44. package/dist/packages/iryx-ui/src/components/ButtonGroup.vue_vue_type_script_setup_true_lang.js +39 -0
  45. package/dist/packages/iryx-ui/src/components/Checkbox.vue_vue_type_script_setup_true_lang.js +92 -0
  46. package/dist/packages/iryx-ui/src/components/ConfirmDialog.js +5 -0
  47. package/dist/packages/iryx-ui/src/components/ConfirmDialog.vue_vue_type_script_setup_true_lang.js +63 -0
  48. package/dist/packages/iryx-ui/src/components/Dialog.js +5 -0
  49. package/dist/packages/iryx-ui/src/components/Dialog.vue_vue_type_script_setup_true_lang.js +99 -0
  50. package/dist/packages/iryx-ui/src/components/DropdownMenu.js +5 -0
  51. package/dist/packages/iryx-ui/src/components/DropdownMenu.vue_vue_type_script_setup_true_lang.js +67 -0
  52. package/dist/packages/iryx-ui/src/components/DropdownMenuItems.js +5 -0
  53. package/dist/packages/iryx-ui/src/components/DropdownMenuItems.vue_vue_type_script_setup_true_lang.js +92 -0
  54. package/dist/packages/iryx-ui/src/components/EmptyState.js +5 -0
  55. package/dist/packages/iryx-ui/src/components/EmptyState.vue_vue_type_script_setup_true_lang.js +55 -0
  56. package/dist/{components → packages/iryx-ui/src/components}/FormField.vue_vue_type_script_setup_true_lang.js +5 -3
  57. package/dist/packages/iryx-ui/src/components/Icon.js +5 -0
  58. package/dist/packages/iryx-ui/src/components/Icon.vue_vue_type_script_setup_true_lang.js +26 -0
  59. package/dist/{components → packages/iryx-ui/src/components}/Label.vue_vue_type_script_setup_true_lang.js +2 -0
  60. package/dist/packages/iryx-ui/src/components/Pagination.js +5 -0
  61. package/dist/packages/iryx-ui/src/components/Pagination.vue_vue_type_script_setup_true_lang.js +94 -0
  62. package/dist/packages/iryx-ui/src/components/Progress.js +5 -0
  63. package/dist/packages/iryx-ui/src/components/Progress.vue_vue_type_script_setup_true_lang.js +65 -0
  64. package/dist/packages/iryx-ui/src/components/Select.vue_vue_type_script_setup_true_lang.js +85 -0
  65. package/dist/packages/iryx-ui/src/components/Separator.js +5 -0
  66. package/dist/packages/iryx-ui/src/components/Separator.vue_vue_type_script_setup_true_lang.js +56 -0
  67. package/dist/packages/iryx-ui/src/components/Skeleton.js +5 -0
  68. package/dist/packages/iryx-ui/src/components/Skeleton.vue_vue_type_script_setup_true_lang.js +48 -0
  69. package/dist/packages/iryx-ui/src/components/Stat.js +5 -0
  70. package/dist/packages/iryx-ui/src/components/Stat.vue_vue_type_script_setup_true_lang.js +63 -0
  71. package/dist/packages/iryx-ui/src/components/Stepper.js +5 -0
  72. package/dist/packages/iryx-ui/src/components/Stepper.vue_vue_type_script_setup_true_lang.js +89 -0
  73. package/dist/packages/iryx-ui/src/components/Tabs.js +5 -0
  74. package/dist/packages/iryx-ui/src/components/Tabs.vue_vue_type_script_setup_true_lang.js +78 -0
  75. package/dist/packages/iryx-ui/src/components/Toaster.js +5 -0
  76. package/dist/packages/iryx-ui/src/components/Toaster.vue_vue_type_script_setup_true_lang.js +115 -0
  77. package/dist/packages/iryx-ui/src/components/Tooltip.js +5 -0
  78. package/dist/packages/iryx-ui/src/components/Tooltip.vue_vue_type_script_setup_true_lang.js +70 -0
  79. package/dist/packages/iryx-ui/src/components/index.js +64 -0
  80. package/dist/{composables → packages/iryx-ui/src/composables}/appearance.js +11 -7
  81. package/dist/packages/iryx-ui/src/composables/button-group.js +8 -0
  82. package/dist/packages/iryx-ui/src/composables/confirm.js +25 -0
  83. package/dist/packages/iryx-ui/src/composables/dropdown-menu.js +9 -0
  84. package/dist/packages/iryx-ui/src/composables/icon.js +6 -0
  85. package/dist/packages/iryx-ui/src/composables/toast.js +38 -0
  86. package/dist/{theme → packages/iryx-ui/src/theme}/badge.js +3 -3
  87. package/dist/packages/iryx-ui/src/theme/breadcrumb.js +12 -0
  88. package/dist/packages/iryx-ui/src/theme/button-group.js +15 -0
  89. package/dist/packages/iryx-ui/src/theme/button.js +59 -0
  90. package/dist/packages/iryx-ui/src/theme/dialog.js +23 -0
  91. package/dist/packages/iryx-ui/src/theme/dropdown-menu.js +16 -0
  92. package/dist/packages/iryx-ui/src/theme/empty-state.js +34 -0
  93. package/dist/packages/iryx-ui/src/theme/form.js +38 -0
  94. package/dist/{theme → packages/iryx-ui/src/theme}/label.js +10 -1
  95. package/dist/packages/iryx-ui/src/theme/pagination.js +29 -0
  96. package/dist/packages/iryx-ui/src/theme/progress.js +33 -0
  97. package/dist/packages/iryx-ui/src/theme/separator.js +22 -0
  98. package/dist/packages/iryx-ui/src/theme/skeleton.js +13 -0
  99. package/dist/packages/iryx-ui/src/theme/stat.js +30 -0
  100. package/dist/packages/iryx-ui/src/theme/stepper.js +25 -0
  101. package/dist/packages/iryx-ui/src/theme/tabs.js +52 -0
  102. package/dist/packages/iryx-ui/src/theme/toast.js +53 -0
  103. package/dist/packages/iryx-ui/src/theme/tooltip.js +8 -0
  104. package/dist/theme/breadcrumb.d.ts +59 -0
  105. package/dist/theme/button-group.d.ts +29 -0
  106. package/dist/theme/button.d.ts +17 -2
  107. package/dist/theme/dialog.d.ts +74 -0
  108. package/dist/theme/dropdown-menu.d.ts +53 -0
  109. package/dist/theme/empty-state.d.ts +86 -0
  110. package/dist/theme/form.d.ts +62 -35
  111. package/dist/theme/index.d.ts +14 -0
  112. package/dist/theme/label.d.ts +18 -0
  113. package/dist/theme/pagination.d.ts +71 -0
  114. package/dist/theme/progress.d.ts +143 -0
  115. package/dist/theme/separator.d.ts +50 -0
  116. package/dist/theme/skeleton.d.ts +23 -0
  117. package/dist/theme/stat.d.ts +110 -0
  118. package/dist/theme/stepper.d.ts +56 -0
  119. package/dist/theme/tabs.d.ts +104 -0
  120. package/dist/theme/toast.d.ts +176 -0
  121. package/dist/theme/tooltip.d.ts +32 -0
  122. package/package.json +4 -3
  123. package/theme.css +55 -0
  124. package/dist/component-names.js +0 -19
  125. package/dist/components/Alert.vue_vue_type_script_setup_true_lang.js +0 -74
  126. package/dist/components/Button.vue_vue_type_script_setup_true_lang.js +0 -54
  127. package/dist/components/Checkbox.vue_vue_type_script_setup_true_lang.js +0 -79
  128. package/dist/components/Select.vue_vue_type_script_setup_true_lang.js +0 -84
  129. package/dist/components/index.js +0 -34
  130. package/dist/theme/button.js +0 -27
  131. package/dist/theme/form.js +0 -14
  132. /package/dist/{components → packages/iryx-ui/src/components}/Alert.js +0 -0
  133. /package/dist/{components → packages/iryx-ui/src/components}/App.js +0 -0
  134. /package/dist/{components → packages/iryx-ui/src/components}/App.vue_vue_type_script_setup_true_lang.js +0 -0
  135. /package/dist/{components → packages/iryx-ui/src/components}/Badge.js +0 -0
  136. /package/dist/{components → packages/iryx-ui/src/components}/Badge.vue_vue_type_script_setup_true_lang.js +0 -0
  137. /package/dist/{components → packages/iryx-ui/src/components}/Button.js +0 -0
  138. /package/dist/{components → packages/iryx-ui/src/components}/Card.js +0 -0
  139. /package/dist/{components → packages/iryx-ui/src/components}/Card.vue_vue_type_script_setup_true_lang.js +0 -0
  140. /package/dist/{components → packages/iryx-ui/src/components}/Checkbox.js +0 -0
  141. /package/dist/{components → packages/iryx-ui/src/components}/Form.js +0 -0
  142. /package/dist/{components → packages/iryx-ui/src/components}/Form.vue_vue_type_script_setup_true_lang.js +0 -0
  143. /package/dist/{components → packages/iryx-ui/src/components}/FormField.js +0 -0
  144. /package/dist/{components → packages/iryx-ui/src/components}/Input.js +0 -0
  145. /package/dist/{components → packages/iryx-ui/src/components}/Input.vue_vue_type_script_setup_true_lang.js +0 -0
  146. /package/dist/{components → packages/iryx-ui/src/components}/Label.js +0 -0
  147. /package/dist/{components → packages/iryx-ui/src/components}/RadioGroup.js +0 -0
  148. /package/dist/{components → packages/iryx-ui/src/components}/RadioGroup.vue_vue_type_script_setup_true_lang.js +0 -0
  149. /package/dist/{components → packages/iryx-ui/src/components}/Select.js +0 -0
  150. /package/dist/{components → packages/iryx-ui/src/components}/Switch.js +0 -0
  151. /package/dist/{components → packages/iryx-ui/src/components}/Switch.vue_vue_type_script_setup_true_lang.js +0 -0
  152. /package/dist/{components → packages/iryx-ui/src/components}/Textarea.js +0 -0
  153. /package/dist/{components → packages/iryx-ui/src/components}/Textarea.vue_vue_type_script_setup_true_lang.js +0 -0
  154. /package/dist/{composables → packages/iryx-ui/src/composables}/form.js +0 -0
  155. /package/dist/{config.js → packages/iryx-ui/src/config.js} +0 -0
  156. /package/dist/{plugin.js → packages/iryx-ui/src/plugin.js} +0 -0
  157. /package/dist/{theme → packages/iryx-ui/src/theme}/alert.js +0 -0
  158. /package/dist/{theme → packages/iryx-ui/src/theme}/card.js +0 -0
  159. /package/dist/{theme → packages/iryx-ui/src/theme}/checkbox.js +0 -0
  160. /package/dist/{theme → packages/iryx-ui/src/theme}/input.js +0 -0
  161. /package/dist/{theme → packages/iryx-ui/src/theme}/presets.js +0 -0
  162. /package/dist/{theme → packages/iryx-ui/src/theme}/radio-group.js +0 -0
  163. /package/dist/{theme → packages/iryx-ui/src/theme}/select.js +0 -0
  164. /package/dist/{theme → packages/iryx-ui/src/theme}/switch.js +0 -0
@@ -0,0 +1,57 @@
1
+ export interface PaginationProps {
2
+ /** Total number of records, not pages. */
3
+ total?: number;
4
+ itemsPerPage?: number;
5
+ /** How many pages to show either side of the current one. */
6
+ siblingCount?: number;
7
+ /** Keep the first and last page visible however far away they are. */
8
+ showEdges?: boolean;
9
+ size?: 'sm' | 'md' | 'lg';
10
+ /** Accessible names — override for non-English apps. */
11
+ prevLabel?: string;
12
+ nextLabel?: string;
13
+ label?: string;
14
+ /** Skip built-in classes; you take over styling entirely. */
15
+ unstyled?: boolean;
16
+ class?: string;
17
+ /** Override classes per slot, e.g. `{ item: 'rounded-full' }`. */
18
+ ui?: {
19
+ root?: string;
20
+ list?: string;
21
+ item?: string;
22
+ ellipsis?: string;
23
+ };
24
+ }
25
+ type __VLS_Props = PaginationProps;
26
+ type __VLS_ModelProps = {
27
+ 'page'?: number;
28
+ };
29
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
30
+ declare var __VLS_20: {}, __VLS_45: {};
31
+ type __VLS_Slots = {} & {
32
+ prev?: (props: typeof __VLS_20) => any;
33
+ } & {
34
+ next?: (props: typeof __VLS_45) => any;
35
+ };
36
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
37
+ "update:page": (value: number) => any;
38
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
39
+ "onUpdate:page"?: ((value: number) => any) | undefined;
40
+ }>, {
41
+ unstyled: boolean;
42
+ label: string;
43
+ total: number;
44
+ itemsPerPage: number;
45
+ siblingCount: number;
46
+ showEdges: boolean;
47
+ prevLabel: string;
48
+ nextLabel: string;
49
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
50
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
51
+ declare const _default: typeof __VLS_export;
52
+ export default _default;
53
+ type __VLS_WithSlots<T, S> = T & {
54
+ new (): {
55
+ $slots: S;
56
+ };
57
+ };
@@ -0,0 +1,52 @@
1
+ export interface ProgressProps {
2
+ /** Current value. `null` (or `indeterminate`) means unknown duration. */
3
+ modelValue?: number | null;
4
+ max?: number;
5
+ variant?: 'primary' | 'success' | 'warning' | 'danger' | 'info';
6
+ size?: 'sm' | 'md' | 'lg';
7
+ /** Unknown duration — animates instead of tracking a value. */
8
+ indeterminate?: boolean;
9
+ /** Text shown above the track. */
10
+ label?: string;
11
+ /** Show the value beside the label. Defaults to a percentage. */
12
+ showValue?: boolean;
13
+ /**
14
+ * Format the displayed value and the accessible label. Override for
15
+ * non-percentage units or non-English locales.
16
+ */
17
+ formatValue?: (value: number, max: number) => string;
18
+ /** Skip built-in classes; you take over styling entirely. */
19
+ unstyled?: boolean;
20
+ class?: string;
21
+ /** Override classes per slot, e.g. `{ track: 'h-4' }`. */
22
+ ui?: {
23
+ root?: string;
24
+ header?: string;
25
+ label?: string;
26
+ value?: string;
27
+ track?: string;
28
+ indicator?: string;
29
+ };
30
+ }
31
+ declare var __VLS_1: {}, __VLS_3: {
32
+ value: number | null;
33
+ percent: number;
34
+ formatted: string;
35
+ };
36
+ type __VLS_Slots = {} & {
37
+ label?: (props: typeof __VLS_1) => any;
38
+ } & {
39
+ value?: (props: typeof __VLS_3) => any;
40
+ };
41
+ declare const __VLS_base: import("vue").DefineComponent<ProgressProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ProgressProps> & Readonly<{}>, {
42
+ unstyled: boolean;
43
+ max: number;
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,36 @@
1
+ export interface SeparatorProps {
2
+ orientation?: 'horizontal' | 'vertical';
3
+ /** Text shown in the middle of the rule. */
4
+ label?: string;
5
+ /**
6
+ * Purely visual, so it is hidden from assistive tech. Set false when the
7
+ * rule genuinely divides sections of content.
8
+ */
9
+ decorative?: boolean;
10
+ /** Skip built-in classes; you take over styling entirely. */
11
+ unstyled?: boolean;
12
+ class?: string;
13
+ /** Override classes per slot, e.g. `{ line: 'bg-primary' }`. */
14
+ ui?: {
15
+ root?: string;
16
+ line?: string;
17
+ label?: string;
18
+ };
19
+ }
20
+ declare var __VLS_6: {};
21
+ type __VLS_Slots = {} & {
22
+ default?: (props: typeof __VLS_6) => any;
23
+ };
24
+ declare const __VLS_base: import("vue").DefineComponent<SeparatorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SeparatorProps> & Readonly<{}>, {
25
+ unstyled: boolean;
26
+ orientation: "horizontal" | "vertical";
27
+ decorative: 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,20 @@
1
+ export interface SkeletonProps {
2
+ /** Render as a different element or component. */
3
+ as?: string;
4
+ variant?: 'text' | 'rect' | 'circle';
5
+ /** Repeat as stacked lines. Useful for paragraphs of placeholder copy. */
6
+ lines?: number;
7
+ /** Accessible description of what is loading. */
8
+ label?: string;
9
+ /** Skip built-in classes; you take over styling entirely. */
10
+ unstyled?: boolean;
11
+ class?: string;
12
+ }
13
+ declare const __VLS_export: import("vue").DefineComponent<SkeletonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SkeletonProps> & Readonly<{}>, {
14
+ as: string;
15
+ unstyled: boolean;
16
+ label: string;
17
+ lines: number;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const _default: typeof __VLS_export;
20
+ export default _default;
@@ -0,0 +1,57 @@
1
+ export interface StatProps {
2
+ /** Render as a different element or component. */
3
+ as?: string;
4
+ label?: string;
5
+ value?: string | number;
6
+ /** Change since the previous period. Sign picks the colour and the arrow. */
7
+ delta?: number;
8
+ /**
9
+ * Override the colour of the delta. Useful when down is the good direction —
10
+ * falling costs, for example — since the sign alone cannot tell.
11
+ */
12
+ trend?: 'up' | 'down' | 'neutral';
13
+ /** Secondary text under the value. */
14
+ hint?: string;
15
+ size?: 'sm' | 'md' | 'lg';
16
+ /**
17
+ * Format the delta. Defaults to a signed percentage; override for other
18
+ * units or locales.
19
+ */
20
+ formatDelta?: (delta: number) => string;
21
+ /** Skip built-in classes; you take over styling entirely. */
22
+ unstyled?: boolean;
23
+ class?: string;
24
+ /** Override classes per slot, e.g. `{ value: 'text-4xl' }`. */
25
+ ui?: {
26
+ root?: string;
27
+ label?: string;
28
+ value?: string;
29
+ delta?: string;
30
+ hint?: string;
31
+ row?: string;
32
+ };
33
+ }
34
+ declare var __VLS_8: {}, __VLS_10: {}, __VLS_12: {
35
+ trend: "neutral" | "up" | "down";
36
+ }, __VLS_19: {};
37
+ type __VLS_Slots = {} & {
38
+ label?: (props: typeof __VLS_8) => any;
39
+ } & {
40
+ default?: (props: typeof __VLS_10) => any;
41
+ } & {
42
+ delta?: (props: typeof __VLS_12) => any;
43
+ } & {
44
+ hint?: (props: typeof __VLS_19) => any;
45
+ };
46
+ declare const __VLS_base: import("vue").DefineComponent<StatProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<StatProps> & Readonly<{}>, {
47
+ as: string;
48
+ unstyled: boolean;
49
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
50
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
51
+ declare const _default: typeof __VLS_export;
52
+ export default _default;
53
+ type __VLS_WithSlots<T, S> = T & {
54
+ new (): {
55
+ $slots: S;
56
+ };
57
+ };
@@ -0,0 +1,61 @@
1
+ export interface StepperItemOption {
2
+ title: string;
3
+ description?: string;
4
+ disabled?: boolean;
5
+ }
6
+ export interface StepperProps {
7
+ items?: (StepperItemOption | string)[];
8
+ orientation?: 'horizontal' | 'vertical';
9
+ /**
10
+ * Require steps to be completed in order.
11
+ *
12
+ * Off by default, because when on, a later step cannot be reached until the
13
+ * ones before it are marked complete — which makes plain `v-model`
14
+ * increments silently do nothing. Turn it on only if you are driving
15
+ * navigation through the stepper's own triggers.
16
+ */
17
+ linear?: boolean;
18
+ /** Skip built-in classes; you take over styling entirely. */
19
+ unstyled?: boolean;
20
+ class?: string;
21
+ /** Override classes per slot, e.g. `{ indicator: 'size-10' }`. */
22
+ ui?: {
23
+ root?: string;
24
+ item?: string;
25
+ trigger?: string;
26
+ indicator?: string;
27
+ content?: string;
28
+ title?: string;
29
+ description?: string;
30
+ separator?: string;
31
+ };
32
+ }
33
+ type __VLS_Props = StepperProps;
34
+ type __VLS_ModelProps = {
35
+ /** Steps are 1-indexed, matching how they read to a user. */
36
+ modelValue?: number;
37
+ };
38
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
39
+ declare var __VLS_26: {
40
+ step: number;
41
+ item: StepperItemOption;
42
+ };
43
+ type __VLS_Slots = {} & {
44
+ indicator?: (props: typeof __VLS_26) => any;
45
+ };
46
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
47
+ "update:modelValue": (value: number) => any;
48
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
49
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
50
+ }>, {
51
+ unstyled: boolean;
52
+ linear: boolean;
53
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
54
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
55
+ declare const _default: typeof __VLS_export;
56
+ export default _default;
57
+ type __VLS_WithSlots<T, S> = T & {
58
+ new (): {
59
+ $slots: S;
60
+ };
61
+ };
@@ -0,0 +1,63 @@
1
+ import type { IconLike } from '../composables/icon';
2
+ export interface TabsItem {
3
+ label: string;
4
+ /** Identifies the tab. Defaults to the label. */
5
+ value?: string;
6
+ icon?: IconLike;
7
+ disabled?: boolean;
8
+ }
9
+ export interface TabsProps {
10
+ items?: (TabsItem | string)[];
11
+ variant?: 'solid' | 'line';
12
+ orientation?: 'horizontal' | 'vertical';
13
+ /**
14
+ * Keep inactive panels mounted. Useful when a panel holds form state that
15
+ * should survive switching away.
16
+ */
17
+ keepMounted?: boolean;
18
+ /** Skip built-in classes; you take over styling entirely. */
19
+ unstyled?: boolean;
20
+ class?: string;
21
+ /** Override classes per slot, e.g. `{ list: 'w-full' }`. */
22
+ ui?: {
23
+ root?: string;
24
+ list?: string;
25
+ indicator?: string;
26
+ trigger?: string;
27
+ content?: string;
28
+ };
29
+ }
30
+ type __VLS_Props = TabsProps;
31
+ type __VLS_ModelProps = {
32
+ modelValue?: string;
33
+ };
34
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
35
+ declare var __VLS_19: {}, __VLS_27: {
36
+ item: TabsItem;
37
+ }, __VLS_34: {}, __VLS_43: string, __VLS_44: {
38
+ item: TabsItem;
39
+ };
40
+ type __VLS_Slots = {} & {
41
+ [K in NonNullable<typeof __VLS_43>]?: (props: typeof __VLS_44) => any;
42
+ } & {
43
+ list?: (props: typeof __VLS_19) => any;
44
+ } & {
45
+ trigger?: (props: typeof __VLS_27) => any;
46
+ } & {
47
+ default?: (props: typeof __VLS_34) => any;
48
+ };
49
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
50
+ "update:modelValue": (value: string) => any;
51
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
52
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
53
+ }>, {
54
+ unstyled: boolean;
55
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
56
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
57
+ declare const _default: typeof __VLS_export;
58
+ export default _default;
59
+ type __VLS_WithSlots<T, S> = T & {
60
+ new (): {
61
+ $slots: S;
62
+ };
63
+ };
@@ -0,0 +1,28 @@
1
+ export interface ToasterProps {
2
+ position?: 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
3
+ /** Default milliseconds before auto-dismiss; a toast's own `duration` wins. */
4
+ duration?: number;
5
+ /** Accessible name for each dismiss button — override for non-English apps. */
6
+ closeLabel?: string;
7
+ /** Skip built-in classes; you take over styling entirely. */
8
+ unstyled?: boolean;
9
+ class?: string;
10
+ /** Override classes per slot, e.g. `{ viewport: 'sm:max-w-md' }`. */
11
+ ui?: {
12
+ viewport?: string;
13
+ root?: string;
14
+ icon?: string;
15
+ content?: string;
16
+ title?: string;
17
+ description?: string;
18
+ action?: string;
19
+ close?: string;
20
+ };
21
+ }
22
+ declare const __VLS_export: import("vue").DefineComponent<ToasterProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ToasterProps> & Readonly<{}>, {
23
+ closeLabel: string;
24
+ unstyled: boolean;
25
+ duration: number;
26
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
+ declare const _default: typeof __VLS_export;
28
+ export default _default;
@@ -0,0 +1,49 @@
1
+ export interface TooltipProps {
2
+ /** Tooltip text. Ignored when the `content` slot is used. */
3
+ text?: string;
4
+ side?: 'top' | 'right' | 'bottom' | 'left';
5
+ align?: 'start' | 'center' | 'end';
6
+ sideOffset?: number;
7
+ /** Milliseconds to hover before it opens. */
8
+ delay?: number;
9
+ /** Render the little pointer against the trigger. */
10
+ arrow?: boolean;
11
+ disabled?: boolean;
12
+ /** Skip built-in classes; you take over styling entirely. */
13
+ unstyled?: boolean;
14
+ class?: string;
15
+ /** Override classes per slot, e.g. `{ content: 'max-w-sm' }`. */
16
+ ui?: {
17
+ content?: string;
18
+ arrow?: string;
19
+ };
20
+ }
21
+ type __VLS_Props = TooltipProps;
22
+ type __VLS_ModelProps = {
23
+ 'open'?: boolean;
24
+ };
25
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
26
+ declare var __VLS_20: {}, __VLS_34: {};
27
+ type __VLS_Slots = {} & {
28
+ trigger?: (props: typeof __VLS_20) => any;
29
+ } & {
30
+ content?: (props: typeof __VLS_34) => any;
31
+ };
32
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
33
+ "update:open": (value: boolean) => any;
34
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
35
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
36
+ }>, {
37
+ unstyled: boolean;
38
+ side: "top" | "right" | "bottom" | "left";
39
+ sideOffset: number;
40
+ delay: number;
41
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
42
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
43
+ declare const _default: typeof __VLS_export;
44
+ export default _default;
45
+ type __VLS_WithSlots<T, S> = T & {
46
+ new (): {
47
+ $slots: S;
48
+ };
49
+ };
@@ -1,14 +1,29 @@
1
1
  export { default as Alert } from './Alert.vue';
2
2
  export { default as App } from './App.vue';
3
3
  export { default as Badge } from './Badge.vue';
4
+ export { default as Breadcrumb } from './Breadcrumb.vue';
4
5
  export { default as Button } from './Button.vue';
6
+ export { default as ButtonGroup } from './ButtonGroup.vue';
5
7
  export { default as Card } from './Card.vue';
6
8
  export { default as Checkbox } from './Checkbox.vue';
9
+ export { default as ConfirmDialog } from './ConfirmDialog.vue';
10
+ export { default as Dialog } from './Dialog.vue';
11
+ export { default as DropdownMenu } from './DropdownMenu.vue';
12
+ export { default as EmptyState } from './EmptyState.vue';
7
13
  export { default as Form } from './Form.vue';
8
14
  export { default as FormField } from './FormField.vue';
9
15
  export { default as Input } from './Input.vue';
10
16
  export { default as Label } from './Label.vue';
17
+ export { default as Pagination } from './Pagination.vue';
18
+ export { default as Progress } from './Progress.vue';
11
19
  export { default as RadioGroup } from './RadioGroup.vue';
12
20
  export { default as Select } from './Select.vue';
21
+ export { default as Separator } from './Separator.vue';
22
+ export { default as Skeleton } from './Skeleton.vue';
23
+ export { default as Stat } from './Stat.vue';
24
+ export { default as Stepper } from './Stepper.vue';
13
25
  export { default as Switch } from './Switch.vue';
26
+ export { default as Tabs } from './Tabs.vue';
14
27
  export { default as Textarea } from './Textarea.vue';
28
+ export { default as Toaster } from './Toaster.vue';
29
+ export { default as Tooltip } from './Tooltip.vue';
@@ -0,0 +1,12 @@
1
+ import type { ComputedRef, InjectionKey } from 'vue';
2
+ export type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
3
+ /** Context a `ButtonGroup` exposes to the buttons it wraps. */
4
+ export interface ButtonGroupContext {
5
+ size: ComputedRef<ButtonSize | undefined>;
6
+ }
7
+ export declare const buttonGroupContextKey: InjectionKey<ButtonGroupContext>;
8
+ /**
9
+ * Access the enclosing `ButtonGroup`, if any. Buttons use this to pick up a
10
+ * shared size, so it only has to be set once on the group.
11
+ */
12
+ export declare function useButtonGroup(): ButtonGroupContext | undefined;
@@ -0,0 +1,36 @@
1
+ export interface ConfirmOptions {
2
+ title: string;
3
+ description?: string;
4
+ /** Text for the confirming button. Supply your own for non-English apps. */
5
+ confirmLabel?: string;
6
+ /** Text for the dismissing button. Supply your own for non-English apps. */
7
+ cancelLabel?: string;
8
+ /** Style the confirming button as destructive. */
9
+ danger?: boolean;
10
+ }
11
+ /** An open request, plus the resolver its promise is waiting on. */
12
+ export interface ConfirmRequest extends ConfirmOptions {
13
+ id: number;
14
+ resolve: (confirmed: boolean) => void;
15
+ }
16
+ /** Internal: the request `<IConfirmDialog>` should currently render. */
17
+ export declare function useConfirmState(): import("vue").ShallowRef<ConfirmRequest | null, ConfirmRequest | null>;
18
+ /** Settle the open request and clear it. */
19
+ export declare function resolveConfirm(confirmed: boolean): void;
20
+ export interface ConfirmApi {
21
+ /** Resolves `true` if the user confirms, `false` if they cancel or dismiss. */
22
+ confirm: (options: ConfirmOptions | string) => Promise<boolean>;
23
+ }
24
+ /**
25
+ * Promise-based confirmation for destructive actions.
26
+ *
27
+ * Requires a single `<IConfirmDialog />` mounted somewhere in the app —
28
+ * typically just inside `<IApp>`.
29
+ *
30
+ * ```ts
31
+ * const { confirm } = useConfirm()
32
+ * if (await confirm({ title: 'Delete draft?', danger: true }))
33
+ * await remove()
34
+ * ```
35
+ */
36
+ export declare function useConfirm(): ConfirmApi;
@@ -0,0 +1,22 @@
1
+ import type { IconLike } from './icon';
2
+ export interface DropdownMenuItemOption {
3
+ label: string;
4
+ /** Leading icon component. */
5
+ icon?: IconLike;
6
+ disabled?: boolean;
7
+ /** Style the item as destructive. */
8
+ danger?: boolean;
9
+ /** Run when the item is chosen. Omit on an entry that opens a submenu. */
10
+ onSelect?: () => void;
11
+ /** Nested entries. Turns this item into a submenu trigger. */
12
+ items?: DropdownMenuEntry[];
13
+ }
14
+ /**
15
+ * One row of a menu.
16
+ *
17
+ * `'-'` renders a separator. An option with `items` opens a submenu, and one
18
+ * with neither `items` nor `onSelect` is a non-interactive group label.
19
+ */
20
+ export type DropdownMenuEntry = DropdownMenuItemOption | '-';
21
+ export declare function isSeparator(entry: DropdownMenuEntry): entry is '-';
22
+ export declare function isSubmenu(entry: DropdownMenuItemOption): boolean;
@@ -0,0 +1,10 @@
1
+ import type { IconArray } from '@hugeicons/vue';
2
+ import type { Component } from 'vue';
3
+ /**
4
+ * Anything that can be rendered as an icon.
5
+ *
6
+ * Hugeicons ships icons as data arrays rather than components, so both forms
7
+ * are accepted: pass a Hugeicons export, or any component that renders an SVG.
8
+ */
9
+ export type IconLike = Component | IconArray;
10
+ export declare function isIconArray(icon: IconLike): icon is IconArray;
@@ -0,0 +1,42 @@
1
+ export type ToastVariant = 'neutral' | 'success' | 'warning' | 'danger' | 'info';
2
+ export interface ToastOptions {
3
+ title?: string;
4
+ description?: string;
5
+ variant?: ToastVariant;
6
+ /** Milliseconds before auto-dismiss. `0` keeps it until dismissed. */
7
+ duration?: number;
8
+ /** Optional action button. */
9
+ action?: {
10
+ label: string;
11
+ onClick: () => void;
12
+ };
13
+ }
14
+ export interface ToastRecord extends ToastOptions {
15
+ id: number;
16
+ }
17
+ /** Internal: the toasts `<IToaster>` should currently render. */
18
+ export declare function useToastState(): import("vue").ShallowRef<ToastRecord[], ToastRecord[]>;
19
+ export interface ToastApi {
20
+ /** Show a toast. Returns its id, so it can be dismissed early. */
21
+ toast: (options: ToastOptions | string) => number;
22
+ success: (options: ToastOptions | string) => number;
23
+ warning: (options: ToastOptions | string) => number;
24
+ danger: (options: ToastOptions | string) => number;
25
+ info: (options: ToastOptions | string) => number;
26
+ /** Dismiss one toast by id. */
27
+ dismiss: (id: number) => void;
28
+ /** Dismiss every open toast. */
29
+ clear: () => void;
30
+ }
31
+ /**
32
+ * Imperative toast notifications.
33
+ *
34
+ * Requires a single `<IToaster />` mounted somewhere in the app — typically
35
+ * just inside `<IApp>`.
36
+ *
37
+ * ```ts
38
+ * const toast = useToast()
39
+ * toast.success('Saved')
40
+ * ```
41
+ */
42
+ export declare function useToast(): ToastApi;
package/dist/config.d.ts CHANGED
@@ -8,4 +8,13 @@ export interface IryxUiConfig {
8
8
  }
9
9
  export declare const defaultConfig: IryxUiConfig;
10
10
  export declare const iryxUiConfigKey: InjectionKey<IryxUiConfig>;
11
+ /**
12
+ * Read the global config, falling back to the defaults.
13
+ *
14
+ * Any component resolving a boolean against this config must declare an
15
+ * explicit `undefined` default in `withDefaults` — Vue casts an absent boolean
16
+ * prop to `false`, which would shadow the config and make it do nothing. The
17
+ * same applies to props whose type merely includes `false`. `test/config.test.ts`
18
+ * guards this for every component.
19
+ */
11
20
  export declare function useIryxUiConfig(): IryxUiConfig;
package/dist/index.d.ts CHANGED
@@ -4,19 +4,38 @@ export * from './components';
4
4
  export type { AlertProps } from './components/Alert.vue';
5
5
  export type { AppProps } from './components/App.vue';
6
6
  export type { BadgeProps } from './components/Badge.vue';
7
+ export type { BreadcrumbItem, BreadcrumbProps } from './components/Breadcrumb.vue';
7
8
  export type { ButtonProps } from './components/Button.vue';
9
+ export type { ButtonGroupProps } from './components/ButtonGroup.vue';
8
10
  export type { CardProps } from './components/Card.vue';
9
11
  export type { CheckboxProps } from './components/Checkbox.vue';
12
+ export type { ConfirmDialogProps } from './components/ConfirmDialog.vue';
13
+ export type { DialogProps } from './components/Dialog.vue';
14
+ export type { DropdownMenuProps } from './components/DropdownMenu.vue';
15
+ export type { EmptyStateProps } from './components/EmptyState.vue';
10
16
  export type { FormProps } from './components/Form.vue';
11
17
  export type { FormFieldProps } from './components/FormField.vue';
12
18
  export type { InputProps } from './components/Input.vue';
13
19
  export type { LabelProps } from './components/Label.vue';
20
+ export type { PaginationProps } from './components/Pagination.vue';
21
+ export type { ProgressProps } from './components/Progress.vue';
14
22
  export type { RadioGroupItemOption, RadioGroupProps } from './components/RadioGroup.vue';
15
23
  export type { SelectItemOption, SelectProps } from './components/Select.vue';
24
+ export type { SeparatorProps } from './components/Separator.vue';
25
+ export type { SkeletonProps } from './components/Skeleton.vue';
26
+ export type { StatProps } from './components/Stat.vue';
27
+ export type { StepperItemOption, StepperProps } from './components/Stepper.vue';
16
28
  export type { SwitchProps } from './components/Switch.vue';
29
+ export type { TabsItem, TabsProps } from './components/Tabs.vue';
17
30
  export type { TextareaProps } from './components/Textarea.vue';
31
+ export type { ToasterProps } from './components/Toaster.vue';
32
+ export type { TooltipProps } from './components/Tooltip.vue';
18
33
  export * from './composables/appearance';
34
+ export * from './composables/button-group';
35
+ export * from './composables/confirm';
36
+ export * from './composables/dropdown-menu';
19
37
  export * from './composables/form';
38
+ export * from './composables/toast';
20
39
  export { defaultConfig, iryxUiConfigKey, useIryxUiConfig } from './config';
21
40
  export type { IryxUiConfig } from './config';
22
41
  export { createIryxUi, IryxUi } from './plugin';