@lindle/linoardo 1.0.19 → 1.0.21
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/button.cjs +30 -15
- package/dist/button.cjs.map +1 -1
- package/dist/button.d.cts +17 -7
- package/dist/button.d.ts +17 -7
- package/dist/button.js +1 -1
- package/dist/card.cjs +82 -20
- package/dist/card.cjs.map +1 -1
- package/dist/card.d.cts +8 -1
- package/dist/card.d.ts +8 -1
- package/dist/card.js +1 -1
- package/dist/chip.cjs +17 -10
- package/dist/chip.cjs.map +1 -1
- package/dist/chip.d.cts +7 -4
- package/dist/chip.d.ts +7 -4
- package/dist/chip.js +1 -1
- package/dist/chunk-2UL3S6KC.js +147 -0
- package/dist/chunk-2UL3S6KC.js.map +1 -0
- package/dist/{chunk-N65GNKRG.js → chunk-5LWU5T2C.js} +48 -42
- package/dist/chunk-5LWU5T2C.js.map +1 -0
- package/dist/{chunk-XFPBICJG.js → chunk-5WQW6YSJ.js} +12 -3
- package/dist/chunk-5WQW6YSJ.js.map +1 -0
- package/dist/{chunk-5GY2JCBO.js → chunk-AK7LFJI4.js} +16 -5
- package/dist/chunk-AK7LFJI4.js.map +1 -0
- package/dist/{chunk-PWK6MLZT.js → chunk-DSZ3EOQB.js} +19 -12
- package/dist/chunk-DSZ3EOQB.js.map +1 -0
- package/dist/{chunk-AOHXZ7OM.js → chunk-GMDNSU26.js} +19 -5
- package/dist/chunk-GMDNSU26.js.map +1 -0
- package/dist/chunk-HAXGOTZO.js +94 -0
- package/dist/chunk-HAXGOTZO.js.map +1 -0
- package/dist/chunk-HEXJCQRO.js +51 -0
- package/dist/chunk-HEXJCQRO.js.map +1 -0
- package/dist/chunk-JGEXEDKS.js +168 -0
- package/dist/chunk-JGEXEDKS.js.map +1 -0
- package/dist/{chunk-GA6HSRN6.js → chunk-KRYWWWXR.js} +20 -7
- package/dist/chunk-KRYWWWXR.js.map +1 -0
- package/dist/{chunk-U6NAIIDI.js → chunk-LIEBZOLG.js} +42 -20
- package/dist/chunk-LIEBZOLG.js.map +1 -0
- package/dist/{chunk-E32P5AHO.js → chunk-LYP7V32H.js} +10 -4
- package/dist/chunk-LYP7V32H.js.map +1 -0
- package/dist/chunk-QRBJFDV5.js +170 -0
- package/dist/chunk-QRBJFDV5.js.map +1 -0
- package/dist/{chunk-SZU6OYLS.js → chunk-RFPNVLAD.js} +31 -17
- package/dist/chunk-RFPNVLAD.js.map +1 -0
- package/dist/chunk-SAGQYMS3.js +167 -0
- package/dist/chunk-SAGQYMS3.js.map +1 -0
- package/dist/{chunk-QGQ66FJD.js → chunk-T37VPLS4.js} +2 -2
- package/dist/chunk-T37VPLS4.js.map +1 -0
- package/dist/{chunk-32KFNI6K.js → chunk-U2AL7XFY.js} +48 -28
- package/dist/chunk-U2AL7XFY.js.map +1 -0
- package/dist/chunk-VPF7M2PB.js +141 -0
- package/dist/chunk-VPF7M2PB.js.map +1 -0
- package/dist/dialog.cjs +40 -18
- package/dist/dialog.cjs.map +1 -1
- package/dist/dialog.d.cts +3 -0
- package/dist/dialog.d.ts +3 -0
- package/dist/dialog.js +1 -1
- package/dist/expansion-panel/item.cjs +11 -2
- package/dist/expansion-panel/item.cjs.map +1 -1
- package/dist/expansion-panel/item.js +1 -1
- package/dist/expansion-panel.cjs +25 -6
- package/dist/expansion-panel.cjs.map +1 -1
- package/dist/expansion-panel.js +2 -2
- package/dist/hero.cjs +143 -0
- package/dist/hero.cjs.map +1 -0
- package/dist/hero.d.cts +34 -0
- package/dist/hero.d.ts +34 -0
- package/dist/hero.js +3 -0
- package/dist/hero.js.map +1 -0
- package/dist/icon.cjs +53 -0
- package/dist/icon.cjs.map +1 -0
- package/dist/icon.d.cts +15 -0
- package/dist/icon.d.ts +15 -0
- package/dist/icon.js +3 -0
- package/dist/icon.js.map +1 -0
- package/dist/{index-Md3BuoGM.d.cts → index-B5n8tN2G.d.cts} +3 -0
- package/dist/{index-d_JuI06O.d.ts → index-D4-O-oJt.d.ts} +3 -0
- package/dist/index.cjs +1013 -173
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -2
- package/dist/index.d.ts +8 -2
- package/dist/index.js +18 -13
- package/dist/input.cjs +104 -30
- package/dist/input.cjs.map +1 -1
- package/dist/input.d.cts +8 -19
- package/dist/input.d.ts +8 -19
- package/dist/input.js +1 -1
- package/dist/list/item.cjs +10 -1
- package/dist/list/item.cjs.map +1 -1
- package/dist/list/item.d.cts +1 -1
- package/dist/list/item.d.ts +1 -1
- package/dist/list/item.js +1 -1
- package/dist/list.cjs +23 -3
- package/dist/list.cjs.map +1 -1
- package/dist/list.d.cts +5 -2
- package/dist/list.d.ts +5 -2
- package/dist/list.js +2 -2
- package/dist/masonry.cjs +116 -0
- package/dist/masonry.cjs.map +1 -0
- package/dist/masonry.d.cts +45 -0
- package/dist/masonry.d.ts +45 -0
- package/dist/masonry.js +3 -0
- package/dist/masonry.js.map +1 -0
- package/dist/menu.cjs.map +1 -1
- package/dist/menu.d.cts +3 -0
- package/dist/menu.d.ts +3 -0
- package/dist/menu.js +1 -1
- package/dist/profileCard.cjs +391 -0
- package/dist/profileCard.cjs.map +1 -0
- package/dist/profileCard.d.cts +29 -0
- package/dist/profileCard.d.ts +29 -0
- package/dist/profileCard.js +5 -0
- package/dist/profileCard.js.map +1 -0
- package/dist/select.cjs +173 -0
- package/dist/select.cjs.map +1 -0
- package/dist/select.d.cts +29 -0
- package/dist/select.d.ts +29 -0
- package/dist/select.js +3 -0
- package/dist/select.js.map +1 -0
- package/dist/slider.cjs +17 -3
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.d.cts +3 -0
- package/dist/slider.d.ts +3 -0
- package/dist/slider.js +1 -1
- package/dist/styles.css +1199 -9
- package/dist/switch.cjs +46 -40
- package/dist/switch.cjs.map +1 -1
- package/dist/switch.d.cts +4 -1
- package/dist/switch.d.ts +4 -1
- package/dist/switch.js +1 -1
- package/dist/tooltip.cjs +46 -26
- package/dist/tooltip.cjs.map +1 -1
- package/dist/tooltip.d.cts +3 -0
- package/dist/tooltip.d.ts +3 -0
- package/dist/tooltip.js +1 -1
- package/dist/types-BCqIOkp1.d.cts +24 -0
- package/dist/types-ChXN4u7x.d.ts +24 -0
- package/package.json +30 -5
- package/readme.md +1 -0
- package/dist/chunk-32KFNI6K.js.map +0 -1
- package/dist/chunk-5GY2JCBO.js.map +0 -1
- package/dist/chunk-AOHXZ7OM.js.map +0 -1
- package/dist/chunk-E32P5AHO.js.map +0 -1
- package/dist/chunk-GA6HSRN6.js.map +0 -1
- package/dist/chunk-N65GNKRG.js.map +0 -1
- package/dist/chunk-PWK6MLZT.js.map +0 -1
- package/dist/chunk-PYG5SDNO.js +0 -98
- package/dist/chunk-PYG5SDNO.js.map +0 -1
- package/dist/chunk-QGQ66FJD.js.map +0 -1
- package/dist/chunk-SZU6OYLS.js.map +0 -1
- package/dist/chunk-U6NAIIDI.js.map +0 -1
- package/dist/chunk-V4BVJOSC.js +0 -85
- package/dist/chunk-V4BVJOSC.js.map +0 -1
- package/dist/chunk-XFPBICJG.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -30,17 +30,18 @@ var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
|
|
|
30
30
|
var iconBaseClasses = {
|
|
31
31
|
mdi: ["mdi"]
|
|
32
32
|
};
|
|
33
|
+
|
|
34
|
+
// src/Containment/Button/states.button.ts
|
|
33
35
|
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";
|
|
34
|
-
var blackAndWhiteVariantClass = "bg-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-white";
|
|
35
36
|
var blackAndWhitePaletteClasses = {
|
|
36
|
-
solid:
|
|
37
|
-
outline:
|
|
38
|
-
ghost: "bg-neutral-300
|
|
39
|
-
text:
|
|
40
|
-
filled: "bg-black text-
|
|
41
|
-
underlined:
|
|
42
|
-
rounded:
|
|
43
|
-
sharp: "bg-black text-white rounded-none"
|
|
37
|
+
solid: "bg-black text-white hover:bg-black/90 focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
38
|
+
outline: "border-2 border-black text-black bg-white hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
39
|
+
ghost: "text-black bg-neutral-200 hover:bg-neutral-300 focus-visible:ring-black/20 border border-transparent",
|
|
40
|
+
text: "bg-transparent text-black hover:bg-neutral-200 focus-visible:ring-black/20 underline-offset-2 border border-transparent",
|
|
41
|
+
filled: "bg-black/10 text-black border border-black/30 hover:bg-black/20 focus-visible:ring-black/20",
|
|
42
|
+
underlined: "bg-transparent text-black border border-transparent underline decoration-2 underline-offset-4 hover:bg-neutral-200 focus-visible:ring-black/20",
|
|
43
|
+
rounded: "rounded-full border-2 border-black bg-white text-black hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
44
|
+
sharp: "bg-black text-white rounded-none hover:bg-black/90 focus-visible:ring-black/40"
|
|
44
45
|
};
|
|
45
46
|
var paletteVariantClasses = {
|
|
46
47
|
primary: {
|
|
@@ -136,7 +137,9 @@ var resolveIconClassName = (icon) => {
|
|
|
136
137
|
}
|
|
137
138
|
const [library, providedName] = icon;
|
|
138
139
|
const normalizedLibrary = library.trim();
|
|
139
|
-
const baseClasses = iconBaseClasses[normalizedLibrary] ?? [
|
|
140
|
+
const baseClasses = iconBaseClasses[normalizedLibrary] ?? [
|
|
141
|
+
normalizedLibrary
|
|
142
|
+
];
|
|
140
143
|
const iconName = providedName.trim();
|
|
141
144
|
if (!iconName) {
|
|
142
145
|
return baseClasses.join(" ");
|
|
@@ -152,12 +155,19 @@ var sizeClasses = {
|
|
|
152
155
|
"x-large": "px-7 py-3.5 text-xl"
|
|
153
156
|
};
|
|
154
157
|
var iconOnlySizeClasses = {
|
|
155
|
-
"x-small": "p-
|
|
158
|
+
"x-small": "p-0 text-xs aspect-square",
|
|
156
159
|
small: "p-2.5 text-sm aspect-square",
|
|
157
160
|
medium: "p-3 text-base aspect-square",
|
|
158
161
|
large: "p-3.5 text-lg aspect-square",
|
|
159
162
|
"x-large": "p-4 text-xl aspect-square"
|
|
160
163
|
};
|
|
164
|
+
var iconOnlyIconSizeClasses = {
|
|
165
|
+
"x-small": "text-sm",
|
|
166
|
+
small: "text-base",
|
|
167
|
+
medium: "text-lg",
|
|
168
|
+
large: "text-xl",
|
|
169
|
+
"x-large": "text-2xl"
|
|
170
|
+
};
|
|
161
171
|
var Button = React3__namespace.forwardRef(
|
|
162
172
|
({
|
|
163
173
|
variant = "solid",
|
|
@@ -172,11 +182,15 @@ var Button = React3__namespace.forwardRef(
|
|
|
172
182
|
children,
|
|
173
183
|
disabled,
|
|
174
184
|
onClick,
|
|
185
|
+
as,
|
|
175
186
|
...rest
|
|
176
187
|
}, ref) => {
|
|
188
|
+
const Component = as ?? "button";
|
|
177
189
|
const variantClass = resolveVariantClass(variant, color);
|
|
178
190
|
const sizeClass = iconOnly ? iconOnlySizeClasses[size] ?? iconOnlySizeClasses.medium : sizeClasses[size] ?? sizeClasses.medium;
|
|
191
|
+
const iconSizeClass = iconOnly ? iconOnlyIconSizeClasses[size] ?? iconOnlyIconSizeClasses.medium : void 0;
|
|
179
192
|
const blockClass = block ? "w-full" : null;
|
|
193
|
+
const isNativeButton = Component === "button";
|
|
180
194
|
const isDisabled = disabled || loading;
|
|
181
195
|
const cursor = onClick && !isDisabled ? "cursor-pointer" : "cursor-default";
|
|
182
196
|
const resolvedIconClass = resolveIconClassName(icon);
|
|
@@ -185,15 +199,16 @@ var Button = React3__namespace.forwardRef(
|
|
|
185
199
|
const content = iconOnly ? null : loading && isLoadingTextProvided ? loadingText : children;
|
|
186
200
|
const hasDecorators = (loading || shouldRenderIcon) && Boolean(content);
|
|
187
201
|
const gapClass = hasDecorators ? "gap-2" : void 0;
|
|
188
|
-
const loadingIconClass = loading ? tailwindMerge.twMerge("mdi mdi-loading mdi-spin", "leading-none") : void 0;
|
|
189
|
-
const iconClassName = shouldRenderIcon ? tailwindMerge.twMerge("leading-none", resolvedIconClass) : void 0;
|
|
202
|
+
const loadingIconClass = loading ? tailwindMerge.twMerge("mdi mdi-loading mdi-spin", "leading-none", iconSizeClass) : void 0;
|
|
203
|
+
const iconClassName = shouldRenderIcon ? tailwindMerge.twMerge("leading-none", iconSizeClass, resolvedIconClass) : void 0;
|
|
190
204
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
191
|
-
|
|
205
|
+
Component,
|
|
192
206
|
{
|
|
193
207
|
...rest,
|
|
194
208
|
ref,
|
|
195
209
|
onClick,
|
|
196
|
-
disabled: isDisabled,
|
|
210
|
+
disabled: isNativeButton ? isDisabled : void 0,
|
|
211
|
+
"aria-disabled": !isNativeButton ? isDisabled : void 0,
|
|
197
212
|
className: tailwindMerge.twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className),
|
|
198
213
|
"data-loading": loading || void 0,
|
|
199
214
|
"aria-busy": loading || void 0,
|
|
@@ -217,16 +232,15 @@ var chipSizeClasses = {
|
|
|
217
232
|
large: "text-base px-5 py-2 min-h-[2.5rem]"
|
|
218
233
|
};
|
|
219
234
|
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";
|
|
220
|
-
var blackAndWhiteChipVariantClass = "bg-white text-black border border-black hover:bg-white focus-visible:ring-black/40 focus-visible:ring-offset-white";
|
|
221
235
|
var blackAndWhitePaletteClasses2 = {
|
|
222
|
-
solid:
|
|
223
|
-
outline:
|
|
224
|
-
ghost:
|
|
225
|
-
text:
|
|
226
|
-
filled:
|
|
227
|
-
underlined:
|
|
228
|
-
rounded:
|
|
229
|
-
sharp:
|
|
236
|
+
solid: "bg-black text-white border border-black hover:bg-black/90 focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
237
|
+
outline: "bg-white text-black border-2 border-black hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
238
|
+
ghost: "bg-neutral-200 text-black border border-transparent hover:bg-neutral-300 focus-visible:ring-black/20",
|
|
239
|
+
text: "bg-transparent text-black border border-transparent hover:bg-neutral-200 focus-visible:ring-black/20",
|
|
240
|
+
filled: "bg-black/10 text-black border border-black/30 hover:bg-black/20 focus-visible:ring-black/20",
|
|
241
|
+
underlined: "bg-transparent text-black border-0 border-b-2 border-black px-0 rounded-none hover:text-black/80 focus-visible:ring-black/20",
|
|
242
|
+
rounded: "rounded-full bg-white text-black border-2 border-black hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
243
|
+
sharp: "rounded-none bg-black text-white border border-black hover:bg-black/90 focus-visible:ring-black/40 focus-visible:ring-offset-white"
|
|
230
244
|
};
|
|
231
245
|
var paletteVariantClasses2 = {
|
|
232
246
|
primary: {
|
|
@@ -412,7 +426,15 @@ var Chip = React3.forwardRef(
|
|
|
412
426
|
"aria-disabled": disabled || void 0,
|
|
413
427
|
"aria-pressed": filter ? selected : void 0,
|
|
414
428
|
"data-selected": selected || void 0,
|
|
415
|
-
className: tailwindMerge.twMerge(
|
|
429
|
+
className: tailwindMerge.twMerge(
|
|
430
|
+
chipBaseClasses,
|
|
431
|
+
sizeClass,
|
|
432
|
+
pillClass,
|
|
433
|
+
variantClass,
|
|
434
|
+
cursorClass,
|
|
435
|
+
selectedClass,
|
|
436
|
+
className
|
|
437
|
+
),
|
|
416
438
|
onClick: interactive ? handleClick : void 0,
|
|
417
439
|
onKeyDown: interactive ? handleKeyDown : onKeyDown,
|
|
418
440
|
children: [
|
|
@@ -546,7 +568,16 @@ var ListItem = React3__namespace.forwardRef((props, ref) => {
|
|
|
546
568
|
prepend && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-10 w-10 shrink-0 items-center justify-center text-base text-gray-500", children: prepend }),
|
|
547
569
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-col gap-0.5 text-left", children: [
|
|
548
570
|
overline && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[0.65rem] font-semibold uppercase tracking-wide text-gray-500", children: overline }),
|
|
549
|
-
title && /* @__PURE__ */ jsxRuntime.jsx(
|
|
571
|
+
title && /* @__PURE__ */ jsxRuntime.jsx(
|
|
572
|
+
"span",
|
|
573
|
+
{
|
|
574
|
+
className: tailwindMerge.twMerge(
|
|
575
|
+
"truncate font-medium text-gray-900",
|
|
576
|
+
active ? accent.text : void 0
|
|
577
|
+
),
|
|
578
|
+
children: title
|
|
579
|
+
}
|
|
580
|
+
),
|
|
550
581
|
subtitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-gray-500", children: subtitle }),
|
|
551
582
|
children
|
|
552
583
|
] }),
|
|
@@ -619,7 +650,10 @@ var List = React3__namespace.forwardRef((props, ref) => {
|
|
|
619
650
|
});
|
|
620
651
|
}
|
|
621
652
|
if (child.props && typeof child.props === "object" && "children" in child.props) {
|
|
622
|
-
const nestedChildren = React3__namespace.Children.map(
|
|
653
|
+
const nestedChildren = React3__namespace.Children.map(
|
|
654
|
+
child.props.children,
|
|
655
|
+
enhanceChild
|
|
656
|
+
);
|
|
623
657
|
if (nestedChildren !== child.props.children) {
|
|
624
658
|
return React3__namespace.cloneElement(child, void 0, nestedChildren);
|
|
625
659
|
}
|
|
@@ -633,7 +667,15 @@ var List = React3__namespace.forwardRef((props, ref) => {
|
|
|
633
667
|
...rest,
|
|
634
668
|
ref,
|
|
635
669
|
role: role ?? "list",
|
|
636
|
-
className: tailwindMerge.twMerge(
|
|
670
|
+
className: tailwindMerge.twMerge(
|
|
671
|
+
listBaseClasses,
|
|
672
|
+
variantClass,
|
|
673
|
+
roundedClass,
|
|
674
|
+
dividerClass,
|
|
675
|
+
gapClass,
|
|
676
|
+
navClass,
|
|
677
|
+
className
|
|
678
|
+
),
|
|
637
679
|
children: resolvedChildren
|
|
638
680
|
}
|
|
639
681
|
);
|
|
@@ -819,13 +861,17 @@ var traverseNode = (node, value) => {
|
|
|
819
861
|
if (!React3.isValidElement(node)) {
|
|
820
862
|
return { node, changed: false };
|
|
821
863
|
}
|
|
822
|
-
const
|
|
823
|
-
const
|
|
864
|
+
const element = node;
|
|
865
|
+
const { node: mappedChildren, changed: childrenChanged } = traverseNode(
|
|
866
|
+
element.props.children,
|
|
867
|
+
value
|
|
868
|
+
);
|
|
869
|
+
const shouldInject = hasMarker(element.type);
|
|
824
870
|
if (!shouldInject && !childrenChanged) {
|
|
825
871
|
return { node, changed: false };
|
|
826
872
|
}
|
|
827
873
|
const injectedProps = shouldInject ? { [EXPANSION_PANEL_CONTEXT_PROP]: value } : void 0;
|
|
828
|
-
const cloned = mappedChildren === void 0 ? React3.cloneElement(
|
|
874
|
+
const cloned = mappedChildren === void 0 ? React3.cloneElement(element, injectedProps) : React3.cloneElement(element, injectedProps, mappedChildren);
|
|
829
875
|
return { node: cloned, changed: true };
|
|
830
876
|
};
|
|
831
877
|
var injectExpansionPanelContext = (children, value) => traverseNode(children, value).node;
|
|
@@ -916,8 +962,17 @@ var ExpansionPanelItemInner = (props) => {
|
|
|
916
962
|
const densityPadding = densityClasses2[density] ?? densityClasses2.default;
|
|
917
963
|
const disabledClass = disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer";
|
|
918
964
|
const titleClass = isExpanded ? accent.text : void 0;
|
|
919
|
-
const activeBorderClass = tailwindMerge.twMerge(
|
|
920
|
-
|
|
965
|
+
const activeBorderClass = tailwindMerge.twMerge(
|
|
966
|
+
"border-l-2 border-transparent",
|
|
967
|
+
isExpanded ? accent.border : void 0
|
|
968
|
+
);
|
|
969
|
+
const defaultToggleIcon = /* @__PURE__ */ jsxRuntime.jsx(
|
|
970
|
+
"i",
|
|
971
|
+
{
|
|
972
|
+
className: "mdi mdi-chevron-down text-lg leading-none transition-transform duration-200",
|
|
973
|
+
"aria-hidden": true
|
|
974
|
+
}
|
|
975
|
+
);
|
|
921
976
|
const hasContent = Boolean(children ?? text);
|
|
922
977
|
const contentAnimationClass = isExpanded ? "pb-5 opacity-100" : "pb-0 opacity-0";
|
|
923
978
|
const toggleIconNode = hideToggleIcon ? null : isExpanded && collapseIcon ? collapseIcon : expandIcon ?? defaultToggleIcon;
|
|
@@ -1120,7 +1175,13 @@ var ExpansionPanelInner = (props, forwardedRef) => {
|
|
|
1120
1175
|
{
|
|
1121
1176
|
...rest,
|
|
1122
1177
|
ref: forwardedRef,
|
|
1123
|
-
className: tailwindMerge.twMerge(
|
|
1178
|
+
className: tailwindMerge.twMerge(
|
|
1179
|
+
"expansion-panel flex w-full flex-col text-gray-900",
|
|
1180
|
+
variantClass,
|
|
1181
|
+
shapeClass,
|
|
1182
|
+
layoutClass,
|
|
1183
|
+
className
|
|
1184
|
+
),
|
|
1124
1185
|
children: enhancedChildren
|
|
1125
1186
|
}
|
|
1126
1187
|
);
|
|
@@ -1196,24 +1257,46 @@ var Dialog = React3__namespace.forwardRef((props, forwardedRef) => {
|
|
|
1196
1257
|
) : null;
|
|
1197
1258
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1198
1259
|
activator ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex", children: activator }) : null,
|
|
1199
|
-
shouldRenderDialog ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1260
|
+
shouldRenderDialog ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1261
|
+
"div",
|
|
1262
|
+
{
|
|
1263
|
+
className: tailwindMerge.twMerge(containerBaseClasses, containerClassName),
|
|
1264
|
+
"data-state": state,
|
|
1265
|
+
"aria-hidden": !open,
|
|
1266
|
+
children: [
|
|
1267
|
+
overlayNode,
|
|
1268
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1269
|
+
"div",
|
|
1270
|
+
{
|
|
1271
|
+
className: tailwindMerge.twMerge(
|
|
1272
|
+
panelWrapperClasses,
|
|
1273
|
+
fullscreen ? "h-full items-stretch" : "mx-auto"
|
|
1274
|
+
),
|
|
1275
|
+
"data-state": state,
|
|
1276
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1277
|
+
"div",
|
|
1278
|
+
{
|
|
1279
|
+
...rest,
|
|
1280
|
+
ref: forwardedRef,
|
|
1281
|
+
id,
|
|
1282
|
+
role: roleProp,
|
|
1283
|
+
tabIndex,
|
|
1284
|
+
"aria-modal": ariaModal,
|
|
1285
|
+
className: tailwindMerge.twMerge(
|
|
1286
|
+
panelBaseClasses,
|
|
1287
|
+
fullscreen ? "h-full w-full max-w-none rounded-none" : void 0,
|
|
1288
|
+
className
|
|
1289
|
+
),
|
|
1290
|
+
style: resolvedStyle,
|
|
1291
|
+
"data-state": state,
|
|
1292
|
+
children
|
|
1293
|
+
}
|
|
1294
|
+
)
|
|
1295
|
+
}
|
|
1296
|
+
)
|
|
1297
|
+
]
|
|
1298
|
+
}
|
|
1299
|
+
) : null
|
|
1217
1300
|
] });
|
|
1218
1301
|
});
|
|
1219
1302
|
Dialog.displayName = "Dialog";
|
|
@@ -1248,19 +1331,19 @@ var arrowPlacementClasses = {
|
|
|
1248
1331
|
bottom: "left-1/2 bottom-full -translate-x-1/2 translate-y-1/2",
|
|
1249
1332
|
"bottom-start": "left-4 bottom-full translate-y-1/2",
|
|
1250
1333
|
"bottom-end": "right-4 bottom-full translate-y-1/2",
|
|
1251
|
-
left: "
|
|
1252
|
-
"left-start": "
|
|
1253
|
-
"left-end": "
|
|
1254
|
-
right: "
|
|
1255
|
-
"right-start": "
|
|
1256
|
-
"right-end": "
|
|
1334
|
+
left: "left-full top-1/2 -translate-y-1/2 -translate-x-1/2",
|
|
1335
|
+
"left-start": "left-full top-4 -translate-x-1/2",
|
|
1336
|
+
"left-end": "left-full bottom-4 -translate-x-1/2",
|
|
1337
|
+
right: "right-full top-1/2 -translate-y-1/2 translate-x-1/2",
|
|
1338
|
+
"right-start": "right-full top-4 translate-x-1/2",
|
|
1339
|
+
"right-end": "right-full bottom-4 translate-x-1/2"
|
|
1257
1340
|
};
|
|
1258
1341
|
var ToolTip = React3__namespace.forwardRef((props, forwardedRef) => {
|
|
1259
1342
|
const {
|
|
1260
1343
|
activator,
|
|
1261
1344
|
children,
|
|
1262
1345
|
placement = "top",
|
|
1263
|
-
arrow =
|
|
1346
|
+
arrow = false,
|
|
1264
1347
|
disabled = false,
|
|
1265
1348
|
persistent = false,
|
|
1266
1349
|
showOnHover = true,
|
|
@@ -1301,25 +1384,45 @@ var ToolTip = React3__namespace.forwardRef((props, forwardedRef) => {
|
|
|
1301
1384
|
}
|
|
1302
1385
|
return classes.join(" ");
|
|
1303
1386
|
})();
|
|
1304
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
"
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1387
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1388
|
+
"span",
|
|
1389
|
+
{
|
|
1390
|
+
className: tailwindMerge.twMerge(wrapperBaseClasses, "group/tooltip", wrapperClassName),
|
|
1391
|
+
"data-disabled": disabled || void 0,
|
|
1392
|
+
children: [
|
|
1393
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex max-w-full", children: activator }),
|
|
1394
|
+
shouldRenderTooltip ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1395
|
+
"div",
|
|
1396
|
+
{
|
|
1397
|
+
...rest,
|
|
1398
|
+
ref: forwardedRef,
|
|
1399
|
+
role: "tooltip",
|
|
1400
|
+
id,
|
|
1401
|
+
"aria-hidden": persistent || disabled ? void 0 : true,
|
|
1402
|
+
className: tailwindMerge.twMerge(
|
|
1403
|
+
tooltipBaseClasses,
|
|
1404
|
+
placementClasses2[placement],
|
|
1405
|
+
visibilityClasses,
|
|
1406
|
+
pointerClasses,
|
|
1407
|
+
className
|
|
1408
|
+
),
|
|
1409
|
+
style: resolvedStyle,
|
|
1410
|
+
children: [
|
|
1411
|
+
children,
|
|
1412
|
+
arrow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1413
|
+
"span",
|
|
1414
|
+
{
|
|
1415
|
+
className: tailwindMerge.twMerge(arrowBaseClasses, arrowPlacementClasses[placement]),
|
|
1416
|
+
"aria-hidden": true,
|
|
1417
|
+
"data-arrow": true
|
|
1418
|
+
}
|
|
1419
|
+
)
|
|
1420
|
+
]
|
|
1421
|
+
}
|
|
1422
|
+
) : null
|
|
1423
|
+
]
|
|
1424
|
+
}
|
|
1425
|
+
);
|
|
1323
1426
|
});
|
|
1324
1427
|
ToolTip.displayName = "ToolTip";
|
|
1325
1428
|
var ToolTip_default = ToolTip;
|
|
@@ -1329,22 +1432,31 @@ var paddingClasses = {
|
|
|
1329
1432
|
md: "p-4",
|
|
1330
1433
|
lg: "p-6"
|
|
1331
1434
|
};
|
|
1332
|
-
var cardBase = "card-base relative w-full overflow-hidden bg-white text-gray-900 transition-colors";
|
|
1435
|
+
var cardBase = "card-base relative w-full overflow-hidden bg-white text-gray-900 transition-colors dark:bg-slate-900 dark:text-slate-100";
|
|
1333
1436
|
var variantClasses = {
|
|
1334
|
-
solid: "rounded-2xl border border-gray-200 bg-white shadow-lg shadow-gray-200/55",
|
|
1335
|
-
outline: "rounded-2xl border border-
|
|
1336
|
-
text: "rounded-2xl border border-transparent bg-transparent shadow-none",
|
|
1337
|
-
ghost: "rounded-2xl border border-transparent bg-gray-50 shadow-none",
|
|
1338
|
-
filled: "rounded-2xl border border-gray-200 bg-gray-50 shadow-sm",
|
|
1339
|
-
underlined: "rounded-2xl border border-transparent border-b border-b-gray-200 shadow-none",
|
|
1340
|
-
rounded: "rounded-3xl border border-gray-200 bg-white shadow-md",
|
|
1341
|
-
sharp: "rounded-none border border-gray-200 bg-white shadow-md"
|
|
1342
|
-
};
|
|
1343
|
-
var CardRoot = React3.forwardRef(function Card({
|
|
1437
|
+
solid: "rounded-2xl border border-gray-200 bg-white shadow-lg shadow-gray-200/55 dark:border-slate-800 dark:bg-slate-900 dark:shadow-black/30",
|
|
1438
|
+
outline: "rounded-2xl border-2 border-black bg-white shadow-none dark:border-black dark:bg-slate-900",
|
|
1439
|
+
text: "rounded-2xl border border-transparent bg-transparent shadow-none dark:border-transparent dark:bg-transparent",
|
|
1440
|
+
ghost: "rounded-2xl border border-transparent bg-gray-50 shadow-none dark:border-transparent dark:bg-slate-800",
|
|
1441
|
+
filled: "rounded-2xl border border-gray-200 bg-gray-50 shadow-sm dark:border-slate-800 dark:bg-slate-800 dark:shadow-black/20",
|
|
1442
|
+
underlined: "rounded-2xl border border-transparent border-b border-b-gray-200 shadow-none dark:border-transparent dark:border-b-slate-700 dark:bg-transparent",
|
|
1443
|
+
rounded: "rounded-3xl border border-gray-200 bg-white shadow-md dark:border-slate-800 dark:bg-slate-900 dark:shadow-black/25",
|
|
1444
|
+
sharp: "rounded-none border border-gray-200 bg-white shadow-md dark:border-slate-800 dark:bg-slate-900 dark:shadow-black/25"
|
|
1445
|
+
};
|
|
1446
|
+
var CardRoot = React3.forwardRef(function Card({
|
|
1447
|
+
className,
|
|
1448
|
+
children,
|
|
1449
|
+
variant = "solid",
|
|
1450
|
+
padding = "md",
|
|
1451
|
+
interactive = false,
|
|
1452
|
+
dividers = true,
|
|
1453
|
+
...rest
|
|
1454
|
+
}, ref) {
|
|
1344
1455
|
const variantClass = variantClasses[variant] ?? variantClasses.solid;
|
|
1345
1456
|
const paddingClass = paddingClasses[padding] ?? paddingClasses.md;
|
|
1346
|
-
const interactiveClass = interactive ? "transition-all duration-200 hover:-translate-y-0.5 hover:shadow-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2" : void 0;
|
|
1457
|
+
const interactiveClass = interactive ? "transition-all duration-200 hover:-translate-y-0.5 hover:shadow-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-slate-900" : void 0;
|
|
1347
1458
|
const tabIndexValue = interactive && rest.tabIndex === void 0 ? 0 : rest.tabIndex;
|
|
1459
|
+
const content = applyDividers(children, dividers);
|
|
1348
1460
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1349
1461
|
"div",
|
|
1350
1462
|
{
|
|
@@ -1352,28 +1464,60 @@ var CardRoot = React3.forwardRef(function Card({ className, children, variant =
|
|
|
1352
1464
|
ref,
|
|
1353
1465
|
tabIndex: tabIndexValue,
|
|
1354
1466
|
className: tailwindMerge.twMerge(cardBase, variantClass, paddingClass, interactiveClass, className),
|
|
1355
|
-
children
|
|
1467
|
+
children: content
|
|
1356
1468
|
}
|
|
1357
1469
|
);
|
|
1358
1470
|
});
|
|
1359
|
-
var CardHeader = ({ className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1471
|
+
var CardHeader = ({ className, dividers = true, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1360
1472
|
"div",
|
|
1361
1473
|
{
|
|
1362
1474
|
...rest,
|
|
1363
|
-
className: tailwindMerge.twMerge(
|
|
1475
|
+
className: tailwindMerge.twMerge(
|
|
1476
|
+
"card-header mb-2 flex flex-col gap-1 pb-3",
|
|
1477
|
+
dividers ? "border-b border-gray-100 dark:border-slate-800" : void 0,
|
|
1478
|
+
className
|
|
1479
|
+
)
|
|
1364
1480
|
}
|
|
1365
1481
|
);
|
|
1366
1482
|
var CardBody = ({ className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx("div", { ...rest, className: tailwindMerge.twMerge("card-body flex flex-col gap-3", className) });
|
|
1367
|
-
var CardFooter = ({ className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1483
|
+
var CardFooter = ({ className, dividers = true, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1368
1484
|
"div",
|
|
1369
1485
|
{
|
|
1370
1486
|
...rest,
|
|
1371
|
-
className: tailwindMerge.twMerge(
|
|
1487
|
+
className: tailwindMerge.twMerge(
|
|
1488
|
+
"card-footer mt-3 flex flex-wrap items-center gap-3 pt-3",
|
|
1489
|
+
dividers ? "border-t border-gray-100 dark:border-slate-800" : void 0,
|
|
1490
|
+
className
|
|
1491
|
+
)
|
|
1492
|
+
}
|
|
1493
|
+
);
|
|
1494
|
+
var CardTitle = ({ className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1495
|
+
"h3",
|
|
1496
|
+
{
|
|
1497
|
+
...rest,
|
|
1498
|
+
className: tailwindMerge.twMerge(
|
|
1499
|
+
"card-title text-lg font-semibold text-gray-900 dark:text-slate-50",
|
|
1500
|
+
className
|
|
1501
|
+
)
|
|
1502
|
+
}
|
|
1503
|
+
);
|
|
1504
|
+
var CardSubtitle = ({ className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1505
|
+
"p",
|
|
1506
|
+
{
|
|
1507
|
+
...rest,
|
|
1508
|
+
className: tailwindMerge.twMerge(
|
|
1509
|
+
"card-subtitle text-sm font-medium text-gray-600 dark:text-slate-300",
|
|
1510
|
+
className
|
|
1511
|
+
)
|
|
1512
|
+
}
|
|
1513
|
+
);
|
|
1514
|
+
var CardText = ({ className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1515
|
+
"p",
|
|
1516
|
+
{
|
|
1517
|
+
...rest,
|
|
1518
|
+
className: tailwindMerge.twMerge("card-text text-sm text-gray-700 dark:text-slate-200", className)
|
|
1372
1519
|
}
|
|
1373
1520
|
);
|
|
1374
|
-
var CardTitle = ({ className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx("h3", { ...rest, className: tailwindMerge.twMerge("card-title text-lg font-semibold text-gray-900", className) });
|
|
1375
|
-
var CardSubtitle = ({ className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx("p", { ...rest, className: tailwindMerge.twMerge("card-subtitle text-sm font-medium text-gray-600", className) });
|
|
1376
|
-
var CardText = ({ className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx("p", { ...rest, className: tailwindMerge.twMerge("card-text text-sm text-gray-700", className) });
|
|
1377
1521
|
var CardMedia = ({ className, rounded = false, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1378
1522
|
"img",
|
|
1379
1523
|
{
|
|
@@ -1399,6 +1543,407 @@ var Card2 = Object.assign(CardRoot, {
|
|
|
1399
1543
|
Actions: CardActions
|
|
1400
1544
|
});
|
|
1401
1545
|
var Card_default = Card2;
|
|
1546
|
+
function applyDividers(children, dividers) {
|
|
1547
|
+
return React3.Children.map(children, (child) => {
|
|
1548
|
+
if (!React3.isValidElement(child)) return child;
|
|
1549
|
+
if (isDividerSection(child)) {
|
|
1550
|
+
return React3.cloneElement(child, { dividers: child.props.dividers ?? dividers });
|
|
1551
|
+
}
|
|
1552
|
+
if (hasNestedChildren(child)) {
|
|
1553
|
+
return React3.cloneElement(child, {
|
|
1554
|
+
children: applyDividers(child.props.children, dividers)
|
|
1555
|
+
});
|
|
1556
|
+
}
|
|
1557
|
+
return child;
|
|
1558
|
+
});
|
|
1559
|
+
}
|
|
1560
|
+
function isDividerSection(element) {
|
|
1561
|
+
return element.type === CardHeader || element.type === CardFooter;
|
|
1562
|
+
}
|
|
1563
|
+
function hasNestedChildren(element) {
|
|
1564
|
+
const props = element.props;
|
|
1565
|
+
return "children" in props;
|
|
1566
|
+
}
|
|
1567
|
+
var masonryBaseClass = "masonry-grid w-full";
|
|
1568
|
+
var itemBaseClass = "masonry-item block break-inside-avoid";
|
|
1569
|
+
var MasonryBase = (props, ref) => {
|
|
1570
|
+
const {
|
|
1571
|
+
items,
|
|
1572
|
+
renderItem,
|
|
1573
|
+
getKey,
|
|
1574
|
+
column = 2,
|
|
1575
|
+
columnWidth,
|
|
1576
|
+
maxColumn,
|
|
1577
|
+
gutter = 16,
|
|
1578
|
+
className,
|
|
1579
|
+
itemClassName,
|
|
1580
|
+
itemStyle,
|
|
1581
|
+
children,
|
|
1582
|
+
style,
|
|
1583
|
+
role = "list",
|
|
1584
|
+
...rest
|
|
1585
|
+
} = props;
|
|
1586
|
+
const resolvedGutter = toCssLength(gutter);
|
|
1587
|
+
const columnCount = resolveColumnCount(column, maxColumn, Boolean(columnWidth));
|
|
1588
|
+
const layoutStyle = {
|
|
1589
|
+
columnGap: resolvedGutter,
|
|
1590
|
+
columnCount,
|
|
1591
|
+
columnWidth: columnWidth ? toCssLength(columnWidth) : void 0,
|
|
1592
|
+
columnFill: "balance",
|
|
1593
|
+
...style
|
|
1594
|
+
};
|
|
1595
|
+
const wrapItem = (content, key) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1596
|
+
"div",
|
|
1597
|
+
{
|
|
1598
|
+
className: tailwindMerge.twMerge(itemBaseClass, itemClassName),
|
|
1599
|
+
style: { breakInside: "avoid", marginBottom: resolvedGutter, width: "100%", ...itemStyle },
|
|
1600
|
+
children: content
|
|
1601
|
+
},
|
|
1602
|
+
key
|
|
1603
|
+
);
|
|
1604
|
+
const renderedItems = items && items.length ? items.map((item, index) => {
|
|
1605
|
+
const content = resolveItemContent(item, index, renderItem);
|
|
1606
|
+
return wrapItem(content, resolveItemKey(item, index, getKey));
|
|
1607
|
+
}) : React3__namespace.Children.map(children, (child, index) => wrapItem(child, resolveChildKey(child, index))) ?? null;
|
|
1608
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...rest, ref, role, className: tailwindMerge.twMerge(masonryBaseClass, className), style: layoutStyle, children: renderedItems });
|
|
1609
|
+
};
|
|
1610
|
+
var Masonry = React3__namespace.forwardRef(MasonryBase);
|
|
1611
|
+
Masonry.displayName = "Masonry";
|
|
1612
|
+
var Masonry_default = Masonry;
|
|
1613
|
+
function toCssLength(value) {
|
|
1614
|
+
if (value === void 0) return void 0;
|
|
1615
|
+
return typeof value === "number" ? `${value}px` : value;
|
|
1616
|
+
}
|
|
1617
|
+
function normalizeColumns(value) {
|
|
1618
|
+
if (value === void 0) return void 0;
|
|
1619
|
+
if (!Number.isFinite(value)) return void 0;
|
|
1620
|
+
return Math.max(1, Math.floor(value));
|
|
1621
|
+
}
|
|
1622
|
+
function resolveColumnCount(column, maxColumn, hasColumnWidth) {
|
|
1623
|
+
const normalizedMax = normalizeColumns(maxColumn);
|
|
1624
|
+
if (hasColumnWidth) {
|
|
1625
|
+
return normalizedMax;
|
|
1626
|
+
}
|
|
1627
|
+
const normalizedColumn = normalizeColumns(column);
|
|
1628
|
+
if (normalizedColumn && normalizedMax) {
|
|
1629
|
+
return Math.min(normalizedColumn, normalizedMax);
|
|
1630
|
+
}
|
|
1631
|
+
return normalizedColumn ?? normalizedMax;
|
|
1632
|
+
}
|
|
1633
|
+
function resolveItemKey(item, index, getKey) {
|
|
1634
|
+
if (getKey) return getKey(item, index);
|
|
1635
|
+
if (React3__namespace.isValidElement(item) && item.key != null) {
|
|
1636
|
+
return item.key;
|
|
1637
|
+
}
|
|
1638
|
+
return index;
|
|
1639
|
+
}
|
|
1640
|
+
function resolveChildKey(child, index) {
|
|
1641
|
+
if (React3__namespace.isValidElement(child) && child.key != null) {
|
|
1642
|
+
return child.key;
|
|
1643
|
+
}
|
|
1644
|
+
return index;
|
|
1645
|
+
}
|
|
1646
|
+
function resolveItemContent(item, index, renderItem) {
|
|
1647
|
+
if (renderItem) {
|
|
1648
|
+
return renderItem(item, index);
|
|
1649
|
+
}
|
|
1650
|
+
return item;
|
|
1651
|
+
}
|
|
1652
|
+
var containerVariants = {
|
|
1653
|
+
solid: "bg-gradient-to-br from-primary via-primary/90 to-indigo-600 text-white shadow-2xl shadow-primary/30",
|
|
1654
|
+
outline: "border border-gray-200 bg-white text-gray-900",
|
|
1655
|
+
text: "bg-transparent text-gray-900",
|
|
1656
|
+
ghost: "bg-primary/5 text-gray-900 border border-primary/10",
|
|
1657
|
+
filled: "bg-slate-900 text-white shadow-2xl shadow-slate-900/40",
|
|
1658
|
+
underlined: "border-b-4 border-primary/70 bg-white text-gray-900",
|
|
1659
|
+
rounded: "rounded-3xl border border-gray-100 bg-white text-gray-900 shadow-xl",
|
|
1660
|
+
sharp: "rounded-none border border-gray-200 bg-white text-gray-900 shadow"
|
|
1661
|
+
};
|
|
1662
|
+
var frameRadii = {
|
|
1663
|
+
solid: "rounded-3xl",
|
|
1664
|
+
outline: "rounded-2xl",
|
|
1665
|
+
text: "rounded-2xl",
|
|
1666
|
+
ghost: "rounded-2xl",
|
|
1667
|
+
filled: "rounded-3xl",
|
|
1668
|
+
underlined: "rounded-2xl",
|
|
1669
|
+
rounded: "rounded-3xl",
|
|
1670
|
+
sharp: "rounded-none"
|
|
1671
|
+
};
|
|
1672
|
+
var badgeVariants = {
|
|
1673
|
+
solid: "bg-white/10 text-white border border-white/20",
|
|
1674
|
+
outline: "bg-primary/10 text-primary border border-primary/20",
|
|
1675
|
+
text: "bg-primary/10 text-primary border border-primary/20",
|
|
1676
|
+
ghost: "bg-primary/15 text-primary border border-primary/25",
|
|
1677
|
+
filled: "bg-white/10 text-white border border-white/20",
|
|
1678
|
+
underlined: "bg-primary/10 text-primary border border-primary/20",
|
|
1679
|
+
rounded: "bg-primary/10 text-primary border border-primary/20",
|
|
1680
|
+
sharp: "bg-primary/10 text-primary border border-primary/20"
|
|
1681
|
+
};
|
|
1682
|
+
var Hero = ({
|
|
1683
|
+
title,
|
|
1684
|
+
description,
|
|
1685
|
+
eyebrow,
|
|
1686
|
+
actions = [],
|
|
1687
|
+
stats = [],
|
|
1688
|
+
logos = [],
|
|
1689
|
+
image,
|
|
1690
|
+
variant = "solid",
|
|
1691
|
+
className,
|
|
1692
|
+
...rest
|
|
1693
|
+
}) => {
|
|
1694
|
+
const containerClass = tailwindMerge.twMerge(
|
|
1695
|
+
"hero-block relative isolate overflow-hidden",
|
|
1696
|
+
containerVariants[variant] ?? containerVariants.solid,
|
|
1697
|
+
className
|
|
1698
|
+
);
|
|
1699
|
+
const badgeClass = tailwindMerge.twMerge(
|
|
1700
|
+
"inline-flex items-center gap-2 rounded-full px-3 py-1 text-xs font-semibold uppercase tracking-wide",
|
|
1701
|
+
badgeVariants[variant] ?? badgeVariants.solid
|
|
1702
|
+
);
|
|
1703
|
+
const isDark = variant === "solid" || variant === "filled";
|
|
1704
|
+
const subdued = isDark ? "text-white/80" : "text-gray-600";
|
|
1705
|
+
const statMuted = isDark ? "text-white/70" : "text-gray-500";
|
|
1706
|
+
const actionPrimary = isDark ? "bg-white text-gray-900 hover:bg-white/90 focus-visible:outline-white/70" : "bg-primary text-white hover:bg-primary/90 focus-visible:outline-primary/50";
|
|
1707
|
+
const actionSecondary = isDark ? "border border-white/40 text-white hover:bg-white/10 focus-visible:outline-white/60" : "border border-gray-300 text-gray-900 hover:border-primary/60 hover:text-primary focus-visible:outline-primary/50";
|
|
1708
|
+
const frameRadius = frameRadii[variant] ?? "rounded-2xl";
|
|
1709
|
+
const frameDecoration = isDark ? "border-white/10 bg-white/10 shadow-2xl shadow-black/20" : "border-gray-200 bg-white shadow-2xl shadow-gray-200/60";
|
|
1710
|
+
const renderAction = (action, index) => {
|
|
1711
|
+
const { href, label, onClick, variant: actionVariant = "primary" } = action;
|
|
1712
|
+
const Component = href ? "a" : "button";
|
|
1713
|
+
const resolvedClass = actionVariant === "secondary" ? tailwindMerge.twMerge("bg-white/70", actionSecondary) : tailwindMerge.twMerge("shadow-lg shadow-primary/25", actionPrimary);
|
|
1714
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1715
|
+
Component,
|
|
1716
|
+
{
|
|
1717
|
+
href,
|
|
1718
|
+
onClick,
|
|
1719
|
+
className: tailwindMerge.twMerge(
|
|
1720
|
+
"inline-flex items-center gap-2 rounded-xl px-4 py-3 text-sm font-semibold transition focus-visible:outline focus-visible:outline-offset-2",
|
|
1721
|
+
resolvedClass
|
|
1722
|
+
),
|
|
1723
|
+
children: label
|
|
1724
|
+
},
|
|
1725
|
+
`${label}-${index}`
|
|
1726
|
+
);
|
|
1727
|
+
};
|
|
1728
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("section", { ...rest, className: containerClass, children: [
|
|
1729
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pointer-events-none absolute inset-0 overflow-hidden", children: [
|
|
1730
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute left-24 top-10 h-64 w-64 rounded-full bg-primary/15 blur-3xl" }),
|
|
1731
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -right-16 -bottom-10 h-80 w-80 rounded-full bg-primary/20 blur-3xl" })
|
|
1732
|
+
] }),
|
|
1733
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto flex max-w-6xl flex-col gap-12 px-6 py-16 lg:px-10 lg:py-24", children: [
|
|
1734
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2", children: [
|
|
1735
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
1736
|
+
eyebrow && /* @__PURE__ */ jsxRuntime.jsx("span", { className: badgeClass, children: eyebrow }),
|
|
1737
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1738
|
+
"h1",
|
|
1739
|
+
{
|
|
1740
|
+
className: tailwindMerge.twMerge(
|
|
1741
|
+
"text-4xl font-semibold leading-tight sm:text-5xl",
|
|
1742
|
+
isDark ? "text-white" : "text-gray-900"
|
|
1743
|
+
),
|
|
1744
|
+
children: title
|
|
1745
|
+
}
|
|
1746
|
+
),
|
|
1747
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: tailwindMerge.twMerge("text-lg leading-relaxed", subdued), children: description }),
|
|
1748
|
+
actions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-3", children: actions.map(renderAction) }),
|
|
1749
|
+
stats.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "grid gap-6 sm:grid-cols-3", children: stats.map((stat) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
1750
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: tailwindMerge.twMerge("text-3xl font-semibold", isDark ? "text-white" : "text-gray-900"), children: stat.value }),
|
|
1751
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: tailwindMerge.twMerge("text-sm font-medium", statMuted), children: stat.label })
|
|
1752
|
+
] }, stat.label)) })
|
|
1753
|
+
] }),
|
|
1754
|
+
image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: tailwindMerge.twMerge("relative overflow-hidden backdrop-blur", frameDecoration, frameRadius), children: [
|
|
1755
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1756
|
+
"img",
|
|
1757
|
+
{
|
|
1758
|
+
src: image.src,
|
|
1759
|
+
alt: image.alt ?? "",
|
|
1760
|
+
className: tailwindMerge.twMerge("h-full w-full object-cover", frameRadius),
|
|
1761
|
+
loading: "lazy"
|
|
1762
|
+
}
|
|
1763
|
+
),
|
|
1764
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 bg-linear-to-t from-black/30 via-transparent to-transparent" })
|
|
1765
|
+
] }) })
|
|
1766
|
+
] }),
|
|
1767
|
+
logos.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-6 lg:items-center lg:gap-10", children: [
|
|
1768
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: tailwindMerge.twMerge("text-sm font-semibold tracking-wide", subdued), children: "Duveruji nam" }),
|
|
1769
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-4 opacity-80", children: logos.map((logo) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1770
|
+
"img",
|
|
1771
|
+
{
|
|
1772
|
+
src: logo.src,
|
|
1773
|
+
alt: logo.alt ?? "",
|
|
1774
|
+
className: "h-8 w-auto grayscale transition hover:grayscale-0",
|
|
1775
|
+
loading: "lazy"
|
|
1776
|
+
},
|
|
1777
|
+
logo.src
|
|
1778
|
+
)) })
|
|
1779
|
+
] })
|
|
1780
|
+
] })
|
|
1781
|
+
] });
|
|
1782
|
+
};
|
|
1783
|
+
Hero.displayName = "Hero";
|
|
1784
|
+
var Hero_default = Hero;
|
|
1785
|
+
var variantMap = {
|
|
1786
|
+
solid: "bg-white text-gray-900 border border-gray-200 shadow-lg shadow-gray-200/60",
|
|
1787
|
+
outline: "bg-white text-gray-900 border border-gray-300",
|
|
1788
|
+
text: "bg-transparent text-gray-900",
|
|
1789
|
+
ghost: "bg-slate-50 text-gray-900 border border-slate-100",
|
|
1790
|
+
filled: "bg-slate-900 text-white shadow-2xl shadow-slate-900/30",
|
|
1791
|
+
underlined: "bg-white text-gray-900 border-b-4 border-primary/70",
|
|
1792
|
+
rounded: "bg-white text-gray-900 border border-gray-200 rounded-3xl shadow-md",
|
|
1793
|
+
sharp: "bg-white text-gray-900 border border-gray-200 rounded-none shadow"
|
|
1794
|
+
};
|
|
1795
|
+
var cardRadiusMap = {
|
|
1796
|
+
solid: "rounded-2xl",
|
|
1797
|
+
outline: "rounded-2xl",
|
|
1798
|
+
text: "rounded-2xl",
|
|
1799
|
+
ghost: "rounded-2xl",
|
|
1800
|
+
filled: "rounded-3xl",
|
|
1801
|
+
underlined: "rounded-t-2xl",
|
|
1802
|
+
rounded: "rounded-3xl",
|
|
1803
|
+
sharp: "rounded-none"
|
|
1804
|
+
};
|
|
1805
|
+
var avatarRadiusMap = {
|
|
1806
|
+
solid: "rounded-2xl",
|
|
1807
|
+
outline: "rounded-2xl",
|
|
1808
|
+
text: "rounded-2xl",
|
|
1809
|
+
ghost: "rounded-2xl",
|
|
1810
|
+
filled: "rounded-3xl",
|
|
1811
|
+
underlined: "rounded-2xl",
|
|
1812
|
+
rounded: "rounded-3xl",
|
|
1813
|
+
sharp: "rounded-none"
|
|
1814
|
+
};
|
|
1815
|
+
var isDarkVariant = (variant) => variant === "filled";
|
|
1816
|
+
var SocialIcons = ({
|
|
1817
|
+
socials = [],
|
|
1818
|
+
dark
|
|
1819
|
+
}) => {
|
|
1820
|
+
if (socials.length === 0) return null;
|
|
1821
|
+
tailwindMerge.twMerge(
|
|
1822
|
+
"flex h-10 w-10 items-center justify-center rounded-full border text-lg transition",
|
|
1823
|
+
dark ? "border-white/30 text-white hover:bg-white/10" : "border-gray-200 text-gray-600 hover:border-primary/50 hover:text-primary"
|
|
1824
|
+
);
|
|
1825
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: socials.map((link) => (
|
|
1826
|
+
// <a
|
|
1827
|
+
// key={link.href}
|
|
1828
|
+
// href={link.href}
|
|
1829
|
+
// aria-label={link.label ?? link.icon}
|
|
1830
|
+
// className={iconBase}
|
|
1831
|
+
// >
|
|
1832
|
+
// <i className={twMerge('mdi', link.icon)} aria-hidden />
|
|
1833
|
+
// </a>
|
|
1834
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button_default, { iconOnly: true, icon: link.icon, variant: "rounded", size: "x-small" })
|
|
1835
|
+
)) });
|
|
1836
|
+
};
|
|
1837
|
+
var Badges = ({ badges = [], dark }) => {
|
|
1838
|
+
if (badges.length === 0) return null;
|
|
1839
|
+
const badgeBase = tailwindMerge.twMerge(
|
|
1840
|
+
"inline-flex items-center rounded-full px-3 py-1 mb-2 text-xs font-semibold",
|
|
1841
|
+
dark ? "bg-white/10 text-white border border-white/20" : "bg-primary/10 text-primary border border-primary/15"
|
|
1842
|
+
);
|
|
1843
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: badges.map((badge) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: badgeBase, children: badge.label }, badge.label)) });
|
|
1844
|
+
};
|
|
1845
|
+
var AvatarFrame = ({ avatar, size = "md", ring, radius }) => {
|
|
1846
|
+
const dimension = size === "lg" ? "h-28 w-28" : "h-20 w-20";
|
|
1847
|
+
const ringClass = ring ? "ring-4 ring-white/80 ring-offset-4 ring-offset-transparent" : "";
|
|
1848
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1849
|
+
"div",
|
|
1850
|
+
{
|
|
1851
|
+
className: tailwindMerge.twMerge(
|
|
1852
|
+
"overflow-hidden bg-linear-to-br from-primary/10 to-primary/30",
|
|
1853
|
+
radius,
|
|
1854
|
+
dimension,
|
|
1855
|
+
ringClass
|
|
1856
|
+
),
|
|
1857
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1858
|
+
"img",
|
|
1859
|
+
{
|
|
1860
|
+
src: avatar.src,
|
|
1861
|
+
alt: avatar.alt ?? "",
|
|
1862
|
+
className: tailwindMerge.twMerge("h-full w-full object-cover", radius),
|
|
1863
|
+
loading: "lazy"
|
|
1864
|
+
}
|
|
1865
|
+
)
|
|
1866
|
+
}
|
|
1867
|
+
);
|
|
1868
|
+
};
|
|
1869
|
+
var ProfileCard = ({
|
|
1870
|
+
name,
|
|
1871
|
+
role,
|
|
1872
|
+
description,
|
|
1873
|
+
avatar,
|
|
1874
|
+
socials,
|
|
1875
|
+
badges,
|
|
1876
|
+
layout = "classic",
|
|
1877
|
+
variant = "solid",
|
|
1878
|
+
className,
|
|
1879
|
+
...rest
|
|
1880
|
+
}) => {
|
|
1881
|
+
const baseVariant = variantMap[variant] ?? variantMap.solid;
|
|
1882
|
+
const cardRadius = cardRadiusMap[variant] ?? "rounded-2xl";
|
|
1883
|
+
const avatarRadius = avatarRadiusMap[variant] ?? "rounded-2xl";
|
|
1884
|
+
const dark = isDarkVariant(variant);
|
|
1885
|
+
const muted = dark ? "text-white/70" : "text-gray-600";
|
|
1886
|
+
const accent = dark ? "text-white" : "text-gray-900";
|
|
1887
|
+
const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1888
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
1889
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
1890
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFrame, { avatar, radius: avatarRadius }),
|
|
1891
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1892
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: tailwindMerge.twMerge("text-xl font-semibold", accent), children: name }),
|
|
1893
|
+
role && /* @__PURE__ */ jsxRuntime.jsx("p", { className: tailwindMerge.twMerge("text-sm font-medium", muted), children: role })
|
|
1894
|
+
] })
|
|
1895
|
+
] }),
|
|
1896
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: tailwindMerge.twMerge("text-sm leading-relaxed", muted), children: description }),
|
|
1897
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badges, { badges, dark })
|
|
1898
|
+
] }),
|
|
1899
|
+
/* @__PURE__ */ jsxRuntime.jsx(SocialIcons, { socials, dark })
|
|
1900
|
+
] });
|
|
1901
|
+
const spotlightContent = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative overflow-hidden", children: [
|
|
1902
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-linear-to-br from-primary/10 via-transparent to-primary/20 blur-3xl" }),
|
|
1903
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex flex-col gap-6 md:flex-row md:items-center", children: [
|
|
1904
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFrame, { avatar, size: "lg", ring: true, radius: avatarRadius }),
|
|
1905
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
1906
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: tailwindMerge.twMerge("text-2xl font-semibold", accent), children: name }),
|
|
1907
|
+
role && /* @__PURE__ */ jsxRuntime.jsx("p", { className: tailwindMerge.twMerge("text-sm font-medium uppercase tracking-wide", muted), children: role }),
|
|
1908
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: tailwindMerge.twMerge("text-sm leading-relaxed", muted), children: description }),
|
|
1909
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badges, { badges, dark }),
|
|
1910
|
+
/* @__PURE__ */ jsxRuntime.jsx(SocialIcons, { socials, dark })
|
|
1911
|
+
] })
|
|
1912
|
+
] })
|
|
1913
|
+
] });
|
|
1914
|
+
const splitContent = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-6 md:grid-cols-[auto,1fr] md:items-center", children: [
|
|
1915
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFrame, { avatar, size: "lg", ring: true, radius: avatarRadius }),
|
|
1916
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
1917
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1918
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: tailwindMerge.twMerge("text-2xl font-semibold", accent), children: name }),
|
|
1919
|
+
role && /* @__PURE__ */ jsxRuntime.jsx("p", { className: tailwindMerge.twMerge("text-sm font-medium", muted), children: role })
|
|
1920
|
+
] }),
|
|
1921
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: tailwindMerge.twMerge("text-sm leading-relaxed", muted), children: description }),
|
|
1922
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badges, { badges, dark }),
|
|
1923
|
+
/* @__PURE__ */ jsxRuntime.jsx(SocialIcons, { socials, dark })
|
|
1924
|
+
] })
|
|
1925
|
+
] });
|
|
1926
|
+
const layoutMap = {
|
|
1927
|
+
classic: content,
|
|
1928
|
+
split: splitContent,
|
|
1929
|
+
spotlight: spotlightContent
|
|
1930
|
+
};
|
|
1931
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1932
|
+
"article",
|
|
1933
|
+
{
|
|
1934
|
+
...rest,
|
|
1935
|
+
className: tailwindMerge.twMerge(
|
|
1936
|
+
"profile-card relative overflow-hidden p-6 transition duration-200 hover:-translate-y-0.5 hover:shadow-xl",
|
|
1937
|
+
baseVariant,
|
|
1938
|
+
cardRadius,
|
|
1939
|
+
className
|
|
1940
|
+
),
|
|
1941
|
+
children: layoutMap[layout] ?? layoutMap.classic
|
|
1942
|
+
}
|
|
1943
|
+
);
|
|
1944
|
+
};
|
|
1945
|
+
ProfileCard.displayName = "ProfileCard";
|
|
1946
|
+
var ProfileCard_default = ProfileCard;
|
|
1402
1947
|
|
|
1403
1948
|
// src/Form/Input/states.input.ts
|
|
1404
1949
|
var resolveIconClassName3 = (icon) => {
|
|
@@ -1426,37 +1971,49 @@ var resolveIconClassName3 = (icon) => {
|
|
|
1426
1971
|
const classes = [...baseClasses, normalizedName];
|
|
1427
1972
|
return Array.from(new Set(classes)).join(" ");
|
|
1428
1973
|
};
|
|
1429
|
-
|
|
1430
|
-
// src/utils/helpers/randomStr.ts
|
|
1431
|
-
var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
1432
|
-
function generateString(length = 5) {
|
|
1433
|
-
let result = "";
|
|
1434
|
-
const charactersLength = characters.length;
|
|
1435
|
-
for (let i = 0; i < length; i++) {
|
|
1436
|
-
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
1437
|
-
}
|
|
1438
|
-
return result;
|
|
1439
|
-
}
|
|
1440
1974
|
var Input = ({
|
|
1441
1975
|
variant = "outline",
|
|
1976
|
+
size = "medium",
|
|
1442
1977
|
success,
|
|
1443
1978
|
error,
|
|
1444
1979
|
warn,
|
|
1445
1980
|
icon,
|
|
1446
1981
|
className,
|
|
1447
1982
|
wrapperClassName,
|
|
1983
|
+
label,
|
|
1448
1984
|
...props
|
|
1449
1985
|
}) => {
|
|
1450
|
-
const
|
|
1451
|
-
const
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1986
|
+
const { placeholder, onFocus, onBlur, ...inputProps } = props;
|
|
1987
|
+
const reactId = React3__namespace.default.useId();
|
|
1988
|
+
const hasLabel = Boolean(label);
|
|
1989
|
+
const hasProvidedPlaceholder = typeof placeholder === "string" && placeholder.trim().length > 0;
|
|
1990
|
+
const hidePlaceholderUntilFocus = hasLabel && hasProvidedPlaceholder;
|
|
1991
|
+
const [isFocused, setIsFocused] = React3__namespace.default.useState(false);
|
|
1992
|
+
const classBase = "input-base focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full text-gray-900 dark:text-gray-100 placeholder:text-gray-500 dark:placeholder:text-gray-400";
|
|
1993
|
+
const variantClasses3 = {
|
|
1994
|
+
solid: "rounded border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40",
|
|
1995
|
+
sharp: "rounded-none border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40",
|
|
1996
|
+
outline: "rounded border-2 border-black bg-white focus-visible:border-black focus-visible:ring-2 focus-visible:ring-black/30 dark:border-black dark:bg-transparent dark:focus-visible:border-black dark:focus-visible:ring-black/40",
|
|
1997
|
+
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 dark:border-b-gray-600 dark:focus-visible:border-primary/70",
|
|
1998
|
+
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 dark:bg-slate-800 dark:text-gray-100 dark:focus-visible:bg-slate-700 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/25",
|
|
1999
|
+
filled: "rounded border border-gray-200 bg-gray-100 focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/25 dark:border-gray-700 dark:bg-slate-800 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/30",
|
|
2000
|
+
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 dark:border-b-gray-600 dark:focus-visible:border-primary/70",
|
|
2001
|
+
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 dark:border-gray-600 dark:bg-slate-900 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/30 dark:shadow-black/20"
|
|
2002
|
+
};
|
|
2003
|
+
const sizeClasses4 = {
|
|
2004
|
+
"x-small": { paddingNoIcon: "px-2 py-2", paddingWithIcon: "pl-8 pr-2 py-2", text: "text-xs" },
|
|
2005
|
+
small: {
|
|
2006
|
+
paddingNoIcon: "px-2.5 py-2.5",
|
|
2007
|
+
paddingWithIcon: "pl-9 pr-2.5 py-2.5",
|
|
2008
|
+
text: "text-sm"
|
|
2009
|
+
},
|
|
2010
|
+
medium: { paddingNoIcon: "px-3 py-3", paddingWithIcon: "pl-10 pr-3 py-3", text: "text-base" },
|
|
2011
|
+
large: {
|
|
2012
|
+
paddingNoIcon: "px-3.5 py-3.5",
|
|
2013
|
+
paddingWithIcon: "pl-11 pr-3.5 py-3.5",
|
|
2014
|
+
text: "text-lg"
|
|
2015
|
+
},
|
|
2016
|
+
"x-large": { paddingNoIcon: "px-4 py-4", paddingWithIcon: "pl-12 pr-4 py-4", text: "text-xl" }
|
|
1460
2017
|
};
|
|
1461
2018
|
const status = error ? { tone: "error", message: error } : warn ? { tone: "warn", message: warn } : success ? { tone: "success", message: success } : void 0;
|
|
1462
2019
|
const statusClasses = {
|
|
@@ -1465,24 +2022,81 @@ var Input = ({
|
|
|
1465
2022
|
success: "border-emerald-500 focus:border-emerald-500 focus:ring-emerald-400"
|
|
1466
2023
|
};
|
|
1467
2024
|
const statusMessageClasses = {
|
|
1468
|
-
error: "text-red-600",
|
|
1469
|
-
warn: "text-amber-600",
|
|
1470
|
-
success: "text-emerald-600"
|
|
2025
|
+
error: "text-red-600 dark:text-red-300",
|
|
2026
|
+
warn: "text-amber-600 dark:text-amber-300",
|
|
2027
|
+
success: "text-emerald-600 dark:text-emerald-300"
|
|
1471
2028
|
};
|
|
1472
|
-
const variantClass =
|
|
2029
|
+
const variantClass = variantClasses3[variant] ?? variantClasses3.outline;
|
|
1473
2030
|
const toneClass = status ? statusClasses[status.tone] : void 0;
|
|
1474
|
-
|
|
1475
|
-
const
|
|
1476
|
-
const
|
|
2031
|
+
let prependIconClass = resolveIconClassName3(icon);
|
|
2032
|
+
const sizeConfig = sizeClasses4[size] ?? sizeClasses4.medium;
|
|
2033
|
+
const sizeClass = [
|
|
2034
|
+
prependIconClass ? sizeConfig.paddingWithIcon : sizeConfig.paddingNoIcon,
|
|
2035
|
+
sizeConfig.text
|
|
2036
|
+
].join(" ");
|
|
2037
|
+
const inputName = inputProps.name || reactId;
|
|
2038
|
+
const basePlaceholder = placeholder ?? (hasLabel ? " " : void 0);
|
|
2039
|
+
const placeholderValue = hidePlaceholderUntilFocus ? isFocused ? placeholder : " " : basePlaceholder;
|
|
2040
|
+
const placeholderClass = hidePlaceholderUntilFocus ? "placeholder-transparent focus:placeholder-gray-500 focus:dark:placeholder-gray-400" : void 0;
|
|
2041
|
+
const labelLeftClass = prependIconClass ? "left-10" : "left-3";
|
|
2042
|
+
const labelBgDefault = ["outline", "text", "underlined"].includes(variant) ? "bg-transparent" : "bg-white/90 dark:bg-slate-900";
|
|
2043
|
+
const handleFocus = (event) => {
|
|
2044
|
+
if (hidePlaceholderUntilFocus) setIsFocused(true);
|
|
2045
|
+
onFocus?.(event);
|
|
2046
|
+
};
|
|
2047
|
+
const handleBlur = (event) => {
|
|
2048
|
+
if (hidePlaceholderUntilFocus) setIsFocused(false);
|
|
2049
|
+
onBlur?.(event);
|
|
2050
|
+
};
|
|
1477
2051
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: tailwindMerge.twMerge("flex flex-col gap-1", wrapperClassName), children: [
|
|
1478
2052
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex items-center", children: [
|
|
1479
|
-
prependIconClass && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2053
|
+
prependIconClass && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2054
|
+
"i",
|
|
2055
|
+
{
|
|
2056
|
+
className: tailwindMerge.twMerge(
|
|
2057
|
+
"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-gray-500 dark:text-gray-400",
|
|
2058
|
+
status?.tone && statusMessageClasses[status?.tone] || "",
|
|
2059
|
+
prependIconClass
|
|
2060
|
+
),
|
|
2061
|
+
"aria-hidden": true
|
|
2062
|
+
}
|
|
2063
|
+
),
|
|
1480
2064
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1481
2065
|
"input",
|
|
1482
2066
|
{
|
|
1483
|
-
...
|
|
1484
|
-
|
|
1485
|
-
name: inputName
|
|
2067
|
+
...inputProps,
|
|
2068
|
+
id: inputName,
|
|
2069
|
+
name: inputName,
|
|
2070
|
+
placeholder: placeholderValue,
|
|
2071
|
+
onFocus: handleFocus,
|
|
2072
|
+
onBlur: handleBlur,
|
|
2073
|
+
className: tailwindMerge.twMerge(
|
|
2074
|
+
"peer",
|
|
2075
|
+
classBase,
|
|
2076
|
+
variantClass,
|
|
2077
|
+
toneClass,
|
|
2078
|
+
sizeClass,
|
|
2079
|
+
placeholderClass,
|
|
2080
|
+
className
|
|
2081
|
+
)
|
|
2082
|
+
}
|
|
2083
|
+
),
|
|
2084
|
+
label && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2085
|
+
"label",
|
|
2086
|
+
{
|
|
2087
|
+
htmlFor: inputName,
|
|
2088
|
+
className: tailwindMerge.twMerge(
|
|
2089
|
+
"absolute transition-all duration-150 pointer-events-none text-gray-700 dark:text-gray-200",
|
|
2090
|
+
labelLeftClass,
|
|
2091
|
+
// Floated state: center label's vertical middle on the top border line
|
|
2092
|
+
"top-0 -translate-y-2/3 text-xs px-1",
|
|
2093
|
+
labelBgDefault,
|
|
2094
|
+
// focus state mirrors floated state (keeps center on border)
|
|
2095
|
+
"peer-focus:top-0 peer-focus:-translate-y-1/2 peer-focus:text-xs peer-focus:px-1 peer-focus:bg-white/90 peer-focus:text-gray-600 dark:peer-focus:bg-slate-900 dark:peer-focus:text-gray-300",
|
|
2096
|
+
// when input is empty (placeholder shown) -> center label inside input
|
|
2097
|
+
"peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:text-sm peer-placeholder-shown:bg-transparent peer-placeholder-shown:text-gray-500 dark:peer-placeholder-shown:text-gray-400"
|
|
2098
|
+
),
|
|
2099
|
+
children: label
|
|
1486
2100
|
}
|
|
1487
2101
|
)
|
|
1488
2102
|
] }),
|
|
@@ -1490,8 +2104,170 @@ var Input = ({
|
|
|
1490
2104
|
] });
|
|
1491
2105
|
};
|
|
1492
2106
|
var Input_default = Input;
|
|
2107
|
+
|
|
2108
|
+
// src/utils/helpers/randomStr.ts
|
|
2109
|
+
var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
2110
|
+
function generateString(length = 5) {
|
|
2111
|
+
let result = "";
|
|
2112
|
+
const charactersLength = characters.length;
|
|
2113
|
+
for (let i = 0; i < length; i++) {
|
|
2114
|
+
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
2115
|
+
}
|
|
2116
|
+
return result;
|
|
2117
|
+
}
|
|
2118
|
+
var baseClass = "select-base w-full appearance-none focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed bg-white text-gray-900 placeholder:text-gray-500 dark:bg-slate-900 dark:text-gray-100 dark:placeholder:text-gray-400";
|
|
2119
|
+
var variantClasses2 = {
|
|
2120
|
+
solid: "rounded border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40",
|
|
2121
|
+
sharp: "rounded-none border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40",
|
|
2122
|
+
outline: "rounded border-2 border-black bg-white focus-visible:border-black focus-visible:ring-2 focus-visible:ring-black/30 dark:border-black dark:bg-transparent dark:focus-visible:border-black dark:focus-visible:ring-black/40",
|
|
2123
|
+
text: "rounded-none border-0 border-b border-transparent pl-0 pr-10 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent dark:border-b-gray-600 dark:focus-visible:border-primary/70",
|
|
2124
|
+
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 dark:bg-slate-800 dark:text-gray-100 dark:focus-visible:bg-slate-700 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/25",
|
|
2125
|
+
filled: "rounded border border-gray-200 bg-gray-100 focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/25 dark:border-gray-700 dark:bg-slate-800 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/30",
|
|
2126
|
+
underlined: "rounded-none border-0 border-b border-gray-300 pl-0 pr-10 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent dark:border-b-gray-600 dark:focus-visible:border-primary/70",
|
|
2127
|
+
rounded: "rounded-full pl-4 pr-10 border border-gray-300 bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/20 shadow-sm dark:border-gray-600 dark:bg-slate-900 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/30 dark:shadow-black/20"
|
|
2128
|
+
};
|
|
2129
|
+
var sizeClasses2 = {
|
|
2130
|
+
"x-small": { padding: "pl-2 pr-8 py-2", text: "text-xs" },
|
|
2131
|
+
small: { padding: "pl-2.5 pr-9 py-2.5", text: "text-sm" },
|
|
2132
|
+
medium: { padding: "pl-3 pr-10 py-3", text: "text-base" },
|
|
2133
|
+
large: { padding: "pl-3.5 pr-11 py-3.5", text: "text-lg" },
|
|
2134
|
+
"x-large": { padding: "pl-4 pr-12 py-4", text: "text-xl" }
|
|
2135
|
+
};
|
|
2136
|
+
var normalizeOption = (option) => {
|
|
2137
|
+
if (typeof option === "string") {
|
|
2138
|
+
return { label: option, value: option };
|
|
2139
|
+
}
|
|
2140
|
+
return option;
|
|
2141
|
+
};
|
|
2142
|
+
var Select = ({
|
|
2143
|
+
options,
|
|
2144
|
+
label,
|
|
2145
|
+
placeholder,
|
|
2146
|
+
variant = "outline",
|
|
2147
|
+
size = "medium",
|
|
2148
|
+
className,
|
|
2149
|
+
wrapperClassName,
|
|
2150
|
+
id,
|
|
2151
|
+
name,
|
|
2152
|
+
multiple,
|
|
2153
|
+
onFocus,
|
|
2154
|
+
onBlur,
|
|
2155
|
+
onChange,
|
|
2156
|
+
value,
|
|
2157
|
+
defaultValue,
|
|
2158
|
+
...props
|
|
2159
|
+
}) => {
|
|
2160
|
+
const selectId = id || name || generateString();
|
|
2161
|
+
const selectName = name || selectId;
|
|
2162
|
+
const variantClass = variantClasses2[variant] ?? variantClasses2.outline;
|
|
2163
|
+
const sizeConfig = sizeClasses2[size] ?? sizeClasses2.medium;
|
|
2164
|
+
const sizeClass = `${sizeConfig.padding} ${sizeConfig.text}`;
|
|
2165
|
+
const normalizedOptions = options.map(normalizeOption);
|
|
2166
|
+
const hasLabel = Boolean(label);
|
|
2167
|
+
const hasProvidedPlaceholder = typeof placeholder === "string" && placeholder.trim().length > 0;
|
|
2168
|
+
const hidePlaceholderUntilFocus = hasLabel && hasProvidedPlaceholder && !multiple;
|
|
2169
|
+
const placeholderText = placeholder ?? (hasLabel ? " " : void 0);
|
|
2170
|
+
const [isFocused, setIsFocused] = React3__namespace.default.useState(false);
|
|
2171
|
+
const [hasValue, setHasValue] = React3__namespace.default.useState(() => {
|
|
2172
|
+
const initial = value ?? defaultValue;
|
|
2173
|
+
if (initial === void 0 || initial === null) return false;
|
|
2174
|
+
if (multiple) {
|
|
2175
|
+
if (Array.isArray(initial)) return initial.length > 0;
|
|
2176
|
+
return String(initial).length > 0;
|
|
2177
|
+
}
|
|
2178
|
+
if (Array.isArray(initial)) {
|
|
2179
|
+
if (initial.length === 0) return false;
|
|
2180
|
+
return String(initial[0]).length > 0;
|
|
2181
|
+
}
|
|
2182
|
+
return String(initial).length > 0;
|
|
2183
|
+
});
|
|
2184
|
+
const isControlled = value !== void 0;
|
|
2185
|
+
React3__namespace.default.useEffect(() => {
|
|
2186
|
+
if (!isControlled) return;
|
|
2187
|
+
if (value === void 0 || value === null) {
|
|
2188
|
+
setHasValue(false);
|
|
2189
|
+
return;
|
|
2190
|
+
}
|
|
2191
|
+
if (multiple) {
|
|
2192
|
+
if (Array.isArray(value)) {
|
|
2193
|
+
setHasValue(value.length > 0);
|
|
2194
|
+
} else {
|
|
2195
|
+
setHasValue(String(value).length > 0);
|
|
2196
|
+
}
|
|
2197
|
+
return;
|
|
2198
|
+
}
|
|
2199
|
+
if (Array.isArray(value)) {
|
|
2200
|
+
setHasValue(value.length > 0 ? String(value[0]).length > 0 : false);
|
|
2201
|
+
return;
|
|
2202
|
+
}
|
|
2203
|
+
setHasValue(String(value).length > 0);
|
|
2204
|
+
}, [isControlled, multiple, value]);
|
|
2205
|
+
const placeholderOptionLabel = hidePlaceholderUntilFocus && !isFocused ? " " : placeholderText;
|
|
2206
|
+
const shouldRenderPlaceholder = !multiple && placeholderText !== void 0;
|
|
2207
|
+
const labelShouldFloat = hasValue || isFocused;
|
|
2208
|
+
const labelLeftClass = "left-3";
|
|
2209
|
+
const labelBgDefault = ["outline", "text", "underlined"].includes(variant) ? "bg-transparent" : "bg-white/90 dark:bg-slate-900";
|
|
2210
|
+
const handleFocus = (event) => {
|
|
2211
|
+
if (hidePlaceholderUntilFocus) setIsFocused(true);
|
|
2212
|
+
onFocus?.(event);
|
|
2213
|
+
};
|
|
2214
|
+
const handleBlur = (event) => {
|
|
2215
|
+
if (hidePlaceholderUntilFocus) setIsFocused(false);
|
|
2216
|
+
onBlur?.(event);
|
|
2217
|
+
};
|
|
2218
|
+
const handleChange = (event) => {
|
|
2219
|
+
if (!isControlled) {
|
|
2220
|
+
const nextHasValue = multiple ? event.target.selectedOptions.length > 0 : event.target.value !== "";
|
|
2221
|
+
setHasValue(nextHasValue);
|
|
2222
|
+
}
|
|
2223
|
+
onChange?.(event);
|
|
2224
|
+
};
|
|
2225
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: tailwindMerge.twMerge("flex flex-col gap-1", wrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex items-center", children: [
|
|
2226
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2227
|
+
"select",
|
|
2228
|
+
{
|
|
2229
|
+
...props,
|
|
2230
|
+
id: selectId,
|
|
2231
|
+
name: selectName,
|
|
2232
|
+
multiple,
|
|
2233
|
+
value,
|
|
2234
|
+
defaultValue: value === void 0 ? defaultValue : void 0,
|
|
2235
|
+
onFocus: handleFocus,
|
|
2236
|
+
onBlur: handleBlur,
|
|
2237
|
+
onChange: handleChange,
|
|
2238
|
+
className: tailwindMerge.twMerge("peer", baseClass, variantClass, sizeClass, className),
|
|
2239
|
+
children: [
|
|
2240
|
+
shouldRenderPlaceholder && /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", disabled: props.required, hidden: hasValue, children: placeholderOptionLabel }),
|
|
2241
|
+
normalizedOptions.map((option, index) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, disabled: option.disabled, children: option.label }, `${selectId}-${option.value}-${index}`))
|
|
2242
|
+
]
|
|
2243
|
+
}
|
|
2244
|
+
),
|
|
2245
|
+
!multiple && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute inset-y-0 right-3 flex items-center text-gray-500 dark:text-gray-300", children: /* @__PURE__ */ jsxRuntime.jsx("i", { className: "mdi mdi-chevron-down text-base leading-none", "aria-hidden": true }) }),
|
|
2246
|
+
label && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2247
|
+
"label",
|
|
2248
|
+
{
|
|
2249
|
+
htmlFor: selectId,
|
|
2250
|
+
className: tailwindMerge.twMerge(
|
|
2251
|
+
"absolute transition-all duration-150 pointer-events-none text-gray-700 dark:text-gray-200",
|
|
2252
|
+
labelLeftClass,
|
|
2253
|
+
labelShouldFloat ? [
|
|
2254
|
+
"top-0 text-xs px-1",
|
|
2255
|
+
isFocused ? "-translate-y-1/2 text-gray-600" : "-translate-y-2/3",
|
|
2256
|
+
labelBgDefault
|
|
2257
|
+
].join(" ") : "top-1/2 -translate-y-1/2 text-sm text-gray-500"
|
|
2258
|
+
),
|
|
2259
|
+
children: label
|
|
2260
|
+
}
|
|
2261
|
+
)
|
|
2262
|
+
] }) });
|
|
2263
|
+
};
|
|
2264
|
+
var Select_default = Select;
|
|
1493
2265
|
var paletteValues = {
|
|
1494
|
-
primary: {
|
|
2266
|
+
primary: {
|
|
2267
|
+
fill: "var(--color-primary, #6366f1)",
|
|
2268
|
+
ring: "rgba(99, 102, 241, 0.28)",
|
|
2269
|
+
thumbBorder: "#6366f1"
|
|
2270
|
+
},
|
|
1495
2271
|
neutral: { fill: "#4b5563", ring: "rgba(75, 85, 99, 0.28)", thumbBorder: "#4b5563" },
|
|
1496
2272
|
info: { fill: "#0284c7", ring: "rgba(2, 132, 199, 0.28)", thumbBorder: "#0284c7" },
|
|
1497
2273
|
success: { fill: "#059669", ring: "rgba(5, 150, 105, 0.24)", thumbBorder: "#059669" },
|
|
@@ -1501,9 +2277,19 @@ var paletteValues = {
|
|
|
1501
2277
|
bw: { fill: "#000000", ring: "rgba(0, 0, 0, 0.26)", thumbBorder: "#000000" }
|
|
1502
2278
|
};
|
|
1503
2279
|
var sizeTokens = {
|
|
1504
|
-
small: {
|
|
2280
|
+
small: {
|
|
2281
|
+
trackHeight: "0.375rem",
|
|
2282
|
+
thumbSize: "1.1rem",
|
|
2283
|
+
trackClass: "h-1.5",
|
|
2284
|
+
valueClass: "text-xs"
|
|
2285
|
+
},
|
|
1505
2286
|
medium: { trackHeight: "0.5rem", thumbSize: "1.25rem", trackClass: "h-2", valueClass: "text-sm" },
|
|
1506
|
-
large: {
|
|
2287
|
+
large: {
|
|
2288
|
+
trackHeight: "0.6rem",
|
|
2289
|
+
thumbSize: "1.4rem",
|
|
2290
|
+
trackClass: "h-[0.65rem]",
|
|
2291
|
+
valueClass: "text-base"
|
|
2292
|
+
}
|
|
1507
2293
|
};
|
|
1508
2294
|
var clamp = (value, min, max) => Math.min(Math.max(value, min), max);
|
|
1509
2295
|
var toNumber = (value, fallback) => {
|
|
@@ -1690,57 +2476,106 @@ var Switch = React3.forwardRef(
|
|
|
1690
2476
|
const sizeThumbClass = thumbSizes[size] ?? thumbSizes.medium;
|
|
1691
2477
|
const thumbShiftClass = thumbTranslate[size] ?? thumbTranslate.medium;
|
|
1692
2478
|
const pointerClass = disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer";
|
|
1693
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
className: tailwindMerge.twMerge(
|
|
1711
|
-
"block rounded-full border border-transparent transition-all duration-200",
|
|
1712
|
-
sizeTrackClass,
|
|
1713
|
-
currentChecked ? paletteTrack.active : paletteTrack.inactive,
|
|
1714
|
-
disabled && "bg-gray-200",
|
|
1715
|
-
"peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2",
|
|
1716
|
-
focusClass,
|
|
1717
|
-
className
|
|
2479
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2480
|
+
"label",
|
|
2481
|
+
{
|
|
2482
|
+
className: tailwindMerge.twMerge("flex items-center gap-3 select-none", pointerClass, wrapperClassName),
|
|
2483
|
+
children: [
|
|
2484
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative inline-flex items-center", children: [
|
|
2485
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2486
|
+
"input",
|
|
2487
|
+
{
|
|
2488
|
+
...rest,
|
|
2489
|
+
type: "checkbox",
|
|
2490
|
+
ref,
|
|
2491
|
+
checked: currentChecked,
|
|
2492
|
+
onChange: handleChange,
|
|
2493
|
+
disabled,
|
|
2494
|
+
className: "peer sr-only"
|
|
2495
|
+
}
|
|
1718
2496
|
),
|
|
1719
|
-
|
|
1720
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2497
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1721
2498
|
"span",
|
|
1722
2499
|
{
|
|
1723
2500
|
className: tailwindMerge.twMerge(
|
|
1724
|
-
"
|
|
1725
|
-
|
|
1726
|
-
currentChecked
|
|
1727
|
-
|
|
1728
|
-
|
|
2501
|
+
"block rounded-full border border-transparent transition-all duration-200",
|
|
2502
|
+
sizeTrackClass,
|
|
2503
|
+
currentChecked ? paletteTrack.active : paletteTrack.inactive,
|
|
2504
|
+
disabled && "bg-gray-200",
|
|
2505
|
+
"peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2",
|
|
2506
|
+
focusClass,
|
|
2507
|
+
className
|
|
2508
|
+
),
|
|
2509
|
+
"aria-hidden": true,
|
|
2510
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2511
|
+
"span",
|
|
2512
|
+
{
|
|
2513
|
+
className: tailwindMerge.twMerge(
|
|
2514
|
+
"absolute left-0.5 top-0.5 rounded-full bg-white shadow-md border border-gray-200 transition-transform duration-200",
|
|
2515
|
+
sizeThumbClass,
|
|
2516
|
+
currentChecked && thumbShiftClass,
|
|
2517
|
+
currentChecked && thumbActive,
|
|
2518
|
+
disabled && "border-gray-300"
|
|
2519
|
+
)
|
|
2520
|
+
}
|
|
1729
2521
|
)
|
|
1730
2522
|
}
|
|
1731
2523
|
)
|
|
1732
|
-
}
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
2524
|
+
] }),
|
|
2525
|
+
(label || description) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: tailwindMerge.twMerge("flex flex-col leading-tight", labelClassName), children: [
|
|
2526
|
+
label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-900", children: label }),
|
|
2527
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-gray-600", children: description })
|
|
2528
|
+
] })
|
|
2529
|
+
]
|
|
2530
|
+
}
|
|
2531
|
+
);
|
|
1740
2532
|
}
|
|
1741
2533
|
);
|
|
1742
2534
|
Switch.displayName = "Switch";
|
|
1743
2535
|
var Switch_default = Switch;
|
|
2536
|
+
var sizeClasses3 = {
|
|
2537
|
+
"x-small": "text-xs",
|
|
2538
|
+
small: "text-sm",
|
|
2539
|
+
medium: "text-base",
|
|
2540
|
+
large: "text-lg",
|
|
2541
|
+
"x-large": "text-2xl"
|
|
2542
|
+
};
|
|
2543
|
+
var colorClasses = {
|
|
2544
|
+
primary: "text-primary",
|
|
2545
|
+
neutral: "text-gray-700",
|
|
2546
|
+
info: "text-sky-600",
|
|
2547
|
+
success: "text-emerald-600",
|
|
2548
|
+
warning: "text-amber-600",
|
|
2549
|
+
danger: "text-red-600",
|
|
2550
|
+
surface: "text-gray-900",
|
|
2551
|
+
bw: "text-black"
|
|
2552
|
+
};
|
|
2553
|
+
var Icon = ({ className, icon, size, color, ...rest }) => {
|
|
2554
|
+
const normalizeMdiName = (value) => {
|
|
2555
|
+
const trimmed = value.trim();
|
|
2556
|
+
if (!trimmed) {
|
|
2557
|
+
return "";
|
|
2558
|
+
}
|
|
2559
|
+
if (trimmed.includes(" ")) {
|
|
2560
|
+
return trimmed;
|
|
2561
|
+
}
|
|
2562
|
+
return trimmed.startsWith("mdi-") ? trimmed : `mdi-${trimmed}`;
|
|
2563
|
+
};
|
|
2564
|
+
let iconValue = "";
|
|
2565
|
+
if (typeof icon === "string") {
|
|
2566
|
+
iconValue = normalizeMdiName(icon);
|
|
2567
|
+
} else if (Array.isArray(icon)) {
|
|
2568
|
+
const [group, name] = icon;
|
|
2569
|
+
if (group === "mdi") {
|
|
2570
|
+
iconValue = normalizeMdiName(name);
|
|
2571
|
+
}
|
|
2572
|
+
}
|
|
2573
|
+
const classBase = "mdi";
|
|
2574
|
+
const sizeClass = size ? sizeClasses3[size] ?? sizeClasses3.medium : void 0;
|
|
2575
|
+
const colorClass = color ? colorClasses[color] ?? colorClasses.primary : void 0;
|
|
2576
|
+
return /* @__PURE__ */ jsxRuntime.jsx("i", { ...rest, className: tailwindMerge.twMerge(classBase, iconValue, sizeClass, colorClass, className) });
|
|
2577
|
+
};
|
|
2578
|
+
var Icon_default = Icon;
|
|
1744
2579
|
|
|
1745
2580
|
exports.Button = Button_default;
|
|
1746
2581
|
exports.Card = Card_default;
|
|
@@ -1748,10 +2583,15 @@ exports.Chip = Chip_default;
|
|
|
1748
2583
|
exports.Dialog = Dialog_default;
|
|
1749
2584
|
exports.ExpansionPanel = ExpansionPanel_default;
|
|
1750
2585
|
exports.ExpansionPanelItem = ExpansionPanelItem_default;
|
|
2586
|
+
exports.Hero = Hero_default;
|
|
2587
|
+
exports.Icon = Icon_default;
|
|
1751
2588
|
exports.Input = Input_default;
|
|
1752
2589
|
exports.List = List_default;
|
|
1753
2590
|
exports.ListItem = Item_default;
|
|
2591
|
+
exports.Masonry = Masonry_default;
|
|
1754
2592
|
exports.Menu = Menu_default;
|
|
2593
|
+
exports.ProfileCard = ProfileCard_default;
|
|
2594
|
+
exports.Select = Select_default;
|
|
1755
2595
|
exports.Slider = Slider_default;
|
|
1756
2596
|
exports.Switch = Switch_default;
|
|
1757
2597
|
exports.ToolTip = ToolTip_default;
|