@zentauri-ui/zentauri-components 1.8.41 → 1.9.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 (80) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/LICENSE +21 -0
  3. package/README.md +77 -64
  4. package/dist/{chunk-RFT2FLQT.js → chunk-5IJC2OEN.js} +10 -12
  5. package/dist/chunk-5IJC2OEN.js.map +1 -0
  6. package/dist/{chunk-CJXGDY7A.mjs → chunk-DY7HLVGW.mjs} +10 -12
  7. package/dist/chunk-DY7HLVGW.mjs.map +1 -0
  8. package/dist/chunk-KVQI5PLL.mjs +399 -0
  9. package/dist/chunk-KVQI5PLL.mjs.map +1 -0
  10. package/dist/chunk-NRPG2STN.js +401 -0
  11. package/dist/chunk-NRPG2STN.js.map +1 -0
  12. package/dist/{chunk-V5JTDRV5.mjs → chunk-TKVZU56F.mjs} +11 -11
  13. package/dist/chunk-TKVZU56F.mjs.map +1 -0
  14. package/dist/{chunk-Z4KHAD6Y.js → chunk-U3VV22G4.js} +11 -11
  15. package/dist/chunk-U3VV22G4.js.map +1 -0
  16. package/dist/design-system/dynamic-stepper.d.ts +0 -1
  17. package/dist/design-system/dynamic-stepper.d.ts.map +1 -1
  18. package/dist/design-system/inputs.d.ts +65 -0
  19. package/dist/design-system/inputs.d.ts.map +1 -1
  20. package/dist/design-system/kbd.d.ts +1 -0
  21. package/dist/design-system/kbd.d.ts.map +1 -1
  22. package/dist/design-system/marquee.d.ts +9 -9
  23. package/dist/design-system/timeline.d.ts +9 -9
  24. package/dist/test-utils/axe.d.ts +30 -0
  25. package/dist/test-utils/axe.d.ts.map +1 -0
  26. package/dist/ui/dynamic-stepper/variants.d.ts +2 -2
  27. package/dist/ui/dynamic-stepper/variants.d.ts.map +1 -1
  28. package/dist/ui/dynamic-stepper.js +3 -4
  29. package/dist/ui/dynamic-stepper.js.map +1 -1
  30. package/dist/ui/dynamic-stepper.mjs +3 -4
  31. package/dist/ui/dynamic-stepper.mjs.map +1 -1
  32. package/dist/ui/inputs/animated.js +3 -3
  33. package/dist/ui/inputs/animated.mjs +1 -1
  34. package/dist/ui/inputs/variants.d.ts.map +1 -1
  35. package/dist/ui/inputs.js +4 -4
  36. package/dist/ui/inputs.mjs +2 -2
  37. package/dist/ui/kbd/animated.js +2 -2
  38. package/dist/ui/kbd/animated.mjs +1 -1
  39. package/dist/ui/kbd/variants.d.ts.map +1 -1
  40. package/dist/ui/kbd.js +4 -4
  41. package/dist/ui/kbd.mjs +2 -2
  42. package/dist/ui/marquee.js +9 -9
  43. package/dist/ui/marquee.js.map +1 -1
  44. package/dist/ui/marquee.mjs +9 -9
  45. package/dist/ui/marquee.mjs.map +1 -1
  46. package/dist/ui/search.js +2 -2
  47. package/dist/ui/search.mjs +1 -1
  48. package/dist/ui/select/select.d.ts +2 -2
  49. package/dist/ui/select/select.d.ts.map +1 -1
  50. package/dist/ui/select/types.d.ts +2 -0
  51. package/dist/ui/select/types.d.ts.map +1 -1
  52. package/dist/ui/select.js +26 -4
  53. package/dist/ui/select.js.map +1 -1
  54. package/dist/ui/select.mjs +27 -5
  55. package/dist/ui/select.mjs.map +1 -1
  56. package/dist/ui/timeline/animated.js +11 -11
  57. package/dist/ui/timeline/animated.mjs +2 -2
  58. package/dist/ui/timeline.js +14 -14
  59. package/dist/ui/timeline.mjs +2 -2
  60. package/package.json +47 -16
  61. package/src/design-system/dynamic-stepper.ts +0 -7
  62. package/src/design-system/inputs.ts +102 -0
  63. package/src/design-system/kbd.ts +3 -0
  64. package/src/design-system/marquee.ts +9 -9
  65. package/src/design-system/timeline.ts +9 -9
  66. package/src/ui/accessibility/axe-core.test.tsx +139 -0
  67. package/src/ui/dynamic-stepper/variants.ts +7 -3
  68. package/src/ui/inputs/variants.ts +57 -90
  69. package/src/ui/kbd/variants.ts +8 -10
  70. package/src/ui/select/select.test.tsx +24 -0
  71. package/src/ui/select/select.tsx +37 -4
  72. package/src/ui/select/types.ts +2 -0
  73. package/dist/chunk-CJXGDY7A.mjs.map +0 -1
  74. package/dist/chunk-D3VZKUMH.mjs +0 -340
  75. package/dist/chunk-D3VZKUMH.mjs.map +0 -1
  76. package/dist/chunk-RFT2FLQT.js.map +0 -1
  77. package/dist/chunk-UGH23TAH.js +0 -342
  78. package/dist/chunk-UGH23TAH.js.map +0 -1
  79. package/dist/chunk-V5JTDRV5.mjs.map +0 -1
  80. package/dist/chunk-Z4KHAD6Y.js.map +0 -1
@@ -68,6 +68,108 @@ export const zuiInputSizes = {
68
68
  lg: "h-10 md:h-12 px-5 text-base",
69
69
  } as const;
70
70
 
71
+ export const zuiInputTextareaSizes = {
72
+ sm: "min-h-[5rem]",
73
+ md: "min-h-[6rem]",
74
+ lg: "min-h-[7.5rem]",
75
+ } as const;
76
+
77
+ export const zuiInputFileSizes = {
78
+ sm: "h-8 text-xs pl-1 file:h-8 file:px-3 file:text-xs",
79
+ md: "h-9 md:h-11 text-sm pl-1 file:h-9 md:file:h-11 file:px-4 file:text-sm",
80
+ lg: "h-10 md:h-12 text-base pl-1 file:h-10 md:file:h-12 file:px-5 file:text-base",
81
+ } as const;
82
+
83
+ export const zuiInputFileAppearances = {
84
+ default:
85
+ "file:text-[color:var(--zui-input-file-default-fg,#334155)] dark:file:text-[color:var(--zui-input-file-default-fg-dark,#e2e8f0)]",
86
+ warning:
87
+ "file:bg-[var(--zui-input-file-warning-bg,#eab30833)] dark:file:bg-[var(--zui-input-file-warning-bg-dark,#eab30833)] file:text-[color:var(--zui-input-file-warning-fg,#854d0e)] dark:file:text-[color:var(--zui-input-file-warning-fg-dark,#fef08a)] file:border-[color:var(--zui-input-file-warning-border,#eab30866)] dark:file:border-[color:var(--zui-input-file-warning-border-dark,#eab30866)] hover:file:bg-[var(--zui-input-file-warning-bg-hover,#eab3084d)] dark:hover:file:bg-[var(--zui-input-file-warning-bg-hover-dark,#eab3084d)]",
88
+ error:
89
+ "file:bg-[var(--zui-input-file-error-bg,#f43f5e33)] dark:file:bg-[var(--zui-input-file-error-bg-dark,#f43f5e33)] file:text-[color:var(--zui-input-file-error-fg,#9f1239)] dark:file:text-[color:var(--zui-input-file-error-fg-dark,#fecdd3)] file:border-[color:var(--zui-input-file-error-border,#f43f5e66)] dark:file:border-[color:var(--zui-input-file-error-border-dark,#f43f5e66)] hover:file:bg-[var(--zui-input-file-error-bg-hover,#f43f5e4d)] dark:hover:file:bg-[var(--zui-input-file-error-bg-hover-dark,#f43f5e4d)]",
90
+ success:
91
+ "file:bg-[var(--zui-input-file-success-bg,#10b98133)] dark:file:bg-[var(--zui-input-file-success-bg-dark,#10b98133)] file:text-[color:var(--zui-input-file-success-fg,#065f46)] dark:file:text-[color:var(--zui-input-file-success-fg-dark,#a7f3d0)] file:border-[color:var(--zui-input-file-success-border,#10b98166)] dark:file:border-[color:var(--zui-input-file-success-border-dark,#10b98166)] hover:file:bg-[var(--zui-input-file-success-bg-hover,#10b9814d)] dark:hover:file:bg-[var(--zui-input-file-success-bg-hover-dark,#10b9814d)]",
92
+ info: "file:bg-[var(--zui-input-file-info-bg,#3b82f633)] dark:file:bg-[var(--zui-input-file-info-bg-dark,#3b82f633)] file:text-[color:var(--zui-input-file-info-fg,#1e40af)] dark:file:text-[color:var(--zui-input-file-info-fg-dark,#bfdbfe)] file:border-[color:var(--zui-input-file-info-border,#3b82f666)] dark:file:border-[color:var(--zui-input-file-info-border-dark,#3b82f666)] hover:file:bg-[var(--zui-input-file-info-bg-hover,#3b82f64d)] dark:hover:file:bg-[var(--zui-input-file-info-bg-hover-dark,#3b82f64d)]",
93
+ violet:
94
+ "file:bg-[var(--zui-input-file-violet-bg,#8b5cf633)] dark:file:bg-[var(--zui-input-file-violet-bg-dark,#8b5cf633)] file:text-[color:var(--zui-input-file-violet-fg,#5b21b6)] dark:file:text-[color:var(--zui-input-file-violet-fg-dark,#ddd6fe)] file:border-[color:var(--zui-input-file-violet-border,#8b5cf666)] dark:file:border-[color:var(--zui-input-file-violet-border-dark,#8b5cf666)] hover:file:bg-[var(--zui-input-file-violet-bg-hover,#8b5cf64d)] dark:hover:file:bg-[var(--zui-input-file-violet-bg-hover-dark,#8b5cf64d)]",
95
+ amber:
96
+ "file:bg-[var(--zui-input-file-amber-bg,#f59e0b33)] dark:file:bg-[var(--zui-input-file-amber-bg-dark,#f59e0b33)] file:text-[color:var(--zui-input-file-amber-fg,#92400e)] dark:file:text-[color:var(--zui-input-file-amber-fg-dark,#fde68a)] file:border-[color:var(--zui-input-file-amber-border,#f59e0b66)] dark:file:border-[color:var(--zui-input-file-amber-border-dark,#f59e0b66)] hover:file:bg-[var(--zui-input-file-amber-bg-hover,#f59e0b4d)] dark:hover:file:bg-[var(--zui-input-file-amber-bg-hover-dark,#f59e0b4d)]",
97
+ pink: "file:bg-[var(--zui-input-file-pink-bg,#ec489933)] dark:file:bg-[var(--zui-input-file-pink-bg-dark,#ec489933)] file:text-[color:var(--zui-input-file-pink-fg,#9d174d)] dark:file:text-[color:var(--zui-input-file-pink-fg-dark,#fbcfe8)] file:border-[color:var(--zui-input-file-pink-border,#ec489966)] dark:file:border-[color:var(--zui-input-file-pink-border-dark,#ec489966)] hover:file:bg-[var(--zui-input-file-pink-bg-hover,#ec48994d)] dark:hover:file:bg-[var(--zui-input-file-pink-bg-hover-dark,#ec48994d)]",
98
+ indigo:
99
+ "file:bg-[var(--zui-input-file-indigo-bg,#6366f133)] dark:file:bg-[var(--zui-input-file-indigo-bg-dark,#6366f133)] file:text-[color:var(--zui-input-file-indigo-fg,#3730a3)] dark:file:text-[color:var(--zui-input-file-indigo-fg-dark,#c7d2fe)] file:border-[color:var(--zui-input-file-indigo-border,#6366f166)] dark:file:border-[color:var(--zui-input-file-indigo-border-dark,#6366f166)] hover:file:bg-[var(--zui-input-file-indigo-bg-hover,#6366f14d)] dark:hover:file:bg-[var(--zui-input-file-indigo-bg-hover-dark,#6366f14d)]",
100
+ } as const;
101
+
102
+ export const zuiInputCheckboxSizes = {
103
+ sm: "h-4! w-4! min-h-0! rounded-[0.35rem]! px-0! py-0!",
104
+ md: "h-5! w-5! min-h-0! rounded-md! px-0! py-0!",
105
+ lg: "h-6! w-6! min-h-0! rounded-md! px-0! py-0!",
106
+ } as const;
107
+
108
+ export const zuiInputRadioSizes = {
109
+ sm: "h-4! w-4! min-h-0! px-0! py-0!",
110
+ md: "h-5! w-5! min-h-0! px-0! py-0!",
111
+ lg: "h-6! w-6! min-h-0! px-0! py-0!",
112
+ } as const;
113
+
114
+ export const zuiInputCheckboxAppearances = {
115
+ default:
116
+ "border-[color:var(--zui-input-checkbox-default-border,#94a3b8b3)]! dark:border-[color:var(--zui-input-checkbox-default-border-dark,#94a3b8b3)]! checked:border-[color:var(--zui-input-checkbox-default-border-checked,#334155)] dark:checked:border-[color:var(--zui-input-checkbox-default-border-checked-dark,#e2e8f0)] checked:text-[color:var(--zui-input-checkbox-default-fg-checked,#334155)] dark:checked:text-[color:var(--zui-input-checkbox-default-fg-checked-dark,#e2e8f0)] hover:border-[color:var(--zui-input-checkbox-default-border-hover,#475569)] dark:hover:border-[color:var(--zui-input-checkbox-default-border-hover-dark,#cbd5e1)] focus-visible:border-[color:var(--zui-input-checkbox-default-border-focus,#475569)] dark:focus-visible:border-[color:var(--zui-input-checkbox-default-border-focus-dark,#cbd5e1)] focus-visible:ring-[var(--zui-input-checkbox-default-ring-focus,#64748bb3)] dark:focus-visible:ring-[var(--zui-input-checkbox-default-ring-focus-dark,#94a3b8b3)]",
117
+ warning:
118
+ "border-[color:var(--zui-input-checkbox-warning-border,#eab308b3)]! dark:border-[color:var(--zui-input-checkbox-warning-border-dark,#eab308b3)]! checked:border-[color:var(--zui-input-checkbox-warning-border-checked,#ca8a04)] dark:checked:border-[color:var(--zui-input-checkbox-warning-border-checked-dark,#facc15)] checked:text-[color:var(--zui-input-checkbox-warning-fg-checked,#a16207)] dark:checked:text-[color:var(--zui-input-checkbox-warning-fg-checked-dark,#fde047)] hover:border-[color:var(--zui-input-checkbox-warning-border-hover,#ca8a04)] dark:hover:border-[color:var(--zui-input-checkbox-warning-border-hover-dark,#facc15)] focus-visible:border-[color:var(--zui-input-checkbox-warning-border-focus,#ca8a04)] dark:focus-visible:border-[color:var(--zui-input-checkbox-warning-border-focus-dark,#facc15)] focus-visible:ring-[var(--zui-input-checkbox-warning-ring-focus,#facc15cc)] dark:focus-visible:ring-[var(--zui-input-checkbox-warning-ring-focus-dark,#facc15cc)]",
119
+ error:
120
+ "border-[color:var(--zui-input-checkbox-error-border,#f43f5eb3)]! dark:border-[color:var(--zui-input-checkbox-error-border-dark,#f43f5eb3)]! checked:border-[color:var(--zui-input-checkbox-error-border-checked,#e11d48)] dark:checked:border-[color:var(--zui-input-checkbox-error-border-checked-dark,#fb7185)] checked:text-[color:var(--zui-input-checkbox-error-fg-checked,#be123c)] dark:checked:text-[color:var(--zui-input-checkbox-error-fg-checked-dark,#fda4af)] hover:border-[color:var(--zui-input-checkbox-error-border-hover,#e11d48)] dark:hover:border-[color:var(--zui-input-checkbox-error-border-hover-dark,#fb7185)] focus-visible:border-[color:var(--zui-input-checkbox-error-border-focus,#e11d48)] dark:focus-visible:border-[color:var(--zui-input-checkbox-error-border-focus-dark,#fb7185)] focus-visible:ring-[var(--zui-input-checkbox-error-ring-focus,#fb7185cc)] dark:focus-visible:ring-[var(--zui-input-checkbox-error-ring-focus-dark,#fb7185cc)]",
121
+ success:
122
+ "border-[color:var(--zui-input-checkbox-success-border,#10b981b3)]! dark:border-[color:var(--zui-input-checkbox-success-border-dark,#10b981b3)]! checked:border-[color:var(--zui-input-checkbox-success-border-checked,#059669)] dark:checked:border-[color:var(--zui-input-checkbox-success-border-checked-dark,#34d399)] checked:text-[color:var(--zui-input-checkbox-success-fg-checked,#047857)] dark:checked:text-[color:var(--zui-input-checkbox-success-fg-checked-dark,#6ee7b7)] hover:border-[color:var(--zui-input-checkbox-success-border-hover,#059669)] dark:hover:border-[color:var(--zui-input-checkbox-success-border-hover-dark,#34d399)] focus-visible:border-[color:var(--zui-input-checkbox-success-border-focus,#059669)] dark:focus-visible:border-[color:var(--zui-input-checkbox-success-border-focus-dark,#34d399)] focus-visible:ring-[var(--zui-input-checkbox-success-ring-focus,#34d399cc)] dark:focus-visible:ring-[var(--zui-input-checkbox-success-ring-focus-dark,#34d399cc)]",
123
+ info: "border-[color:var(--zui-input-checkbox-info-border,#3b82f6b3)]! dark:border-[color:var(--zui-input-checkbox-info-border-dark,#3b82f6b3)]! checked:border-[color:var(--zui-input-checkbox-info-border-checked,#2563eb)] dark:checked:border-[color:var(--zui-input-checkbox-info-border-checked-dark,#60a5fa)] checked:text-[color:var(--zui-input-checkbox-info-fg-checked,#1d4ed8)] dark:checked:text-[color:var(--zui-input-checkbox-info-fg-checked-dark,#93c5fd)] hover:border-[color:var(--zui-input-checkbox-info-border-hover,#2563eb)] dark:hover:border-[color:var(--zui-input-checkbox-info-border-hover-dark,#60a5fa)] focus-visible:border-[color:var(--zui-input-checkbox-info-border-focus,#2563eb)] dark:focus-visible:border-[color:var(--zui-input-checkbox-info-border-focus-dark,#60a5fa)] focus-visible:ring-[var(--zui-input-checkbox-info-ring-focus,#60a5facc)] dark:focus-visible:ring-[var(--zui-input-checkbox-info-ring-focus-dark,#60a5facc)]",
124
+ violet:
125
+ "border-[color:var(--zui-input-checkbox-violet-border,#8b5cf6b3)]! dark:border-[color:var(--zui-input-checkbox-violet-border-dark,#8b5cf6b3)]! checked:border-[color:var(--zui-input-checkbox-violet-border-checked,#7c3aed)] dark:checked:border-[color:var(--zui-input-checkbox-violet-border-checked-dark,#a78bfa)] checked:text-[color:var(--zui-input-checkbox-violet-fg-checked,#6d28d9)] dark:checked:text-[color:var(--zui-input-checkbox-violet-fg-checked-dark,#c4b5fd)] hover:border-[color:var(--zui-input-checkbox-violet-border-hover,#7c3aed)] dark:hover:border-[color:var(--zui-input-checkbox-violet-border-hover-dark,#a78bfa)] focus-visible:border-[color:var(--zui-input-checkbox-violet-border-focus,#7c3aed)] dark:focus-visible:border-[color:var(--zui-input-checkbox-violet-border-focus-dark,#a78bfa)] focus-visible:ring-[var(--zui-input-checkbox-violet-ring-focus,#a78bfacc)] dark:focus-visible:ring-[var(--zui-input-checkbox-violet-ring-focus-dark,#a78bfacc)]",
126
+ amber:
127
+ "border-[color:var(--zui-input-checkbox-amber-border,#f59e0bb3)]! dark:border-[color:var(--zui-input-checkbox-amber-border-dark,#f59e0bb3)]! checked:border-[color:var(--zui-input-checkbox-amber-border-checked,#fbbf24)]! dark:checked:border-[color:var(--zui-input-checkbox-amber-border-checked-dark,#fbbf24)]! checked:text-[color:var(--zui-input-checkbox-amber-fg-checked,#b45309)] dark:checked:text-[color:var(--zui-input-checkbox-amber-fg-checked-dark,#fcd34d)] hover:border-[color:var(--zui-input-checkbox-amber-border-hover,#fbbf24)]! dark:hover:border-[color:var(--zui-input-checkbox-amber-border-hover-dark,#fbbf24)]! focus-visible:border-[color:var(--zui-input-checkbox-amber-border-focus,#fbbf24)]! dark:focus-visible:border-[color:var(--zui-input-checkbox-amber-border-focus-dark,#fbbf24)]! focus-visible:ring-[var(--zui-input-checkbox-amber-ring-focus,#fbbf24cc)]! dark:focus-visible:ring-[var(--zui-input-checkbox-amber-ring-focus-dark,#fbbf24cc)]!",
128
+ pink: "border-[color:var(--zui-input-checkbox-pink-border,#ec4899b3)]! dark:border-[color:var(--zui-input-checkbox-pink-border-dark,#ec4899b3)]! checked:border-[color:var(--zui-input-checkbox-pink-border-checked,#db2777)] dark:checked:border-[color:var(--zui-input-checkbox-pink-border-checked-dark,#f472b6)] checked:text-[color:var(--zui-input-checkbox-pink-fg-checked,#be185d)] dark:checked:text-[color:var(--zui-input-checkbox-pink-fg-checked-dark,#f9a8d4)] hover:border-[color:var(--zui-input-checkbox-pink-border-hover,#db2777)] dark:hover:border-[color:var(--zui-input-checkbox-pink-border-hover-dark,#f472b6)] focus-visible:border-[color:var(--zui-input-checkbox-pink-border-focus,#db2777)] dark:focus-visible:border-[color:var(--zui-input-checkbox-pink-border-focus-dark,#f472b6)] focus-visible:ring-[var(--zui-input-checkbox-pink-ring-focus,#f472b6cc)] dark:focus-visible:ring-[var(--zui-input-checkbox-pink-ring-focus-dark,#f472b6cc)]",
129
+ indigo:
130
+ "border-[color:var(--zui-input-checkbox-indigo-border,#6366f1b3)]! dark:border-[color:var(--zui-input-checkbox-indigo-border-dark,#6366f1b3)]! checked:border-[color:var(--zui-input-checkbox-indigo-border-checked,#818cf8)]! dark:checked:border-[color:var(--zui-input-checkbox-indigo-border-checked-dark,#818cf8)]! checked:text-[color:var(--zui-input-checkbox-indigo-fg-checked,#4338ca)] dark:checked:text-[color:var(--zui-input-checkbox-indigo-fg-checked-dark,#a5b4fc)] hover:border-[color:var(--zui-input-checkbox-indigo-border-hover,#818cf8)]! dark:hover:border-[color:var(--zui-input-checkbox-indigo-border-hover-dark,#818cf8)]! focus-visible:border-[color:var(--zui-input-checkbox-indigo-border-focus,#818cf8)]! dark:focus-visible:border-[color:var(--zui-input-checkbox-indigo-border-focus-dark,#818cf8)]! focus-visible:ring-[var(--zui-input-checkbox-indigo-ring-focus,#818cf8cc)]! dark:focus-visible:ring-[var(--zui-input-checkbox-indigo-ring-focus-dark,#818cf8cc)]!",
131
+ } as const;
132
+
133
+ export const zuiInputRadioAppearances = {
134
+ default:
135
+ "border-[color:var(--zui-input-radio-default-border,#94a3b8b3)]! dark:border-[color:var(--zui-input-radio-default-border-dark,#94a3b8b3)]! checked:border-[color:var(--zui-input-radio-default-border-checked,#334155)] dark:checked:border-[color:var(--zui-input-radio-default-border-checked-dark,#e2e8f0)] checked:bg-[var(--zui-input-radio-default-bg-checked,transparent)]! dark:checked:bg-[var(--zui-input-radio-default-bg-checked-dark,transparent)]! checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-default-dot,#e2e8f0)]! dark:checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-default-dot-dark,#e2e8f0)]! hover:border-[color:var(--zui-input-radio-default-border-hover,#475569)] dark:hover:border-[color:var(--zui-input-radio-default-border-hover-dark,#cbd5e1)] focus-visible:border-[color:var(--zui-input-radio-default-border-focus,#475569)] dark:focus-visible:border-[color:var(--zui-input-radio-default-border-focus-dark,#cbd5e1)] focus-visible:ring-[var(--zui-input-radio-default-ring-focus,#64748bb3)] dark:focus-visible:ring-[var(--zui-input-radio-default-ring-focus-dark,#94a3b8b3)] checked:ring-2! checked:ring-offset-2! checked:ring-offset-[var(--zui-input-radio-default-ring-offset-checked,#ffffff)]! dark:checked:ring-offset-[var(--zui-input-radio-default-ring-offset-checked-dark,#020617)]! checked:ring-[var(--zui-input-radio-default-ring-checked,#cbd5e1e6)]!",
136
+ warning:
137
+ "border-[color:var(--zui-input-radio-warning-border,#eab308b3)]! dark:border-[color:var(--zui-input-radio-warning-border-dark,#eab308b3)]! checked:border-[color:var(--zui-input-radio-warning-border-checked,#ca8a04)] dark:checked:border-[color:var(--zui-input-radio-warning-border-checked-dark,#facc15)] checked:bg-[var(--zui-input-radio-warning-bg-checked,transparent)]! dark:checked:bg-[var(--zui-input-radio-warning-bg-checked-dark,transparent)]! checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-warning-dot,#facc15)]! dark:checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-warning-dot-dark,#facc15)]! hover:border-[color:var(--zui-input-radio-warning-border-hover,#ca8a04)] dark:hover:border-[color:var(--zui-input-radio-warning-border-hover-dark,#facc15)] focus-visible:border-[color:var(--zui-input-radio-warning-border-focus,#ca8a04)] dark:focus-visible:border-[color:var(--zui-input-radio-warning-border-focus-dark,#facc15)] focus-visible:ring-[var(--zui-input-radio-warning-ring-focus,#facc15cc)] dark:focus-visible:ring-[var(--zui-input-radio-warning-ring-focus-dark,#facc15cc)] checked:ring-2! checked:ring-offset-2! checked:ring-offset-[var(--zui-input-radio-warning-ring-offset-checked,#ffffff)]! dark:checked:ring-offset-[var(--zui-input-radio-warning-ring-offset-checked-dark,#020617)]! checked:ring-[var(--zui-input-radio-warning-ring-checked,#facc15e6)]!",
138
+ error:
139
+ "border-[color:var(--zui-input-radio-error-border,#f43f5eb3)]! dark:border-[color:var(--zui-input-radio-error-border-dark,#f43f5eb3)]! checked:border-[color:var(--zui-input-radio-error-border-checked,#e11d48)] dark:checked:border-[color:var(--zui-input-radio-error-border-checked-dark,#fb7185)] checked:bg-[var(--zui-input-radio-error-bg-checked,transparent)]! dark:checked:bg-[var(--zui-input-radio-error-bg-checked-dark,transparent)]! checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-error-dot,#fb7185)]! dark:checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-error-dot-dark,#fb7185)]! hover:border-[color:var(--zui-input-radio-error-border-hover,#e11d48)] dark:hover:border-[color:var(--zui-input-radio-error-border-hover-dark,#fb7185)] focus-visible:border-[color:var(--zui-input-radio-error-border-focus,#e11d48)] dark:focus-visible:border-[color:var(--zui-input-radio-error-border-focus-dark,#fb7185)] focus-visible:ring-[var(--zui-input-radio-error-ring-focus,#fb7185cc)] dark:focus-visible:ring-[var(--zui-input-radio-error-ring-focus-dark,#fb7185cc)] checked:ring-2! checked:ring-offset-2! checked:ring-offset-[var(--zui-input-radio-error-ring-offset-checked,#ffffff)]! dark:checked:ring-offset-[var(--zui-input-radio-error-ring-offset-checked-dark,#020617)]! checked:ring-[var(--zui-input-radio-error-ring-checked,#fb7185e6)]!",
140
+ success:
141
+ "border-[color:var(--zui-input-radio-success-border,#10b981b3)]! dark:border-[color:var(--zui-input-radio-success-border-dark,#10b981b3)]! checked:border-[color:var(--zui-input-radio-success-border-checked,#059669)] dark:checked:border-[color:var(--zui-input-radio-success-border-checked-dark,#34d399)] checked:bg-[var(--zui-input-radio-success-bg-checked,transparent)]! dark:checked:bg-[var(--zui-input-radio-success-bg-checked-dark,transparent)]! checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-success-dot,#34d399)]! dark:checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-success-dot-dark,#34d399)]! hover:border-[color:var(--zui-input-radio-success-border-hover,#059669)] dark:hover:border-[color:var(--zui-input-radio-success-border-hover-dark,#34d399)] focus-visible:border-[color:var(--zui-input-radio-success-border-focus,#059669)] dark:focus-visible:border-[color:var(--zui-input-radio-success-border-focus-dark,#34d399)] focus-visible:ring-[var(--zui-input-radio-success-ring-focus,#34d399cc)] dark:focus-visible:ring-[var(--zui-input-radio-success-ring-focus-dark,#34d399cc)] checked:ring-2! checked:ring-offset-2! checked:ring-offset-[var(--zui-input-radio-success-ring-offset-checked,#ffffff)]! dark:checked:ring-offset-[var(--zui-input-radio-success-ring-offset-checked-dark,#020617)]! checked:ring-[var(--zui-input-radio-success-ring-checked,#34d399e6)]!",
142
+ info: "border-[color:var(--zui-input-radio-info-border,#3b82f6b3)]! dark:border-[color:var(--zui-input-radio-info-border-dark,#3b82f6b3)]! checked:border-[color:var(--zui-input-radio-info-border-checked,#2563eb)] dark:checked:border-[color:var(--zui-input-radio-info-border-checked-dark,#60a5fa)] checked:bg-[var(--zui-input-radio-info-bg-checked,transparent)]! dark:checked:bg-[var(--zui-input-radio-info-bg-checked-dark,transparent)]! checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-info-dot,#60a5fa)]! dark:checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-info-dot-dark,#60a5fa)]! hover:border-[color:var(--zui-input-radio-info-border-hover,#2563eb)] dark:hover:border-[color:var(--zui-input-radio-info-border-hover-dark,#60a5fa)] focus-visible:border-[color:var(--zui-input-radio-info-border-focus,#2563eb)] dark:focus-visible:border-[color:var(--zui-input-radio-info-border-focus-dark,#60a5fa)] focus-visible:ring-[var(--zui-input-radio-info-ring-focus,#60a5facc)] dark:focus-visible:ring-[var(--zui-input-radio-info-ring-focus-dark,#60a5facc)] checked:ring-2! checked:ring-offset-2! checked:ring-offset-[var(--zui-input-radio-info-ring-offset-checked,#ffffff)]! dark:checked:ring-offset-[var(--zui-input-radio-info-ring-offset-checked-dark,#020617)]! checked:ring-[var(--zui-input-radio-info-ring-checked,#60a5fae6)]!",
143
+ violet:
144
+ "border-[color:var(--zui-input-radio-violet-border,#8b5cf6b3)]! dark:border-[color:var(--zui-input-radio-violet-border-dark,#8b5cf6b3)]! checked:border-[color:var(--zui-input-radio-violet-border-checked,#7c3aed)] dark:checked:border-[color:var(--zui-input-radio-violet-border-checked-dark,#a78bfa)] checked:bg-[var(--zui-input-radio-violet-bg-checked,transparent)]! dark:checked:bg-[var(--zui-input-radio-violet-bg-checked-dark,transparent)]! checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-violet-dot,#a78bfa)]! dark:checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-violet-dot-dark,#a78bfa)]! hover:border-[color:var(--zui-input-radio-violet-border-hover,#7c3aed)] dark:hover:border-[color:var(--zui-input-radio-violet-border-hover-dark,#a78bfa)] focus-visible:border-[color:var(--zui-input-radio-violet-border-focus,#7c3aed)] dark:focus-visible:border-[color:var(--zui-input-radio-violet-border-focus-dark,#a78bfa)] focus-visible:ring-[var(--zui-input-radio-violet-ring-focus,#a78bfacc)] dark:focus-visible:ring-[var(--zui-input-radio-violet-ring-focus-dark,#a78bfacc)] checked:ring-2! checked:ring-offset-2! checked:ring-offset-[var(--zui-input-radio-violet-ring-offset-checked,#ffffff)]! dark:checked:ring-offset-[var(--zui-input-radio-violet-ring-offset-checked-dark,#020617)]! checked:ring-[var(--zui-input-radio-violet-ring-checked,#a78bfae6)]!",
145
+ amber:
146
+ "border-[color:var(--zui-input-radio-amber-border,#f59e0bb3)]! dark:border-[color:var(--zui-input-radio-amber-border-dark,#f59e0bb3)]! checked:border-[color:var(--zui-input-radio-amber-border-checked,#d97706)] dark:checked:border-[color:var(--zui-input-radio-amber-border-checked-dark,#fbbf24)] checked:bg-[var(--zui-input-radio-amber-bg-checked,transparent)]! dark:checked:bg-[var(--zui-input-radio-amber-bg-checked-dark,transparent)]! checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-amber-dot,#fbbf24)]! dark:checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-amber-dot-dark,#fbbf24)]! hover:border-[color:var(--zui-input-radio-amber-border-hover,#d97706)] dark:hover:border-[color:var(--zui-input-radio-amber-border-hover-dark,#fbbf24)] focus-visible:border-[color:var(--zui-input-radio-amber-border-focus,#d97706)] dark:focus-visible:border-[color:var(--zui-input-radio-amber-border-focus-dark,#fbbf24)] focus-visible:ring-[var(--zui-input-radio-amber-ring-focus,#fbbf24cc)] dark:focus-visible:ring-[var(--zui-input-radio-amber-ring-focus-dark,#fbbf24cc)] checked:ring-2! checked:ring-offset-2! checked:ring-offset-[var(--zui-input-radio-amber-ring-offset-checked,#ffffff)]! dark:checked:ring-offset-[var(--zui-input-radio-amber-ring-offset-checked-dark,#020617)]! checked:ring-[var(--zui-input-radio-amber-ring-checked,#fbbf24e6)]!",
147
+ pink: "border-[color:var(--zui-input-radio-pink-border,#ec4899b3)]! dark:border-[color:var(--zui-input-radio-pink-border-dark,#ec4899b3)]! checked:border-[color:var(--zui-input-radio-pink-border-checked,#db2777)] dark:checked:border-[color:var(--zui-input-radio-pink-border-checked-dark,#f472b6)] checked:bg-[var(--zui-input-radio-pink-bg-checked,transparent)]! dark:checked:bg-[var(--zui-input-radio-pink-bg-checked-dark,transparent)]! checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-pink-dot,#f472b6)]! dark:checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-pink-dot-dark,#f472b6)]! hover:border-[color:var(--zui-input-radio-pink-border-hover,#db2777)] dark:hover:border-[color:var(--zui-input-radio-pink-border-hover-dark,#f472b6)] focus-visible:border-[color:var(--zui-input-radio-pink-border-focus,#db2777)] dark:focus-visible:border-[color:var(--zui-input-radio-pink-border-focus-dark,#f472b6)] focus-visible:ring-[var(--zui-input-radio-pink-ring-focus,#f472b6cc)] dark:focus-visible:ring-[var(--zui-input-radio-pink-ring-focus-dark,#f472b6cc)] checked:ring-2! checked:ring-offset-2! checked:ring-offset-[var(--zui-input-radio-pink-ring-offset-checked,#ffffff)]! dark:checked:ring-offset-[var(--zui-input-radio-pink-ring-offset-checked-dark,#020617)]! checked:ring-[var(--zui-input-radio-pink-ring-checked,#f472b6e6)]!",
148
+ indigo:
149
+ "border-[color:var(--zui-input-radio-indigo-border,#6366f1b3)]! dark:border-[color:var(--zui-input-radio-indigo-border-dark,#6366f1b3)]! checked:border-[color:var(--zui-input-radio-indigo-border-checked,#4f46e5)] dark:checked:border-[color:var(--zui-input-radio-indigo-border-checked-dark,#818cf8)] checked:bg-[var(--zui-input-radio-indigo-bg-checked,transparent)]! dark:checked:bg-[var(--zui-input-radio-indigo-bg-checked-dark,transparent)]! checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-indigo-dot,#818cf8)]! dark:checked:shadow-[inset_0_0_0_0.28rem_var(--zui-input-radio-indigo-dot-dark,#818cf8)]! hover:border-[color:var(--zui-input-radio-indigo-border-hover,#4f46e5)] dark:hover:border-[color:var(--zui-input-radio-indigo-border-hover-dark,#818cf8)] focus-visible:border-[color:var(--zui-input-radio-indigo-border-focus,#4f46e5)] dark:focus-visible:border-[color:var(--zui-input-radio-indigo-border-focus-dark,#818cf8)] focus-visible:ring-[var(--zui-input-radio-indigo-ring-focus,#818cf8cc)] dark:focus-visible:ring-[var(--zui-input-radio-indigo-ring-focus-dark,#818cf8cc)] checked:ring-2! checked:ring-offset-2! checked:ring-offset-[var(--zui-input-radio-indigo-ring-offset-checked,#ffffff)]! dark:checked:ring-offset-[var(--zui-input-radio-indigo-ring-offset-checked-dark,#020617)]! checked:ring-[var(--zui-input-radio-indigo-ring-checked,#818cf8e6)]!",
150
+ } as const;
151
+
152
+ export const zuiInputDateAppearances = {
153
+ default:
154
+ "bg-[var(--zui-input-date-default-bg,#ffffff)] dark:bg-[var(--zui-input-date-default-bg-dark,#000000)] border border-[color:var(--zui-input-date-default-border,#0000001a)] dark:border-[color:var(--zui-input-date-default-border-dark,#ffffffcc)] text-[color:var(--zui-input-date-default-fg,#000000)] dark:text-[color:var(--zui-input-date-default-fg-dark,#ffffff)]",
155
+ warning:
156
+ "bg-[var(--zui-input-date-warning-bg,#713f12)] dark:bg-[var(--zui-input-date-warning-bg-dark,transparent)] text-[color:var(--zui-input-date-warning-fg,#fefce8)] dark:text-[color:var(--zui-input-date-warning-fg-dark,#fefce8)]",
157
+ error:
158
+ "bg-[var(--zui-input-date-error-bg,#881337)] dark:bg-[var(--zui-input-date-error-bg-dark,transparent)] text-[color:var(--zui-input-date-error-fg,#fff1f2)] dark:text-[color:var(--zui-input-date-error-fg-dark,#fff1f2)]",
159
+ success:
160
+ "bg-[var(--zui-input-date-success-bg,#064e3b)] dark:bg-[var(--zui-input-date-success-bg-dark,transparent)] text-[color:var(--zui-input-date-success-fg,#ecfdf5)] dark:text-[color:var(--zui-input-date-success-fg-dark,#ecfdf5)]",
161
+ info: "bg-[var(--zui-input-date-info-bg,#1e3a8a)] dark:bg-[var(--zui-input-date-info-bg-dark,transparent)] text-[color:var(--zui-input-date-info-fg,#eff6ff)] dark:text-[color:var(--zui-input-date-info-fg-dark,#eff6ff)]",
162
+ violet:
163
+ "bg-[var(--zui-input-date-violet-bg,#4c1d95)] dark:bg-[var(--zui-input-date-violet-bg-dark,transparent)] text-[color:var(--zui-input-date-violet-fg,#f5f3ff)] dark:text-[color:var(--zui-input-date-violet-fg-dark,#f5f3ff)]",
164
+ amber:
165
+ "bg-[var(--zui-input-date-amber-bg,#78350f)] dark:bg-[var(--zui-input-date-amber-bg-dark,transparent)] text-[color:var(--zui-input-date-amber-fg,#fffbeb)] dark:text-[color:var(--zui-input-date-amber-fg-dark,#fffbeb)]",
166
+ pink: "bg-[var(--zui-input-date-pink-bg,#831843)] dark:bg-[var(--zui-input-date-pink-bg-dark,transparent)] text-[color:var(--zui-input-date-pink-fg,#fdf2f8)] dark:text-[color:var(--zui-input-date-pink-fg-dark,#fdf2f8)]",
167
+ indigo:
168
+ "bg-[var(--zui-input-date-indigo-bg,#312e81)] dark:bg-[var(--zui-input-date-indigo-bg-dark,transparent)] text-[color:var(--zui-input-date-indigo-fg,#eef2ff)] dark:text-[color:var(--zui-input-date-indigo-fg-dark,#eef2ff)]",
169
+ orange:
170
+ "bg-[var(--zui-input-date-orange-bg,#7c2d12)] dark:bg-[var(--zui-input-date-orange-bg-dark,transparent)] text-[color:var(--zui-input-date-orange-fg,#fff7ed)] dark:text-[color:var(--zui-input-date-orange-fg-dark,#fff7ed)]",
171
+ } as const;
172
+
71
173
  export const zuiInputRing = {
72
174
  true: "focus-visible:ring-2 focus-visible:ring-offset-2",
73
175
  false: "",
@@ -71,6 +71,9 @@ export const zuiKbdKeySizes = {
71
71
 
72
72
  export type ZuiKbdSize = keyof typeof zuiKbdKeySizes;
73
73
 
74
+ export const zuiKbdSeparatorBase =
75
+ "text-[color:var(--zui-kbd-separator-fg,#94a3b8)] dark:text-[color:var(--zui-kbd-separator-fg-dark,#64748b)]";
76
+
74
77
  export const zuiKbdSeparatorSizes = {
75
78
  sm: "text-[0.7rem]",
76
79
  md: "text-xs",
@@ -26,23 +26,23 @@ export const zuiMarqueeAppearances = {
26
26
  emerald:
27
27
  "border-[color:var(--zui-marquee-emerald-border,oklch(69.6%_0.17_162.48_/_0.28))] [--zui-marquee-bg:oklch(97.9%_0.021_166.113)] [--zui-marquee-fg:oklch(37.8%_0.077_168.94)] dark:border-[color:var(--zui-marquee-emerald-border-dark,oklch(76.5%_0.177_163.223_/_0.32))] dark:[--zui-marquee-bg:oklch(37.8%_0.077_168.94_/_0.28)] dark:[--zui-marquee-fg:oklch(95%_0.052_163.051)]",
28
28
  "gradient-blue":
29
- "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-blue-from,oklch(62.3%_0.214_259.815))] to-[var(--zui-marquee-gradient-blue-to,oklch(54.6%_0.245_262.881))] [--zui-marquee-fg:#ffffff]",
29
+ "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-blue-from,oklch(62.3%_0.214_259.815))] dark:from-[var(--zui-marquee-gradient-blue-from-dark,oklch(42.4%_0.199_265.638))] to-[var(--zui-marquee-gradient-blue-to,oklch(54.6%_0.245_262.881))] dark:to-[var(--zui-marquee-gradient-blue-to-dark,oklch(37.9%_0.146_265.522))] [--zui-marquee-fg:#ffffff] dark:[--zui-marquee-fg:#ffffff]",
30
30
  "gradient-green":
31
- "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-green-from,oklch(72.3%_0.219_149.579))] to-[var(--zui-marquee-gradient-green-to,oklch(62.7%_0.194_149.214))] [--zui-marquee-fg:#ffffff]",
31
+ "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-green-from,oklch(72.3%_0.219_149.579))] dark:from-[var(--zui-marquee-gradient-green-from-dark,oklch(44.8%_0.119_151.328))] to-[var(--zui-marquee-gradient-green-to,oklch(62.7%_0.194_149.214))] dark:to-[var(--zui-marquee-gradient-green-to-dark,oklch(39.3%_0.095_152.535))] [--zui-marquee-fg:#ffffff] dark:[--zui-marquee-fg:#ffffff]",
32
32
  "gradient-red":
33
- "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-red-from,oklch(63.7%_0.237_25.331))] to-[var(--zui-marquee-gradient-red-to,oklch(57.7%_0.245_27.325))] [--zui-marquee-fg:#ffffff]",
33
+ "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-red-from,oklch(63.7%_0.237_25.331))] dark:from-[var(--zui-marquee-gradient-red-from-dark,oklch(44.4%_0.177_26.899))] to-[var(--zui-marquee-gradient-red-to,oklch(57.7%_0.245_27.325))] dark:to-[var(--zui-marquee-gradient-red-to-dark,oklch(39.6%_0.141_25.723))] [--zui-marquee-fg:#ffffff] dark:[--zui-marquee-fg:#ffffff]",
34
34
  "gradient-yellow":
35
- "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-yellow-from,oklch(85.2%_0.199_91.936))] to-[var(--zui-marquee-gradient-yellow-to,oklch(79.5%_0.184_86.047))] [--zui-marquee-fg:oklch(27.9%_0.077_45.635)]",
35
+ "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-yellow-from,oklch(85.2%_0.199_91.936))] dark:from-[var(--zui-marquee-gradient-yellow-from-dark,oklch(47.6%_0.114_61.907))] to-[var(--zui-marquee-gradient-yellow-to,oklch(79.5%_0.184_86.047))] dark:to-[var(--zui-marquee-gradient-yellow-to-dark,oklch(42.1%_0.095_57.708))] [--zui-marquee-fg:oklch(27.9%_0.077_45.635)] dark:[--zui-marquee-fg:#ffffff]",
36
36
  "gradient-purple":
37
- "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-purple-from,oklch(71.4%_0.203_305.504))] to-[var(--zui-marquee-gradient-purple-to,oklch(62.7%_0.265_303.9))] [--zui-marquee-fg:#ffffff]",
37
+ "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-purple-from,oklch(71.4%_0.203_305.504))] dark:from-[var(--zui-marquee-gradient-purple-from-dark,oklch(43.8%_0.218_303.724))] to-[var(--zui-marquee-gradient-purple-to,oklch(62.7%_0.265_303.9))] dark:to-[var(--zui-marquee-gradient-purple-to-dark,oklch(38.1%_0.176_304.987))] [--zui-marquee-fg:#ffffff] dark:[--zui-marquee-fg:#ffffff]",
38
38
  "gradient-teal":
39
- "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-teal-from,oklch(77.7%_0.152_181.912))] to-[var(--zui-marquee-gradient-teal-to,oklch(70.4%_0.14_182.503))] [--zui-marquee-fg:#ffffff]",
39
+ "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-teal-from,oklch(77.7%_0.152_181.912))] dark:from-[var(--zui-marquee-gradient-teal-from-dark,oklch(43.7%_0.078_188.216))] to-[var(--zui-marquee-gradient-teal-to,oklch(70.4%_0.14_182.503))] dark:to-[var(--zui-marquee-gradient-teal-to-dark,oklch(38.6%_0.063_188.416))] [--zui-marquee-fg:#ffffff] dark:[--zui-marquee-fg:#ffffff]",
40
40
  "gradient-indigo":
41
- "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-indigo-from,oklch(67.3%_0.182_276.935))] to-[var(--zui-marquee-gradient-indigo-to,oklch(58.5%_0.233_277.117))] [--zui-marquee-fg:#ffffff]",
41
+ "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-indigo-from,oklch(67.3%_0.182_276.935))] dark:from-[var(--zui-marquee-gradient-indigo-from-dark,oklch(39.8%_0.195_277.366))] to-[var(--zui-marquee-gradient-indigo-to,oklch(58.5%_0.233_277.117))] dark:to-[var(--zui-marquee-gradient-indigo-to-dark,oklch(35.9%_0.144_278.697))] [--zui-marquee-fg:#ffffff] dark:[--zui-marquee-fg:#ffffff]",
42
42
  "gradient-pink":
43
- "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-pink-from,oklch(71.8%_0.202_349.761))] to-[var(--zui-marquee-gradient-pink-to,oklch(65.6%_0.241_354.308))] [--zui-marquee-fg:#ffffff]",
43
+ "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-pink-from,oklch(71.8%_0.202_349.761))] dark:from-[var(--zui-marquee-gradient-pink-from-dark,oklch(45.9%_0.187_3.815))] to-[var(--zui-marquee-gradient-pink-to,oklch(65.6%_0.241_354.308))] dark:to-[var(--zui-marquee-gradient-pink-to-dark,oklch(40.8%_0.153_2.432))] [--zui-marquee-fg:#ffffff] dark:[--zui-marquee-fg:#ffffff]",
44
44
  "gradient-orange":
45
- "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-orange-from,oklch(75%_0.183_55.934))] to-[var(--zui-marquee-gradient-orange-to,oklch(70.5%_0.213_47.604))] [--zui-marquee-fg:#ffffff]",
45
+ "border-transparent bg-linear-to-r from-[var(--zui-marquee-gradient-orange-from,oklch(75%_0.183_55.934))] dark:from-[var(--zui-marquee-gradient-orange-from-dark,oklch(47%_0.157_37.304))] to-[var(--zui-marquee-gradient-orange-to,oklch(70.5%_0.213_47.604))] dark:to-[var(--zui-marquee-gradient-orange-to-dark,oklch(40.8%_0.123_38.172))] [--zui-marquee-fg:#ffffff] dark:[--zui-marquee-fg:#ffffff]",
46
46
  } as const;
47
47
 
48
48
  export const zuiMarqueeOrientations = {
@@ -26,23 +26,23 @@ export const zuiTimelineIndicatorAppearances = {
26
26
  violet:
27
27
  "border-[color:var(--zui-timeline-indicator-violet-border,oklch(60.6%_0.25_292.717_/_0.6))] bg-[var(--zui-timeline-indicator-violet-bg,oklch(60.6%_0.25_292.717_/_0.2))] text-[color:var(--zui-timeline-indicator-violet-fg,oklch(38%_0.189_293.745))] dark:text-[color:var(--zui-timeline-indicator-violet-fg-dark,oklch(94.3%_0.029_294.588))] ring-2 ring-[var(--zui-timeline-indicator-violet-ring,oklch(70.2%_0.183_293.541_/_0.3))]",
28
28
  "gradient-blue":
29
- "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-blue-from,oklch(62.3%_0.214_259.815))] to-[var(--zui-timeline-indicator-gradient-blue-to,oklch(54.6%_0.245_262.881))] text-[color:var(--zui-timeline-indicator-gradient-blue-fg,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-blue-ring,oklch(70.7%_0.165_254.624_/_0.3))]",
29
+ "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-blue-from,oklch(62.3%_0.214_259.815))] dark:from-[var(--zui-timeline-indicator-gradient-blue-from-dark,oklch(42.4%_0.199_265.638))] to-[var(--zui-timeline-indicator-gradient-blue-to,oklch(54.6%_0.245_262.881))] dark:to-[var(--zui-timeline-indicator-gradient-blue-to-dark,oklch(37.9%_0.146_265.522))] text-[color:var(--zui-timeline-indicator-gradient-blue-fg,#ffffff)] dark:text-[color:var(--zui-timeline-indicator-gradient-blue-fg-dark,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-blue-ring,oklch(70.7%_0.165_254.624_/_0.3))] dark:ring-[var(--zui-timeline-indicator-gradient-blue-ring-dark,oklch(42.4%_0.199_265.638_/_0.3))]",
30
30
  "gradient-green":
31
- "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-green-from,oklch(72.3%_0.219_149.579))] to-[var(--zui-timeline-indicator-gradient-green-to,oklch(62.7%_0.194_149.214))] text-[color:var(--zui-timeline-indicator-gradient-green-fg,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-green-ring,oklch(79.2%_0.209_151.711_/_0.3))]",
31
+ "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-green-from,oklch(72.3%_0.219_149.579))] dark:from-[var(--zui-timeline-indicator-gradient-green-from-dark,oklch(44.8%_0.119_151.328))] to-[var(--zui-timeline-indicator-gradient-green-to,oklch(62.7%_0.194_149.214))] dark:to-[var(--zui-timeline-indicator-gradient-green-to-dark,oklch(39.3%_0.095_152.535))] text-[color:var(--zui-timeline-indicator-gradient-green-fg,#ffffff)] dark:text-[color:var(--zui-timeline-indicator-gradient-green-fg-dark,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-green-ring,oklch(79.2%_0.209_151.711_/_0.3))] dark:ring-[var(--zui-timeline-indicator-gradient-green-ring-dark,oklch(44.8%_0.119_151.328_/_0.3))]",
32
32
  "gradient-red":
33
- "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-red-from,oklch(63.7%_0.237_25.331))] to-[var(--zui-timeline-indicator-gradient-red-to,oklch(57.7%_0.245_27.325))] text-[color:var(--zui-timeline-indicator-gradient-red-fg,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-red-ring,oklch(70.4%_0.191_22.216_/_0.3))]",
33
+ "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-red-from,oklch(63.7%_0.237_25.331))] dark:from-[var(--zui-timeline-indicator-gradient-red-from-dark,oklch(44.4%_0.177_26.899))] to-[var(--zui-timeline-indicator-gradient-red-to,oklch(57.7%_0.245_27.325))] dark:to-[var(--zui-timeline-indicator-gradient-red-to-dark,oklch(39.6%_0.141_25.723))] text-[color:var(--zui-timeline-indicator-gradient-red-fg,#ffffff)] dark:text-[color:var(--zui-timeline-indicator-gradient-red-fg-dark,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-red-ring,oklch(70.4%_0.191_22.216_/_0.3))] dark:ring-[var(--zui-timeline-indicator-gradient-red-ring-dark,oklch(44.4%_0.177_26.899_/_0.3))]",
34
34
  "gradient-yellow":
35
- "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-yellow-from,oklch(85.2%_0.199_91.936))] to-[var(--zui-timeline-indicator-gradient-yellow-to,oklch(79.5%_0.184_86.047))] text-[color:var(--zui-timeline-indicator-gradient-yellow-fg,oklch(42.1%_0.095_57.708))] ring-2 ring-[var(--zui-timeline-indicator-gradient-yellow-ring,oklch(85.2%_0.199_91.936_/_0.3))]",
35
+ "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-yellow-from,oklch(85.2%_0.199_91.936))] dark:from-[var(--zui-timeline-indicator-gradient-yellow-from-dark,oklch(47.6%_0.114_61.907))] to-[var(--zui-timeline-indicator-gradient-yellow-to,oklch(79.5%_0.184_86.047))] dark:to-[var(--zui-timeline-indicator-gradient-yellow-to-dark,oklch(42.1%_0.095_57.708))] text-[color:var(--zui-timeline-indicator-gradient-yellow-fg,oklch(42.1%_0.095_57.708))] dark:text-[color:var(--zui-timeline-indicator-gradient-yellow-fg-dark,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-yellow-ring,oklch(85.2%_0.199_91.936_/_0.3))] dark:ring-[var(--zui-timeline-indicator-gradient-yellow-ring-dark,oklch(47.6%_0.114_61.907_/_0.3))]",
36
36
  "gradient-purple":
37
- "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-purple-from,oklch(71.4%_0.203_305.504))] to-[var(--zui-timeline-indicator-gradient-purple-to,oklch(62.7%_0.265_303.9))] text-[color:var(--zui-timeline-indicator-gradient-purple-fg,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-purple-ring,oklch(71.4%_0.203_305.504_/_0.3))]",
37
+ "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-purple-from,oklch(71.4%_0.203_305.504))] dark:from-[var(--zui-timeline-indicator-gradient-purple-from-dark,oklch(43.8%_0.218_303.724))] to-[var(--zui-timeline-indicator-gradient-purple-to,oklch(62.7%_0.265_303.9))] dark:to-[var(--zui-timeline-indicator-gradient-purple-to-dark,oklch(38.1%_0.176_304.987))] text-[color:var(--zui-timeline-indicator-gradient-purple-fg,#ffffff)] dark:text-[color:var(--zui-timeline-indicator-gradient-purple-fg-dark,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-purple-ring,oklch(71.4%_0.203_305.504_/_0.3))] dark:ring-[var(--zui-timeline-indicator-gradient-purple-ring-dark,oklch(43.8%_0.218_303.724_/_0.3))]",
38
38
  "gradient-teal":
39
- "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-teal-from,oklch(77.7%_0.152_181.912))] to-[var(--zui-timeline-indicator-gradient-teal-to,oklch(70.4%_0.14_182.503))] text-[color:var(--zui-timeline-indicator-gradient-teal-fg,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-teal-ring,oklch(77.7%_0.152_181.912_/_0.3))]",
39
+ "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-teal-from,oklch(77.7%_0.152_181.912))] dark:from-[var(--zui-timeline-indicator-gradient-teal-from-dark,oklch(43.7%_0.078_188.216))] to-[var(--zui-timeline-indicator-gradient-teal-to,oklch(70.4%_0.14_182.503))] dark:to-[var(--zui-timeline-indicator-gradient-teal-to-dark,oklch(38.6%_0.063_188.416))] text-[color:var(--zui-timeline-indicator-gradient-teal-fg,#ffffff)] dark:text-[color:var(--zui-timeline-indicator-gradient-teal-fg-dark,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-teal-ring,oklch(77.7%_0.152_181.912_/_0.3))] dark:ring-[var(--zui-timeline-indicator-gradient-teal-ring-dark,oklch(43.7%_0.078_188.216_/_0.3))]",
40
40
  "gradient-indigo":
41
- "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-indigo-from,oklch(67.3%_0.182_276.935))] to-[var(--zui-timeline-indicator-gradient-indigo-to,oklch(58.5%_0.233_277.117))] text-[color:var(--zui-timeline-indicator-gradient-indigo-fg,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-indigo-ring,oklch(67.3%_0.182_276.935_/_0.3))]",
41
+ "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-indigo-from,oklch(67.3%_0.182_276.935))] dark:from-[var(--zui-timeline-indicator-gradient-indigo-from-dark,oklch(39.8%_0.195_277.366))] to-[var(--zui-timeline-indicator-gradient-indigo-to,oklch(58.5%_0.233_277.117))] dark:to-[var(--zui-timeline-indicator-gradient-indigo-to-dark,oklch(35.9%_0.144_278.697))] text-[color:var(--zui-timeline-indicator-gradient-indigo-fg,#ffffff)] dark:text-[color:var(--zui-timeline-indicator-gradient-indigo-fg-dark,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-indigo-ring,oklch(67.3%_0.182_276.935_/_0.3))] dark:ring-[var(--zui-timeline-indicator-gradient-indigo-ring-dark,oklch(39.8%_0.195_277.366_/_0.3))]",
42
42
  "gradient-pink":
43
- "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-pink-from,oklch(71.8%_0.202_349.761))] to-[var(--zui-timeline-indicator-gradient-pink-to,oklch(65.6%_0.241_354.308))] text-[color:var(--zui-timeline-indicator-gradient-pink-fg,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-pink-ring,oklch(71.8%_0.202_349.761_/_0.3))]",
43
+ "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-pink-from,oklch(71.8%_0.202_349.761))] dark:from-[var(--zui-timeline-indicator-gradient-pink-from-dark,oklch(45.9%_0.187_3.815))] to-[var(--zui-timeline-indicator-gradient-pink-to,oklch(65.6%_0.241_354.308))] dark:to-[var(--zui-timeline-indicator-gradient-pink-to-dark,oklch(40.8%_0.153_2.432))] text-[color:var(--zui-timeline-indicator-gradient-pink-fg,#ffffff)] dark:text-[color:var(--zui-timeline-indicator-gradient-pink-fg-dark,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-pink-ring,oklch(71.8%_0.202_349.761_/_0.3))] dark:ring-[var(--zui-timeline-indicator-gradient-pink-ring-dark,oklch(45.9%_0.187_3.815_/_0.3))]",
44
44
  "gradient-orange":
45
- "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-orange-from,oklch(75%_0.183_55.934))] to-[var(--zui-timeline-indicator-gradient-orange-to,oklch(70.5%_0.213_47.604))] text-[color:var(--zui-timeline-indicator-gradient-orange-fg,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-orange-ring,oklch(75%_0.183_55.934_/_0.3))]",
45
+ "border-transparent bg-linear-to-br from-[var(--zui-timeline-indicator-gradient-orange-from,oklch(75%_0.183_55.934))] dark:from-[var(--zui-timeline-indicator-gradient-orange-from-dark,oklch(47%_0.157_37.304))] to-[var(--zui-timeline-indicator-gradient-orange-to,oklch(70.5%_0.213_47.604))] dark:to-[var(--zui-timeline-indicator-gradient-orange-to-dark,oklch(40.8%_0.123_38.172))] text-[color:var(--zui-timeline-indicator-gradient-orange-fg,#ffffff)] dark:text-[color:var(--zui-timeline-indicator-gradient-orange-fg-dark,#ffffff)] ring-2 ring-[var(--zui-timeline-indicator-gradient-orange-ring,oklch(75%_0.183_55.934_/_0.3))] dark:ring-[var(--zui-timeline-indicator-gradient-orange-ring-dark,oklch(47%_0.157_37.304_/_0.3))]",
46
46
  } as const;
47
47
 
48
48
  export const zuiTimelineIndicatorSizes = {
@@ -0,0 +1,139 @@
1
+ import { render, screen, waitFor } from "@testing-library/react";
2
+ import userEvent from "@testing-library/user-event";
3
+ import { describe, it } from "vitest";
4
+
5
+ import { assertNoAxeViolations } from "../../test-utils/axe";
6
+ import {
7
+ Accordion,
8
+ AccordionContent,
9
+ AccordionItem,
10
+ AccordionTrigger,
11
+ } from "../accordion";
12
+ import { Button } from "../buttons/button";
13
+ import { Checkbox } from "../checkbox";
14
+ import { Input } from "../inputs/input";
15
+ import {
16
+ Modal,
17
+ ModalBody,
18
+ ModalContent,
19
+ ModalDescription,
20
+ ModalTitle,
21
+ } from "../modal";
22
+ import { RadioGroup, RadioGroupItem } from "../radio-group";
23
+ import { Rating } from "../rating";
24
+ import {
25
+ Select,
26
+ SelectContent,
27
+ SelectItem,
28
+ SelectTrigger,
29
+ SelectValue,
30
+ } from "../select";
31
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "../tabs";
32
+
33
+ describe("axe-core accessibility smoke coverage", () => {
34
+ it("passes axe checks for labeled form controls and actions", async () => {
35
+ const { container } = render(
36
+ <form aria-label="Account settings">
37
+ <label htmlFor="email">Email</label>
38
+ <Input id="email" type="email" />
39
+
40
+ <Checkbox defaultChecked>Send product updates</Checkbox>
41
+
42
+ <Button type="submit">Save settings</Button>
43
+ </form>,
44
+ );
45
+
46
+ await assertNoAxeViolations(container);
47
+ });
48
+
49
+ it("passes axe checks for accordion disclosure markup", async () => {
50
+ const { container } = render(
51
+ <Accordion type="multiple" defaultValues={["shipping"]}>
52
+ <AccordionItem value="shipping">
53
+ <AccordionTrigger>Shipping details</AccordionTrigger>
54
+ <AccordionContent>
55
+ Choose a delivery method before confirming the order.
56
+ </AccordionContent>
57
+ </AccordionItem>
58
+ <AccordionItem value="billing">
59
+ <AccordionTrigger>Billing address</AccordionTrigger>
60
+ <AccordionContent>
61
+ Add the billing address used for the invoice.
62
+ </AccordionContent>
63
+ </AccordionItem>
64
+ </Accordion>,
65
+ );
66
+
67
+ await assertNoAxeViolations(container);
68
+ });
69
+
70
+ it("passes axe checks for modal dialog markup", async () => {
71
+ render(
72
+ <Modal defaultOpen>
73
+ <ModalContent>
74
+ <ModalTitle>Confirm publish</ModalTitle>
75
+ <ModalDescription>
76
+ Review the release notes before publishing the package.
77
+ </ModalDescription>
78
+ <ModalBody>The package will be published to npm.</ModalBody>
79
+ </ModalContent>
80
+ </Modal>,
81
+ );
82
+
83
+ await screen.findByRole("dialog", { name: "Confirm publish" });
84
+ await assertNoAxeViolations(document.body);
85
+ });
86
+
87
+ it("passes axe checks for tablist and tabpanel relationships", async () => {
88
+ const { container } = render(
89
+ <Tabs defaultValue="overview">
90
+ <TabsList aria-label="Package sections">
91
+ <TabsTrigger value="overview">Overview</TabsTrigger>
92
+ <TabsTrigger value="api">API</TabsTrigger>
93
+ </TabsList>
94
+ <TabsContent value="overview">Install and usage details.</TabsContent>
95
+ <TabsContent value="api">Props and public exports.</TabsContent>
96
+ </Tabs>,
97
+ );
98
+
99
+ await assertNoAxeViolations(container);
100
+ });
101
+
102
+ it("passes axe checks for opened select listbox markup", async () => {
103
+ const user = userEvent.setup();
104
+
105
+ render(
106
+ <Select defaultValue={[]}>
107
+ <SelectTrigger>
108
+ <SelectValue placeholder="Select plan" />
109
+ </SelectTrigger>
110
+ <SelectContent>
111
+ <SelectItem value="starter">Starter</SelectItem>
112
+ <SelectItem value="pro">Pro</SelectItem>
113
+ </SelectContent>
114
+ </Select>,
115
+ );
116
+
117
+ await user.click(screen.getByRole("button", { name: "Select plan" }));
118
+ await waitFor(() => {
119
+ screen.getByRole("listbox");
120
+ });
121
+
122
+ await assertNoAxeViolations(document.body);
123
+ });
124
+
125
+ it("passes axe checks for radio-group and rating controls", async () => {
126
+ const { container } = render(
127
+ <section aria-label="Product preferences">
128
+ <RadioGroup defaultValue="pro" aria-label="Plan">
129
+ <RadioGroupItem value="starter">Starter</RadioGroupItem>
130
+ <RadioGroupItem value="pro">Pro</RadioGroupItem>
131
+ </RadioGroup>
132
+
133
+ <Rating defaultValue={4} label="Product score" />
134
+ </section>,
135
+ );
136
+
137
+ await assertNoAxeViolations(container);
138
+ });
139
+ });
@@ -3,7 +3,7 @@ import { cva } from "class-variance-authority";
3
3
  import {
4
4
  zuiDynamicStepperIndicatorBase,
5
5
  zuiDynamicStepperIndicatorSizes,
6
- zuiDynamicStepperIndicatorToneClass,
6
+ zuiDynamicStepperIndicatorToneClasses,
7
7
  zuiDynamicStepperItemBase,
8
8
  zuiDynamicStepperItemOrientations,
9
9
  zuiDynamicStepperMapperBase,
@@ -20,8 +20,12 @@ export type DynamicStepperIndicatorToneAppearance =
20
20
  export type DynamicStepperIndicatorSemanticState =
21
21
  ZuiDynamicStepperIndicatorSemanticState;
22
22
 
23
- export const dynamicStepperIndicatorToneClass =
24
- zuiDynamicStepperIndicatorToneClass;
23
+ export function dynamicStepperIndicatorToneClass(
24
+ state: DynamicStepperIndicatorSemanticState,
25
+ tone: DynamicStepperIndicatorToneAppearance,
26
+ ) {
27
+ return zuiDynamicStepperIndicatorToneClasses[tone][state];
28
+ }
25
29
 
26
30
  export const dynamicStepperRootVariants = cva(zuiDynamicStepperRootBase, {
27
31
  variants: {