@marcoschwartz/lite-ui 0.22.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +422 -433
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +422 -433
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -170,32 +170,35 @@ var themes = {
|
|
|
170
170
|
default: {
|
|
171
171
|
name: "default",
|
|
172
172
|
button: {
|
|
173
|
-
base: "font-
|
|
173
|
+
base: "font-medium rounded-md transition-all duration-150 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[hsl(var(--ring))]/50 active:scale-[0.98] gap-2",
|
|
174
174
|
variants: {
|
|
175
|
-
primary: "bg-
|
|
176
|
-
secondary: "bg-
|
|
177
|
-
success: "bg-
|
|
178
|
-
danger: "bg-
|
|
179
|
-
warning: "bg-
|
|
180
|
-
info: "bg-
|
|
175
|
+
primary: "bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] hover:bg-[hsl(var(--primary))]/90 shadow-sm",
|
|
176
|
+
secondary: "bg-[hsl(var(--secondary))] text-[hsl(var(--secondary-foreground))] hover:bg-[hsl(var(--secondary))]/80 border border-[hsl(var(--border))]",
|
|
177
|
+
success: "bg-[hsl(var(--success))] text-[hsl(var(--success-foreground))] hover:bg-[hsl(var(--success))]/90 shadow-sm",
|
|
178
|
+
danger: "bg-[hsl(var(--destructive))] text-[hsl(var(--destructive-foreground))] hover:bg-[hsl(var(--destructive))]/90 shadow-sm",
|
|
179
|
+
warning: "bg-[hsl(var(--warning))] text-[hsl(var(--warning-foreground))] hover:bg-[hsl(var(--warning))]/90 shadow-sm",
|
|
180
|
+
info: "bg-[hsl(var(--info))] text-[hsl(var(--info-foreground))] hover:bg-[hsl(var(--info))]/90 shadow-sm",
|
|
181
|
+
outline: "border border-[hsl(var(--border))] bg-transparent hover:bg-[hsl(var(--accent))] text-[hsl(var(--foreground))]",
|
|
182
|
+
ghost: "bg-transparent hover:bg-[hsl(var(--accent))] text-[hsl(var(--foreground))]",
|
|
183
|
+
link: "bg-transparent text-[hsl(var(--primary))] underline-offset-4 hover:underline !p-0 !h-auto !min-h-0 shadow-none"
|
|
181
184
|
},
|
|
182
185
|
sizes: {
|
|
183
|
-
sm: "px-3 py-1.5 text-sm
|
|
184
|
-
md: "px-4 py-2 text-
|
|
185
|
-
lg: "px-
|
|
186
|
-
xl: "px-
|
|
186
|
+
sm: "px-3 py-1.5 text-sm h-8",
|
|
187
|
+
md: "px-4 py-2 text-sm h-9",
|
|
188
|
+
lg: "px-5 py-2.5 text-base h-10",
|
|
189
|
+
xl: "px-6 py-3 text-base h-11"
|
|
187
190
|
},
|
|
188
|
-
disabled: "
|
|
191
|
+
disabled: "pointer-events-none opacity-50"
|
|
189
192
|
},
|
|
190
193
|
select: {
|
|
191
|
-
base: "w-full appearance-none rounded-
|
|
194
|
+
base: "w-full appearance-none rounded-md border border-[hsl(var(--input))] bg-transparent text-[hsl(var(--foreground))] text-left transition-colors duration-150 focus:outline-none focus:ring-1 focus:ring-[hsl(var(--ring))]/50 focus:border-[hsl(var(--ring))] hover:border-[hsl(var(--muted-foreground))] pr-10 cursor-pointer",
|
|
192
195
|
sizes: {
|
|
193
196
|
sm: "px-3 py-1.5 text-sm",
|
|
194
|
-
md: "px-
|
|
195
|
-
lg: "px-4 py-3 text-
|
|
196
|
-
xl: "px-
|
|
197
|
+
md: "px-3 py-2.5 text-sm",
|
|
198
|
+
lg: "px-4 py-3 text-base",
|
|
199
|
+
xl: "px-4 py-3.5 text-lg"
|
|
197
200
|
},
|
|
198
|
-
disabled: "
|
|
201
|
+
disabled: "pointer-events-none opacity-50 bg-[hsl(var(--muted))]"
|
|
199
202
|
}
|
|
200
203
|
},
|
|
201
204
|
minimalistic: {
|
|
@@ -208,7 +211,10 @@ var themes = {
|
|
|
208
211
|
success: "bg-transparent border-green-400 text-green-400 hover:bg-green-400 hover:text-black",
|
|
209
212
|
danger: "bg-transparent border-red-400 text-red-400 hover:bg-red-400 hover:text-black",
|
|
210
213
|
warning: "bg-transparent border-yellow-400 text-yellow-400 hover:bg-yellow-400 hover:text-black",
|
|
211
|
-
info: "bg-transparent border-blue-400 text-blue-400 hover:bg-blue-400 hover:text-black"
|
|
214
|
+
info: "bg-transparent border-blue-400 text-blue-400 hover:bg-blue-400 hover:text-black",
|
|
215
|
+
outline: "bg-transparent border-white text-white hover:bg-white hover:text-black",
|
|
216
|
+
ghost: "bg-transparent border-transparent text-white hover:bg-white/10",
|
|
217
|
+
link: "bg-transparent border-transparent text-white underline-offset-4 hover:underline !p-0 !h-auto !min-h-0"
|
|
212
218
|
},
|
|
213
219
|
sizes: {
|
|
214
220
|
sm: "px-4 py-2 text-sm uppercase tracking-wide min-h-[36px]",
|
|
@@ -432,11 +438,11 @@ var Select = ({
|
|
|
432
438
|
const baseStyles = theme.select.base;
|
|
433
439
|
const sizeStyles2 = theme.select.sizes[size];
|
|
434
440
|
const disabledStyles = disabled ? theme.select.disabled : "";
|
|
435
|
-
const errorStyles = error ? "border-
|
|
441
|
+
const errorStyles = error ? "border-[hsl(var(--destructive))] focus:ring-[hsl(var(--destructive))]" : "";
|
|
436
442
|
const buttonClasses = `${baseStyles} ${sizeStyles2} ${disabledStyles} ${errorStyles}`.trim();
|
|
437
|
-
const iconColor = themeName === "minimalistic" ? disabled ? "text-
|
|
438
|
-
const dropdownBaseStyles = themeName === "minimalistic" ? "bg-black border-2 border-white" : "bg-
|
|
439
|
-
const optionBaseStyles = themeName === "minimalistic" ? "text-white hover:bg-white hover:text-black transition-colors duration-200" : "text-
|
|
443
|
+
const iconColor = themeName === "minimalistic" ? disabled ? "text-[hsl(var(--muted-foreground))]" : "text-white" : "text-[hsl(var(--muted-foreground))]";
|
|
444
|
+
const dropdownBaseStyles = themeName === "minimalistic" ? "bg-black border-2 border-white" : "bg-[hsl(var(--popover))] border border-[hsl(var(--border))] shadow-lg";
|
|
445
|
+
const optionBaseStyles = themeName === "minimalistic" ? "text-white hover:bg-white hover:text-black transition-colors duration-200" : "text-[hsl(var(--popover-foreground))] hover:bg-[hsl(var(--accent))] transition-colors duration-150";
|
|
440
446
|
const optionSizeStyles = {
|
|
441
447
|
sm: "px-4 py-2 text-sm",
|
|
442
448
|
md: "px-4 py-2.5 text-base",
|
|
@@ -444,7 +450,7 @@ var Select = ({
|
|
|
444
450
|
xl: "px-5 py-4 text-xl"
|
|
445
451
|
}[size];
|
|
446
452
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: `w-full ${className}`, children: [
|
|
447
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("label", { className: "block text-sm font-medium text-
|
|
453
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("label", { className: "block text-sm font-medium text-[hsl(var(--foreground))] mb-1.5", children: label }),
|
|
448
454
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative inline-block w-full", ref: dropdownRef, ...props, children: [
|
|
449
455
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
450
456
|
"button",
|
|
@@ -477,14 +483,14 @@ var Select = ({
|
|
|
477
483
|
isOpen && !disabled && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
478
484
|
"div",
|
|
479
485
|
{
|
|
480
|
-
className: `absolute z-50 w-full mt-1 ${dropdownBaseStyles} rounded-
|
|
486
|
+
className: `absolute z-50 w-full mt-1 ${dropdownBaseStyles} rounded-md overflow-hidden`,
|
|
481
487
|
children: [
|
|
482
|
-
searchable && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: `sticky top-0 ${themeName === "minimalistic" ? "bg-black border-b-2 border-white" : "bg-
|
|
488
|
+
searchable && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: `sticky top-0 ${themeName === "minimalistic" ? "bg-black border-b-2 border-white" : "bg-[hsl(var(--popover))] border-b border-[hsl(var(--border))]"}`, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
483
489
|
"input",
|
|
484
490
|
{
|
|
485
491
|
ref: searchInputRef,
|
|
486
492
|
type: "text",
|
|
487
|
-
className: `w-full ${optionSizeStyles} ${themeName === "minimalistic" ? "bg-black text-white placeholder-
|
|
493
|
+
className: `w-full ${optionSizeStyles} ${themeName === "minimalistic" ? "bg-black text-white placeholder-[hsl(var(--muted-foreground))] focus:outline-none" : "bg-transparent text-[hsl(var(--popover-foreground))] placeholder:text-[hsl(var(--muted-foreground))] focus:outline-none"}`,
|
|
488
494
|
placeholder: searchPlaceholder,
|
|
489
495
|
value: searchQuery,
|
|
490
496
|
onChange: (e) => setSearchQuery(e.target.value),
|
|
@@ -529,20 +535,20 @@ var Select = ({
|
|
|
529
535
|
children: filteredOptions.length > 0 ? filteredOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
530
536
|
"div",
|
|
531
537
|
{
|
|
532
|
-
className: `${optionBaseStyles} ${optionSizeStyles} cursor-pointer ${value === option.value ? themeName === "minimalistic" ? "bg-white text-black" : "bg-
|
|
538
|
+
className: `${optionBaseStyles} ${optionSizeStyles} cursor-pointer ${value === option.value ? themeName === "minimalistic" ? "bg-white text-black" : "bg-[hsl(var(--accent))]" : ""}`,
|
|
533
539
|
onClick: () => handleSelect(option.value),
|
|
534
540
|
children: option.label
|
|
535
541
|
},
|
|
536
542
|
option.value
|
|
537
|
-
)) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: `${optionSizeStyles} ${themeName === "minimalistic" ? "text-
|
|
543
|
+
)) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: `${optionSizeStyles} ${themeName === "minimalistic" ? "text-[hsl(var(--muted-foreground))]" : "text-[hsl(var(--muted-foreground))]"} text-center`, children: "No results found" })
|
|
538
544
|
}
|
|
539
545
|
)
|
|
540
546
|
]
|
|
541
547
|
}
|
|
542
548
|
)
|
|
543
549
|
] }),
|
|
544
|
-
error && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "mt-1 text-sm text-
|
|
545
|
-
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "mt-1 text-sm text-
|
|
550
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--destructive))]", children: error }),
|
|
551
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--muted-foreground))]", children: helperText })
|
|
546
552
|
] });
|
|
547
553
|
};
|
|
548
554
|
|
|
@@ -563,7 +569,6 @@ var Modal = ({
|
|
|
563
569
|
size = "md",
|
|
564
570
|
showCloseButton = true
|
|
565
571
|
}) => {
|
|
566
|
-
const { theme } = useTheme();
|
|
567
572
|
(0, import_react3.useEffect)(() => {
|
|
568
573
|
const handleEscape = (e) => {
|
|
569
574
|
if (e.key === "Escape" && isOpen) {
|
|
@@ -584,7 +589,7 @@ var Modal = ({
|
|
|
584
589
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
585
590
|
"div",
|
|
586
591
|
{
|
|
587
|
-
className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/
|
|
592
|
+
className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/80 backdrop-blur-sm transition-all duration-200",
|
|
588
593
|
onClick: onClose,
|
|
589
594
|
role: "dialog",
|
|
590
595
|
"aria-modal": "true",
|
|
@@ -592,18 +597,18 @@ var Modal = ({
|
|
|
592
597
|
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
593
598
|
"div",
|
|
594
599
|
{
|
|
595
|
-
className: `relative w-full ${sizeClass} bg-
|
|
600
|
+
className: `relative w-full ${sizeClass} bg-[hsl(var(--card))] text-[hsl(var(--card-foreground))] rounded-[--radius] border border-[hsl(var(--border))] shadow-2xl transform transition-all duration-200 scale-100 animate-in`,
|
|
596
601
|
onClick: (e) => e.stopPropagation(),
|
|
597
602
|
children: [
|
|
598
|
-
(title || showCloseButton) && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center justify-between p-6 border-b border-
|
|
599
|
-
title && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h3", { id: "modal-title", className: "text-
|
|
603
|
+
(title || showCloseButton) && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center justify-between p-6 border-b border-[hsl(var(--border))]", children: [
|
|
604
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h3", { id: "modal-title", className: "text-lg font-semibold", children: title }),
|
|
600
605
|
showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
601
606
|
"button",
|
|
602
607
|
{
|
|
603
608
|
onClick: onClose,
|
|
604
|
-
className: "ml-auto text-
|
|
609
|
+
className: "ml-auto text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))] transition-colors rounded-[--radius] p-1 hover:bg-[hsl(var(--accent))]",
|
|
605
610
|
"aria-label": "Close modal",
|
|
606
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("svg", { className: "w-
|
|
611
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
607
612
|
}
|
|
608
613
|
)
|
|
609
614
|
] }),
|
|
@@ -624,17 +629,16 @@ var Navbar = ({
|
|
|
624
629
|
sticky = false,
|
|
625
630
|
variant = "solid"
|
|
626
631
|
}) => {
|
|
627
|
-
const { theme } = useTheme();
|
|
628
632
|
const baseClasses = sticky ? "sticky top-0 z-40" : "";
|
|
629
633
|
const getVariantClasses2 = () => {
|
|
630
634
|
switch (variant) {
|
|
631
635
|
case "glass":
|
|
632
|
-
return "bg-
|
|
636
|
+
return "bg-[hsl(var(--background))]/80 backdrop-blur-xl border-b border-[hsl(var(--border))]";
|
|
633
637
|
case "transparent":
|
|
634
638
|
return "bg-transparent";
|
|
635
639
|
case "solid":
|
|
636
640
|
default:
|
|
637
|
-
return "bg-
|
|
641
|
+
return "bg-[hsl(var(--background))] border-b border-[hsl(var(--border))]";
|
|
638
642
|
}
|
|
639
643
|
};
|
|
640
644
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("nav", { className: `${getVariantClasses2()} ${baseClasses} ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex justify-between items-center h-16", children: [
|
|
@@ -656,13 +660,12 @@ var Sidebar = ({
|
|
|
656
660
|
width = "md",
|
|
657
661
|
position = "left"
|
|
658
662
|
}) => {
|
|
659
|
-
const { theme } = useTheme();
|
|
660
663
|
const widthClass = widthClasses[width];
|
|
661
664
|
const borderClass = position === "left" ? "border-r" : "border-l";
|
|
662
665
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
663
666
|
"aside",
|
|
664
667
|
{
|
|
665
|
-
className: `${widthClass} bg-
|
|
668
|
+
className: `${widthClass} bg-[hsl(var(--card))] ${borderClass} border-[hsl(var(--border))] h-full overflow-y-auto ${className}`,
|
|
666
669
|
children
|
|
667
670
|
}
|
|
668
671
|
);
|
|
@@ -1259,12 +1262,12 @@ var breakpointClasses = {
|
|
|
1259
1262
|
var getVariantClasses = (variant) => {
|
|
1260
1263
|
switch (variant) {
|
|
1261
1264
|
case "glass":
|
|
1262
|
-
return "bg-
|
|
1265
|
+
return "bg-[hsl(var(--background))]/80 backdrop-blur-xl";
|
|
1263
1266
|
case "transparent":
|
|
1264
1267
|
return "bg-transparent";
|
|
1265
1268
|
case "solid":
|
|
1266
1269
|
default:
|
|
1267
|
-
return "bg-
|
|
1270
|
+
return "bg-[hsl(var(--background))] border-b border-[hsl(var(--border))]";
|
|
1268
1271
|
}
|
|
1269
1272
|
};
|
|
1270
1273
|
var AppShell = ({
|
|
@@ -1277,7 +1280,6 @@ var AppShell = ({
|
|
|
1277
1280
|
responsive = true,
|
|
1278
1281
|
className = ""
|
|
1279
1282
|
}) => {
|
|
1280
|
-
const { theme } = useTheme();
|
|
1281
1283
|
const [isMobileNavbarOpen, setIsMobileNavbarOpen] = (0, import_react5.useState)(defaultNavbarOpen);
|
|
1282
1284
|
const navbarWidth = navbar?.width || "md";
|
|
1283
1285
|
const navbarBreakpoint = navbar?.breakpoint || "md";
|
|
@@ -1288,7 +1290,7 @@ var AppShell = ({
|
|
|
1288
1290
|
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: `min-h-screen flex flex-col ${className}`, children: [
|
|
1289
1291
|
header && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "w-full", children: header }),
|
|
1290
1292
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex flex-1", children: [
|
|
1291
|
-
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("aside", { className: `${widthClass} bg-
|
|
1293
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("aside", { className: `${widthClass} bg-[hsl(var(--card))] border-r border-[hsl(var(--border))] h-full overflow-y-auto`, children: navbar.content }),
|
|
1292
1294
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("main", { className: "flex-1 overflow-y-auto", children })
|
|
1293
1295
|
] })
|
|
1294
1296
|
] });
|
|
@@ -1302,14 +1304,14 @@ var AppShell = ({
|
|
|
1302
1304
|
if (navbar && navbarPosition === "top") {
|
|
1303
1305
|
const mobileMenuClass = navbarBreakpoint === "sm" ? "sm:hidden" : navbarBreakpoint === "md" ? "md:hidden" : navbarBreakpoint === "lg" ? "lg:hidden" : "xl:hidden";
|
|
1304
1306
|
const desktopNavClass = navbarBreakpoint === "sm" ? "sm:flex" : navbarBreakpoint === "md" ? "md:flex" : navbarBreakpoint === "lg" ? "lg:flex" : "xl:flex";
|
|
1305
|
-
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: `min-h-screen flex flex-col bg-
|
|
1307
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: `min-h-screen flex flex-col bg-[hsl(var(--background))] ${className}`, children: [
|
|
1306
1308
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("nav", { className: `sticky top-0 z-30 ${getVariantClasses(navbar.variant)}`, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex justify-between items-center h-16", children: [
|
|
1307
|
-
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "flex items-center", children: navbarLogo ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "text-xl font-bold text-
|
|
1309
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "flex items-center", children: navbarLogo ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "text-xl font-bold text-[hsl(var(--foreground))]", children: navbarTitle }) : null }),
|
|
1308
1310
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: `hidden ${desktopNavClass} items-center gap-6`, children: navbar.content }),
|
|
1309
1311
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
1310
1312
|
"button",
|
|
1311
1313
|
{
|
|
1312
|
-
className: `${mobileMenuClass} p-2 rounded-lg hover:bg-
|
|
1314
|
+
className: `${mobileMenuClass} p-2 rounded-lg hover:bg-[hsl(var(--accent))] transition-colors`,
|
|
1313
1315
|
onClick: () => setIsMobileNavbarOpen(!isMobileNavbarOpen),
|
|
1314
1316
|
"aria-label": "Toggle menu",
|
|
1315
1317
|
children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(MenuIcon, { size: "md" })
|
|
@@ -1325,13 +1327,13 @@ var AppShell = ({
|
|
|
1325
1327
|
onClick: () => setIsMobileNavbarOpen(false)
|
|
1326
1328
|
}
|
|
1327
1329
|
),
|
|
1328
|
-
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: `${mobileMenuClass} fixed left-0 top-0 bottom-0 z-50 w-64 bg-
|
|
1329
|
-
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "p-4 border-b border-
|
|
1330
|
-
navbarLogo ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "text-xl font-bold text-
|
|
1330
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: `${mobileMenuClass} fixed left-0 top-0 bottom-0 z-50 w-64 bg-[hsl(var(--card))] shadow-2xl animate-in slide-in-from-left duration-300`, children: [
|
|
1331
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "p-4 border-b border-[hsl(var(--border))] flex items-center justify-between", children: [
|
|
1332
|
+
navbarLogo ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "text-xl font-bold text-[hsl(var(--foreground))]", children: navbarTitle }) : null,
|
|
1331
1333
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
1332
1334
|
"button",
|
|
1333
1335
|
{
|
|
1334
|
-
className: "p-1 rounded hover:bg-
|
|
1336
|
+
className: "p-1 rounded hover:bg-[hsl(var(--accent))] transition-colors",
|
|
1335
1337
|
onClick: () => setIsMobileNavbarOpen(false),
|
|
1336
1338
|
"aria-label": "Close menu",
|
|
1337
1339
|
children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
@@ -1356,13 +1358,13 @@ var AppShell = ({
|
|
|
1356
1358
|
const desktopNavbarClass = navbarBreakpoint === "sm" ? "sm:block" : navbarBreakpoint === "md" ? "md:block" : navbarBreakpoint === "lg" ? "lg:block" : "xl:block";
|
|
1357
1359
|
const mobileDrawerClass = navbarBreakpoint === "sm" ? "sm:hidden" : navbarBreakpoint === "md" ? "md:hidden" : navbarBreakpoint === "lg" ? "lg:hidden" : "xl:hidden";
|
|
1358
1360
|
const sidebarWidthClass = navbarWidth === "sm" ? "w-48" : navbarWidth === "lg" ? "w-80" : "w-64";
|
|
1359
|
-
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: `min-h-screen flex flex-col bg-
|
|
1361
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: `min-h-screen flex flex-col bg-[hsl(var(--background))] ${className}`, children: [
|
|
1360
1362
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: `${mobileHeaderClass} sticky top-0 z-30 ${getVariantClasses(navbar.variant)} px-4 py-3 flex items-center justify-between`, children: [
|
|
1361
|
-
navbarLogo ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "text-xl font-bold text-
|
|
1363
|
+
navbarLogo ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "text-xl font-bold text-[hsl(var(--foreground))]", children: navbarTitle }) : null,
|
|
1362
1364
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
1363
1365
|
"button",
|
|
1364
1366
|
{
|
|
1365
|
-
className: "p-2 rounded-lg hover:bg-
|
|
1367
|
+
className: "p-2 rounded-lg hover:bg-[hsl(var(--accent))] transition-colors",
|
|
1366
1368
|
onClick: () => setIsMobileNavbarOpen(!isMobileNavbarOpen),
|
|
1367
1369
|
"aria-label": "Toggle menu",
|
|
1368
1370
|
children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(MenuIcon, { size: "md" })
|
|
@@ -1371,7 +1373,7 @@ var AppShell = ({
|
|
|
1371
1373
|
] }),
|
|
1372
1374
|
header && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "w-full", children: header }),
|
|
1373
1375
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex flex-1 min-h-0", children: [
|
|
1374
|
-
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("aside", { className: `hidden ${desktopNavbarClass} ${sidebarWidthClass} ${navbar.variant === "glass" ? "bg-
|
|
1376
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("aside", { className: `hidden ${desktopNavbarClass} ${sidebarWidthClass} ${navbar.variant === "glass" ? "bg-[hsl(var(--background))]/80 backdrop-blur-xl" : navbar.variant === "transparent" ? "bg-transparent" : "bg-[hsl(var(--card))] border-r border-[hsl(var(--border))]"} overflow-y-auto shrink-0`, children: navbar.content }),
|
|
1375
1377
|
isMobileNavbarOpen && /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(import_jsx_runtime78.Fragment, { children: [
|
|
1376
1378
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
1377
1379
|
"div",
|
|
@@ -1380,13 +1382,13 @@ var AppShell = ({
|
|
|
1380
1382
|
onClick: () => setIsMobileNavbarOpen(false)
|
|
1381
1383
|
}
|
|
1382
1384
|
),
|
|
1383
|
-
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: `${mobileDrawerClass} fixed left-0 top-0 bottom-0 z-50 w-64 bg-
|
|
1384
|
-
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "p-4 border-b border-
|
|
1385
|
-
navbarLogo ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "text-xl font-bold text-
|
|
1385
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: `${mobileDrawerClass} fixed left-0 top-0 bottom-0 z-50 w-64 bg-[hsl(var(--card))] shadow-2xl animate-in slide-in-from-left duration-300`, children: [
|
|
1386
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "p-4 border-b border-[hsl(var(--border))] flex items-center justify-between", children: [
|
|
1387
|
+
navbarLogo ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "text-xl font-bold text-[hsl(var(--foreground))]", children: navbarTitle }) : null,
|
|
1386
1388
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
1387
1389
|
"button",
|
|
1388
1390
|
{
|
|
1389
|
-
className: "p-1 rounded hover:bg-
|
|
1391
|
+
className: "p-1 rounded hover:bg-[hsl(var(--accent))] transition-colors",
|
|
1390
1392
|
onClick: () => setIsMobileNavbarOpen(false),
|
|
1391
1393
|
"aria-label": "Close menu",
|
|
1392
1394
|
children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
@@ -1459,7 +1461,6 @@ var Drawer = ({
|
|
|
1459
1461
|
size = "md",
|
|
1460
1462
|
showCloseButton = true
|
|
1461
1463
|
}) => {
|
|
1462
|
-
const { theme } = useTheme();
|
|
1463
1464
|
(0, import_react6.useEffect)(() => {
|
|
1464
1465
|
const handleEscape = (e) => {
|
|
1465
1466
|
if (e.key === "Escape" && isOpen) {
|
|
@@ -1482,24 +1483,24 @@ var Drawer = ({
|
|
|
1482
1483
|
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
1483
1484
|
"div",
|
|
1484
1485
|
{
|
|
1485
|
-
className: "fixed inset-0 z-40 bg-black/
|
|
1486
|
+
className: "fixed inset-0 z-40 bg-black/80 backdrop-blur-sm transition-all duration-200",
|
|
1486
1487
|
onClick: onClose
|
|
1487
1488
|
}
|
|
1488
1489
|
),
|
|
1489
1490
|
/* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
|
|
1490
1491
|
"div",
|
|
1491
1492
|
{
|
|
1492
|
-
className: `fixed z-50 ${positionClass} ${sizeClass} bg-
|
|
1493
|
+
className: `fixed z-50 ${positionClass} ${sizeClass} bg-[hsl(var(--card))] text-[hsl(var(--card-foreground))] border-[hsl(var(--border))] shadow-2xl overflow-hidden flex flex-col ${slideClasses[position]} ${position === "left" ? "border-r" : position === "right" ? "border-l" : position === "top" ? "border-b" : "border-t"}`,
|
|
1493
1494
|
children: [
|
|
1494
|
-
(title || showCloseButton) && /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "flex items-center justify-between p-6 border-b border-
|
|
1495
|
-
title && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("h3", { className: "text-
|
|
1495
|
+
(title || showCloseButton) && /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "flex items-center justify-between p-6 border-b border-[hsl(var(--border))]", children: [
|
|
1496
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("h3", { className: "text-lg font-semibold", children: title }),
|
|
1496
1497
|
showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
1497
1498
|
"button",
|
|
1498
1499
|
{
|
|
1499
1500
|
onClick: onClose,
|
|
1500
|
-
className: "ml-auto text-
|
|
1501
|
+
className: "ml-auto text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))] transition-colors rounded-[--radius] p-1 hover:bg-[hsl(var(--accent))]",
|
|
1501
1502
|
"aria-label": "Close drawer",
|
|
1502
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("svg", { className: "w-
|
|
1503
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
1503
1504
|
}
|
|
1504
1505
|
)
|
|
1505
1506
|
] }),
|
|
@@ -1532,16 +1533,16 @@ var TextInput = (0, import_react7.forwardRef)(
|
|
|
1532
1533
|
...props
|
|
1533
1534
|
}, ref) => {
|
|
1534
1535
|
const { theme, themeName } = useTheme();
|
|
1535
|
-
const baseStyles =
|
|
1536
|
+
const baseStyles = "w-full appearance-none rounded-md border border-[hsl(var(--input))] bg-transparent text-[hsl(var(--foreground))] transition-colors duration-150 focus:outline-none focus:ring-1 focus:ring-[hsl(var(--ring))]/50 focus:border-[hsl(var(--ring))] hover:border-[hsl(var(--muted-foreground))] placeholder:text-[hsl(var(--muted-foreground))]";
|
|
1536
1537
|
const sizeStyle = sizeClasses4[size];
|
|
1537
|
-
const errorStyles = error ? "border-
|
|
1538
|
-
const disabledStyles = disabled ? "
|
|
1538
|
+
const errorStyles = error ? "border-[hsl(var(--destructive))] focus:ring-[hsl(var(--destructive))]" : "";
|
|
1539
|
+
const disabledStyles = disabled ? "pointer-events-none opacity-50 bg-[hsl(var(--muted))]" : "";
|
|
1539
1540
|
const widthStyle = fullWidth ? "w-full" : "";
|
|
1540
1541
|
const paddingWithIcon = leftIcon ? "pl-10" : rightIcon ? "pr-10" : "";
|
|
1541
1542
|
return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: `${widthStyle} ${className}`, children: [
|
|
1542
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("label", { className: "block text-sm font-medium text-
|
|
1543
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("label", { className: "block text-sm font-medium text-[hsl(var(--foreground))] mb-1.5", children: label }),
|
|
1543
1544
|
/* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: "relative", children: [
|
|
1544
|
-
leftIcon && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "absolute left-3 top-1/2 transform -translate-y-1/2 text-
|
|
1545
|
+
leftIcon && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "absolute left-3 top-1/2 transform -translate-y-1/2 text-[hsl(var(--muted-foreground))]", children: leftIcon }),
|
|
1545
1546
|
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
1546
1547
|
"input",
|
|
1547
1548
|
{
|
|
@@ -1551,10 +1552,10 @@ var TextInput = (0, import_react7.forwardRef)(
|
|
|
1551
1552
|
...props
|
|
1552
1553
|
}
|
|
1553
1554
|
),
|
|
1554
|
-
rightIcon && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-
|
|
1555
|
+
rightIcon && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-[hsl(var(--muted-foreground))]", children: rightIcon })
|
|
1555
1556
|
] }),
|
|
1556
|
-
error && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("p", { className: "mt-1 text-sm text-
|
|
1557
|
-
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("p", { className: "mt-1 text-sm text-
|
|
1557
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--destructive))]", children: error }),
|
|
1558
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--muted-foreground))]", children: helperText })
|
|
1558
1559
|
] });
|
|
1559
1560
|
}
|
|
1560
1561
|
);
|
|
@@ -1565,8 +1566,8 @@ var import_react8 = require("react");
|
|
|
1565
1566
|
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
1566
1567
|
var sizeClasses5 = {
|
|
1567
1568
|
sm: "px-3 py-1.5 text-sm",
|
|
1568
|
-
md: "px-
|
|
1569
|
-
lg: "px-4 py-3 text-
|
|
1569
|
+
md: "px-3 py-2.5 text-sm",
|
|
1570
|
+
lg: "px-4 py-3 text-base"
|
|
1570
1571
|
};
|
|
1571
1572
|
var NumberInput = ({
|
|
1572
1573
|
label,
|
|
@@ -1585,7 +1586,6 @@ var NumberInput = ({
|
|
|
1585
1586
|
placeholder,
|
|
1586
1587
|
className = ""
|
|
1587
1588
|
}) => {
|
|
1588
|
-
const { theme } = useTheme();
|
|
1589
1589
|
const inputRef = (0, import_react8.useRef)(null);
|
|
1590
1590
|
const [isFocused, setIsFocused] = (0, import_react8.useState)(false);
|
|
1591
1591
|
const clampValue = (val) => {
|
|
@@ -1630,15 +1630,15 @@ var NumberInput = ({
|
|
|
1630
1630
|
handleDecrement();
|
|
1631
1631
|
}
|
|
1632
1632
|
};
|
|
1633
|
-
const baseStyles = "w-full appearance-none rounded-
|
|
1633
|
+
const baseStyles = "w-full appearance-none rounded-md border border-[hsl(var(--input))] bg-transparent text-[hsl(var(--foreground))] transition-colors duration-150 focus:outline-none focus:ring-1 focus:ring-[hsl(var(--ring))]/50 focus:border-[hsl(var(--ring))] hover:border-[hsl(var(--muted-foreground))] placeholder:text-[hsl(var(--muted-foreground))]";
|
|
1634
1634
|
const sizeStyle = sizeClasses5[size];
|
|
1635
|
-
const errorStyles = error ? "border-
|
|
1636
|
-
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-
|
|
1635
|
+
const errorStyles = error ? "border-[hsl(var(--destructive))] focus:ring-[hsl(var(--destructive))]/50" : "";
|
|
1636
|
+
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-[hsl(var(--muted))]" : "";
|
|
1637
1637
|
const widthStyle = fullWidth ? "w-full" : "";
|
|
1638
1638
|
const paddingWithControls = !hideControls ? "pr-8" : "";
|
|
1639
1639
|
const displayValue = value !== void 0 ? value.toString() : "";
|
|
1640
1640
|
return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: `${widthStyle} ${className}`, children: [
|
|
1641
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("label", { className: "block text-sm font-medium text-
|
|
1641
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("label", { className: "block text-sm font-medium text-[hsl(var(--foreground))] mb-1.5", children: label }),
|
|
1642
1642
|
/* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "relative", children: [
|
|
1643
1643
|
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
1644
1644
|
"input",
|
|
@@ -1665,9 +1665,9 @@ var NumberInput = ({
|
|
|
1665
1665
|
type: "button",
|
|
1666
1666
|
onClick: handleIncrement,
|
|
1667
1667
|
disabled: disabled || max !== void 0 && value !== void 0 && value >= max,
|
|
1668
|
-
className: "px-2 py-0.5 hover:bg-
|
|
1668
|
+
className: "px-2 py-0.5 hover:bg-[hsl(var(--accent))] rounded transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
1669
1669
|
tabIndex: -1,
|
|
1670
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("svg", { className: "w-3 h-3 text-
|
|
1670
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("svg", { className: "w-3 h-3 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 3, d: "M5 15l7-7 7 7" }) })
|
|
1671
1671
|
}
|
|
1672
1672
|
),
|
|
1673
1673
|
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
@@ -1676,15 +1676,15 @@ var NumberInput = ({
|
|
|
1676
1676
|
type: "button",
|
|
1677
1677
|
onClick: handleDecrement,
|
|
1678
1678
|
disabled: disabled || min !== void 0 && value !== void 0 && value <= min,
|
|
1679
|
-
className: "px-2 py-0.5 hover:bg-
|
|
1679
|
+
className: "px-2 py-0.5 hover:bg-[hsl(var(--accent))] rounded transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
1680
1680
|
tabIndex: -1,
|
|
1681
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("svg", { className: "w-3 h-3 text-
|
|
1681
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("svg", { className: "w-3 h-3 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 3, d: "M19 9l-7 7-7-7" }) })
|
|
1682
1682
|
}
|
|
1683
1683
|
)
|
|
1684
1684
|
] })
|
|
1685
1685
|
] }),
|
|
1686
|
-
error && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("p", { className: "mt-1 text-sm text-
|
|
1687
|
-
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("p", { className: "mt-1 text-sm text-
|
|
1686
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--destructive))]", children: error }),
|
|
1687
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--muted-foreground))]", children: helperText })
|
|
1688
1688
|
] });
|
|
1689
1689
|
};
|
|
1690
1690
|
NumberInput.displayName = "NumberInput";
|
|
@@ -1760,18 +1760,18 @@ var ActionMenu = ({
|
|
|
1760
1760
|
const defaultTrigger = /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
1761
1761
|
"button",
|
|
1762
1762
|
{
|
|
1763
|
-
className: "p-2 rounded-md hover:bg-
|
|
1763
|
+
className: "p-2 rounded-md hover:bg-[hsl(var(--accent))] transition-colors",
|
|
1764
1764
|
"aria-label": "Open menu",
|
|
1765
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("svg", { className: "w-5 h-5 text-
|
|
1765
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("svg", { className: "w-5 h-5 text-[hsl(var(--muted-foreground))]", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 5v.01M12 12v.01M12 19v.01M12 6a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z" }) })
|
|
1766
1766
|
}
|
|
1767
1767
|
);
|
|
1768
|
-
const menuBaseStyles = themeName === "minimalistic" ? "bg-black border-2 border-white" : "bg-
|
|
1769
|
-
const itemBaseStyles = themeName === "minimalistic" ? "text-white hover:bg-white hover:text-black transition-colors duration-200" : "text-
|
|
1768
|
+
const menuBaseStyles = themeName === "minimalistic" ? "bg-black border-2 border-white" : "bg-[hsl(var(--popover))] border border-[hsl(var(--border))] shadow-lg";
|
|
1769
|
+
const itemBaseStyles = themeName === "minimalistic" ? "text-white hover:bg-white hover:text-black transition-colors duration-200" : "text-[hsl(var(--popover-foreground))] hover:bg-[hsl(var(--accent))] transition-colors";
|
|
1770
1770
|
const menu = isOpen && mounted && menuPosition ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
1771
1771
|
"div",
|
|
1772
1772
|
{
|
|
1773
1773
|
ref: menuRef,
|
|
1774
|
-
className: `fixed w-56 rounded-
|
|
1774
|
+
className: `fixed w-56 rounded-md ${menuBaseStyles} z-[9999] max-h-[80vh] overflow-auto`,
|
|
1775
1775
|
style: {
|
|
1776
1776
|
minWidth: "14rem",
|
|
1777
1777
|
top: `${menuPosition.top}px`,
|
|
@@ -1782,7 +1782,7 @@ var ActionMenu = ({
|
|
|
1782
1782
|
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
1783
1783
|
"div",
|
|
1784
1784
|
{
|
|
1785
|
-
className: "my-1 border-t border-
|
|
1785
|
+
className: "my-1 border-t border-[hsl(var(--border))]"
|
|
1786
1786
|
},
|
|
1787
1787
|
index
|
|
1788
1788
|
);
|
|
@@ -1792,7 +1792,7 @@ var ActionMenu = ({
|
|
|
1792
1792
|
{
|
|
1793
1793
|
onClick: () => handleItemClick(item),
|
|
1794
1794
|
disabled: item.disabled,
|
|
1795
|
-
className: `w-full text-left px-4 py-
|
|
1795
|
+
className: `w-full text-left px-4 py-2.5 flex items-center gap-3 ${itemBaseStyles} ${item.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"} ${item.variant === "danger" ? "text-[hsl(var(--destructive))] hover:bg-[hsl(var(--destructive))]/10" : ""}`,
|
|
1796
1796
|
children: [
|
|
1797
1797
|
item.icon && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "flex-shrink-0", children: item.icon }),
|
|
1798
1798
|
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "flex-1", children: item.label })
|
|
@@ -1824,13 +1824,12 @@ var Card = ({
|
|
|
1824
1824
|
hover = false,
|
|
1825
1825
|
...props
|
|
1826
1826
|
}) => {
|
|
1827
|
-
const { theme } = useTheme();
|
|
1828
1827
|
const paddingClass = paddingClasses[padding];
|
|
1829
|
-
const hoverClass = hover ? "hover:shadow-
|
|
1828
|
+
const hoverClass = hover ? "hover:shadow-lg hover:border-[hsl(var(--ring))]/50 cursor-pointer transition-all duration-200 ease-in-out" : "";
|
|
1830
1829
|
return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
1831
1830
|
"div",
|
|
1832
1831
|
{
|
|
1833
|
-
className: `bg-
|
|
1832
|
+
className: `bg-[hsl(var(--card))] text-[hsl(var(--card-foreground))] rounded-[--radius] border border-[hsl(var(--border))] shadow-sm ${paddingClass} ${hoverClass} ${className}`,
|
|
1834
1833
|
...props,
|
|
1835
1834
|
children
|
|
1836
1835
|
}
|
|
@@ -1840,16 +1839,16 @@ var Card = ({
|
|
|
1840
1839
|
// src/components/Alert.tsx
|
|
1841
1840
|
var import_jsx_runtime84 = require("react/jsx-runtime");
|
|
1842
1841
|
var variantStyles = {
|
|
1843
|
-
info: "bg-
|
|
1844
|
-
success: "bg-
|
|
1845
|
-
warning: "bg-
|
|
1846
|
-
error: "bg-
|
|
1842
|
+
info: "bg-[hsl(var(--info))]/10 border-[hsl(var(--info))]/20 text-[hsl(var(--info))]",
|
|
1843
|
+
success: "bg-[hsl(var(--success))]/10 border-[hsl(var(--success))]/20 text-[hsl(var(--success))]",
|
|
1844
|
+
warning: "bg-[hsl(var(--warning))]/10 border-[hsl(var(--warning))]/20 text-[hsl(var(--warning))]",
|
|
1845
|
+
error: "bg-[hsl(var(--destructive))]/10 border-[hsl(var(--destructive))]/20 text-[hsl(var(--destructive))]"
|
|
1847
1846
|
};
|
|
1848
1847
|
var iconStyles = {
|
|
1849
|
-
info: "text-
|
|
1850
|
-
success: "text-
|
|
1851
|
-
warning: "text-
|
|
1852
|
-
error: "text-
|
|
1848
|
+
info: "text-[hsl(var(--info))]",
|
|
1849
|
+
success: "text-[hsl(var(--success))]",
|
|
1850
|
+
warning: "text-[hsl(var(--warning))]",
|
|
1851
|
+
error: "text-[hsl(var(--destructive))]"
|
|
1853
1852
|
};
|
|
1854
1853
|
var Alert = ({
|
|
1855
1854
|
variant = "info",
|
|
@@ -1858,10 +1857,9 @@ var Alert = ({
|
|
|
1858
1857
|
onClose,
|
|
1859
1858
|
className = ""
|
|
1860
1859
|
}) => {
|
|
1861
|
-
const { theme } = useTheme();
|
|
1862
1860
|
const variantClass = variantStyles[variant];
|
|
1863
1861
|
const iconClass = iconStyles[variant];
|
|
1864
|
-
return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: `rounded-
|
|
1862
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: `rounded-[--radius] border p-4 ${variantClass} ${className}`, role: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "flex items-start gap-3", children: [
|
|
1865
1863
|
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: `flex-shrink-0 ${iconClass}`, children: [
|
|
1866
1864
|
variant === "info" && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z", clipRule: "evenodd" }) }),
|
|
1867
1865
|
variant === "success" && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z", clipRule: "evenodd" }) }),
|
|
@@ -1889,7 +1887,6 @@ var import_react10 = require("react");
|
|
|
1889
1887
|
var import_jsx_runtime85 = require("react/jsx-runtime");
|
|
1890
1888
|
var Checkbox = (0, import_react10.forwardRef)(
|
|
1891
1889
|
({ label, error, className = "", disabled, checked, ...props }, ref) => {
|
|
1892
|
-
const { theme } = useTheme();
|
|
1893
1890
|
return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className, children: [
|
|
1894
1891
|
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("label", { className: "flex items-center gap-2 cursor-pointer group", children: [
|
|
1895
1892
|
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "relative inline-flex items-center", children: [
|
|
@@ -1904,11 +1901,11 @@ var Checkbox = (0, import_react10.forwardRef)(
|
|
|
1904
1901
|
...props
|
|
1905
1902
|
}
|
|
1906
1903
|
),
|
|
1907
|
-
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: `w-4 h-4 border-2 rounded transition-all duration-200 flex items-center justify-center
|
|
1908
|
-
${error ? "border-
|
|
1909
|
-
${disabled ? "opacity-50 cursor-not-allowed bg-
|
|
1910
|
-
peer-checked:bg-
|
|
1911
|
-
peer-focus:ring-
|
|
1904
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: `w-4 h-4 border-2 rounded-sm transition-all duration-200 flex items-center justify-center
|
|
1905
|
+
${error ? "border-[hsl(var(--destructive))]" : "border-[hsl(var(--input))]"}
|
|
1906
|
+
${disabled ? "opacity-50 cursor-not-allowed bg-[hsl(var(--muted))]" : "peer-hover:border-[hsl(var(--ring))]"}
|
|
1907
|
+
peer-checked:bg-[hsl(var(--primary))] peer-checked:border-[hsl(var(--primary))]
|
|
1908
|
+
peer-focus:ring-1 peer-focus:ring-[hsl(var(--ring))]/50
|
|
1912
1909
|
`, children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
1913
1910
|
"svg",
|
|
1914
1911
|
{
|
|
@@ -1929,9 +1926,9 @@ var Checkbox = (0, import_react10.forwardRef)(
|
|
|
1929
1926
|
}
|
|
1930
1927
|
) })
|
|
1931
1928
|
] }),
|
|
1932
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: `text-sm text-
|
|
1929
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: `text-sm text-[hsl(var(--foreground))] ${disabled ? "opacity-50 cursor-not-allowed" : ""}`, children: label })
|
|
1933
1930
|
] }),
|
|
1934
|
-
error && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("p", { className: "mt-1 text-sm text-
|
|
1931
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("p", { className: "mt-1 text-sm text-[hsl(var(--destructive))]", children: error })
|
|
1935
1932
|
] });
|
|
1936
1933
|
}
|
|
1937
1934
|
);
|
|
@@ -1942,7 +1939,6 @@ var import_react11 = require("react");
|
|
|
1942
1939
|
var import_jsx_runtime86 = require("react/jsx-runtime");
|
|
1943
1940
|
var Toggle = (0, import_react11.forwardRef)(
|
|
1944
1941
|
({ label, size = "md", className = "", disabled, checked, ...props }, ref) => {
|
|
1945
|
-
const { theme } = useTheme();
|
|
1946
1942
|
const toggleClasses = {
|
|
1947
1943
|
sm: {
|
|
1948
1944
|
switch: "w-9 h-5",
|
|
@@ -1974,7 +1970,7 @@ var Toggle = (0, import_react11.forwardRef)(
|
|
|
1974
1970
|
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
|
|
1975
1971
|
"div",
|
|
1976
1972
|
{
|
|
1977
|
-
className: `${currentSize.switch} bg-
|
|
1973
|
+
className: `${currentSize.switch} bg-[hsl(var(--input))] peer-focus:ring-1 peer-focus:ring-[hsl(var(--ring))]/50 rounded-full peer peer-checked:bg-[hsl(var(--primary))] transition-colors`
|
|
1978
1974
|
}
|
|
1979
1975
|
),
|
|
1980
1976
|
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
|
|
@@ -1984,7 +1980,7 @@ var Toggle = (0, import_react11.forwardRef)(
|
|
|
1984
1980
|
}
|
|
1985
1981
|
)
|
|
1986
1982
|
] }),
|
|
1987
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "text-sm font-medium text-
|
|
1983
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "text-sm font-medium text-[hsl(var(--foreground))]", children: label })
|
|
1988
1984
|
] });
|
|
1989
1985
|
}
|
|
1990
1986
|
);
|
|
@@ -1993,12 +1989,12 @@ Toggle.displayName = "Toggle";
|
|
|
1993
1989
|
// src/components/Badge.tsx
|
|
1994
1990
|
var import_jsx_runtime87 = require("react/jsx-runtime");
|
|
1995
1991
|
var variantStyles2 = {
|
|
1996
|
-
default: "bg-
|
|
1997
|
-
primary: "bg-
|
|
1998
|
-
success: "bg-
|
|
1999
|
-
warning: "bg-
|
|
2000
|
-
error: "bg-
|
|
2001
|
-
info: "bg-
|
|
1992
|
+
default: "bg-[hsl(var(--secondary))] text-[hsl(var(--secondary-foreground))]",
|
|
1993
|
+
primary: "bg-[hsl(var(--primary))]/10 text-[hsl(var(--primary))]",
|
|
1994
|
+
success: "bg-[hsl(var(--success))]/10 text-[hsl(var(--success))]",
|
|
1995
|
+
warning: "bg-[hsl(var(--warning))]/10 text-[hsl(var(--warning))]",
|
|
1996
|
+
error: "bg-[hsl(var(--destructive))]/10 text-[hsl(var(--destructive))]",
|
|
1997
|
+
info: "bg-[hsl(var(--info))]/10 text-[hsl(var(--info))]"
|
|
2002
1998
|
};
|
|
2003
1999
|
var sizeStyles = {
|
|
2004
2000
|
sm: "px-2 py-0.5 text-xs",
|
|
@@ -2011,7 +2007,6 @@ var Badge = ({
|
|
|
2011
2007
|
size = "md",
|
|
2012
2008
|
className = ""
|
|
2013
2009
|
}) => {
|
|
2014
|
-
const { theme } = useTheme();
|
|
2015
2010
|
const variantClass = variantStyles2[variant];
|
|
2016
2011
|
const sizeClass = sizeStyles[size];
|
|
2017
2012
|
return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: `inline-flex items-center font-medium rounded-full ${variantClass} ${sizeClass} ${className}`, children });
|
|
@@ -2026,8 +2021,8 @@ var sizeClasses6 = {
|
|
|
2026
2021
|
xl: "w-16 h-16 border-4"
|
|
2027
2022
|
};
|
|
2028
2023
|
var colorClasses = {
|
|
2029
|
-
primary: "border-
|
|
2030
|
-
secondary: "border-
|
|
2024
|
+
primary: "border-[hsl(var(--primary))] border-t-transparent",
|
|
2025
|
+
secondary: "border-[hsl(var(--muted-foreground))] border-t-transparent",
|
|
2031
2026
|
white: "border-white border-t-transparent"
|
|
2032
2027
|
};
|
|
2033
2028
|
var Spinner = ({
|
|
@@ -2035,7 +2030,6 @@ var Spinner = ({
|
|
|
2035
2030
|
color = "primary",
|
|
2036
2031
|
className = ""
|
|
2037
2032
|
}) => {
|
|
2038
|
-
const { theme } = useTheme();
|
|
2039
2033
|
const sizeClass = sizeClasses6[size];
|
|
2040
2034
|
const colorClass = colorClasses[color];
|
|
2041
2035
|
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
@@ -2058,7 +2052,6 @@ var Tabs = ({
|
|
|
2058
2052
|
onChange,
|
|
2059
2053
|
className = ""
|
|
2060
2054
|
}) => {
|
|
2061
|
-
const { theme } = useTheme();
|
|
2062
2055
|
const [activeIndex, setActiveIndex] = (0, import_react12.useState)(defaultIndex);
|
|
2063
2056
|
const handleTabClick = (index) => {
|
|
2064
2057
|
if (tabs[index].disabled) return;
|
|
@@ -2066,12 +2059,12 @@ var Tabs = ({
|
|
|
2066
2059
|
onChange?.(index);
|
|
2067
2060
|
};
|
|
2068
2061
|
return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className, children: [
|
|
2069
|
-
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "border-b border-
|
|
2062
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "border-b border-[hsl(var(--border))]", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("nav", { className: "flex gap-6", "aria-label": "Tabs", children: tabs.map((tab, index) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
|
|
2070
2063
|
"button",
|
|
2071
2064
|
{
|
|
2072
2065
|
onClick: () => handleTabClick(index),
|
|
2073
2066
|
disabled: tab.disabled,
|
|
2074
|
-
className: `py-
|
|
2067
|
+
className: `py-3 px-1 border-b-2 font-medium text-sm transition-colors ${activeIndex === index ? "border-[hsl(var(--primary))] text-[hsl(var(--foreground))]" : "border-transparent text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))] hover:border-[hsl(var(--border))]"} ${tab.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"}`,
|
|
2075
2068
|
"aria-current": activeIndex === index ? "page" : void 0,
|
|
2076
2069
|
children: tab.label
|
|
2077
2070
|
},
|
|
@@ -2092,26 +2085,25 @@ function Table({
|
|
|
2092
2085
|
className = "",
|
|
2093
2086
|
responsive = true
|
|
2094
2087
|
}) {
|
|
2095
|
-
const { theme } = useTheme();
|
|
2096
2088
|
return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className, children: [
|
|
2097
2089
|
/* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: `${responsive ? "hidden md:block" : ""} overflow-x-auto`, children: [
|
|
2098
2090
|
/* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("table", { className: "w-full text-left", children: [
|
|
2099
|
-
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("thead", { className: "bg-
|
|
2091
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("thead", { className: "bg-[hsl(var(--muted))] border-b border-[hsl(var(--border))]", children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("tr", { children: columns.map((column, colIndex) => {
|
|
2100
2092
|
const isLast = colIndex === columns.length - 1;
|
|
2101
2093
|
return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
2102
2094
|
"th",
|
|
2103
2095
|
{
|
|
2104
|
-
className: isLast ? "px-6 py-3 text-xs font-medium text-
|
|
2096
|
+
className: isLast ? "px-6 py-3 text-xs font-medium text-[hsl(var(--muted-foreground))] uppercase tracking-wider relative" : "px-6 py-3 text-xs font-medium text-[hsl(var(--muted-foreground))] uppercase tracking-wider",
|
|
2105
2097
|
style: { width: column.width },
|
|
2106
2098
|
children: column.title
|
|
2107
2099
|
},
|
|
2108
2100
|
column.key
|
|
2109
2101
|
);
|
|
2110
2102
|
}) }) }),
|
|
2111
|
-
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("tbody", { className: "bg-
|
|
2103
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("tbody", { className: "bg-[hsl(var(--card))] divide-y divide-[hsl(var(--border))]", children: data.map((row, rowIndex) => {
|
|
2112
2104
|
const rowClasses = [
|
|
2113
|
-
striped && rowIndex % 2 === 1 ? "bg-
|
|
2114
|
-
hoverable ? "hover:bg-
|
|
2105
|
+
striped && rowIndex % 2 === 1 ? "bg-[hsl(var(--muted))]/50" : "",
|
|
2106
|
+
hoverable ? "hover:bg-[hsl(var(--muted))] transition-colors" : ""
|
|
2115
2107
|
].filter(Boolean).join(" ");
|
|
2116
2108
|
return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
2117
2109
|
"tr",
|
|
@@ -2122,7 +2114,7 @@ function Table({
|
|
|
2122
2114
|
return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
2123
2115
|
"td",
|
|
2124
2116
|
{
|
|
2125
|
-
className: isLast ? "px-6 py-4 text-sm text-
|
|
2117
|
+
className: isLast ? "px-6 py-4 text-sm text-[hsl(var(--foreground))] overflow-visible" : "px-6 py-4 text-sm text-[hsl(var(--foreground))]",
|
|
2126
2118
|
children: column.render ? column.render(row[column.key], row, rowIndex) : row[column.key]
|
|
2127
2119
|
},
|
|
2128
2120
|
column.key
|
|
@@ -2133,12 +2125,12 @@ function Table({
|
|
|
2133
2125
|
);
|
|
2134
2126
|
}) })
|
|
2135
2127
|
] }),
|
|
2136
|
-
data.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "text-center py-8 text-
|
|
2128
|
+
data.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "text-center py-8 text-[hsl(var(--muted-foreground))]", children: "No data available" })
|
|
2137
2129
|
] }),
|
|
2138
2130
|
responsive && /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "md:hidden space-y-3", children: [
|
|
2139
2131
|
data.map((row, rowIndex) => {
|
|
2140
2132
|
const cardClasses = [
|
|
2141
|
-
"bg-
|
|
2133
|
+
"bg-[hsl(var(--card))] border border-[hsl(var(--border))] rounded-[--radius] p-4 shadow-sm",
|
|
2142
2134
|
hoverable ? "hover:shadow-md transition-shadow" : "",
|
|
2143
2135
|
"relative isolate"
|
|
2144
2136
|
// Ensure cards are isolated layers
|
|
@@ -2150,10 +2142,10 @@ function Table({
|
|
|
2150
2142
|
children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(
|
|
2151
2143
|
"div",
|
|
2152
2144
|
{
|
|
2153
|
-
className: "flex justify-between items-start py-2 border-b border-
|
|
2145
|
+
className: "flex justify-between items-start py-2 border-b border-[hsl(var(--border))]/50 last:border-b-0",
|
|
2154
2146
|
children: [
|
|
2155
|
-
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "text-xs font-medium text-
|
|
2156
|
-
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "text-sm text-
|
|
2147
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "text-xs font-medium text-[hsl(var(--muted-foreground))] uppercase tracking-wider flex-shrink-0 mr-4", children: column.title }),
|
|
2148
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "text-sm text-[hsl(var(--foreground))] text-right", children: column.render ? column.render(row[column.key], row, rowIndex) : row[column.key] })
|
|
2157
2149
|
]
|
|
2158
2150
|
},
|
|
2159
2151
|
column.key
|
|
@@ -2162,7 +2154,7 @@ function Table({
|
|
|
2162
2154
|
row[keyField] || rowIndex
|
|
2163
2155
|
);
|
|
2164
2156
|
}),
|
|
2165
|
-
data.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "text-center py-8 text-
|
|
2157
|
+
data.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "text-center py-8 text-[hsl(var(--muted-foreground))]", children: "No data available" })
|
|
2166
2158
|
] })
|
|
2167
2159
|
] });
|
|
2168
2160
|
}
|
|
@@ -2176,7 +2168,6 @@ var Pagination = ({
|
|
|
2176
2168
|
siblingCount = 1,
|
|
2177
2169
|
className = ""
|
|
2178
2170
|
}) => {
|
|
2179
|
-
const { theme } = useTheme();
|
|
2180
2171
|
const range = (start, end) => {
|
|
2181
2172
|
const length = end - start + 1;
|
|
2182
2173
|
return Array.from({ length }, (_, idx) => idx + start);
|
|
@@ -2215,7 +2206,7 @@ var Pagination = ({
|
|
|
2215
2206
|
{
|
|
2216
2207
|
onClick: () => onPageChange(currentPage - 1),
|
|
2217
2208
|
disabled: currentPage === 1,
|
|
2218
|
-
className: "px-3 py-2 rounded-md text-sm font-medium text-
|
|
2209
|
+
className: "px-3 py-2 rounded-md text-sm font-medium text-[hsl(var(--foreground))] hover:bg-[hsl(var(--accent))] disabled:opacity-50 disabled:pointer-events-none transition-colors",
|
|
2219
2210
|
"aria-label": "Previous page",
|
|
2220
2211
|
children: "Previous"
|
|
2221
2212
|
}
|
|
@@ -2225,7 +2216,7 @@ var Pagination = ({
|
|
|
2225
2216
|
return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
|
|
2226
2217
|
"span",
|
|
2227
2218
|
{
|
|
2228
|
-
className: "px-3 py-2 text-
|
|
2219
|
+
className: "px-3 py-2 text-[hsl(var(--muted-foreground))]",
|
|
2229
2220
|
children: "..."
|
|
2230
2221
|
},
|
|
2231
2222
|
`dots-${index}`
|
|
@@ -2235,7 +2226,7 @@ var Pagination = ({
|
|
|
2235
2226
|
"button",
|
|
2236
2227
|
{
|
|
2237
2228
|
onClick: () => onPageChange(page),
|
|
2238
|
-
className: `px-3 py-2 rounded-md text-sm font-medium transition-colors ${currentPage === page ? "bg-
|
|
2229
|
+
className: `px-3 py-2 rounded-md text-sm font-medium transition-colors ${currentPage === page ? "bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]" : "text-[hsl(var(--foreground))] hover:bg-[hsl(var(--accent))]"}`,
|
|
2239
2230
|
"aria-label": `Page ${page}`,
|
|
2240
2231
|
"aria-current": currentPage === page ? "page" : void 0,
|
|
2241
2232
|
children: page
|
|
@@ -2248,7 +2239,7 @@ var Pagination = ({
|
|
|
2248
2239
|
{
|
|
2249
2240
|
onClick: () => onPageChange(currentPage + 1),
|
|
2250
2241
|
disabled: currentPage === totalPages,
|
|
2251
|
-
className: "px-3 py-2 rounded-md text-sm font-medium text-
|
|
2242
|
+
className: "px-3 py-2 rounded-md text-sm font-medium text-[hsl(var(--foreground))] hover:bg-[hsl(var(--accent))] disabled:opacity-50 disabled:pointer-events-none transition-colors",
|
|
2252
2243
|
"aria-label": "Next page",
|
|
2253
2244
|
children: "Next"
|
|
2254
2245
|
}
|
|
@@ -2287,7 +2278,6 @@ var DatePicker = ({
|
|
|
2287
2278
|
className = "",
|
|
2288
2279
|
placeholder = "Select date..."
|
|
2289
2280
|
}) => {
|
|
2290
|
-
const { theme } = useTheme();
|
|
2291
2281
|
const [isOpen, setIsOpen] = (0, import_react13.useState)(false);
|
|
2292
2282
|
const [viewDate, setViewDate] = (0, import_react13.useState)(value || /* @__PURE__ */ new Date());
|
|
2293
2283
|
const [mounted, setMounted] = (0, import_react13.useState)(false);
|
|
@@ -2377,14 +2367,14 @@ var DatePicker = ({
|
|
|
2377
2367
|
year: "numeric"
|
|
2378
2368
|
});
|
|
2379
2369
|
};
|
|
2380
|
-
const baseStyles = "w-full appearance-none rounded-
|
|
2381
|
-
const errorStyles = error ? "border-
|
|
2382
|
-
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-
|
|
2370
|
+
const baseStyles = "w-full appearance-none rounded-md border border-[hsl(var(--input))] bg-transparent text-[hsl(var(--foreground))] px-4 py-2.5 text-sm transition-colors duration-150 focus:outline-none focus:ring-1 focus:ring-[hsl(var(--ring))]/50 focus:border-[hsl(var(--ring))] hover:border-[hsl(var(--muted-foreground))] cursor-pointer";
|
|
2371
|
+
const errorStyles = error ? "border-[hsl(var(--destructive))] focus:ring-[hsl(var(--destructive))]/50" : "";
|
|
2372
|
+
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-[hsl(var(--muted))]" : "";
|
|
2383
2373
|
const calendar = isOpen && mounted && calendarPosition ? /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(
|
|
2384
2374
|
"div",
|
|
2385
2375
|
{
|
|
2386
2376
|
ref: calendarRef,
|
|
2387
|
-
className: "fixed z-[9999] bg-
|
|
2377
|
+
className: "fixed z-[9999] bg-[hsl(var(--popover))] rounded-md border border-[hsl(var(--border))] shadow-lg p-4",
|
|
2388
2378
|
style: {
|
|
2389
2379
|
top: `${calendarPosition.top}px`,
|
|
2390
2380
|
left: `${calendarPosition.left}px`,
|
|
@@ -2396,13 +2386,13 @@ var DatePicker = ({
|
|
|
2396
2386
|
"button",
|
|
2397
2387
|
{
|
|
2398
2388
|
onClick: handlePrevMonth,
|
|
2399
|
-
className: "p-2 hover:bg-
|
|
2389
|
+
className: "p-2 hover:bg-[hsl(var(--accent))] rounded-md transition-colors",
|
|
2400
2390
|
"aria-label": "Previous month",
|
|
2401
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("svg", { className: "w-5 h-5 text-
|
|
2391
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("svg", { className: "w-5 h-5 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) })
|
|
2402
2392
|
}
|
|
2403
2393
|
),
|
|
2404
2394
|
/* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
2405
|
-
/* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("h2", { className: "text-base font-semibold text-
|
|
2395
|
+
/* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("h2", { className: "text-base font-semibold text-[hsl(var(--foreground))]", children: [
|
|
2406
2396
|
MONTHS[month],
|
|
2407
2397
|
" ",
|
|
2408
2398
|
year
|
|
@@ -2411,7 +2401,7 @@ var DatePicker = ({
|
|
|
2411
2401
|
"button",
|
|
2412
2402
|
{
|
|
2413
2403
|
onClick: handleToday,
|
|
2414
|
-
className: "px-2 py-1 text-xs bg-
|
|
2404
|
+
className: "px-2 py-1 text-xs bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] rounded-md hover:bg-[hsl(var(--primary))]/90 transition-colors",
|
|
2415
2405
|
children: "Today"
|
|
2416
2406
|
}
|
|
2417
2407
|
)
|
|
@@ -2420,13 +2410,13 @@ var DatePicker = ({
|
|
|
2420
2410
|
"button",
|
|
2421
2411
|
{
|
|
2422
2412
|
onClick: handleNextMonth,
|
|
2423
|
-
className: "p-2 hover:bg-
|
|
2413
|
+
className: "p-2 hover:bg-[hsl(var(--accent))] rounded-md transition-colors",
|
|
2424
2414
|
"aria-label": "Next month",
|
|
2425
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("svg", { className: "w-5 h-5 text-
|
|
2415
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("svg", { className: "w-5 h-5 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
|
|
2426
2416
|
}
|
|
2427
2417
|
)
|
|
2428
2418
|
] }),
|
|
2429
|
-
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "grid grid-cols-7 gap-1 mb-2", children: DAYS.map((day) => /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "text-center text-xs font-semibold text-
|
|
2419
|
+
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "grid grid-cols-7 gap-1 mb-2", children: DAYS.map((day) => /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "text-center text-xs font-semibold text-[hsl(var(--muted-foreground))] py-1", children: day }, day)) }),
|
|
2430
2420
|
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "grid grid-cols-7 gap-1", children: calendarDays.map((date, index) => {
|
|
2431
2421
|
const isCurrentMonthDay = isCurrentMonth(date);
|
|
2432
2422
|
const isTodayDay = isToday(date);
|
|
@@ -2438,11 +2428,11 @@ var DatePicker = ({
|
|
|
2438
2428
|
onClick: () => handleDateClick(date),
|
|
2439
2429
|
disabled: isDisabledDay,
|
|
2440
2430
|
className: `
|
|
2441
|
-
aspect-square p-1 rounded-
|
|
2442
|
-
${!isCurrentMonthDay ? "text-
|
|
2443
|
-
${isTodayDay && !isSelectedDay ? "bg-
|
|
2444
|
-
${isSelectedDay ? "bg-
|
|
2445
|
-
${!isSelectedDay && !isDisabledDay ? "hover:bg-
|
|
2431
|
+
aspect-square p-1 rounded-md text-sm font-medium transition-all
|
|
2432
|
+
${!isCurrentMonthDay ? "text-[hsl(var(--muted-foreground))]/50" : "text-[hsl(var(--foreground))]"}
|
|
2433
|
+
${isTodayDay && !isSelectedDay ? "bg-[hsl(var(--accent))] text-[hsl(var(--primary))] font-bold" : ""}
|
|
2434
|
+
${isSelectedDay ? "bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] hover:bg-[hsl(var(--primary))]/90" : ""}
|
|
2435
|
+
${!isSelectedDay && !isDisabledDay ? "hover:bg-[hsl(var(--accent))]" : ""}
|
|
2446
2436
|
${isDisabledDay ? "opacity-30 cursor-not-allowed" : "cursor-pointer"}
|
|
2447
2437
|
`,
|
|
2448
2438
|
children: date.getDate()
|
|
@@ -2454,7 +2444,7 @@ var DatePicker = ({
|
|
|
2454
2444
|
}
|
|
2455
2445
|
) : null;
|
|
2456
2446
|
return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("div", { className, children: [
|
|
2457
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("label", { className: "block text-sm font-medium text-
|
|
2447
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("label", { className: "block text-sm font-medium text-[hsl(var(--foreground))] mb-1.5", children: label }),
|
|
2458
2448
|
/* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(
|
|
2459
2449
|
"div",
|
|
2460
2450
|
{
|
|
@@ -2462,13 +2452,13 @@ var DatePicker = ({
|
|
|
2462
2452
|
onClick: () => !disabled && setIsOpen(!isOpen),
|
|
2463
2453
|
className: `${baseStyles} ${errorStyles} ${disabledStyles} flex items-center justify-between`.trim(),
|
|
2464
2454
|
children: [
|
|
2465
|
-
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { className: !value ? "text-
|
|
2466
|
-
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)("svg", { className: "w-5 h-5 text-
|
|
2455
|
+
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { className: !value ? "text-[hsl(var(--muted-foreground))]" : "", children: value ? formatDate2(value) : placeholder }),
|
|
2456
|
+
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)("svg", { className: "w-5 h-5 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" }) })
|
|
2467
2457
|
]
|
|
2468
2458
|
}
|
|
2469
2459
|
),
|
|
2470
|
-
error && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("p", { className: "mt-1 text-sm text-
|
|
2471
|
-
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("p", { className: "mt-1 text-sm text-
|
|
2460
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--destructive))]", children: error }),
|
|
2461
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--muted-foreground))]", children: helperText }),
|
|
2472
2462
|
mounted && (0, import_react_dom2.createPortal)(calendar, document.body)
|
|
2473
2463
|
] });
|
|
2474
2464
|
};
|
|
@@ -2479,12 +2469,11 @@ var import_react14 = require("react");
|
|
|
2479
2469
|
var import_jsx_runtime93 = require("react/jsx-runtime");
|
|
2480
2470
|
var TimePicker = (0, import_react14.forwardRef)(
|
|
2481
2471
|
({ label, error, helperText, className = "", disabled, ...props }, ref) => {
|
|
2482
|
-
const
|
|
2483
|
-
const
|
|
2484
|
-
const
|
|
2485
|
-
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
2472
|
+
const baseStyles = "w-full appearance-none rounded-md border border-[hsl(var(--input))] bg-transparent text-[hsl(var(--foreground))] px-3 py-2.5 text-sm transition-colors duration-150 focus:outline-none focus:ring-1 focus:ring-[hsl(var(--ring))]/50 focus:border-[hsl(var(--ring))] hover:border-[hsl(var(--muted-foreground))]";
|
|
2473
|
+
const errorStyles = error ? "border-[hsl(var(--destructive))] focus:ring-[hsl(var(--destructive))]/50" : "";
|
|
2474
|
+
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-[hsl(var(--muted))]" : "";
|
|
2486
2475
|
return /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className, children: [
|
|
2487
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("label", { className: "block text-sm font-medium text-
|
|
2476
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("label", { className: "block text-sm font-medium text-[hsl(var(--foreground))] mb-1.5", children: label }),
|
|
2488
2477
|
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
2489
2478
|
"input",
|
|
2490
2479
|
{
|
|
@@ -2495,8 +2484,8 @@ var TimePicker = (0, import_react14.forwardRef)(
|
|
|
2495
2484
|
...props
|
|
2496
2485
|
}
|
|
2497
2486
|
),
|
|
2498
|
-
error && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("p", { className: "mt-1 text-sm text-
|
|
2499
|
-
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("p", { className: "mt-1 text-sm text-
|
|
2487
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--destructive))]", children: error }),
|
|
2488
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--muted-foreground))]", children: helperText })
|
|
2500
2489
|
] });
|
|
2501
2490
|
}
|
|
2502
2491
|
);
|
|
@@ -2521,6 +2510,7 @@ var MONTHS2 = [
|
|
|
2521
2510
|
"November",
|
|
2522
2511
|
"December"
|
|
2523
2512
|
];
|
|
2513
|
+
var SHORT_MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
|
|
2524
2514
|
var DateTimePicker = ({
|
|
2525
2515
|
label,
|
|
2526
2516
|
error,
|
|
@@ -2533,7 +2523,6 @@ var DateTimePicker = ({
|
|
|
2533
2523
|
className = "",
|
|
2534
2524
|
placeholder = "Select date and time..."
|
|
2535
2525
|
}) => {
|
|
2536
|
-
const { theme } = useTheme();
|
|
2537
2526
|
const [isOpen, setIsOpen] = (0, import_react15.useState)(false);
|
|
2538
2527
|
const [viewDate, setViewDate] = (0, import_react15.useState)(value || /* @__PURE__ */ new Date());
|
|
2539
2528
|
const [selectedTime, setSelectedTime] = (0, import_react15.useState)(
|
|
@@ -2644,14 +2633,15 @@ var DateTimePicker = ({
|
|
|
2644
2633
|
};
|
|
2645
2634
|
const formatDateTime = (date) => {
|
|
2646
2635
|
if (!date) return "";
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2636
|
+
const monthStr = SHORT_MONTHS[date.getMonth()];
|
|
2637
|
+
const day = date.getDate();
|
|
2638
|
+
const yearNum = date.getFullYear();
|
|
2639
|
+
const hours = date.getHours();
|
|
2640
|
+
const minutes = date.getMinutes();
|
|
2641
|
+
const period = hours >= 12 ? "PM" : "AM";
|
|
2642
|
+
const displayHours = hours % 12 || 12;
|
|
2643
|
+
const displayMinutes = minutes.toString().padStart(2, "0");
|
|
2644
|
+
return `${monthStr} ${day}, ${yearNum}, ${displayHours}:${displayMinutes} ${period}`;
|
|
2655
2645
|
};
|
|
2656
2646
|
const formatTime = (hours, minutes) => {
|
|
2657
2647
|
const period = hours >= 12 ? "PM" : "AM";
|
|
@@ -2659,14 +2649,14 @@ var DateTimePicker = ({
|
|
|
2659
2649
|
const displayMinutes = minutes.toString().padStart(2, "0");
|
|
2660
2650
|
return `${displayHours}:${displayMinutes} ${period}`;
|
|
2661
2651
|
};
|
|
2662
|
-
const baseStyles = "w-full appearance-none rounded-
|
|
2663
|
-
const errorStyles = error ? "border-
|
|
2664
|
-
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-
|
|
2652
|
+
const baseStyles = "w-full appearance-none rounded-md border border-[hsl(var(--input))] bg-transparent text-[hsl(var(--foreground))] px-4 py-2.5 text-sm transition-colors duration-150 focus:outline-none focus:ring-1 focus:ring-[hsl(var(--ring))]/50 focus:border-[hsl(var(--ring))] hover:border-[hsl(var(--muted-foreground))] cursor-pointer";
|
|
2653
|
+
const errorStyles = error ? "border-[hsl(var(--destructive))] focus:ring-[hsl(var(--destructive))]/50" : "";
|
|
2654
|
+
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-[hsl(var(--muted))]" : "";
|
|
2665
2655
|
const picker = isOpen && mounted && pickerPosition ? /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
2666
2656
|
"div",
|
|
2667
2657
|
{
|
|
2668
2658
|
ref: pickerRef,
|
|
2669
|
-
className: "fixed z-[9999] bg-
|
|
2659
|
+
className: "fixed z-[9999] bg-[hsl(var(--popover))] rounded-md border border-[hsl(var(--border))] shadow-lg p-4",
|
|
2670
2660
|
style: {
|
|
2671
2661
|
top: `${pickerPosition.top}px`,
|
|
2672
2662
|
left: `${pickerPosition.left}px`,
|
|
@@ -2678,13 +2668,13 @@ var DateTimePicker = ({
|
|
|
2678
2668
|
"button",
|
|
2679
2669
|
{
|
|
2680
2670
|
onClick: handlePrevMonth,
|
|
2681
|
-
className: "p-2 hover:bg-
|
|
2671
|
+
className: "p-2 hover:bg-[hsl(var(--accent))] rounded-md transition-colors",
|
|
2682
2672
|
"aria-label": "Previous month",
|
|
2683
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-5 h-5 text-
|
|
2673
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-5 h-5 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) })
|
|
2684
2674
|
}
|
|
2685
2675
|
),
|
|
2686
2676
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
2687
|
-
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("h2", { className: "text-base font-semibold text-
|
|
2677
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("h2", { className: "text-base font-semibold text-[hsl(var(--foreground))]", children: [
|
|
2688
2678
|
MONTHS2[month],
|
|
2689
2679
|
" ",
|
|
2690
2680
|
year
|
|
@@ -2693,7 +2683,7 @@ var DateTimePicker = ({
|
|
|
2693
2683
|
"button",
|
|
2694
2684
|
{
|
|
2695
2685
|
onClick: handleToday,
|
|
2696
|
-
className: "px-2 py-1 text-xs bg-
|
|
2686
|
+
className: "px-2 py-1 text-xs bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] rounded-md hover:bg-[hsl(var(--primary))]/90 transition-colors",
|
|
2697
2687
|
children: "Now"
|
|
2698
2688
|
}
|
|
2699
2689
|
)
|
|
@@ -2702,13 +2692,13 @@ var DateTimePicker = ({
|
|
|
2702
2692
|
"button",
|
|
2703
2693
|
{
|
|
2704
2694
|
onClick: handleNextMonth,
|
|
2705
|
-
className: "p-2 hover:bg-
|
|
2695
|
+
className: "p-2 hover:bg-[hsl(var(--accent))] rounded-md transition-colors",
|
|
2706
2696
|
"aria-label": "Next month",
|
|
2707
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-5 h-5 text-
|
|
2697
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-5 h-5 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
|
|
2708
2698
|
}
|
|
2709
2699
|
)
|
|
2710
2700
|
] }),
|
|
2711
|
-
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "grid grid-cols-7 gap-1 mb-2", children: DAYS2.map((day) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "text-center text-xs font-semibold text-
|
|
2701
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "grid grid-cols-7 gap-1 mb-2", children: DAYS2.map((day) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "text-center text-xs font-semibold text-[hsl(var(--muted-foreground))] py-1", children: day }, day)) }),
|
|
2712
2702
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "grid grid-cols-7 gap-1 mb-4", children: calendarDays.map((date, index) => {
|
|
2713
2703
|
const isCurrentMonthDay = isCurrentMonth(date);
|
|
2714
2704
|
const isTodayDay = isToday(date);
|
|
@@ -2720,11 +2710,11 @@ var DateTimePicker = ({
|
|
|
2720
2710
|
onClick: () => handleDateClick(date),
|
|
2721
2711
|
disabled: isDisabledDay,
|
|
2722
2712
|
className: `
|
|
2723
|
-
aspect-square p-1 rounded-
|
|
2724
|
-
${!isCurrentMonthDay ? "text-
|
|
2725
|
-
${isTodayDay && !isSelectedDay ? "bg-
|
|
2726
|
-
${isSelectedDay ? "bg-
|
|
2727
|
-
${!isSelectedDay && !isDisabledDay ? "hover:bg-
|
|
2713
|
+
aspect-square p-1 rounded-md text-sm font-medium transition-all
|
|
2714
|
+
${!isCurrentMonthDay ? "text-[hsl(var(--muted-foreground))]/50" : "text-[hsl(var(--foreground))]"}
|
|
2715
|
+
${isTodayDay && !isSelectedDay ? "bg-[hsl(var(--accent))] text-[hsl(var(--primary))] font-bold" : ""}
|
|
2716
|
+
${isSelectedDay ? "bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] hover:bg-[hsl(var(--primary))]/90" : ""}
|
|
2717
|
+
${!isSelectedDay && !isDisabledDay ? "hover:bg-[hsl(var(--accent))]" : ""}
|
|
2728
2718
|
${isDisabledDay ? "opacity-30 cursor-not-allowed" : "cursor-pointer"}
|
|
2729
2719
|
`,
|
|
2730
2720
|
children: date.getDate()
|
|
@@ -2732,18 +2722,18 @@ var DateTimePicker = ({
|
|
|
2732
2722
|
index
|
|
2733
2723
|
);
|
|
2734
2724
|
}) }),
|
|
2735
|
-
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "border-t border-
|
|
2725
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "border-t border-[hsl(var(--border))] pt-4", children: [
|
|
2736
2726
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center justify-center gap-4 mb-4", children: [
|
|
2737
2727
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex flex-col items-center", children: [
|
|
2738
|
-
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("label", { className: "text-xs font-semibold text-
|
|
2728
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("label", { className: "text-xs font-semibold text-[hsl(var(--muted-foreground))] mb-2", children: "Hour" }),
|
|
2739
2729
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex flex-col items-center gap-1", children: [
|
|
2740
2730
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
2741
2731
|
"button",
|
|
2742
2732
|
{
|
|
2743
2733
|
type: "button",
|
|
2744
2734
|
onClick: () => handleTimeChange((selectedTime.hours + 1) % 24, selectedTime.minutes),
|
|
2745
|
-
className: "p-1 hover:bg-
|
|
2746
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-4 h-4 text-
|
|
2735
|
+
className: "p-1 hover:bg-[hsl(var(--accent))] rounded transition-colors",
|
|
2736
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-4 h-4 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 15l7-7 7 7" }) })
|
|
2747
2737
|
}
|
|
2748
2738
|
),
|
|
2749
2739
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
@@ -2759,7 +2749,7 @@ var DateTimePicker = ({
|
|
|
2759
2749
|
handleTimeChange(val, selectedTime.minutes);
|
|
2760
2750
|
}
|
|
2761
2751
|
},
|
|
2762
|
-
className: "w-16 px-2 py-2 text-center border border-
|
|
2752
|
+
className: "w-16 px-2 py-2 text-center border border-[hsl(var(--input))] rounded-md bg-transparent text-[hsl(var(--foreground))] focus:outline-none focus:ring-1 focus:ring-[hsl(var(--ring))]/50 text-lg font-semibold [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none"
|
|
2763
2753
|
}
|
|
2764
2754
|
),
|
|
2765
2755
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
@@ -2767,23 +2757,23 @@ var DateTimePicker = ({
|
|
|
2767
2757
|
{
|
|
2768
2758
|
type: "button",
|
|
2769
2759
|
onClick: () => handleTimeChange((selectedTime.hours - 1 + 24) % 24, selectedTime.minutes),
|
|
2770
|
-
className: "p-1 hover:bg-
|
|
2771
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-4 h-4 text-
|
|
2760
|
+
className: "p-1 hover:bg-[hsl(var(--accent))] rounded transition-colors",
|
|
2761
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-4 h-4 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })
|
|
2772
2762
|
}
|
|
2773
2763
|
)
|
|
2774
2764
|
] })
|
|
2775
2765
|
] }),
|
|
2776
|
-
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "text-2xl font-bold text-
|
|
2766
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "text-2xl font-bold text-[hsl(var(--muted-foreground))] mt-8", children: ":" }),
|
|
2777
2767
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex flex-col items-center", children: [
|
|
2778
|
-
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("label", { className: "text-xs font-semibold text-
|
|
2768
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("label", { className: "text-xs font-semibold text-[hsl(var(--muted-foreground))] mb-2", children: "Minute" }),
|
|
2779
2769
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex flex-col items-center gap-1", children: [
|
|
2780
2770
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
2781
2771
|
"button",
|
|
2782
2772
|
{
|
|
2783
2773
|
type: "button",
|
|
2784
2774
|
onClick: () => handleTimeChange(selectedTime.hours, (selectedTime.minutes + 1) % 60),
|
|
2785
|
-
className: "p-1 hover:bg-
|
|
2786
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-4 h-4 text-
|
|
2775
|
+
className: "p-1 hover:bg-[hsl(var(--accent))] rounded transition-colors",
|
|
2776
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-4 h-4 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 15l7-7 7 7" }) })
|
|
2787
2777
|
}
|
|
2788
2778
|
),
|
|
2789
2779
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
@@ -2799,7 +2789,7 @@ var DateTimePicker = ({
|
|
|
2799
2789
|
handleTimeChange(selectedTime.hours, val);
|
|
2800
2790
|
}
|
|
2801
2791
|
},
|
|
2802
|
-
className: "w-16 px-2 py-2 text-center border border-
|
|
2792
|
+
className: "w-16 px-2 py-2 text-center border border-[hsl(var(--input))] rounded-md bg-transparent text-[hsl(var(--foreground))] focus:outline-none focus:ring-1 focus:ring-[hsl(var(--ring))]/50 text-lg font-semibold [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none"
|
|
2803
2793
|
}
|
|
2804
2794
|
),
|
|
2805
2795
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
@@ -2807,19 +2797,19 @@ var DateTimePicker = ({
|
|
|
2807
2797
|
{
|
|
2808
2798
|
type: "button",
|
|
2809
2799
|
onClick: () => handleTimeChange(selectedTime.hours, (selectedTime.minutes - 1 + 60) % 60),
|
|
2810
|
-
className: "p-1 hover:bg-
|
|
2811
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-4 h-4 text-
|
|
2800
|
+
className: "p-1 hover:bg-[hsl(var(--accent))] rounded transition-colors",
|
|
2801
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-4 h-4 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })
|
|
2812
2802
|
}
|
|
2813
2803
|
)
|
|
2814
2804
|
] })
|
|
2815
2805
|
] })
|
|
2816
2806
|
] }),
|
|
2817
|
-
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "text-center text-sm text-
|
|
2807
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "text-center text-sm text-[hsl(var(--muted-foreground))] mb-4", children: formatTime(selectedTime.hours, selectedTime.minutes) }),
|
|
2818
2808
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
2819
2809
|
"button",
|
|
2820
2810
|
{
|
|
2821
2811
|
onClick: handleDone,
|
|
2822
|
-
className: "w-full px-4 py-2 bg-
|
|
2812
|
+
className: "w-full px-4 py-2 bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] rounded-md hover:bg-[hsl(var(--primary))]/90 transition-colors font-medium",
|
|
2823
2813
|
children: "Done"
|
|
2824
2814
|
}
|
|
2825
2815
|
)
|
|
@@ -2828,7 +2818,7 @@ var DateTimePicker = ({
|
|
|
2828
2818
|
}
|
|
2829
2819
|
) : null;
|
|
2830
2820
|
return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className, children: [
|
|
2831
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("label", { className: "block text-sm font-medium text-
|
|
2821
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("label", { className: "block text-sm font-medium text-[hsl(var(--foreground))] mb-1.5", children: label }),
|
|
2832
2822
|
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
2833
2823
|
"div",
|
|
2834
2824
|
{
|
|
@@ -2836,13 +2826,13 @@ var DateTimePicker = ({
|
|
|
2836
2826
|
onClick: () => !disabled && setIsOpen(!isOpen),
|
|
2837
2827
|
className: `${baseStyles} ${errorStyles} ${disabledStyles} flex items-center justify-between`.trim(),
|
|
2838
2828
|
children: [
|
|
2839
|
-
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: !value ? "text-
|
|
2840
|
-
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-5 h-5 text-
|
|
2829
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: !value ? "text-[hsl(var(--muted-foreground))]" : "", children: value ? formatDateTime(value) : placeholder }),
|
|
2830
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "w-5 h-5 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" }) })
|
|
2841
2831
|
]
|
|
2842
2832
|
}
|
|
2843
2833
|
),
|
|
2844
|
-
error && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("p", { className: "mt-1 text-sm text-
|
|
2845
|
-
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("p", { className: "mt-1 text-sm text-
|
|
2834
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--destructive))]", children: error }),
|
|
2835
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--muted-foreground))]", children: helperText }),
|
|
2846
2836
|
mounted && (0, import_react_dom3.createPortal)(picker, document.body)
|
|
2847
2837
|
] });
|
|
2848
2838
|
};
|
|
@@ -2873,7 +2863,6 @@ var Calendar = ({
|
|
|
2873
2863
|
maxDate,
|
|
2874
2864
|
className = ""
|
|
2875
2865
|
}) => {
|
|
2876
|
-
const { theme } = useTheme();
|
|
2877
2866
|
const [currentDate, setCurrentDate] = (0, import_react16.useState)(value || /* @__PURE__ */ new Date());
|
|
2878
2867
|
const [viewDate, setViewDate] = (0, import_react16.useState)(value || /* @__PURE__ */ new Date());
|
|
2879
2868
|
const year = viewDate.getFullYear();
|
|
@@ -2926,19 +2915,19 @@ var Calendar = ({
|
|
|
2926
2915
|
setCurrentDate(today);
|
|
2927
2916
|
onChange?.(today);
|
|
2928
2917
|
};
|
|
2929
|
-
return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: `bg-
|
|
2918
|
+
return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: `bg-[hsl(var(--card))] rounded-md border border-[hsl(var(--border))] p-4 ${className}`, children: [
|
|
2930
2919
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [
|
|
2931
2920
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
2932
2921
|
"button",
|
|
2933
2922
|
{
|
|
2934
2923
|
onClick: handlePrevMonth,
|
|
2935
|
-
className: "p-2 hover:bg-
|
|
2924
|
+
className: "p-2 hover:bg-[hsl(var(--accent))] rounded-md transition-colors",
|
|
2936
2925
|
"aria-label": "Previous month",
|
|
2937
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("svg", { className: "w-5 h-5 text-
|
|
2926
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("svg", { className: "w-5 h-5 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) })
|
|
2938
2927
|
}
|
|
2939
2928
|
),
|
|
2940
2929
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
2941
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("h2", { className: "text-lg font-semibold text-
|
|
2930
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("h2", { className: "text-lg font-semibold text-[hsl(var(--foreground))]", children: [
|
|
2942
2931
|
MONTHS3[month],
|
|
2943
2932
|
" ",
|
|
2944
2933
|
year
|
|
@@ -2947,7 +2936,7 @@ var Calendar = ({
|
|
|
2947
2936
|
"button",
|
|
2948
2937
|
{
|
|
2949
2938
|
onClick: handleToday,
|
|
2950
|
-
className: "px-3 py-1 text-sm bg-
|
|
2939
|
+
className: "px-3 py-1 text-sm bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] rounded-md hover:bg-[hsl(var(--primary))]/90 transition-colors",
|
|
2951
2940
|
children: "Today"
|
|
2952
2941
|
}
|
|
2953
2942
|
)
|
|
@@ -2956,16 +2945,16 @@ var Calendar = ({
|
|
|
2956
2945
|
"button",
|
|
2957
2946
|
{
|
|
2958
2947
|
onClick: handleNextMonth,
|
|
2959
|
-
className: "p-2 hover:bg-
|
|
2948
|
+
className: "p-2 hover:bg-[hsl(var(--accent))] rounded-md transition-colors",
|
|
2960
2949
|
"aria-label": "Next month",
|
|
2961
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("svg", { className: "w-5 h-5 text-
|
|
2950
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("svg", { className: "w-5 h-5 text-[hsl(var(--muted-foreground))]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
|
|
2962
2951
|
}
|
|
2963
2952
|
)
|
|
2964
2953
|
] }),
|
|
2965
2954
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "grid grid-cols-7 gap-1 mb-2", children: DAYS3.map((day) => /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
2966
2955
|
"div",
|
|
2967
2956
|
{
|
|
2968
|
-
className: "text-center text-xs font-semibold text-
|
|
2957
|
+
className: "text-center text-xs font-semibold text-[hsl(var(--muted-foreground))] py-2",
|
|
2969
2958
|
children: day
|
|
2970
2959
|
},
|
|
2971
2960
|
day
|
|
@@ -2982,11 +2971,11 @@ var Calendar = ({
|
|
|
2982
2971
|
onClick: () => handleDateClick(date),
|
|
2983
2972
|
disabled: isDisabledDay,
|
|
2984
2973
|
className: `
|
|
2985
|
-
aspect-square p-2 rounded-
|
|
2986
|
-
${!isCurrentMonthDay ? "text-
|
|
2987
|
-
${isTodayDay && !isSelectedDay ? "bg-
|
|
2988
|
-
${isSelectedDay ? "bg-
|
|
2989
|
-
${!isSelectedDay && !isDisabledDay ? "hover:bg-
|
|
2974
|
+
aspect-square p-2 rounded-md text-sm font-medium transition-all
|
|
2975
|
+
${!isCurrentMonthDay ? "text-[hsl(var(--muted-foreground))]/50" : "text-[hsl(var(--foreground))]"}
|
|
2976
|
+
${isTodayDay && !isSelectedDay ? "bg-[hsl(var(--accent))] text-[hsl(var(--primary))] font-bold" : ""}
|
|
2977
|
+
${isSelectedDay ? "bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] hover:bg-[hsl(var(--primary))]/90" : ""}
|
|
2978
|
+
${!isSelectedDay && !isDisabledDay ? "hover:bg-[hsl(var(--accent))]" : ""}
|
|
2990
2979
|
${isDisabledDay ? "opacity-30 cursor-not-allowed" : "cursor-pointer"}
|
|
2991
2980
|
`,
|
|
2992
2981
|
children: date.getDate()
|
|
@@ -3043,13 +3032,13 @@ var Radio = ({
|
|
|
3043
3032
|
}
|
|
3044
3033
|
),
|
|
3045
3034
|
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: `w-4 h-4 rounded-full border-2 transition-all duration-200 flex items-center justify-center
|
|
3046
|
-
border-
|
|
3047
|
-
${isDisabled ? "bg-
|
|
3048
|
-
${isChecked ? "border-
|
|
3049
|
-
peer-focus:ring-
|
|
3050
|
-
`, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: `w-2 h-2 rounded-full bg-
|
|
3035
|
+
border-[hsl(var(--input))]
|
|
3036
|
+
${isDisabled ? "bg-[hsl(var(--muted))]" : "peer-hover:border-[hsl(var(--ring))]"}
|
|
3037
|
+
${isChecked ? "border-[hsl(var(--primary))] bg-[hsl(var(--background))]" : ""}
|
|
3038
|
+
peer-focus:ring-1 peer-focus:ring-[hsl(var(--ring))]/50
|
|
3039
|
+
`, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: `w-2 h-2 rounded-full bg-[hsl(var(--primary))] transition-all duration-200 ${isChecked ? "scale-100" : "scale-0"}` }) })
|
|
3051
3040
|
] }),
|
|
3052
|
-
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: `text-sm font-medium text-
|
|
3041
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: `text-sm font-medium text-[hsl(var(--foreground))] ${!isDisabled && "group-hover:text-[hsl(var(--foreground))]"}`, children: option.label })
|
|
3053
3042
|
]
|
|
3054
3043
|
},
|
|
3055
3044
|
option.value
|
|
@@ -3075,15 +3064,15 @@ var ProgressBar = ({
|
|
|
3075
3064
|
lg: "h-3"
|
|
3076
3065
|
};
|
|
3077
3066
|
const variantClasses = {
|
|
3078
|
-
default: "bg-
|
|
3079
|
-
success: "bg-
|
|
3080
|
-
warning: "bg-
|
|
3081
|
-
danger: "bg-
|
|
3067
|
+
default: "bg-[hsl(var(--primary))]",
|
|
3068
|
+
success: "bg-[hsl(var(--success))]",
|
|
3069
|
+
warning: "bg-[hsl(var(--warning))]",
|
|
3070
|
+
danger: "bg-[hsl(var(--destructive))]"
|
|
3082
3071
|
};
|
|
3083
3072
|
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: `w-full ${className}`, children: [
|
|
3084
3073
|
(showLabel || label) && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex justify-between items-center mb-1", children: [
|
|
3085
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-sm font-medium text-
|
|
3086
|
-
showLabel && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "text-sm font-medium text-
|
|
3074
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-sm font-medium text-[hsl(var(--foreground))]", children: label }),
|
|
3075
|
+
showLabel && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "text-sm font-medium text-[hsl(var(--muted-foreground))]", children: [
|
|
3087
3076
|
Math.round(percentage),
|
|
3088
3077
|
"%"
|
|
3089
3078
|
] })
|
|
@@ -3091,7 +3080,7 @@ var ProgressBar = ({
|
|
|
3091
3080
|
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
3092
3081
|
"div",
|
|
3093
3082
|
{
|
|
3094
|
-
className: `w-full bg-
|
|
3083
|
+
className: `w-full bg-[hsl(var(--muted))] rounded-full overflow-hidden ${sizeClasses7[size]}`,
|
|
3095
3084
|
role: "progressbar",
|
|
3096
3085
|
"aria-valuenow": value,
|
|
3097
3086
|
"aria-valuemin": 0,
|
|
@@ -3198,19 +3187,19 @@ var Slider = ({
|
|
|
3198
3187
|
if (range) {
|
|
3199
3188
|
return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: `w-full ${className}`, children: [
|
|
3200
3189
|
(label || showValue) && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex justify-between items-center mb-2", children: [
|
|
3201
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("label", { className: "text-sm font-medium text-
|
|
3202
|
-
showValue && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("span", { className: "text-sm font-medium text-
|
|
3190
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("label", { className: "text-sm font-medium text-[hsl(var(--foreground))]", children: label }),
|
|
3191
|
+
showValue && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("span", { className: "text-sm font-medium text-[hsl(var(--muted-foreground))]", children: [
|
|
3203
3192
|
rangeValue[0],
|
|
3204
3193
|
" - ",
|
|
3205
3194
|
rangeValue[1]
|
|
3206
3195
|
] })
|
|
3207
3196
|
] }),
|
|
3208
3197
|
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "relative h-10 flex items-center", ref: trackRef, children: [
|
|
3209
|
-
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "absolute w-full h-2 bg-
|
|
3198
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "absolute w-full h-2 bg-[hsl(var(--muted))] rounded-full" }),
|
|
3210
3199
|
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
3211
3200
|
"div",
|
|
3212
3201
|
{
|
|
3213
|
-
className: "absolute h-2 bg-
|
|
3202
|
+
className: "absolute h-2 bg-[hsl(var(--primary))] rounded-full pointer-events-none",
|
|
3214
3203
|
style: {
|
|
3215
3204
|
left: `${minPercentage}%`,
|
|
3216
3205
|
width: `${maxPercentage - minPercentage}%`
|
|
@@ -3220,7 +3209,7 @@ var Slider = ({
|
|
|
3220
3209
|
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
3221
3210
|
"div",
|
|
3222
3211
|
{
|
|
3223
|
-
className: `absolute w-4 h-4 -ml-2 rounded-
|
|
3212
|
+
className: `absolute w-4 h-4 -ml-2 rounded-full bg-[hsl(var(--background))] border-2 border-[hsl(var(--primary))] shadow-md cursor-pointer z-10
|
|
3224
3213
|
${disabled ? "opacity-50 cursor-not-allowed" : ""}
|
|
3225
3214
|
`,
|
|
3226
3215
|
style: { left: `${minPercentage}%` },
|
|
@@ -3237,7 +3226,7 @@ var Slider = ({
|
|
|
3237
3226
|
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
3238
3227
|
"div",
|
|
3239
3228
|
{
|
|
3240
|
-
className: `absolute w-4 h-4 -ml-2 rounded-
|
|
3229
|
+
className: `absolute w-4 h-4 -ml-2 rounded-full bg-[hsl(var(--background))] border-2 border-[hsl(var(--primary))] shadow-md cursor-pointer z-10
|
|
3241
3230
|
${disabled ? "opacity-50 cursor-not-allowed" : ""}
|
|
3242
3231
|
`,
|
|
3243
3232
|
style: { left: `${maxPercentage}%` },
|
|
@@ -3256,22 +3245,22 @@ var Slider = ({
|
|
|
3256
3245
|
}
|
|
3257
3246
|
return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: `w-full ${className}`, children: [
|
|
3258
3247
|
(label || showValue) && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex justify-between items-center mb-2", children: [
|
|
3259
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("label", { className: "text-sm font-medium text-
|
|
3260
|
-
showValue && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "text-sm font-medium text-
|
|
3248
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("label", { className: "text-sm font-medium text-[hsl(var(--foreground))]", children: label }),
|
|
3249
|
+
showValue && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "text-sm font-medium text-[hsl(var(--muted-foreground))]", children: value })
|
|
3261
3250
|
] }),
|
|
3262
3251
|
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "relative h-10 flex items-center", children: [
|
|
3263
|
-
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "absolute w-full h-2 bg-
|
|
3252
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "absolute w-full h-2 bg-[hsl(var(--muted))] rounded-full" }),
|
|
3264
3253
|
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
3265
3254
|
"div",
|
|
3266
3255
|
{
|
|
3267
|
-
className: "absolute h-2 bg-
|
|
3256
|
+
className: "absolute h-2 bg-[hsl(var(--primary))] rounded-full pointer-events-none",
|
|
3268
3257
|
style: { width: `${percentage}%` }
|
|
3269
3258
|
}
|
|
3270
3259
|
),
|
|
3271
3260
|
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
3272
3261
|
"div",
|
|
3273
3262
|
{
|
|
3274
|
-
className: `absolute w-4 h-4 -ml-2 rounded-
|
|
3263
|
+
className: `absolute w-4 h-4 -ml-2 rounded-full bg-[hsl(var(--background))] border-2 border-[hsl(var(--primary))] shadow-md pointer-events-none z-10
|
|
3275
3264
|
${disabled ? "opacity-50" : ""}
|
|
3276
3265
|
`,
|
|
3277
3266
|
style: { left: `${percentage}%` }
|
|
@@ -3287,7 +3276,7 @@ var Slider = ({
|
|
|
3287
3276
|
value,
|
|
3288
3277
|
onChange: handleChange,
|
|
3289
3278
|
disabled,
|
|
3290
|
-
className: "relative w-full h-10 bg-transparent appearance-none cursor-pointer disabled:cursor-not-allowed z-20\n [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:h-4\n [&::-webkit-slider-thumb]:rounded-
|
|
3279
|
+
className: "relative w-full h-10 bg-transparent appearance-none cursor-pointer disabled:cursor-not-allowed z-20\n [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:h-4\n [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-transparent [&::-webkit-slider-thumb]:cursor-pointer\n [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:rounded-full\n [&::-moz-range-thumb]:bg-transparent [&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-none",
|
|
3291
3280
|
"aria-label": label,
|
|
3292
3281
|
"aria-valuemin": min,
|
|
3293
3282
|
"aria-valuemax": max,
|
|
@@ -3308,7 +3297,7 @@ var Avatar = ({
|
|
|
3308
3297
|
size = "md",
|
|
3309
3298
|
shape = "circle",
|
|
3310
3299
|
className = "",
|
|
3311
|
-
fallbackColor = "bg-
|
|
3300
|
+
fallbackColor = "bg-[hsl(var(--primary))]"
|
|
3312
3301
|
}) => {
|
|
3313
3302
|
const [imageError, setImageError] = import_react19.default.useState(false);
|
|
3314
3303
|
const sizeClasses7 = {
|
|
@@ -3331,7 +3320,7 @@ var Avatar = ({
|
|
|
3331
3320
|
return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
3332
3321
|
"div",
|
|
3333
3322
|
{
|
|
3334
|
-
className: `${sizeClasses7[size]} ${shapeClass} flex items-center justify-center overflow-hidden ${showImage ? "bg-
|
|
3323
|
+
className: `${sizeClasses7[size]} ${shapeClass} flex items-center justify-center overflow-hidden ${showImage ? "bg-[hsl(var(--muted))]" : `${fallbackColor} text-white`} ${className}`,
|
|
3335
3324
|
children: showImage ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
3336
3325
|
"img",
|
|
3337
3326
|
{
|
|
@@ -3343,7 +3332,7 @@ var Avatar = ({
|
|
|
3343
3332
|
) : showInitials ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "font-semibold select-none", children: getInitials(name) }) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
3344
3333
|
"svg",
|
|
3345
3334
|
{
|
|
3346
|
-
className: "w-full h-full text-
|
|
3335
|
+
className: "w-full h-full text-[hsl(var(--muted-foreground))]",
|
|
3347
3336
|
fill: "currentColor",
|
|
3348
3337
|
viewBox: "0 0 24 24",
|
|
3349
3338
|
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" })
|
|
@@ -3367,8 +3356,8 @@ var Textarea = ({
|
|
|
3367
3356
|
}) => {
|
|
3368
3357
|
const sizeClasses7 = {
|
|
3369
3358
|
sm: "px-3 py-1.5 text-sm min-h-[80px]",
|
|
3370
|
-
md: "px-
|
|
3371
|
-
lg: "px-4 py-3 text-
|
|
3359
|
+
md: "px-3 py-2.5 text-sm min-h-[100px]",
|
|
3360
|
+
lg: "px-4 py-3 text-base min-h-[120px]"
|
|
3372
3361
|
};
|
|
3373
3362
|
const resizeClasses = {
|
|
3374
3363
|
none: "resize-none",
|
|
@@ -3376,13 +3365,13 @@ var Textarea = ({
|
|
|
3376
3365
|
horizontal: "resize-x",
|
|
3377
3366
|
both: "resize"
|
|
3378
3367
|
};
|
|
3379
|
-
const baseClasses = `w-full rounded-
|
|
3380
|
-
${error ? "border-
|
|
3381
|
-
bg-
|
|
3382
|
-
placeholder:text-
|
|
3383
|
-
disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-
|
|
3368
|
+
const baseClasses = `w-full rounded-md border transition-colors duration-150 focus:outline-none focus:ring-1 focus:ring-[hsl(var(--ring))]/50 focus:border-[hsl(var(--ring))]
|
|
3369
|
+
${error ? "border-[hsl(var(--destructive))] focus:ring-[hsl(var(--destructive))]/50" : "border-[hsl(var(--input))] hover:border-[hsl(var(--muted-foreground))]"}
|
|
3370
|
+
bg-transparent text-[hsl(var(--foreground))]
|
|
3371
|
+
placeholder:text-[hsl(var(--muted-foreground))]
|
|
3372
|
+
disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-[hsl(var(--muted))]`;
|
|
3384
3373
|
return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: `w-full ${className}`, children: [
|
|
3385
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("label", { className: "block text-sm font-medium text-
|
|
3374
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("label", { className: "block text-sm font-medium text-[hsl(var(--foreground))] mb-1.5", children: label }),
|
|
3386
3375
|
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
3387
3376
|
"textarea",
|
|
3388
3377
|
{
|
|
@@ -3391,8 +3380,8 @@ var Textarea = ({
|
|
|
3391
3380
|
...props
|
|
3392
3381
|
}
|
|
3393
3382
|
),
|
|
3394
|
-
error && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("p", { className: "mt-1 text-sm text-
|
|
3395
|
-
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("p", { className: "mt-1 text-sm text-
|
|
3383
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--destructive))]", children: error }),
|
|
3384
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("p", { className: "mt-1.5 text-sm text-[hsl(var(--muted-foreground))]", children: helperText })
|
|
3396
3385
|
] });
|
|
3397
3386
|
};
|
|
3398
3387
|
|
|
@@ -3630,7 +3619,7 @@ var RichTextEditor = ({
|
|
|
3630
3619
|
if (selection && selection.rangeCount > 0) {
|
|
3631
3620
|
const range = selection.getRangeAt(0);
|
|
3632
3621
|
const code = document.createElement("code");
|
|
3633
|
-
code.className = "bg-
|
|
3622
|
+
code.className = "bg-[hsl(var(--muted))] px-1.5 py-0.5 rounded text-sm font-mono";
|
|
3634
3623
|
try {
|
|
3635
3624
|
range.surroundContents(code);
|
|
3636
3625
|
handleInput();
|
|
@@ -3719,17 +3708,17 @@ var RichTextEditor = ({
|
|
|
3719
3708
|
handleInput();
|
|
3720
3709
|
}, [imageUrl, imageAlt, handleInput]);
|
|
3721
3710
|
const getButtonClass = (isActive) => {
|
|
3722
|
-
const baseClass = themeName === "minimalistic" ? "border border-white text-white transition-colors" : "border border-
|
|
3723
|
-
const activeClass = themeName === "minimalistic" ? "bg-white text-black" : "bg-
|
|
3724
|
-
const hoverClass = themeName === "minimalistic" ? "hover:bg-white hover:text-black" : "hover:bg-
|
|
3711
|
+
const baseClass = themeName === "minimalistic" ? "border border-white text-white transition-colors" : "border border-[hsl(var(--input))] text-[hsl(var(--foreground))] transition-colors";
|
|
3712
|
+
const activeClass = themeName === "minimalistic" ? "bg-white text-black" : "bg-[hsl(var(--primary))]/20 border-[hsl(var(--primary))]";
|
|
3713
|
+
const hoverClass = themeName === "minimalistic" ? "hover:bg-white hover:text-black" : "hover:bg-[hsl(var(--accent))]";
|
|
3725
3714
|
const disabledClass = disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer";
|
|
3726
3715
|
return `px-2.5 py-1.5 rounded text-sm font-medium ${baseClass} ${isActive ? activeClass : hoverClass} ${disabledClass}`;
|
|
3727
3716
|
};
|
|
3728
|
-
const editorBaseClass = themeName === "minimalistic" ? "bg-transparent border-2 border-white text-white placeholder:text-
|
|
3729
|
-
const focusClass = isFocused && !disabled ? themeName === "minimalistic" ? "border-white" : "border-
|
|
3717
|
+
const editorBaseClass = themeName === "minimalistic" ? "bg-transparent border-2 border-white text-white placeholder:text-[hsl(var(--muted-foreground))]" : "bg-[hsl(var(--card))] border border-[hsl(var(--input))] text-[hsl(var(--foreground))]";
|
|
3718
|
+
const focusClass = isFocused && !disabled ? themeName === "minimalistic" ? "border-white" : "border-[hsl(var(--primary))] ring-1 ring-[hsl(var(--ring))]/50" : "";
|
|
3730
3719
|
const errorClass = error ? "border-red-500 dark:border-red-400" : "";
|
|
3731
3720
|
return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: `w-full ${className}`, children: [
|
|
3732
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("label", { className: "block text-sm font-medium text-
|
|
3721
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("label", { className: "block text-sm font-medium text-[hsl(var(--foreground))] mb-2", children: label }),
|
|
3733
3722
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: `rounded-t-lg border-b ${editorBaseClass} p-2 flex flex-wrap gap-1`, children: [
|
|
3734
3723
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex gap-1", children: [
|
|
3735
3724
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
@@ -3777,7 +3766,7 @@ var RichTextEditor = ({
|
|
|
3777
3766
|
}
|
|
3778
3767
|
)
|
|
3779
3768
|
] }),
|
|
3780
|
-
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "w-px bg-
|
|
3769
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "w-px bg-[hsl(var(--border))] mx-1" }),
|
|
3781
3770
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex gap-1", children: [
|
|
3782
3771
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
3783
3772
|
"button",
|
|
@@ -3813,7 +3802,7 @@ var RichTextEditor = ({
|
|
|
3813
3802
|
}
|
|
3814
3803
|
)
|
|
3815
3804
|
] }),
|
|
3816
|
-
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "w-px bg-
|
|
3805
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "w-px bg-[hsl(var(--border))] mx-1" }),
|
|
3817
3806
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex gap-1", children: [
|
|
3818
3807
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
3819
3808
|
"button",
|
|
@@ -3838,7 +3827,7 @@ var RichTextEditor = ({
|
|
|
3838
3827
|
}
|
|
3839
3828
|
)
|
|
3840
3829
|
] }),
|
|
3841
|
-
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "w-px bg-
|
|
3830
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "w-px bg-[hsl(var(--border))] mx-1" }),
|
|
3842
3831
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex gap-1", children: [
|
|
3843
3832
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
3844
3833
|
"button",
|
|
@@ -3900,7 +3889,7 @@ var RichTextEditor = ({
|
|
|
3900
3889
|
}
|
|
3901
3890
|
),
|
|
3902
3891
|
error && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
3903
|
-
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("p", { className: "mt-1 text-sm text-
|
|
3892
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("p", { className: "mt-1 text-sm text-[hsl(var(--muted-foreground))]", children: helperText }),
|
|
3904
3893
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
3905
3894
|
Modal,
|
|
3906
3895
|
{
|
|
@@ -4059,31 +4048,31 @@ var ToastProvider = ({ children, position = "top-right" }) => {
|
|
|
4059
4048
|
};
|
|
4060
4049
|
var ToastItem = ({ toast: toast2, onClose }) => {
|
|
4061
4050
|
const typeStyles = {
|
|
4062
|
-
success: "bg-
|
|
4063
|
-
error: "bg-
|
|
4064
|
-
warning: "bg-
|
|
4065
|
-
info: "bg-
|
|
4051
|
+
success: "bg-[hsl(var(--success))]/10 border-[hsl(var(--success))] text-[hsl(var(--success))]",
|
|
4052
|
+
error: "bg-[hsl(var(--destructive))]/10 border-[hsl(var(--destructive))] text-[hsl(var(--destructive))]",
|
|
4053
|
+
warning: "bg-[hsl(var(--warning))]/10 border-[hsl(var(--warning))] text-[hsl(var(--warning))]",
|
|
4054
|
+
info: "bg-[hsl(var(--info))]/10 border-[hsl(var(--info))] text-[hsl(var(--info))]"
|
|
4066
4055
|
};
|
|
4067
4056
|
const typeIcons = {
|
|
4068
|
-
success: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(CheckIcon, { size: "sm", className: "text-
|
|
4069
|
-
error: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(CloseIcon, { size: "sm", className: "text-
|
|
4070
|
-
warning: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("svg", { className: "w-4 h-4 text-
|
|
4071
|
-
info: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("svg", { className: "w-4 h-4 text-
|
|
4057
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(CheckIcon, { size: "sm", className: "text-[hsl(var(--success))]" }),
|
|
4058
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(CloseIcon, { size: "sm", className: "text-[hsl(var(--destructive))]" }),
|
|
4059
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("svg", { className: "w-4 h-4 text-[hsl(var(--warning))]", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("path", { fillRule: "evenodd", d: "M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z", clipRule: "evenodd" }) }),
|
|
4060
|
+
info: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("svg", { className: "w-4 h-4 text-[hsl(var(--info))]", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z", clipRule: "evenodd" }) })
|
|
4072
4061
|
};
|
|
4073
4062
|
const type = toast2.type || "info";
|
|
4074
4063
|
return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
|
|
4075
4064
|
"div",
|
|
4076
4065
|
{
|
|
4077
|
-
className: `flex items-start gap-3 p-4 rounded-
|
|
4066
|
+
className: `flex items-start gap-3 p-4 rounded-md border-l-4 shadow-lg bg-[hsl(var(--card))] ${typeStyles[type]} animate-slide-in`,
|
|
4078
4067
|
role: "alert",
|
|
4079
4068
|
children: [
|
|
4080
4069
|
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "flex-shrink-0 mt-0.5", children: typeIcons[type] }),
|
|
4081
|
-
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)("p", { className: "flex-1 text-sm font-medium", children: toast2.message }),
|
|
4070
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)("p", { className: "flex-1 text-sm font-medium text-[hsl(var(--foreground))]", children: toast2.message }),
|
|
4082
4071
|
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
4083
4072
|
"button",
|
|
4084
4073
|
{
|
|
4085
4074
|
onClick: onClose,
|
|
4086
|
-
className: "flex-shrink-0 text-
|
|
4075
|
+
className: "flex-shrink-0 text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))] transition-colors",
|
|
4087
4076
|
"aria-label": "Close",
|
|
4088
4077
|
children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(CloseIcon, { size: "sm" })
|
|
4089
4078
|
}
|
|
@@ -4138,7 +4127,7 @@ var Stepper = ({
|
|
|
4138
4127
|
};
|
|
4139
4128
|
const shouldShowCounter = isHorizontal && steps.length > 3;
|
|
4140
4129
|
return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: `${isHorizontal ? "flex items-start w-full" : "flex flex-col"} ${className}`, children: [
|
|
4141
|
-
shouldShowCounter && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "md:hidden flex items-center mr-4 flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("span", { className: "text-sm font-medium text-
|
|
4130
|
+
shouldShowCounter && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "md:hidden flex items-center mr-4 flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("span", { className: "text-sm font-medium text-[hsl(var(--muted-foreground))]", children: [
|
|
4142
4131
|
currentStep,
|
|
4143
4132
|
"/",
|
|
4144
4133
|
steps.length
|
|
@@ -4162,11 +4151,11 @@ var Stepper = ({
|
|
|
4162
4151
|
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
4163
4152
|
"div",
|
|
4164
4153
|
{
|
|
4165
|
-
className: `flex items-center justify-center w-10 h-10 rounded-full border-2 transition-all ${isCompleted ? "bg-
|
|
4166
|
-
children: isCompleted ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(CheckIcon, { size: "sm", className: "text-
|
|
4154
|
+
className: `flex items-center justify-center w-10 h-10 rounded-full border-2 transition-all ${isCompleted ? "bg-[hsl(var(--primary))] border-[hsl(var(--primary))]" : isActive ? "border-[hsl(var(--primary))] bg-[hsl(var(--background))]" : "border-[hsl(var(--border))] bg-[hsl(var(--background))]"}`,
|
|
4155
|
+
children: isCompleted ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(CheckIcon, { size: "sm", className: "text-[hsl(var(--primary-foreground))]" }) : /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
4167
4156
|
"span",
|
|
4168
4157
|
{
|
|
4169
|
-
className: `text-sm font-semibold ${isActive ? "text-
|
|
4158
|
+
className: `text-sm font-semibold ${isActive ? "text-[hsl(var(--primary))]" : "text-[hsl(var(--muted-foreground))]"}`,
|
|
4170
4159
|
children: stepNumber
|
|
4171
4160
|
}
|
|
4172
4161
|
)
|
|
@@ -4175,7 +4164,7 @@ var Stepper = ({
|
|
|
4175
4164
|
!isLast && !isHorizontal && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
4176
4165
|
"div",
|
|
4177
4166
|
{
|
|
4178
|
-
className: `w-0.5 flex-1 min-h-[24px] ${isCompleted ? "bg-
|
|
4167
|
+
className: `w-0.5 flex-1 min-h-[24px] ${isCompleted ? "bg-[hsl(var(--primary))]" : "bg-[hsl(var(--border))]"}`
|
|
4179
4168
|
}
|
|
4180
4169
|
)
|
|
4181
4170
|
] }),
|
|
@@ -4183,11 +4172,11 @@ var Stepper = ({
|
|
|
4183
4172
|
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
4184
4173
|
"p",
|
|
4185
4174
|
{
|
|
4186
|
-
className: `text-sm font-medium whitespace-nowrap ${isActive || isCompleted ? "text-
|
|
4175
|
+
className: `text-sm font-medium whitespace-nowrap ${isActive || isCompleted ? "text-[hsl(var(--foreground))]" : "text-[hsl(var(--muted-foreground))]"}`,
|
|
4187
4176
|
children: step.label
|
|
4188
4177
|
}
|
|
4189
4178
|
),
|
|
4190
|
-
step.description && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("p", { className: "text-xs text-
|
|
4179
|
+
step.description && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("p", { className: "text-xs text-[hsl(var(--muted-foreground))] mt-1 whitespace-nowrap", children: step.description })
|
|
4191
4180
|
] })
|
|
4192
4181
|
] }),
|
|
4193
4182
|
!isLast && isHorizontal && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: `
|
|
@@ -4197,7 +4186,7 @@ var Stepper = ({
|
|
|
4197
4186
|
`, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
4198
4187
|
"div",
|
|
4199
4188
|
{
|
|
4200
|
-
className: `h-0.5 w-full ${isCompleted ? "bg-
|
|
4189
|
+
className: `h-0.5 w-full ${isCompleted ? "bg-[hsl(var(--primary))]" : "bg-[hsl(var(--border))]"}`
|
|
4201
4190
|
}
|
|
4202
4191
|
) })
|
|
4203
4192
|
] }, index);
|
|
@@ -4226,16 +4215,16 @@ var Divider = ({
|
|
|
4226
4215
|
right: "justify-end"
|
|
4227
4216
|
};
|
|
4228
4217
|
return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: `flex items-center ${alignmentClasses[labelPosition]} ${className}`, role: "separator", children: [
|
|
4229
|
-
labelPosition !== "left" && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: `flex-1 border-t ${variantClasses[variant]} border-
|
|
4230
|
-
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "px-4 text-sm text-
|
|
4231
|
-
labelPosition !== "right" && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: `flex-1 border-t ${variantClasses[variant]} border-
|
|
4218
|
+
labelPosition !== "left" && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: `flex-1 border-t ${variantClasses[variant]} border-[hsl(var(--input))]` }),
|
|
4219
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "px-4 text-sm text-[hsl(var(--muted-foreground))]", children: label }),
|
|
4220
|
+
labelPosition !== "right" && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: `flex-1 border-t ${variantClasses[variant]} border-[hsl(var(--input))]` })
|
|
4232
4221
|
] });
|
|
4233
4222
|
}
|
|
4234
4223
|
if (orientation === "vertical") {
|
|
4235
4224
|
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
4236
4225
|
"div",
|
|
4237
4226
|
{
|
|
4238
|
-
className: `inline-block h-full border-l ${variantClasses[variant]} border-
|
|
4227
|
+
className: `inline-block h-full border-l ${variantClasses[variant]} border-[hsl(var(--input))] ${className}`,
|
|
4239
4228
|
role: "separator",
|
|
4240
4229
|
"aria-orientation": "vertical"
|
|
4241
4230
|
}
|
|
@@ -4244,7 +4233,7 @@ var Divider = ({
|
|
|
4244
4233
|
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
4245
4234
|
"hr",
|
|
4246
4235
|
{
|
|
4247
|
-
className: `border-t ${variantClasses[variant]} border-
|
|
4236
|
+
className: `border-t ${variantClasses[variant]} border-[hsl(var(--input))] ${className}`,
|
|
4248
4237
|
role: "separator"
|
|
4249
4238
|
}
|
|
4250
4239
|
);
|
|
@@ -4326,7 +4315,7 @@ var FileUpload = ({
|
|
|
4326
4315
|
onChange?.(newFiles);
|
|
4327
4316
|
};
|
|
4328
4317
|
return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: `w-full ${className}`, children: [
|
|
4329
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("label", { className: "block text-sm font-medium text-
|
|
4318
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("label", { className: "block text-sm font-medium text-[hsl(var(--foreground))] mb-2", children: label }),
|
|
4330
4319
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
|
|
4331
4320
|
"div",
|
|
4332
4321
|
{
|
|
@@ -4334,7 +4323,7 @@ var FileUpload = ({
|
|
|
4334
4323
|
onDragOver: handleDragOver,
|
|
4335
4324
|
onDragLeave: handleDragLeave,
|
|
4336
4325
|
onClick: handleClick,
|
|
4337
|
-
className: `relative border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-all ${isDragging ? "border-
|
|
4326
|
+
className: `relative border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-all ${isDragging ? "border-[hsl(var(--primary))] bg-[hsl(var(--primary))]/10" : "border-[hsl(var(--input))] hover:border-[hsl(var(--muted-foreground))]"} ${disabled ? "opacity-50 cursor-not-allowed" : ""}`,
|
|
4338
4327
|
children: [
|
|
4339
4328
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
4340
4329
|
"input",
|
|
@@ -4349,13 +4338,13 @@ var FileUpload = ({
|
|
|
4349
4338
|
}
|
|
4350
4339
|
),
|
|
4351
4340
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex flex-col items-center gap-2", children: [
|
|
4352
|
-
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "w-12 h-12 rounded-full bg-
|
|
4341
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "w-12 h-12 rounded-full bg-[hsl(var(--muted))] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(UploadIcon, { size: "lg", className: "text-[hsl(var(--muted-foreground))]" }) }),
|
|
4353
4342
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { children: [
|
|
4354
|
-
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("p", { className: "text-sm font-medium text-
|
|
4355
|
-
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "text-
|
|
4343
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("p", { className: "text-sm font-medium text-[hsl(var(--foreground))]", children: [
|
|
4344
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "text-[hsl(var(--primary))]", children: "Click to upload" }),
|
|
4356
4345
|
" or drag and drop"
|
|
4357
4346
|
] }),
|
|
4358
|
-
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("p", { className: "text-xs text-
|
|
4347
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("p", { className: "text-xs text-[hsl(var(--muted-foreground))] mt-1", children: [
|
|
4359
4348
|
accept ? `Accepted: ${accept}` : "Any file type",
|
|
4360
4349
|
maxSize && ` \u2022 Max size: ${formatFileSize(maxSize)}`
|
|
4361
4350
|
] })
|
|
@@ -4364,15 +4353,15 @@ var FileUpload = ({
|
|
|
4364
4353
|
]
|
|
4365
4354
|
}
|
|
4366
4355
|
),
|
|
4367
|
-
helperText && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("p", { className: "mt-2 text-sm text-
|
|
4356
|
+
helperText && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("p", { className: "mt-2 text-sm text-[hsl(var(--muted-foreground))]", children: helperText }),
|
|
4368
4357
|
files.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "mt-4 space-y-2", children: files.map((file, index) => /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
|
|
4369
4358
|
"div",
|
|
4370
4359
|
{
|
|
4371
|
-
className: "flex items-center justify-between p-3 bg-
|
|
4360
|
+
className: "flex items-center justify-between p-3 bg-[hsl(var(--muted))] rounded-lg border border-[hsl(var(--border))]",
|
|
4372
4361
|
children: [
|
|
4373
4362
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
4374
|
-
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("p", { className: "text-sm font-medium text-
|
|
4375
|
-
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("p", { className: "text-xs text-
|
|
4363
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("p", { className: "text-sm font-medium text-[hsl(var(--foreground))] truncate", children: file.name }),
|
|
4364
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("p", { className: "text-xs text-[hsl(var(--muted-foreground))]", children: formatFileSize(file.size) })
|
|
4376
4365
|
] }),
|
|
4377
4366
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
4378
4367
|
"button",
|
|
@@ -4381,7 +4370,7 @@ var FileUpload = ({
|
|
|
4381
4370
|
e.stopPropagation();
|
|
4382
4371
|
handleRemoveFile(index);
|
|
4383
4372
|
},
|
|
4384
|
-
className: "ml-4 text-
|
|
4373
|
+
className: "ml-4 text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--destructive))] transition-colors",
|
|
4385
4374
|
"aria-label": "Remove file",
|
|
4386
4375
|
children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(CloseIcon, { size: "sm" })
|
|
4387
4376
|
}
|
|
@@ -4580,7 +4569,7 @@ var AudioPlayer = ({
|
|
|
4580
4569
|
};
|
|
4581
4570
|
const progress = duration > 0 ? currentTime / duration * 100 : 0;
|
|
4582
4571
|
if (variant === "mini") {
|
|
4583
|
-
return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: `flex items-center gap-2 p-2 bg-
|
|
4572
|
+
return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: `flex items-center gap-2 p-2 bg-[hsl(var(--card))] rounded-lg border border-[hsl(var(--border))] ${className}`, children: [
|
|
4584
4573
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("audio", { ref: audioRef, src, preload, loop, autoPlay }),
|
|
4585
4574
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
4586
4575
|
Button,
|
|
@@ -4594,11 +4583,11 @@ var AudioPlayer = ({
|
|
|
4594
4583
|
children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(PauseIcon, { size: "sm" }) : /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(PlayIcon, { size: "sm" })
|
|
4595
4584
|
}
|
|
4596
4585
|
),
|
|
4597
|
-
title && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-sm font-medium text-
|
|
4586
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-sm font-medium text-[hsl(var(--foreground))] truncate", children: title })
|
|
4598
4587
|
] });
|
|
4599
4588
|
}
|
|
4600
4589
|
if (variant === "compact") {
|
|
4601
|
-
return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: `flex items-center gap-3 p-3 bg-
|
|
4590
|
+
return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: `flex items-center gap-3 p-3 bg-[hsl(var(--card))] rounded-lg border border-[hsl(var(--border))] shadow-sm ${className}`, children: [
|
|
4602
4591
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("audio", { ref: audioRef, src, preload, loop, autoPlay }),
|
|
4603
4592
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
4604
4593
|
Button,
|
|
@@ -4613,16 +4602,16 @@ var AudioPlayer = ({
|
|
|
4613
4602
|
}
|
|
4614
4603
|
),
|
|
4615
4604
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
4616
|
-
title && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "text-sm font-medium text-
|
|
4617
|
-
artist && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "text-xs text-
|
|
4605
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "text-sm font-medium text-[hsl(var(--foreground))] truncate", children: title }),
|
|
4606
|
+
artist && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "text-xs text-[hsl(var(--muted-foreground))] truncate", children: artist })
|
|
4618
4607
|
] }),
|
|
4619
4608
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
4620
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-xs text-
|
|
4621
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "relative flex-1 h-1.5 bg-
|
|
4609
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-xs text-[hsl(var(--muted-foreground))] tabular-nums", children: formatTime(currentTime) }),
|
|
4610
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "relative flex-1 h-1.5 bg-[hsl(var(--muted))] rounded-full overflow-visible", children: [
|
|
4622
4611
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
4623
4612
|
"div",
|
|
4624
4613
|
{
|
|
4625
|
-
className: "absolute h-full bg-
|
|
4614
|
+
className: "absolute h-full bg-[hsl(var(--primary))] rounded-full transition-all",
|
|
4626
4615
|
style: { width: `${progress}%` }
|
|
4627
4616
|
}
|
|
4628
4617
|
),
|
|
@@ -4631,7 +4620,7 @@ var AudioPlayer = ({
|
|
|
4631
4620
|
return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
4632
4621
|
"div",
|
|
4633
4622
|
{
|
|
4634
|
-
className: "absolute top-0 bottom-0 w-1 -ml-0.5 bg-
|
|
4623
|
+
className: "absolute top-0 bottom-0 w-1 -ml-0.5 bg-[hsl(var(--background))] opacity-70 hover:opacity-100 hover:w-1.5 hover:-ml-0.5 cursor-pointer z-10 transition-all",
|
|
4635
4624
|
style: { left: `${markerPosition}%` },
|
|
4636
4625
|
onClick: () => jumpToChapter(chapter),
|
|
4637
4626
|
onMouseEnter: (e) => {
|
|
@@ -4658,8 +4647,8 @@ var AudioPlayer = ({
|
|
|
4658
4647
|
}
|
|
4659
4648
|
)
|
|
4660
4649
|
] }),
|
|
4661
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-xs text-
|
|
4662
|
-
currentChapter && showChapters && /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("span", { className: "text-xs text-
|
|
4650
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-xs text-[hsl(var(--muted-foreground))] tabular-nums", children: formatTime(duration) }),
|
|
4651
|
+
currentChapter && showChapters && /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("span", { className: "text-xs text-[hsl(var(--primary))] font-medium truncate max-w-[120px]", children: [
|
|
4663
4652
|
"\u2022 ",
|
|
4664
4653
|
currentChapter.title
|
|
4665
4654
|
] })
|
|
@@ -4669,7 +4658,7 @@ var AudioPlayer = ({
|
|
|
4669
4658
|
"button",
|
|
4670
4659
|
{
|
|
4671
4660
|
onClick: toggleMute,
|
|
4672
|
-
className: "text-
|
|
4661
|
+
className: "text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))]",
|
|
4673
4662
|
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
4674
4663
|
children: isMuted ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(VolumeOffIcon, { size: "sm" }) : /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(VolumeUpIcon, { size: "sm" })
|
|
4675
4664
|
}
|
|
@@ -4683,7 +4672,7 @@ var AudioPlayer = ({
|
|
|
4683
4672
|
step: 0.01,
|
|
4684
4673
|
value: isMuted ? 0 : volume,
|
|
4685
4674
|
onChange: handleVolumeChange,
|
|
4686
|
-
className: "w-16 h-1.5 bg-
|
|
4675
|
+
className: "w-16 h-1.5 bg-[hsl(var(--muted))] rounded-full appearance-none cursor-pointer\n [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3\n [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-[hsl(var(--primary))] [&::-webkit-slider-thumb]:cursor-pointer\n [&::-moz-range-thumb]:w-3 [&::-moz-range-thumb]:h-3 [&::-moz-range-thumb]:rounded-full\n [&::-moz-range-thumb]:bg-[hsl(var(--primary))] [&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-none",
|
|
4687
4676
|
"aria-label": "Volume"
|
|
4688
4677
|
}
|
|
4689
4678
|
)
|
|
@@ -4691,21 +4680,21 @@ var AudioPlayer = ({
|
|
|
4691
4680
|
hoveredChapter && showChapters && /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
|
|
4692
4681
|
"div",
|
|
4693
4682
|
{
|
|
4694
|
-
className: "fixed z-50 px-3 py-2 bg-
|
|
4683
|
+
className: "fixed z-50 px-3 py-2 bg-[hsl(var(--popover))] text-white text-xs font-medium rounded shadow-lg pointer-events-none transform -translate-x-1/2 -translate-y-full",
|
|
4695
4684
|
style: { left: hoverPosition.x, top: hoverPosition.y - 8 },
|
|
4696
4685
|
children: [
|
|
4697
4686
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "whitespace-nowrap", children: hoveredChapter.title }),
|
|
4698
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "text-
|
|
4699
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "absolute left-1/2 -bottom-1 w-2 h-2 bg-
|
|
4687
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "text-[hsl(var(--muted-foreground))] text-[10px] mt-0.5", children: formatTime(hoveredChapter.startTime) }),
|
|
4688
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "absolute left-1/2 -bottom-1 w-2 h-2 bg-[hsl(var(--popover))] transform -translate-x-1/2 rotate-45" })
|
|
4700
4689
|
]
|
|
4701
4690
|
}
|
|
4702
4691
|
)
|
|
4703
4692
|
] });
|
|
4704
4693
|
}
|
|
4705
|
-
return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: `bg-
|
|
4694
|
+
return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: `bg-[hsl(var(--card))] rounded-lg border border-[hsl(var(--border))] shadow-md overflow-hidden ${className}`, children: [
|
|
4706
4695
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("audio", { ref: audioRef, src, preload, loop, autoPlay }),
|
|
4707
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex items-center gap-4 p-4 border-b border-
|
|
4708
|
-
coverArt && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "w-16 h-16 flex-shrink-0 rounded-md overflow-hidden bg-
|
|
4696
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex items-center gap-4 p-4 border-b border-[hsl(var(--border))]", children: [
|
|
4697
|
+
coverArt && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "w-16 h-16 flex-shrink-0 rounded-md overflow-hidden bg-[hsl(var(--muted))]", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
4709
4698
|
"img",
|
|
4710
4699
|
{
|
|
4711
4700
|
src: coverArt,
|
|
@@ -4714,17 +4703,17 @@ var AudioPlayer = ({
|
|
|
4714
4703
|
}
|
|
4715
4704
|
) }),
|
|
4716
4705
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
4717
|
-
title && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("h3", { className: "text-base font-semibold text-
|
|
4718
|
-
artist && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("p", { className: "text-sm text-
|
|
4719
|
-
album && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("p", { className: "text-xs text-
|
|
4706
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("h3", { className: "text-base font-semibold text-[hsl(var(--foreground))] truncate", children: title }),
|
|
4707
|
+
artist && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("p", { className: "text-sm text-[hsl(var(--muted-foreground))] truncate", children: artist }),
|
|
4708
|
+
album && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("p", { className: "text-xs text-[hsl(var(--muted-foreground))] truncate", children: album })
|
|
4720
4709
|
] })
|
|
4721
4710
|
] }),
|
|
4722
4711
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "px-4 pt-4", children: [
|
|
4723
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "relative h-2 bg-
|
|
4712
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "relative h-2 bg-[hsl(var(--muted))] rounded-full overflow-visible", children: [
|
|
4724
4713
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
4725
4714
|
"div",
|
|
4726
4715
|
{
|
|
4727
|
-
className: "absolute h-full bg-
|
|
4716
|
+
className: "absolute h-full bg-[hsl(var(--primary))] rounded-full transition-all",
|
|
4728
4717
|
style: { width: `${progress}%` }
|
|
4729
4718
|
}
|
|
4730
4719
|
),
|
|
@@ -4733,7 +4722,7 @@ var AudioPlayer = ({
|
|
|
4733
4722
|
return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
4734
4723
|
"div",
|
|
4735
4724
|
{
|
|
4736
|
-
className: "absolute top-0 bottom-0 w-1 -ml-0.5 bg-
|
|
4725
|
+
className: "absolute top-0 bottom-0 w-1 -ml-0.5 bg-[hsl(var(--background))] opacity-70 hover:opacity-100 hover:w-1.5 hover:-ml-0.5 cursor-pointer z-10 transition-all",
|
|
4737
4726
|
style: { left: `${markerPosition}%` },
|
|
4738
4727
|
onClick: () => jumpToChapter(chapter),
|
|
4739
4728
|
onMouseEnter: (e) => {
|
|
@@ -4749,12 +4738,12 @@ var AudioPlayer = ({
|
|
|
4749
4738
|
hoveredChapter && showChapters && /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
|
|
4750
4739
|
"div",
|
|
4751
4740
|
{
|
|
4752
|
-
className: "fixed z-50 px-3 py-2 bg-
|
|
4741
|
+
className: "fixed z-50 px-3 py-2 bg-[hsl(var(--popover))] text-white text-xs font-medium rounded shadow-lg pointer-events-none transform -translate-x-1/2 -translate-y-full",
|
|
4753
4742
|
style: { left: hoverPosition.x, top: hoverPosition.y - 8 },
|
|
4754
4743
|
children: [
|
|
4755
4744
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "whitespace-nowrap", children: hoveredChapter.title }),
|
|
4756
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "text-
|
|
4757
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "absolute left-1/2 -bottom-1 w-2 h-2 bg-
|
|
4745
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "text-[hsl(var(--muted-foreground))] text-[10px] mt-0.5", children: formatTime(hoveredChapter.startTime) }),
|
|
4746
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "absolute left-1/2 -bottom-1 w-2 h-2 bg-[hsl(var(--popover))] transform -translate-x-1/2 rotate-45" })
|
|
4758
4747
|
]
|
|
4759
4748
|
}
|
|
4760
4749
|
),
|
|
@@ -4772,9 +4761,9 @@ var AudioPlayer = ({
|
|
|
4772
4761
|
}
|
|
4773
4762
|
)
|
|
4774
4763
|
] }),
|
|
4775
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex justify-between items-center mt-1 text-xs text-
|
|
4764
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex justify-between items-center mt-1 text-xs text-[hsl(var(--muted-foreground))] tabular-nums", children: [
|
|
4776
4765
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { children: formatTime(currentTime) }),
|
|
4777
|
-
currentChapter && showChapters && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-
|
|
4766
|
+
currentChapter && showChapters && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-[hsl(var(--primary))] font-medium truncate max-w-[200px]", children: currentChapter.title }),
|
|
4778
4767
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { children: formatTime(duration) })
|
|
4779
4768
|
] })
|
|
4780
4769
|
] }),
|
|
@@ -4784,7 +4773,7 @@ var AudioPlayer = ({
|
|
|
4784
4773
|
"button",
|
|
4785
4774
|
{
|
|
4786
4775
|
onClick: toggleMute,
|
|
4787
|
-
className: "text-
|
|
4776
|
+
className: "text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))] transition-colors",
|
|
4788
4777
|
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
4789
4778
|
children: isMuted ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(VolumeOffIcon, { size: "md" }) : /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(VolumeUpIcon, { size: "md" })
|
|
4790
4779
|
}
|
|
@@ -4798,7 +4787,7 @@ var AudioPlayer = ({
|
|
|
4798
4787
|
step: 0.01,
|
|
4799
4788
|
value: isMuted ? 0 : volume,
|
|
4800
4789
|
onChange: handleVolumeChange,
|
|
4801
|
-
className: "w-20 h-1.5 bg-
|
|
4790
|
+
className: "w-20 h-1.5 bg-[hsl(var(--muted))] rounded-full appearance-none cursor-pointer\n [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3\n [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-[hsl(var(--primary))] [&::-webkit-slider-thumb]:cursor-pointer\n [&::-moz-range-thumb]:w-3 [&::-moz-range-thumb]:h-3 [&::-moz-range-thumb]:rounded-full\n [&::-moz-range-thumb]:bg-[hsl(var(--primary))] [&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-none",
|
|
4802
4791
|
"aria-label": "Volume"
|
|
4803
4792
|
}
|
|
4804
4793
|
)
|
|
@@ -4845,7 +4834,7 @@ var AudioPlayer = ({
|
|
|
4845
4834
|
"button",
|
|
4846
4835
|
{
|
|
4847
4836
|
onClick: () => setShowChapterList(!showChapterList),
|
|
4848
|
-
className: "text-sm text-
|
|
4837
|
+
className: "text-sm text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))] transition-colors",
|
|
4849
4838
|
"aria-label": "Toggle chapters",
|
|
4850
4839
|
children: [
|
|
4851
4840
|
"Chapters (",
|
|
@@ -4855,16 +4844,16 @@ var AudioPlayer = ({
|
|
|
4855
4844
|
}
|
|
4856
4845
|
) })
|
|
4857
4846
|
] }),
|
|
4858
|
-
showChapters && showChapterList && chapters.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "border-t border-
|
|
4847
|
+
showChapters && showChapterList && chapters.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "border-t border-[hsl(var(--border))] bg-[hsl(var(--muted))]/50 max-h-48 overflow-y-auto", children: chapters.map((chapter, index) => {
|
|
4859
4848
|
const isCurrentChapter = currentChapter?.startTime === chapter.startTime;
|
|
4860
4849
|
return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
4861
4850
|
"button",
|
|
4862
4851
|
{
|
|
4863
4852
|
onClick: () => jumpToChapter(chapter),
|
|
4864
|
-
className: `w-full text-left px-4 py-2 hover:bg-
|
|
4853
|
+
className: `w-full text-left px-4 py-2 hover:bg-[hsl(var(--accent))] transition-colors ${isCurrentChapter ? "bg-[hsl(var(--primary))]/10 border-l-2 border-[hsl(var(--primary))]" : ""}`,
|
|
4865
4854
|
children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
4866
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: `text-sm font-medium ${isCurrentChapter ? "text-
|
|
4867
|
-
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-xs text-
|
|
4855
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: `text-sm font-medium ${isCurrentChapter ? "text-[hsl(var(--primary))]" : "text-[hsl(var(--foreground))]"}`, children: chapter.title }),
|
|
4856
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-xs text-[hsl(var(--muted-foreground))] tabular-nums", children: formatTime(chapter.startTime) })
|
|
4868
4857
|
] })
|
|
4869
4858
|
},
|
|
4870
4859
|
index
|
|
@@ -5143,7 +5132,7 @@ var VideoPlayer = ({
|
|
|
5143
5132
|
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
5144
5133
|
"div",
|
|
5145
5134
|
{
|
|
5146
|
-
className: "absolute h-full bg-
|
|
5135
|
+
className: "absolute h-full bg-[hsl(var(--primary))] rounded-full transition-all",
|
|
5147
5136
|
style: { width: `${progress}%` }
|
|
5148
5137
|
}
|
|
5149
5138
|
),
|
|
@@ -5196,7 +5185,7 @@ var VideoPlayer = ({
|
|
|
5196
5185
|
"button",
|
|
5197
5186
|
{
|
|
5198
5187
|
onClick: toggleMute,
|
|
5199
|
-
className: "text-white hover:text-
|
|
5188
|
+
className: "text-white hover:text-[hsl(var(--foreground))] transition-colors",
|
|
5200
5189
|
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
5201
5190
|
children: isMuted ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(VolumeOffIcon, { size: "sm" }) : /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(VolumeUpIcon, { size: "sm" })
|
|
5202
5191
|
}
|
|
@@ -5205,7 +5194,7 @@ var VideoPlayer = ({
|
|
|
5205
5194
|
"button",
|
|
5206
5195
|
{
|
|
5207
5196
|
onClick: toggleFullscreen,
|
|
5208
|
-
className: "text-white hover:text-
|
|
5197
|
+
className: "text-white hover:text-[hsl(var(--foreground))] transition-colors",
|
|
5209
5198
|
"aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
|
|
5210
5199
|
children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(FullscreenExitIcon, { size: "sm" }) : /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(FullscreenIcon, { size: "sm" })
|
|
5211
5200
|
}
|
|
@@ -5217,12 +5206,12 @@ var VideoPlayer = ({
|
|
|
5217
5206
|
hoveredChapter && showChapters && /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
|
|
5218
5207
|
"div",
|
|
5219
5208
|
{
|
|
5220
|
-
className: "fixed z-50 px-3 py-2 bg-
|
|
5209
|
+
className: "fixed z-50 px-3 py-2 bg-[hsl(var(--popover))] text-white text-xs font-medium rounded shadow-lg pointer-events-none transform -translate-x-1/2 -translate-y-full",
|
|
5221
5210
|
style: { left: hoverPosition.x, top: hoverPosition.y - 8 },
|
|
5222
5211
|
children: [
|
|
5223
5212
|
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "whitespace-nowrap", children: hoveredChapter.title }),
|
|
5224
|
-
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "text-
|
|
5225
|
-
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "absolute left-1/2 -bottom-1 w-2 h-2 bg-
|
|
5213
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "text-[hsl(var(--muted-foreground))] text-[10px] mt-0.5", children: formatTime(hoveredChapter.startTime) }),
|
|
5214
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "absolute left-1/2 -bottom-1 w-2 h-2 bg-[hsl(var(--popover))] transform -translate-x-1/2 rotate-45" })
|
|
5226
5215
|
]
|
|
5227
5216
|
}
|
|
5228
5217
|
)
|
|
@@ -5230,8 +5219,8 @@ var VideoPlayer = ({
|
|
|
5230
5219
|
}
|
|
5231
5220
|
);
|
|
5232
5221
|
}
|
|
5233
|
-
return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: `bg-
|
|
5234
|
-
title && /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "px-4 py-3 border-b border-
|
|
5222
|
+
return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: `bg-[hsl(var(--card))] rounded-lg border border-[hsl(var(--border))] shadow-md overflow-hidden ${className}`, children: [
|
|
5223
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "px-4 py-3 border-b border-[hsl(var(--border))]", children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("h3", { className: "text-base font-semibold text-[hsl(var(--foreground))] truncate", children: title }) }),
|
|
5235
5224
|
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
|
|
5236
5225
|
"div",
|
|
5237
5226
|
{
|
|
@@ -5274,7 +5263,7 @@ var VideoPlayer = ({
|
|
|
5274
5263
|
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
5275
5264
|
"div",
|
|
5276
5265
|
{
|
|
5277
|
-
className: "absolute h-full bg-
|
|
5266
|
+
className: "absolute h-full bg-[hsl(var(--primary))] rounded-full transition-all",
|
|
5278
5267
|
style: { width: `${progress}%` }
|
|
5279
5268
|
}
|
|
5280
5269
|
),
|
|
@@ -5343,7 +5332,7 @@ var VideoPlayer = ({
|
|
|
5343
5332
|
"button",
|
|
5344
5333
|
{
|
|
5345
5334
|
onClick: toggleMute,
|
|
5346
|
-
className: "text-white hover:text-
|
|
5335
|
+
className: "text-white hover:text-[hsl(var(--foreground))] transition-colors",
|
|
5347
5336
|
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
5348
5337
|
children: isMuted ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(VolumeOffIcon, { size: "md" }) : /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(VolumeUpIcon, { size: "md" })
|
|
5349
5338
|
}
|
|
@@ -5366,7 +5355,7 @@ var VideoPlayer = ({
|
|
|
5366
5355
|
"button",
|
|
5367
5356
|
{
|
|
5368
5357
|
onClick: toggleFullscreen,
|
|
5369
|
-
className: "text-white hover:text-
|
|
5358
|
+
className: "text-white hover:text-[hsl(var(--foreground))] transition-colors",
|
|
5370
5359
|
"aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
|
|
5371
5360
|
children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(FullscreenExitIcon, { size: "md" }) : /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(FullscreenIcon, { size: "md" })
|
|
5372
5361
|
}
|
|
@@ -5378,12 +5367,12 @@ var VideoPlayer = ({
|
|
|
5378
5367
|
hoveredChapter && showChapters && /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
|
|
5379
5368
|
"div",
|
|
5380
5369
|
{
|
|
5381
|
-
className: "fixed z-50 px-3 py-2 bg-
|
|
5370
|
+
className: "fixed z-50 px-3 py-2 bg-[hsl(var(--popover))] text-white text-xs font-medium rounded shadow-lg pointer-events-none transform -translate-x-1/2 -translate-y-full",
|
|
5382
5371
|
style: { left: hoverPosition.x, top: hoverPosition.y - 8 },
|
|
5383
5372
|
children: [
|
|
5384
5373
|
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "whitespace-nowrap", children: hoveredChapter.title }),
|
|
5385
|
-
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "text-
|
|
5386
|
-
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "absolute left-1/2 -bottom-1 w-2 h-2 bg-
|
|
5374
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "text-[hsl(var(--muted-foreground))] text-[10px] mt-0.5", children: formatTime(hoveredChapter.startTime) }),
|
|
5375
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "absolute left-1/2 -bottom-1 w-2 h-2 bg-[hsl(var(--popover))] transform -translate-x-1/2 rotate-45" })
|
|
5387
5376
|
]
|
|
5388
5377
|
}
|
|
5389
5378
|
)
|
|
@@ -5723,8 +5712,8 @@ var DefaultTooltipContent = ({
|
|
|
5723
5712
|
return null;
|
|
5724
5713
|
}
|
|
5725
5714
|
const formattedLabel = labelFormatter ? labelFormatter(label ?? "") : String(label ?? "");
|
|
5726
|
-
return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "bg-
|
|
5727
|
-
formattedLabel && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "px-3 py-2 bg-
|
|
5715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "bg-[hsl(var(--popover))] text-white rounded-lg shadow-xl border border-[hsl(var(--border))] overflow-hidden min-w-[120px]", children: [
|
|
5716
|
+
formattedLabel && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "px-3 py-2 bg-[hsl(var(--popover))] border-b border-[hsl(var(--border))]", children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-sm font-medium text-[hsl(var(--muted-foreground))]", children: formattedLabel }) }),
|
|
5728
5717
|
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "px-3 py-2 space-y-1", children: payload.map((item, index) => {
|
|
5729
5718
|
const formattedValue = formatter ? formatter(item.value, item.name, item) : String(item.value);
|
|
5730
5719
|
return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex items-center justify-between gap-4", children: [
|
|
@@ -5736,7 +5725,7 @@ var DefaultTooltipContent = ({
|
|
|
5736
5725
|
style: { backgroundColor: item.color }
|
|
5737
5726
|
}
|
|
5738
5727
|
),
|
|
5739
|
-
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-xs text-
|
|
5728
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-xs text-[hsl(var(--muted-foreground))]", children: item.name })
|
|
5740
5729
|
] }),
|
|
5741
5730
|
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-sm font-semibold text-white", children: formattedValue })
|
|
5742
5731
|
] }, `${item.name}-${index}`);
|
|
@@ -5945,7 +5934,7 @@ var Legend = ({
|
|
|
5945
5934
|
onMouseLeave,
|
|
5946
5935
|
children: [
|
|
5947
5936
|
renderIcon(item),
|
|
5948
|
-
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: "text-
|
|
5937
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: "text-[hsl(var(--foreground))]", children: formatter ? formatter(item.name, item, index) : item.name })
|
|
5949
5938
|
]
|
|
5950
5939
|
},
|
|
5951
5940
|
`${item.name}-${index}`
|
|
@@ -6089,7 +6078,7 @@ var ReferenceLine = ({
|
|
|
6089
6078
|
dominantBaseline,
|
|
6090
6079
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
6091
6080
|
fontWeight: "500",
|
|
6092
|
-
className: "fill-
|
|
6081
|
+
className: "fill-[hsl(var(--muted-foreground))]",
|
|
6093
6082
|
children: label
|
|
6094
6083
|
}
|
|
6095
6084
|
) : /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
@@ -6237,7 +6226,7 @@ var ReferenceArea = ({
|
|
|
6237
6226
|
dominantBaseline,
|
|
6238
6227
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
6239
6228
|
fontWeight: "500",
|
|
6240
|
-
className: "fill-
|
|
6229
|
+
className: "fill-[hsl(var(--muted-foreground))]",
|
|
6241
6230
|
children: label
|
|
6242
6231
|
}
|
|
6243
6232
|
) : /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
@@ -6294,7 +6283,7 @@ var CartesianGrid = ({
|
|
|
6294
6283
|
strokeDasharray,
|
|
6295
6284
|
strokeWidth,
|
|
6296
6285
|
strokeOpacity,
|
|
6297
|
-
className: !stroke ? "stroke-
|
|
6286
|
+
className: !stroke ? "stroke-[hsl(var(--border))]" : void 0
|
|
6298
6287
|
},
|
|
6299
6288
|
`h-${i}`
|
|
6300
6289
|
)),
|
|
@@ -6309,7 +6298,7 @@ var CartesianGrid = ({
|
|
|
6309
6298
|
strokeDasharray,
|
|
6310
6299
|
strokeWidth,
|
|
6311
6300
|
strokeOpacity,
|
|
6312
|
-
className: !stroke ? "stroke-
|
|
6301
|
+
className: !stroke ? "stroke-[hsl(var(--border))]" : void 0
|
|
6313
6302
|
},
|
|
6314
6303
|
`v-${i}`
|
|
6315
6304
|
))
|
|
@@ -6564,7 +6553,7 @@ var LineChart = ({
|
|
|
6564
6553
|
viewBox: `0 0 ${width} ${height}`,
|
|
6565
6554
|
role: "img",
|
|
6566
6555
|
"aria-label": accessibleDescription,
|
|
6567
|
-
className: "bg-
|
|
6556
|
+
className: "bg-[hsl(var(--card))]",
|
|
6568
6557
|
children: [
|
|
6569
6558
|
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("defs", { children: animate && data.map((series, i) => /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("style", { children: `
|
|
6570
6559
|
@keyframes drawLine${i} {
|
|
@@ -6591,7 +6580,7 @@ var LineChart = ({
|
|
|
6591
6580
|
stroke: "currentColor",
|
|
6592
6581
|
strokeWidth: 1,
|
|
6593
6582
|
strokeDasharray: "4 4",
|
|
6594
|
-
className: "text-
|
|
6583
|
+
className: "text-[hsl(var(--muted-foreground))]",
|
|
6595
6584
|
pointerEvents: "none"
|
|
6596
6585
|
}
|
|
6597
6586
|
),
|
|
@@ -6669,7 +6658,7 @@ var LineChart = ({
|
|
|
6669
6658
|
dominantBaseline: "middle",
|
|
6670
6659
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
6671
6660
|
fontWeight: "600",
|
|
6672
|
-
className: "fill-
|
|
6661
|
+
className: "fill-[hsl(var(--foreground))]",
|
|
6673
6662
|
children: yFormatter(lastPoint.y)
|
|
6674
6663
|
}
|
|
6675
6664
|
)
|
|
@@ -6683,21 +6672,21 @@ var LineChart = ({
|
|
|
6683
6672
|
y1: 0,
|
|
6684
6673
|
x2: chartWidth,
|
|
6685
6674
|
y2: 0,
|
|
6686
|
-
className: "stroke-
|
|
6675
|
+
className: "stroke-[hsl(var(--border))]",
|
|
6687
6676
|
strokeWidth: 1
|
|
6688
6677
|
}
|
|
6689
6678
|
),
|
|
6690
6679
|
xTicks.map((tick, i) => {
|
|
6691
6680
|
const x = xValueType === "string" ? xScale(tick.value, tick.index) : xScale(xValueType === "date" ? new Date(tick.value) : tick.value, 0);
|
|
6692
6681
|
return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("g", { transform: `translate(${x}, 0)`, children: [
|
|
6693
|
-
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("line", { y2: 6, className: "stroke-
|
|
6682
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("line", { y2: 6, className: "stroke-[hsl(var(--border))]" }),
|
|
6694
6683
|
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
6695
6684
|
"text",
|
|
6696
6685
|
{
|
|
6697
6686
|
y: 20,
|
|
6698
6687
|
textAnchor: "middle",
|
|
6699
6688
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
6700
|
-
className: "fill-
|
|
6689
|
+
className: "fill-[hsl(var(--muted-foreground))]",
|
|
6701
6690
|
children: xFormatter(xValueType === "date" ? new Date(tick.value) : tick.value)
|
|
6702
6691
|
}
|
|
6703
6692
|
)
|
|
@@ -6711,7 +6700,7 @@ var LineChart = ({
|
|
|
6711
6700
|
textAnchor: "middle",
|
|
6712
6701
|
fontSize: CHART_DEFAULTS.fontSize.axisLabel,
|
|
6713
6702
|
fontWeight: "500",
|
|
6714
|
-
className: "fill-
|
|
6703
|
+
className: "fill-[hsl(var(--foreground))]",
|
|
6715
6704
|
children: xAxisLabel
|
|
6716
6705
|
}
|
|
6717
6706
|
)
|
|
@@ -6724,12 +6713,12 @@ var LineChart = ({
|
|
|
6724
6713
|
y1: 0,
|
|
6725
6714
|
x2: 0,
|
|
6726
6715
|
y2: chartHeight,
|
|
6727
|
-
className: "stroke-
|
|
6716
|
+
className: "stroke-[hsl(var(--border))]",
|
|
6728
6717
|
strokeWidth: 1
|
|
6729
6718
|
}
|
|
6730
6719
|
),
|
|
6731
6720
|
yTicks.map((tick, i) => /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("g", { transform: `translate(0, ${yScale(tick)})`, children: [
|
|
6732
|
-
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("line", { x2: -6, className: "stroke-
|
|
6721
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("line", { x2: -6, className: "stroke-[hsl(var(--border))]" }),
|
|
6733
6722
|
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
6734
6723
|
"text",
|
|
6735
6724
|
{
|
|
@@ -6737,7 +6726,7 @@ var LineChart = ({
|
|
|
6737
6726
|
textAnchor: "end",
|
|
6738
6727
|
dominantBaseline: "middle",
|
|
6739
6728
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
6740
|
-
className: "fill-
|
|
6729
|
+
className: "fill-[hsl(var(--muted-foreground))]",
|
|
6741
6730
|
children: yFormatter(tick)
|
|
6742
6731
|
}
|
|
6743
6732
|
)
|
|
@@ -6751,7 +6740,7 @@ var LineChart = ({
|
|
|
6751
6740
|
transform: "rotate(-90)",
|
|
6752
6741
|
fontSize: CHART_DEFAULTS.fontSize.axisLabel,
|
|
6753
6742
|
fontWeight: "500",
|
|
6754
|
-
className: "fill-
|
|
6743
|
+
className: "fill-[hsl(var(--foreground))]",
|
|
6755
6744
|
children: yAxisLabel
|
|
6756
6745
|
}
|
|
6757
6746
|
)
|
|
@@ -6996,7 +6985,7 @@ var BarChart = ({
|
|
|
6996
6985
|
dominantBaseline: horizontal ? "middle" : "auto",
|
|
6997
6986
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
6998
6987
|
fontWeight: "600",
|
|
6999
|
-
className: "fill-
|
|
6988
|
+
className: "fill-[hsl(var(--foreground))]",
|
|
7000
6989
|
style: animate ? {
|
|
7001
6990
|
opacity: 0,
|
|
7002
6991
|
animation: `fadeIn 200ms ease-out ${animationDuration + barIndex * 50}ms forwards`
|
|
@@ -7069,7 +7058,7 @@ var BarChart = ({
|
|
|
7069
7058
|
viewBox: `0 0 ${width} ${height}`,
|
|
7070
7059
|
role: "img",
|
|
7071
7060
|
"aria-label": accessibleDescription,
|
|
7072
|
-
className: "bg-
|
|
7061
|
+
className: "bg-[hsl(var(--card))]",
|
|
7073
7062
|
children: [
|
|
7074
7063
|
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("style", { children: `
|
|
7075
7064
|
@keyframes growY {
|
|
@@ -7106,20 +7095,20 @@ var BarChart = ({
|
|
|
7106
7095
|
y1: 0,
|
|
7107
7096
|
x2: chartWidth,
|
|
7108
7097
|
y2: 0,
|
|
7109
|
-
className: "stroke-
|
|
7098
|
+
className: "stroke-[hsl(var(--border))]"
|
|
7110
7099
|
}
|
|
7111
7100
|
),
|
|
7112
7101
|
categories.map((cat, i) => {
|
|
7113
7102
|
const x = xBandScale.scale(cat) + bandwidth / 2;
|
|
7114
7103
|
return /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)("g", { transform: `translate(${x}, 0)`, children: [
|
|
7115
|
-
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)("line", { y2: 6, className: "stroke-
|
|
7104
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)("line", { y2: 6, className: "stroke-[hsl(var(--border))]" }),
|
|
7116
7105
|
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
7117
7106
|
"text",
|
|
7118
7107
|
{
|
|
7119
7108
|
y: 20,
|
|
7120
7109
|
textAnchor: "middle",
|
|
7121
7110
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
7122
|
-
className: "fill-
|
|
7111
|
+
className: "fill-[hsl(var(--muted-foreground))]",
|
|
7123
7112
|
children: cat
|
|
7124
7113
|
}
|
|
7125
7114
|
)
|
|
@@ -7133,7 +7122,7 @@ var BarChart = ({
|
|
|
7133
7122
|
textAnchor: "middle",
|
|
7134
7123
|
fontSize: CHART_DEFAULTS.fontSize.axisLabel,
|
|
7135
7124
|
fontWeight: "500",
|
|
7136
|
-
className: "fill-
|
|
7125
|
+
className: "fill-[hsl(var(--foreground))]",
|
|
7137
7126
|
children: xAxisLabel
|
|
7138
7127
|
}
|
|
7139
7128
|
)
|
|
@@ -7146,11 +7135,11 @@ var BarChart = ({
|
|
|
7146
7135
|
y1: 0,
|
|
7147
7136
|
x2: 0,
|
|
7148
7137
|
y2: chartHeight,
|
|
7149
|
-
className: "stroke-
|
|
7138
|
+
className: "stroke-[hsl(var(--border))]"
|
|
7150
7139
|
}
|
|
7151
7140
|
),
|
|
7152
7141
|
yTicks.map((tick, i) => /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)("g", { transform: `translate(0, ${yScale(tick)})`, children: [
|
|
7153
|
-
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)("line", { x2: -6, className: "stroke-
|
|
7142
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)("line", { x2: -6, className: "stroke-[hsl(var(--border))]" }),
|
|
7154
7143
|
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
7155
7144
|
"text",
|
|
7156
7145
|
{
|
|
@@ -7158,7 +7147,7 @@ var BarChart = ({
|
|
|
7158
7147
|
textAnchor: "end",
|
|
7159
7148
|
dominantBaseline: "middle",
|
|
7160
7149
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
7161
|
-
className: "fill-
|
|
7150
|
+
className: "fill-[hsl(var(--muted-foreground))]",
|
|
7162
7151
|
children: yFormatter(tick)
|
|
7163
7152
|
}
|
|
7164
7153
|
)
|
|
@@ -7172,7 +7161,7 @@ var BarChart = ({
|
|
|
7172
7161
|
transform: "rotate(-90)",
|
|
7173
7162
|
fontSize: CHART_DEFAULTS.fontSize.axisLabel,
|
|
7174
7163
|
fontWeight: "500",
|
|
7175
|
-
className: "fill-
|
|
7164
|
+
className: "fill-[hsl(var(--foreground))]",
|
|
7176
7165
|
children: yAxisLabel
|
|
7177
7166
|
}
|
|
7178
7167
|
)
|
|
@@ -7447,7 +7436,7 @@ var AreaChart = ({
|
|
|
7447
7436
|
viewBox: `0 0 ${width} ${height}`,
|
|
7448
7437
|
role: "img",
|
|
7449
7438
|
"aria-label": accessibleDescription,
|
|
7450
|
-
className: "bg-
|
|
7439
|
+
className: "bg-[hsl(var(--card))]",
|
|
7451
7440
|
children: [
|
|
7452
7441
|
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("defs", { children: [
|
|
7453
7442
|
data.map((series, i) => {
|
|
@@ -7559,20 +7548,20 @@ var AreaChart = ({
|
|
|
7559
7548
|
y1: 0,
|
|
7560
7549
|
x2: chartWidth,
|
|
7561
7550
|
y2: 0,
|
|
7562
|
-
className: "stroke-
|
|
7551
|
+
className: "stroke-[hsl(var(--border))]"
|
|
7563
7552
|
}
|
|
7564
7553
|
),
|
|
7565
7554
|
xTicks.map((tick, i) => {
|
|
7566
7555
|
const x = xValueType === "string" ? xScale(tick.value, tick.index) : xScale(xValueType === "date" ? new Date(tick.value) : tick.value, 0);
|
|
7567
7556
|
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("g", { transform: `translate(${x}, 0)`, children: [
|
|
7568
|
-
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("line", { y2: 6, className: "stroke-
|
|
7557
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("line", { y2: 6, className: "stroke-[hsl(var(--border))]" }),
|
|
7569
7558
|
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
7570
7559
|
"text",
|
|
7571
7560
|
{
|
|
7572
7561
|
y: 20,
|
|
7573
7562
|
textAnchor: "middle",
|
|
7574
7563
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
7575
|
-
className: "fill-
|
|
7564
|
+
className: "fill-[hsl(var(--muted-foreground))]",
|
|
7576
7565
|
children: xFormatter(xValueType === "date" ? new Date(tick.value) : tick.value)
|
|
7577
7566
|
}
|
|
7578
7567
|
)
|
|
@@ -7586,7 +7575,7 @@ var AreaChart = ({
|
|
|
7586
7575
|
textAnchor: "middle",
|
|
7587
7576
|
fontSize: CHART_DEFAULTS.fontSize.axisLabel,
|
|
7588
7577
|
fontWeight: "500",
|
|
7589
|
-
className: "fill-
|
|
7578
|
+
className: "fill-[hsl(var(--foreground))]",
|
|
7590
7579
|
children: xAxisLabel
|
|
7591
7580
|
}
|
|
7592
7581
|
)
|
|
@@ -7599,11 +7588,11 @@ var AreaChart = ({
|
|
|
7599
7588
|
y1: 0,
|
|
7600
7589
|
x2: 0,
|
|
7601
7590
|
y2: chartHeight,
|
|
7602
|
-
className: "stroke-
|
|
7591
|
+
className: "stroke-[hsl(var(--border))]"
|
|
7603
7592
|
}
|
|
7604
7593
|
),
|
|
7605
7594
|
yTicks.map((tick, i) => /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("g", { transform: `translate(0, ${yScale(tick)})`, children: [
|
|
7606
|
-
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("line", { x2: -6, className: "stroke-
|
|
7595
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("line", { x2: -6, className: "stroke-[hsl(var(--border))]" }),
|
|
7607
7596
|
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
7608
7597
|
"text",
|
|
7609
7598
|
{
|
|
@@ -7611,7 +7600,7 @@ var AreaChart = ({
|
|
|
7611
7600
|
textAnchor: "end",
|
|
7612
7601
|
dominantBaseline: "middle",
|
|
7613
7602
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
7614
|
-
className: "fill-
|
|
7603
|
+
className: "fill-[hsl(var(--muted-foreground))]",
|
|
7615
7604
|
children: yFormatter(tick)
|
|
7616
7605
|
}
|
|
7617
7606
|
)
|
|
@@ -7625,7 +7614,7 @@ var AreaChart = ({
|
|
|
7625
7614
|
transform: "rotate(-90)",
|
|
7626
7615
|
fontSize: CHART_DEFAULTS.fontSize.axisLabel,
|
|
7627
7616
|
fontWeight: "500",
|
|
7628
|
-
className: "fill-
|
|
7617
|
+
className: "fill-[hsl(var(--foreground))]",
|
|
7629
7618
|
children: yAxisLabel
|
|
7630
7619
|
}
|
|
7631
7620
|
)
|
|
@@ -7806,7 +7795,7 @@ var PieChart = ({
|
|
|
7806
7795
|
viewBox: `0 0 ${width} ${height}`,
|
|
7807
7796
|
role: "img",
|
|
7808
7797
|
"aria-label": accessibleDescription,
|
|
7809
|
-
className: "bg-
|
|
7798
|
+
className: "bg-[hsl(var(--card))]",
|
|
7810
7799
|
children: [
|
|
7811
7800
|
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("style", { children: `
|
|
7812
7801
|
@keyframes rotateIn {
|
|
@@ -7876,7 +7865,7 @@ var PieChart = ({
|
|
|
7876
7865
|
dominantBaseline: "middle",
|
|
7877
7866
|
fontSize: CHART_DEFAULTS.fontSize.title,
|
|
7878
7867
|
fontWeight: "700",
|
|
7879
|
-
className: "fill-
|
|
7868
|
+
className: "fill-[hsl(var(--foreground))]",
|
|
7880
7869
|
children: typeof centerValue === "number" ? formatNumber(centerValue) : centerValue
|
|
7881
7870
|
}
|
|
7882
7871
|
),
|
|
@@ -7888,7 +7877,7 @@ var PieChart = ({
|
|
|
7888
7877
|
textAnchor: "middle",
|
|
7889
7878
|
dominantBaseline: "middle",
|
|
7890
7879
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
7891
|
-
className: "fill-
|
|
7880
|
+
className: "fill-[hsl(var(--muted-foreground))]",
|
|
7892
7881
|
children: centerLabel
|
|
7893
7882
|
}
|
|
7894
7883
|
) : /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
@@ -8204,7 +8193,7 @@ var ScatterChart = ({
|
|
|
8204
8193
|
viewBox: `0 0 ${width} ${height}`,
|
|
8205
8194
|
role: "img",
|
|
8206
8195
|
"aria-label": accessibleDescription,
|
|
8207
|
-
className: "bg-
|
|
8196
|
+
className: "bg-[hsl(var(--card))]",
|
|
8208
8197
|
children: [
|
|
8209
8198
|
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("style", { children: `
|
|
8210
8199
|
@keyframes popIn {
|
|
@@ -8281,18 +8270,18 @@ var ScatterChart = ({
|
|
|
8281
8270
|
y1: 0,
|
|
8282
8271
|
x2: chartWidth,
|
|
8283
8272
|
y2: 0,
|
|
8284
|
-
className: "stroke-
|
|
8273
|
+
className: "stroke-[hsl(var(--border))]"
|
|
8285
8274
|
}
|
|
8286
8275
|
),
|
|
8287
8276
|
xTicks.map((tick, i) => /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("g", { transform: `translate(${xScale(tick)}, 0)`, children: [
|
|
8288
|
-
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("line", { y2: 6, className: "stroke-
|
|
8277
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("line", { y2: 6, className: "stroke-[hsl(var(--border))]" }),
|
|
8289
8278
|
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
8290
8279
|
"text",
|
|
8291
8280
|
{
|
|
8292
8281
|
y: 20,
|
|
8293
8282
|
textAnchor: "middle",
|
|
8294
8283
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
8295
|
-
className: "fill-
|
|
8284
|
+
className: "fill-[hsl(var(--muted-foreground))]",
|
|
8296
8285
|
children: xFormatter(tick)
|
|
8297
8286
|
}
|
|
8298
8287
|
)
|
|
@@ -8305,7 +8294,7 @@ var ScatterChart = ({
|
|
|
8305
8294
|
textAnchor: "middle",
|
|
8306
8295
|
fontSize: CHART_DEFAULTS.fontSize.axisLabel,
|
|
8307
8296
|
fontWeight: "500",
|
|
8308
|
-
className: "fill-
|
|
8297
|
+
className: "fill-[hsl(var(--foreground))]",
|
|
8309
8298
|
children: xAxisLabel
|
|
8310
8299
|
}
|
|
8311
8300
|
)
|
|
@@ -8318,11 +8307,11 @@ var ScatterChart = ({
|
|
|
8318
8307
|
y1: 0,
|
|
8319
8308
|
x2: 0,
|
|
8320
8309
|
y2: chartHeight,
|
|
8321
|
-
className: "stroke-
|
|
8310
|
+
className: "stroke-[hsl(var(--border))]"
|
|
8322
8311
|
}
|
|
8323
8312
|
),
|
|
8324
8313
|
yTicks.map((tick, i) => /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("g", { transform: `translate(0, ${yScale(tick)})`, children: [
|
|
8325
|
-
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("line", { x2: -6, className: "stroke-
|
|
8314
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("line", { x2: -6, className: "stroke-[hsl(var(--border))]" }),
|
|
8326
8315
|
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
8327
8316
|
"text",
|
|
8328
8317
|
{
|
|
@@ -8330,7 +8319,7 @@ var ScatterChart = ({
|
|
|
8330
8319
|
textAnchor: "end",
|
|
8331
8320
|
dominantBaseline: "middle",
|
|
8332
8321
|
fontSize: CHART_DEFAULTS.fontSize.gridLabel,
|
|
8333
|
-
className: "fill-
|
|
8322
|
+
className: "fill-[hsl(var(--muted-foreground))]",
|
|
8334
8323
|
children: yFormatter(tick)
|
|
8335
8324
|
}
|
|
8336
8325
|
)
|
|
@@ -8344,7 +8333,7 @@ var ScatterChart = ({
|
|
|
8344
8333
|
transform: "rotate(-90)",
|
|
8345
8334
|
fontSize: CHART_DEFAULTS.fontSize.axisLabel,
|
|
8346
8335
|
fontWeight: "500",
|
|
8347
|
-
className: "fill-
|
|
8336
|
+
className: "fill-[hsl(var(--foreground))]",
|
|
8348
8337
|
children: yAxisLabel
|
|
8349
8338
|
}
|
|
8350
8339
|
)
|
|
@@ -8595,7 +8584,7 @@ var Heatmap = ({
|
|
|
8595
8584
|
x: labelWidth + i * (cellSize + cellGap) + cellSize / 2,
|
|
8596
8585
|
y: labelHeight - 8,
|
|
8597
8586
|
textAnchor: "middle",
|
|
8598
|
-
className: "text-xs fill-
|
|
8587
|
+
className: "text-xs fill-[hsl(var(--muted-foreground))]",
|
|
8599
8588
|
style: { fontSize: "11px" },
|
|
8600
8589
|
children: label
|
|
8601
8590
|
},
|
|
@@ -8607,7 +8596,7 @@ var Heatmap = ({
|
|
|
8607
8596
|
x: labelWidth - 8,
|
|
8608
8597
|
y: labelHeight + j * (cellSize + cellGap) + cellSize / 2 + 4,
|
|
8609
8598
|
textAnchor: "end",
|
|
8610
|
-
className: "text-xs fill-
|
|
8599
|
+
className: "text-xs fill-[hsl(var(--muted-foreground))]",
|
|
8611
8600
|
style: { fontSize: "11px" },
|
|
8612
8601
|
children: label
|
|
8613
8602
|
},
|
|
@@ -8663,7 +8652,7 @@ var Heatmap = ({
|
|
|
8663
8652
|
showTooltip && hoveredCell && /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
|
|
8664
8653
|
"div",
|
|
8665
8654
|
{
|
|
8666
|
-
className: "absolute z-50 px-3 py-2 text-sm bg-
|
|
8655
|
+
className: "absolute z-50 px-3 py-2 text-sm bg-[hsl(var(--popover))] text-[hsl(var(--popover-foreground))] border border-[hsl(var(--border))] rounded-lg shadow-lg pointer-events-none whitespace-nowrap",
|
|
8667
8656
|
style: {
|
|
8668
8657
|
left: labelWidth + hoveredCell.x * (cellSize + cellGap) + cellSize / 2,
|
|
8669
8658
|
top: labelHeight + hoveredCell.y * (cellSize + cellGap) - 8,
|
|
@@ -8674,7 +8663,7 @@ var Heatmap = ({
|
|
|
8674
8663
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
8675
8664
|
"div",
|
|
8676
8665
|
{
|
|
8677
|
-
className: "absolute w-2 h-2 bg-
|
|
8666
|
+
className: "absolute w-2 h-2 bg-[hsl(var(--popover))] rotate-45",
|
|
8678
8667
|
style: {
|
|
8679
8668
|
left: "50%",
|
|
8680
8669
|
bottom: "-4px",
|
|
@@ -8780,7 +8769,7 @@ var CalendarHeatmap = ({
|
|
|
8780
8769
|
{
|
|
8781
8770
|
x: dayLabelWidth + weekIndex * (cellSize + cellGap),
|
|
8782
8771
|
y: 12,
|
|
8783
|
-
className: "text-xs fill-
|
|
8772
|
+
className: "text-xs fill-[hsl(var(--muted-foreground))]",
|
|
8784
8773
|
style: { fontSize: "10px" },
|
|
8785
8774
|
children: label
|
|
8786
8775
|
},
|
|
@@ -8792,7 +8781,7 @@ var CalendarHeatmap = ({
|
|
|
8792
8781
|
x: dayLabelWidth - 6,
|
|
8793
8782
|
y: monthLabelHeight + dayIndex * (cellSize + cellGap) + cellSize / 2 + 3,
|
|
8794
8783
|
textAnchor: "end",
|
|
8795
|
-
className: "text-xs fill-
|
|
8784
|
+
className: "text-xs fill-[hsl(var(--muted-foreground))]",
|
|
8796
8785
|
style: { fontSize: "9px" },
|
|
8797
8786
|
children: DAY_LABELS[dayIndex]
|
|
8798
8787
|
},
|
|
@@ -8832,7 +8821,7 @@ var CalendarHeatmap = ({
|
|
|
8832
8821
|
hoveredCell && /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
|
|
8833
8822
|
"div",
|
|
8834
8823
|
{
|
|
8835
|
-
className: "absolute z-50 px-3 py-2 text-sm bg-
|
|
8824
|
+
className: "absolute z-50 px-3 py-2 text-sm bg-[hsl(var(--popover))] text-[hsl(var(--popover-foreground))] border border-[hsl(var(--border))] rounded-lg shadow-lg pointer-events-none whitespace-nowrap",
|
|
8836
8825
|
style: {
|
|
8837
8826
|
left: dayLabelWidth + hoveredCell.weekIndex * (cellSize + cellGap) + cellSize / 2,
|
|
8838
8827
|
top: monthLabelHeight + hoveredCell.dayIndex * (cellSize + cellGap) - 8,
|
|
@@ -8843,7 +8832,7 @@ var CalendarHeatmap = ({
|
|
|
8843
8832
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
8844
8833
|
"div",
|
|
8845
8834
|
{
|
|
8846
|
-
className: "absolute w-2 h-2 bg-
|
|
8835
|
+
className: "absolute w-2 h-2 bg-[hsl(var(--popover))] rotate-45",
|
|
8847
8836
|
style: {
|
|
8848
8837
|
left: "50%",
|
|
8849
8838
|
bottom: "-4px",
|