iryx-ui 0.4.0 → 0.6.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 (68) hide show
  1. package/README.md +293 -10
  2. package/dist/component-names.d.ts +1 -1
  3. package/dist/components/Alert.vue.d.ts +19 -4
  4. package/dist/components/App.vue.d.ts +1 -1
  5. package/dist/components/Badge.vue.d.ts +4 -3
  6. package/dist/components/Banner.vue.d.ts +81 -0
  7. package/dist/components/Combobox.vue.d.ts +112 -0
  8. package/dist/components/Pagination.vue.d.ts +2 -0
  9. package/dist/components/Select.vue.d.ts +15 -4
  10. package/dist/components/Table.vue.d.ts +131 -0
  11. package/dist/components/index.d.ts +3 -0
  12. package/dist/composables/data-table.d.ts +93 -0
  13. package/dist/index.d.ts +5 -1
  14. package/dist/index.js +65 -58
  15. package/dist/node_modules/.pnpm/@hugeicons_core-free-icons@4.2.3/node_modules/@hugeicons/core-free-icons/dist/esm/index.js +15 -1
  16. package/dist/nuxt.d.ts +1 -1
  17. package/dist/packages/iryx-ui/src/component-names.js +1 -1
  18. package/dist/packages/iryx-ui/src/components/Alert.vue_vue_type_script_setup_true_lang.js +51 -35
  19. package/dist/packages/iryx-ui/src/components/Badge.vue_vue_type_script_setup_true_lang.js +1 -2
  20. package/dist/packages/iryx-ui/src/components/Banner.js +5 -0
  21. package/dist/packages/iryx-ui/src/components/Banner.vue_vue_type_script_setup_true_lang.js +93 -0
  22. package/dist/packages/iryx-ui/src/components/Combobox.js +5 -0
  23. package/dist/packages/iryx-ui/src/components/Combobox.vue_vue_type_script_setup_true_lang.js +284 -0
  24. package/dist/packages/iryx-ui/src/components/Pagination.vue_vue_type_script_setup_true_lang.js +5 -1
  25. package/dist/packages/iryx-ui/src/components/Select.vue_vue_type_script_setup_true_lang.js +72 -27
  26. package/dist/packages/iryx-ui/src/components/Table.js +5 -0
  27. package/dist/packages/iryx-ui/src/components/Table.vue_vue_type_script_setup_true_lang.js +217 -0
  28. package/dist/packages/iryx-ui/src/components/index.js +62 -56
  29. package/dist/packages/iryx-ui/src/composables/data-table.js +106 -0
  30. package/dist/packages/iryx-ui/src/theme/alert.js +10 -21
  31. package/dist/packages/iryx-ui/src/theme/badge.js +37 -37
  32. package/dist/packages/iryx-ui/src/theme/banner.js +62 -0
  33. package/dist/packages/iryx-ui/src/theme/button.js +2 -2
  34. package/dist/packages/iryx-ui/src/theme/card.js +1 -1
  35. package/dist/packages/iryx-ui/src/theme/checkbox.js +1 -1
  36. package/dist/packages/iryx-ui/src/theme/combobox.js +29 -0
  37. package/dist/packages/iryx-ui/src/theme/dialog.js +2 -2
  38. package/dist/packages/iryx-ui/src/theme/dropdown-menu.js +4 -4
  39. package/dist/packages/iryx-ui/src/theme/input.js +1 -1
  40. package/dist/packages/iryx-ui/src/theme/number-input.js +1 -1
  41. package/dist/packages/iryx-ui/src/theme/pagination.js +24 -14
  42. package/dist/packages/iryx-ui/src/theme/presets.js +0 -42
  43. package/dist/packages/iryx-ui/src/theme/radio-group.js +1 -1
  44. package/dist/packages/iryx-ui/src/theme/select.js +5 -3
  45. package/dist/packages/iryx-ui/src/theme/skeleton.js +1 -1
  46. package/dist/packages/iryx-ui/src/theme/stat.js +4 -4
  47. package/dist/packages/iryx-ui/src/theme/stepper.js +1 -1
  48. package/dist/packages/iryx-ui/src/theme/switch.js +1 -1
  49. package/dist/packages/iryx-ui/src/theme/table.js +62 -0
  50. package/dist/packages/iryx-ui/src/theme/tabs.js +3 -3
  51. package/dist/packages/iryx-ui/src/theme/toast.js +11 -26
  52. package/dist/packages/iryx-ui/src/theme/tooltip.js +1 -1
  53. package/dist/plugin.d.ts +1 -1
  54. package/dist/theme/alert.d.ts +6 -12
  55. package/dist/theme/badge.d.ts +15 -12
  56. package/dist/theme/banner.d.ts +185 -0
  57. package/dist/theme/button.d.ts +2 -2
  58. package/dist/theme/combobox.d.ts +101 -0
  59. package/dist/theme/index.d.ts +3 -0
  60. package/dist/theme/input.d.ts +5 -5
  61. package/dist/theme/pagination.d.ts +33 -0
  62. package/dist/theme/presets.d.ts +0 -42
  63. package/dist/theme/select.d.ts +6 -0
  64. package/dist/theme/stat.d.ts +0 -3
  65. package/dist/theme/table.d.ts +230 -0
  66. package/dist/theme/toast.d.ts +0 -15
  67. package/package.json +1 -1
  68. package/theme.css +24 -0
@@ -0,0 +1,62 @@
1
+ import { tv as e } from "tailwind-variants";
2
+ //#region src/theme/banner.ts
3
+ var t = e({
4
+ slots: {
5
+ root: "w-full border-b",
6
+ container: "mx-auto flex w-full items-center gap-3 px-4 py-2.5",
7
+ icon: "shrink-0 [&_svg]:size-4",
8
+ content: "min-w-0 flex-1 text-sm",
9
+ title: "font-medium",
10
+ actions: "flex shrink-0 items-center gap-2",
11
+ close: "-mr-1 shrink-0 rounded-lg p-1 opacity-70 transition-opacity outline-none hover:opacity-100 focus-visible:ring-2 focus-visible:ring-current/50 [&_svg]:size-4"
12
+ },
13
+ variants: {
14
+ variant: {
15
+ neutral: {
16
+ root: "border-border bg-muted text-foreground",
17
+ icon: "text-muted-foreground"
18
+ },
19
+ info: {
20
+ root: "border-info-border bg-info-muted text-info-muted-foreground",
21
+ icon: "text-info"
22
+ },
23
+ success: {
24
+ root: "border-success-border bg-success-muted text-success-muted-foreground",
25
+ icon: "text-success"
26
+ },
27
+ warning: {
28
+ root: "border-warning-border bg-warning-muted text-warning-muted-foreground",
29
+ icon: "text-warning"
30
+ },
31
+ danger: {
32
+ root: "border-danger-border bg-danger-muted text-danger-muted-foreground",
33
+ icon: "text-danger"
34
+ },
35
+ primary: {
36
+ root: "border-transparent bg-linear-to-b from-primary-from to-primary-to text-primary-foreground",
37
+ icon: "text-primary-foreground"
38
+ }
39
+ },
40
+ position: {
41
+ static: {},
42
+ top: { root: "sticky top-0 z-30" },
43
+ bottom: { root: "fixed inset-x-0 bottom-0 z-30 border-t border-b-0" }
44
+ },
45
+ contained: {
46
+ true: { container: "max-w-5xl" },
47
+ false: {}
48
+ },
49
+ align: {
50
+ start: {},
51
+ center: { content: "text-center" }
52
+ }
53
+ },
54
+ defaultVariants: {
55
+ variant: "neutral",
56
+ position: "static",
57
+ contained: !1,
58
+ align: "start"
59
+ }
60
+ });
61
+ //#endregion
62
+ export { t as bannerTheme };
@@ -1,11 +1,11 @@
1
1
  import { tv as e } from "tailwind-variants";
2
2
  //#region src/theme/button.ts
3
3
  var t = e({
4
- base: "inline-flex shrink-0 items-center justify-center gap-2 rounded-lg border border-transparent font-medium transition-[color,background-color,border-color,box-shadow,opacity,filter,translate] outline-none focus-visible:ring-2 focus-visible:ring-primary/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
4
+ base: "inline-flex shrink-0 items-center justify-center gap-2 rounded-xl border border-transparent font-medium transition-[color,background-color,border-color,box-shadow,opacity,filter,translate] outline-none focus-visible:ring-2 focus-visible:ring-primary/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
5
5
  variants: {
6
6
  variant: {
7
7
  solid: "bg-linear-to-b from-primary-from to-primary-to text-primary-foreground hover:brightness-110 active:brightness-95",
8
- outline: "border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground",
8
+ outline: "border-border bg-input text-foreground hover:bg-accent hover:text-accent-foreground",
9
9
  ghost: "text-foreground hover:bg-accent hover:text-accent-foreground",
10
10
  link: "text-primary underline-offset-4 hover:underline active:translate-y-0"
11
11
  },
@@ -2,7 +2,7 @@ import { tv as e } from "tailwind-variants";
2
2
  //#region src/theme/card.ts
3
3
  var t = e({
4
4
  slots: {
5
- root: "rounded-xl text-foreground",
5
+ root: "rounded-2xl text-foreground",
6
6
  header: "flex flex-col gap-1",
7
7
  title: "text-base leading-none font-semibold",
8
8
  description: "text-sm text-muted-foreground",
@@ -3,7 +3,7 @@ import { tv as e } from "tailwind-variants";
3
3
  var t = e({
4
4
  slots: {
5
5
  wrapper: "flex items-start gap-2.5",
6
- root: "peer flex shrink-0 cursor-pointer items-center justify-center rounded border border-border bg-background text-primary-foreground transition-colors outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:bg-primary",
6
+ root: "peer flex shrink-0 cursor-pointer items-center justify-center rounded border border-border bg-background text-primary-foreground transition-colors outline-none focus:ring-2 focus:ring-primary/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:bg-primary",
7
7
  indicator: "flex items-center justify-center text-current",
8
8
  content: "grid gap-1",
9
9
  label: "text-sm leading-5 font-medium text-foreground select-none",
@@ -0,0 +1,29 @@
1
+ import { fieldBase as e } from "./input.js";
2
+ import { tv as t } from "tailwind-variants";
3
+ //#region src/theme/combobox.ts
4
+ var n = t({
5
+ slots: {
6
+ anchor: `flex items-center gap-2 ${e} focus-within:ring-2 focus-within:ring-primary/50`,
7
+ input: "min-w-0 grow bg-transparent outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed",
8
+ trigger: "flex shrink-0 cursor-pointer items-center text-muted-foreground disabled:cursor-not-allowed [&_svg]:size-4",
9
+ content: "z-50 max-h-64 w-(--reka-combobox-trigger-width) min-w-32 overflow-hidden rounded-xl border border-border bg-background text-foreground shadow-md",
10
+ viewport: "max-h-64 overflow-y-auto p-1",
11
+ item: "relative flex w-full cursor-pointer items-center rounded-lg py-1.5 pr-2 pl-8 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground",
12
+ itemIndicator: "absolute left-2 flex items-center justify-center text-primary [&_svg]:size-4",
13
+ empty: "px-2 py-6 text-center text-sm text-muted-foreground",
14
+ group: "[[role=group]:not([hidden])~&]:mt-1",
15
+ groupLabel: "px-2 py-1.5 text-xs font-medium text-muted-foreground"
16
+ },
17
+ variants: {
18
+ size: {
19
+ sm: { anchor: "h-8 px-2.5 text-sm" },
20
+ md: { anchor: "h-9 px-3 text-sm" },
21
+ lg: { anchor: "h-10 px-4 text-base" }
22
+ },
23
+ invalid: { true: { anchor: "border-red-500 focus-within:ring-red-500/40" } },
24
+ disabled: { true: { anchor: "cursor-not-allowed opacity-50" } }
25
+ },
26
+ defaultVariants: { size: "md" }
27
+ });
28
+ //#endregion
29
+ export { n as comboboxTheme };
@@ -3,13 +3,13 @@ import { tv as e } from "tailwind-variants";
3
3
  var t = e({
4
4
  slots: {
5
5
  overlay: "fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-fade-out data-[state=open]:animate-fade-in",
6
- content: "fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100dvh-2rem)] w-[calc(100vw-2rem)] -translate-x-1/2 -translate-y-1/2 flex-col gap-4 rounded-xl border border-border bg-background p-6 text-foreground shadow-lg outline-none data-[state=closed]:animate-dialog-out data-[state=open]:animate-dialog-in",
6
+ content: "fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100dvh-2rem)] w-[calc(100vw-2rem)] -translate-x-1/2 -translate-y-1/2 flex-col gap-4 rounded-2xl border border-border bg-background p-6 text-foreground shadow-lg outline-none data-[state=closed]:animate-dialog-out data-[state=open]:animate-dialog-in",
7
7
  header: "flex flex-col gap-1",
8
8
  title: "text-base leading-none font-semibold",
9
9
  description: "text-sm text-muted-foreground",
10
10
  body: "-m-1 min-h-0 flex-1 overflow-y-auto p-1",
11
11
  footer: "flex flex-wrap items-center justify-end gap-2",
12
- close: "absolute top-4 right-4 rounded-md p-1 text-muted-foreground transition-colors outline-none hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-primary/50 [&_svg]:size-4"
12
+ close: "absolute top-4 right-4 rounded-lg p-1 text-muted-foreground transition-colors outline-none hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-primary/50 [&_svg]:size-4"
13
13
  },
14
14
  variants: { size: {
15
15
  sm: { content: "sm:max-w-sm" },
@@ -2,12 +2,12 @@ import { tv as e } from "tailwind-variants";
2
2
  //#region src/theme/dropdown-menu.ts
3
3
  var t = e({
4
4
  slots: {
5
- content: "z-50 min-w-40 overflow-hidden rounded-lg border border-border bg-background p-1 text-foreground shadow-lg outline-none data-[state=closed]:animate-fade-out data-[state=open]:animate-fade-in",
6
- item: "flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0",
5
+ content: "z-50 min-w-40 overflow-hidden rounded-xl border border-border bg-background p-1 text-foreground shadow-lg outline-none data-[state=closed]:animate-fade-out data-[state=open]:animate-fade-in",
6
+ item: "flex cursor-pointer items-center gap-2 rounded-lg px-2 py-1.5 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0",
7
7
  label: "px-2 py-1.5 text-xs font-medium text-muted-foreground",
8
8
  separator: "-mx-1 my-1 h-px bg-border",
9
- subTrigger: "flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0",
10
- subContent: "z-50 min-w-40 overflow-hidden rounded-lg border border-border bg-background p-1 text-foreground shadow-lg outline-none data-[state=closed]:animate-fade-out data-[state=open]:animate-fade-in",
9
+ subTrigger: "flex cursor-default items-center gap-2 rounded-lg px-2 py-1.5 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0",
10
+ subContent: "z-50 min-w-40 overflow-hidden rounded-xl border border-border bg-background p-1 text-foreground shadow-lg outline-none data-[state=closed]:animate-fade-out data-[state=open]:animate-fade-in",
11
11
  subTriggerIcon: "ml-auto"
12
12
  },
13
13
  variants: { danger: { true: { item: "text-danger data-[highlighted]:bg-danger-muted data-[highlighted]:text-danger-muted-foreground" } } }
@@ -1,6 +1,6 @@
1
1
  import { tv as e } from "tailwind-variants";
2
2
  //#region src/theme/input.ts
3
- var t = "w-full rounded-lg border border-border bg-background text-foreground transition-colors outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-primary/50 disabled:cursor-not-allowed disabled:opacity-50", n = e({
3
+ var t = "w-full rounded-xl border border-border bg-input text-foreground transition-colors outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-primary/50 disabled:cursor-not-allowed disabled:opacity-50", n = e({
4
4
  base: `flex ${t}`,
5
5
  variants: {
6
6
  size: {
@@ -5,7 +5,7 @@ var n = t({
5
5
  slots: {
6
6
  root: "relative inline-flex w-full items-stretch",
7
7
  input: `flex w-full text-right tabular-nums ${e}`,
8
- stepper: "absolute inset-y-px end-px flex flex-col justify-center overflow-hidden rounded-e-lg border-s border-border",
8
+ stepper: "absolute inset-y-px end-px flex flex-col justify-center overflow-hidden rounded-e-xl border-s border-border",
9
9
  step: "flex flex-1 items-center justify-center px-1.5 text-muted-foreground transition-colors outline-none hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-3"
10
10
  },
11
11
  variants: {
@@ -4,26 +4,36 @@ var t = e({
4
4
  slots: {
5
5
  root: "flex items-center gap-2",
6
6
  list: "flex items-center gap-1",
7
- item: "inline-flex items-center justify-center rounded-lg border border-transparent text-sm font-medium transition-[color,background-color,border-color,box-shadow] outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4",
7
+ item: "inline-flex items-center justify-center rounded-xl border border-transparent text-sm font-medium transition-[color,background-color,border-color,box-shadow] outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4",
8
8
  active: "bg-linear-to-b from-primary-from to-primary-to text-primary-foreground hover:brightness-110",
9
9
  inactive: "text-foreground hover:bg-accent hover:text-accent-foreground",
10
10
  ellipsis: "inline-flex items-center justify-center text-sm text-muted-foreground"
11
11
  },
12
- variants: { size: {
13
- sm: {
14
- item: "h-8 min-w-8 px-2",
15
- ellipsis: "h-8 min-w-8"
12
+ variants: {
13
+ size: {
14
+ sm: {
15
+ item: "h-8 min-w-8 px-2",
16
+ ellipsis: "h-8 min-w-8"
17
+ },
18
+ md: {
19
+ item: "h-9 min-w-9 px-2.5",
20
+ ellipsis: "h-9 min-w-9"
21
+ },
22
+ lg: {
23
+ item: "h-10 min-w-10 px-3",
24
+ ellipsis: "h-10 min-w-10"
25
+ }
16
26
  },
17
- md: {
18
- item: "h-9 min-w-9 px-2.5",
19
- ellipsis: "h-9 min-w-9"
20
- },
21
- lg: {
22
- item: "h-10 min-w-10 px-3",
23
- ellipsis: "h-10 min-w-10"
27
+ align: {
28
+ start: { root: "justify-start" },
29
+ center: { root: "justify-center" },
30
+ end: { root: "justify-end" }
24
31
  }
25
- } },
26
- defaultVariants: { size: "md" }
32
+ },
33
+ defaultVariants: {
34
+ size: "sm",
35
+ align: "center"
36
+ }
27
37
  });
28
38
  //#endregion
29
39
  export { t as paginationTheme };
@@ -46,20 +46,6 @@ var e = {
46
46
  primaryTo: "oklch(0.54 0.24 293)"
47
47
  }
48
48
  },
49
- emerald: {
50
- light: {
51
- primary: "oklch(0.596 0.145 163)",
52
- primaryForeground: "oklch(0.985 0.005 248)",
53
- primaryFrom: "oklch(0.596 0.145 163)",
54
- primaryTo: "oklch(0.52 0.155 163)"
55
- },
56
- dark: {
57
- primary: "oklch(0.7 0.15 162)",
58
- primaryForeground: "oklch(0.17 0.04 165)",
59
- primaryFrom: "oklch(0.7 0.15 162)",
60
- primaryTo: "oklch(0.62 0.16 162)"
61
- }
62
- },
63
49
  rose: {
64
50
  light: {
65
51
  primary: "oklch(0.586 0.222 17)",
@@ -73,34 +59,6 @@ var e = {
73
59
  primaryFrom: "oklch(0.65 0.22 16)",
74
60
  primaryTo: "oklch(0.57 0.235 16)"
75
61
  }
76
- },
77
- amber: {
78
- light: {
79
- primary: "oklch(0.666 0.157 58)",
80
- primaryForeground: "oklch(0.16 0.03 80)",
81
- primaryFrom: "oklch(0.666 0.157 58)",
82
- primaryTo: "oklch(0.59 0.165 56)"
83
- },
84
- dark: {
85
- primary: "oklch(0.77 0.16 70)",
86
- primaryForeground: "oklch(0.18 0.04 75)",
87
- primaryFrom: "oklch(0.77 0.16 70)",
88
- primaryTo: "oklch(0.7 0.17 68)"
89
- }
90
- },
91
- sky: {
92
- light: {
93
- primary: "oklch(0.588 0.13 242)",
94
- primaryForeground: "oklch(0.985 0.005 248)",
95
- primaryFrom: "oklch(0.588 0.13 242)",
96
- primaryTo: "oklch(0.51 0.14 242)"
97
- },
98
- dark: {
99
- primary: "oklch(0.685 0.14 237)",
100
- primaryForeground: "oklch(0.15 0.04 240)",
101
- primaryFrom: "oklch(0.685 0.14 237)",
102
- primaryTo: "oklch(0.6 0.15 237)"
103
- }
104
62
  }
105
63
  }, n = "iryx-ui-theme";
106
64
  function r(t) {
@@ -4,7 +4,7 @@ var t = e({
4
4
  slots: {
5
5
  root: "grid gap-2",
6
6
  wrapper: "flex items-start gap-2.5",
7
- item: "aspect-square shrink-0 cursor-pointer rounded-full border border-border bg-background transition-colors outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary",
7
+ item: "aspect-square shrink-0 cursor-pointer rounded-full border border-border bg-background transition-colors outline-none focus:ring-2 focus:ring-primary/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary",
8
8
  indicator: "flex size-full items-center justify-center after:block after:rounded-full after:bg-primary",
9
9
  content: "grid gap-1",
10
10
  label: "text-sm leading-5 text-foreground select-none",
@@ -4,10 +4,12 @@ import { tv as t } from "tailwind-variants";
4
4
  var n = t({
5
5
  slots: {
6
6
  trigger: `flex items-center justify-between gap-2 ${e} cursor-pointer data-[placeholder]:text-muted-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:opacity-60`,
7
- content: "z-50 min-w-32 overflow-hidden rounded-lg border border-border bg-background text-foreground shadow-md",
7
+ content: "z-50 min-w-32 overflow-hidden rounded-xl border border-border bg-background text-foreground shadow-md",
8
8
  viewport: "p-1",
9
- item: "relative flex cursor-pointer items-center rounded-md py-1.5 pr-2 pl-8 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground",
10
- itemIndicator: "absolute left-2 flex items-center justify-center text-primary [&_svg]:size-4"
9
+ item: "relative flex cursor-pointer items-center rounded-lg py-1.5 pr-2 pl-8 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground",
10
+ itemIndicator: "absolute left-2 flex items-center justify-center text-primary [&_svg]:size-4",
11
+ group: "not-first:mt-1",
12
+ groupLabel: "px-2 py-1.5 text-xs font-medium text-muted-foreground"
11
13
  },
12
14
  variants: { size: {
13
15
  sm: { trigger: "h-8 px-2.5 text-sm" },
@@ -4,7 +4,7 @@ var t = e({
4
4
  base: "animate-pulse bg-muted",
5
5
  variants: { variant: {
6
6
  text: "h-[1em] w-full rounded",
7
- rect: "rounded-lg",
7
+ rect: "rounded-xl",
8
8
  circle: "aspect-square rounded-full"
9
9
  } },
10
10
  defaultVariants: { variant: "rect" }
@@ -5,7 +5,7 @@ var t = e({
5
5
  root: "flex flex-col gap-2",
6
6
  label: "text-xs font-medium tracking-wide text-muted-foreground uppercase",
7
7
  value: "font-semibold tracking-tight text-foreground tabular-nums",
8
- delta: "inline-flex items-center gap-0.5 rounded-full px-2 py-0.5 text-xs font-medium tabular-nums has-[[data-icon=inline-end]]:pe-1 has-[[data-icon=inline-start]]:ps-1 [&_svg]:size-3.5",
8
+ delta: "inline-flex items-center gap-0.5 text-xs font-medium tabular-nums [&_svg]:size-3.5",
9
9
  hint: "text-xs text-muted-foreground",
10
10
  row: "flex flex-col items-start gap-1.5"
11
11
  },
@@ -16,9 +16,9 @@ var t = e({
16
16
  lg: { value: "text-4xl" }
17
17
  },
18
18
  trend: {
19
- up: { delta: "bg-success-muted text-success-muted-foreground" },
20
- down: { delta: "bg-danger-muted text-danger-muted-foreground" },
21
- neutral: { delta: "bg-muted text-muted-foreground" }
19
+ up: { delta: "text-success" },
20
+ down: { delta: "text-danger" },
21
+ neutral: { delta: "text-muted-foreground" }
22
22
  }
23
23
  },
24
24
  defaultVariants: {
@@ -4,7 +4,7 @@ var t = e({
4
4
  slots: {
5
5
  root: "flex w-full",
6
6
  item: "group relative flex flex-1 items-center gap-3",
7
- trigger: "flex items-center gap-3 rounded-lg text-left outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:pointer-events-none disabled:opacity-50",
7
+ trigger: "flex items-center gap-3 rounded-xl text-left outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:pointer-events-none disabled:opacity-50",
8
8
  indicator: "flex size-8 shrink-0 items-center justify-center rounded-full border border-border bg-linear-to-b text-sm font-medium transition-[color,border-color] group-data-[state=active]:border-primary group-data-[state=active]:from-primary-from group-data-[state=active]:to-primary-to group-data-[state=active]:text-primary-foreground group-data-[state=completed]:border-primary group-data-[state=completed]:from-primary-from group-data-[state=completed]:to-primary-to group-data-[state=completed]:text-primary-foreground [&_svg]:size-4",
9
9
  content: "flex flex-col gap-0.5",
10
10
  title: "text-sm font-medium text-foreground",
@@ -2,7 +2,7 @@ import { tv as e } from "tailwind-variants";
2
2
  //#region src/theme/switch.ts
3
3
  var t = e({ slots: {
4
4
  wrapper: "flex items-start gap-2.5",
5
- root: "inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted",
5
+ root: "inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full transition-colors outline-none focus:ring-2 focus:ring-primary/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted",
6
6
  thumb: "pointer-events-none block size-4 rounded-full bg-background shadow-sm transition-transform data-[state=checked]:translate-x-4.5 data-[state=unchecked]:translate-x-0.5",
7
7
  content: "grid gap-1",
8
8
  label: "text-sm leading-5 font-medium text-foreground select-none",
@@ -0,0 +1,62 @@
1
+ import { tv as e } from "tailwind-variants";
2
+ //#region src/theme/table.ts
3
+ var t = e({
4
+ slots: {
5
+ root: "relative w-full overflow-x-auto",
6
+ table: "w-full caption-bottom border-collapse text-sm",
7
+ thead: "",
8
+ tbody: "",
9
+ tr: "border-b border-border transition-colors last:border-b-0",
10
+ th: "border-b border-border px-3 py-3 text-start align-middle text-xs font-semibold tracking-wide text-muted-foreground uppercase",
11
+ sortButton: "inline-flex cursor-pointer items-center gap-1.5 rounded-md outline-none focus-visible:ring-2 focus-visible:ring-primary/50 [&_svg]:size-3.5 [&_svg]:shrink-0",
12
+ sortIcon: "text-muted-foreground/70 transition-colors",
13
+ td: "px-3 py-3 align-middle text-foreground",
14
+ gutter: "w-px px-3 py-3 align-middle",
15
+ headGutter: "w-px border-b border-border px-3 py-3 align-middle",
16
+ expandButton: "inline-flex size-6 cursor-pointer items-center justify-center rounded-md text-muted-foreground transition-[transform,color,background-color] outline-none hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-primary/50 [&_svg]:size-4",
17
+ expandedRow: "bg-muted/30",
18
+ expandedCell: "p-0",
19
+ empty: "px-3 py-10 text-center text-sm text-muted-foreground",
20
+ caption: "mt-3 text-sm text-muted-foreground"
21
+ },
22
+ variants: {
23
+ striped: { true: { tr: "even:bg-muted/30" } },
24
+ hoverable: { true: { tr: "hover:bg-muted/50" } },
25
+ clickable: { true: { tr: "cursor-pointer" } },
26
+ stickyHeader: { true: { th: "sticky top-0 z-10 bg-background" } },
27
+ selected: { true: { tr: "bg-primary/5" } },
28
+ size: {
29
+ sm: {
30
+ th: "py-2",
31
+ td: "py-2",
32
+ gutter: "py-2"
33
+ },
34
+ md: {},
35
+ lg: {
36
+ th: "py-4",
37
+ td: "py-4",
38
+ gutter: "py-4"
39
+ }
40
+ },
41
+ align: {
42
+ start: {
43
+ th: "text-start",
44
+ td: "text-start"
45
+ },
46
+ center: {
47
+ th: "text-center",
48
+ td: "text-center"
49
+ },
50
+ end: {
51
+ th: "text-end",
52
+ td: "text-end"
53
+ }
54
+ }
55
+ },
56
+ defaultVariants: {
57
+ size: "md",
58
+ hoverable: !0
59
+ }
60
+ });
61
+ //#endregion
62
+ export { t as tableTheme };
@@ -11,9 +11,9 @@ var t = e({
11
11
  variants: {
12
12
  variant: {
13
13
  solid: {
14
- list: "rounded-lg bg-muted p-1",
15
- indicator: "top-1 h-[calc(100%---spacing(2))] rounded-md bg-background shadow-sm",
16
- trigger: "rounded-md px-3 py-1.5 text-muted-foreground data-[state=active]:text-foreground"
14
+ list: "rounded-xl bg-muted p-1",
15
+ indicator: "top-1 h-[calc(100%---spacing(2))] rounded-lg bg-background shadow-sm",
16
+ trigger: "rounded-lg px-3 py-1.5 text-muted-foreground data-[state=active]:text-foreground"
17
17
  },
18
18
  line: {
19
19
  list: "gap-4 border-b border-border",
@@ -3,36 +3,21 @@ import { tv as e } from "tailwind-variants";
3
3
  var t = e({
4
4
  slots: {
5
5
  viewport: "fixed z-50 flex max-h-screen w-full flex-col gap-2 p-4 outline-none sm:max-w-sm",
6
- root: "flex items-start gap-3 rounded-lg border p-4 shadow-lg data-[state=closed]:animate-fade-out data-[state=open]:animate-toast-in",
7
- icon: "mt-0.5 shrink-0 [&_svg]:size-5",
6
+ root: "flex items-start gap-3 rounded-xl border border-border bg-background p-4 text-foreground shadow-lg data-[state=closed]:animate-fade-out data-[state=open]:animate-toast-in",
7
+ icon: "mt-px shrink-0 [&_svg]:size-4.5",
8
8
  content: "min-w-0 flex-1",
9
- title: "text-sm font-medium",
10
- description: "text-sm opacity-90",
11
- action: "shrink-0 self-center rounded-md px-2 py-1 text-sm font-medium underline-offset-4 transition-colors outline-none hover:underline focus-visible:ring-2 focus-visible:ring-current/50",
12
- close: "-m-1 shrink-0 self-start rounded-md p-1 opacity-70 transition-opacity outline-none hover:opacity-100 focus-visible:ring-2 focus-visible:ring-current/50 [&_svg]:size-4"
9
+ title: "text-sm font-medium text-foreground",
10
+ description: "text-sm text-muted-foreground",
11
+ action: "shrink-0 self-center rounded-lg border border-border px-2.5 py-1 text-xs font-medium transition-colors outline-none hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-primary/50",
12
+ close: "-m-1 shrink-0 self-start rounded-lg p-1 text-muted-foreground transition-colors outline-none hover:text-foreground focus-visible:ring-2 focus-visible:ring-primary/50 [&_svg]:size-4"
13
13
  },
14
14
  variants: {
15
15
  variant: {
16
- neutral: {
17
- root: "border-border bg-background text-foreground",
18
- icon: "text-muted-foreground"
19
- },
20
- success: {
21
- root: "border-success-border bg-success-muted text-success-muted-foreground",
22
- icon: "text-success"
23
- },
24
- warning: {
25
- root: "border-warning-border bg-warning-muted text-warning-muted-foreground",
26
- icon: "text-warning"
27
- },
28
- danger: {
29
- root: "border-danger-border bg-danger-muted text-danger-muted-foreground",
30
- icon: "text-danger"
31
- },
32
- info: {
33
- root: "border-info-border bg-info-muted text-info-muted-foreground",
34
- icon: "text-info"
35
- }
16
+ neutral: { icon: "text-muted-foreground" },
17
+ success: { icon: "text-success" },
18
+ warning: { icon: "text-warning" },
19
+ danger: { icon: "text-danger" },
20
+ info: { icon: "text-info" }
36
21
  },
37
22
  position: {
38
23
  "top-left": { viewport: "top-0 left-0" },
@@ -1,7 +1,7 @@
1
1
  import { tv as e } from "tailwind-variants";
2
2
  //#region src/theme/tooltip.ts
3
3
  var t = e({ slots: {
4
- content: "z-50 max-w-xs rounded-md bg-foreground px-2.5 py-1.5 text-xs text-background shadow-md data-[state=closed]:animate-fade-out data-[state=delayed-open]:animate-fade-in",
4
+ content: "z-50 max-w-xs rounded-lg bg-foreground px-2.5 py-1.5 text-xs text-background shadow-md data-[state=closed]:animate-fade-out data-[state=delayed-open]:animate-fade-in",
5
5
  arrow: "fill-foreground"
6
6
  } });
7
7
  //#endregion
package/dist/plugin.d.ts CHANGED
@@ -7,7 +7,7 @@ export interface IryxUiPluginOptions extends Partial<IryxUiConfig> {
7
7
  prefix?: string;
8
8
  /** Startup appearance. A preference the user already stored wins over this. */
9
9
  appearance?: Appearance;
10
- /** Color theme: a preset name (`'emerald'`, `'rose'`…) or a custom theme. */
10
+ /** Color theme: a preset name (`'violet'`, `'rose'`) or a custom theme. */
11
11
  theme?: Theme | ThemePresetName;
12
12
  }
13
13
  /**
@@ -1,19 +1,15 @@
1
1
  export declare const alertTheme: import("tailwind-variants").TVReturnType<{
2
2
  variant: {
3
3
  info: {
4
- root: string;
5
4
  icon: string;
6
5
  };
7
6
  success: {
8
- root: string;
9
7
  icon: string;
10
8
  };
11
9
  warning: {
12
- root: string;
13
10
  icon: string;
14
11
  };
15
12
  danger: {
16
- root: string;
17
13
  icon: string;
18
14
  };
19
15
  };
@@ -29,23 +25,21 @@ export declare const alertTheme: import("tailwind-variants").TVReturnType<{
29
25
  content: string;
30
26
  title: string;
31
27
  description: string;
28
+ /** Buttons or links under the body — "Retry", "Undo", "View invoice". */
29
+ actions: string;
32
30
  close: string;
33
31
  }, undefined, {
34
32
  variant: {
35
33
  info: {
36
- root: string;
37
34
  icon: string;
38
35
  };
39
36
  success: {
40
- root: string;
41
37
  icon: string;
42
38
  };
43
39
  warning: {
44
- root: string;
45
40
  icon: string;
46
41
  };
47
42
  danger: {
48
- root: string;
49
43
  icon: string;
50
44
  };
51
45
  };
@@ -61,23 +55,21 @@ export declare const alertTheme: import("tailwind-variants").TVReturnType<{
61
55
  content: string;
62
56
  title: string;
63
57
  description: string;
58
+ /** Buttons or links under the body — "Retry", "Undo", "View invoice". */
59
+ actions: string;
64
60
  close: string;
65
61
  }, import("tailwind-variants").TVReturnType<{
66
62
  variant: {
67
63
  info: {
68
- root: string;
69
64
  icon: string;
70
65
  };
71
66
  success: {
72
- root: string;
73
67
  icon: string;
74
68
  };
75
69
  warning: {
76
- root: string;
77
70
  icon: string;
78
71
  };
79
72
  danger: {
80
- root: string;
81
73
  icon: string;
82
74
  };
83
75
  };
@@ -93,6 +85,8 @@ export declare const alertTheme: import("tailwind-variants").TVReturnType<{
93
85
  content: string;
94
86
  title: string;
95
87
  description: string;
88
+ /** Buttons or links under the body — "Retry", "Undo", "View invoice". */
89
+ actions: string;
96
90
  close: string;
97
91
  }, undefined, unknown, unknown, undefined>>;
98
92
  export type AlertSlots = keyof ReturnType<typeof alertTheme>;