iryx-ui 0.17.1 → 0.18.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 (173) hide show
  1. package/README.md +18 -0
  2. package/dist/class-value.d.ts +8 -0
  3. package/dist/component-names.d.ts +1 -1
  4. package/dist/component-names.js +1 -1
  5. package/dist/components/Accordion.vue.d.ts +2 -1
  6. package/dist/components/Accordion.vue_vue_type_script_setup_true_lang.js +6 -1
  7. package/dist/components/Alert.vue.d.ts +2 -1
  8. package/dist/components/Alert.vue_vue_type_script_setup_true_lang.js +6 -1
  9. package/dist/components/App.vue.d.ts +2 -1
  10. package/dist/components/App.vue_vue_type_script_setup_true_lang.js +6 -1
  11. package/dist/components/AppShell.vue.d.ts +5 -2
  12. package/dist/components/AppShell.vue_vue_type_script_setup_true_lang.js +7 -2
  13. package/dist/components/AspectRatio.vue.d.ts +2 -1
  14. package/dist/components/AspectRatio.vue_vue_type_script_setup_true_lang.js +6 -1
  15. package/dist/components/AuthProviders.js +5 -0
  16. package/dist/components/AuthProviders.vue.d.ts +67 -0
  17. package/dist/components/AuthProviders.vue_vue_type_script_setup_true_lang.js +83 -0
  18. package/dist/components/Avatar.vue.d.ts +2 -1
  19. package/dist/components/Avatar.vue_vue_type_script_setup_true_lang.js +6 -1
  20. package/dist/components/AvatarGroup.vue.d.ts +2 -1
  21. package/dist/components/AvatarGroup.vue_vue_type_script_setup_true_lang.js +6 -1
  22. package/dist/components/Badge.vue.d.ts +2 -1
  23. package/dist/components/Badge.vue_vue_type_script_setup_true_lang.js +6 -1
  24. package/dist/components/Banner.vue.d.ts +2 -1
  25. package/dist/components/Banner.vue_vue_type_script_setup_true_lang.js +6 -1
  26. package/dist/components/BarChart.vue.d.ts +2 -1
  27. package/dist/components/BarChart.vue_vue_type_script_setup_true_lang.js +6 -1
  28. package/dist/components/Breadcrumb.vue.d.ts +2 -1
  29. package/dist/components/Breadcrumb.vue_vue_type_script_setup_true_lang.js +6 -1
  30. package/dist/components/Button.vue.d.ts +2 -1
  31. package/dist/components/Button.vue_vue_type_script_setup_true_lang.js +6 -1
  32. package/dist/components/ButtonGroup.vue.d.ts +2 -1
  33. package/dist/components/ButtonGroup.vue_vue_type_script_setup_true_lang.js +6 -1
  34. package/dist/components/Calendar.vue.d.ts +2 -1
  35. package/dist/components/Calendar.vue_vue_type_script_setup_true_lang.js +6 -1
  36. package/dist/components/Card.vue.d.ts +2 -1
  37. package/dist/components/Card.vue_vue_type_script_setup_true_lang.js +6 -1
  38. package/dist/components/ChartLegend.vue.d.ts +2 -1
  39. package/dist/components/ChartLegend.vue_vue_type_script_setup_true_lang.js +6 -1
  40. package/dist/components/Checkbox.vue.d.ts +2 -1
  41. package/dist/components/Checkbox.vue_vue_type_script_setup_true_lang.js +6 -1
  42. package/dist/components/Collapsible.vue.d.ts +5 -4
  43. package/dist/components/Collapsible.vue_vue_type_script_setup_true_lang.js +6 -1
  44. package/dist/components/ColorPicker.vue.d.ts +2 -1
  45. package/dist/components/ColorPicker.vue_vue_type_script_setup_true_lang.js +6 -1
  46. package/dist/components/Combobox.vue.d.ts +2 -1
  47. package/dist/components/Combobox.vue_vue_type_script_setup_true_lang.js +6 -1
  48. package/dist/components/CommandPalette.vue.d.ts +2 -1
  49. package/dist/components/CommandPalette.vue_vue_type_script_setup_true_lang.js +6 -1
  50. package/dist/components/ConfirmDialog.vue.d.ts +2 -1
  51. package/dist/components/ConfirmDialog.vue_vue_type_script_setup_true_lang.js +6 -1
  52. package/dist/components/Container.vue.d.ts +2 -1
  53. package/dist/components/Container.vue_vue_type_script_setup_true_lang.js +6 -1
  54. package/dist/components/ContextMenu.vue.d.ts +2 -1
  55. package/dist/components/ContextMenu.vue_vue_type_script_setup_true_lang.js +6 -1
  56. package/dist/components/DateField.vue.d.ts +2 -1
  57. package/dist/components/DateField.vue_vue_type_script_setup_true_lang.js +6 -1
  58. package/dist/components/DatePicker.vue.d.ts +2 -1
  59. package/dist/components/DatePicker.vue_vue_type_script_setup_true_lang.js +6 -1
  60. package/dist/components/DateRangePicker.vue.d.ts +2 -1
  61. package/dist/components/DateRangePicker.vue_vue_type_script_setup_true_lang.js +6 -1
  62. package/dist/components/Dialog.vue.d.ts +2 -1
  63. package/dist/components/Dialog.vue_vue_type_script_setup_true_lang.js +6 -1
  64. package/dist/components/DonutChart.vue.d.ts +2 -1
  65. package/dist/components/DonutChart.vue_vue_type_script_setup_true_lang.js +6 -1
  66. package/dist/components/Drawer.vue.d.ts +2 -1
  67. package/dist/components/Drawer.vue_vue_type_script_setup_true_lang.js +6 -1
  68. package/dist/components/DropdownMenu.vue.d.ts +2 -1
  69. package/dist/components/DropdownMenu.vue_vue_type_script_setup_true_lang.js +6 -1
  70. package/dist/components/Editable.vue.d.ts +2 -1
  71. package/dist/components/Editable.vue_vue_type_script_setup_true_lang.js +6 -1
  72. package/dist/components/EmptyState.vue.d.ts +2 -1
  73. package/dist/components/EmptyState.vue_vue_type_script_setup_true_lang.js +6 -1
  74. package/dist/components/FileUpload.vue.d.ts +2 -1
  75. package/dist/components/FileUpload.vue_vue_type_script_setup_true_lang.js +6 -1
  76. package/dist/components/Form.vue.d.ts +2 -1
  77. package/dist/components/Form.vue_vue_type_script_setup_true_lang.js +6 -1
  78. package/dist/components/FormField.vue.d.ts +2 -1
  79. package/dist/components/FormField.vue_vue_type_script_setup_true_lang.js +6 -1
  80. package/dist/components/HoverCard.vue.d.ts +5 -4
  81. package/dist/components/HoverCard.vue_vue_type_script_setup_true_lang.js +6 -1
  82. package/dist/components/Icon.vue.d.ts +2 -1
  83. package/dist/components/Icon.vue_vue_type_script_setup_true_lang.js +6 -1
  84. package/dist/components/Input.vue.d.ts +2 -1
  85. package/dist/components/Input.vue_vue_type_script_setup_true_lang.js +6 -1
  86. package/dist/components/Kbd.vue.d.ts +2 -1
  87. package/dist/components/Kbd.vue_vue_type_script_setup_true_lang.js +6 -1
  88. package/dist/components/Label.vue.d.ts +2 -1
  89. package/dist/components/Label.vue_vue_type_script_setup_true_lang.js +6 -1
  90. package/dist/components/LineChart.vue.d.ts +2 -1
  91. package/dist/components/LineChart.vue_vue_type_script_setup_true_lang.js +6 -1
  92. package/dist/components/Menubar.vue.d.ts +5 -4
  93. package/dist/components/Menubar.vue_vue_type_script_setup_true_lang.js +6 -1
  94. package/dist/components/NavigationMenu.vue.d.ts +5 -4
  95. package/dist/components/NavigationMenu.vue_vue_type_script_setup_true_lang.js +6 -1
  96. package/dist/components/NumberInput.vue.d.ts +2 -1
  97. package/dist/components/NumberInput.vue_vue_type_script_setup_true_lang.js +6 -1
  98. package/dist/components/PageHeader.vue.d.ts +2 -1
  99. package/dist/components/PageHeader.vue_vue_type_script_setup_true_lang.js +6 -1
  100. package/dist/components/Pagination.vue.d.ts +2 -1
  101. package/dist/components/Pagination.vue_vue_type_script_setup_true_lang.js +6 -1
  102. package/dist/components/PasswordInput.vue.d.ts +2 -1
  103. package/dist/components/PasswordInput.vue_vue_type_script_setup_true_lang.js +6 -1
  104. package/dist/components/PinInput.vue.d.ts +2 -1
  105. package/dist/components/PinInput.vue_vue_type_script_setup_true_lang.js +6 -1
  106. package/dist/components/Popover.vue.d.ts +5 -4
  107. package/dist/components/Popover.vue_vue_type_script_setup_true_lang.js +6 -1
  108. package/dist/components/Progress.vue.d.ts +2 -1
  109. package/dist/components/Progress.vue_vue_type_script_setup_true_lang.js +6 -1
  110. package/dist/components/RadioGroup.vue.d.ts +2 -1
  111. package/dist/components/RadioGroup.vue_vue_type_script_setup_true_lang.js +6 -1
  112. package/dist/components/ScrollArea.vue.d.ts +2 -1
  113. package/dist/components/ScrollArea.vue_vue_type_script_setup_true_lang.js +6 -1
  114. package/dist/components/ScrollFade.vue.d.ts +2 -1
  115. package/dist/components/ScrollFade.vue_vue_type_script_setup_true_lang.js +6 -1
  116. package/dist/components/Select.vue.d.ts +2 -1
  117. package/dist/components/Select.vue_vue_type_script_setup_true_lang.js +6 -1
  118. package/dist/components/Separator.vue.d.ts +2 -1
  119. package/dist/components/Separator.vue_vue_type_script_setup_true_lang.js +6 -1
  120. package/dist/components/Sidebar.vue.d.ts +2 -1
  121. package/dist/components/Sidebar.vue_vue_type_script_setup_true_lang.js +6 -1
  122. package/dist/components/SignaturePad.vue.d.ts +2 -1
  123. package/dist/components/SignaturePad.vue_vue_type_script_setup_true_lang.js +6 -1
  124. package/dist/components/Skeleton.vue.d.ts +2 -1
  125. package/dist/components/Skeleton.vue_vue_type_script_setup_true_lang.js +6 -1
  126. package/dist/components/Slider.vue.d.ts +2 -1
  127. package/dist/components/Slider.vue_vue_type_script_setup_true_lang.js +6 -1
  128. package/dist/components/Sparkline.vue.d.ts +2 -1
  129. package/dist/components/Sparkline.vue_vue_type_script_setup_true_lang.js +6 -1
  130. package/dist/components/Splitter.vue.d.ts +2 -1
  131. package/dist/components/Splitter.vue_vue_type_script_setup_true_lang.js +6 -1
  132. package/dist/components/Stat.vue.d.ts +2 -1
  133. package/dist/components/Stat.vue_vue_type_script_setup_true_lang.js +6 -1
  134. package/dist/components/Stepper.vue.d.ts +2 -1
  135. package/dist/components/Stepper.vue_vue_type_script_setup_true_lang.js +6 -1
  136. package/dist/components/Switch.vue.d.ts +2 -1
  137. package/dist/components/Switch.vue_vue_type_script_setup_true_lang.js +6 -1
  138. package/dist/components/Table.vue.d.ts +2 -1
  139. package/dist/components/Table.vue_vue_type_script_setup_true_lang.js +7 -3
  140. package/dist/components/Tabs.vue.d.ts +5 -4
  141. package/dist/components/Tabs.vue_vue_type_script_setup_true_lang.js +6 -1
  142. package/dist/components/TagsInput.vue.d.ts +2 -1
  143. package/dist/components/TagsInput.vue_vue_type_script_setup_true_lang.js +6 -1
  144. package/dist/components/Textarea.vue.d.ts +2 -1
  145. package/dist/components/Textarea.vue_vue_type_script_setup_true_lang.js +6 -1
  146. package/dist/components/TimeField.vue.d.ts +2 -1
  147. package/dist/components/TimeField.vue_vue_type_script_setup_true_lang.js +6 -1
  148. package/dist/components/Timeline.vue.d.ts +2 -1
  149. package/dist/components/Timeline.vue_vue_type_script_setup_true_lang.js +6 -1
  150. package/dist/components/Toaster.vue.d.ts +2 -1
  151. package/dist/components/Toaster.vue_vue_type_script_setup_true_lang.js +6 -1
  152. package/dist/components/Toggle.vue.d.ts +2 -1
  153. package/dist/components/Toggle.vue_vue_type_script_setup_true_lang.js +6 -1
  154. package/dist/components/ToggleGroup.vue.d.ts +2 -1
  155. package/dist/components/ToggleGroup.vue_vue_type_script_setup_true_lang.js +6 -1
  156. package/dist/components/Toolbar.vue.d.ts +2 -1
  157. package/dist/components/Toolbar.vue_vue_type_script_setup_true_lang.js +6 -1
  158. package/dist/components/Tooltip.vue.d.ts +5 -4
  159. package/dist/components/Tooltip.vue_vue_type_script_setup_true_lang.js +6 -1
  160. package/dist/components/Tree.vue.d.ts +2 -1
  161. package/dist/components/Tree.vue_vue_type_script_setup_true_lang.js +6 -1
  162. package/dist/components/index.d.ts +1 -0
  163. package/dist/components/index.js +144 -142
  164. package/dist/global-components.d.ts +14 -0
  165. package/dist/index.d.ts +3 -0
  166. package/dist/index.js +153 -151
  167. package/dist/theme/app-shell.js +1 -1
  168. package/dist/theme/auth-providers.d.ts +137 -0
  169. package/dist/theme/auth-providers.js +57 -0
  170. package/dist/theme/index.d.ts +1 -0
  171. package/dist/theme/toast.js +1 -1
  172. package/package.json +2 -2
  173. package/theme.css +24 -0
package/README.md CHANGED
@@ -84,6 +84,24 @@ Components are auto-imported with the `I` prefix.
84
84
  <IDialog unstyled />
85
85
  ```
86
86
 
87
+ ## TypeScript
88
+
89
+ The plugin registers every component under the `I` prefix, and the package declares
90
+ them on Vue's `GlobalComponents`, so their props are checked in templates without an
91
+ import. A project that passes a different `prefix` declares its own augmentation:
92
+
93
+ ```ts
94
+ import type { IryxUiGlobalComponents } from 'iryx-ui'
95
+
96
+ declare module 'vue' {
97
+ interface GlobalComponents extends IryxUiGlobalComponents {}
98
+ }
99
+ ```
100
+
101
+ Every `class` prop takes the exported `ClassValue` — a string, or an array of strings
102
+ and falsy values. Object syntax is not accepted: `tailwind-merge` cannot merge it, so
103
+ it would lose to a built-in class rather than replace it.
104
+
87
105
  ## Requirements
88
106
 
89
107
  - Vue 3.5 or newer
@@ -0,0 +1,8 @@
1
+ /**
2
+ * What every component's `class` prop accepts: the subset of Vue's class
3
+ * binding that `tailwind-merge` can also merge. Object syntax
4
+ * (`:class="{ active: on }"`) is excluded on purpose — tailwind-merge does not
5
+ * understand it, so it would pass through unmerged and silently lose to a
6
+ * built-in class.
7
+ */
8
+ export type ClassValue = string | false | null | undefined | ClassValue[];
@@ -3,5 +3,5 @@
3
3
  * Consumed by the Vue plugin (global registration) and the Nuxt module
4
4
  * (auto-imports). Keep in sync with `src/components/index.ts`.
5
5
  */
6
- export declare const componentNames: readonly ["Accordion", "Alert", "App", "AppShell", "AspectRatio", "Avatar", "AvatarGroup", "Badge", "BarChart", "Banner", "Breadcrumb", "Button", "ButtonGroup", "Calendar", "Card", "ChartLegend", "Checkbox", "ColorPicker", "Combobox", "Collapsible", "CommandPalette", "Container", "ConfirmDialog", "ContextMenu", "DateField", "DatePicker", "DateRangePicker", "Dialog", "DonutChart", "Drawer", "DropdownMenu", "Editable", "EmptyState", "FileUpload", "Form", "FormField", "HoverCard", "Icon", "Input", "Kbd", "Label", "LineChart", "NavigationMenu", "NumberInput", "Menubar", "PageHeader", "Pagination", "PasswordInput", "PinInput", "Popover", "Progress", "RadioGroup", "ScrollArea", "ScrollFade", "Select", "Separator", "Sidebar", "SignaturePad", "Skeleton", "Slider", "Sparkline", "Splitter", "Stat", "Stepper", "Switch", "Table", "Tabs", "TagsInput", "Textarea", "Toaster", "Toggle", "ToggleGroup", "TimeField", "Timeline", "Toolbar", "Tooltip", "Tree"];
6
+ export declare const componentNames: readonly ["Accordion", "Alert", "App", "AppShell", "AspectRatio", "AuthProviders", "Avatar", "AvatarGroup", "Badge", "BarChart", "Banner", "Breadcrumb", "Button", "ButtonGroup", "Calendar", "Card", "ChartLegend", "Checkbox", "ColorPicker", "Combobox", "Collapsible", "CommandPalette", "Container", "ConfirmDialog", "ContextMenu", "DateField", "DatePicker", "DateRangePicker", "Dialog", "DonutChart", "Drawer", "DropdownMenu", "Editable", "EmptyState", "FileUpload", "Form", "FormField", "HoverCard", "Icon", "Input", "Kbd", "Label", "LineChart", "NavigationMenu", "NumberInput", "Menubar", "PageHeader", "Pagination", "PasswordInput", "PinInput", "Popover", "Progress", "RadioGroup", "ScrollArea", "ScrollFade", "Select", "Separator", "Sidebar", "SignaturePad", "Skeleton", "Slider", "Sparkline", "Splitter", "Stat", "Stepper", "Switch", "Table", "Tabs", "TagsInput", "Textarea", "Toaster", "Toggle", "ToggleGroup", "TimeField", "Timeline", "Toolbar", "Tooltip", "Tree"];
7
7
  export type ComponentName = (typeof componentNames)[number];
@@ -1,4 +1,4 @@
1
1
  //#region src/component-names.ts
2
- var e = /* @__PURE__ */ "Accordion.Alert.App.AppShell.AspectRatio.Avatar.AvatarGroup.Badge.BarChart.Banner.Breadcrumb.Button.ButtonGroup.Calendar.Card.ChartLegend.Checkbox.ColorPicker.Combobox.Collapsible.CommandPalette.Container.ConfirmDialog.ContextMenu.DateField.DatePicker.DateRangePicker.Dialog.DonutChart.Drawer.DropdownMenu.Editable.EmptyState.FileUpload.Form.FormField.HoverCard.Icon.Input.Kbd.Label.LineChart.NavigationMenu.NumberInput.Menubar.PageHeader.Pagination.PasswordInput.PinInput.Popover.Progress.RadioGroup.ScrollArea.ScrollFade.Select.Separator.Sidebar.SignaturePad.Skeleton.Slider.Sparkline.Splitter.Stat.Stepper.Switch.Table.Tabs.TagsInput.Textarea.Toaster.Toggle.ToggleGroup.TimeField.Timeline.Toolbar.Tooltip.Tree".split(".");
2
+ var e = /* @__PURE__ */ "Accordion.Alert.App.AppShell.AspectRatio.AuthProviders.Avatar.AvatarGroup.Badge.BarChart.Banner.Breadcrumb.Button.ButtonGroup.Calendar.Card.ChartLegend.Checkbox.ColorPicker.Combobox.Collapsible.CommandPalette.Container.ConfirmDialog.ContextMenu.DateField.DatePicker.DateRangePicker.Dialog.DonutChart.Drawer.DropdownMenu.Editable.EmptyState.FileUpload.Form.FormField.HoverCard.Icon.Input.Kbd.Label.LineChart.NavigationMenu.NumberInput.Menubar.PageHeader.Pagination.PasswordInput.PinInput.Popover.Progress.RadioGroup.ScrollArea.ScrollFade.Select.Separator.Sidebar.SignaturePad.Skeleton.Slider.Sparkline.Splitter.Stat.Stepper.Switch.Table.Tabs.TagsInput.Textarea.Toaster.Toggle.ToggleGroup.TimeField.Timeline.Toolbar.Tooltip.Tree".split(".");
3
3
  //#endregion
4
4
  export { e as componentNames };
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  import type { IconLike } from '../composables/icon';
2
3
  export interface AccordionItemData {
3
4
  /** Row heading, and the fallback value when none is given. */
@@ -22,7 +23,7 @@ export interface AccordionProps {
22
23
  disabled?: boolean;
23
24
  /** Skip built-in classes; you take over styling entirely. */
24
25
  unstyled?: boolean;
25
- class?: string;
26
+ class?: ClassValue;
26
27
  ui?: Partial<Record<'root' | 'item' | 'header' | 'trigger' | 'icon' | 'content' | 'contentInner', string>>;
27
28
  }
28
29
  type __VLS_Props = AccordionProps;
@@ -20,7 +20,12 @@ var D = { class: "flex min-w-0 items-center gap-2" }, O = { class: "truncate" },
20
20
  type: Boolean,
21
21
  default: void 0
22
22
  },
23
- class: {},
23
+ class: { type: [
24
+ String,
25
+ Boolean,
26
+ null,
27
+ Array
28
+ ] },
24
29
  ui: {}
25
30
  }, {
26
31
  modelValue: {},
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  import type { IconLike } from '../composables/icon';
2
3
  export interface AlertProps {
3
4
  /** Render as a different element or component. */
@@ -18,7 +19,7 @@ export interface AlertProps {
18
19
  closeLabel?: string;
19
20
  /** Skip built-in classes; you take over styling entirely. */
20
21
  unstyled?: boolean;
21
- class?: string;
22
+ class?: ClassValue;
22
23
  /** Override classes per slot, e.g. `{ title: 'text-base' }`. */
23
24
  ui?: {
24
25
  root?: string;
@@ -22,7 +22,12 @@ var T = ["aria-label"], E = /*@__PURE__*/ u({
22
22
  type: Boolean,
23
23
  default: void 0
24
24
  },
25
- class: {},
25
+ class: { type: [
26
+ String,
27
+ Boolean,
28
+ null,
29
+ Array
30
+ ] },
26
31
  ui: {}
27
32
  }, {
28
33
  open: {
@@ -1,4 +1,5 @@
1
1
  import type { ConfigProviderProps } from 'reka-ui';
2
+ import type { ClassValue } from '../class-value';
2
3
  import type { Appearance } from '../composables/appearance';
3
4
  import type { Theme, ThemePresetName } from '../theme/presets';
4
5
  export interface AppProps extends /* @vue-ignore */ ConfigProviderProps {
@@ -16,7 +17,7 @@ export interface AppProps extends /* @vue-ignore */ ConfigProviderProps {
16
17
  * pass `div` (with `class`) if you want App to own your page shell.
17
18
  */
18
19
  as?: string;
19
- class?: string;
20
+ class?: ClassValue;
20
21
  }
21
22
  declare var __VLS_14: {};
22
23
  type __VLS_Slots = {} & {
@@ -14,7 +14,12 @@ var S = /*@__PURE__*/ l({
14
14
  theme: {},
15
15
  appearance: {},
16
16
  as: { default: "template" },
17
- class: {}
17
+ class: { type: [
18
+ String,
19
+ Boolean,
20
+ null,
21
+ Array
22
+ ] }
18
23
  },
19
24
  setup(l) {
20
25
  let S = l;
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  export interface AppShellProps {
2
3
  /** Render as a different element or component. */
3
4
  as?: string;
@@ -17,7 +18,7 @@ export interface AppShellProps {
17
18
  navLabel?: string;
18
19
  /** Skip built-in classes; you take over styling entirely. */
19
20
  unstyled?: boolean;
20
- class?: string;
21
+ class?: ClassValue;
21
22
  /** Override classes per slot, e.g. `{ main: 'p-8' }`. */
22
23
  ui?: {
23
24
  root?: string;
@@ -38,7 +39,9 @@ declare var __VLS_13: {
38
39
  toggleNav: () => boolean;
39
40
  }, __VLS_21: {
40
41
  inDrawer: boolean;
41
- }, __VLS_23: {}, __VLS_25: {}, __VLS_27: {};
42
+ }, __VLS_23: {
43
+ inDrawer: boolean;
44
+ }, __VLS_25: {}, __VLS_27: {};
42
45
  type __VLS_Slots = {} & {
43
46
  header?: (props: typeof __VLS_13) => any;
44
47
  } & {
@@ -22,7 +22,12 @@ var S = ["aria-label", "aria-expanded"], C = /*@__PURE__*/ d({
22
22
  type: Boolean,
23
23
  default: void 0
24
24
  },
25
- class: {},
25
+ class: { type: [
26
+ String,
27
+ Boolean,
28
+ null,
29
+ Array
30
+ ] },
26
31
  ui: {}
27
32
  },
28
33
  setup(d, { expose: C }) {
@@ -81,7 +86,7 @@ var S = ["aria-label", "aria-expanded"], C = /*@__PURE__*/ d({
81
86
  l("div", { class: f(P("body")) }, [e.$slots.sidebar ? (m(), c("div", {
82
87
  key: 0,
83
88
  class: f(P("sidebar"))
84
- }, [g(e.$slots, "sidebar")], 2)) : s("", !0), l("main", { class: f(P("main")) }, [g(e.$slots, "default")], 2)], 2),
89
+ }, [g(e.$slots, "sidebar", { inDrawer: !1 })], 2)) : s("", !0), l("main", { class: f(P("main")) }, [g(e.$slots, "default")], 2)], 2),
85
90
  e.$slots.footer ? (m(), c("div", {
86
91
  key: 2,
87
92
  class: f(P("footer"))
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  export interface AspectRatioProps {
2
3
  /**
3
4
  * Width divided by height — `16 / 9`, `1`, `4 / 3`. Given as a number so
@@ -6,7 +7,7 @@ export interface AspectRatioProps {
6
7
  ratio?: number;
7
8
  /** Skip built-in classes; you take over styling entirely. */
8
9
  unstyled?: boolean;
9
- class?: string;
10
+ class?: ClassValue;
10
11
  }
11
12
  declare var __VLS_8: {};
12
13
  type __VLS_Slots = {} & {
@@ -10,7 +10,12 @@ var u = /*@__PURE__*/ r({
10
10
  type: Boolean,
11
11
  default: void 0
12
12
  },
13
- class: {}
13
+ class: { type: [
14
+ String,
15
+ Boolean,
16
+ null,
17
+ Array
18
+ ] }
14
19
  },
15
20
  setup(r) {
16
21
  let u = r, d = e(), f = t(() => u.unstyled ?? d.unstyled), p = t(() => f.value ? u.class : ["overflow-hidden rounded-xl", u.class]);
@@ -0,0 +1,5 @@
1
+ import e from "./AuthProviders.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/AuthProviders.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,67 @@
1
+ import type { ClassValue } from '../class-value';
2
+ import type { IconLike } from '../composables/icon';
3
+ export interface AuthProvider {
4
+ /** Identifies the provider in the `select` event. */
5
+ id: string;
6
+ /** Button text, e.g. `'Continue with Google'`. Hidden when `compact`. */
7
+ label: string;
8
+ /**
9
+ * The provider's mark. Deliberately yours to supply: the sign-in branding
10
+ * of Google, Apple and the rest comes with rules about the mark, the
11
+ * wording and the colours, and those are the caller's to meet.
12
+ */
13
+ icon?: IconLike;
14
+ /** Render as a link instead of a button. */
15
+ href?: string;
16
+ disabled?: boolean;
17
+ /** Swap the mark for a spinner while the redirect is in flight. */
18
+ loading?: boolean;
19
+ }
20
+ export interface AuthProvidersProps {
21
+ providers?: AuthProvider[];
22
+ /** Full-width rows, or one equal-width column each. */
23
+ layout?: 'stack' | 'inline';
24
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
25
+ variant?: 'outline' | 'ghost' | 'solid';
26
+ /** Drop the labels and show the marks alone. `label` becomes the a11y name. */
27
+ compact?: boolean;
28
+ /** Disable every provider, e.g. while the form it sits beside is submitting. */
29
+ disabled?: boolean;
30
+ /** Skip built-in classes; you take over styling entirely. */
31
+ unstyled?: boolean;
32
+ class?: ClassValue;
33
+ /** Override classes per slot, e.g. `{ provider: 'rounded-full' }`. */
34
+ ui?: {
35
+ root?: string;
36
+ provider?: string;
37
+ icon?: string;
38
+ label?: string;
39
+ };
40
+ }
41
+ declare var __VLS_14: {
42
+ provider: AuthProvider;
43
+ }, __VLS_21: {
44
+ provider: AuthProvider;
45
+ };
46
+ type __VLS_Slots = {} & {
47
+ icon?: (props: typeof __VLS_14) => any;
48
+ } & {
49
+ default?: (props: typeof __VLS_21) => any;
50
+ };
51
+ declare const __VLS_base: import("vue").DefineComponent<AuthProvidersProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
52
+ select: (provider: AuthProvider) => any;
53
+ }, string, import("vue").PublicProps, Readonly<AuthProvidersProps> & Readonly<{
54
+ onSelect?: ((provider: AuthProvider) => any) | undefined;
55
+ }>, {
56
+ variant: "outline" | "ghost" | "solid";
57
+ unstyled: boolean;
58
+ providers: AuthProvider[];
59
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
60
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
61
+ declare const _default: typeof __VLS_export;
62
+ export default _default;
63
+ type __VLS_WithSlots<T, S> = T & {
64
+ new (): {
65
+ $slots: S;
66
+ };
67
+ };
@@ -0,0 +1,83 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import t from "./Icon.js";
3
+ import { authProvidersTheme as n } from "../theme/auth-providers.js";
4
+ import r from "./Button.js";
5
+ import { Fragment as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createTextVNode as l, defineComponent as u, normalizeClass as d, openBlock as f, renderList as p, renderSlot as m, toDisplayString as h, unref as g, withCtx as _ } from "vue";
6
+ import { Loading03Icon as v } from "@hugeicons/core-free-icons";
7
+ //#region src/components/AuthProviders.vue?vue&type=script&setup=true&lang.ts
8
+ var y = /*@__PURE__*/ u({
9
+ __name: "AuthProviders",
10
+ props: {
11
+ providers: { default: () => [] },
12
+ layout: {},
13
+ size: {},
14
+ variant: { default: "outline" },
15
+ compact: { type: Boolean },
16
+ disabled: { type: Boolean },
17
+ unstyled: {
18
+ type: Boolean,
19
+ default: void 0
20
+ },
21
+ class: { type: [
22
+ String,
23
+ Boolean,
24
+ null,
25
+ Array
26
+ ] },
27
+ ui: {}
28
+ },
29
+ emits: ["select"],
30
+ setup(u, { emit: y }) {
31
+ let b = u, x = y, S = e(), C = a(() => b.unstyled ?? S.unstyled), w = a(() => n({
32
+ layout: b.layout,
33
+ size: b.size,
34
+ compact: b.compact
35
+ }));
36
+ function T(e, t) {
37
+ let n = [b.ui?.[e], t].filter(Boolean).join(" ");
38
+ return C.value ? n : w.value[e]({ class: n });
39
+ }
40
+ return (e, n) => (f(), c("div", { class: d(T("root", b.class)) }, [(f(!0), c(i, null, p(b.providers, (n) => (f(), o(r, {
41
+ key: n.id,
42
+ as: n.href ? "a" : "button",
43
+ href: n.href,
44
+ variant: b.variant,
45
+ size: b.size,
46
+ square: b.compact,
47
+ disabled: n.disabled || n.loading || b.disabled,
48
+ "aria-label": b.compact ? n.label : void 0,
49
+ class: d(T("provider")),
50
+ onClick: (e) => x("select", n)
51
+ }, {
52
+ default: _(() => [n.loading || n.icon || e.$slots.icon ? (f(), c("span", {
53
+ key: 0,
54
+ class: d(T("icon"))
55
+ }, [n.loading ? (f(), o(t, {
56
+ key: 0,
57
+ icon: g(v),
58
+ class: "animate-spin",
59
+ "data-icon": ""
60
+ }, null, 8, ["icon"])) : m(e.$slots, "icon", { provider: n }, () => [n.icon ? (f(), o(t, {
61
+ key: 0,
62
+ icon: n.icon,
63
+ "data-icon": ""
64
+ }, null, 8, ["icon"])) : s("", !0)], void 0, 1)], 2)) : s("", !0), b.compact ? s("", !0) : (f(), c("span", {
65
+ key: 1,
66
+ class: d(T("label"))
67
+ }, [m(e.$slots, "default", { provider: n }, () => [l(h(n.label), 1)])], 2))]),
68
+ _: 2
69
+ }, 1032, [
70
+ "as",
71
+ "href",
72
+ "variant",
73
+ "size",
74
+ "square",
75
+ "disabled",
76
+ "aria-label",
77
+ "class",
78
+ "onClick"
79
+ ]))), 128))], 2));
80
+ }
81
+ });
82
+ //#endregion
83
+ export { y as default };
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  export interface AvatarProps {
2
3
  src?: string;
3
4
  /**
@@ -26,7 +27,7 @@ export interface AvatarProps {
26
27
  delayMs?: number;
27
28
  /** Skip built-in classes; you take over styling entirely. */
28
29
  unstyled?: boolean;
29
- class?: string;
30
+ class?: ClassValue;
30
31
  /** Override classes per slot, e.g. `{ fallback: 'bg-primary' }`. */
31
32
  ui?: {
32
33
  root?: string;
@@ -19,7 +19,12 @@ var v = ["title", "aria-label"], y = /*@__PURE__*/ c({
19
19
  type: Boolean,
20
20
  default: void 0
21
21
  },
22
- class: {},
22
+ class: { type: [
23
+ String,
24
+ Boolean,
25
+ null,
26
+ Array
27
+ ] },
23
28
  ui: {}
24
29
  },
25
30
  setup(c) {
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  import type { AvatarProps } from './Avatar.vue';
2
3
  /** One member of the stack — an `IAvatar`'s own props, minus the shared ones. */
3
4
  export type AvatarGroupItem = Omit<AvatarProps, 'size' | 'shape' | 'unstyled' | 'class' | 'ui'>;
@@ -12,7 +13,7 @@ export interface AvatarGroupProps {
12
13
  shape?: 'circle' | 'square';
13
14
  /** Skip built-in classes; you take over styling entirely. */
14
15
  unstyled?: boolean;
15
- class?: string;
16
+ class?: ClassValue;
16
17
  /** Override classes per slot, e.g. `{ overflow: 'bg-primary' }`. */
17
18
  ui?: {
18
19
  root?: string;
@@ -14,7 +14,12 @@ var g = /*@__PURE__*/ l({
14
14
  type: Boolean,
15
15
  default: void 0
16
16
  },
17
- class: {},
17
+ class: { type: [
18
+ String,
19
+ Boolean,
20
+ null,
21
+ Array
22
+ ] },
18
23
  ui: {}
19
24
  },
20
25
  setup(l) {
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  export interface BadgeProps {
2
3
  /** Render as a different element or component. */
3
4
  as?: string;
@@ -14,7 +15,7 @@ export interface BadgeProps {
14
15
  label?: string;
15
16
  /** Skip built-in classes; you take over styling entirely. */
16
17
  unstyled?: boolean;
17
- class?: string;
18
+ class?: ClassValue;
18
19
  /** Override classes per slot, e.g. `{ dot: 'size-3' }`. */
19
20
  ui?: {
20
21
  root?: string;
@@ -16,7 +16,12 @@ var h = /*@__PURE__*/ s({
16
16
  type: Boolean,
17
17
  default: void 0
18
18
  },
19
- class: {},
19
+ class: { type: [
20
+ String,
21
+ Boolean,
22
+ null,
23
+ Array
24
+ ] },
20
25
  ui: {}
21
26
  },
22
27
  setup(s) {
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  import type { IconLike } from '../composables/icon';
2
3
  export interface BannerProps {
3
4
  /** Render as a different element or component. */
@@ -28,7 +29,7 @@ export interface BannerProps {
28
29
  label?: string;
29
30
  /** Skip built-in classes; you take over styling entirely. */
30
31
  unstyled?: boolean;
31
- class?: string;
32
+ class?: ClassValue;
32
33
  /** Override classes per slot, e.g. `{ container: 'max-w-3xl' }`. */
33
34
  ui?: {
34
35
  root?: string;
@@ -26,7 +26,12 @@ var x = ["aria-label"], S = /*@__PURE__*/ u({
26
26
  type: Boolean,
27
27
  default: void 0
28
28
  },
29
- class: {},
29
+ class: { type: [
30
+ String,
31
+ Boolean,
32
+ null,
33
+ Array
34
+ ] },
30
35
  ui: {}
31
36
  }, {
32
37
  open: {
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  import type { ChartSeries } from '../composables/cartesian';
2
3
  import type { ChartAnimate } from '../composables/chart-reveal';
3
4
  import type { SparseValue } from '../composables/scale';
@@ -58,7 +59,7 @@ export interface BarChartProps {
58
59
  label?: string;
59
60
  /** Skip built-in classes; you take over styling entirely. */
60
61
  unstyled?: boolean;
61
- class?: string;
62
+ class?: ClassValue;
62
63
  ui?: Partial<Record<'root' | 'svg' | 'grid' | 'tick' | 'category' | 'bar' | 'tooltip' | 'tooltipLabel' | 'tooltipValue' | 'table', string>>;
63
64
  }
64
65
  declare var __VLS_6: {
@@ -63,7 +63,12 @@ var ee = ["role", "aria-label"], te = [
63
63
  type: Boolean,
64
64
  default: void 0
65
65
  },
66
- class: {},
66
+ class: { type: [
67
+ String,
68
+ Boolean,
69
+ null,
70
+ Array
71
+ ] },
67
72
  ui: {}
68
73
  },
69
74
  setup(v) {
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  import type { IconLike } from '../composables/icon';
2
3
  export interface BreadcrumbItem {
3
4
  label: string;
@@ -16,7 +17,7 @@ export interface BreadcrumbProps {
16
17
  label?: string;
17
18
  /** Skip built-in classes; you take over styling entirely. */
18
19
  unstyled?: boolean;
19
- class?: string;
20
+ class?: ClassValue;
20
21
  /** Override classes per slot, e.g. `{ current: 'text-primary' }`. */
21
22
  ui?: {
22
23
  root?: string;
@@ -14,7 +14,12 @@ var S = /*@__PURE__*/ d({
14
14
  type: Boolean,
15
15
  default: void 0
16
16
  },
17
- class: {},
17
+ class: { type: [
18
+ String,
19
+ Boolean,
20
+ null,
21
+ Array
22
+ ] },
18
23
  ui: {}
19
24
  },
20
25
  setup(d) {
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  export interface ButtonProps {
2
3
  /** Render as a different element or component. */
3
4
  as?: string;
@@ -21,7 +22,7 @@ export interface ButtonProps {
21
22
  /** Skip built-in classes; you take over styling entirely. */
22
23
  unstyled?: boolean;
23
24
  type?: 'button' | 'submit' | 'reset';
24
- class?: string;
25
+ class?: ClassValue;
25
26
  }
26
27
  declare var __VLS_13: {};
27
28
  type __VLS_Slots = {} & {
@@ -22,7 +22,12 @@ var h = /*@__PURE__*/ s({
22
22
  default: void 0
23
23
  },
24
24
  type: { default: "button" },
25
- class: {}
25
+ class: { type: [
26
+ String,
27
+ Boolean,
28
+ null,
29
+ Array
30
+ ] }
26
31
  },
27
32
  setup(s) {
28
33
  let h = s, g = e(), _ = i(() => h.unstyled ?? g.unstyled), v = n(), y = i(() => h.size ?? v?.size.value), b = i(() => _.value ? h.class : r({
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  import type { ButtonSize } from '../composables/button-group';
2
3
  export interface ButtonGroupProps {
3
4
  /** Render as a different element or component. */
@@ -12,7 +13,7 @@ export interface ButtonGroupProps {
12
13
  block?: boolean;
13
14
  /** Skip built-in classes; you take over styling entirely. */
14
15
  unstyled?: boolean;
15
- class?: string;
16
+ class?: ClassValue;
16
17
  }
17
18
  declare var __VLS_8: {};
18
19
  type __VLS_Slots = {} & {
@@ -15,7 +15,12 @@ var p = /*@__PURE__*/ a({
15
15
  type: Boolean,
16
16
  default: void 0
17
17
  },
18
- class: {}
18
+ class: { type: [
19
+ String,
20
+ Boolean,
21
+ null,
22
+ Array
23
+ ] }
19
24
  },
20
25
  setup(a) {
21
26
  let p = a;
@@ -1,3 +1,4 @@
1
+ import type { ClassValue } from '../class-value';
1
2
  export interface CalendarProps {
2
3
  /** Earliest selectable date, as an ISO `YYYY-MM-DD` string. */
3
4
  min?: string;
@@ -40,7 +41,7 @@ export interface CalendarProps {
40
41
  nextLabel?: string;
41
42
  /** Skip built-in classes; you take over styling entirely. */
42
43
  unstyled?: boolean;
43
- class?: string;
44
+ class?: ClassValue;
44
45
  /** Override classes per slot, e.g. `{ cellTrigger: 'rounded-full' }`. */
45
46
  ui?: Partial<Record<'root' | 'header' | 'heading' | 'nav' | 'months' | 'grid' | 'headCell' | 'cell' | 'cellTrigger', string>>;
46
47
  }
@@ -33,7 +33,12 @@ var I = /*@__PURE__*/ p({
33
33
  type: Boolean,
34
34
  default: void 0
35
35
  },
36
- class: {},
36
+ class: { type: [
37
+ String,
38
+ Boolean,
39
+ null,
40
+ Array
41
+ ] },
37
42
  ui: {}
38
43
  }, {
39
44
  modelValue: { default: null },