@marcoschwartz/lite-ui 0.4.1 → 0.7.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 +183 -1
- package/dist/index.d.ts +183 -1
- package/dist/index.js +1119 -301
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1060 -264
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +6 -1
package/dist/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
"use strict";
|
|
3
|
+
var __create = Object.create;
|
|
3
4
|
var __defProp = Object.defineProperty;
|
|
4
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
9
|
var __export = (target, all) => {
|
|
8
10
|
for (var name in all)
|
|
@@ -16,6 +18,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
18
|
}
|
|
17
19
|
return to;
|
|
18
20
|
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
19
29
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
30
|
|
|
21
31
|
// src/index.ts
|
|
@@ -23,7 +33,9 @@ var index_exports = {};
|
|
|
23
33
|
__export(index_exports, {
|
|
24
34
|
ActionMenu: () => ActionMenu,
|
|
25
35
|
Alert: () => Alert,
|
|
36
|
+
AppShell: () => AppShell,
|
|
26
37
|
AppleIcon: () => AppleIcon,
|
|
38
|
+
Avatar: () => Avatar,
|
|
27
39
|
Badge: () => Badge,
|
|
28
40
|
BellIcon: () => BellIcon,
|
|
29
41
|
Button: () => Button,
|
|
@@ -37,10 +49,12 @@ __export(index_exports, {
|
|
|
37
49
|
CloseIcon: () => CloseIcon,
|
|
38
50
|
DatePicker: () => DatePicker,
|
|
39
51
|
DateTimePicker: () => DateTimePicker,
|
|
52
|
+
Divider: () => Divider,
|
|
40
53
|
DownloadIcon: () => DownloadIcon,
|
|
41
54
|
Drawer: () => Drawer,
|
|
42
55
|
EditIcon: () => EditIcon,
|
|
43
56
|
FacebookIcon: () => FacebookIcon,
|
|
57
|
+
FileUpload: () => FileUpload,
|
|
44
58
|
GitHubIcon: () => GitHubIcon,
|
|
45
59
|
GoogleIcon: () => GoogleIcon,
|
|
46
60
|
HeartIcon: () => HeartIcon,
|
|
@@ -53,19 +67,25 @@ __export(index_exports, {
|
|
|
53
67
|
Navbar: () => Navbar,
|
|
54
68
|
Pagination: () => Pagination,
|
|
55
69
|
PlusIcon: () => PlusIcon,
|
|
70
|
+
ProgressBar: () => ProgressBar,
|
|
71
|
+
Radio: () => Radio,
|
|
56
72
|
SearchIcon: () => SearchIcon,
|
|
57
73
|
Select: () => Select,
|
|
58
74
|
SettingsIcon: () => SettingsIcon,
|
|
59
75
|
Sidebar: () => Sidebar,
|
|
60
76
|
SidebarProvider: () => SidebarProvider,
|
|
61
77
|
SlackIcon: () => SlackIcon,
|
|
78
|
+
Slider: () => Slider,
|
|
62
79
|
Spinner: () => Spinner,
|
|
63
80
|
StarIcon: () => StarIcon,
|
|
81
|
+
Stepper: () => Stepper,
|
|
64
82
|
Table: () => Table,
|
|
65
83
|
Tabs: () => Tabs,
|
|
66
84
|
TextInput: () => TextInput,
|
|
85
|
+
Textarea: () => Textarea,
|
|
67
86
|
ThemeProvider: () => ThemeProvider,
|
|
68
87
|
TimePicker: () => TimePicker,
|
|
88
|
+
ToastProvider: () => ToastProvider,
|
|
69
89
|
Toggle: () => Toggle,
|
|
70
90
|
TrashIcon: () => TrashIcon,
|
|
71
91
|
TwitterIcon: () => TwitterIcon,
|
|
@@ -75,8 +95,10 @@ __export(index_exports, {
|
|
|
75
95
|
getThemeScript: () => getThemeScript,
|
|
76
96
|
themeScript: () => themeScript,
|
|
77
97
|
themes: () => themes,
|
|
98
|
+
toast: () => toast,
|
|
78
99
|
useSidebar: () => useSidebar,
|
|
79
|
-
useTheme: () => useTheme
|
|
100
|
+
useTheme: () => useTheme,
|
|
101
|
+
useToast: () => useToast
|
|
80
102
|
});
|
|
81
103
|
module.exports = __toCommonJS(index_exports);
|
|
82
104
|
|
|
@@ -470,10 +492,11 @@ var Sidebar = ({
|
|
|
470
492
|
}) => {
|
|
471
493
|
const { theme } = useTheme();
|
|
472
494
|
const widthClass = widthClasses[width];
|
|
495
|
+
const borderClass = position === "left" ? "border-r" : "border-l";
|
|
473
496
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
474
497
|
"aside",
|
|
475
498
|
{
|
|
476
|
-
className: `${widthClass} bg-white dark:bg-gray-800
|
|
499
|
+
className: `${widthClass} bg-white dark:bg-gray-800 ${borderClass} border-gray-200 dark:border-gray-700 h-full overflow-y-auto ${className}`,
|
|
477
500
|
children
|
|
478
501
|
}
|
|
479
502
|
);
|
|
@@ -510,10 +533,357 @@ var useSidebar = () => {
|
|
|
510
533
|
return context;
|
|
511
534
|
};
|
|
512
535
|
|
|
513
|
-
// src/components/
|
|
536
|
+
// src/components/AppShell.tsx
|
|
514
537
|
var import_react5 = require("react");
|
|
538
|
+
|
|
539
|
+
// src/icons/icon-utils.tsx
|
|
515
540
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
516
541
|
var sizeClasses2 = {
|
|
542
|
+
xs: "w-3 h-3",
|
|
543
|
+
sm: "w-4 h-4",
|
|
544
|
+
md: "w-5 h-5",
|
|
545
|
+
lg: "w-6 h-6",
|
|
546
|
+
xl: "w-8 h-8"
|
|
547
|
+
};
|
|
548
|
+
var createIcon = (displayName, path, filled = false) => {
|
|
549
|
+
const Icon = ({ size = "md", className = "", color = "currentColor" }) => {
|
|
550
|
+
const sizeClass = sizeClasses2[size];
|
|
551
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
552
|
+
"svg",
|
|
553
|
+
{
|
|
554
|
+
className: `${sizeClass} ${className}`,
|
|
555
|
+
fill: filled ? color : "none",
|
|
556
|
+
viewBox: "0 0 24 24",
|
|
557
|
+
stroke: filled ? "none" : color,
|
|
558
|
+
"aria-hidden": "true",
|
|
559
|
+
children: path
|
|
560
|
+
}
|
|
561
|
+
);
|
|
562
|
+
};
|
|
563
|
+
Icon.displayName = displayName;
|
|
564
|
+
return Icon;
|
|
565
|
+
};
|
|
566
|
+
|
|
567
|
+
// src/icons/HomeIcon.tsx
|
|
568
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
569
|
+
var HomeIcon = createIcon(
|
|
570
|
+
"HomeIcon",
|
|
571
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" })
|
|
572
|
+
);
|
|
573
|
+
|
|
574
|
+
// src/icons/UserIcon.tsx
|
|
575
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
576
|
+
var UserIcon = createIcon(
|
|
577
|
+
"UserIcon",
|
|
578
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" })
|
|
579
|
+
);
|
|
580
|
+
|
|
581
|
+
// src/icons/SearchIcon.tsx
|
|
582
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
583
|
+
var SearchIcon = createIcon(
|
|
584
|
+
"SearchIcon",
|
|
585
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" })
|
|
586
|
+
);
|
|
587
|
+
|
|
588
|
+
// src/icons/BellIcon.tsx
|
|
589
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
590
|
+
var BellIcon = createIcon(
|
|
591
|
+
"BellIcon",
|
|
592
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" })
|
|
593
|
+
);
|
|
594
|
+
|
|
595
|
+
// src/icons/SettingsIcon.tsx
|
|
596
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
597
|
+
var SettingsIcon = createIcon(
|
|
598
|
+
"SettingsIcon",
|
|
599
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
|
|
600
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" }),
|
|
601
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
602
|
+
] })
|
|
603
|
+
);
|
|
604
|
+
|
|
605
|
+
// src/icons/MenuIcon.tsx
|
|
606
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
607
|
+
var MenuIcon = createIcon(
|
|
608
|
+
"MenuIcon",
|
|
609
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" })
|
|
610
|
+
);
|
|
611
|
+
|
|
612
|
+
// src/icons/CloseIcon.tsx
|
|
613
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
614
|
+
var CloseIcon = createIcon(
|
|
615
|
+
"CloseIcon",
|
|
616
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" })
|
|
617
|
+
);
|
|
618
|
+
|
|
619
|
+
// src/icons/ChevronDownIcon.tsx
|
|
620
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
621
|
+
var ChevronDownIcon = createIcon(
|
|
622
|
+
"ChevronDownIcon",
|
|
623
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
|
|
624
|
+
);
|
|
625
|
+
|
|
626
|
+
// src/icons/ChevronRightIcon.tsx
|
|
627
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
628
|
+
var ChevronRightIcon = createIcon(
|
|
629
|
+
"ChevronRightIcon",
|
|
630
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
|
|
631
|
+
);
|
|
632
|
+
|
|
633
|
+
// src/icons/CheckIcon.tsx
|
|
634
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
635
|
+
var CheckIcon = createIcon(
|
|
636
|
+
"CheckIcon",
|
|
637
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" })
|
|
638
|
+
);
|
|
639
|
+
|
|
640
|
+
// src/icons/PlusIcon.tsx
|
|
641
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
642
|
+
var PlusIcon = createIcon(
|
|
643
|
+
"PlusIcon",
|
|
644
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" })
|
|
645
|
+
);
|
|
646
|
+
|
|
647
|
+
// src/icons/TrashIcon.tsx
|
|
648
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
649
|
+
var TrashIcon = createIcon(
|
|
650
|
+
"TrashIcon",
|
|
651
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" })
|
|
652
|
+
);
|
|
653
|
+
|
|
654
|
+
// src/icons/EditIcon.tsx
|
|
655
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
656
|
+
var EditIcon = createIcon(
|
|
657
|
+
"EditIcon",
|
|
658
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" })
|
|
659
|
+
);
|
|
660
|
+
|
|
661
|
+
// src/icons/MailIcon.tsx
|
|
662
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
663
|
+
var MailIcon = createIcon(
|
|
664
|
+
"MailIcon",
|
|
665
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" })
|
|
666
|
+
);
|
|
667
|
+
|
|
668
|
+
// src/icons/StarIcon.tsx
|
|
669
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
670
|
+
var StarIcon = createIcon(
|
|
671
|
+
"StarIcon",
|
|
672
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z" })
|
|
673
|
+
);
|
|
674
|
+
|
|
675
|
+
// src/icons/HeartIcon.tsx
|
|
676
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
677
|
+
var HeartIcon = createIcon(
|
|
678
|
+
"HeartIcon",
|
|
679
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z" })
|
|
680
|
+
);
|
|
681
|
+
|
|
682
|
+
// src/icons/DownloadIcon.tsx
|
|
683
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
684
|
+
var DownloadIcon = createIcon(
|
|
685
|
+
"DownloadIcon",
|
|
686
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" })
|
|
687
|
+
);
|
|
688
|
+
|
|
689
|
+
// src/icons/UploadIcon.tsx
|
|
690
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
691
|
+
var UploadIcon = createIcon(
|
|
692
|
+
"UploadIcon",
|
|
693
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" })
|
|
694
|
+
);
|
|
695
|
+
|
|
696
|
+
// src/icons/CameraIcon.tsx
|
|
697
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
698
|
+
var CameraIcon = createIcon(
|
|
699
|
+
"CameraIcon",
|
|
700
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
|
|
701
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z" }),
|
|
702
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 13a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
703
|
+
] })
|
|
704
|
+
);
|
|
705
|
+
|
|
706
|
+
// src/icons/LockIcon.tsx
|
|
707
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
708
|
+
var LockIcon = createIcon(
|
|
709
|
+
"LockIcon",
|
|
710
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" })
|
|
711
|
+
);
|
|
712
|
+
|
|
713
|
+
// src/icons/CalendarIcon.tsx
|
|
714
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
715
|
+
var CalendarIcon = createIcon(
|
|
716
|
+
"CalendarIcon",
|
|
717
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.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" })
|
|
718
|
+
);
|
|
719
|
+
|
|
720
|
+
// src/icons/GoogleIcon.tsx
|
|
721
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
722
|
+
var GoogleIcon = createIcon(
|
|
723
|
+
"GoogleIcon",
|
|
724
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("path", { d: "M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" }),
|
|
725
|
+
true
|
|
726
|
+
);
|
|
727
|
+
|
|
728
|
+
// src/icons/GitHubIcon.tsx
|
|
729
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
730
|
+
var GitHubIcon = createIcon(
|
|
731
|
+
"GitHubIcon",
|
|
732
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("path", { d: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" }),
|
|
733
|
+
true
|
|
734
|
+
);
|
|
735
|
+
|
|
736
|
+
// src/icons/TwitterIcon.tsx
|
|
737
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
738
|
+
var TwitterIcon = createIcon(
|
|
739
|
+
"TwitterIcon",
|
|
740
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("path", { d: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" }),
|
|
741
|
+
true
|
|
742
|
+
);
|
|
743
|
+
|
|
744
|
+
// src/icons/FacebookIcon.tsx
|
|
745
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
746
|
+
var FacebookIcon = createIcon(
|
|
747
|
+
"FacebookIcon",
|
|
748
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("path", { d: "M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z" }),
|
|
749
|
+
true
|
|
750
|
+
);
|
|
751
|
+
|
|
752
|
+
// src/icons/AppleIcon.tsx
|
|
753
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
754
|
+
var AppleIcon = createIcon(
|
|
755
|
+
"AppleIcon",
|
|
756
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("path", { d: "M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24 0-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z" }),
|
|
757
|
+
true
|
|
758
|
+
);
|
|
759
|
+
|
|
760
|
+
// src/icons/LinkedInIcon.tsx
|
|
761
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
762
|
+
var LinkedInIcon = createIcon(
|
|
763
|
+
"LinkedInIcon",
|
|
764
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("path", { d: "M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" }),
|
|
765
|
+
true
|
|
766
|
+
);
|
|
767
|
+
|
|
768
|
+
// src/icons/YouTubeIcon.tsx
|
|
769
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
770
|
+
var YouTubeIcon = createIcon(
|
|
771
|
+
"YouTubeIcon",
|
|
772
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("path", { d: "M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" }),
|
|
773
|
+
true
|
|
774
|
+
);
|
|
775
|
+
|
|
776
|
+
// src/icons/SlackIcon.tsx
|
|
777
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
778
|
+
var SlackIcon = createIcon(
|
|
779
|
+
"SlackIcon",
|
|
780
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("path", { d: "M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z" }),
|
|
781
|
+
true
|
|
782
|
+
);
|
|
783
|
+
|
|
784
|
+
// src/components/AppShell.tsx
|
|
785
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
786
|
+
var widthClasses2 = {
|
|
787
|
+
sm: "w-48",
|
|
788
|
+
md: "w-64",
|
|
789
|
+
lg: "w-80"
|
|
790
|
+
};
|
|
791
|
+
var breakpointClasses = {
|
|
792
|
+
sm: "sm",
|
|
793
|
+
md: "md",
|
|
794
|
+
lg: "lg",
|
|
795
|
+
xl: "xl"
|
|
796
|
+
};
|
|
797
|
+
var AppShell = ({
|
|
798
|
+
children,
|
|
799
|
+
navbar,
|
|
800
|
+
header,
|
|
801
|
+
navbarTitle,
|
|
802
|
+
navbarLogo,
|
|
803
|
+
defaultNavbarOpen = false,
|
|
804
|
+
responsive = true,
|
|
805
|
+
className = ""
|
|
806
|
+
}) => {
|
|
807
|
+
const { theme } = useTheme();
|
|
808
|
+
const [isMobileNavbarOpen, setIsMobileNavbarOpen] = (0, import_react5.useState)(defaultNavbarOpen);
|
|
809
|
+
const navbarWidth = navbar?.width || "md";
|
|
810
|
+
const navbarBreakpoint = navbar?.breakpoint || "md";
|
|
811
|
+
const widthClass = widthClasses2[navbarWidth];
|
|
812
|
+
const breakpoint = breakpointClasses[navbarBreakpoint];
|
|
813
|
+
if (!responsive && navbar) {
|
|
814
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: `min-h-screen flex flex-col ${className}`, children: [
|
|
815
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "w-full", children: header }),
|
|
816
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex flex-1", children: [
|
|
817
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("aside", { className: `${widthClass} bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700 h-full overflow-y-auto`, children: navbar.content }),
|
|
818
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("main", { className: "flex-1 overflow-y-auto", children })
|
|
819
|
+
] })
|
|
820
|
+
] });
|
|
821
|
+
}
|
|
822
|
+
if (!responsive) {
|
|
823
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: `min-h-screen flex flex-col ${className}`, children: [
|
|
824
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "w-full", children: header }),
|
|
825
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("main", { className: "flex-1 overflow-y-auto", children })
|
|
826
|
+
] });
|
|
827
|
+
}
|
|
828
|
+
if (navbar) {
|
|
829
|
+
const mobileHeaderClass = navbarBreakpoint === "sm" ? "sm:hidden" : navbarBreakpoint === "md" ? "md:hidden" : navbarBreakpoint === "lg" ? "lg:hidden" : "xl:hidden";
|
|
830
|
+
const desktopNavbarClass = navbarBreakpoint === "sm" ? "sm:block" : navbarBreakpoint === "md" ? "md:block" : navbarBreakpoint === "lg" ? "lg:block" : "xl:block";
|
|
831
|
+
const mobileDrawerClass = navbarBreakpoint === "sm" ? "sm:hidden" : navbarBreakpoint === "md" ? "md:hidden" : navbarBreakpoint === "lg" ? "lg:hidden" : "xl:hidden";
|
|
832
|
+
const sidebarWidthClass = navbarWidth === "sm" ? "w-48" : navbarWidth === "lg" ? "w-80" : "w-64";
|
|
833
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: `min-h-screen flex flex-col bg-gray-50 dark:bg-gray-900 ${className}`, children: [
|
|
834
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: `${mobileHeaderClass} sticky top-0 z-30 bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 px-4 py-3 flex items-center justify-between`, children: [
|
|
835
|
+
navbarLogo ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-xl font-bold text-gray-900 dark:text-gray-100", children: navbarTitle }) : null,
|
|
836
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
837
|
+
"button",
|
|
838
|
+
{
|
|
839
|
+
className: "p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
840
|
+
onClick: () => setIsMobileNavbarOpen(!isMobileNavbarOpen),
|
|
841
|
+
"aria-label": "Toggle menu",
|
|
842
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(MenuIcon, { size: "md" })
|
|
843
|
+
}
|
|
844
|
+
)
|
|
845
|
+
] }),
|
|
846
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "w-full", children: header }),
|
|
847
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex flex-1 min-h-0", children: [
|
|
848
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("aside", { className: `hidden ${desktopNavbarClass} ${sidebarWidthClass} bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700 overflow-y-auto shrink-0`, children: navbar.content }),
|
|
849
|
+
isMobileNavbarOpen && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
|
|
850
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
851
|
+
"div",
|
|
852
|
+
{
|
|
853
|
+
className: `${mobileDrawerClass} fixed inset-0 z-40 bg-black/60 backdrop-blur-sm animate-in fade-in duration-200`,
|
|
854
|
+
onClick: () => setIsMobileNavbarOpen(false)
|
|
855
|
+
}
|
|
856
|
+
),
|
|
857
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: `${mobileDrawerClass} fixed left-0 top-0 bottom-0 z-50 w-64 bg-white dark:bg-gray-800 shadow-2xl animate-in slide-in-from-left duration-300`, children: [
|
|
858
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "p-4 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between", children: [
|
|
859
|
+
navbarLogo ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-xl font-bold text-gray-900 dark:text-gray-100", children: navbarTitle }) : null,
|
|
860
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
861
|
+
"button",
|
|
862
|
+
{
|
|
863
|
+
className: "p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
864
|
+
onClick: () => setIsMobileNavbarOpen(false),
|
|
865
|
+
"aria-label": "Close menu",
|
|
866
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
867
|
+
}
|
|
868
|
+
)
|
|
869
|
+
] }),
|
|
870
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "overflow-y-auto h-[calc(100vh-73px)]", children: navbar.content })
|
|
871
|
+
] })
|
|
872
|
+
] }),
|
|
873
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("main", { className: "flex-1 overflow-y-auto min-h-screen", children })
|
|
874
|
+
] })
|
|
875
|
+
] });
|
|
876
|
+
}
|
|
877
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: `min-h-screen flex flex-col ${className}`, children: [
|
|
878
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "w-full", children: header }),
|
|
879
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("main", { className: "flex-1 overflow-y-auto", children })
|
|
880
|
+
] });
|
|
881
|
+
};
|
|
882
|
+
|
|
883
|
+
// src/components/Drawer.tsx
|
|
884
|
+
var import_react6 = require("react");
|
|
885
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
886
|
+
var sizeClasses3 = {
|
|
517
887
|
left: {
|
|
518
888
|
sm: "w-64",
|
|
519
889
|
md: "w-80",
|
|
@@ -557,7 +927,7 @@ var Drawer = ({
|
|
|
557
927
|
showCloseButton = true
|
|
558
928
|
}) => {
|
|
559
929
|
const { theme } = useTheme();
|
|
560
|
-
(0,
|
|
930
|
+
(0, import_react6.useEffect)(() => {
|
|
561
931
|
const handleEscape = (e) => {
|
|
562
932
|
if (e.key === "Escape" && isOpen) {
|
|
563
933
|
onClose();
|
|
@@ -573,34 +943,34 @@ var Drawer = ({
|
|
|
573
943
|
};
|
|
574
944
|
}, [isOpen, onClose]);
|
|
575
945
|
if (!isOpen) return null;
|
|
576
|
-
const sizeClass =
|
|
946
|
+
const sizeClass = sizeClasses3[position][size];
|
|
577
947
|
const positionClass = positionClasses[position];
|
|
578
|
-
return /* @__PURE__ */ (0,
|
|
579
|
-
/* @__PURE__ */ (0,
|
|
948
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
|
|
949
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
580
950
|
"div",
|
|
581
951
|
{
|
|
582
952
|
className: "fixed inset-0 z-40 bg-black/60 backdrop-blur-sm transition-all duration-200",
|
|
583
953
|
onClick: onClose
|
|
584
954
|
}
|
|
585
955
|
),
|
|
586
|
-
/* @__PURE__ */ (0,
|
|
956
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
587
957
|
"div",
|
|
588
958
|
{
|
|
589
959
|
className: `fixed z-50 ${positionClass} ${sizeClass} bg-white dark:bg-gray-800 shadow-2xl overflow-hidden flex flex-col ${slideClasses[position]}`,
|
|
590
960
|
children: [
|
|
591
|
-
(title || showCloseButton) && /* @__PURE__ */ (0,
|
|
592
|
-
title && /* @__PURE__ */ (0,
|
|
593
|
-
showCloseButton && /* @__PURE__ */ (0,
|
|
961
|
+
(title || showCloseButton) && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700", children: [
|
|
962
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("h3", { className: "text-xl font-semibold text-gray-900 dark:text-gray-100", children: title }),
|
|
963
|
+
showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
594
964
|
"button",
|
|
595
965
|
{
|
|
596
966
|
onClick: onClose,
|
|
597
967
|
className: "ml-auto text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors",
|
|
598
968
|
"aria-label": "Close drawer",
|
|
599
|
-
children: /* @__PURE__ */ (0,
|
|
969
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("svg", { className: "w-6 h-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
600
970
|
}
|
|
601
971
|
)
|
|
602
972
|
] }),
|
|
603
|
-
/* @__PURE__ */ (0,
|
|
973
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "flex-1 p-6 overflow-y-auto", children })
|
|
604
974
|
]
|
|
605
975
|
}
|
|
606
976
|
)
|
|
@@ -608,14 +978,14 @@ var Drawer = ({
|
|
|
608
978
|
};
|
|
609
979
|
|
|
610
980
|
// src/components/TextInput.tsx
|
|
611
|
-
var
|
|
612
|
-
var
|
|
613
|
-
var
|
|
981
|
+
var import_react7 = require("react");
|
|
982
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
983
|
+
var sizeClasses4 = {
|
|
614
984
|
sm: "px-3 py-1.5 text-sm",
|
|
615
985
|
md: "px-4 py-2.5 text-base",
|
|
616
986
|
lg: "px-4 py-3 text-lg"
|
|
617
987
|
};
|
|
618
|
-
var TextInput = (0,
|
|
988
|
+
var TextInput = (0, import_react7.forwardRef)(
|
|
619
989
|
({
|
|
620
990
|
label,
|
|
621
991
|
error,
|
|
@@ -630,16 +1000,16 @@ var TextInput = (0, import_react6.forwardRef)(
|
|
|
630
1000
|
}, ref) => {
|
|
631
1001
|
const { theme, themeName } = useTheme();
|
|
632
1002
|
const baseStyles = theme.select?.base || "w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500";
|
|
633
|
-
const sizeStyle =
|
|
1003
|
+
const sizeStyle = sizeClasses4[size];
|
|
634
1004
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
635
1005
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
636
1006
|
const widthStyle = fullWidth ? "w-full" : "";
|
|
637
1007
|
const paddingWithIcon = leftIcon ? "pl-10" : rightIcon ? "pr-10" : "";
|
|
638
|
-
return /* @__PURE__ */ (0,
|
|
639
|
-
label && /* @__PURE__ */ (0,
|
|
640
|
-
/* @__PURE__ */ (0,
|
|
641
|
-
leftIcon && /* @__PURE__ */ (0,
|
|
642
|
-
/* @__PURE__ */ (0,
|
|
1008
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: `${widthStyle} ${className}`, children: [
|
|
1009
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1010
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "relative", children: [
|
|
1011
|
+
leftIcon && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 dark:text-gray-500", children: leftIcon }),
|
|
1012
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
643
1013
|
"input",
|
|
644
1014
|
{
|
|
645
1015
|
ref,
|
|
@@ -648,27 +1018,27 @@ var TextInput = (0, import_react6.forwardRef)(
|
|
|
648
1018
|
...props
|
|
649
1019
|
}
|
|
650
1020
|
),
|
|
651
|
-
rightIcon && /* @__PURE__ */ (0,
|
|
1021
|
+
rightIcon && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 dark:text-gray-500", children: rightIcon })
|
|
652
1022
|
] }),
|
|
653
|
-
error && /* @__PURE__ */ (0,
|
|
654
|
-
helperText && !error && /* @__PURE__ */ (0,
|
|
1023
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1024
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
655
1025
|
] });
|
|
656
1026
|
}
|
|
657
1027
|
);
|
|
658
1028
|
TextInput.displayName = "TextInput";
|
|
659
1029
|
|
|
660
1030
|
// src/components/ActionMenu.tsx
|
|
661
|
-
var
|
|
662
|
-
var
|
|
1031
|
+
var import_react8 = require("react");
|
|
1032
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
663
1033
|
var ActionMenu = ({
|
|
664
1034
|
items,
|
|
665
1035
|
trigger,
|
|
666
1036
|
position = "right"
|
|
667
1037
|
}) => {
|
|
668
1038
|
const { themeName } = useTheme();
|
|
669
|
-
const [isOpen, setIsOpen] = (0,
|
|
670
|
-
const menuRef = (0,
|
|
671
|
-
(0,
|
|
1039
|
+
const [isOpen, setIsOpen] = (0, import_react8.useState)(false);
|
|
1040
|
+
const menuRef = (0, import_react8.useRef)(null);
|
|
1041
|
+
(0, import_react8.useEffect)(() => {
|
|
672
1042
|
const handleClickOutside = (event) => {
|
|
673
1043
|
if (menuRef.current && !menuRef.current.contains(event.target)) {
|
|
674
1044
|
setIsOpen(false);
|
|
@@ -685,33 +1055,33 @@ var ActionMenu = ({
|
|
|
685
1055
|
setIsOpen(false);
|
|
686
1056
|
}
|
|
687
1057
|
};
|
|
688
|
-
const defaultTrigger = /* @__PURE__ */ (0,
|
|
1058
|
+
const defaultTrigger = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
689
1059
|
"button",
|
|
690
1060
|
{
|
|
691
1061
|
className: "p-2 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
692
1062
|
"aria-label": "Open menu",
|
|
693
|
-
children: /* @__PURE__ */ (0,
|
|
1063
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("svg", { className: "w-5 h-5 text-gray-600 dark:text-gray-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime41.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" }) })
|
|
694
1064
|
}
|
|
695
1065
|
);
|
|
696
1066
|
const menuBaseStyles = themeName === "minimalistic" ? "bg-black border-2 border-white" : "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 shadow-lg";
|
|
697
1067
|
const itemBaseStyles = themeName === "minimalistic" ? "text-white hover:bg-white hover:text-black transition-colors duration-200" : "text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors";
|
|
698
1068
|
const positionClass = position === "left" ? "left-0" : "right-0";
|
|
699
|
-
return /* @__PURE__ */ (0,
|
|
700
|
-
/* @__PURE__ */ (0,
|
|
701
|
-
isOpen && /* @__PURE__ */ (0,
|
|
1069
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "relative inline-block", ref: menuRef, children: [
|
|
1070
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { onClick: () => setIsOpen(!isOpen), children: trigger || defaultTrigger }),
|
|
1071
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
702
1072
|
"div",
|
|
703
1073
|
{
|
|
704
1074
|
className: `absolute ${positionClass} mt-2 w-56 rounded-lg ${menuBaseStyles} z-50 overflow-hidden`,
|
|
705
1075
|
style: { minWidth: "14rem" },
|
|
706
|
-
children: items.map((item, index) => /* @__PURE__ */ (0,
|
|
1076
|
+
children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
707
1077
|
"button",
|
|
708
1078
|
{
|
|
709
1079
|
onClick: () => handleItemClick(item),
|
|
710
1080
|
disabled: item.disabled,
|
|
711
1081
|
className: `w-full text-left px-4 py-3 flex items-center gap-3 ${itemBaseStyles} ${item.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"} ${item.variant === "danger" ? "text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20" : ""}`,
|
|
712
1082
|
children: [
|
|
713
|
-
item.icon && /* @__PURE__ */ (0,
|
|
714
|
-
/* @__PURE__ */ (0,
|
|
1083
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "flex-shrink-0", children: item.icon }),
|
|
1084
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "flex-1", children: item.label })
|
|
715
1085
|
]
|
|
716
1086
|
},
|
|
717
1087
|
index
|
|
@@ -722,7 +1092,7 @@ var ActionMenu = ({
|
|
|
722
1092
|
};
|
|
723
1093
|
|
|
724
1094
|
// src/components/Card.tsx
|
|
725
|
-
var
|
|
1095
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
726
1096
|
var paddingClasses = {
|
|
727
1097
|
none: "",
|
|
728
1098
|
sm: "p-4",
|
|
@@ -738,7 +1108,7 @@ var Card = ({
|
|
|
738
1108
|
const { theme } = useTheme();
|
|
739
1109
|
const paddingClass = paddingClasses[padding];
|
|
740
1110
|
const hoverClass = hover ? "hover:shadow-lg transition-shadow duration-200" : "";
|
|
741
|
-
return /* @__PURE__ */ (0,
|
|
1111
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
742
1112
|
"div",
|
|
743
1113
|
{
|
|
744
1114
|
className: `bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 ${paddingClass} ${hoverClass} ${className}`,
|
|
@@ -748,7 +1118,7 @@ var Card = ({
|
|
|
748
1118
|
};
|
|
749
1119
|
|
|
750
1120
|
// src/components/Alert.tsx
|
|
751
|
-
var
|
|
1121
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
752
1122
|
var variantStyles = {
|
|
753
1123
|
info: "bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800 text-blue-900 dark:text-blue-100",
|
|
754
1124
|
success: "bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800 text-green-900 dark:text-green-100",
|
|
@@ -771,38 +1141,38 @@ var Alert = ({
|
|
|
771
1141
|
const { theme } = useTheme();
|
|
772
1142
|
const variantClass = variantStyles[variant];
|
|
773
1143
|
const iconClass = iconStyles[variant];
|
|
774
|
-
return /* @__PURE__ */ (0,
|
|
775
|
-
/* @__PURE__ */ (0,
|
|
776
|
-
variant === "info" && /* @__PURE__ */ (0,
|
|
777
|
-
variant === "success" && /* @__PURE__ */ (0,
|
|
778
|
-
variant === "warning" && /* @__PURE__ */ (0,
|
|
779
|
-
variant === "error" && /* @__PURE__ */ (0,
|
|
1144
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: `rounded-lg border p-4 ${variantClass} ${className}`, role: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex items-start gap-3", children: [
|
|
1145
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: `flex-shrink-0 ${iconClass}`, children: [
|
|
1146
|
+
variant === "info" && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ (0, import_jsx_runtime43.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" }) }),
|
|
1147
|
+
variant === "success" && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ (0, import_jsx_runtime43.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" }) }),
|
|
1148
|
+
variant === "warning" && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ (0, import_jsx_runtime43.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" }) }),
|
|
1149
|
+
variant === "error" && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z", clipRule: "evenodd" }) })
|
|
780
1150
|
] }),
|
|
781
|
-
/* @__PURE__ */ (0,
|
|
782
|
-
title && /* @__PURE__ */ (0,
|
|
783
|
-
/* @__PURE__ */ (0,
|
|
1151
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex-1", children: [
|
|
1152
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("h3", { className: "font-semibold mb-1", children: title }),
|
|
1153
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "text-sm", children })
|
|
784
1154
|
] }),
|
|
785
|
-
onClose && /* @__PURE__ */ (0,
|
|
1155
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
786
1156
|
"button",
|
|
787
1157
|
{
|
|
788
1158
|
onClick: onClose,
|
|
789
1159
|
className: `flex-shrink-0 ${iconClass} hover:opacity-70 transition-opacity`,
|
|
790
1160
|
"aria-label": "Close alert",
|
|
791
|
-
children: /* @__PURE__ */ (0,
|
|
1161
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
792
1162
|
}
|
|
793
1163
|
)
|
|
794
1164
|
] }) });
|
|
795
1165
|
};
|
|
796
1166
|
|
|
797
1167
|
// src/components/Checkbox.tsx
|
|
798
|
-
var
|
|
799
|
-
var
|
|
800
|
-
var Checkbox = (0,
|
|
1168
|
+
var import_react9 = require("react");
|
|
1169
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
1170
|
+
var Checkbox = (0, import_react9.forwardRef)(
|
|
801
1171
|
({ label, error, className = "", disabled, ...props }, ref) => {
|
|
802
1172
|
const { theme } = useTheme();
|
|
803
|
-
return /* @__PURE__ */ (0,
|
|
804
|
-
/* @__PURE__ */ (0,
|
|
805
|
-
/* @__PURE__ */ (0,
|
|
1173
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className, children: [
|
|
1174
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("label", { className: "flex items-center gap-2 cursor-pointer group", children: [
|
|
1175
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
806
1176
|
"input",
|
|
807
1177
|
{
|
|
808
1178
|
ref,
|
|
@@ -812,18 +1182,18 @@ var Checkbox = (0, import_react8.forwardRef)(
|
|
|
812
1182
|
...props
|
|
813
1183
|
}
|
|
814
1184
|
),
|
|
815
|
-
label && /* @__PURE__ */ (0,
|
|
1185
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: `text-sm text-gray-700 dark:text-gray-300 ${disabled ? "opacity-50 cursor-not-allowed" : "group-hover:text-gray-900 dark:group-hover:text-gray-100"}`, children: label })
|
|
816
1186
|
] }),
|
|
817
|
-
error && /* @__PURE__ */ (0,
|
|
1187
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error })
|
|
818
1188
|
] });
|
|
819
1189
|
}
|
|
820
1190
|
);
|
|
821
1191
|
Checkbox.displayName = "Checkbox";
|
|
822
1192
|
|
|
823
1193
|
// src/components/Toggle.tsx
|
|
824
|
-
var
|
|
825
|
-
var
|
|
826
|
-
var Toggle = (0,
|
|
1194
|
+
var import_react10 = require("react");
|
|
1195
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
1196
|
+
var Toggle = (0, import_react10.forwardRef)(
|
|
827
1197
|
({ label, size = "md", className = "", disabled, checked, ...props }, ref) => {
|
|
828
1198
|
const { theme } = useTheme();
|
|
829
1199
|
const toggleClasses = {
|
|
@@ -841,9 +1211,9 @@ var Toggle = (0, import_react9.forwardRef)(
|
|
|
841
1211
|
}
|
|
842
1212
|
};
|
|
843
1213
|
const currentSize = toggleClasses[size];
|
|
844
|
-
return /* @__PURE__ */ (0,
|
|
845
|
-
/* @__PURE__ */ (0,
|
|
846
|
-
/* @__PURE__ */ (0,
|
|
1214
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("label", { className: `inline-flex items-center gap-3 cursor-pointer ${disabled ? "opacity-50 cursor-not-allowed" : ""} ${className}`, children: [
|
|
1215
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "relative", children: [
|
|
1216
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
847
1217
|
"input",
|
|
848
1218
|
{
|
|
849
1219
|
ref,
|
|
@@ -854,27 +1224,27 @@ var Toggle = (0, import_react9.forwardRef)(
|
|
|
854
1224
|
...props
|
|
855
1225
|
}
|
|
856
1226
|
),
|
|
857
|
-
/* @__PURE__ */ (0,
|
|
1227
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
858
1228
|
"div",
|
|
859
1229
|
{
|
|
860
1230
|
className: `${currentSize.switch} bg-gray-300 dark:bg-gray-700 peer-focus:ring-2 peer-focus:ring-blue-500 rounded-full peer peer-checked:bg-blue-600 dark:peer-checked:bg-blue-500 transition-colors`
|
|
861
1231
|
}
|
|
862
1232
|
),
|
|
863
|
-
/* @__PURE__ */ (0,
|
|
1233
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
864
1234
|
"div",
|
|
865
1235
|
{
|
|
866
1236
|
className: `${currentSize.thumb} bg-white rounded-full shadow-md absolute top-0.5 left-0.5 transition-transform`
|
|
867
1237
|
}
|
|
868
1238
|
)
|
|
869
1239
|
] }),
|
|
870
|
-
label && /* @__PURE__ */ (0,
|
|
1240
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label })
|
|
871
1241
|
] });
|
|
872
1242
|
}
|
|
873
1243
|
);
|
|
874
1244
|
Toggle.displayName = "Toggle";
|
|
875
1245
|
|
|
876
1246
|
// src/components/Badge.tsx
|
|
877
|
-
var
|
|
1247
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
878
1248
|
var variantStyles2 = {
|
|
879
1249
|
default: "bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-200",
|
|
880
1250
|
primary: "bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-200",
|
|
@@ -897,12 +1267,12 @@ var Badge = ({
|
|
|
897
1267
|
const { theme } = useTheme();
|
|
898
1268
|
const variantClass = variantStyles2[variant];
|
|
899
1269
|
const sizeClass = sizeStyles[size];
|
|
900
|
-
return /* @__PURE__ */ (0,
|
|
1270
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: `inline-flex items-center font-medium rounded-full ${variantClass} ${sizeClass} ${className}`, children });
|
|
901
1271
|
};
|
|
902
1272
|
|
|
903
1273
|
// src/components/Spinner.tsx
|
|
904
|
-
var
|
|
905
|
-
var
|
|
1274
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
1275
|
+
var sizeClasses5 = {
|
|
906
1276
|
sm: "w-4 h-4 border-2",
|
|
907
1277
|
md: "w-8 h-8 border-2",
|
|
908
1278
|
lg: "w-12 h-12 border-3",
|
|
@@ -919,22 +1289,22 @@ var Spinner = ({
|
|
|
919
1289
|
className = ""
|
|
920
1290
|
}) => {
|
|
921
1291
|
const { theme } = useTheme();
|
|
922
|
-
const sizeClass =
|
|
1292
|
+
const sizeClass = sizeClasses5[size];
|
|
923
1293
|
const colorClass = colorClasses[color];
|
|
924
|
-
return /* @__PURE__ */ (0,
|
|
1294
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
925
1295
|
"div",
|
|
926
1296
|
{
|
|
927
1297
|
className: `inline-block rounded-full animate-spin ${sizeClass} ${colorClass} ${className}`,
|
|
928
1298
|
role: "status",
|
|
929
1299
|
"aria-label": "Loading",
|
|
930
|
-
children: /* @__PURE__ */ (0,
|
|
1300
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "sr-only", children: "Loading..." })
|
|
931
1301
|
}
|
|
932
1302
|
);
|
|
933
1303
|
};
|
|
934
1304
|
|
|
935
1305
|
// src/components/Tabs.tsx
|
|
936
|
-
var
|
|
937
|
-
var
|
|
1306
|
+
var import_react11 = require("react");
|
|
1307
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
938
1308
|
var Tabs = ({
|
|
939
1309
|
tabs,
|
|
940
1310
|
defaultIndex = 0,
|
|
@@ -942,14 +1312,14 @@ var Tabs = ({
|
|
|
942
1312
|
className = ""
|
|
943
1313
|
}) => {
|
|
944
1314
|
const { theme } = useTheme();
|
|
945
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
1315
|
+
const [activeIndex, setActiveIndex] = (0, import_react11.useState)(defaultIndex);
|
|
946
1316
|
const handleTabClick = (index) => {
|
|
947
1317
|
if (tabs[index].disabled) return;
|
|
948
1318
|
setActiveIndex(index);
|
|
949
1319
|
onChange?.(index);
|
|
950
1320
|
};
|
|
951
|
-
return /* @__PURE__ */ (0,
|
|
952
|
-
/* @__PURE__ */ (0,
|
|
1321
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className, children: [
|
|
1322
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "border-b border-gray-200 dark:border-gray-700", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("nav", { className: "flex gap-8 px-6", "aria-label": "Tabs", children: tabs.map((tab, index) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
953
1323
|
"button",
|
|
954
1324
|
{
|
|
955
1325
|
onClick: () => handleTabClick(index),
|
|
@@ -960,12 +1330,12 @@ var Tabs = ({
|
|
|
960
1330
|
},
|
|
961
1331
|
index
|
|
962
1332
|
)) }) }),
|
|
963
|
-
/* @__PURE__ */ (0,
|
|
1333
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { children: tabs[activeIndex]?.content })
|
|
964
1334
|
] });
|
|
965
1335
|
};
|
|
966
1336
|
|
|
967
1337
|
// src/components/Table.tsx
|
|
968
|
-
var
|
|
1338
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
969
1339
|
function Table({
|
|
970
1340
|
columns,
|
|
971
1341
|
data,
|
|
@@ -975,9 +1345,9 @@ function Table({
|
|
|
975
1345
|
className = ""
|
|
976
1346
|
}) {
|
|
977
1347
|
const { theme } = useTheme();
|
|
978
|
-
return /* @__PURE__ */ (0,
|
|
979
|
-
/* @__PURE__ */ (0,
|
|
980
|
-
/* @__PURE__ */ (0,
|
|
1348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: `overflow-x-auto ${className}`, children: [
|
|
1349
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("table", { className: "w-full text-left", children: [
|
|
1350
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("thead", { className: "bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("tr", { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
981
1351
|
"th",
|
|
982
1352
|
{
|
|
983
1353
|
className: "px-6 py-3 text-xs font-medium text-gray-700 dark:text-gray-300 uppercase tracking-wider",
|
|
@@ -986,14 +1356,14 @@ function Table({
|
|
|
986
1356
|
},
|
|
987
1357
|
column.key
|
|
988
1358
|
)) }) }),
|
|
989
|
-
/* @__PURE__ */ (0,
|
|
1359
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("tbody", { className: "bg-white dark:bg-gray-900 divide-y divide-gray-200 dark:divide-gray-700", children: data.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
990
1360
|
"tr",
|
|
991
1361
|
{
|
|
992
1362
|
className: `
|
|
993
1363
|
${striped && rowIndex % 2 === 1 ? "bg-gray-50 dark:bg-gray-800/50" : ""}
|
|
994
1364
|
${hoverable ? "hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors" : ""}
|
|
995
1365
|
`,
|
|
996
|
-
children: columns.map((column) => /* @__PURE__ */ (0,
|
|
1366
|
+
children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
997
1367
|
"td",
|
|
998
1368
|
{
|
|
999
1369
|
className: "px-6 py-4 text-sm text-gray-900 dark:text-gray-100",
|
|
@@ -1005,12 +1375,12 @@ function Table({
|
|
|
1005
1375
|
row[keyField] || rowIndex
|
|
1006
1376
|
)) })
|
|
1007
1377
|
] }),
|
|
1008
|
-
data.length === 0 && /* @__PURE__ */ (0,
|
|
1378
|
+
data.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "text-center py-8 text-gray-500 dark:text-gray-400", children: "No data available" })
|
|
1009
1379
|
] });
|
|
1010
1380
|
}
|
|
1011
1381
|
|
|
1012
1382
|
// src/components/Pagination.tsx
|
|
1013
|
-
var
|
|
1383
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
1014
1384
|
var Pagination = ({
|
|
1015
1385
|
currentPage,
|
|
1016
1386
|
totalPages,
|
|
@@ -1051,8 +1421,8 @@ var Pagination = ({
|
|
|
1051
1421
|
return range(1, totalPages);
|
|
1052
1422
|
};
|
|
1053
1423
|
const pages = paginationRange();
|
|
1054
|
-
return /* @__PURE__ */ (0,
|
|
1055
|
-
/* @__PURE__ */ (0,
|
|
1424
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("nav", { className: `flex items-center gap-1 ${className}`, "aria-label": "Pagination", children: [
|
|
1425
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1056
1426
|
"button",
|
|
1057
1427
|
{
|
|
1058
1428
|
onClick: () => onPageChange(currentPage - 1),
|
|
@@ -1064,7 +1434,7 @@ var Pagination = ({
|
|
|
1064
1434
|
),
|
|
1065
1435
|
pages.map((page, index) => {
|
|
1066
1436
|
if (page === "...") {
|
|
1067
|
-
return /* @__PURE__ */ (0,
|
|
1437
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1068
1438
|
"span",
|
|
1069
1439
|
{
|
|
1070
1440
|
className: "px-3 py-2 text-gray-700 dark:text-gray-300",
|
|
@@ -1073,7 +1443,7 @@ var Pagination = ({
|
|
|
1073
1443
|
`dots-${index}`
|
|
1074
1444
|
);
|
|
1075
1445
|
}
|
|
1076
|
-
return /* @__PURE__ */ (0,
|
|
1446
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1077
1447
|
"button",
|
|
1078
1448
|
{
|
|
1079
1449
|
onClick: () => onPageChange(page),
|
|
@@ -1085,7 +1455,7 @@ var Pagination = ({
|
|
|
1085
1455
|
page
|
|
1086
1456
|
);
|
|
1087
1457
|
}),
|
|
1088
|
-
/* @__PURE__ */ (0,
|
|
1458
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1089
1459
|
"button",
|
|
1090
1460
|
{
|
|
1091
1461
|
onClick: () => onPageChange(currentPage + 1),
|
|
@@ -1099,17 +1469,17 @@ var Pagination = ({
|
|
|
1099
1469
|
};
|
|
1100
1470
|
|
|
1101
1471
|
// src/components/DatePicker.tsx
|
|
1102
|
-
var
|
|
1103
|
-
var
|
|
1104
|
-
var DatePicker = (0,
|
|
1472
|
+
var import_react12 = require("react");
|
|
1473
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
1474
|
+
var DatePicker = (0, import_react12.forwardRef)(
|
|
1105
1475
|
({ label, error, helperText, className = "", disabled, ...props }, ref) => {
|
|
1106
1476
|
const { theme } = useTheme();
|
|
1107
1477
|
const baseStyles = "w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500";
|
|
1108
1478
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
1109
1479
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1110
|
-
return /* @__PURE__ */ (0,
|
|
1111
|
-
label && /* @__PURE__ */ (0,
|
|
1112
|
-
/* @__PURE__ */ (0,
|
|
1480
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className, children: [
|
|
1481
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1482
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
1113
1483
|
"input",
|
|
1114
1484
|
{
|
|
1115
1485
|
ref,
|
|
@@ -1119,25 +1489,25 @@ var DatePicker = (0, import_react11.forwardRef)(
|
|
|
1119
1489
|
...props
|
|
1120
1490
|
}
|
|
1121
1491
|
),
|
|
1122
|
-
error && /* @__PURE__ */ (0,
|
|
1123
|
-
helperText && !error && /* @__PURE__ */ (0,
|
|
1492
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1493
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1124
1494
|
] });
|
|
1125
1495
|
}
|
|
1126
1496
|
);
|
|
1127
1497
|
DatePicker.displayName = "DatePicker";
|
|
1128
1498
|
|
|
1129
1499
|
// src/components/TimePicker.tsx
|
|
1130
|
-
var
|
|
1131
|
-
var
|
|
1132
|
-
var TimePicker = (0,
|
|
1500
|
+
var import_react13 = require("react");
|
|
1501
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
1502
|
+
var TimePicker = (0, import_react13.forwardRef)(
|
|
1133
1503
|
({ label, error, helperText, className = "", disabled, ...props }, ref) => {
|
|
1134
1504
|
const { theme } = useTheme();
|
|
1135
1505
|
const baseStyles = "w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500";
|
|
1136
1506
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
1137
1507
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1138
|
-
return /* @__PURE__ */ (0,
|
|
1139
|
-
label && /* @__PURE__ */ (0,
|
|
1140
|
-
/* @__PURE__ */ (0,
|
|
1508
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className, children: [
|
|
1509
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1510
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
1141
1511
|
"input",
|
|
1142
1512
|
{
|
|
1143
1513
|
ref,
|
|
@@ -1147,25 +1517,25 @@ var TimePicker = (0, import_react12.forwardRef)(
|
|
|
1147
1517
|
...props
|
|
1148
1518
|
}
|
|
1149
1519
|
),
|
|
1150
|
-
error && /* @__PURE__ */ (0,
|
|
1151
|
-
helperText && !error && /* @__PURE__ */ (0,
|
|
1520
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1521
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1152
1522
|
] });
|
|
1153
1523
|
}
|
|
1154
1524
|
);
|
|
1155
1525
|
TimePicker.displayName = "TimePicker";
|
|
1156
1526
|
|
|
1157
1527
|
// src/components/DateTimePicker.tsx
|
|
1158
|
-
var
|
|
1159
|
-
var
|
|
1160
|
-
var DateTimePicker = (0,
|
|
1528
|
+
var import_react14 = require("react");
|
|
1529
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
1530
|
+
var DateTimePicker = (0, import_react14.forwardRef)(
|
|
1161
1531
|
({ label, error, helperText, className = "", disabled, ...props }, ref) => {
|
|
1162
1532
|
const { theme } = useTheme();
|
|
1163
1533
|
const baseStyles = "w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500";
|
|
1164
1534
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
1165
1535
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1166
|
-
return /* @__PURE__ */ (0,
|
|
1167
|
-
label && /* @__PURE__ */ (0,
|
|
1168
|
-
/* @__PURE__ */ (0,
|
|
1536
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className, children: [
|
|
1537
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1538
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
1169
1539
|
"input",
|
|
1170
1540
|
{
|
|
1171
1541
|
ref,
|
|
@@ -1175,35 +1545,629 @@ var DateTimePicker = (0, import_react13.forwardRef)(
|
|
|
1175
1545
|
...props
|
|
1176
1546
|
}
|
|
1177
1547
|
),
|
|
1178
|
-
error && /* @__PURE__ */ (0,
|
|
1179
|
-
helperText && !error && /* @__PURE__ */ (0,
|
|
1548
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1549
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1180
1550
|
] });
|
|
1181
1551
|
}
|
|
1182
1552
|
);
|
|
1183
1553
|
DateTimePicker.displayName = "DateTimePicker";
|
|
1184
1554
|
|
|
1185
|
-
// src/
|
|
1186
|
-
var
|
|
1187
|
-
(
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1555
|
+
// src/components/Radio.tsx
|
|
1556
|
+
var import_react15 = __toESM(require("react"));
|
|
1557
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
1558
|
+
var Radio = ({
|
|
1559
|
+
name,
|
|
1560
|
+
options,
|
|
1561
|
+
value: controlledValue,
|
|
1562
|
+
defaultValue,
|
|
1563
|
+
onChange,
|
|
1564
|
+
disabled = false,
|
|
1565
|
+
orientation = "vertical",
|
|
1566
|
+
className = ""
|
|
1567
|
+
}) => {
|
|
1568
|
+
const [internalValue, setInternalValue] = import_react15.default.useState(defaultValue || "");
|
|
1569
|
+
const value = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
1570
|
+
const handleChange = (optionValue) => {
|
|
1571
|
+
if (disabled) return;
|
|
1572
|
+
setInternalValue(optionValue);
|
|
1573
|
+
onChange?.(optionValue);
|
|
1574
|
+
};
|
|
1575
|
+
const containerClass = orientation === "horizontal" ? "flex flex-wrap gap-4" : "flex flex-col gap-2";
|
|
1576
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: `${containerClass} ${className}`, role: "radiogroup", children: options.map((option) => {
|
|
1577
|
+
const isDisabled = disabled || option.disabled;
|
|
1578
|
+
const isChecked = value === option.value;
|
|
1579
|
+
const id = `${name}-${option.value}`;
|
|
1580
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
1581
|
+
"label",
|
|
1582
|
+
{
|
|
1583
|
+
htmlFor: id,
|
|
1584
|
+
className: `flex items-center gap-2 cursor-pointer ${isDisabled ? "opacity-50 cursor-not-allowed" : ""}`,
|
|
1585
|
+
children: [
|
|
1586
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
1587
|
+
"input",
|
|
1588
|
+
{
|
|
1589
|
+
type: "radio",
|
|
1590
|
+
id,
|
|
1591
|
+
name,
|
|
1592
|
+
value: option.value,
|
|
1593
|
+
checked: isChecked,
|
|
1594
|
+
onChange: () => handleChange(option.value),
|
|
1595
|
+
disabled: isDisabled,
|
|
1596
|
+
className: "w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600 cursor-pointer disabled:cursor-not-allowed"
|
|
1597
|
+
}
|
|
1598
|
+
),
|
|
1599
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-300", children: option.label })
|
|
1600
|
+
]
|
|
1601
|
+
},
|
|
1602
|
+
option.value
|
|
1603
|
+
);
|
|
1604
|
+
}) });
|
|
1605
|
+
};
|
|
1606
|
+
|
|
1607
|
+
// src/components/ProgressBar.tsx
|
|
1608
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
1609
|
+
var ProgressBar = ({
|
|
1610
|
+
value,
|
|
1611
|
+
max = 100,
|
|
1612
|
+
size = "md",
|
|
1613
|
+
variant = "default",
|
|
1614
|
+
showLabel = false,
|
|
1615
|
+
label,
|
|
1616
|
+
className = ""
|
|
1617
|
+
}) => {
|
|
1618
|
+
const percentage = Math.min(Math.max(value / max * 100, 0), 100);
|
|
1619
|
+
const sizeClasses6 = {
|
|
1620
|
+
sm: "h-1",
|
|
1621
|
+
md: "h-2",
|
|
1622
|
+
lg: "h-3"
|
|
1623
|
+
};
|
|
1624
|
+
const variantClasses = {
|
|
1625
|
+
default: "bg-blue-600 dark:bg-blue-500",
|
|
1626
|
+
success: "bg-green-600 dark:bg-green-500",
|
|
1627
|
+
warning: "bg-yellow-500 dark:bg-yellow-400",
|
|
1628
|
+
danger: "bg-red-600 dark:bg-red-500"
|
|
1629
|
+
};
|
|
1630
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: `w-full ${className}`, children: [
|
|
1631
|
+
(showLabel || label) && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex justify-between items-center mb-1", children: [
|
|
1632
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label }),
|
|
1633
|
+
showLabel && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: [
|
|
1634
|
+
Math.round(percentage),
|
|
1635
|
+
"%"
|
|
1636
|
+
] })
|
|
1637
|
+
] }),
|
|
1638
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
1639
|
+
"div",
|
|
1640
|
+
{
|
|
1641
|
+
className: `w-full bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden ${sizeClasses6[size]}`,
|
|
1642
|
+
role: "progressbar",
|
|
1643
|
+
"aria-valuenow": value,
|
|
1644
|
+
"aria-valuemin": 0,
|
|
1645
|
+
"aria-valuemax": max,
|
|
1646
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
1647
|
+
"div",
|
|
1648
|
+
{
|
|
1649
|
+
className: `${sizeClasses6[size]} ${variantClasses[variant]} rounded-full transition-all duration-300 ease-out`,
|
|
1650
|
+
style: { width: `${percentage}%` }
|
|
1651
|
+
}
|
|
1652
|
+
)
|
|
1653
|
+
}
|
|
1654
|
+
)
|
|
1655
|
+
] });
|
|
1656
|
+
};
|
|
1657
|
+
|
|
1658
|
+
// src/components/Slider.tsx
|
|
1659
|
+
var import_react16 = __toESM(require("react"));
|
|
1660
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
1661
|
+
var Slider = ({
|
|
1662
|
+
value: controlledValue,
|
|
1663
|
+
defaultValue = 50,
|
|
1664
|
+
min = 0,
|
|
1665
|
+
max = 100,
|
|
1666
|
+
step = 1,
|
|
1667
|
+
onChange,
|
|
1668
|
+
disabled = false,
|
|
1669
|
+
showValue = false,
|
|
1670
|
+
label,
|
|
1671
|
+
className = ""
|
|
1672
|
+
}) => {
|
|
1673
|
+
const [internalValue, setInternalValue] = import_react16.default.useState(defaultValue);
|
|
1674
|
+
const value = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
1675
|
+
const handleChange = (e) => {
|
|
1676
|
+
const newValue = Number(e.target.value);
|
|
1677
|
+
setInternalValue(newValue);
|
|
1678
|
+
onChange?.(newValue);
|
|
1679
|
+
};
|
|
1680
|
+
const percentage = (value - min) / (max - min) * 100;
|
|
1681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: `w-full ${className}`, children: [
|
|
1682
|
+
(label || showValue) && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex justify-between items-center mb-2", children: [
|
|
1683
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label }),
|
|
1684
|
+
showValue && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: value })
|
|
1685
|
+
] }),
|
|
1686
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "relative", children: [
|
|
1687
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "absolute inset-0 h-2 bg-gray-200 dark:bg-gray-700 rounded-full top-1/2 -translate-y-1/2" }),
|
|
1688
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
1689
|
+
"div",
|
|
1690
|
+
{
|
|
1691
|
+
className: "absolute h-2 bg-blue-600 dark:bg-blue-500 rounded-full top-1/2 -translate-y-1/2 pointer-events-none",
|
|
1692
|
+
style: { width: `${percentage}%` }
|
|
1693
|
+
}
|
|
1694
|
+
),
|
|
1695
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
1696
|
+
"input",
|
|
1697
|
+
{
|
|
1698
|
+
type: "range",
|
|
1699
|
+
min,
|
|
1700
|
+
max,
|
|
1701
|
+
step,
|
|
1702
|
+
value,
|
|
1703
|
+
onChange: handleChange,
|
|
1704
|
+
disabled,
|
|
1705
|
+
className: "relative w-full h-2 bg-transparent appearance-none cursor-pointer disabled:cursor-not-allowed disabled:opacity-50\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-blue-600 [&::-webkit-slider-thumb]:cursor-pointer\n [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-md\n [&::-webkit-slider-thumb]:hover:bg-blue-700 [&::-webkit-slider-thumb]:active:scale-110 [&::-webkit-slider-thumb]:transition-all\n [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:rounded-full\n [&::-moz-range-thumb]:bg-blue-600 [&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-2\n [&::-moz-range-thumb]:border-white [&::-moz-range-thumb]:shadow-md [&::-moz-range-thumb]:hover:bg-blue-700\n [&::-moz-range-thumb]:active:scale-110 [&::-moz-range-thumb]:transition-all [&::-moz-range-thumb]:border-none",
|
|
1706
|
+
"aria-label": label,
|
|
1707
|
+
"aria-valuemin": min,
|
|
1708
|
+
"aria-valuemax": max,
|
|
1709
|
+
"aria-valuenow": value
|
|
1710
|
+
}
|
|
1711
|
+
)
|
|
1712
|
+
] })
|
|
1713
|
+
] });
|
|
1714
|
+
};
|
|
1715
|
+
|
|
1716
|
+
// src/components/Avatar.tsx
|
|
1717
|
+
var import_react17 = __toESM(require("react"));
|
|
1718
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
1719
|
+
var Avatar = ({
|
|
1720
|
+
src,
|
|
1721
|
+
alt,
|
|
1722
|
+
name,
|
|
1723
|
+
size = "md",
|
|
1724
|
+
shape = "circle",
|
|
1725
|
+
className = "",
|
|
1726
|
+
fallbackColor = "bg-blue-600"
|
|
1727
|
+
}) => {
|
|
1728
|
+
const [imageError, setImageError] = import_react17.default.useState(false);
|
|
1729
|
+
const sizeClasses6 = {
|
|
1730
|
+
xs: "w-6 h-6 text-xs",
|
|
1731
|
+
sm: "w-8 h-8 text-sm",
|
|
1732
|
+
md: "w-10 h-10 text-base",
|
|
1733
|
+
lg: "w-12 h-12 text-lg",
|
|
1734
|
+
xl: "w-16 h-16 text-2xl"
|
|
1735
|
+
};
|
|
1736
|
+
const shapeClass = shape === "circle" ? "rounded-full" : "rounded-md";
|
|
1737
|
+
const getInitials = (name2) => {
|
|
1738
|
+
const parts = name2.trim().split(" ");
|
|
1739
|
+
if (parts.length >= 2) {
|
|
1740
|
+
return `${parts[0][0]}${parts[parts.length - 1][0]}`.toUpperCase();
|
|
1741
|
+
}
|
|
1742
|
+
return name2.slice(0, 2).toUpperCase();
|
|
1743
|
+
};
|
|
1744
|
+
const showImage = src && !imageError;
|
|
1745
|
+
const showInitials = !showImage && name;
|
|
1746
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
1747
|
+
"div",
|
|
1748
|
+
{
|
|
1749
|
+
className: `${sizeClasses6[size]} ${shapeClass} flex items-center justify-center overflow-hidden ${showImage ? "bg-gray-200 dark:bg-gray-700" : `${fallbackColor} text-white`} ${className}`,
|
|
1750
|
+
children: showImage ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
1751
|
+
"img",
|
|
1752
|
+
{
|
|
1753
|
+
src,
|
|
1754
|
+
alt: alt || name || "Avatar",
|
|
1755
|
+
className: "w-full h-full object-cover",
|
|
1756
|
+
onError: () => setImageError(true)
|
|
1757
|
+
}
|
|
1758
|
+
) : showInitials ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "font-semibold select-none", children: getInitials(name) }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
1759
|
+
"svg",
|
|
1760
|
+
{
|
|
1761
|
+
className: "w-full h-full text-gray-400 dark:text-gray-600",
|
|
1762
|
+
fill: "currentColor",
|
|
1763
|
+
viewBox: "0 0 24 24",
|
|
1764
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.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" })
|
|
1765
|
+
}
|
|
1766
|
+
)
|
|
1767
|
+
}
|
|
1768
|
+
);
|
|
1769
|
+
};
|
|
1770
|
+
|
|
1771
|
+
// src/components/Textarea.tsx
|
|
1772
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
1773
|
+
var Textarea = ({
|
|
1774
|
+
label,
|
|
1775
|
+
error,
|
|
1776
|
+
helperText,
|
|
1777
|
+
size = "md",
|
|
1778
|
+
resize = "vertical",
|
|
1779
|
+
className = "",
|
|
1780
|
+
disabled,
|
|
1781
|
+
...props
|
|
1782
|
+
}) => {
|
|
1783
|
+
const sizeClasses6 = {
|
|
1784
|
+
sm: "px-3 py-1.5 text-sm min-h-[80px]",
|
|
1785
|
+
md: "px-4 py-2 text-base min-h-[100px]",
|
|
1786
|
+
lg: "px-4 py-3 text-lg min-h-[120px]"
|
|
1787
|
+
};
|
|
1788
|
+
const resizeClasses = {
|
|
1789
|
+
none: "resize-none",
|
|
1790
|
+
vertical: "resize-y",
|
|
1791
|
+
horizontal: "resize-x",
|
|
1792
|
+
both: "resize"
|
|
1793
|
+
};
|
|
1794
|
+
const baseClasses = `w-full rounded-lg border transition-colors duration-150 focus:outline-none focus:ring-2
|
|
1795
|
+
${error ? "border-red-500 focus:ring-red-500 focus:border-red-500 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:focus:ring-blue-400"}
|
|
1796
|
+
bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100
|
|
1797
|
+
placeholder:text-gray-500 dark:placeholder:text-gray-400
|
|
1798
|
+
disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-gray-50 dark:disabled:bg-gray-900`;
|
|
1799
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: `w-full ${className}`, children: [
|
|
1800
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1801
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
1802
|
+
"textarea",
|
|
1803
|
+
{
|
|
1804
|
+
className: `${baseClasses} ${sizeClasses6[size]} ${resizeClasses[resize]}`,
|
|
1805
|
+
disabled,
|
|
1806
|
+
...props
|
|
1807
|
+
}
|
|
1808
|
+
),
|
|
1809
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1810
|
+
helperText && !error && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1811
|
+
] });
|
|
1812
|
+
};
|
|
1813
|
+
|
|
1814
|
+
// src/components/Toast.tsx
|
|
1815
|
+
var import_react18 = require("react");
|
|
1816
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
1817
|
+
var ToastContext = (0, import_react18.createContext)(void 0);
|
|
1818
|
+
var useToast = () => {
|
|
1819
|
+
const context = (0, import_react18.useContext)(ToastContext);
|
|
1820
|
+
if (!context) {
|
|
1821
|
+
throw new Error("useToast must be used within a ToastProvider");
|
|
1822
|
+
}
|
|
1823
|
+
return context;
|
|
1824
|
+
};
|
|
1825
|
+
var ToastProvider = ({ children, position = "top-right" }) => {
|
|
1826
|
+
const [toasts, setToasts] = (0, import_react18.useState)([]);
|
|
1827
|
+
const addToast = (0, import_react18.useCallback)((toast2) => {
|
|
1828
|
+
const id = Math.random().toString(36).substring(7);
|
|
1829
|
+
const newToast = { ...toast2, id };
|
|
1830
|
+
setToasts((prev) => [...prev, newToast]);
|
|
1831
|
+
const duration = toast2.duration || 5e3;
|
|
1832
|
+
setTimeout(() => {
|
|
1833
|
+
removeToast(id);
|
|
1834
|
+
}, duration);
|
|
1835
|
+
}, []);
|
|
1836
|
+
const removeToast = (0, import_react18.useCallback)((id) => {
|
|
1837
|
+
setToasts((prev) => prev.filter((toast2) => toast2.id !== id));
|
|
1838
|
+
}, []);
|
|
1839
|
+
const positionClasses2 = {
|
|
1840
|
+
"top-right": "top-4 right-4",
|
|
1841
|
+
"top-left": "top-4 left-4",
|
|
1842
|
+
"bottom-right": "bottom-4 right-4",
|
|
1843
|
+
"bottom-left": "bottom-4 left-4",
|
|
1844
|
+
"top-center": "top-4 left-1/2 -translate-x-1/2",
|
|
1845
|
+
"bottom-center": "bottom-4 left-1/2 -translate-x-1/2"
|
|
1846
|
+
};
|
|
1847
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(ToastContext.Provider, { value: { toasts, addToast, removeToast }, children: [
|
|
1848
|
+
children,
|
|
1849
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: `fixed ${positionClasses2[position]} z-50 flex flex-col gap-2 max-w-md`, children: toasts.map((toast2) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(ToastItem, { toast: toast2, onClose: () => removeToast(toast2.id) }, toast2.id)) })
|
|
1850
|
+
] });
|
|
1851
|
+
};
|
|
1852
|
+
var ToastItem = ({ toast: toast2, onClose }) => {
|
|
1853
|
+
const typeStyles = {
|
|
1854
|
+
success: "bg-green-50 dark:bg-green-900/30 border-green-500 text-green-800 dark:text-green-200",
|
|
1855
|
+
error: "bg-red-50 dark:bg-red-900/30 border-red-500 text-red-800 dark:text-red-200",
|
|
1856
|
+
warning: "bg-yellow-50 dark:bg-yellow-900/30 border-yellow-500 text-yellow-800 dark:text-yellow-200",
|
|
1857
|
+
info: "bg-blue-50 dark:bg-blue-900/30 border-blue-500 text-blue-800 dark:text-blue-200"
|
|
1858
|
+
};
|
|
1859
|
+
const typeIcons = {
|
|
1860
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CheckIcon, { size: "sm", className: "text-green-600 dark:text-green-400" }),
|
|
1861
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CloseIcon, { size: "sm", className: "text-red-600 dark:text-red-400" }),
|
|
1862
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("svg", { className: "w-4 h-4 text-yellow-600 dark:text-yellow-400", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ (0, import_jsx_runtime59.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" }) }),
|
|
1863
|
+
info: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("svg", { className: "w-4 h-4 text-blue-600 dark:text-blue-400", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ (0, import_jsx_runtime59.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" }) })
|
|
1864
|
+
};
|
|
1865
|
+
const type = toast2.type || "info";
|
|
1866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
|
|
1867
|
+
"div",
|
|
1868
|
+
{
|
|
1869
|
+
className: `flex items-start gap-3 p-4 rounded-lg border-l-4 shadow-lg backdrop-blur-sm ${typeStyles[type]} animate-slide-in`,
|
|
1870
|
+
role: "alert",
|
|
1871
|
+
children: [
|
|
1872
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "flex-shrink-0 mt-0.5", children: typeIcons[type] }),
|
|
1873
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("p", { className: "flex-1 text-sm font-medium", children: toast2.message }),
|
|
1874
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
1875
|
+
"button",
|
|
1876
|
+
{
|
|
1877
|
+
onClick: onClose,
|
|
1878
|
+
className: "flex-shrink-0 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 transition-colors",
|
|
1879
|
+
"aria-label": "Close",
|
|
1880
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CloseIcon, { size: "sm" })
|
|
1881
|
+
}
|
|
1882
|
+
)
|
|
1883
|
+
]
|
|
1884
|
+
}
|
|
1885
|
+
);
|
|
1886
|
+
};
|
|
1887
|
+
var toast = {
|
|
1888
|
+
success: (message, duration) => ({
|
|
1889
|
+
message,
|
|
1890
|
+
type: "success",
|
|
1891
|
+
duration
|
|
1892
|
+
}),
|
|
1893
|
+
error: (message, duration) => ({
|
|
1894
|
+
message,
|
|
1895
|
+
type: "error",
|
|
1896
|
+
duration
|
|
1897
|
+
}),
|
|
1898
|
+
warning: (message, duration) => ({
|
|
1899
|
+
message,
|
|
1900
|
+
type: "warning",
|
|
1901
|
+
duration
|
|
1902
|
+
}),
|
|
1903
|
+
info: (message, duration) => ({
|
|
1904
|
+
message,
|
|
1905
|
+
type: "info",
|
|
1906
|
+
duration
|
|
1907
|
+
})
|
|
1908
|
+
};
|
|
1909
|
+
|
|
1910
|
+
// src/components/Stepper.tsx
|
|
1911
|
+
var import_react19 = __toESM(require("react"));
|
|
1912
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
1913
|
+
var Stepper = ({
|
|
1914
|
+
steps,
|
|
1915
|
+
currentStep,
|
|
1916
|
+
orientation = "horizontal",
|
|
1917
|
+
className = ""
|
|
1918
|
+
}) => {
|
|
1919
|
+
const isHorizontal = orientation === "horizontal";
|
|
1920
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: `${isHorizontal ? "flex items-center" : "flex flex-col"} ${className}`, children: steps.map((step, index) => {
|
|
1921
|
+
const stepNumber = index + 1;
|
|
1922
|
+
const isActive = stepNumber === currentStep;
|
|
1923
|
+
const isCompleted = stepNumber < currentStep;
|
|
1924
|
+
const isLast = index === steps.length - 1;
|
|
1925
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react19.default.Fragment, { children: [
|
|
1926
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: `flex ${isHorizontal ? "flex-col items-center" : "flex-row items-start"} ${isHorizontal ? "" : "flex-1"}`, children: [
|
|
1927
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
1928
|
+
"div",
|
|
1929
|
+
{
|
|
1930
|
+
className: `flex items-center justify-center w-10 h-10 rounded-full border-2 transition-all ${isCompleted ? "bg-blue-600 border-blue-600 dark:bg-blue-500 dark:border-blue-500" : isActive ? "border-blue-600 bg-white dark:border-blue-500 dark:bg-gray-800" : "border-gray-300 bg-white dark:border-gray-600 dark:bg-gray-800"}`,
|
|
1931
|
+
children: isCompleted ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(CheckIcon, { size: "sm", className: "text-white" }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
1932
|
+
"span",
|
|
1933
|
+
{
|
|
1934
|
+
className: `text-sm font-semibold ${isActive ? "text-blue-600 dark:text-blue-400" : "text-gray-500 dark:text-gray-400"}`,
|
|
1935
|
+
children: stepNumber
|
|
1936
|
+
}
|
|
1937
|
+
)
|
|
1938
|
+
}
|
|
1939
|
+
) }),
|
|
1940
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: `${isHorizontal ? "mt-2 text-center" : "ml-4 pb-8"} ${isLast && !isHorizontal ? "pb-0" : ""}`, children: [
|
|
1941
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
1942
|
+
"p",
|
|
1943
|
+
{
|
|
1944
|
+
className: `text-sm font-medium ${isActive || isCompleted ? "text-gray-900 dark:text-gray-100" : "text-gray-500 dark:text-gray-400"}`,
|
|
1945
|
+
children: step.label
|
|
1946
|
+
}
|
|
1947
|
+
),
|
|
1948
|
+
step.description && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: step.description })
|
|
1949
|
+
] })
|
|
1950
|
+
] }),
|
|
1951
|
+
!isLast && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
1952
|
+
"div",
|
|
1953
|
+
{
|
|
1954
|
+
className: `${isHorizontal ? "flex-1 h-0.5 mx-4" : "w-0.5 h-full ml-5 -mt-8"} ${isCompleted || isActive && stepNumber < currentStep ? "bg-blue-600 dark:bg-blue-500" : "bg-gray-300 dark:bg-gray-600"}`
|
|
1955
|
+
}
|
|
1956
|
+
)
|
|
1957
|
+
] }, index);
|
|
1958
|
+
}) });
|
|
1959
|
+
};
|
|
1960
|
+
|
|
1961
|
+
// src/components/Divider.tsx
|
|
1962
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
1963
|
+
var Divider = ({
|
|
1964
|
+
orientation = "horizontal",
|
|
1965
|
+
variant = "solid",
|
|
1966
|
+
className = "",
|
|
1967
|
+
label,
|
|
1968
|
+
labelPosition = "center"
|
|
1969
|
+
}) => {
|
|
1970
|
+
const variantClasses = {
|
|
1971
|
+
solid: "border-solid",
|
|
1972
|
+
dashed: "border-dashed",
|
|
1973
|
+
dotted: "border-dotted"
|
|
1974
|
+
};
|
|
1975
|
+
if (label && orientation === "horizontal") {
|
|
1976
|
+
const alignmentClasses = {
|
|
1977
|
+
left: "justify-start",
|
|
1978
|
+
center: "justify-center",
|
|
1979
|
+
right: "justify-end"
|
|
1980
|
+
};
|
|
1981
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: `flex items-center ${alignmentClasses[labelPosition]} ${className}`, role: "separator", children: [
|
|
1982
|
+
labelPosition !== "left" && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: `flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600` }),
|
|
1983
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "px-4 text-sm text-gray-500 dark:text-gray-400", children: label }),
|
|
1984
|
+
labelPosition !== "right" && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: `flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600` })
|
|
1985
|
+
] });
|
|
1986
|
+
}
|
|
1987
|
+
if (orientation === "vertical") {
|
|
1988
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
1989
|
+
"div",
|
|
1990
|
+
{
|
|
1991
|
+
className: `inline-block h-full border-l ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`,
|
|
1992
|
+
role: "separator",
|
|
1993
|
+
"aria-orientation": "vertical"
|
|
1994
|
+
}
|
|
1995
|
+
);
|
|
1996
|
+
}
|
|
1997
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
1998
|
+
"hr",
|
|
1999
|
+
{
|
|
2000
|
+
className: `border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`,
|
|
2001
|
+
role: "separator"
|
|
2002
|
+
}
|
|
2003
|
+
);
|
|
2004
|
+
};
|
|
2005
|
+
|
|
2006
|
+
// src/components/FileUpload.tsx
|
|
2007
|
+
var import_react20 = require("react");
|
|
2008
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
2009
|
+
var FileUpload = ({
|
|
2010
|
+
accept,
|
|
2011
|
+
multiple = false,
|
|
2012
|
+
maxSize,
|
|
2013
|
+
maxFiles = 10,
|
|
2014
|
+
disabled = false,
|
|
2015
|
+
onChange,
|
|
2016
|
+
onError,
|
|
2017
|
+
className = "",
|
|
2018
|
+
label,
|
|
2019
|
+
helperText
|
|
2020
|
+
}) => {
|
|
2021
|
+
const [files, setFiles] = (0, import_react20.useState)([]);
|
|
2022
|
+
const [isDragging, setIsDragging] = (0, import_react20.useState)(false);
|
|
2023
|
+
const fileInputRef = (0, import_react20.useRef)(null);
|
|
2024
|
+
const formatFileSize = (bytes) => {
|
|
2025
|
+
if (bytes === 0) return "0 Bytes";
|
|
2026
|
+
const k = 1024;
|
|
2027
|
+
const sizes = ["Bytes", "KB", "MB", "GB"];
|
|
2028
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
2029
|
+
return Math.round(bytes / Math.pow(k, i) * 100) / 100 + " " + sizes[i];
|
|
2030
|
+
};
|
|
2031
|
+
const validateFiles = (fileList) => {
|
|
2032
|
+
const validFiles = [];
|
|
2033
|
+
const filesArray = Array.from(fileList);
|
|
2034
|
+
if (filesArray.length + files.length > maxFiles) {
|
|
2035
|
+
onError?.(`Maximum ${maxFiles} files allowed`);
|
|
2036
|
+
return validFiles;
|
|
2037
|
+
}
|
|
2038
|
+
for (const file of filesArray) {
|
|
2039
|
+
if (maxSize && file.size > maxSize) {
|
|
2040
|
+
onError?.(`File ${file.name} exceeds maximum size of ${formatFileSize(maxSize)}`);
|
|
2041
|
+
continue;
|
|
2042
|
+
}
|
|
2043
|
+
validFiles.push(file);
|
|
2044
|
+
}
|
|
2045
|
+
return validFiles;
|
|
2046
|
+
};
|
|
2047
|
+
const handleFiles = (fileList) => {
|
|
2048
|
+
if (!fileList || disabled) return;
|
|
2049
|
+
const validFiles = validateFiles(fileList);
|
|
2050
|
+
if (validFiles.length > 0) {
|
|
2051
|
+
const newFiles = multiple ? [...files, ...validFiles] : validFiles;
|
|
2052
|
+
setFiles(newFiles);
|
|
2053
|
+
onChange?.(newFiles);
|
|
2054
|
+
}
|
|
2055
|
+
};
|
|
2056
|
+
const handleDrop = (e) => {
|
|
2057
|
+
e.preventDefault();
|
|
2058
|
+
setIsDragging(false);
|
|
2059
|
+
handleFiles(e.dataTransfer.files);
|
|
2060
|
+
};
|
|
2061
|
+
const handleDragOver = (e) => {
|
|
2062
|
+
e.preventDefault();
|
|
2063
|
+
if (!disabled) {
|
|
2064
|
+
setIsDragging(true);
|
|
2065
|
+
}
|
|
2066
|
+
};
|
|
2067
|
+
const handleDragLeave = (e) => {
|
|
2068
|
+
e.preventDefault();
|
|
2069
|
+
setIsDragging(false);
|
|
2070
|
+
};
|
|
2071
|
+
const handleClick = () => {
|
|
2072
|
+
if (!disabled) {
|
|
2073
|
+
fileInputRef.current?.click();
|
|
2074
|
+
}
|
|
2075
|
+
};
|
|
2076
|
+
const handleRemoveFile = (index) => {
|
|
2077
|
+
const newFiles = files.filter((_, i) => i !== index);
|
|
2078
|
+
setFiles(newFiles);
|
|
2079
|
+
onChange?.(newFiles);
|
|
2080
|
+
};
|
|
2081
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: `w-full ${className}`, children: [
|
|
2082
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2", children: label }),
|
|
2083
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
2084
|
+
"div",
|
|
2085
|
+
{
|
|
2086
|
+
onDrop: handleDrop,
|
|
2087
|
+
onDragOver: handleDragOver,
|
|
2088
|
+
onDragLeave: handleDragLeave,
|
|
2089
|
+
onClick: handleClick,
|
|
2090
|
+
className: `relative border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-all ${isDragging ? "border-blue-500 bg-blue-50 dark:bg-blue-900/20" : "border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500"} ${disabled ? "opacity-50 cursor-not-allowed" : ""}`,
|
|
2091
|
+
children: [
|
|
2092
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2093
|
+
"input",
|
|
2094
|
+
{
|
|
2095
|
+
ref: fileInputRef,
|
|
2096
|
+
type: "file",
|
|
2097
|
+
accept,
|
|
2098
|
+
multiple,
|
|
2099
|
+
onChange: (e) => handleFiles(e.target.files),
|
|
2100
|
+
disabled,
|
|
2101
|
+
className: "hidden"
|
|
2102
|
+
}
|
|
2103
|
+
),
|
|
2104
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex flex-col items-center gap-2", children: [
|
|
2105
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "w-12 h-12 rounded-full bg-gray-100 dark:bg-gray-800 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(UploadIcon, { size: "lg", className: "text-gray-400 dark:text-gray-500" }) }),
|
|
2106
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { children: [
|
|
2107
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("p", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: [
|
|
2108
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-blue-600 dark:text-blue-400", children: "Click to upload" }),
|
|
2109
|
+
" or drag and drop"
|
|
2110
|
+
] }),
|
|
2111
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: [
|
|
2112
|
+
accept ? `Accepted: ${accept}` : "Any file type",
|
|
2113
|
+
maxSize && ` \u2022 Max size: ${formatFileSize(maxSize)}`
|
|
2114
|
+
] })
|
|
2115
|
+
] })
|
|
2116
|
+
] })
|
|
2117
|
+
]
|
|
2118
|
+
}
|
|
2119
|
+
),
|
|
2120
|
+
helperText && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: helperText }),
|
|
2121
|
+
files.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "mt-4 space-y-2", children: files.map((file, index) => /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
2122
|
+
"div",
|
|
2123
|
+
{
|
|
2124
|
+
className: "flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700",
|
|
2125
|
+
children: [
|
|
2126
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
2127
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-sm font-medium text-gray-900 dark:text-gray-100 truncate", children: file.name }),
|
|
2128
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: formatFileSize(file.size) })
|
|
2129
|
+
] }),
|
|
2130
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2131
|
+
"button",
|
|
2132
|
+
{
|
|
2133
|
+
onClick: (e) => {
|
|
2134
|
+
e.stopPropagation();
|
|
2135
|
+
handleRemoveFile(index);
|
|
2136
|
+
},
|
|
2137
|
+
className: "ml-4 text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors",
|
|
2138
|
+
"aria-label": "Remove file",
|
|
2139
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(CloseIcon, { size: "sm" })
|
|
2140
|
+
}
|
|
2141
|
+
)
|
|
2142
|
+
]
|
|
2143
|
+
},
|
|
2144
|
+
index
|
|
2145
|
+
)) })
|
|
2146
|
+
] });
|
|
2147
|
+
};
|
|
2148
|
+
|
|
2149
|
+
// src/utils/theme-script.ts
|
|
2150
|
+
var themeScript = `
|
|
2151
|
+
(function() {
|
|
2152
|
+
try {
|
|
2153
|
+
// Get stored preferences
|
|
2154
|
+
const storedTheme = localStorage.getItem('lite-ui-theme') || 'default';
|
|
2155
|
+
const storedColorMode = localStorage.getItem('lite-ui-color-mode');
|
|
2156
|
+
|
|
2157
|
+
// Determine color mode (system, light, or dark)
|
|
2158
|
+
let colorMode = storedColorMode;
|
|
2159
|
+
if (!colorMode || colorMode === 'system') {
|
|
2160
|
+
colorMode = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
2161
|
+
}
|
|
2162
|
+
|
|
2163
|
+
// Set attributes before render
|
|
2164
|
+
document.documentElement.setAttribute('data-theme', storedTheme);
|
|
2165
|
+
document.documentElement.setAttribute('data-color-mode', colorMode);
|
|
2166
|
+
|
|
2167
|
+
// Add dark class for Tailwind
|
|
2168
|
+
if (colorMode === 'dark') {
|
|
2169
|
+
document.documentElement.classList.add('dark');
|
|
2170
|
+
} else {
|
|
1207
2171
|
document.documentElement.classList.remove('dark');
|
|
1208
2172
|
}
|
|
1209
2173
|
} catch (e) {
|
|
@@ -1214,169 +2178,13 @@ var themeScript = `
|
|
|
1214
2178
|
function getThemeScript() {
|
|
1215
2179
|
return themeScript;
|
|
1216
2180
|
}
|
|
1217
|
-
|
|
1218
|
-
// src/icons/Icon.tsx
|
|
1219
|
-
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1220
|
-
var sizeClasses5 = {
|
|
1221
|
-
xs: "w-3 h-3",
|
|
1222
|
-
sm: "w-4 h-4",
|
|
1223
|
-
md: "w-5 h-5",
|
|
1224
|
-
lg: "w-6 h-6",
|
|
1225
|
-
xl: "w-8 h-8"
|
|
1226
|
-
};
|
|
1227
|
-
var createIcon = (displayName, path, filled = false) => {
|
|
1228
|
-
const Icon = ({ size = "md", className = "", color = "currentColor" }) => {
|
|
1229
|
-
const sizeClass = sizeClasses5[size];
|
|
1230
|
-
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1231
|
-
"svg",
|
|
1232
|
-
{
|
|
1233
|
-
className: `${sizeClass} ${className}`,
|
|
1234
|
-
fill: filled ? color : "none",
|
|
1235
|
-
viewBox: "0 0 24 24",
|
|
1236
|
-
stroke: filled ? "none" : color,
|
|
1237
|
-
"aria-hidden": "true",
|
|
1238
|
-
children: path
|
|
1239
|
-
}
|
|
1240
|
-
);
|
|
1241
|
-
};
|
|
1242
|
-
Icon.displayName = displayName;
|
|
1243
|
-
return Icon;
|
|
1244
|
-
};
|
|
1245
|
-
var HomeIcon = createIcon(
|
|
1246
|
-
"HomeIcon",
|
|
1247
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" })
|
|
1248
|
-
);
|
|
1249
|
-
var UserIcon = createIcon(
|
|
1250
|
-
"UserIcon",
|
|
1251
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" })
|
|
1252
|
-
);
|
|
1253
|
-
var SearchIcon = createIcon(
|
|
1254
|
-
"SearchIcon",
|
|
1255
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" })
|
|
1256
|
-
);
|
|
1257
|
-
var BellIcon = createIcon(
|
|
1258
|
-
"BellIcon",
|
|
1259
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" })
|
|
1260
|
-
);
|
|
1261
|
-
var SettingsIcon = createIcon(
|
|
1262
|
-
"SettingsIcon",
|
|
1263
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
|
|
1264
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" }),
|
|
1265
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
1266
|
-
] })
|
|
1267
|
-
);
|
|
1268
|
-
var MenuIcon = createIcon(
|
|
1269
|
-
"MenuIcon",
|
|
1270
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" })
|
|
1271
|
-
);
|
|
1272
|
-
var CloseIcon = createIcon(
|
|
1273
|
-
"CloseIcon",
|
|
1274
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" })
|
|
1275
|
-
);
|
|
1276
|
-
var ChevronDownIcon = createIcon(
|
|
1277
|
-
"ChevronDownIcon",
|
|
1278
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
|
|
1279
|
-
);
|
|
1280
|
-
var ChevronRightIcon = createIcon(
|
|
1281
|
-
"ChevronRightIcon",
|
|
1282
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
|
|
1283
|
-
);
|
|
1284
|
-
var CheckIcon = createIcon(
|
|
1285
|
-
"CheckIcon",
|
|
1286
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" })
|
|
1287
|
-
);
|
|
1288
|
-
var PlusIcon = createIcon(
|
|
1289
|
-
"PlusIcon",
|
|
1290
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" })
|
|
1291
|
-
);
|
|
1292
|
-
var TrashIcon = createIcon(
|
|
1293
|
-
"TrashIcon",
|
|
1294
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" })
|
|
1295
|
-
);
|
|
1296
|
-
var EditIcon = createIcon(
|
|
1297
|
-
"EditIcon",
|
|
1298
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" })
|
|
1299
|
-
);
|
|
1300
|
-
var MailIcon = createIcon(
|
|
1301
|
-
"MailIcon",
|
|
1302
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" })
|
|
1303
|
-
);
|
|
1304
|
-
var StarIcon = createIcon(
|
|
1305
|
-
"StarIcon",
|
|
1306
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z" })
|
|
1307
|
-
);
|
|
1308
|
-
var HeartIcon = createIcon(
|
|
1309
|
-
"HeartIcon",
|
|
1310
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z" })
|
|
1311
|
-
);
|
|
1312
|
-
var DownloadIcon = createIcon(
|
|
1313
|
-
"DownloadIcon",
|
|
1314
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" })
|
|
1315
|
-
);
|
|
1316
|
-
var UploadIcon = createIcon(
|
|
1317
|
-
"UploadIcon",
|
|
1318
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" })
|
|
1319
|
-
);
|
|
1320
|
-
var CameraIcon = createIcon(
|
|
1321
|
-
"CameraIcon",
|
|
1322
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
|
|
1323
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z" }),
|
|
1324
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 13a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
1325
|
-
] })
|
|
1326
|
-
);
|
|
1327
|
-
var LockIcon = createIcon(
|
|
1328
|
-
"LockIcon",
|
|
1329
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" })
|
|
1330
|
-
);
|
|
1331
|
-
var CalendarIcon = createIcon(
|
|
1332
|
-
"CalendarIcon",
|
|
1333
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.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" })
|
|
1334
|
-
);
|
|
1335
|
-
var GoogleIcon = createIcon(
|
|
1336
|
-
"GoogleIcon",
|
|
1337
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { d: "M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" }),
|
|
1338
|
-
true
|
|
1339
|
-
);
|
|
1340
|
-
var GitHubIcon = createIcon(
|
|
1341
|
-
"GitHubIcon",
|
|
1342
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { d: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" }),
|
|
1343
|
-
true
|
|
1344
|
-
);
|
|
1345
|
-
var TwitterIcon = createIcon(
|
|
1346
|
-
"TwitterIcon",
|
|
1347
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { d: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" }),
|
|
1348
|
-
true
|
|
1349
|
-
);
|
|
1350
|
-
var FacebookIcon = createIcon(
|
|
1351
|
-
"FacebookIcon",
|
|
1352
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { d: "M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z" }),
|
|
1353
|
-
true
|
|
1354
|
-
);
|
|
1355
|
-
var AppleIcon = createIcon(
|
|
1356
|
-
"AppleIcon",
|
|
1357
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { d: "M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24 0-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z" }),
|
|
1358
|
-
true
|
|
1359
|
-
);
|
|
1360
|
-
var LinkedInIcon = createIcon(
|
|
1361
|
-
"LinkedInIcon",
|
|
1362
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { d: "M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" }),
|
|
1363
|
-
true
|
|
1364
|
-
);
|
|
1365
|
-
var YouTubeIcon = createIcon(
|
|
1366
|
-
"YouTubeIcon",
|
|
1367
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { d: "M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" }),
|
|
1368
|
-
true
|
|
1369
|
-
);
|
|
1370
|
-
var SlackIcon = createIcon(
|
|
1371
|
-
"SlackIcon",
|
|
1372
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { d: "M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z" }),
|
|
1373
|
-
true
|
|
1374
|
-
);
|
|
1375
2181
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1376
2182
|
0 && (module.exports = {
|
|
1377
2183
|
ActionMenu,
|
|
1378
2184
|
Alert,
|
|
2185
|
+
AppShell,
|
|
1379
2186
|
AppleIcon,
|
|
2187
|
+
Avatar,
|
|
1380
2188
|
Badge,
|
|
1381
2189
|
BellIcon,
|
|
1382
2190
|
Button,
|
|
@@ -1390,10 +2198,12 @@ var SlackIcon = createIcon(
|
|
|
1390
2198
|
CloseIcon,
|
|
1391
2199
|
DatePicker,
|
|
1392
2200
|
DateTimePicker,
|
|
2201
|
+
Divider,
|
|
1393
2202
|
DownloadIcon,
|
|
1394
2203
|
Drawer,
|
|
1395
2204
|
EditIcon,
|
|
1396
2205
|
FacebookIcon,
|
|
2206
|
+
FileUpload,
|
|
1397
2207
|
GitHubIcon,
|
|
1398
2208
|
GoogleIcon,
|
|
1399
2209
|
HeartIcon,
|
|
@@ -1406,19 +2216,25 @@ var SlackIcon = createIcon(
|
|
|
1406
2216
|
Navbar,
|
|
1407
2217
|
Pagination,
|
|
1408
2218
|
PlusIcon,
|
|
2219
|
+
ProgressBar,
|
|
2220
|
+
Radio,
|
|
1409
2221
|
SearchIcon,
|
|
1410
2222
|
Select,
|
|
1411
2223
|
SettingsIcon,
|
|
1412
2224
|
Sidebar,
|
|
1413
2225
|
SidebarProvider,
|
|
1414
2226
|
SlackIcon,
|
|
2227
|
+
Slider,
|
|
1415
2228
|
Spinner,
|
|
1416
2229
|
StarIcon,
|
|
2230
|
+
Stepper,
|
|
1417
2231
|
Table,
|
|
1418
2232
|
Tabs,
|
|
1419
2233
|
TextInput,
|
|
2234
|
+
Textarea,
|
|
1420
2235
|
ThemeProvider,
|
|
1421
2236
|
TimePicker,
|
|
2237
|
+
ToastProvider,
|
|
1422
2238
|
Toggle,
|
|
1423
2239
|
TrashIcon,
|
|
1424
2240
|
TwitterIcon,
|
|
@@ -1428,7 +2244,9 @@ var SlackIcon = createIcon(
|
|
|
1428
2244
|
getThemeScript,
|
|
1429
2245
|
themeScript,
|
|
1430
2246
|
themes,
|
|
2247
|
+
toast,
|
|
1431
2248
|
useSidebar,
|
|
1432
|
-
useTheme
|
|
2249
|
+
useTheme,
|
|
2250
|
+
useToast
|
|
1433
2251
|
});
|
|
1434
2252
|
//# sourceMappingURL=index.js.map
|