iryx-ui 0.19.0 → 0.20.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 (89) hide show
  1. package/README.md +3 -3
  2. package/dist/component-names.d.ts +2 -2
  3. package/dist/component-names.js +3 -1
  4. package/dist/components/Alert.vue.d.ts +1 -1
  5. package/dist/components/AppShell.vue.d.ts +1 -1
  6. package/dist/components/AuthProviders.vue.d.ts +1 -1
  7. package/dist/components/Avatar.vue.d.ts +1 -1
  8. package/dist/components/AvatarGroup.vue.d.ts +1 -1
  9. package/dist/components/Badge.vue.d.ts +1 -1
  10. package/dist/components/Banner.vue.d.ts +1 -1
  11. package/dist/components/Breadcrumb.vue.d.ts +1 -1
  12. package/dist/components/Calendar.vue.d.ts +1 -1
  13. package/dist/components/Card.vue.d.ts +1 -1
  14. package/dist/components/ChartLegend.vue.d.ts +3 -1
  15. package/dist/components/ChartLegend.vue_vue_type_script_setup_true_lang.js +4 -1
  16. package/dist/components/Checkbox.vue.d.ts +1 -1
  17. package/dist/components/Collapsible.vue.d.ts +1 -1
  18. package/dist/components/ColorPicker.vue.d.ts +1 -1
  19. package/dist/components/Container.vue.d.ts +1 -1
  20. package/dist/components/ContextMenu.vue.d.ts +1 -1
  21. package/dist/components/DateField.vue.d.ts +1 -1
  22. package/dist/components/DatePicker.vue.d.ts +1 -1
  23. package/dist/components/DateRangePicker.vue.d.ts +1 -1
  24. package/dist/components/Dialog.vue.d.ts +1 -1
  25. package/dist/components/Drawer.vue.d.ts +1 -1
  26. package/dist/components/DropdownMenu.vue.d.ts +1 -1
  27. package/dist/components/EmptyState.vue.d.ts +1 -1
  28. package/dist/components/FileUpload.vue.d.ts +1 -1
  29. package/dist/components/Input.vue.d.ts +1 -1
  30. package/dist/components/Kbd.vue.d.ts +1 -1
  31. package/dist/components/Menubar.vue.d.ts +1 -1
  32. package/dist/components/NavigationMenu.vue.d.ts +1 -1
  33. package/dist/components/NumberInput.vue.d.ts +1 -1
  34. package/dist/components/PageHeader.vue.d.ts +1 -1
  35. package/dist/components/Pagination.vue.d.ts +1 -1
  36. package/dist/components/PasswordInput.vue.d.ts +1 -1
  37. package/dist/components/PinInput.vue.d.ts +1 -1
  38. package/dist/components/Popover.vue.d.ts +1 -1
  39. package/dist/components/Progress.vue.d.ts +1 -1
  40. package/dist/components/Rating.js +5 -0
  41. package/dist/components/Rating.vue.d.ts +57 -0
  42. package/dist/components/Rating.vue_vue_type_script_setup_true_lang.js +110 -0
  43. package/dist/components/ScrollArea.vue.d.ts +1 -1
  44. package/dist/components/Separator.vue.d.ts +1 -1
  45. package/dist/components/Sidebar.vue.d.ts +1 -1
  46. package/dist/components/SignaturePad.vue.d.ts +1 -1
  47. package/dist/components/Slider.vue.d.ts +1 -1
  48. package/dist/components/Sparkline.vue.d.ts +1 -1
  49. package/dist/components/Splitter.vue.d.ts +1 -1
  50. package/dist/components/Stat.vue.d.ts +1 -1
  51. package/dist/components/Stepper.vue.d.ts +1 -1
  52. package/dist/components/Switch.vue.d.ts +1 -1
  53. package/dist/components/Table.vue.d.ts +1 -1
  54. package/dist/components/Tabs.vue.d.ts +1 -1
  55. package/dist/components/TagsInput.vue.d.ts +1 -1
  56. package/dist/components/TimeField.vue.d.ts +1 -1
  57. package/dist/components/Timeline.vue.d.ts +1 -1
  58. package/dist/components/Toaster.vue.d.ts +1 -1
  59. package/dist/components/ToggleGroup.vue.d.ts +1 -1
  60. package/dist/components/Toolbar.vue.d.ts +1 -1
  61. package/dist/components/Tooltip.vue.d.ts +1 -1
  62. package/dist/components/Tree.vue.d.ts +1 -1
  63. package/dist/components/index.d.ts +1 -0
  64. package/dist/components/index.js +54 -52
  65. package/dist/index.d.ts +1 -0
  66. package/dist/index.js +56 -55
  67. package/dist/marketing/BrowserFrame.vue.d.ts +1 -1
  68. package/dist/marketing/FeatureCard.vue.d.ts +1 -1
  69. package/dist/marketing/Hero.vue.d.ts +1 -1
  70. package/dist/marketing/PricingCard.vue.d.ts +1 -1
  71. package/dist/marketing/Section.vue.d.ts +1 -1
  72. package/dist/marketing/SiteFooter.js +5 -0
  73. package/dist/marketing/SiteFooter.vue.d.ts +53 -0
  74. package/dist/marketing/SiteFooter.vue_vue_type_script_setup_true_lang.js +87 -0
  75. package/dist/marketing/SiteHeader.js +5 -0
  76. package/dist/marketing/SiteHeader.vue.d.ts +86 -0
  77. package/dist/marketing/SiteHeader.vue_vue_type_script_setup_true_lang.js +122 -0
  78. package/dist/marketing/TestimonialCard.vue.d.ts +1 -1
  79. package/dist/marketing/index.d.ts +2 -0
  80. package/dist/marketing/index.js +8 -4
  81. package/dist/marketing.d.ts +2 -0
  82. package/dist/marketing.js +5 -3
  83. package/dist/theme/rating.d.ts +122 -0
  84. package/dist/theme/rating.js +49 -0
  85. package/dist/theme/site-footer.d.ts +80 -0
  86. package/dist/theme/site-footer.js +30 -0
  87. package/dist/theme/site-header.d.ts +74 -0
  88. package/dist/theme/site-header.js +30 -0
  89. package/package.json +1 -1
package/README.md CHANGED
@@ -7,7 +7,7 @@ A Vue 3 component library built on [Reka UI](https://reka-ui.com) and [Tailwind
7
7
 
8
8
  **[Documentation →](https://iryx-ui.com)**
9
9
 
10
- Every component arrives with keyboard navigation, focus management and ARIA already working, then hands you a `class`, a per-slot `ui`, or `unstyled` when the defaults are not what you want.
10
+ Every component arrives with keyboard navigation, focus management and ARIA already working, then hands you a `class`, a per-element `ui`, or `unstyled` when the defaults are not what you want.
11
11
 
12
12
  ## Installation
13
13
 
@@ -104,8 +104,8 @@ export default defineNuxtConfig({
104
104
  </ISection>
105
105
  ```
106
106
 
107
- Seven so far: `IHero`, `ISection`, `IPricingTable`, `IPricingCard`, `IFeatureCard`,
108
- `ITestimonialCard` and `IBrowserFrame`. Importing the subpath also declares
107
+ Nine so far: `IHero`, `ISection`, `IPricingTable`, `IPricingCard`, `IFeatureCard`,
108
+ `ITestimonialCard`, `IBrowserFrame`, `ISiteHeader` and `ISiteFooter`. Importing the subpath also declares
109
109
  them on Vue's `GlobalComponents`; a project that never imports it is untouched.
110
110
 
111
111
  ## Three ways to take the styling back
@@ -3,7 +3,7 @@
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", "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"];
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", "Rating", "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];
8
8
  /**
9
9
  * Names of every block exported from `iryx-ui/marketing`.
@@ -11,5 +11,5 @@ export type ComponentName = (typeof componentNames)[number];
11
11
  * runs at build time and must not pull `.vue` files into Node.
12
12
  * Keep in sync with `src/marketing/index.ts`.
13
13
  */
14
- export declare const marketingComponentNames: readonly ["BrowserFrame", "FeatureCard", "Hero", "PricingCard", "PricingTable", "Section", "TestimonialCard"];
14
+ export declare const marketingComponentNames: readonly ["BrowserFrame", "FeatureCard", "Hero", "PricingCard", "PricingTable", "Section", "SiteFooter", "SiteHeader", "TestimonialCard"];
15
15
  export type MarketingComponentName = (typeof marketingComponentNames)[number];
@@ -1,11 +1,13 @@
1
1
  //#region src/component-names.ts
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("."), t = [
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.Rating.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("."), t = [
3
3
  "BrowserFrame",
4
4
  "FeatureCard",
5
5
  "Hero",
6
6
  "PricingCard",
7
7
  "PricingTable",
8
8
  "Section",
9
+ "SiteFooter",
10
+ "SiteHeader",
9
11
  "TestimonialCard"
10
12
  ];
11
13
  //#endregion
@@ -20,7 +20,7 @@ export interface AlertProps {
20
20
  /** Skip built-in classes; you take over styling entirely. */
21
21
  unstyled?: boolean;
22
22
  class?: ClassValue;
23
- /** Override classes per slot, e.g. `{ title: 'text-base' }`. */
23
+ /** Override classes per element, e.g. `{ title: 'text-base' }`. */
24
24
  ui?: {
25
25
  root?: string;
26
26
  icon?: string;
@@ -19,7 +19,7 @@ export interface AppShellProps {
19
19
  /** Skip built-in classes; you take over styling entirely. */
20
20
  unstyled?: boolean;
21
21
  class?: ClassValue;
22
- /** Override classes per slot, e.g. `{ main: 'p-8' }`. */
22
+ /** Override classes per element, e.g. `{ main: 'p-8' }`. */
23
23
  ui?: {
24
24
  root?: string;
25
25
  header?: string;
@@ -30,7 +30,7 @@ export interface AuthProvidersProps {
30
30
  /** Skip built-in classes; you take over styling entirely. */
31
31
  unstyled?: boolean;
32
32
  class?: ClassValue;
33
- /** Override classes per slot, e.g. `{ provider: 'rounded-full' }`. */
33
+ /** Override classes per element, e.g. `{ provider: 'rounded-full' }`. */
34
34
  ui?: {
35
35
  root?: string;
36
36
  provider?: string;
@@ -28,7 +28,7 @@ export interface AvatarProps {
28
28
  /** Skip built-in classes; you take over styling entirely. */
29
29
  unstyled?: boolean;
30
30
  class?: ClassValue;
31
- /** Override classes per slot, e.g. `{ fallback: 'bg-primary' }`. */
31
+ /** Override classes per element, e.g. `{ fallback: 'bg-primary' }`. */
32
32
  ui?: {
33
33
  root?: string;
34
34
  image?: string;
@@ -14,7 +14,7 @@ export interface AvatarGroupProps {
14
14
  /** Skip built-in classes; you take over styling entirely. */
15
15
  unstyled?: boolean;
16
16
  class?: ClassValue;
17
- /** Override classes per slot, e.g. `{ overflow: 'bg-primary' }`. */
17
+ /** Override classes per element, e.g. `{ overflow: 'bg-primary' }`. */
18
18
  ui?: {
19
19
  root?: string;
20
20
  item?: string;
@@ -16,7 +16,7 @@ export interface BadgeProps {
16
16
  /** Skip built-in classes; you take over styling entirely. */
17
17
  unstyled?: boolean;
18
18
  class?: ClassValue;
19
- /** Override classes per slot, e.g. `{ dot: 'size-3' }`. */
19
+ /** Override classes per element, e.g. `{ dot: 'size-3' }`. */
20
20
  ui?: {
21
21
  root?: string;
22
22
  dot?: string;
@@ -30,7 +30,7 @@ export interface BannerProps {
30
30
  /** Skip built-in classes; you take over styling entirely. */
31
31
  unstyled?: boolean;
32
32
  class?: ClassValue;
33
- /** Override classes per slot, e.g. `{ container: 'max-w-3xl' }`. */
33
+ /** Override classes per element, e.g. `{ container: 'max-w-3xl' }`. */
34
34
  ui?: {
35
35
  root?: string;
36
36
  container?: string;
@@ -18,7 +18,7 @@ export interface BreadcrumbProps {
18
18
  /** Skip built-in classes; you take over styling entirely. */
19
19
  unstyled?: boolean;
20
20
  class?: ClassValue;
21
- /** Override classes per slot, e.g. `{ current: 'text-primary' }`. */
21
+ /** Override classes per element, e.g. `{ current: 'text-primary' }`. */
22
22
  ui?: {
23
23
  root?: string;
24
24
  list?: string;
@@ -42,7 +42,7 @@ export interface CalendarProps {
42
42
  /** Skip built-in classes; you take over styling entirely. */
43
43
  unstyled?: boolean;
44
44
  class?: ClassValue;
45
- /** Override classes per slot, e.g. `{ cellTrigger: 'rounded-full' }`. */
45
+ /** Override classes per element, e.g. `{ cellTrigger: 'rounded-full' }`. */
46
46
  ui?: Partial<Record<'root' | 'header' | 'heading' | 'nav' | 'months' | 'grid' | 'headCell' | 'cell' | 'cellTrigger', string>>;
47
47
  }
48
48
  /**
@@ -14,7 +14,7 @@ export interface CardProps {
14
14
  /** Skip built-in classes; you take over styling entirely. */
15
15
  unstyled?: boolean;
16
16
  class?: ClassValue;
17
- /** Override classes per slot, e.g. `{ footer: 'justify-end' }`. */
17
+ /** Override classes per element, e.g. `{ footer: 'justify-end' }`. */
18
18
  ui?: {
19
19
  root?: string;
20
20
  header?: string;
@@ -8,6 +8,8 @@ export interface ChartLegendProps {
8
8
  class?: ClassValue;
9
9
  ui?: Partial<Record<'root' | 'item' | 'swatch' | 'name', string>>;
10
10
  }
11
- declare const __VLS_export: import("vue").DefineComponent<ChartLegendProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChartLegendProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_export: import("vue").DefineComponent<ChartLegendProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChartLegendProps> & Readonly<{}>, {
12
+ unstyled: boolean;
13
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
14
  declare const _default: typeof __VLS_export;
13
15
  export default _default;
@@ -8,7 +8,10 @@ var h = /*@__PURE__*/ c({
8
8
  props: {
9
9
  series: {},
10
10
  active: {},
11
- unstyled: { type: Boolean },
11
+ unstyled: {
12
+ type: Boolean,
13
+ default: void 0
14
+ },
12
15
  class: { type: [
13
16
  String,
14
17
  Boolean,
@@ -12,7 +12,7 @@ export interface CheckboxProps extends CheckboxRootProps {
12
12
  /** Skip built-in classes; you take over styling entirely. */
13
13
  unstyled?: boolean;
14
14
  class?: ClassValue;
15
- /** Override classes per slot, e.g. `{ indicator: 'text-black' }`. */
15
+ /** Override classes per element, e.g. `{ indicator: 'text-black' }`. */
16
16
  ui?: {
17
17
  wrapper?: string;
18
18
  root?: string;
@@ -18,7 +18,7 @@ export interface CollapsibleProps {
18
18
  /** Skip built-in classes; you take over styling entirely. */
19
19
  unstyled?: boolean;
20
20
  class?: ClassValue;
21
- /** Override classes per slot, e.g. `{ content: 'pt-2' }`. */
21
+ /** Override classes per element, e.g. `{ content: 'pt-2' }`. */
22
22
  ui?: {
23
23
  root?: string;
24
24
  trigger?: string;
@@ -21,7 +21,7 @@ export interface ColorPickerProps {
21
21
  /** Skip built-in classes; you take over styling entirely. */
22
22
  unstyled?: boolean;
23
23
  class?: ClassValue;
24
- /** Override classes per slot, e.g. `{ area: 'h-56' }`. */
24
+ /** Override classes per element, e.g. `{ area: 'h-56' }`. */
25
25
  ui?: {
26
26
  root?: string;
27
27
  area?: string;
@@ -11,7 +11,7 @@ export interface ContainerProps {
11
11
  /** Skip built-in classes; you take over styling entirely. */
12
12
  unstyled?: boolean;
13
13
  class?: ClassValue;
14
- /** Override classes per slot, e.g. `{ root: 'py-10' }`. */
14
+ /** Override classes per element, e.g. `{ root: 'py-10' }`. */
15
15
  ui?: {
16
16
  root?: string;
17
17
  };
@@ -10,7 +10,7 @@ export interface ContextMenuProps {
10
10
  /** Skip built-in classes; you take over styling entirely. */
11
11
  unstyled?: boolean;
12
12
  class?: ClassValue;
13
- /** Override classes per slot, e.g. `{ item: 'py-2' }`. */
13
+ /** Override classes per element, e.g. `{ item: 'py-2' }`. */
14
14
  ui?: {
15
15
  content?: string;
16
16
  item?: string;
@@ -20,7 +20,7 @@ export interface DateFieldProps {
20
20
  /** Skip built-in classes; you take over styling entirely. */
21
21
  unstyled?: boolean;
22
22
  class?: ClassValue;
23
- /** Override classes per slot, e.g. `{ segment: 'px-1' }`. */
23
+ /** Override classes per element, e.g. `{ segment: 'px-1' }`. */
24
24
  ui?: {
25
25
  root?: string;
26
26
  segment?: string;
@@ -32,7 +32,7 @@ export interface DatePickerProps {
32
32
  unstyled?: boolean;
33
33
  /** Applied to the trigger, which is the element carrying the field chrome. */
34
34
  class?: ClassValue;
35
- /** Override classes per slot, e.g. `{ content: 'p-4' }`. */
35
+ /** Override classes per element, e.g. `{ content: 'p-4' }`. */
36
36
  ui?: Partial<Record<'trigger' | 'placeholder' | 'content' | 'header' | 'heading' | 'nav' | 'months' | 'grid' | 'headCell' | 'cell' | 'cellTrigger' | 'footer' | 'action', string>>;
37
37
  }
38
38
  type __VLS_Props = DatePickerProps;
@@ -35,7 +35,7 @@ export interface DateRangePickerProps {
35
35
  unstyled?: boolean;
36
36
  /** Applied to the trigger, which is the element carrying the field chrome. */
37
37
  class?: ClassValue;
38
- /** Override classes per slot, e.g. `{ content: 'p-4' }`. */
38
+ /** Override classes per element, e.g. `{ content: 'p-4' }`. */
39
39
  ui?: Partial<Record<'trigger' | 'placeholder' | 'content' | 'header' | 'heading' | 'nav' | 'months' | 'grid' | 'headCell' | 'cell' | 'cellTrigger' | 'footer' | 'action', string>>;
40
40
  }
41
41
  type __VLS_Props = DateRangePickerProps;
@@ -12,7 +12,7 @@ export interface DialogProps {
12
12
  /** Skip built-in classes; you take over styling entirely. */
13
13
  unstyled?: boolean;
14
14
  class?: ClassValue;
15
- /** Override classes per slot, e.g. `{ content: 'max-w-3xl' }`. */
15
+ /** Override classes per element, e.g. `{ content: 'max-w-3xl' }`. */
16
16
  ui?: {
17
17
  overlay?: string;
18
18
  content?: string;
@@ -34,7 +34,7 @@ export interface DrawerProps {
34
34
  /** Skip built-in classes; you take over styling entirely. */
35
35
  unstyled?: boolean;
36
36
  class?: ClassValue;
37
- /** Override classes per slot, e.g. `{ content: 'sm:max-w-3xl' }`. */
37
+ /** Override classes per element, e.g. `{ content: 'sm:max-w-3xl' }`. */
38
38
  ui?: {
39
39
  overlay?: string;
40
40
  content?: string;
@@ -11,7 +11,7 @@ export interface DropdownMenuProps {
11
11
  /** Skip built-in classes; you take over styling entirely. */
12
12
  unstyled?: boolean;
13
13
  class?: ClassValue;
14
- /** Override classes per slot, e.g. `{ item: 'py-2' }`. */
14
+ /** Override classes per element, e.g. `{ item: 'py-2' }`. */
15
15
  ui?: {
16
16
  content?: string;
17
17
  header?: string;
@@ -11,7 +11,7 @@ export interface EmptyStateProps {
11
11
  /** Skip built-in classes; you take over styling entirely. */
12
12
  unstyled?: boolean;
13
13
  class?: ClassValue;
14
- /** Override classes per slot, e.g. `{ title: 'text-xl' }`. */
14
+ /** Override classes per element, e.g. `{ title: 'text-xl' }`. */
15
15
  ui?: {
16
16
  root?: string;
17
17
  icon?: string;
@@ -32,7 +32,7 @@ export interface FileUploadProps {
32
32
  unstyled?: boolean;
33
33
  /** Applied to the outer wrapper, which stacks the zone above the list. */
34
34
  class?: ClassValue;
35
- /** Override classes per slot, e.g. `{ dropzone: 'py-10' }`. */
35
+ /** Override classes per element, e.g. `{ dropzone: 'py-10' }`. */
36
36
  ui?: Partial<Record<'root' | 'dropzone' | 'input' | 'icon' | 'label' | 'browse' | 'hint' | 'list' | 'item' | 'thumbnail' | 'placeholder' | 'details' | 'name' | 'meta' | 'remove' | 'error', string>>;
37
37
  }
38
38
  type __VLS_Props = FileUploadProps;
@@ -24,7 +24,7 @@ export interface InputProps {
24
24
  unstyled?: boolean;
25
25
  /** Applied to the outer field, which is the element carrying the chrome. */
26
26
  class?: ClassValue;
27
- /** Override classes per slot, e.g. `{ input: 'text-right' }`. */
27
+ /** Override classes per element, e.g. `{ input: 'text-right' }`. */
28
28
  ui?: {
29
29
  root?: string;
30
30
  input?: string;
@@ -20,7 +20,7 @@ export interface KbdProps {
20
20
  /** Skip built-in classes; you take over styling entirely. */
21
21
  unstyled?: boolean;
22
22
  class?: ClassValue;
23
- /** Override classes per slot, e.g. `{ key: 'bg-background' }`. */
23
+ /** Override classes per element, e.g. `{ key: 'bg-background' }`. */
24
24
  ui?: {
25
25
  root?: string;
26
26
  key?: string;
@@ -19,7 +19,7 @@ export interface MenubarProps {
19
19
  /** Skip built-in classes; you take over styling entirely. */
20
20
  unstyled?: boolean;
21
21
  class?: ClassValue;
22
- /** Override classes per slot, e.g. `{ trigger: 'px-4' }`. */
22
+ /** Override classes per element, e.g. `{ trigger: 'px-4' }`. */
23
23
  ui?: {
24
24
  root?: string;
25
25
  trigger?: string;
@@ -18,7 +18,7 @@ export interface NavigationMenuProps {
18
18
  /** Skip built-in classes; you take over styling entirely. */
19
19
  unstyled?: boolean;
20
20
  class?: ClassValue;
21
- /** Override classes per slot, e.g. `{ viewport: 'w-96' }`. */
21
+ /** Override classes per element, e.g. `{ viewport: 'w-96' }`. */
22
22
  ui?: {
23
23
  root?: string;
24
24
  list?: string;
@@ -28,7 +28,7 @@ export interface NumberInputProps {
28
28
  /** Skip built-in classes; you take over styling entirely. */
29
29
  unstyled?: boolean;
30
30
  class?: ClassValue;
31
- /** Override classes per slot, e.g. `{ step: 'px-2' }`. */
31
+ /** Override classes per element, e.g. `{ step: 'px-2' }`. */
32
32
  ui?: {
33
33
  root?: string;
34
34
  input?: string;
@@ -14,7 +14,7 @@ export interface PageHeaderProps {
14
14
  /** Skip built-in classes; you take over styling entirely. */
15
15
  unstyled?: boolean;
16
16
  class?: ClassValue;
17
- /** Override classes per slot, e.g. `{ title: 'text-3xl' }`. */
17
+ /** Override classes per element, e.g. `{ title: 'text-3xl' }`. */
18
18
  ui?: {
19
19
  root?: string;
20
20
  top?: string;
@@ -17,7 +17,7 @@ export interface PaginationProps {
17
17
  /** Skip built-in classes; you take over styling entirely. */
18
18
  unstyled?: boolean;
19
19
  class?: ClassValue;
20
- /** Override classes per slot, e.g. `{ item: 'rounded-full' }`. */
20
+ /** Override classes per element, e.g. `{ item: 'rounded-full' }`. */
21
21
  ui?: {
22
22
  root?: string;
23
23
  list?: string;
@@ -23,7 +23,7 @@ export interface PasswordInputProps {
23
23
  unstyled?: boolean;
24
24
  /** Applied to the outer wrapper, which stacks the field above the meter. */
25
25
  class?: ClassValue;
26
- /** Override classes per slot, e.g. `{ meter: 'mt-1' }`. */
26
+ /** Override classes per element, e.g. `{ meter: 'mt-1' }`. */
27
27
  ui?: {
28
28
  root?: string;
29
29
  input?: string;
@@ -34,7 +34,7 @@ export interface PinInputProps {
34
34
  /** Skip built-in classes; you take over styling entirely. */
35
35
  unstyled?: boolean;
36
36
  class?: ClassValue;
37
- /** Override classes per slot, e.g. `{ input: 'size-14' }`. */
37
+ /** Override classes per element, e.g. `{ input: 'size-14' }`. */
38
38
  ui?: {
39
39
  root?: string;
40
40
  input?: string;
@@ -27,7 +27,7 @@ export interface PopoverProps {
27
27
  /** Skip built-in classes; you take over styling entirely. */
28
28
  unstyled?: boolean;
29
29
  class?: ClassValue;
30
- /** Override classes per slot, e.g. `{ content: 'w-96' }`. */
30
+ /** Override classes per element, e.g. `{ content: 'w-96' }`. */
31
31
  ui?: {
32
32
  content?: string;
33
33
  title?: string;
@@ -33,7 +33,7 @@ export interface ProgressProps {
33
33
  /** Skip built-in classes; you take over styling entirely. */
34
34
  unstyled?: boolean;
35
35
  class?: ClassValue;
36
- /** Override classes per slot, e.g. `{ track: 'h-4' }`. */
36
+ /** Override classes per element, e.g. `{ track: 'h-4' }`. */
37
37
  ui?: {
38
38
  root?: string;
39
39
  header?: string;
@@ -0,0 +1,5 @@
1
+ import e from "./Rating.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/Rating.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,57 @@
1
+ import type { ClassValue } from '../class-value';
2
+ import type { IconLike } from '../composables/icon';
3
+ export interface RatingProps {
4
+ /** How many icons to show. */
5
+ max?: number;
6
+ /** Let the reader set the value. Without it this is a read-only score. */
7
+ interactive?: boolean;
8
+ /**
9
+ * Smallest step the reader can choose, e.g. `0.5` for half stars. Display is
10
+ * continuous either way — a score of 3.7 fills seven tenths of the fourth.
11
+ */
12
+ step?: number;
13
+ size?: 'sm' | 'md' | 'lg';
14
+ disabled?: boolean;
15
+ /** The icon to repeat. Any Hugeicons export, or a component that renders an SVG. */
16
+ icon?: IconLike;
17
+ /**
18
+ * Accessible name for the control, since a row of stars has no text of its
19
+ * own — "Overall rating", "Rate this reply".
20
+ */
21
+ label?: string;
22
+ /** Print the score beside the icons, e.g. `4.5`. */
23
+ showValue?: boolean;
24
+ /** Skip built-in classes; you take over styling entirely. */
25
+ unstyled?: boolean;
26
+ class?: ClassValue;
27
+ /** Override classes per element, e.g. `{ fill: 'text-primary' }`. */
28
+ ui?: {
29
+ root?: string;
30
+ items?: string;
31
+ item?: string;
32
+ empty?: string;
33
+ fill?: string;
34
+ label?: string;
35
+ };
36
+ }
37
+ type __VLS_Props = RatingProps;
38
+ type __VLS_ModelProps = {
39
+ modelValue?: number;
40
+ };
41
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
42
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
43
+ "update:modelValue": (value: number) => any;
44
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
45
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
46
+ }>, {
47
+ icon: IconLike;
48
+ label: string;
49
+ disabled: boolean;
50
+ unstyled: boolean;
51
+ max: number;
52
+ step: number;
53
+ showValue: boolean;
54
+ interactive: boolean;
55
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
56
+ declare const _default: typeof __VLS_export;
57
+ export default _default;
@@ -0,0 +1,110 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import t from "./Icon.js";
3
+ import { ratingTheme as n } from "../theme/rating.js";
4
+ import { Fragment as r, computed as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createVNode as c, defineComponent as l, mergeModels as u, mergeProps as d, normalizeClass as f, normalizeStyle as p, openBlock as m, renderList as h, toDisplayString as g, useModel as _ } from "vue";
5
+ import { StarIcon as v } from "@hugeicons/core-free-icons";
6
+ //#region src/components/Rating.vue?vue&type=script&setup=true&lang.ts
7
+ var y = ["aria-hidden"], b = ["onClick"], x = /*@__PURE__*/ l({
8
+ __name: "Rating",
9
+ props: /*@__PURE__*/ u({
10
+ max: { default: 5 },
11
+ interactive: {
12
+ type: Boolean,
13
+ default: void 0
14
+ },
15
+ step: { default: 1 },
16
+ size: {},
17
+ disabled: {
18
+ type: Boolean,
19
+ default: void 0
20
+ },
21
+ icon: { default: () => v },
22
+ label: { default: "Rating" },
23
+ showValue: {
24
+ type: Boolean,
25
+ default: void 0
26
+ },
27
+ unstyled: {
28
+ type: Boolean,
29
+ default: void 0
30
+ },
31
+ class: { type: [
32
+ String,
33
+ Boolean,
34
+ null,
35
+ Array
36
+ ] },
37
+ ui: {}
38
+ }, {
39
+ modelValue: { default: 0 },
40
+ modelModifiers: {}
41
+ }),
42
+ emits: ["update:modelValue"],
43
+ setup(l) {
44
+ let u = l, v = _(l, "modelValue"), x = e(), S = i(() => u.unstyled ?? x.unstyled), C = i(() => n({
45
+ size: u.size,
46
+ interactive: u.interactive ?? !1,
47
+ disabled: u.disabled ?? !1
48
+ }));
49
+ function w(e, t) {
50
+ return S.value ? [u.ui?.[e], t] : C.value[e]({ class: [u.ui?.[e], t] });
51
+ }
52
+ let T = i(() => Math.min(Math.max(v.value, 0), u.max));
53
+ function E(e) {
54
+ let t = Math.min(Math.max(T.value - e, 0), 1);
55
+ return Math.round(t * 1e4) / 100;
56
+ }
57
+ let D = i(() => Number(T.value.toFixed(2)).toString());
58
+ function O(e) {
59
+ if (u.disabled || !u.interactive) return;
60
+ let t = Math.round(e / u.step) * u.step;
61
+ v.value = Math.min(Math.max(t, u.step), u.max);
62
+ }
63
+ let k = i(() => u.interactive ? {
64
+ role: "slider",
65
+ tabindex: u.disabled ? -1 : 0,
66
+ "aria-label": u.label,
67
+ "aria-valuemin": 0,
68
+ "aria-valuemax": u.max,
69
+ "aria-valuenow": T.value,
70
+ "aria-valuetext": `${D.value} out of ${u.max}`,
71
+ "aria-disabled": u.disabled || void 0
72
+ } : {
73
+ role: "img",
74
+ "aria-label": `${u.label}: ${D.value} out of ${u.max}`
75
+ });
76
+ function A(e) {
77
+ if (!u.interactive) return;
78
+ let t = {
79
+ ArrowRight: u.step,
80
+ ArrowUp: u.step,
81
+ ArrowLeft: -u.step,
82
+ ArrowDown: -u.step
83
+ };
84
+ e.key in t ? (e.preventDefault(), O(T.value + t[e.key])) : e.key === "Home" ? (e.preventDefault(), O(u.step)) : e.key === "End" && (e.preventDefault(), O(u.max));
85
+ }
86
+ return (e, n) => (m(), o("div", d(k.value, {
87
+ class: w("root", u.class),
88
+ onKeydown: A
89
+ }), [s("div", {
90
+ class: f(w("items")),
91
+ "aria-hidden": u.interactive ? void 0 : "true"
92
+ }, [(m(!0), o(r, null, h(u.max, (e) => (m(), o("span", {
93
+ key: e,
94
+ class: f(w("item")),
95
+ onClick: (t) => O(e)
96
+ }, [c(t, {
97
+ icon: u.icon,
98
+ class: f(w("empty"))
99
+ }, null, 8, ["icon", "class"]), s("span", {
100
+ class: f(w("fill")),
101
+ style: p({ width: `${E(e - 1)}%` })
102
+ }, [c(t, { icon: u.icon }, null, 8, ["icon"])], 6)], 10, b))), 128))], 10, y), u.showValue ? (m(), o("span", {
103
+ key: 0,
104
+ class: f(w("label")),
105
+ "aria-hidden": "true"
106
+ }, g(D.value), 3)) : a("", !0)], 16));
107
+ }
108
+ });
109
+ //#endregion
110
+ export { x as default };
@@ -14,7 +14,7 @@ export interface ScrollAreaProps {
14
14
  /** Skip built-in classes; you take over styling entirely. */
15
15
  unstyled?: boolean;
16
16
  class?: ClassValue;
17
- /** Override classes per slot, e.g. `{ thumb: 'bg-primary' }`. */
17
+ /** Override classes per element, e.g. `{ thumb: 'bg-primary' }`. */
18
18
  ui?: {
19
19
  root?: string;
20
20
  viewport?: string;
@@ -11,7 +11,7 @@ export interface SeparatorProps {
11
11
  /** Skip built-in classes; you take over styling entirely. */
12
12
  unstyled?: boolean;
13
13
  class?: ClassValue;
14
- /** Override classes per slot, e.g. `{ line: 'bg-primary' }`. */
14
+ /** Override classes per element, e.g. `{ line: 'bg-primary' }`. */
15
15
  ui?: {
16
16
  root?: string;
17
17
  line?: string;