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