@szum-tech/design-system 3.8.0 → 3.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 (96) hide show
  1. package/dist/{chunk-O3DHBQA5.cjs → chunk-3GNVQFCK.cjs} +1 -1
  2. package/dist/{chunk-SYKUS2RV.js → chunk-3MH6P44N.js} +2 -2
  3. package/dist/{chunk-3BLXG7ET.js → chunk-3RK5PCIC.js} +1 -1
  4. package/dist/{chunk-2Q2BIWBE.js → chunk-5MV54MWS.js} +1 -1
  5. package/dist/{chunk-YWG7TML6.cjs → chunk-6X26XC6P.cjs} +1 -1
  6. package/dist/chunk-A7SBXO2Y.cjs +40 -0
  7. package/dist/{chunk-ACJ3ES2B.js → chunk-BTSHACKG.js} +1 -1
  8. package/dist/{chunk-3DUJHGXE.cjs → chunk-CFJ44JVK.cjs} +1 -1
  9. package/dist/{chunk-Q5ONG5HB.cjs → chunk-DTYX7CYN.cjs} +2 -2
  10. package/dist/chunk-E5TYGWGE.js +176 -0
  11. package/dist/{chunk-XV3AQ6NS.js → chunk-KGGCA634.js} +1 -1
  12. package/dist/{chunk-3SDAJSY6.js → chunk-PHPJ54IC.js} +86 -51
  13. package/dist/{chunk-FKCWRNWB.js → chunk-U3QKV7I4.js} +1 -1
  14. package/dist/chunk-U7XZJQ4O.js +36 -0
  15. package/dist/{chunk-X55H6LRX.cjs → chunk-ULEEQ723.cjs} +1 -1
  16. package/dist/{chunk-BAWVLSRF.cjs → chunk-VK5EX3OG.cjs} +1 -1
  17. package/dist/{chunk-UW6GOD7J.js → chunk-VT5GDGZJ.js} +1 -1
  18. package/dist/chunk-XJZOANXX.cjs +183 -0
  19. package/dist/{chunk-F3GJIJRL.cjs → chunk-XTNS5QH5.cjs} +89 -54
  20. package/dist/{chunk-Z6CZAPVG.cjs → chunk-ZVF7J4EI.cjs} +1 -1
  21. package/dist/components/alert/index.cjs +4 -5
  22. package/dist/components/alert/index.js +1 -2
  23. package/dist/components/alert-dialog/index.cjs +0 -1
  24. package/dist/components/alert-dialog/index.js +0 -1
  25. package/dist/components/avatar/index.cjs +0 -1
  26. package/dist/components/avatar/index.js +0 -1
  27. package/dist/components/badge/index.cjs +4 -5
  28. package/dist/components/badge/index.js +1 -2
  29. package/dist/components/button/index.cjs +12 -13
  30. package/dist/components/button/index.js +11 -12
  31. package/dist/components/card/index.cjs +0 -1
  32. package/dist/components/card/index.js +0 -1
  33. package/dist/components/checkbox/index.cjs +0 -1
  34. package/dist/components/checkbox/index.js +0 -1
  35. package/dist/components/color-swatch/index.cjs +2 -3
  36. package/dist/components/color-swatch/index.js +1 -2
  37. package/dist/components/dialog/index.cjs +9 -10
  38. package/dist/components/dialog/index.js +1 -2
  39. package/dist/components/empty/index.cjs +0 -1
  40. package/dist/components/empty/index.js +0 -1
  41. package/dist/components/field/index.cjs +11 -12
  42. package/dist/components/field/index.js +1 -2
  43. package/dist/components/header/index.cjs +2 -3
  44. package/dist/components/header/index.js +1 -2
  45. package/dist/components/index.cjs +82 -79
  46. package/dist/components/index.d.cts +1 -2
  47. package/dist/components/index.d.ts +1 -2
  48. package/dist/components/index.js +11 -12
  49. package/dist/components/input/index.cjs +0 -1
  50. package/dist/components/input/index.js +0 -1
  51. package/dist/components/item/index.cjs +11 -12
  52. package/dist/components/item/index.js +1 -2
  53. package/dist/components/label/index.cjs +0 -1
  54. package/dist/components/label/index.js +0 -1
  55. package/dist/components/progress/index.cjs +0 -1
  56. package/dist/components/progress/index.js +0 -1
  57. package/dist/components/radio-group/index.cjs +0 -1
  58. package/dist/components/radio-group/index.js +0 -1
  59. package/dist/components/scroll-area/index.cjs +0 -1
  60. package/dist/components/scroll-area/index.js +0 -1
  61. package/dist/components/select/index.cjs +7 -8
  62. package/dist/components/select/index.d.cts +1 -2
  63. package/dist/components/select/index.d.ts +1 -2
  64. package/dist/components/select/index.js +1 -2
  65. package/dist/components/separator/index.cjs +0 -1
  66. package/dist/components/separator/index.js +0 -1
  67. package/dist/components/sheet/index.cjs +0 -1
  68. package/dist/components/sheet/index.js +0 -1
  69. package/dist/components/spinner/index.cjs +0 -1
  70. package/dist/components/spinner/index.js +0 -1
  71. package/dist/components/stepper/index.cjs +30 -31
  72. package/dist/components/stepper/index.js +11 -12
  73. package/dist/components/textarea/index.cjs +0 -1
  74. package/dist/components/textarea/index.js +0 -1
  75. package/dist/components/toaster/index.cjs +13 -14
  76. package/dist/components/toaster/index.js +11 -12
  77. package/dist/components/tooltip/index.cjs +9 -5
  78. package/dist/components/tooltip/index.d.cts +8 -12
  79. package/dist/components/tooltip/index.d.ts +8 -12
  80. package/dist/components/tooltip/index.js +2 -2
  81. package/dist/contexts/index.cjs +0 -1
  82. package/dist/contexts/index.js +0 -1
  83. package/dist/hooks/index.cjs +0 -1
  84. package/dist/hooks/index.js +0 -1
  85. package/dist/icons/index.cjs +1 -1
  86. package/dist/icons/index.js +1 -1
  87. package/dist/utils/index.cjs +0 -1
  88. package/dist/utils/index.js +0 -1
  89. package/package.json +6 -9
  90. package/tailwind/global.css +5 -0
  91. package/dist/chunk-3376ZTRC.cjs +0 -2
  92. package/dist/chunk-3ZRMIVJM.cjs +0 -4934
  93. package/dist/chunk-BYXBJQAS.js +0 -1
  94. package/dist/chunk-GR37JJQK.cjs +0 -43
  95. package/dist/chunk-HJJPEVIH.js +0 -40
  96. package/dist/chunk-O7QFYWMK.js +0 -4907
@@ -5,7 +5,7 @@ var classVarianceAuthority = require('class-variance-authority');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
7
7
  var alertVariants = classVarianceAuthority.cva(
8
- "relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border border-border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
8
+ "border-border relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
9
9
  {
10
10
  variants: {
11
11
  variant: {
@@ -12,10 +12,10 @@ var fieldVariants = cva("group/field data-[invalid=true]:text-error flex w-full
12
12
  horizontal: [
13
13
  "flex-row items-center",
14
14
  "[&>[data-slot=field-label]]:flex-auto",
15
- "has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start"
15
+ "has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
16
16
  ],
17
17
  responsive: [
18
- "@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto",
18
+ "flex-col @md/field-group:flex-row @md/field-group:items-center [&>*]:w-full @md/field-group:[&>*]:w-auto [&>.sr-only]:w-auto",
19
19
  "@md/field-group:[&>[data-slot=field-label]]:flex-auto",
20
20
  "@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
21
21
  ]
@@ -5,7 +5,7 @@ import { cva } from 'class-variance-authority';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
7
7
  var colorSwatchVariants = cva(
8
- "border-border box-border rounded border shadow-sm [background-clip:padding-box] data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
8
+ "border-border box-border rounded border [background-clip:padding-box] shadow-sm data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
9
9
  {
10
10
  variants: {
11
11
  size: {
@@ -3,7 +3,7 @@ import { cva } from 'class-variance-authority';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
5
5
  var alertVariants = cva(
6
- "relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border border-border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
6
+ "border-border relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
7
7
  {
8
8
  variants: {
9
9
  variant: {
@@ -7,7 +7,7 @@ function Header({ children, ...props }) {
7
7
  return /* @__PURE__ */ jsxRuntime.jsx(
8
8
  "header",
9
9
  {
10
- className: "bg-app-foreground/95 supports-[backdrop-filter]:bg-app-foreground/60 sticky top-0 z-50 w-full border-b border-gray-800 backdrop-blur",
10
+ className: "border-border/40 bg-background/95 supports-backdrop-filter:bg-background/60 sticky top-0 z-50 w-full border-b backdrop-blur",
11
11
  ...props,
12
12
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container flex h-16 items-center", children })
13
13
  }
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ var chunkH2BWO3SI_cjs = require('./chunk-H2BWO3SI.cjs');
4
+ var radixUi = require('radix-ui');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function TooltipProvider({
8
+ delayDuration = 0,
9
+ ...props
10
+ }) {
11
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Tooltip.Provider, { "data-slot": "tooltip-provider", delayDuration, ...props });
12
+ }
13
+ function Tooltip(props) {
14
+ return /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(radixUi.Tooltip.Root, { "data-slot": "tooltip", ...props }) });
15
+ }
16
+ function TooltipTrigger(props) {
17
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Tooltip.Trigger, { "data-slot": "tooltip-trigger", ...props });
18
+ }
19
+ function TooltipContent({ className, sideOffset = 0, children, ...props }) {
20
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Tooltip.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
21
+ radixUi.Tooltip.Content,
22
+ {
23
+ "data-slot": "tooltip-content",
24
+ sideOffset,
25
+ className: chunkH2BWO3SI_cjs.cn(
26
+ "bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
27
+ className
28
+ ),
29
+ ...props,
30
+ children: [
31
+ children,
32
+ /* @__PURE__ */ jsxRuntime.jsx(radixUi.Tooltip.Arrow, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
33
+ ]
34
+ }
35
+ ) });
36
+ }
37
+
38
+ exports.Tooltip = Tooltip;
39
+ exports.TooltipContent = TooltipContent;
40
+ exports.TooltipTrigger = TooltipTrigger;
@@ -13,7 +13,7 @@ function DialogClose(props) {
13
13
  }
14
14
  var dialogContentVariants = cva(
15
15
  [
16
- "bg-background border-border fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-1rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded border p-6 shadow-lg duration-200",
16
+ "bg-background border-border fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-1rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded border p-6 shadow-lg duration-200",
17
17
  "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 "
18
18
  ],
19
19
  {
@@ -7,7 +7,7 @@ var classVarianceAuthority = require('class-variance-authority');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
 
9
9
  var itemVariants = classVarianceAuthority.cva(
10
- "group/item [a]:hover:bg-accent/50 [a]:transition-colors focus-visible:border-ring focus-visible:ring-ring/50 flex flex-wrap items-center rounded border border-transparent text-sm outline-none transition-colors duration-100 focus-visible:ring",
10
+ "group/item [a]:hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-ring/50 flex flex-wrap items-center rounded border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:ring [a]:transition-colors",
11
11
  {
12
12
  variants: {
13
13
  variant: {
@@ -34,10 +34,10 @@ var fieldVariants = classVarianceAuthority.cva("group/field data-[invalid=true]:
34
34
  horizontal: [
35
35
  "flex-row items-center",
36
36
  "[&>[data-slot=field-label]]:flex-auto",
37
- "has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start"
37
+ "has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
38
38
  ],
39
39
  responsive: [
40
- "@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto",
40
+ "flex-col @md/field-group:flex-row @md/field-group:items-center [&>*]:w-full @md/field-group:[&>*]:w-auto [&>.sr-only]:w-auto",
41
41
  "@md/field-group:[&>[data-slot=field-label]]:flex-auto",
42
42
  "@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
43
43
  ]
@@ -0,0 +1,176 @@
1
+ import { cn } from './chunk-ZD2QRAOX.js';
2
+ import { ChevronDownIcon, ChevronUpIcon, CheckIcon } from 'lucide-react';
3
+ import { Select as Select$1 } from 'radix-ui';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ function Select({
7
+ children,
8
+ disabled,
9
+ defaultOpen,
10
+ defaultValue,
11
+ value,
12
+ dir,
13
+ open,
14
+ form,
15
+ name,
16
+ onOpenChange,
17
+ onValueChange,
18
+ required,
19
+ autoComplete,
20
+ // value props
21
+ placeholder,
22
+ // trigger props
23
+ className,
24
+ size = "default",
25
+ invalid = false,
26
+ ...triggerProps
27
+ }) {
28
+ const rootProps = {
29
+ children,
30
+ disabled,
31
+ defaultOpen,
32
+ defaultValue,
33
+ value,
34
+ dir,
35
+ open,
36
+ form,
37
+ name,
38
+ onOpenChange,
39
+ onValueChange,
40
+ required,
41
+ autoComplete
42
+ };
43
+ return /* @__PURE__ */ jsxs(Select$1.Root, { "data-slot": "select", ...rootProps, children: [
44
+ /* @__PURE__ */ jsxs(
45
+ Select$1.Trigger,
46
+ {
47
+ "data-slot": "select-trigger",
48
+ "aria-invalid": triggerProps["aria-invalid"] || invalid ? true : void 0,
49
+ "data-size": size,
50
+ className: cn(
51
+ "border-input dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none",
52
+ "*:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2",
53
+ "disabled:cursor-not-allowed disabled:opacity-50",
54
+ "aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error",
55
+ "data-[size=default]:h-9 data-[size=sm]:h-8",
56
+ "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
57
+ "[&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
58
+ "data-[placeholder]:text-muted-foreground",
59
+ className
60
+ ),
61
+ ...triggerProps,
62
+ children: [
63
+ /* @__PURE__ */ jsx(Select$1.Value, { "data-slot": "select-value", placeholder }),
64
+ /* @__PURE__ */ jsx(Select$1.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })
65
+ ]
66
+ }
67
+ ),
68
+ children
69
+ ] });
70
+ }
71
+ function SelectContent({
72
+ className,
73
+ children,
74
+ position = "popper",
75
+ align = "center",
76
+ ...props
77
+ }) {
78
+ return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsxs(
79
+ Select$1.Content,
80
+ {
81
+ "data-slot": "select-content",
82
+ className: cn(
83
+ "bg-popover text-popover-foreground border-border relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded border shadow-sm",
84
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
85
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
86
+ className
87
+ ),
88
+ position,
89
+ align,
90
+ ...props,
91
+ children: [
92
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
93
+ /* @__PURE__ */ jsx(
94
+ Select$1.Viewport,
95
+ {
96
+ className: cn(
97
+ "p-1",
98
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
99
+ ),
100
+ children
101
+ }
102
+ ),
103
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
104
+ ]
105
+ }
106
+ ) });
107
+ }
108
+ function SelectScrollUpButton({ className, ...props }) {
109
+ return /* @__PURE__ */ jsx(
110
+ Select$1.ScrollUpButton,
111
+ {
112
+ "data-slot": "select-scroll-up-button",
113
+ className: cn("flex cursor-default items-center justify-center py-1", className),
114
+ ...props,
115
+ children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4" })
116
+ }
117
+ );
118
+ }
119
+ function SelectScrollDownButton({
120
+ className,
121
+ ...props
122
+ }) {
123
+ return /* @__PURE__ */ jsx(
124
+ Select$1.ScrollDownButton,
125
+ {
126
+ "data-slot": "select-scroll-down-button",
127
+ className: cn("flex cursor-default items-center justify-center py-1", className),
128
+ ...props,
129
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
130
+ }
131
+ );
132
+ }
133
+ function SelectGroup(props) {
134
+ return /* @__PURE__ */ jsx(Select$1.Group, { "data-slot": "select-group", ...props });
135
+ }
136
+ function SelectItem({ className, children, ...props }) {
137
+ return /* @__PURE__ */ jsxs(
138
+ Select$1.Item,
139
+ {
140
+ "data-slot": "select-item",
141
+ className: cn(
142
+ "focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
143
+ "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
144
+ "[&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
145
+ className
146
+ ),
147
+ ...props,
148
+ children: [
149
+ /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(Select$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
150
+ /* @__PURE__ */ jsx(Select$1.ItemText, { children })
151
+ ]
152
+ }
153
+ );
154
+ }
155
+ function SelectLabel({ className, ...props }) {
156
+ return /* @__PURE__ */ jsx(
157
+ Select$1.Label,
158
+ {
159
+ "data-slot": "select-label",
160
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
161
+ ...props
162
+ }
163
+ );
164
+ }
165
+ function SelectSeparator({ className, ...props }) {
166
+ return /* @__PURE__ */ jsx(
167
+ Select$1.Separator,
168
+ {
169
+ "data-slot": "select-separator",
170
+ className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
171
+ ...props
172
+ }
173
+ );
174
+ }
175
+
176
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator };
@@ -5,7 +5,7 @@ import { cva } from 'class-variance-authority';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
7
7
  var itemVariants = cva(
8
- "group/item [a]:hover:bg-accent/50 [a]:transition-colors focus-visible:border-ring focus-visible:ring-ring/50 flex flex-wrap items-center rounded border border-transparent text-sm outline-none transition-colors duration-100 focus-visible:ring",
8
+ "group/item [a]:hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-ring/50 flex flex-wrap items-center rounded border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:ring [a]:transition-colors",
9
9
  {
10
10
  variants: {
11
11
  variant: {
@@ -1,9 +1,8 @@
1
1
  import { Spinner } from './chunk-P5IUC7HJ.js';
2
- import { useComposedRefs } from './chunk-O7QFYWMK.js';
3
- import { useLazyRef, useIsomorphicLayoutEffect } from './chunk-DFD2WUOU.js';
4
2
  import { useDirection, Direction } from './chunk-H5O5L6XT.js';
3
+ import { useLazyRef, useIsomorphicLayoutEffect } from './chunk-DFD2WUOU.js';
5
4
  import { cn } from './chunk-ZD2QRAOX.js';
6
- import * as React5 from 'react';
5
+ import * as React6 from 'react';
7
6
  import { Slot } from '@radix-ui/react-slot';
8
7
  import { jsx, jsxs } from 'react/jsx-runtime';
9
8
  import { OctagonXIcon, TriangleAlertIcon, InfoIcon, CircleCheckIcon } from 'lucide-react';
@@ -37,9 +36,9 @@ var STEPPER_MAP_KEY_TO_FOCUS_INTENT = {
37
36
  };
38
37
 
39
38
  // src/components/stepper/stepper.context.tsx
40
- var StepperContext = React5.createContext(null);
39
+ var StepperContext = React6.createContext(null);
41
40
  function useStepperContext(consumerName) {
42
- const context = React5.useContext(StepperContext);
41
+ const context = React6.useContext(StepperContext);
43
42
  if (!context) {
44
43
  throw new Error(`\`${consumerName}\` must be used within \`${STEPPER_ROOT_NAME}\``);
45
44
  }
@@ -129,9 +128,9 @@ function createStepperStore(listenersRef, stateRef, onValueChange, onValueComple
129
128
  };
130
129
  return store;
131
130
  }
132
- var StepperStoreContext = React5.createContext(null);
131
+ var StepperStoreContext = React6.createContext(null);
133
132
  function useStepperStoreContext(consumerName) {
134
- const context = React5.useContext(StepperStoreContext);
133
+ const context = React6.useContext(StepperStoreContext);
135
134
  if (!context) {
136
135
  throw new Error(`\`${consumerName}\` must be used within \`${STEPPER_ROOT_NAME}\``);
137
136
  }
@@ -139,8 +138,8 @@ function useStepperStoreContext(consumerName) {
139
138
  }
140
139
  function useStepperStore(selector) {
141
140
  const store = useStepperStoreContext("useStore");
142
- const getSnapshot = React5.useCallback(() => selector(store.getState()), [selector, store]);
143
- return React5.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);
141
+ const getSnapshot = React6.useCallback(() => selector(store.getState()), [selector, store]);
142
+ return React6.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);
144
143
  }
145
144
  function Stepper({
146
145
  value,
@@ -162,14 +161,14 @@ function Stepper({
162
161
  indicators = {},
163
162
  ...rootProps
164
163
  }) {
165
- const id = React5.useId();
164
+ const id = React6.useId();
166
165
  const rootId = idProp ?? id;
167
166
  const listenersRef = useLazyRef(() => /* @__PURE__ */ new Set());
168
167
  const stateRef = useLazyRef(() => ({
169
168
  steps: /* @__PURE__ */ new Map(),
170
169
  value: value ?? defaultValue
171
170
  }));
172
- const store = React5.useMemo(
171
+ const store = React6.useMemo(
173
172
  () => createStepperStore(listenersRef, stateRef, onValueChange, onValueComplete, onValueAdd, onValueRemove, onValidate),
174
173
  [listenersRef, stateRef, onValueChange, onValueComplete, onValueAdd, onValueRemove, onValidate]
175
174
  );
@@ -179,7 +178,7 @@ function Stepper({
179
178
  }
180
179
  }, [value]);
181
180
  const dir = useDirection(dirProp);
182
- const contextValue = React5.useMemo(
181
+ const contextValue = React6.useMemo(
183
182
  () => ({
184
183
  id: rootId,
185
184
  dir,
@@ -231,14 +230,48 @@ var StepperDataState = {
231
230
  ACTIVE: "active",
232
231
  COMPLETED: "completed"
233
232
  };
234
- var StepperFocusContext = React5.createContext(null);
233
+ var StepperFocusContext = React6.createContext(null);
235
234
  function useStepperFocusContext(consumerName) {
236
- const context = React5.useContext(StepperFocusContext);
235
+ const context = React6.useContext(StepperFocusContext);
237
236
  if (!context) {
238
237
  throw new Error(`\`${consumerName}\` must be used within \`FocusProvider\``);
239
238
  }
240
239
  return context;
241
240
  }
241
+ function setRef(ref, value) {
242
+ if (typeof ref === "function") {
243
+ return ref(value);
244
+ } else if (ref !== null && ref !== void 0) {
245
+ ref.current = value;
246
+ }
247
+ }
248
+ function composeRefs(...refs) {
249
+ return (node) => {
250
+ let hasCleanup = false;
251
+ const cleanups = refs.map((ref) => {
252
+ const cleanup = setRef(ref, node);
253
+ if (!hasCleanup && typeof cleanup == "function") {
254
+ hasCleanup = true;
255
+ }
256
+ return cleanup;
257
+ });
258
+ if (hasCleanup) {
259
+ return () => {
260
+ for (let i = 0; i < cleanups.length; i++) {
261
+ const cleanup = cleanups[i];
262
+ if (typeof cleanup == "function") {
263
+ cleanup();
264
+ } else {
265
+ setRef(refs[i], null);
266
+ }
267
+ }
268
+ };
269
+ }
270
+ };
271
+ }
272
+ function useComposedRefs(...refs) {
273
+ return React6.useCallback(composeRefs(...refs), refs);
274
+ }
242
275
 
243
276
  // src/components/stepper/stepper.utils.tsx
244
277
  function focusFirst(candidates, preventScroll = false) {
@@ -288,32 +321,32 @@ function StepperNav({ className, children, asChild, ref, ...listProps }) {
288
321
  const context = useStepperContext(STEPPER_NAV_NAME);
289
322
  const orientation = context.orientation;
290
323
  const currentValue = useStepperStore((state) => state.value);
291
- const [tabStopId, setTabStopId] = React5.useState(null);
292
- const [isTabbingBackOut, setIsTabbingBackOut] = React5.useState(false);
293
- const [focusableItemCount, setFocusableItemCount] = React5.useState(0);
294
- const isClickFocusRef = React5.useRef(false);
295
- const itemsRef = React5.useRef(/* @__PURE__ */ new Map());
296
- const listRef = React5.useRef(null);
324
+ const [tabStopId, setTabStopId] = React6.useState(null);
325
+ const [isTabbingBackOut, setIsTabbingBackOut] = React6.useState(false);
326
+ const [focusableItemCount, setFocusableItemCount] = React6.useState(0);
327
+ const isClickFocusRef = React6.useRef(false);
328
+ const itemsRef = React6.useRef(/* @__PURE__ */ new Map());
329
+ const listRef = React6.useRef(null);
297
330
  const composedRef = useComposedRefs(ref, listRef);
298
- const onItemFocus = React5.useCallback((tabStopId2) => {
331
+ const onItemFocus = React6.useCallback((tabStopId2) => {
299
332
  setTabStopId(tabStopId2);
300
333
  }, []);
301
- const onItemShiftTab = React5.useCallback(() => {
334
+ const onItemShiftTab = React6.useCallback(() => {
302
335
  setIsTabbingBackOut(true);
303
336
  }, []);
304
- const onFocusableItemAdd = React5.useCallback(() => {
337
+ const onFocusableItemAdd = React6.useCallback(() => {
305
338
  setFocusableItemCount((prevCount) => prevCount + 1);
306
339
  }, []);
307
- const onFocusableItemRemove = React5.useCallback(() => {
340
+ const onFocusableItemRemove = React6.useCallback(() => {
308
341
  setFocusableItemCount((prevCount) => prevCount - 1);
309
342
  }, []);
310
- const onItemRegister = React5.useCallback((item) => {
343
+ const onItemRegister = React6.useCallback((item) => {
311
344
  itemsRef.current.set(item.id, item);
312
345
  }, []);
313
- const onItemUnregister = React5.useCallback((id) => {
346
+ const onItemUnregister = React6.useCallback((id) => {
314
347
  itemsRef.current.delete(id);
315
348
  }, []);
316
- const getItems = React5.useCallback(() => {
349
+ const getItems = React6.useCallback(() => {
317
350
  return Array.from(itemsRef.current.values()).filter((item) => item.ref.current).sort((a, b) => {
318
351
  const elementA = a.ref.current;
319
352
  const elementB = b.ref.current;
@@ -328,15 +361,16 @@ function StepperNav({ className, children, asChild, ref, ...listProps }) {
328
361
  return 0;
329
362
  });
330
363
  }, []);
331
- const onBlur = React5.useCallback(
364
+ const onBlur = React6.useCallback(
332
365
  (event) => {
333
366
  listProps.onBlur?.(event);
334
367
  if (event.defaultPrevented) return;
335
368
  setIsTabbingBackOut(false);
336
369
  },
370
+ // eslint-disable-next-line react-hooks/exhaustive-deps
337
371
  [listProps.onBlur]
338
372
  );
339
- const onFocus = React5.useCallback(
373
+ const onFocus = React6.useCallback(
340
374
  (event) => {
341
375
  listProps.onFocus?.(event);
342
376
  if (event.defaultPrevented) return;
@@ -361,7 +395,7 @@ function StepperNav({ className, children, asChild, ref, ...listProps }) {
361
395
  // eslint-disable-next-line react-hooks/exhaustive-deps
362
396
  [listProps.onFocus, isTabbingBackOut, currentValue, tabStopId]
363
397
  );
364
- const onMouseDown = React5.useCallback(
398
+ const onMouseDown = React6.useCallback(
365
399
  (event) => {
366
400
  listProps.onMouseDown?.(event);
367
401
  if (event.defaultPrevented) return;
@@ -370,7 +404,7 @@ function StepperNav({ className, children, asChild, ref, ...listProps }) {
370
404
  // eslint-disable-next-line react-hooks/exhaustive-deps
371
405
  [listProps.onMouseDown]
372
406
  );
373
- const focusContextValue = React5.useMemo(
407
+ const focusContextValue = React6.useMemo(
374
408
  () => ({
375
409
  tabStopId,
376
410
  onItemFocus,
@@ -416,9 +450,9 @@ function StepperNav({ className, children, asChild, ref, ...listProps }) {
416
450
  }
417
451
  ) });
418
452
  }
419
- var StepperItemContext = React5.createContext(null);
453
+ var StepperItemContext = React6.createContext(null);
420
454
  function useStepperItemContext(consumerName) {
421
- const context = React5.useContext(StepperItemContext);
455
+ const context = React6.useContext(StepperItemContext);
422
456
  if (!context) {
423
457
  throw new Error(`\`${consumerName}\` must be used within \`${STEPPER_ITEM_NAME}\``);
424
458
  }
@@ -449,7 +483,7 @@ function StepperItem({
449
483
  const stepState = useStepperStore((state) => state.steps.get(itemValue));
450
484
  const steps = useStepperStore((state) => state.steps);
451
485
  const dataState = getDataState(value, itemValue, stepState, steps);
452
- const itemContextValue = React5.useMemo(
486
+ const itemContextValue = React6.useMemo(
453
487
  () => ({
454
488
  value: itemValue,
455
489
  stepState
@@ -511,11 +545,11 @@ function StepperTrigger({ asChild, disabled, className, ref, ...triggerProps })
511
545
  const isActive = value === itemValue;
512
546
  const isTabStop = focusContext.tabStopId === triggerId;
513
547
  const dataState = getDataState(value, itemValue, stepState, steps);
514
- const triggerRef = React5.useRef(null);
548
+ const triggerRef = React6.useRef(null);
515
549
  const composedRef = useComposedRefs(ref, triggerRef);
516
- const isArrowKeyPressedRef = React5.useRef(false);
517
- const isMouseClickRef = React5.useRef(false);
518
- React5.useEffect(() => {
550
+ const isArrowKeyPressedRef = React6.useRef(false);
551
+ const isMouseClickRef = React6.useRef(false);
552
+ React6.useEffect(() => {
519
553
  function onKeyDown2(event) {
520
554
  if (STEPPER_ARROW_KEYS.includes(event.key)) {
521
555
  isArrowKeyPressedRef.current = true;
@@ -549,7 +583,7 @@ function StepperTrigger({ asChild, disabled, className, ref, ...triggerProps })
549
583
  }
550
584
  };
551
585
  }, [focusContext, triggerId, itemValue, isTabStop, isDisabled]);
552
- const onClick = React5.useCallback(
586
+ const onClick = React6.useCallback(
553
587
  async (event) => {
554
588
  triggerProps.onClick?.(event);
555
589
  if (event.defaultPrevented) return;
@@ -563,7 +597,7 @@ function StepperTrigger({ asChild, disabled, className, ref, ...triggerProps })
563
597
  // eslint-disable-next-line react-hooks/exhaustive-deps
564
598
  [isDisabled, context.nonInteractive, store, itemValue, value, steps, triggerProps.onClick]
565
599
  );
566
- const onFocus = React5.useCallback(
600
+ const onFocus = React6.useCallback(
567
601
  async (event) => {
568
602
  triggerProps.onFocus?.(event);
569
603
  if (event.defaultPrevented) return;
@@ -591,7 +625,7 @@ function StepperTrigger({ asChild, disabled, className, ref, ...triggerProps })
591
625
  store
592
626
  ]
593
627
  );
594
- const onKeyDown = React5.useCallback(
628
+ const onKeyDown = React6.useCallback(
595
629
  async (event) => {
596
630
  triggerProps.onKeyDown?.(event);
597
631
  if (event.defaultPrevented) return;
@@ -645,6 +679,7 @@ function StepperTrigger({ asChild, disabled, className, ref, ...triggerProps })
645
679
  queueMicrotask(() => focusFirst(candidateRefs));
646
680
  }
647
681
  },
682
+ // eslint-disable-next-line react-hooks/exhaustive-deps
648
683
  [
649
684
  focusContext,
650
685
  context.nonInteractive,
@@ -660,7 +695,7 @@ function StepperTrigger({ asChild, disabled, className, ref, ...triggerProps })
660
695
  steps
661
696
  ]
662
697
  );
663
- const onMouseDown = React5.useCallback(
698
+ const onMouseDown = React6.useCallback(
664
699
  (event) => {
665
700
  triggerProps.onMouseDown?.(event);
666
701
  if (event.defaultPrevented) {
@@ -821,7 +856,7 @@ function StepperNextTrigger({ asChild = false, onClick, disabled, ...props }) {
821
856
  const stepKeys = Array.from(steps.keys());
822
857
  const currentIndex = value ? stepKeys.indexOf(value) : -1;
823
858
  const isDisabled = disabled || currentIndex >= stepKeys.length - 1;
824
- const handleClick = React5.useCallback(
859
+ const handleClick = React6.useCallback(
825
860
  async (event) => {
826
861
  onClick?.(event);
827
862
  if (event.defaultPrevented || isDisabled) {
@@ -854,7 +889,7 @@ function StepperPrevTrigger({ asChild = false, disabled, onClick, ...props }) {
854
889
  const stepKeys = Array.from(steps.keys());
855
890
  const currentIndex = value ? stepKeys.indexOf(value) : -1;
856
891
  const isDisabled = disabled || currentIndex <= 0;
857
- const handleClick = React5.useCallback(
892
+ const handleClick = React6.useCallback(
858
893
  async (event) => {
859
894
  onClick?.(event);
860
895
  if (event.defaultPrevented || isDisabled) {
@@ -905,9 +940,9 @@ var Toaster = ({ theme = "system", ...props }) => {
905
940
  };
906
941
  var buttonVariants = cva(
907
942
  [
908
- "inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded text-sm font-medium outline-none transition-all",
943
+ "inline-flex shrink-0 items-center justify-center gap-2 rounded text-sm font-medium whitespace-nowrap transition-all outline-none",
909
944
  "disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50",
910
- "[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
945
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
911
946
  "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring",
912
947
  "aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error"
913
948
  ],
@@ -916,7 +951,7 @@ var buttonVariants = cva(
916
951
  variant: {
917
952
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
918
953
  error: "bg-error hover:bg-error/90 focus-visible:ring-error/20 dark:focus-visible:ring-error/40 dark:bg-error/60 text-white",
919
- outline: "bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 border",
954
+ outline: "bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 border shadow-xs",
920
955
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
921
956
  ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
922
957
  link: "text-primary underline-offset-4 hover:underline"
@@ -1001,15 +1036,15 @@ function ButtonContent({
1001
1036
  const isEndLoading = loading && loadingPosition === "end";
1002
1037
  const EndIcon = isEndLoading ? /* @__PURE__ */ jsx(Spinner, { "aria-label": "Loading" }) : endIcon || null;
1003
1038
  const isCenterLoading = loading && loadingPosition === "center";
1004
- return asChild && React5.isValidElement(children) ? React5.cloneElement(
1039
+ return asChild && React6.isValidElement(children) ? React6.cloneElement(
1005
1040
  children,
1006
1041
  props,
1007
- /* @__PURE__ */ jsxs(React5.Fragment, { children: [
1042
+ /* @__PURE__ */ jsxs(React6.Fragment, { children: [
1008
1043
  StartIcon,
1009
- isCenterLoading ? /* @__PURE__ */ jsx(Spinner, { "aria-label": "Loading" }) : React5.isValidElement(children) ? children.props?.children : null,
1044
+ isCenterLoading ? /* @__PURE__ */ jsx(Spinner, { "aria-label": "Loading" }) : React6.isValidElement(children) ? children.props?.children : null,
1010
1045
  EndIcon
1011
1046
  ] })
1012
- ) : /* @__PURE__ */ jsxs(React5.Fragment, { children: [
1047
+ ) : /* @__PURE__ */ jsxs(React6.Fragment, { children: [
1013
1048
  StartIcon,
1014
1049
  isCenterLoading ? /* @__PURE__ */ jsx(Spinner, { "aria-label": "Loading" }) : children,
1015
1050
  EndIcon