@lindle/linoardo 1.0.8 → 1.0.10
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.
- package/dist/index.cjs +1061 -107
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +123 -7
- package/dist/index.d.ts +123 -7
- package/dist/index.js +1057 -107
- package/dist/index.js.map +1 -1
- package/dist/styles.css +534 -28
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as React5 from 'react';
|
|
2
2
|
import { twMerge } from 'tailwind-merge';
|
|
3
3
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
4
|
+
import { createPortal } from 'react-dom';
|
|
4
5
|
|
|
5
6
|
// src/Containment/Button/index.tsx
|
|
6
7
|
|
|
@@ -8,60 +9,90 @@ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
|
8
9
|
var iconBaseClasses = {
|
|
9
10
|
mdi: ["mdi"]
|
|
10
11
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var
|
|
14
|
-
|
|
12
|
+
var base = "btn-base focus-visible:outline-none focus-visible:ring-2 rounded-lg transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed";
|
|
13
|
+
var blackAndWhiteVariantClass = "bg-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-white";
|
|
14
|
+
var blackAndWhitePaletteClasses = {
|
|
15
|
+
solid: twMerge(blackAndWhiteVariantClass, "bg-black text-white"),
|
|
16
|
+
outline: blackAndWhiteVariantClass,
|
|
17
|
+
ghost: "bg-neutral-300 text-white",
|
|
18
|
+
text: blackAndWhiteVariantClass,
|
|
19
|
+
filled: "bg-black text-white",
|
|
20
|
+
underlined: twMerge(blackAndWhiteVariantClass, "b"),
|
|
21
|
+
rounded: blackAndWhiteVariantClass,
|
|
22
|
+
sharp: "bg-black text-white rounded-none"
|
|
23
|
+
};
|
|
15
24
|
var paletteVariantClasses = {
|
|
16
25
|
primary: {
|
|
17
26
|
solid: "bg-primary text-white hover:bg-primary/90 focus-visible:ring-primary",
|
|
27
|
+
sharp: "rounded-none bg-primary text-white hover:bg-primary/90 focus-visible:ring-primary",
|
|
18
28
|
outline: "border border-primary text-primary bg-white hover:bg-primary hover:text-white focus-visible:ring-primary",
|
|
19
|
-
ghost: "text-primary bg-primary/10 hover:bg-primary/20 focus-visible:ring-primary/40",
|
|
20
|
-
text: "bg-transparent text-primary hover:bg-primary/10 focus-visible:ring-primary/30 underline-offset-2",
|
|
21
|
-
|
|
29
|
+
ghost: "text-primary bg-primary/10 hover:bg-primary/20 focus-visible:ring-primary/40 border border-transparent",
|
|
30
|
+
text: "bg-transparent text-primary hover:bg-primary/10 focus-visible:ring-primary/30 underline-offset-2 border border-transparent",
|
|
31
|
+
filled: "bg-primary/15 text-primary border border-primary/30 hover:bg-primary/25 focus-visible:ring-primary/25",
|
|
32
|
+
underlined: "bg-transparent text-primary border border-transparent underline decoration-2 underline-offset-4 hover:bg-primary/5 focus-visible:ring-primary/25",
|
|
33
|
+
rounded: "rounded-full border border-primary/60 bg-primary/10 text-primary hover:bg-primary/20 focus-visible:ring-primary/25"
|
|
22
34
|
},
|
|
23
35
|
neutral: {
|
|
24
36
|
solid: "bg-gray-600 text-white hover:bg-gray-700 focus-visible:ring-gray-500",
|
|
37
|
+
sharp: "rounded-none bg-gray-600 text-white hover:bg-gray-700 focus-visible:ring-gray-500",
|
|
25
38
|
outline: "border border-gray-400 text-gray-700 bg-white hover:bg-gray-700 hover:text-white focus-visible:ring-gray-400",
|
|
26
|
-
ghost: "text-gray-700 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-300",
|
|
27
|
-
text: "bg-transparent text-gray-700 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2",
|
|
28
|
-
|
|
39
|
+
ghost: "text-gray-700 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-300 border border-transparent",
|
|
40
|
+
text: "bg-transparent text-gray-700 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2 border border-transparent",
|
|
41
|
+
filled: "bg-gray-200 text-gray-900 border border-gray-300 hover:bg-gray-300 focus-visible:ring-gray-300",
|
|
42
|
+
underlined: "bg-transparent text-gray-900 border border-transparent underline decoration-2 underline-offset-4 hover:bg-gray-100 focus-visible:ring-gray-300",
|
|
43
|
+
rounded: "rounded-full border border-gray-400 bg-white text-gray-800 hover:bg-gray-100 focus-visible:ring-gray-300"
|
|
29
44
|
},
|
|
30
45
|
info: {
|
|
31
46
|
solid: "bg-sky-500 text-white hover:bg-sky-600 focus-visible:ring-sky-400",
|
|
47
|
+
sharp: "rounded-none bg-sky-500 text-white hover:bg-sky-600 focus-visible:ring-sky-400",
|
|
32
48
|
outline: "border border-sky-500 text-sky-600 bg-white hover:bg-sky-500 hover:text-white focus-visible:ring-sky-400",
|
|
33
|
-
ghost: "text-sky-600 bg-sky-100 hover:bg-sky-200 focus-visible:ring-sky-300",
|
|
34
|
-
text: "bg-transparent text-sky-600 hover:bg-sky-100 focus-visible:ring-sky-200 underline-offset-2",
|
|
35
|
-
|
|
49
|
+
ghost: "text-sky-600 bg-sky-100 hover:bg-sky-200 focus-visible:ring-sky-300 border border-transparent",
|
|
50
|
+
text: "bg-transparent text-sky-600 hover:bg-sky-100 focus-visible:ring-sky-200 underline-offset-2 border border-transparent",
|
|
51
|
+
filled: "bg-sky-100 text-sky-700 border border-sky-200 hover:bg-sky-200 focus-visible:ring-sky-200",
|
|
52
|
+
underlined: "bg-transparent text-sky-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-sky-50 focus-visible:ring-sky-200",
|
|
53
|
+
rounded: "rounded-full border border-sky-500/70 bg-sky-50 text-sky-700 hover:bg-sky-100 focus-visible:ring-sky-200"
|
|
36
54
|
},
|
|
37
55
|
success: {
|
|
38
56
|
solid: "bg-emerald-500 text-white hover:bg-emerald-600 focus-visible:ring-emerald-400",
|
|
57
|
+
sharp: "rounded-none bg-emerald-500 text-white hover:bg-emerald-600 focus-visible:ring-emerald-400",
|
|
39
58
|
outline: "border border-emerald-500 text-emerald-600 bg-white hover:bg-emerald-500 hover:text-white focus-visible:ring-emerald-400",
|
|
40
|
-
ghost: "text-emerald-600 bg-emerald-100 hover:bg-emerald-200 focus-visible:ring-emerald-300",
|
|
41
|
-
text: "bg-transparent text-emerald-600 hover:bg-emerald-100 focus-visible:ring-emerald-200 underline-offset-2",
|
|
42
|
-
|
|
59
|
+
ghost: "text-emerald-600 bg-emerald-100 hover:bg-emerald-200 focus-visible:ring-emerald-300 border border-transparent",
|
|
60
|
+
text: "bg-transparent text-emerald-600 hover:bg-emerald-100 focus-visible:ring-emerald-200 underline-offset-2 border border-transparent",
|
|
61
|
+
filled: "bg-emerald-100 text-emerald-700 border border-emerald-200 hover:bg-emerald-200 focus-visible:ring-emerald-200",
|
|
62
|
+
underlined: "bg-transparent text-emerald-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-emerald-50 focus-visible:ring-emerald-200",
|
|
63
|
+
rounded: "rounded-full border border-emerald-500/70 bg-emerald-50 text-emerald-700 hover:bg-emerald-100 focus-visible:ring-emerald-200"
|
|
43
64
|
},
|
|
44
65
|
warning: {
|
|
45
66
|
solid: "bg-amber-500 text-white hover:bg-amber-600 focus-visible:ring-amber-400",
|
|
67
|
+
sharp: "rounded-none bg-amber-500 text-white hover:bg-amber-600 focus-visible:ring-amber-400",
|
|
46
68
|
outline: "border border-amber-500 text-amber-600 bg-white hover:bg-amber-500 hover:text-white focus-visible:ring-amber-400",
|
|
47
|
-
ghost: "text-amber-600 bg-amber-100 hover:bg-amber-200 focus-visible:ring-amber-300",
|
|
48
|
-
text: "bg-transparent text-amber-600 hover:bg-amber-100 focus-visible:ring-amber-200 underline-offset-2",
|
|
49
|
-
|
|
69
|
+
ghost: "text-amber-600 bg-amber-100 hover:bg-amber-200 focus-visible:ring-amber-300 border border-transparent",
|
|
70
|
+
text: "bg-transparent text-amber-600 hover:bg-amber-100 focus-visible:ring-amber-200 underline-offset-2 border border-transparent",
|
|
71
|
+
filled: "bg-amber-100 text-amber-800 border border-amber-200 hover:bg-amber-200 focus-visible:ring-amber-200",
|
|
72
|
+
underlined: "bg-transparent text-amber-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-amber-50 focus-visible:ring-amber-200",
|
|
73
|
+
rounded: "rounded-full border border-amber-500/70 bg-amber-50 text-amber-700 hover:bg-amber-100 focus-visible:ring-amber-200"
|
|
50
74
|
},
|
|
51
75
|
danger: {
|
|
52
76
|
solid: "bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-400",
|
|
77
|
+
sharp: "rounded-none bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-400",
|
|
53
78
|
outline: "border border-red-500 text-red-600 bg-white hover:bg-red-500 hover:text-white focus-visible:ring-red-400",
|
|
54
|
-
ghost: "text-red-600 bg-red-100 hover:bg-red-200 focus-visible:ring-red-300",
|
|
55
|
-
text: "bg-transparent text-red-600 hover:bg-red-100 focus-visible:ring-red-200 underline-offset-2",
|
|
56
|
-
|
|
79
|
+
ghost: "text-red-600 bg-red-100 hover:bg-red-200 focus-visible:ring-red-300 border border-transparent",
|
|
80
|
+
text: "bg-transparent text-red-600 hover:bg-red-100 focus-visible:ring-red-200 underline-offset-2 border border-transparent",
|
|
81
|
+
filled: "bg-red-100 text-red-700 border border-red-200 hover:bg-red-200 focus-visible:ring-red-200",
|
|
82
|
+
underlined: "bg-transparent text-red-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-red-50 focus-visible:ring-red-200",
|
|
83
|
+
rounded: "rounded-full border border-red-500/70 bg-red-50 text-red-700 hover:bg-red-100 focus-visible:ring-red-200"
|
|
57
84
|
},
|
|
58
85
|
surface: {
|
|
59
86
|
solid: "bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200",
|
|
87
|
+
sharp: "rounded-none bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200",
|
|
60
88
|
outline: "border border-gray-300 text-gray-900 bg-white hover:bg-gray-100 focus-visible:ring-gray-200",
|
|
61
|
-
ghost: "text-gray-900 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-200",
|
|
62
|
-
text: "bg-transparent text-gray-900 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2",
|
|
63
|
-
|
|
64
|
-
|
|
89
|
+
ghost: "text-gray-900 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-200 border border-transparent",
|
|
90
|
+
text: "bg-transparent text-gray-900 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2 border border-transparent",
|
|
91
|
+
filled: "bg-gray-50 text-gray-900 border border-gray-200 hover:bg-white focus-visible:ring-gray-200",
|
|
92
|
+
underlined: "bg-transparent text-gray-900 border border-transparent underline decoration-2 underline-offset-4 hover:bg-gray-100 focus-visible:ring-gray-200",
|
|
93
|
+
rounded: "rounded-full border border-gray-300 bg-white text-gray-900 hover:bg-gray-50 focus-visible:ring-gray-200"
|
|
94
|
+
},
|
|
95
|
+
bw: blackAndWhitePaletteClasses
|
|
65
96
|
};
|
|
66
97
|
var resolveVariantClass = (variant, palette) => {
|
|
67
98
|
const paletteVariants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;
|
|
@@ -99,7 +130,7 @@ var sizeClasses = {
|
|
|
99
130
|
large: "px-6 py-3 text-lg",
|
|
100
131
|
"x-large": "px-7 py-3.5 text-xl"
|
|
101
132
|
};
|
|
102
|
-
var Button =
|
|
133
|
+
var Button = React5.forwardRef(
|
|
103
134
|
({
|
|
104
135
|
variant = "solid",
|
|
105
136
|
color = "primary",
|
|
@@ -134,7 +165,7 @@ var Button = React6.forwardRef(
|
|
|
134
165
|
ref,
|
|
135
166
|
onClick,
|
|
136
167
|
disabled: isDisabled,
|
|
137
|
-
className: twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className
|
|
168
|
+
className: twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className),
|
|
138
169
|
"data-loading": loading || void 0,
|
|
139
170
|
"aria-busy": loading || void 0,
|
|
140
171
|
children: [
|
|
@@ -158,56 +189,88 @@ var chipSizeClasses = {
|
|
|
158
189
|
};
|
|
159
190
|
var closeButtonClasses = "ml-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-transparent text-current/70 transition-colors duration-200 hover:bg-current/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-current/30 focus-visible:ring-offset-2";
|
|
160
191
|
var blackAndWhiteChipVariantClass = "bg-white text-black border border-black hover:bg-white focus-visible:ring-black/40 focus-visible:ring-offset-white";
|
|
192
|
+
var blackAndWhitePaletteClasses2 = {
|
|
193
|
+
solid: blackAndWhiteChipVariantClass,
|
|
194
|
+
outline: blackAndWhiteChipVariantClass,
|
|
195
|
+
ghost: blackAndWhiteChipVariantClass,
|
|
196
|
+
text: blackAndWhiteChipVariantClass,
|
|
197
|
+
filled: blackAndWhiteChipVariantClass,
|
|
198
|
+
underlined: blackAndWhiteChipVariantClass,
|
|
199
|
+
rounded: blackAndWhiteChipVariantClass,
|
|
200
|
+
sharp: `${blackAndWhiteChipVariantClass} rounded-none`
|
|
201
|
+
};
|
|
161
202
|
var paletteVariantClasses2 = {
|
|
162
203
|
primary: {
|
|
163
204
|
solid: "bg-primary text-white border border-primary hover:bg-primary/90",
|
|
205
|
+
sharp: "rounded-none bg-primary text-white border border-primary hover:bg-primary/90",
|
|
164
206
|
outline: "bg-transparent text-primary border border-primary hover:bg-primary/10",
|
|
165
207
|
ghost: "bg-primary/15 text-primary border border-transparent hover:bg-primary/25",
|
|
166
208
|
text: "bg-transparent text-primary border border-transparent hover:text-primary/80",
|
|
167
|
-
|
|
209
|
+
filled: "bg-primary/10 text-primary border border-primary/30 hover:bg-primary/20",
|
|
210
|
+
underlined: "bg-transparent text-primary border-0 border-b-2 border-primary px-0 rounded-none hover:text-primary/80",
|
|
211
|
+
rounded: "bg-white text-primary border border-primary/40 shadow-sm hover:bg-primary/5"
|
|
168
212
|
},
|
|
169
213
|
neutral: {
|
|
170
214
|
solid: "bg-gray-900 text-white border border-gray-900 hover:bg-gray-800",
|
|
215
|
+
sharp: "rounded-none bg-gray-900 text-white border border-gray-900 hover:bg-gray-800",
|
|
171
216
|
outline: "bg-transparent text-gray-900 border border-gray-500 hover:bg-gray-100",
|
|
172
217
|
ghost: "bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200",
|
|
173
218
|
text: "bg-transparent text-gray-900 border border-transparent hover:text-gray-700",
|
|
174
|
-
|
|
219
|
+
filled: "bg-gray-200 text-gray-900 border border-gray-300 hover:bg-gray-300",
|
|
220
|
+
underlined: "bg-transparent text-gray-900 border-0 border-b-2 border-gray-500 px-0 rounded-none hover:text-gray-700",
|
|
221
|
+
rounded: "bg-white text-gray-900 border border-gray-300 shadow-sm hover:bg-gray-100"
|
|
175
222
|
},
|
|
176
223
|
info: {
|
|
177
224
|
solid: "bg-sky-500 text-white border border-sky-500 hover:bg-sky-600",
|
|
225
|
+
sharp: "rounded-none bg-sky-500 text-white border border-sky-500 hover:bg-sky-600",
|
|
178
226
|
outline: "bg-transparent text-sky-600 border border-sky-500 hover:bg-sky-50",
|
|
179
227
|
ghost: "bg-sky-100 text-sky-700 border border-transparent hover:bg-sky-200",
|
|
180
228
|
text: "bg-transparent text-sky-600 border border-transparent hover:text-sky-700",
|
|
181
|
-
|
|
229
|
+
filled: "bg-sky-100 text-sky-700 border border-sky-200 hover:bg-sky-200",
|
|
230
|
+
underlined: "bg-transparent text-sky-600 border-0 border-b-2 border-sky-500 px-0 rounded-none hover:text-sky-700",
|
|
231
|
+
rounded: "bg-white text-sky-700 border border-sky-200 shadow-sm hover:bg-sky-50"
|
|
182
232
|
},
|
|
183
233
|
success: {
|
|
184
234
|
solid: "bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600",
|
|
235
|
+
sharp: "rounded-none bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600",
|
|
185
236
|
outline: "bg-transparent text-emerald-600 border border-emerald-500 hover:bg-emerald-50",
|
|
186
237
|
ghost: "bg-emerald-100 text-emerald-700 border border-transparent hover:bg-emerald-200",
|
|
187
238
|
text: "bg-transparent text-emerald-600 border border-transparent hover:text-emerald-700",
|
|
188
|
-
|
|
239
|
+
filled: "bg-emerald-100 text-emerald-700 border border-emerald-200 hover:bg-emerald-200",
|
|
240
|
+
underlined: "bg-transparent text-emerald-600 border-0 border-b-2 border-emerald-500 px-0 rounded-none hover:text-emerald-700",
|
|
241
|
+
rounded: "bg-white text-emerald-700 border border-emerald-200 shadow-sm hover:bg-emerald-50"
|
|
189
242
|
},
|
|
190
243
|
warning: {
|
|
191
244
|
solid: "bg-amber-500 text-white border border-amber-500 hover:bg-amber-600",
|
|
245
|
+
sharp: "rounded-none bg-amber-500 text-white border border-amber-500 hover:bg-amber-600",
|
|
192
246
|
outline: "bg-transparent text-amber-700 border border-amber-500 hover:bg-amber-50",
|
|
193
247
|
ghost: "bg-amber-100 text-amber-800 border border-transparent hover:bg-amber-200",
|
|
194
248
|
text: "bg-transparent text-amber-700 border border-transparent hover:text-amber-800",
|
|
195
|
-
|
|
249
|
+
filled: "bg-amber-100 text-amber-800 border border-amber-200 hover:bg-amber-200",
|
|
250
|
+
underlined: "bg-transparent text-amber-700 border-0 border-b-2 border-amber-500 px-0 rounded-none hover:text-amber-800",
|
|
251
|
+
rounded: "bg-white text-amber-700 border border-amber-200 shadow-sm hover:bg-amber-50"
|
|
196
252
|
},
|
|
197
253
|
danger: {
|
|
198
254
|
solid: "bg-red-500 text-white border border-red-500 hover:bg-red-600",
|
|
255
|
+
sharp: "rounded-none bg-red-500 text-white border border-red-500 hover:bg-red-600",
|
|
199
256
|
outline: "bg-transparent text-red-600 border border-red-500 hover:bg-red-50",
|
|
200
257
|
ghost: "bg-red-100 text-red-700 border border-transparent hover:bg-red-200",
|
|
201
258
|
text: "bg-transparent text-red-600 border border-transparent hover:text-red-700",
|
|
202
|
-
|
|
259
|
+
filled: "bg-red-100 text-red-700 border border-red-200 hover:bg-red-200",
|
|
260
|
+
underlined: "bg-transparent text-red-600 border-0 border-b-2 border-red-500 px-0 rounded-none hover:text-red-700",
|
|
261
|
+
rounded: "bg-white text-red-600 border border-red-200 shadow-sm hover:bg-red-50"
|
|
203
262
|
},
|
|
204
263
|
surface: {
|
|
205
264
|
solid: "bg-white text-gray-900 border border-gray-200 hover:bg-gray-50",
|
|
265
|
+
sharp: "rounded-none bg-white text-gray-900 border border-gray-200 hover:bg-gray-50",
|
|
206
266
|
outline: "bg-transparent text-gray-900 border border-gray-300 hover:bg-gray-50",
|
|
207
267
|
ghost: "bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200",
|
|
208
268
|
text: "bg-transparent text-gray-900 border border-transparent hover:text-gray-600",
|
|
209
|
-
|
|
210
|
-
|
|
269
|
+
filled: "bg-gray-50 text-gray-900 border border-gray-200 hover:bg-white",
|
|
270
|
+
underlined: "bg-transparent text-gray-900 border-0 border-b-2 border-gray-400 px-0 rounded-none hover:text-gray-600",
|
|
271
|
+
rounded: "bg-white text-gray-900 border border-gray-200 shadow-sm hover:bg-gray-50"
|
|
272
|
+
},
|
|
273
|
+
bw: blackAndWhitePaletteClasses2
|
|
211
274
|
};
|
|
212
275
|
var resolveVariantClass2 = (variant, palette) => {
|
|
213
276
|
const variants = paletteVariantClasses2[palette] ?? paletteVariantClasses2.primary;
|
|
@@ -238,7 +301,7 @@ var resolveIconClassName2 = (icon) => {
|
|
|
238
301
|
const normalized = iconName.startsWith("mdi-") ? iconName : `mdi-${iconName}`;
|
|
239
302
|
return Array.from(/* @__PURE__ */ new Set([...baseClasses, normalized])).join(" ");
|
|
240
303
|
};
|
|
241
|
-
var Chip =
|
|
304
|
+
var Chip = React5.forwardRef(
|
|
242
305
|
({
|
|
243
306
|
variant = "solid",
|
|
244
307
|
color = "primary",
|
|
@@ -270,7 +333,7 @@ var Chip = React6.forwardRef(
|
|
|
270
333
|
const appendIconClassName = resolveIconClassName2(appendIcon);
|
|
271
334
|
const closeIconClassName = resolveIconClassName2(closeIcon);
|
|
272
335
|
const filterIconClassName = filter && selected ? resolveIconClassName2(filterIcon) : void 0;
|
|
273
|
-
const handleClick =
|
|
336
|
+
const handleClick = React5.useCallback(
|
|
274
337
|
(event) => {
|
|
275
338
|
if (disabled) {
|
|
276
339
|
event.preventDefault();
|
|
@@ -281,7 +344,7 @@ var Chip = React6.forwardRef(
|
|
|
281
344
|
},
|
|
282
345
|
[disabled, onClick]
|
|
283
346
|
);
|
|
284
|
-
const handleKeyDown =
|
|
347
|
+
const handleKeyDown = React5.useCallback(
|
|
285
348
|
(event) => {
|
|
286
349
|
onKeyDown?.(event);
|
|
287
350
|
if (event.defaultPrevented || disabled || !interactive) {
|
|
@@ -294,7 +357,7 @@ var Chip = React6.forwardRef(
|
|
|
294
357
|
},
|
|
295
358
|
[disabled, interactive, onKeyDown]
|
|
296
359
|
);
|
|
297
|
-
const handleCloseClick =
|
|
360
|
+
const handleCloseClick = React5.useCallback(
|
|
298
361
|
(event) => {
|
|
299
362
|
event.stopPropagation();
|
|
300
363
|
if (disabled) {
|
|
@@ -305,7 +368,7 @@ var Chip = React6.forwardRef(
|
|
|
305
368
|
},
|
|
306
369
|
[disabled, onClose]
|
|
307
370
|
);
|
|
308
|
-
const handleCloseKeyDown =
|
|
371
|
+
const handleCloseKeyDown = React5.useCallback((event) => {
|
|
309
372
|
if (event.key === " " || event.key === "Enter") {
|
|
310
373
|
event.stopPropagation();
|
|
311
374
|
}
|
|
@@ -356,15 +419,6 @@ var Chip = React6.forwardRef(
|
|
|
356
419
|
);
|
|
357
420
|
Chip.displayName = "Chip";
|
|
358
421
|
var Chip_default = Chip;
|
|
359
|
-
var defaultListContext = {
|
|
360
|
-
density: "default",
|
|
361
|
-
lines: "one",
|
|
362
|
-
nav: false,
|
|
363
|
-
divided: false,
|
|
364
|
-
color: "primary"
|
|
365
|
-
};
|
|
366
|
-
var ListContext = React6.createContext(defaultListContext);
|
|
367
|
-
var useListContext = () => React6.useContext(ListContext);
|
|
368
422
|
var listItemBaseClasses = "relative flex w-full items-center gap-4 bg-transparent text-left text-sm transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white hover:bg-neutral-200";
|
|
369
423
|
var densityClasses = {
|
|
370
424
|
default: "px-4 py-3 text-base",
|
|
@@ -383,9 +437,10 @@ var accentClasses = {
|
|
|
383
437
|
success: { text: "text-emerald-600", bg: "bg-emerald-50", indicator: "bg-emerald-500" },
|
|
384
438
|
warning: { text: "text-amber-700", bg: "bg-amber-50", indicator: "bg-amber-500" },
|
|
385
439
|
danger: { text: "text-red-600", bg: "bg-red-50", indicator: "bg-red-500" },
|
|
386
|
-
surface: { text: "text-gray-900", bg: "bg-gray-100", indicator: "bg-gray-900" }
|
|
440
|
+
surface: { text: "text-gray-900", bg: "bg-gray-100", indicator: "bg-gray-900" },
|
|
441
|
+
bw: { text: "text-gray-900", bg: "bg-gray-100", indicator: "bg-gray-900" }
|
|
387
442
|
};
|
|
388
|
-
var ListItem =
|
|
443
|
+
var ListItem = React5.forwardRef((props, ref) => {
|
|
389
444
|
const {
|
|
390
445
|
component,
|
|
391
446
|
href,
|
|
@@ -402,18 +457,24 @@ var ListItem = React6.forwardRef((props, ref) => {
|
|
|
402
457
|
inset = false,
|
|
403
458
|
density: densityOverride,
|
|
404
459
|
lines: linesOverride,
|
|
460
|
+
nav: navOverride,
|
|
461
|
+
divided: dividedOverride,
|
|
462
|
+
color: colorOverride,
|
|
463
|
+
sharp: sharpOverride,
|
|
405
464
|
className,
|
|
406
465
|
children,
|
|
407
466
|
tabIndex,
|
|
408
467
|
role,
|
|
409
468
|
...rest
|
|
410
469
|
} = props;
|
|
411
|
-
const
|
|
412
|
-
const
|
|
413
|
-
const
|
|
414
|
-
const
|
|
415
|
-
const
|
|
416
|
-
const
|
|
470
|
+
const density = densityOverride ?? "default";
|
|
471
|
+
const lines = linesOverride ?? "one";
|
|
472
|
+
const nav = navOverride ?? false;
|
|
473
|
+
const divided = dividedOverride ?? false;
|
|
474
|
+
const color = colorOverride ?? "primary";
|
|
475
|
+
const sharp = sharpOverride ?? false;
|
|
476
|
+
const accent = accentClasses[color] ?? accentClasses.primary;
|
|
477
|
+
const shapeClass = divided || sharp ? "rounded-none" : "rounded-lg";
|
|
417
478
|
const Component = component ?? (href ? "a" : "div");
|
|
418
479
|
const interactive = typeof rest.onClick === "function" || Component === "a" || Component === "button";
|
|
419
480
|
const resolvedRole = role ?? "listitem";
|
|
@@ -479,10 +540,13 @@ var Item_default = ListItem;
|
|
|
479
540
|
var listBaseClasses = "flex w-full min-w-0 flex-col text-gray-900 transition-colors duration-150";
|
|
480
541
|
var listVariantClasses = {
|
|
481
542
|
solid: "bg-white border border-gray-200 shadow-sm shadow-gray-900/5",
|
|
543
|
+
sharp: "bg-white border border-gray-200 shadow-sm shadow-gray-900/5 rounded-none",
|
|
482
544
|
outline: "bg-transparent border border-gray-300",
|
|
483
545
|
ghost: "bg-gray-50 border border-transparent",
|
|
484
546
|
text: "bg-transparent border border-transparent",
|
|
485
|
-
|
|
547
|
+
filled: "bg-gray-50 border border-gray-200 shadow-inner shadow-gray-900/5",
|
|
548
|
+
underlined: "bg-transparent border border-transparent border-b border-gray-200 rounded-none",
|
|
549
|
+
rounded: "bg-white border border-gray-200 shadow-lg shadow-gray-900/10"
|
|
486
550
|
};
|
|
487
551
|
var listRoundedClasses = {
|
|
488
552
|
none: "rounded-none",
|
|
@@ -492,7 +556,14 @@ var listRoundedClasses = {
|
|
|
492
556
|
xl: "rounded-xl",
|
|
493
557
|
pill: "rounded-full"
|
|
494
558
|
};
|
|
495
|
-
var
|
|
559
|
+
var isListItemElement = (element) => {
|
|
560
|
+
if (!React5.isValidElement(element)) {
|
|
561
|
+
return false;
|
|
562
|
+
}
|
|
563
|
+
const elementType = element.type;
|
|
564
|
+
return element.type === Item_default || elementType.displayName === Item_default.displayName;
|
|
565
|
+
};
|
|
566
|
+
var List = React5.forwardRef((props, ref) => {
|
|
496
567
|
const {
|
|
497
568
|
variant = "solid",
|
|
498
569
|
density = "default",
|
|
@@ -506,37 +577,51 @@ var List = React6.forwardRef((props, ref) => {
|
|
|
506
577
|
children,
|
|
507
578
|
...rest
|
|
508
579
|
} = props;
|
|
580
|
+
const isSharpVariant = variant === "sharp";
|
|
509
581
|
const variantClass = listVariantClasses[variant] ?? listVariantClasses.solid;
|
|
510
|
-
const roundedClass = listRoundedClasses[rounded] ?? listRoundedClasses.lg;
|
|
582
|
+
const roundedClass = isSharpVariant ? "rounded-none" : listRoundedClasses[rounded] ?? listRoundedClasses.lg;
|
|
511
583
|
const dividerClass = divided ? "divide-y divide-gray-100" : void 0;
|
|
512
584
|
const gapClass = divided ? "p-0" : "gap-1 p-1";
|
|
513
585
|
const navClass = nav ? "py-1" : void 0;
|
|
514
|
-
const accentColor =
|
|
515
|
-
const
|
|
516
|
-
()
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
586
|
+
const accentColor = color;
|
|
587
|
+
const enhanceChild = (child) => {
|
|
588
|
+
if (!React5.isValidElement(child)) {
|
|
589
|
+
return child;
|
|
590
|
+
}
|
|
591
|
+
if (isListItemElement(child)) {
|
|
592
|
+
return React5.cloneElement(child, {
|
|
593
|
+
density: child.props.density ?? density,
|
|
594
|
+
lines: child.props.lines ?? lines,
|
|
595
|
+
nav: child.props.nav ?? nav,
|
|
596
|
+
divided: child.props.divided ?? divided,
|
|
597
|
+
color: child.props.color ?? accentColor,
|
|
598
|
+
sharp: child.props.sharp ?? isSharpVariant
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
if (child.props && typeof child.props === "object" && "children" in child.props) {
|
|
602
|
+
const nestedChildren = React5.Children.map(child.props.children, enhanceChild);
|
|
603
|
+
if (nestedChildren !== child.props.children) {
|
|
604
|
+
return React5.cloneElement(child, void 0, nestedChildren);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
return child;
|
|
608
|
+
};
|
|
609
|
+
const resolvedChildren = React5.Children.map(children, enhanceChild);
|
|
610
|
+
return /* @__PURE__ */ jsx(
|
|
526
611
|
"div",
|
|
527
612
|
{
|
|
528
613
|
...rest,
|
|
529
614
|
ref,
|
|
530
615
|
role: role ?? "list",
|
|
531
616
|
className: twMerge(listBaseClasses, variantClass, roundedClass, dividerClass, gapClass, navClass, className),
|
|
532
|
-
children
|
|
617
|
+
children: resolvedChildren
|
|
533
618
|
}
|
|
534
|
-
)
|
|
619
|
+
);
|
|
535
620
|
});
|
|
536
621
|
List.displayName = "List";
|
|
537
622
|
var List_default = List;
|
|
538
623
|
var isBrowser = typeof window !== "undefined";
|
|
539
|
-
var useIsomorphicLayoutEffect = isBrowser ?
|
|
624
|
+
var useIsomorphicLayoutEffect = isBrowser ? React5.useLayoutEffect : React5.useEffect;
|
|
540
625
|
var placementClasses = {
|
|
541
626
|
"bottom-start": "left-0 top-full origin-top-left",
|
|
542
627
|
bottom: "left-1/2 top-full -translate-x-1/2 origin-top",
|
|
@@ -551,7 +636,7 @@ var offsetClasses = {
|
|
|
551
636
|
};
|
|
552
637
|
var menuBaseClasses = "absolute z-50 min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0 data-[state=closed]:scale-95 data-[state=open]:opacity-100 data-[state=open]:scale-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2";
|
|
553
638
|
var overlayBaseClasses = "fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]";
|
|
554
|
-
var Menu =
|
|
639
|
+
var Menu = React5.forwardRef((props, ref) => {
|
|
555
640
|
const {
|
|
556
641
|
activator,
|
|
557
642
|
children,
|
|
@@ -573,17 +658,17 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
573
658
|
onMouseLeave: rootMouseLeave,
|
|
574
659
|
...rest
|
|
575
660
|
} = props;
|
|
576
|
-
const baseId =
|
|
661
|
+
const baseId = React5.useId();
|
|
577
662
|
const menuId = `${baseId}-menu`;
|
|
578
663
|
const activatorId = `${baseId}-activator`;
|
|
579
664
|
const isControlled = typeof openProp === "boolean";
|
|
580
|
-
const [internalOpen, setInternalOpen] =
|
|
665
|
+
const [internalOpen, setInternalOpen] = React5.useState(defaultOpen);
|
|
581
666
|
const open = isControlled ? Boolean(openProp) : internalOpen;
|
|
582
|
-
const localRootRef =
|
|
583
|
-
const menuRef =
|
|
584
|
-
const activatorRef =
|
|
585
|
-
const closeTimeoutRef =
|
|
586
|
-
const mergedRootRef =
|
|
667
|
+
const localRootRef = React5.useRef(null);
|
|
668
|
+
const menuRef = React5.useRef(null);
|
|
669
|
+
const activatorRef = React5.useRef(null);
|
|
670
|
+
const closeTimeoutRef = React5.useRef(null);
|
|
671
|
+
const mergedRootRef = React5.useCallback(
|
|
587
672
|
(node) => {
|
|
588
673
|
localRootRef.current = node;
|
|
589
674
|
if (typeof ref === "function") {
|
|
@@ -594,8 +679,8 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
594
679
|
},
|
|
595
680
|
[ref]
|
|
596
681
|
);
|
|
597
|
-
const [activatorWidth, setActivatorWidth] =
|
|
598
|
-
const updateActivatorWidth =
|
|
682
|
+
const [activatorWidth, setActivatorWidth] = React5.useState();
|
|
683
|
+
const updateActivatorWidth = React5.useCallback(() => {
|
|
599
684
|
if (!matchActivatorWidth) {
|
|
600
685
|
setActivatorWidth(void 0);
|
|
601
686
|
return;
|
|
@@ -618,7 +703,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
618
703
|
observer.observe(activatorRef.current);
|
|
619
704
|
return () => observer.disconnect();
|
|
620
705
|
}, [matchActivatorWidth, updateActivatorWidth]);
|
|
621
|
-
const setOpen =
|
|
706
|
+
const setOpen = React5.useCallback(
|
|
622
707
|
(nextOpen) => {
|
|
623
708
|
if (disabled || open === nextOpen) {
|
|
624
709
|
return;
|
|
@@ -630,7 +715,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
630
715
|
},
|
|
631
716
|
[disabled, isControlled, onOpenChange, open]
|
|
632
717
|
);
|
|
633
|
-
|
|
718
|
+
React5.useEffect(() => {
|
|
634
719
|
if (!disabled || !open) {
|
|
635
720
|
return;
|
|
636
721
|
}
|
|
@@ -639,7 +724,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
639
724
|
}
|
|
640
725
|
onOpenChange?.(false);
|
|
641
726
|
}, [disabled, open, isControlled, onOpenChange]);
|
|
642
|
-
|
|
727
|
+
React5.useEffect(() => {
|
|
643
728
|
if (!open) {
|
|
644
729
|
return;
|
|
645
730
|
}
|
|
@@ -667,7 +752,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
667
752
|
document.removeEventListener("keydown", handleKeyDown);
|
|
668
753
|
};
|
|
669
754
|
}, [open, setOpen]);
|
|
670
|
-
|
|
755
|
+
React5.useEffect(() => {
|
|
671
756
|
if (!open) {
|
|
672
757
|
return;
|
|
673
758
|
}
|
|
@@ -680,7 +765,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
680
765
|
});
|
|
681
766
|
return () => window.cancelAnimationFrame(id);
|
|
682
767
|
}, [open]);
|
|
683
|
-
const setActivatorNode =
|
|
768
|
+
const setActivatorNode = React5.useCallback(
|
|
684
769
|
(node) => {
|
|
685
770
|
activatorRef.current = node;
|
|
686
771
|
if (node && matchActivatorWidth) {
|
|
@@ -689,7 +774,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
689
774
|
},
|
|
690
775
|
[matchActivatorWidth]
|
|
691
776
|
);
|
|
692
|
-
const handleActivatorClick =
|
|
777
|
+
const handleActivatorClick = React5.useCallback(
|
|
693
778
|
(event) => {
|
|
694
779
|
event.preventDefault();
|
|
695
780
|
if (disabled) {
|
|
@@ -699,7 +784,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
699
784
|
},
|
|
700
785
|
[disabled, open, setOpen]
|
|
701
786
|
);
|
|
702
|
-
const handleActivatorKeyDown =
|
|
787
|
+
const handleActivatorKeyDown = React5.useCallback(
|
|
703
788
|
(event) => {
|
|
704
789
|
if (event.key === "Enter" || event.key === " ") {
|
|
705
790
|
event.preventDefault();
|
|
@@ -712,7 +797,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
712
797
|
},
|
|
713
798
|
[open, setOpen]
|
|
714
799
|
);
|
|
715
|
-
const clearCloseTimeout =
|
|
800
|
+
const clearCloseTimeout = React5.useCallback(() => {
|
|
716
801
|
if (closeTimeoutRef.current !== null) {
|
|
717
802
|
if (isBrowser) {
|
|
718
803
|
window.clearTimeout(closeTimeoutRef.current);
|
|
@@ -720,7 +805,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
720
805
|
closeTimeoutRef.current = null;
|
|
721
806
|
}
|
|
722
807
|
}, []);
|
|
723
|
-
const scheduleClose =
|
|
808
|
+
const scheduleClose = React5.useCallback(() => {
|
|
724
809
|
if (!isBrowser) {
|
|
725
810
|
setOpen(false);
|
|
726
811
|
return;
|
|
@@ -731,10 +816,10 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
731
816
|
closeTimeoutRef.current = null;
|
|
732
817
|
}, 150);
|
|
733
818
|
}, [clearCloseTimeout, setOpen]);
|
|
734
|
-
|
|
819
|
+
React5.useEffect(() => {
|
|
735
820
|
return () => clearCloseTimeout();
|
|
736
821
|
}, [clearCloseTimeout]);
|
|
737
|
-
const isMovingWithinMenu =
|
|
822
|
+
const isMovingWithinMenu = React5.useCallback(
|
|
738
823
|
(event) => {
|
|
739
824
|
const nextTarget = event.relatedTarget;
|
|
740
825
|
if (!nextTarget || !localRootRef.current) {
|
|
@@ -744,7 +829,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
744
829
|
},
|
|
745
830
|
[localRootRef]
|
|
746
831
|
);
|
|
747
|
-
const handleRootMouseEnter =
|
|
832
|
+
const handleRootMouseEnter = React5.useCallback(
|
|
748
833
|
(event) => {
|
|
749
834
|
rootMouseEnter?.(event);
|
|
750
835
|
if (event.defaultPrevented) {
|
|
@@ -757,7 +842,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
757
842
|
},
|
|
758
843
|
[clearCloseTimeout, openOnHover, rootMouseEnter, setOpen]
|
|
759
844
|
);
|
|
760
|
-
const handleRootMouseLeave =
|
|
845
|
+
const handleRootMouseLeave = React5.useCallback(
|
|
761
846
|
(event) => {
|
|
762
847
|
rootMouseLeave?.(event);
|
|
763
848
|
if (event.defaultPrevented) {
|
|
@@ -772,7 +857,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
772
857
|
},
|
|
773
858
|
[isMovingWithinMenu, openOnHover, rootMouseLeave, scheduleClose]
|
|
774
859
|
);
|
|
775
|
-
const handleActivatorMouseEnter =
|
|
860
|
+
const handleActivatorMouseEnter = React5.useCallback(
|
|
776
861
|
(_event) => {
|
|
777
862
|
if (disabled) {
|
|
778
863
|
return;
|
|
@@ -782,7 +867,7 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
782
867
|
},
|
|
783
868
|
[clearCloseTimeout, disabled, setOpen]
|
|
784
869
|
);
|
|
785
|
-
const handleActivatorMouseLeave =
|
|
870
|
+
const handleActivatorMouseLeave = React5.useCallback(
|
|
786
871
|
(event) => {
|
|
787
872
|
if (disabled || !openOnHover) {
|
|
788
873
|
return;
|
|
@@ -903,6 +988,847 @@ var Menu = React6.forwardRef((props, ref) => {
|
|
|
903
988
|
});
|
|
904
989
|
Menu.displayName = "Menu";
|
|
905
990
|
var Menu_default = Menu;
|
|
991
|
+
var ExpansionPanelContext = React5.createContext(null);
|
|
992
|
+
var densityClasses2 = {
|
|
993
|
+
comfortable: "py-5",
|
|
994
|
+
default: "py-4",
|
|
995
|
+
compact: "py-3"
|
|
996
|
+
};
|
|
997
|
+
var roundedClasses = {
|
|
998
|
+
none: "rounded-none",
|
|
999
|
+
sm: "rounded-sm",
|
|
1000
|
+
md: "rounded-md",
|
|
1001
|
+
lg: "rounded-lg",
|
|
1002
|
+
xl: "rounded-xl"
|
|
1003
|
+
};
|
|
1004
|
+
var itemVariantClasses = {
|
|
1005
|
+
elevated: "bg-white border border-gray-200 shadow-sm shadow-gray-900/5",
|
|
1006
|
+
outlined: "bg-white border border-gray-200",
|
|
1007
|
+
tonal: "bg-gray-50 border border-gray-100",
|
|
1008
|
+
plain: "bg-transparent border border-transparent"
|
|
1009
|
+
};
|
|
1010
|
+
var accentClasses2 = {
|
|
1011
|
+
primary: { text: "text-primary", bg: "bg-primary/5", border: "border-primary/30" },
|
|
1012
|
+
neutral: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" },
|
|
1013
|
+
info: { text: "text-sky-600", bg: "bg-sky-50", border: "border-sky-200" },
|
|
1014
|
+
success: { text: "text-emerald-600", bg: "bg-emerald-50", border: "border-emerald-200" },
|
|
1015
|
+
warning: { text: "text-amber-600", bg: "bg-amber-50", border: "border-amber-200" },
|
|
1016
|
+
danger: { text: "text-red-600", bg: "bg-red-50", border: "border-red-200" },
|
|
1017
|
+
surface: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" },
|
|
1018
|
+
bw: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" }
|
|
1019
|
+
};
|
|
1020
|
+
var ExpansionPanelItem = React5.forwardRef((props, ref) => {
|
|
1021
|
+
const {
|
|
1022
|
+
value,
|
|
1023
|
+
title,
|
|
1024
|
+
subtitle,
|
|
1025
|
+
text,
|
|
1026
|
+
prepend,
|
|
1027
|
+
append,
|
|
1028
|
+
expandIcon,
|
|
1029
|
+
collapseIcon,
|
|
1030
|
+
hideToggleIcon = false,
|
|
1031
|
+
headerClassName,
|
|
1032
|
+
contentClassName,
|
|
1033
|
+
className,
|
|
1034
|
+
disabled = false,
|
|
1035
|
+
children,
|
|
1036
|
+
color: colorOverride,
|
|
1037
|
+
...rest
|
|
1038
|
+
} = props;
|
|
1039
|
+
const context = React5.useContext(ExpansionPanelContext);
|
|
1040
|
+
const generatedValue = React5.useId();
|
|
1041
|
+
const panelValue = value ?? generatedValue;
|
|
1042
|
+
const density = context?.density ?? "default";
|
|
1043
|
+
const color = colorOverride ?? context?.color ?? "primary";
|
|
1044
|
+
const divider = context?.divider ?? true;
|
|
1045
|
+
const variant = context?.variant ?? "elevated";
|
|
1046
|
+
const rounded = context?.rounded ?? "lg";
|
|
1047
|
+
const accent = accentClasses2[color] ?? accentClasses2.primary;
|
|
1048
|
+
const headerId = React5.useId();
|
|
1049
|
+
const contentId = React5.useId();
|
|
1050
|
+
const [standaloneExpanded, setStandaloneExpanded] = React5.useState(false);
|
|
1051
|
+
const isExpanded = context ? context.expandedValues.includes(panelValue) : standaloneExpanded;
|
|
1052
|
+
const handleToggle = () => {
|
|
1053
|
+
if (disabled) {
|
|
1054
|
+
return;
|
|
1055
|
+
}
|
|
1056
|
+
if (context) {
|
|
1057
|
+
context.toggle(panelValue, disabled);
|
|
1058
|
+
} else {
|
|
1059
|
+
setStandaloneExpanded((prev) => !prev);
|
|
1060
|
+
}
|
|
1061
|
+
};
|
|
1062
|
+
const rootSurface = divider ? "bg-transparent border-0 shadow-none" : itemVariantClasses[variant];
|
|
1063
|
+
const shapeClass = divider ? void 0 : roundedClasses[rounded] ?? roundedClasses.lg;
|
|
1064
|
+
const densityPadding = densityClasses2[density] ?? densityClasses2.default;
|
|
1065
|
+
const disabledClass = disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer";
|
|
1066
|
+
const titleClass = isExpanded ? accent.text : void 0;
|
|
1067
|
+
const activeBorderClass = twMerge("border-l-2 border-transparent", isExpanded ? accent.border : void 0);
|
|
1068
|
+
const defaultToggleIcon = /* @__PURE__ */ jsx("i", { className: "mdi mdi-chevron-down text-lg leading-none transition-transform duration-200", "aria-hidden": true });
|
|
1069
|
+
const hasContent = Boolean(children ?? text);
|
|
1070
|
+
const contentAnimationClass = isExpanded ? "pb-5 opacity-100" : "pb-0 opacity-0";
|
|
1071
|
+
const toggleIconNode = hideToggleIcon ? null : isExpanded && collapseIcon ? collapseIcon : expandIcon ?? defaultToggleIcon;
|
|
1072
|
+
const shouldRotateDefaultIcon = !expandIcon && !collapseIcon && !hideToggleIcon;
|
|
1073
|
+
const toggleWrapperClass = twMerge(
|
|
1074
|
+
"ml-3 flex h-6 w-6 items-center justify-center text-gray-500 transition-transform duration-200",
|
|
1075
|
+
shouldRotateDefaultIcon && isExpanded ? "rotate-180" : void 0
|
|
1076
|
+
);
|
|
1077
|
+
return /* @__PURE__ */ jsxs(
|
|
1078
|
+
"div",
|
|
1079
|
+
{
|
|
1080
|
+
...rest,
|
|
1081
|
+
ref,
|
|
1082
|
+
className: twMerge(
|
|
1083
|
+
"expansion-panel-item flex flex-col overflow-hidden transition-colors duration-200",
|
|
1084
|
+
rootSurface,
|
|
1085
|
+
shapeClass,
|
|
1086
|
+
className
|
|
1087
|
+
),
|
|
1088
|
+
"data-state": isExpanded ? "open" : "closed",
|
|
1089
|
+
"data-disabled": disabled || void 0,
|
|
1090
|
+
children: [
|
|
1091
|
+
/* @__PURE__ */ jsxs(
|
|
1092
|
+
"button",
|
|
1093
|
+
{
|
|
1094
|
+
type: "button",
|
|
1095
|
+
id: headerId,
|
|
1096
|
+
onClick: handleToggle,
|
|
1097
|
+
disabled,
|
|
1098
|
+
"aria-expanded": isExpanded,
|
|
1099
|
+
"aria-controls": hasContent ? contentId : void 0,
|
|
1100
|
+
className: twMerge(
|
|
1101
|
+
"flex w-full items-center gap-4 px-4 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40",
|
|
1102
|
+
densityPadding,
|
|
1103
|
+
disabledClass,
|
|
1104
|
+
isExpanded ? accent.bg : void 0,
|
|
1105
|
+
headerClassName
|
|
1106
|
+
),
|
|
1107
|
+
"data-state": isExpanded ? "open" : "closed",
|
|
1108
|
+
children: [
|
|
1109
|
+
prepend && /* @__PURE__ */ jsx("span", { className: "flex h-10 w-10 items-center justify-center text-gray-500", children: prepend }),
|
|
1110
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5 text-left", children: [
|
|
1111
|
+
title && /* @__PURE__ */ jsx("span", { className: twMerge("truncate font-medium text-gray-900", titleClass), children: title }),
|
|
1112
|
+
subtitle && /* @__PURE__ */ jsx("span", { className: "text-sm text-gray-500", children: subtitle })
|
|
1113
|
+
] }),
|
|
1114
|
+
append && /* @__PURE__ */ jsx("span", { className: "ml-auto flex items-center gap-2 text-sm text-gray-500", children: append }),
|
|
1115
|
+
!hideToggleIcon && /* @__PURE__ */ jsx("span", { className: toggleWrapperClass, children: toggleIconNode })
|
|
1116
|
+
]
|
|
1117
|
+
}
|
|
1118
|
+
),
|
|
1119
|
+
hasContent && /* @__PURE__ */ jsx(
|
|
1120
|
+
"div",
|
|
1121
|
+
{
|
|
1122
|
+
className: "grid overflow-hidden border-t border-gray-100 transition-all duration-200 ease-in-out",
|
|
1123
|
+
style: { gridTemplateRows: isExpanded ? "1fr" : "0fr" },
|
|
1124
|
+
"aria-hidden": isExpanded ? void 0 : true,
|
|
1125
|
+
"data-state": isExpanded ? "open" : "closed",
|
|
1126
|
+
children: /* @__PURE__ */ jsx(
|
|
1127
|
+
"div",
|
|
1128
|
+
{
|
|
1129
|
+
id: contentId,
|
|
1130
|
+
role: "region",
|
|
1131
|
+
"aria-labelledby": headerId,
|
|
1132
|
+
"data-state": isExpanded ? "open" : "closed",
|
|
1133
|
+
className: twMerge(
|
|
1134
|
+
"min-h-0 px-4 pt-0 text-sm text-gray-600 transition-all duration-200",
|
|
1135
|
+
activeBorderClass,
|
|
1136
|
+
contentAnimationClass,
|
|
1137
|
+
isExpanded ? "pointer-events-auto" : "pointer-events-none",
|
|
1138
|
+
contentClassName
|
|
1139
|
+
),
|
|
1140
|
+
children: children ?? text
|
|
1141
|
+
}
|
|
1142
|
+
)
|
|
1143
|
+
}
|
|
1144
|
+
)
|
|
1145
|
+
]
|
|
1146
|
+
}
|
|
1147
|
+
);
|
|
1148
|
+
});
|
|
1149
|
+
ExpansionPanelItem.displayName = "ExpansionPanelItem";
|
|
1150
|
+
var ExpansionPanelItem_default = ExpansionPanelItem;
|
|
1151
|
+
var variantContainerClasses = {
|
|
1152
|
+
elevated: "bg-white border border-gray-200 shadow-lg shadow-gray-900/10",
|
|
1153
|
+
outlined: "bg-white border border-gray-200",
|
|
1154
|
+
tonal: "bg-gray-50 border border-gray-100",
|
|
1155
|
+
plain: "bg-transparent border border-transparent"
|
|
1156
|
+
};
|
|
1157
|
+
var roundedClasses2 = {
|
|
1158
|
+
none: "rounded-none",
|
|
1159
|
+
sm: "rounded-sm",
|
|
1160
|
+
md: "rounded-md",
|
|
1161
|
+
lg: "rounded-lg",
|
|
1162
|
+
xl: "rounded-xl"
|
|
1163
|
+
};
|
|
1164
|
+
var uniqueValues = (values) => Array.from(new Set(values));
|
|
1165
|
+
var normalizeValues = (value, allowMultiple) => {
|
|
1166
|
+
if (value === void 0 || value === null) {
|
|
1167
|
+
return [];
|
|
1168
|
+
}
|
|
1169
|
+
const normalized = Array.isArray(value) ? value : [value];
|
|
1170
|
+
if (allowMultiple) {
|
|
1171
|
+
return uniqueValues(normalized);
|
|
1172
|
+
}
|
|
1173
|
+
return normalized.length ? [normalized[0]] : [];
|
|
1174
|
+
};
|
|
1175
|
+
var clampValues = (values, allowMultiple) => allowMultiple ? uniqueValues(values) : values.length ? [values[0]] : [];
|
|
1176
|
+
var ExpansionPanel = React5.forwardRef((props, ref) => {
|
|
1177
|
+
const {
|
|
1178
|
+
variant = "elevated",
|
|
1179
|
+
rounded = "lg",
|
|
1180
|
+
density = "default",
|
|
1181
|
+
color = "primary",
|
|
1182
|
+
divider = true,
|
|
1183
|
+
multiple = false,
|
|
1184
|
+
value,
|
|
1185
|
+
defaultValue,
|
|
1186
|
+
onChange,
|
|
1187
|
+
className,
|
|
1188
|
+
children,
|
|
1189
|
+
...rest
|
|
1190
|
+
} = props;
|
|
1191
|
+
const isControlled = value !== void 0;
|
|
1192
|
+
const controlledValues = React5.useMemo(() => {
|
|
1193
|
+
if (!isControlled) {
|
|
1194
|
+
return void 0;
|
|
1195
|
+
}
|
|
1196
|
+
return normalizeValues(value, multiple);
|
|
1197
|
+
}, [isControlled, value, multiple]);
|
|
1198
|
+
const [internalValues, setInternalValues] = React5.useState(
|
|
1199
|
+
() => normalizeValues(defaultValue, multiple)
|
|
1200
|
+
);
|
|
1201
|
+
const expandedValues = controlledValues ?? internalValues;
|
|
1202
|
+
React5.useEffect(() => {
|
|
1203
|
+
if (!isControlled) {
|
|
1204
|
+
setInternalValues((prev) => clampValues(prev, multiple));
|
|
1205
|
+
}
|
|
1206
|
+
}, [multiple, isControlled]);
|
|
1207
|
+
const handleValueChange = React5.useCallback(
|
|
1208
|
+
(next) => {
|
|
1209
|
+
if (!isControlled) {
|
|
1210
|
+
setInternalValues(next);
|
|
1211
|
+
}
|
|
1212
|
+
if (onChange) {
|
|
1213
|
+
if (multiple) {
|
|
1214
|
+
onChange(next);
|
|
1215
|
+
} else {
|
|
1216
|
+
onChange(next[0] ?? null);
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
},
|
|
1220
|
+
[isControlled, multiple, onChange]
|
|
1221
|
+
);
|
|
1222
|
+
const toggle = React5.useCallback(
|
|
1223
|
+
(panelValue, disabled) => {
|
|
1224
|
+
if (disabled) {
|
|
1225
|
+
return;
|
|
1226
|
+
}
|
|
1227
|
+
const isActive = expandedValues.includes(panelValue);
|
|
1228
|
+
const next = multiple ? isActive ? expandedValues.filter((v) => v !== panelValue) : [...expandedValues, panelValue] : isActive ? [] : [panelValue];
|
|
1229
|
+
handleValueChange(next);
|
|
1230
|
+
},
|
|
1231
|
+
[expandedValues, handleValueChange, multiple]
|
|
1232
|
+
);
|
|
1233
|
+
const providerValue = React5.useMemo(
|
|
1234
|
+
() => ({ expandedValues, toggle, density, color, divider, rounded, variant }),
|
|
1235
|
+
[expandedValues, toggle, density, color, divider, rounded, variant]
|
|
1236
|
+
);
|
|
1237
|
+
const variantClass = divider ? variantContainerClasses[variant] : "bg-transparent border border-transparent shadow-none";
|
|
1238
|
+
const shapeClass = roundedClasses2[rounded] ?? roundedClasses2.lg;
|
|
1239
|
+
const layoutClass = divider ? "divide-y divide-gray-100 overflow-hidden" : "gap-4";
|
|
1240
|
+
return /* @__PURE__ */ jsx(ExpansionPanelContext.Provider, { value: providerValue, children: /* @__PURE__ */ jsx(
|
|
1241
|
+
"div",
|
|
1242
|
+
{
|
|
1243
|
+
...rest,
|
|
1244
|
+
ref,
|
|
1245
|
+
className: twMerge("expansion-panel flex w-full flex-col text-gray-900", variantClass, shapeClass, layoutClass, className),
|
|
1246
|
+
children
|
|
1247
|
+
}
|
|
1248
|
+
) });
|
|
1249
|
+
});
|
|
1250
|
+
ExpansionPanel.displayName = "ExpansionPanel";
|
|
1251
|
+
var ExpansionPanel_default = ExpansionPanel;
|
|
1252
|
+
var isBrowser2 = typeof window !== "undefined";
|
|
1253
|
+
var useIsomorphicLayoutEffect2 = isBrowser2 ? React5.useLayoutEffect : React5.useEffect;
|
|
1254
|
+
var containerBaseClasses = "fixed inset-0 z-[70] flex items-center justify-center p-4 sm:p-8 data-[state=closed]:pointer-events-none";
|
|
1255
|
+
var overlayBaseClasses2 = "absolute inset-0 bg-gray-900/55 backdrop-blur-[2px] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100";
|
|
1256
|
+
var panelWrapperClasses = "relative z-10 flex w-full max-h-[95vh] justify-center transition-transform transition-opacity duration-200 data-[state=closed]:translate-y-4 data-[state=closed]:opacity-0 data-[state=open]:translate-y-0 data-[state=open]:opacity-100";
|
|
1257
|
+
var panelBaseClasses = "pointer-events-auto w-full max-h-[90vh] overflow-auto rounded-2xl bg-white p-6 text-gray-900 shadow-2xl shadow-black/20 ring-1 ring-black/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40";
|
|
1258
|
+
var resolveSizeValue = (value) => {
|
|
1259
|
+
if (value === void 0) {
|
|
1260
|
+
return void 0;
|
|
1261
|
+
}
|
|
1262
|
+
return typeof value === "number" ? `${value}px` : value;
|
|
1263
|
+
};
|
|
1264
|
+
var Dialog = React5.forwardRef((props, forwardedRef) => {
|
|
1265
|
+
const {
|
|
1266
|
+
activator,
|
|
1267
|
+
children,
|
|
1268
|
+
open: openProp,
|
|
1269
|
+
defaultOpen = false,
|
|
1270
|
+
onOpenChange,
|
|
1271
|
+
persistent = false,
|
|
1272
|
+
closeOnEsc = true,
|
|
1273
|
+
closeOnOutsideClick = true,
|
|
1274
|
+
closeOnContentClick = false,
|
|
1275
|
+
scrim = true,
|
|
1276
|
+
keepMounted = false,
|
|
1277
|
+
fullscreen = false,
|
|
1278
|
+
maxWidth = "32rem",
|
|
1279
|
+
width,
|
|
1280
|
+
containerClassName,
|
|
1281
|
+
overlayClassName,
|
|
1282
|
+
overlayProps,
|
|
1283
|
+
scrollLock = true,
|
|
1284
|
+
disabled = false,
|
|
1285
|
+
className,
|
|
1286
|
+
style,
|
|
1287
|
+
tabIndex: tabIndexProp,
|
|
1288
|
+
role: roleProp,
|
|
1289
|
+
id: idProp,
|
|
1290
|
+
["aria-modal"]: ariaModalProp,
|
|
1291
|
+
...rest
|
|
1292
|
+
} = props;
|
|
1293
|
+
const { onClick: panelOnClick, ...panelProps } = rest;
|
|
1294
|
+
const {
|
|
1295
|
+
className: overlayPropsClassName,
|
|
1296
|
+
onPointerDown: overlayOnPointerDown,
|
|
1297
|
+
...overlayRestProps
|
|
1298
|
+
} = overlayProps ?? {};
|
|
1299
|
+
const baseId = React5.useId();
|
|
1300
|
+
const panelId = idProp ?? `${baseId}-dialog`;
|
|
1301
|
+
const activatorId = `${panelId}-activator`;
|
|
1302
|
+
const role = roleProp ?? "dialog";
|
|
1303
|
+
const resolvedTabIndex = tabIndexProp ?? -1;
|
|
1304
|
+
const isControlled = typeof openProp === "boolean";
|
|
1305
|
+
const [internalOpen, setInternalOpen] = React5.useState(defaultOpen);
|
|
1306
|
+
const open = isControlled ? Boolean(openProp) : internalOpen;
|
|
1307
|
+
const state = open ? "open" : "closed";
|
|
1308
|
+
const panelRef = React5.useRef(null);
|
|
1309
|
+
const activatorRef = React5.useRef(null);
|
|
1310
|
+
const previouslyFocusedElement = React5.useRef(null);
|
|
1311
|
+
const [mounted, setMounted] = React5.useState(false);
|
|
1312
|
+
useIsomorphicLayoutEffect2(() => {
|
|
1313
|
+
setMounted(true);
|
|
1314
|
+
}, []);
|
|
1315
|
+
const setPanelRef = React5.useCallback(
|
|
1316
|
+
(node) => {
|
|
1317
|
+
panelRef.current = node;
|
|
1318
|
+
if (typeof forwardedRef === "function") {
|
|
1319
|
+
forwardedRef(node);
|
|
1320
|
+
} else if (forwardedRef) {
|
|
1321
|
+
forwardedRef.current = node;
|
|
1322
|
+
}
|
|
1323
|
+
},
|
|
1324
|
+
[forwardedRef]
|
|
1325
|
+
);
|
|
1326
|
+
const setActivatorNode = React5.useCallback((node) => {
|
|
1327
|
+
activatorRef.current = node;
|
|
1328
|
+
}, []);
|
|
1329
|
+
const updateOpen = React5.useCallback(
|
|
1330
|
+
(nextOpen, options) => {
|
|
1331
|
+
if (disabled && nextOpen) {
|
|
1332
|
+
return;
|
|
1333
|
+
}
|
|
1334
|
+
if (!options?.force && !nextOpen && persistent) {
|
|
1335
|
+
return;
|
|
1336
|
+
}
|
|
1337
|
+
if (!isControlled) {
|
|
1338
|
+
setInternalOpen(nextOpen);
|
|
1339
|
+
}
|
|
1340
|
+
onOpenChange?.(nextOpen);
|
|
1341
|
+
},
|
|
1342
|
+
[disabled, isControlled, onOpenChange, persistent]
|
|
1343
|
+
);
|
|
1344
|
+
React5.useEffect(() => {
|
|
1345
|
+
if (!disabled || !open) {
|
|
1346
|
+
return;
|
|
1347
|
+
}
|
|
1348
|
+
updateOpen(false, { force: true });
|
|
1349
|
+
}, [disabled, open, updateOpen]);
|
|
1350
|
+
React5.useEffect(() => {
|
|
1351
|
+
if (!isBrowser2) {
|
|
1352
|
+
return;
|
|
1353
|
+
}
|
|
1354
|
+
if (open) {
|
|
1355
|
+
previouslyFocusedElement.current = document.activeElement;
|
|
1356
|
+
const node = panelRef.current;
|
|
1357
|
+
if (node) {
|
|
1358
|
+
if (!node.hasAttribute("tabindex")) {
|
|
1359
|
+
node.setAttribute("tabindex", resolvedTabIndex.toString());
|
|
1360
|
+
}
|
|
1361
|
+
requestAnimationFrame(() => node.focus({ preventScroll: true }));
|
|
1362
|
+
}
|
|
1363
|
+
return;
|
|
1364
|
+
}
|
|
1365
|
+
const previous = previouslyFocusedElement.current ?? activatorRef.current;
|
|
1366
|
+
if (previous && typeof previous.focus === "function") {
|
|
1367
|
+
previous.focus();
|
|
1368
|
+
}
|
|
1369
|
+
}, [open, resolvedTabIndex]);
|
|
1370
|
+
React5.useEffect(() => {
|
|
1371
|
+
if (!open || !closeOnEsc || persistent || !isBrowser2) {
|
|
1372
|
+
return;
|
|
1373
|
+
}
|
|
1374
|
+
const handleKeyDown = (event) => {
|
|
1375
|
+
if (event.key !== "Escape") {
|
|
1376
|
+
return;
|
|
1377
|
+
}
|
|
1378
|
+
event.stopPropagation();
|
|
1379
|
+
updateOpen(false);
|
|
1380
|
+
};
|
|
1381
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
1382
|
+
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
1383
|
+
}, [closeOnEsc, open, persistent, updateOpen]);
|
|
1384
|
+
React5.useEffect(() => {
|
|
1385
|
+
if (!scrollLock || !open || !isBrowser2) {
|
|
1386
|
+
return;
|
|
1387
|
+
}
|
|
1388
|
+
const { body, documentElement } = document;
|
|
1389
|
+
const previousOverflow = body.style.overflow;
|
|
1390
|
+
const previousPaddingRight = body.style.paddingRight;
|
|
1391
|
+
const scrollbarWidth = window.innerWidth - documentElement.clientWidth;
|
|
1392
|
+
body.style.overflow = "hidden";
|
|
1393
|
+
if (scrollbarWidth > 0) {
|
|
1394
|
+
const computedPaddingRight = parseFloat(window.getComputedStyle(body).paddingRight) || 0;
|
|
1395
|
+
body.style.paddingRight = `${computedPaddingRight + scrollbarWidth}px`;
|
|
1396
|
+
}
|
|
1397
|
+
return () => {
|
|
1398
|
+
body.style.overflow = previousOverflow;
|
|
1399
|
+
body.style.paddingRight = previousPaddingRight;
|
|
1400
|
+
};
|
|
1401
|
+
}, [open, scrollLock]);
|
|
1402
|
+
const handleOverlayPointerDown = React5.useCallback(
|
|
1403
|
+
(event) => {
|
|
1404
|
+
overlayOnPointerDown?.(event);
|
|
1405
|
+
if (event.defaultPrevented) {
|
|
1406
|
+
return;
|
|
1407
|
+
}
|
|
1408
|
+
if (!closeOnOutsideClick || event.button > 0) {
|
|
1409
|
+
return;
|
|
1410
|
+
}
|
|
1411
|
+
updateOpen(false);
|
|
1412
|
+
},
|
|
1413
|
+
[closeOnOutsideClick, overlayOnPointerDown, updateOpen]
|
|
1414
|
+
);
|
|
1415
|
+
const handleContentClick = React5.useCallback(
|
|
1416
|
+
(event) => {
|
|
1417
|
+
panelOnClick?.(event);
|
|
1418
|
+
if (event.defaultPrevented) {
|
|
1419
|
+
return;
|
|
1420
|
+
}
|
|
1421
|
+
if (closeOnContentClick) {
|
|
1422
|
+
updateOpen(false, { force: true });
|
|
1423
|
+
}
|
|
1424
|
+
},
|
|
1425
|
+
[closeOnContentClick, panelOnClick, updateOpen]
|
|
1426
|
+
);
|
|
1427
|
+
const handleActivatorClick = React5.useCallback(
|
|
1428
|
+
(event) => {
|
|
1429
|
+
if (disabled) {
|
|
1430
|
+
event.preventDefault();
|
|
1431
|
+
event.stopPropagation();
|
|
1432
|
+
return;
|
|
1433
|
+
}
|
|
1434
|
+
updateOpen(!open, { force: true });
|
|
1435
|
+
},
|
|
1436
|
+
[disabled, open, updateOpen]
|
|
1437
|
+
);
|
|
1438
|
+
const handleActivatorKeyDown = React5.useCallback(
|
|
1439
|
+
(event) => {
|
|
1440
|
+
if (event.key !== "Enter" && event.key !== " ") {
|
|
1441
|
+
return;
|
|
1442
|
+
}
|
|
1443
|
+
event.preventDefault();
|
|
1444
|
+
if (disabled) {
|
|
1445
|
+
return;
|
|
1446
|
+
}
|
|
1447
|
+
updateOpen(!open, { force: true });
|
|
1448
|
+
},
|
|
1449
|
+
[disabled, open, updateOpen]
|
|
1450
|
+
);
|
|
1451
|
+
const shouldRenderOverlay = (scrim || closeOnOutsideClick) && isBrowser2;
|
|
1452
|
+
const portalReady = mounted && isBrowser2 && (open || keepMounted);
|
|
1453
|
+
const resolvedPanelStyle = React5.useMemo(() => {
|
|
1454
|
+
const nextStyle = { ...style };
|
|
1455
|
+
if (fullscreen) {
|
|
1456
|
+
if (nextStyle.maxWidth === void 0) {
|
|
1457
|
+
nextStyle.maxWidth = "none";
|
|
1458
|
+
}
|
|
1459
|
+
if (nextStyle.width === void 0) {
|
|
1460
|
+
nextStyle.width = "100%";
|
|
1461
|
+
}
|
|
1462
|
+
if (nextStyle.height === void 0) {
|
|
1463
|
+
nextStyle.height = "100%";
|
|
1464
|
+
}
|
|
1465
|
+
if (nextStyle.maxHeight === void 0) {
|
|
1466
|
+
nextStyle.maxHeight = "100%";
|
|
1467
|
+
}
|
|
1468
|
+
} else {
|
|
1469
|
+
if (nextStyle.maxWidth === void 0) {
|
|
1470
|
+
nextStyle.maxWidth = resolveSizeValue(maxWidth);
|
|
1471
|
+
}
|
|
1472
|
+
if (width !== void 0 && nextStyle.width === void 0) {
|
|
1473
|
+
nextStyle.width = resolveSizeValue(width);
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
return nextStyle;
|
|
1477
|
+
}, [fullscreen, maxWidth, style, width]);
|
|
1478
|
+
const ariaModal = ariaModalProp ?? (role === "dialog" || role === "alertdialog" ? true : void 0);
|
|
1479
|
+
const overlayNode = shouldRenderOverlay && portalReady ? /* @__PURE__ */ jsx(
|
|
1480
|
+
"div",
|
|
1481
|
+
{
|
|
1482
|
+
...overlayRestProps,
|
|
1483
|
+
className: twMerge(
|
|
1484
|
+
overlayBaseClasses2,
|
|
1485
|
+
scrim ? void 0 : "bg-transparent backdrop-blur-none",
|
|
1486
|
+
overlayClassName,
|
|
1487
|
+
overlayPropsClassName
|
|
1488
|
+
),
|
|
1489
|
+
"data-state": state,
|
|
1490
|
+
"aria-hidden": true,
|
|
1491
|
+
onPointerDown: handleOverlayPointerDown
|
|
1492
|
+
}
|
|
1493
|
+
) : null;
|
|
1494
|
+
const dialogNode = portalReady && document.body ? createPortal(
|
|
1495
|
+
/* @__PURE__ */ jsxs("div", { className: twMerge(containerBaseClasses, containerClassName), "data-state": state, "aria-hidden": !open, children: [
|
|
1496
|
+
overlayNode,
|
|
1497
|
+
/* @__PURE__ */ jsx("div", { className: twMerge(panelWrapperClasses, fullscreen ? "h-full items-stretch" : "mx-auto"), "data-state": state, children: /* @__PURE__ */ jsx(
|
|
1498
|
+
"div",
|
|
1499
|
+
{
|
|
1500
|
+
...panelProps,
|
|
1501
|
+
ref: setPanelRef,
|
|
1502
|
+
id: panelId,
|
|
1503
|
+
role,
|
|
1504
|
+
tabIndex: resolvedTabIndex,
|
|
1505
|
+
"aria-modal": ariaModal,
|
|
1506
|
+
className: twMerge(
|
|
1507
|
+
panelBaseClasses,
|
|
1508
|
+
fullscreen ? "h-full w-full max-w-none rounded-none" : void 0,
|
|
1509
|
+
className
|
|
1510
|
+
),
|
|
1511
|
+
style: resolvedPanelStyle,
|
|
1512
|
+
"data-state": state,
|
|
1513
|
+
onClick: handleContentClick,
|
|
1514
|
+
children
|
|
1515
|
+
}
|
|
1516
|
+
) })
|
|
1517
|
+
] }),
|
|
1518
|
+
document.body
|
|
1519
|
+
) : null;
|
|
1520
|
+
const activatorNode = activator ? activator({
|
|
1521
|
+
ref: setActivatorNode,
|
|
1522
|
+
id: activatorId,
|
|
1523
|
+
disabled,
|
|
1524
|
+
open,
|
|
1525
|
+
"aria-haspopup": "dialog",
|
|
1526
|
+
"aria-expanded": open,
|
|
1527
|
+
"aria-controls": panelId,
|
|
1528
|
+
onClick: handleActivatorClick,
|
|
1529
|
+
onKeyDown: handleActivatorKeyDown
|
|
1530
|
+
}) : null;
|
|
1531
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1532
|
+
activatorNode,
|
|
1533
|
+
dialogNode
|
|
1534
|
+
] });
|
|
1535
|
+
});
|
|
1536
|
+
Dialog.displayName = "Dialog";
|
|
1537
|
+
var Dialog_default = Dialog;
|
|
1538
|
+
var tooltipBaseClasses = "absolute z-[60] max-w-xs rounded-lg border border-white/10 bg-gray-900 px-3 py-2 text-xs font-medium text-white shadow-lg shadow-black/30 ring-1 ring-black/40 transition-all duration-150 data-[state=closed]:pointer-events-none data-[state=closed]:scale-95 data-[state=closed]:opacity-0 data-[state=open]:opacity-100 data-[state=open]:scale-100";
|
|
1539
|
+
var wrapperBaseClasses = "relative inline-flex max-w-full align-middle";
|
|
1540
|
+
var arrowBaseClasses = "pointer-events-none absolute h-2 w-2 rotate-45 border border-white/10 bg-gray-900 shadow-lg shadow-black/20";
|
|
1541
|
+
var resolveSizeValue2 = (value) => {
|
|
1542
|
+
if (value === void 0) {
|
|
1543
|
+
return void 0;
|
|
1544
|
+
}
|
|
1545
|
+
return typeof value === "number" ? `${value}px` : value;
|
|
1546
|
+
};
|
|
1547
|
+
var placementClasses2 = {
|
|
1548
|
+
top: "bottom-full left-1/2 -translate-x-1/2 -translate-y-2 origin-bottom",
|
|
1549
|
+
"top-start": "bottom-full left-0 -translate-y-2 origin-bottom-left",
|
|
1550
|
+
"top-end": "bottom-full right-0 -translate-y-2 origin-bottom-right",
|
|
1551
|
+
bottom: "top-full left-1/2 -translate-x-1/2 translate-y-2 origin-top",
|
|
1552
|
+
"bottom-start": "top-full left-0 translate-y-2 origin-top-left",
|
|
1553
|
+
"bottom-end": "top-full right-0 translate-y-2 origin-top-right",
|
|
1554
|
+
left: "right-full top-1/2 -translate-y-1/2 -translate-x-2 origin-right",
|
|
1555
|
+
"left-start": "right-full top-0 -translate-x-2 origin-top-right",
|
|
1556
|
+
"left-end": "right-full bottom-0 -translate-x-2 origin-bottom-right",
|
|
1557
|
+
right: "left-full top-1/2 -translate-y-1/2 translate-x-2 origin-left",
|
|
1558
|
+
"right-start": "left-full top-0 translate-x-2 origin-top-left",
|
|
1559
|
+
"right-end": "left-full bottom-0 translate-x-2 origin-bottom-left"
|
|
1560
|
+
};
|
|
1561
|
+
var arrowPlacementClasses = {
|
|
1562
|
+
top: "left-1/2 top-full -translate-x-1/2 -translate-y-1/2",
|
|
1563
|
+
"top-start": "left-4 top-full -translate-y-1/2",
|
|
1564
|
+
"top-end": "right-4 top-full -translate-y-1/2",
|
|
1565
|
+
bottom: "left-1/2 bottom-full -translate-x-1/2 translate-y-1/2",
|
|
1566
|
+
"bottom-start": "left-4 bottom-full translate-y-1/2",
|
|
1567
|
+
"bottom-end": "right-4 bottom-full translate-y-1/2",
|
|
1568
|
+
left: "right-full top-1/2 -translate-y-1/2 translate-x-1/2",
|
|
1569
|
+
"left-start": "right-full top-4 translate-x-1/2",
|
|
1570
|
+
"left-end": "right-full bottom-4 translate-x-1/2",
|
|
1571
|
+
right: "left-full top-1/2 -translate-y-1/2 -translate-x-1/2",
|
|
1572
|
+
"right-start": "left-full top-4 -translate-x-1/2",
|
|
1573
|
+
"right-end": "left-full bottom-4 -translate-x-1/2"
|
|
1574
|
+
};
|
|
1575
|
+
var ToolTip = React5.forwardRef((props, forwardedRef) => {
|
|
1576
|
+
const {
|
|
1577
|
+
activator,
|
|
1578
|
+
children,
|
|
1579
|
+
open: openProp,
|
|
1580
|
+
defaultOpen = false,
|
|
1581
|
+
onOpenChange,
|
|
1582
|
+
placement = "top",
|
|
1583
|
+
openDelay = 120,
|
|
1584
|
+
closeDelay = 100,
|
|
1585
|
+
openOnHover = true,
|
|
1586
|
+
openOnFocus = true,
|
|
1587
|
+
openOnClick = false,
|
|
1588
|
+
interactive = false,
|
|
1589
|
+
arrow = true,
|
|
1590
|
+
disabled = false,
|
|
1591
|
+
keepMounted = false,
|
|
1592
|
+
maxWidth = "18rem",
|
|
1593
|
+
wrapperClassName,
|
|
1594
|
+
closeOnContentClick = false,
|
|
1595
|
+
className,
|
|
1596
|
+
style,
|
|
1597
|
+
id: idProp,
|
|
1598
|
+
...rest
|
|
1599
|
+
} = props;
|
|
1600
|
+
const { onPointerEnter: tooltipPointerEnter, onPointerLeave: tooltipPointerLeave, onClick: tooltipOnClick, ...tooltipProps } = rest;
|
|
1601
|
+
const baseId = React5.useId();
|
|
1602
|
+
const tooltipId = idProp ?? `${baseId}-tooltip`;
|
|
1603
|
+
const isControlled = typeof openProp === "boolean";
|
|
1604
|
+
const [internalOpen, setInternalOpen] = React5.useState(defaultOpen);
|
|
1605
|
+
const open = isControlled ? Boolean(openProp) : internalOpen;
|
|
1606
|
+
const state = open ? "open" : "closed";
|
|
1607
|
+
const describedBy = open || keepMounted ? tooltipId : void 0;
|
|
1608
|
+
const openTimeoutRef = React5.useRef(null);
|
|
1609
|
+
const closeTimeoutRef = React5.useRef(null);
|
|
1610
|
+
const clearOpenTimer = React5.useCallback(() => {
|
|
1611
|
+
if (openTimeoutRef.current !== null) {
|
|
1612
|
+
window.clearTimeout(openTimeoutRef.current);
|
|
1613
|
+
openTimeoutRef.current = null;
|
|
1614
|
+
}
|
|
1615
|
+
}, []);
|
|
1616
|
+
const clearCloseTimer = React5.useCallback(() => {
|
|
1617
|
+
if (closeTimeoutRef.current !== null) {
|
|
1618
|
+
window.clearTimeout(closeTimeoutRef.current);
|
|
1619
|
+
closeTimeoutRef.current = null;
|
|
1620
|
+
}
|
|
1621
|
+
}, []);
|
|
1622
|
+
const setOpen = React5.useCallback(
|
|
1623
|
+
(nextOpen) => {
|
|
1624
|
+
if (!isControlled) {
|
|
1625
|
+
setInternalOpen(nextOpen);
|
|
1626
|
+
}
|
|
1627
|
+
onOpenChange?.(nextOpen);
|
|
1628
|
+
},
|
|
1629
|
+
[isControlled, onOpenChange]
|
|
1630
|
+
);
|
|
1631
|
+
const scheduleOpen = React5.useCallback(
|
|
1632
|
+
(source) => {
|
|
1633
|
+
if (disabled) {
|
|
1634
|
+
return;
|
|
1635
|
+
}
|
|
1636
|
+
clearCloseTimer();
|
|
1637
|
+
const delay = source === "click" ? 0 : openDelay;
|
|
1638
|
+
if (delay <= 0) {
|
|
1639
|
+
setOpen(true);
|
|
1640
|
+
return;
|
|
1641
|
+
}
|
|
1642
|
+
openTimeoutRef.current = window.setTimeout(() => setOpen(true), delay);
|
|
1643
|
+
},
|
|
1644
|
+
[clearCloseTimer, disabled, openDelay, setOpen]
|
|
1645
|
+
);
|
|
1646
|
+
const scheduleClose = React5.useCallback(
|
|
1647
|
+
(source) => {
|
|
1648
|
+
clearOpenTimer();
|
|
1649
|
+
const delay = source === "click" ? 0 : closeDelay;
|
|
1650
|
+
if (delay <= 0) {
|
|
1651
|
+
setOpen(false);
|
|
1652
|
+
return;
|
|
1653
|
+
}
|
|
1654
|
+
closeTimeoutRef.current = window.setTimeout(() => setOpen(false), delay);
|
|
1655
|
+
},
|
|
1656
|
+
[clearOpenTimer, closeDelay, setOpen]
|
|
1657
|
+
);
|
|
1658
|
+
React5.useEffect(() => {
|
|
1659
|
+
if (!disabled) {
|
|
1660
|
+
return;
|
|
1661
|
+
}
|
|
1662
|
+
clearOpenTimer();
|
|
1663
|
+
clearCloseTimer();
|
|
1664
|
+
if (open) {
|
|
1665
|
+
setOpen(false);
|
|
1666
|
+
}
|
|
1667
|
+
}, [clearCloseTimer, clearOpenTimer, disabled, open, setOpen]);
|
|
1668
|
+
React5.useEffect(
|
|
1669
|
+
() => () => {
|
|
1670
|
+
clearOpenTimer();
|
|
1671
|
+
clearCloseTimer();
|
|
1672
|
+
},
|
|
1673
|
+
[clearCloseTimer, clearOpenTimer]
|
|
1674
|
+
);
|
|
1675
|
+
const handleActivatorPointerEnter = React5.useCallback(
|
|
1676
|
+
(event) => {
|
|
1677
|
+
if (event.pointerType === "touch") {
|
|
1678
|
+
return;
|
|
1679
|
+
}
|
|
1680
|
+
if (openOnHover) {
|
|
1681
|
+
scheduleOpen("hover");
|
|
1682
|
+
}
|
|
1683
|
+
},
|
|
1684
|
+
[openOnHover, scheduleOpen]
|
|
1685
|
+
);
|
|
1686
|
+
const handleActivatorPointerLeave = React5.useCallback(
|
|
1687
|
+
(event) => {
|
|
1688
|
+
if (event.pointerType === "touch") {
|
|
1689
|
+
return;
|
|
1690
|
+
}
|
|
1691
|
+
if (openOnHover) {
|
|
1692
|
+
scheduleClose("hover");
|
|
1693
|
+
}
|
|
1694
|
+
},
|
|
1695
|
+
[openOnHover, scheduleClose]
|
|
1696
|
+
);
|
|
1697
|
+
const handleActivatorFocus = React5.useCallback(
|
|
1698
|
+
() => {
|
|
1699
|
+
if (openOnFocus) {
|
|
1700
|
+
scheduleOpen("focus");
|
|
1701
|
+
}
|
|
1702
|
+
},
|
|
1703
|
+
[openOnFocus, scheduleOpen]
|
|
1704
|
+
);
|
|
1705
|
+
const handleActivatorBlur = React5.useCallback(
|
|
1706
|
+
() => {
|
|
1707
|
+
if (openOnFocus) {
|
|
1708
|
+
scheduleClose("focus");
|
|
1709
|
+
}
|
|
1710
|
+
},
|
|
1711
|
+
[openOnFocus, scheduleClose]
|
|
1712
|
+
);
|
|
1713
|
+
const handleActivatorClick = React5.useCallback(
|
|
1714
|
+
(event) => {
|
|
1715
|
+
if (!openOnClick) {
|
|
1716
|
+
return;
|
|
1717
|
+
}
|
|
1718
|
+
event.preventDefault();
|
|
1719
|
+
event.stopPropagation();
|
|
1720
|
+
if (disabled) {
|
|
1721
|
+
return;
|
|
1722
|
+
}
|
|
1723
|
+
if (open) {
|
|
1724
|
+
scheduleClose("click");
|
|
1725
|
+
} else {
|
|
1726
|
+
scheduleOpen("click");
|
|
1727
|
+
}
|
|
1728
|
+
},
|
|
1729
|
+
[disabled, open, openOnClick, scheduleClose, scheduleOpen]
|
|
1730
|
+
);
|
|
1731
|
+
const handleActivatorKeyDown = React5.useCallback(
|
|
1732
|
+
(event) => {
|
|
1733
|
+
if (!openOnClick) {
|
|
1734
|
+
return;
|
|
1735
|
+
}
|
|
1736
|
+
if (event.key !== "Enter" && event.key !== " ") {
|
|
1737
|
+
return;
|
|
1738
|
+
}
|
|
1739
|
+
event.preventDefault();
|
|
1740
|
+
if (open) {
|
|
1741
|
+
scheduleClose("click");
|
|
1742
|
+
} else {
|
|
1743
|
+
scheduleOpen("click");
|
|
1744
|
+
}
|
|
1745
|
+
},
|
|
1746
|
+
[open, openOnClick, scheduleClose, scheduleOpen]
|
|
1747
|
+
);
|
|
1748
|
+
const handleTooltipPointerEnter = React5.useCallback(
|
|
1749
|
+
(event) => {
|
|
1750
|
+
tooltipPointerEnter?.(event);
|
|
1751
|
+
if (event.defaultPrevented) {
|
|
1752
|
+
return;
|
|
1753
|
+
}
|
|
1754
|
+
if (interactive) {
|
|
1755
|
+
clearCloseTimer();
|
|
1756
|
+
}
|
|
1757
|
+
},
|
|
1758
|
+
[clearCloseTimer, interactive, tooltipPointerEnter]
|
|
1759
|
+
);
|
|
1760
|
+
const handleTooltipPointerLeave = React5.useCallback(
|
|
1761
|
+
(event) => {
|
|
1762
|
+
tooltipPointerLeave?.(event);
|
|
1763
|
+
if (event.defaultPrevented) {
|
|
1764
|
+
return;
|
|
1765
|
+
}
|
|
1766
|
+
if (interactive) {
|
|
1767
|
+
scheduleClose("hover");
|
|
1768
|
+
}
|
|
1769
|
+
},
|
|
1770
|
+
[interactive, scheduleClose, tooltipPointerLeave]
|
|
1771
|
+
);
|
|
1772
|
+
const handleTooltipClick = React5.useCallback(
|
|
1773
|
+
(event) => {
|
|
1774
|
+
tooltipOnClick?.(event);
|
|
1775
|
+
if (event.defaultPrevented) {
|
|
1776
|
+
return;
|
|
1777
|
+
}
|
|
1778
|
+
if (closeOnContentClick) {
|
|
1779
|
+
scheduleClose("click");
|
|
1780
|
+
}
|
|
1781
|
+
},
|
|
1782
|
+
[closeOnContentClick, scheduleClose, tooltipOnClick]
|
|
1783
|
+
);
|
|
1784
|
+
const hasRenderableContent = children !== void 0 && children !== null;
|
|
1785
|
+
const shouldRenderTooltip = hasRenderableContent && (open || keepMounted);
|
|
1786
|
+
const pointerClass = interactive ? "pointer-events-auto" : "pointer-events-none";
|
|
1787
|
+
const resolvedStyle = React5.useMemo(() => {
|
|
1788
|
+
const nextStyle = { ...style };
|
|
1789
|
+
if (nextStyle.maxWidth === void 0) {
|
|
1790
|
+
nextStyle.maxWidth = resolveSizeValue2(maxWidth);
|
|
1791
|
+
}
|
|
1792
|
+
return nextStyle;
|
|
1793
|
+
}, [maxWidth, style]);
|
|
1794
|
+
const activatorNode = activator({
|
|
1795
|
+
id: `${tooltipId}-activator`,
|
|
1796
|
+
open,
|
|
1797
|
+
disabled,
|
|
1798
|
+
"aria-describedby": describedBy,
|
|
1799
|
+
onPointerEnter: handleActivatorPointerEnter,
|
|
1800
|
+
onPointerLeave: handleActivatorPointerLeave,
|
|
1801
|
+
onFocus: handleActivatorFocus,
|
|
1802
|
+
onBlur: handleActivatorBlur,
|
|
1803
|
+
onClick: openOnClick ? handleActivatorClick : void 0,
|
|
1804
|
+
onKeyDown: openOnClick ? handleActivatorKeyDown : void 0
|
|
1805
|
+
});
|
|
1806
|
+
return /* @__PURE__ */ jsxs("span", { className: twMerge(wrapperBaseClasses, wrapperClassName), children: [
|
|
1807
|
+
activatorNode,
|
|
1808
|
+
shouldRenderTooltip && /* @__PURE__ */ jsxs(
|
|
1809
|
+
"div",
|
|
1810
|
+
{
|
|
1811
|
+
...tooltipProps,
|
|
1812
|
+
ref: forwardedRef,
|
|
1813
|
+
role: "tooltip",
|
|
1814
|
+
id: tooltipId,
|
|
1815
|
+
"aria-hidden": !open,
|
|
1816
|
+
"data-state": state,
|
|
1817
|
+
className: twMerge(tooltipBaseClasses, placementClasses2[placement], pointerClass, className),
|
|
1818
|
+
style: resolvedStyle,
|
|
1819
|
+
onPointerEnter: handleTooltipPointerEnter,
|
|
1820
|
+
onPointerLeave: handleTooltipPointerLeave,
|
|
1821
|
+
onClick: handleTooltipClick,
|
|
1822
|
+
children: [
|
|
1823
|
+
children,
|
|
1824
|
+
arrow && /* @__PURE__ */ jsx("span", { className: twMerge(arrowBaseClasses, arrowPlacementClasses[placement]), "aria-hidden": true, "data-arrow": true })
|
|
1825
|
+
]
|
|
1826
|
+
}
|
|
1827
|
+
)
|
|
1828
|
+
] });
|
|
1829
|
+
});
|
|
1830
|
+
ToolTip.displayName = "ToolTip";
|
|
1831
|
+
var ToolTip_default = ToolTip;
|
|
906
1832
|
|
|
907
1833
|
// src/Form/Input/states.input.ts
|
|
908
1834
|
var resolveIconClassName3 = (icon) => {
|
|
@@ -930,6 +1856,17 @@ var resolveIconClassName3 = (icon) => {
|
|
|
930
1856
|
const classes = [...baseClasses, normalizedName];
|
|
931
1857
|
return Array.from(new Set(classes)).join(" ");
|
|
932
1858
|
};
|
|
1859
|
+
|
|
1860
|
+
// src/utils/helpers/randomStr.ts
|
|
1861
|
+
var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
1862
|
+
function generateString(length = 5) {
|
|
1863
|
+
let result = "";
|
|
1864
|
+
const charactersLength = characters.length;
|
|
1865
|
+
for (let i = 0; i < length; i++) {
|
|
1866
|
+
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
1867
|
+
}
|
|
1868
|
+
return result;
|
|
1869
|
+
}
|
|
933
1870
|
var Input = ({
|
|
934
1871
|
variant = "outline",
|
|
935
1872
|
success,
|
|
@@ -942,9 +1879,14 @@ var Input = ({
|
|
|
942
1879
|
}) => {
|
|
943
1880
|
const classBase = "input-base px-3 py-2 focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full";
|
|
944
1881
|
const variantClasses = {
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
1882
|
+
solid: "rounded border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30",
|
|
1883
|
+
sharp: "rounded-none border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30",
|
|
1884
|
+
outline: "rounded border border-gray-300 bg-transparent focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30",
|
|
1885
|
+
text: "rounded-none border-0 border-b border-transparent px-0 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent",
|
|
1886
|
+
ghost: "rounded border border-transparent bg-gray-50 text-gray-900 focus-visible:bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/15",
|
|
1887
|
+
filled: "rounded border border-gray-200 bg-gray-100 focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/25",
|
|
1888
|
+
underlined: "rounded-none border-0 border-b border-gray-300 px-0 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent",
|
|
1889
|
+
rounded: "rounded-full px-4 border border-gray-300 bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/20 shadow-sm"
|
|
948
1890
|
};
|
|
949
1891
|
const status = error ? { tone: "error", message: error } : warn ? { tone: "warn", message: warn } : success ? { tone: "success", message: success } : void 0;
|
|
950
1892
|
const statusClasses = {
|
|
@@ -961,16 +1903,24 @@ var Input = ({
|
|
|
961
1903
|
const toneClass = status ? statusClasses[status.tone] : void 0;
|
|
962
1904
|
const prependIconClass = resolveIconClassName3(icon);
|
|
963
1905
|
const prependPadding = prependIconClass ? "pl-10" : void 0;
|
|
1906
|
+
const inputName = props.name || generateString();
|
|
964
1907
|
return /* @__PURE__ */ jsxs("div", { className: twMerge("flex flex-col gap-1", wrapperClassName), children: [
|
|
965
1908
|
/* @__PURE__ */ jsxs("div", { className: "relative flex items-center", children: [
|
|
966
1909
|
prependIconClass && /* @__PURE__ */ jsx("i", { className: twMerge("pointer-events-none absolute left-3 ", prependIconClass), "aria-hidden": true }),
|
|
967
|
-
/* @__PURE__ */ jsx(
|
|
1910
|
+
/* @__PURE__ */ jsx(
|
|
1911
|
+
"input",
|
|
1912
|
+
{
|
|
1913
|
+
...props,
|
|
1914
|
+
className: twMerge(classBase, variantClass, toneClass, prependPadding, className),
|
|
1915
|
+
name: inputName
|
|
1916
|
+
}
|
|
1917
|
+
)
|
|
968
1918
|
] }),
|
|
969
1919
|
status?.message && /* @__PURE__ */ jsx("span", { className: twMerge("text-sm", statusMessageClasses[status.tone]), children: status.message })
|
|
970
1920
|
] });
|
|
971
1921
|
};
|
|
972
1922
|
var Input_default = Input;
|
|
973
1923
|
|
|
974
|
-
export { Button_default as Button, Chip_default as Chip, Input_default as Input, List_default as List, Item_default as ListItem, Menu_default as Menu };
|
|
1924
|
+
export { Button_default as Button, Chip_default as Chip, Dialog_default as Dialog, ExpansionPanel_default as ExpansionPanel, ExpansionPanelItem_default as ExpansionPanelItem, Input_default as Input, List_default as List, Item_default as ListItem, Menu_default as Menu, ToolTip_default as ToolTip };
|
|
975
1925
|
//# sourceMappingURL=index.js.map
|
|
976
1926
|
//# sourceMappingURL=index.js.map
|