@marcoschwartz/lite-ui 0.2.0 → 0.3.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 +99 -6
- package/dist/index.d.ts +99 -6
- package/dist/index.js +1122 -426
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1085 -426
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +4 -2
package/dist/index.mjs
CHANGED
|
@@ -608,173 +608,437 @@ var CloseIcon = createIcon(
|
|
|
608
608
|
/* @__PURE__ */ jsx15("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" })
|
|
609
609
|
);
|
|
610
610
|
|
|
611
|
-
// src/icons/
|
|
611
|
+
// src/icons/PlusIcon.tsx
|
|
612
612
|
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
613
|
+
var PlusIcon = createIcon(
|
|
614
|
+
"PlusIcon",
|
|
615
|
+
/* @__PURE__ */ jsx16("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" })
|
|
616
|
+
);
|
|
617
|
+
|
|
618
|
+
// src/icons/ArrowLeftIcon.tsx
|
|
619
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
620
|
+
var ArrowLeftIcon = createIcon(
|
|
621
|
+
"ArrowLeftIcon",
|
|
622
|
+
/* @__PURE__ */ jsx17("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 19l-7-7m0 0l7-7m-7 7h18" })
|
|
623
|
+
);
|
|
624
|
+
|
|
625
|
+
// src/icons/ArrowRightIcon.tsx
|
|
626
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
627
|
+
var ArrowRightIcon = createIcon(
|
|
628
|
+
"ArrowRightIcon",
|
|
629
|
+
/* @__PURE__ */ jsx18("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M14 5l7 7m0 0l-7 7m7-7H3" })
|
|
630
|
+
);
|
|
631
|
+
|
|
632
|
+
// src/icons/ChevronDownIcon.tsx
|
|
633
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
613
634
|
var ChevronDownIcon = createIcon(
|
|
614
635
|
"ChevronDownIcon",
|
|
615
|
-
/* @__PURE__ */
|
|
636
|
+
/* @__PURE__ */ jsx19("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
|
|
637
|
+
);
|
|
638
|
+
|
|
639
|
+
// src/icons/ChevronUpIcon.tsx
|
|
640
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
641
|
+
var ChevronUpIcon = createIcon(
|
|
642
|
+
"ChevronUpIcon",
|
|
643
|
+
/* @__PURE__ */ jsx20("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 15l7-7 7 7" })
|
|
644
|
+
);
|
|
645
|
+
|
|
646
|
+
// src/icons/ChevronLeftIcon.tsx
|
|
647
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
648
|
+
var ChevronLeftIcon = createIcon(
|
|
649
|
+
"ChevronLeftIcon",
|
|
650
|
+
/* @__PURE__ */ jsx21("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" })
|
|
616
651
|
);
|
|
617
652
|
|
|
618
653
|
// src/icons/ChevronRightIcon.tsx
|
|
619
|
-
import { jsx as
|
|
654
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
620
655
|
var ChevronRightIcon = createIcon(
|
|
621
656
|
"ChevronRightIcon",
|
|
622
|
-
/* @__PURE__ */
|
|
657
|
+
/* @__PURE__ */ jsx22("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
|
|
658
|
+
);
|
|
659
|
+
|
|
660
|
+
// src/icons/ExternalLinkIcon.tsx
|
|
661
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
662
|
+
var ExternalLinkIcon = createIcon(
|
|
663
|
+
"ExternalLinkIcon",
|
|
664
|
+
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" })
|
|
623
665
|
);
|
|
624
666
|
|
|
625
667
|
// src/icons/CheckIcon.tsx
|
|
626
|
-
import { jsx as
|
|
668
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
627
669
|
var CheckIcon = createIcon(
|
|
628
670
|
"CheckIcon",
|
|
629
|
-
/* @__PURE__ */
|
|
671
|
+
/* @__PURE__ */ jsx24("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" })
|
|
630
672
|
);
|
|
631
673
|
|
|
632
|
-
// src/icons/
|
|
633
|
-
import { jsx as
|
|
634
|
-
var
|
|
635
|
-
"
|
|
636
|
-
/* @__PURE__ */
|
|
674
|
+
// src/icons/CheckCircleIcon.tsx
|
|
675
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
676
|
+
var CheckCircleIcon = createIcon(
|
|
677
|
+
"CheckCircleIcon",
|
|
678
|
+
/* @__PURE__ */ jsx25("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" })
|
|
679
|
+
);
|
|
680
|
+
|
|
681
|
+
// src/icons/AlertCircleIcon.tsx
|
|
682
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
683
|
+
var AlertCircleIcon = createIcon(
|
|
684
|
+
"AlertCircleIcon",
|
|
685
|
+
/* @__PURE__ */ jsx26("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" })
|
|
686
|
+
);
|
|
687
|
+
|
|
688
|
+
// src/icons/InfoCircleIcon.tsx
|
|
689
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
690
|
+
var InfoCircleIcon = createIcon(
|
|
691
|
+
"InfoCircleIcon",
|
|
692
|
+
/* @__PURE__ */ jsx27("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" })
|
|
637
693
|
);
|
|
638
694
|
|
|
639
695
|
// src/icons/TrashIcon.tsx
|
|
640
|
-
import { jsx as
|
|
696
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
641
697
|
var TrashIcon = createIcon(
|
|
642
698
|
"TrashIcon",
|
|
643
|
-
/* @__PURE__ */
|
|
699
|
+
/* @__PURE__ */ jsx28("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" })
|
|
644
700
|
);
|
|
645
701
|
|
|
646
702
|
// src/icons/EditIcon.tsx
|
|
647
|
-
import { jsx as
|
|
703
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
648
704
|
var EditIcon = createIcon(
|
|
649
705
|
"EditIcon",
|
|
650
|
-
/* @__PURE__ */
|
|
706
|
+
/* @__PURE__ */ jsx29("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" })
|
|
707
|
+
);
|
|
708
|
+
|
|
709
|
+
// src/icons/CopyIcon.tsx
|
|
710
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
711
|
+
var CopyIcon = createIcon(
|
|
712
|
+
"CopyIcon",
|
|
713
|
+
/* @__PURE__ */ jsx30("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" })
|
|
714
|
+
);
|
|
715
|
+
|
|
716
|
+
// src/icons/SaveIcon.tsx
|
|
717
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
718
|
+
var SaveIcon = createIcon(
|
|
719
|
+
"SaveIcon",
|
|
720
|
+
/* @__PURE__ */ jsx31("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7H5a2 2 0 00-2 2v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-3m-1 4l-3 3m0 0l-3-3m3 3V4" })
|
|
721
|
+
);
|
|
722
|
+
|
|
723
|
+
// src/icons/DownloadIcon.tsx
|
|
724
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
725
|
+
var DownloadIcon = createIcon(
|
|
726
|
+
"DownloadIcon",
|
|
727
|
+
/* @__PURE__ */ jsx32("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" })
|
|
728
|
+
);
|
|
729
|
+
|
|
730
|
+
// src/icons/UploadIcon.tsx
|
|
731
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
732
|
+
var UploadIcon = createIcon(
|
|
733
|
+
"UploadIcon",
|
|
734
|
+
/* @__PURE__ */ jsx33("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" })
|
|
735
|
+
);
|
|
736
|
+
|
|
737
|
+
// src/icons/RefreshIcon.tsx
|
|
738
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
739
|
+
var RefreshIcon = createIcon(
|
|
740
|
+
"RefreshIcon",
|
|
741
|
+
/* @__PURE__ */ jsx34("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" })
|
|
742
|
+
);
|
|
743
|
+
|
|
744
|
+
// src/icons/EyeIcon.tsx
|
|
745
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
746
|
+
var EyeIcon = createIcon(
|
|
747
|
+
"EyeIcon",
|
|
748
|
+
/* @__PURE__ */ jsx35("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" })
|
|
749
|
+
);
|
|
750
|
+
|
|
751
|
+
// src/icons/EyeOffIcon.tsx
|
|
752
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
753
|
+
var EyeOffIcon = createIcon(
|
|
754
|
+
"EyeOffIcon",
|
|
755
|
+
/* @__PURE__ */ jsx36("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21" })
|
|
756
|
+
);
|
|
757
|
+
|
|
758
|
+
// src/icons/PlayIcon.tsx
|
|
759
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
760
|
+
var PlayIcon = createIcon(
|
|
761
|
+
"PlayIcon",
|
|
762
|
+
/* @__PURE__ */ jsx37("path", { d: "M8 5v14l11-7z" }),
|
|
763
|
+
true
|
|
764
|
+
);
|
|
765
|
+
|
|
766
|
+
// src/icons/PauseIcon.tsx
|
|
767
|
+
import { Fragment as Fragment3, jsx as jsx38, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
768
|
+
var PauseIcon = createIcon(
|
|
769
|
+
"PauseIcon",
|
|
770
|
+
/* @__PURE__ */ jsxs6(Fragment3, { children: [
|
|
771
|
+
/* @__PURE__ */ jsx38("rect", { x: "6", y: "4", width: "4", height: "16", rx: "1" }),
|
|
772
|
+
/* @__PURE__ */ jsx38("rect", { x: "14", y: "4", width: "4", height: "16", rx: "1" })
|
|
773
|
+
] }),
|
|
774
|
+
true
|
|
775
|
+
);
|
|
776
|
+
|
|
777
|
+
// src/icons/StopIcon.tsx
|
|
778
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
779
|
+
var StopIcon = createIcon(
|
|
780
|
+
"StopIcon",
|
|
781
|
+
/* @__PURE__ */ jsx39("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 12a9 9 0 11-18 0 9 9 0 0118 0z" })
|
|
782
|
+
);
|
|
783
|
+
|
|
784
|
+
// src/icons/SkipBackIcon.tsx
|
|
785
|
+
import { Fragment as Fragment4, jsx as jsx40 } from "react/jsx-runtime";
|
|
786
|
+
var SkipBackIcon = createIcon(
|
|
787
|
+
"SkipBackIcon",
|
|
788
|
+
/* @__PURE__ */ jsx40(Fragment4, { children: /* @__PURE__ */ jsx40("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12.066 11.2a1 1 0 000 1.6l5.334 4A1 1 0 0019 16V8a1 1 0 00-1.6-.8l-5.333 4zM4.066 11.2a1 1 0 000 1.6l5.334 4A1 1 0 0011 16V8a1 1 0 00-1.6-.8l-5.334 4z" }) }),
|
|
789
|
+
false
|
|
790
|
+
);
|
|
791
|
+
|
|
792
|
+
// src/icons/SkipForwardIcon.tsx
|
|
793
|
+
import { Fragment as Fragment5, jsx as jsx41 } from "react/jsx-runtime";
|
|
794
|
+
var SkipForwardIcon = createIcon(
|
|
795
|
+
"SkipForwardIcon",
|
|
796
|
+
/* @__PURE__ */ jsx41(Fragment5, { children: /* @__PURE__ */ jsx41("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11.933 12.8a1 1 0 000-1.6L6.6 7.2A1 1 0 005 8v8a1 1 0 001.6.8l5.333-4zM19.933 12.8a1 1 0 000-1.6l-5.333-4A1 1 0 0013 8v8a1 1 0 001.6.8l5.333-4z" }) }),
|
|
797
|
+
false
|
|
798
|
+
);
|
|
799
|
+
|
|
800
|
+
// src/icons/VolumeUpIcon.tsx
|
|
801
|
+
import { Fragment as Fragment6, jsx as jsx42 } from "react/jsx-runtime";
|
|
802
|
+
var VolumeUpIcon = createIcon(
|
|
803
|
+
"VolumeUpIcon",
|
|
804
|
+
/* @__PURE__ */ jsx42(Fragment6, { children: /* @__PURE__ */ jsx42("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15.536 8.464a5 5 0 010 7.072m2.828-9.9a9 9 0 010 12.728M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z" }) }),
|
|
805
|
+
false
|
|
806
|
+
);
|
|
807
|
+
|
|
808
|
+
// src/icons/VolumeOffIcon.tsx
|
|
809
|
+
import { Fragment as Fragment7, jsx as jsx43, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
810
|
+
var VolumeOffIcon = createIcon(
|
|
811
|
+
"VolumeOffIcon",
|
|
812
|
+
/* @__PURE__ */ jsxs7(Fragment7, { children: [
|
|
813
|
+
/* @__PURE__ */ jsx43("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z", clipRule: "evenodd" }),
|
|
814
|
+
/* @__PURE__ */ jsx43("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2" })
|
|
815
|
+
] }),
|
|
816
|
+
false
|
|
651
817
|
);
|
|
652
818
|
|
|
653
819
|
// src/icons/MailIcon.tsx
|
|
654
|
-
import { jsx as
|
|
820
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
655
821
|
var MailIcon = createIcon(
|
|
656
822
|
"MailIcon",
|
|
657
|
-
/* @__PURE__ */
|
|
823
|
+
/* @__PURE__ */ jsx44("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" })
|
|
824
|
+
);
|
|
825
|
+
|
|
826
|
+
// src/icons/ChatIcon.tsx
|
|
827
|
+
import { jsx as jsx45 } from "react/jsx-runtime";
|
|
828
|
+
var ChatIcon = createIcon(
|
|
829
|
+
"ChatIcon",
|
|
830
|
+
/* @__PURE__ */ jsx45("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z" })
|
|
658
831
|
);
|
|
659
832
|
|
|
660
833
|
// src/icons/StarIcon.tsx
|
|
661
|
-
import { jsx as
|
|
834
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
662
835
|
var StarIcon = createIcon(
|
|
663
836
|
"StarIcon",
|
|
664
|
-
/* @__PURE__ */
|
|
837
|
+
/* @__PURE__ */ jsx46("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" })
|
|
665
838
|
);
|
|
666
839
|
|
|
667
840
|
// src/icons/HeartIcon.tsx
|
|
668
|
-
import { jsx as
|
|
841
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
669
842
|
var HeartIcon = createIcon(
|
|
670
843
|
"HeartIcon",
|
|
671
|
-
/* @__PURE__ */
|
|
672
|
-
);
|
|
673
|
-
|
|
674
|
-
// src/icons/DownloadIcon.tsx
|
|
675
|
-
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
676
|
-
var DownloadIcon = createIcon(
|
|
677
|
-
"DownloadIcon",
|
|
678
|
-
/* @__PURE__ */ jsx25("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" })
|
|
679
|
-
);
|
|
680
|
-
|
|
681
|
-
// src/icons/UploadIcon.tsx
|
|
682
|
-
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
683
|
-
var UploadIcon = createIcon(
|
|
684
|
-
"UploadIcon",
|
|
685
|
-
/* @__PURE__ */ jsx26("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" })
|
|
844
|
+
/* @__PURE__ */ jsx47("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" })
|
|
686
845
|
);
|
|
687
846
|
|
|
688
847
|
// src/icons/CameraIcon.tsx
|
|
689
|
-
import { Fragment as
|
|
848
|
+
import { Fragment as Fragment8, jsx as jsx48, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
690
849
|
var CameraIcon = createIcon(
|
|
691
850
|
"CameraIcon",
|
|
692
|
-
/* @__PURE__ */
|
|
693
|
-
/* @__PURE__ */
|
|
694
|
-
/* @__PURE__ */
|
|
851
|
+
/* @__PURE__ */ jsxs8(Fragment8, { children: [
|
|
852
|
+
/* @__PURE__ */ jsx48("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" }),
|
|
853
|
+
/* @__PURE__ */ jsx48("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 13a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
695
854
|
] })
|
|
696
855
|
);
|
|
697
856
|
|
|
857
|
+
// src/icons/CalendarIcon.tsx
|
|
858
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
859
|
+
var CalendarIcon = createIcon(
|
|
860
|
+
"CalendarIcon",
|
|
861
|
+
/* @__PURE__ */ jsx49("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" })
|
|
862
|
+
);
|
|
863
|
+
|
|
864
|
+
// src/icons/BookIcon.tsx
|
|
865
|
+
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
866
|
+
var BookIcon = createIcon(
|
|
867
|
+
"BookIcon",
|
|
868
|
+
/* @__PURE__ */ jsx50("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" })
|
|
869
|
+
);
|
|
870
|
+
|
|
871
|
+
// src/icons/FileIcon.tsx
|
|
872
|
+
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
873
|
+
var FileIcon = createIcon(
|
|
874
|
+
"FileIcon",
|
|
875
|
+
/* @__PURE__ */ jsx51("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z" })
|
|
876
|
+
);
|
|
877
|
+
|
|
878
|
+
// src/icons/FolderIcon.tsx
|
|
879
|
+
import { jsx as jsx52 } from "react/jsx-runtime";
|
|
880
|
+
var FolderIcon = createIcon(
|
|
881
|
+
"FolderIcon",
|
|
882
|
+
/* @__PURE__ */ jsx52("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z" })
|
|
883
|
+
);
|
|
884
|
+
|
|
885
|
+
// src/icons/ImageIcon.tsx
|
|
886
|
+
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
887
|
+
var ImageIcon = createIcon(
|
|
888
|
+
"ImageIcon",
|
|
889
|
+
/* @__PURE__ */ jsx53("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" })
|
|
890
|
+
);
|
|
891
|
+
|
|
892
|
+
// src/icons/CodeIcon.tsx
|
|
893
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
894
|
+
var CodeIcon = createIcon(
|
|
895
|
+
"CodeIcon",
|
|
896
|
+
/* @__PURE__ */ jsx54("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" })
|
|
897
|
+
);
|
|
898
|
+
|
|
899
|
+
// src/icons/TerminalIcon.tsx
|
|
900
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
901
|
+
var TerminalIcon = createIcon(
|
|
902
|
+
"TerminalIcon",
|
|
903
|
+
/* @__PURE__ */ jsx55("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })
|
|
904
|
+
);
|
|
905
|
+
|
|
906
|
+
// src/icons/DatabaseIcon.tsx
|
|
907
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
908
|
+
var DatabaseIcon = createIcon(
|
|
909
|
+
"DatabaseIcon",
|
|
910
|
+
/* @__PURE__ */ jsx56("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4" })
|
|
911
|
+
);
|
|
912
|
+
|
|
913
|
+
// src/icons/CloudIcon.tsx
|
|
914
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
915
|
+
var CloudIcon = createIcon(
|
|
916
|
+
"CloudIcon",
|
|
917
|
+
/* @__PURE__ */ jsx57("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 15a4 4 0 004 4h9a5 5 0 10-.1-9.999 5.002 5.002 0 10-9.78 2.096A4.001 4.001 0 003 15z" })
|
|
918
|
+
);
|
|
919
|
+
|
|
920
|
+
// src/icons/PlugIcon.tsx
|
|
921
|
+
import { jsx as jsx58 } from "react/jsx-runtime";
|
|
922
|
+
var PlugIcon = createIcon(
|
|
923
|
+
"PlugIcon",
|
|
924
|
+
/* @__PURE__ */ jsx58("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 10V3L4 14h7v7l9-11h-7z" })
|
|
925
|
+
);
|
|
926
|
+
|
|
927
|
+
// src/icons/KeyIcon.tsx
|
|
928
|
+
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
929
|
+
var KeyIcon = createIcon(
|
|
930
|
+
"KeyIcon",
|
|
931
|
+
/* @__PURE__ */ jsx59("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z" })
|
|
932
|
+
);
|
|
933
|
+
|
|
698
934
|
// src/icons/LockIcon.tsx
|
|
699
|
-
import { jsx as
|
|
935
|
+
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
700
936
|
var LockIcon = createIcon(
|
|
701
937
|
"LockIcon",
|
|
702
|
-
/* @__PURE__ */
|
|
938
|
+
/* @__PURE__ */ jsx60("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" })
|
|
703
939
|
);
|
|
704
940
|
|
|
705
|
-
// src/icons/
|
|
706
|
-
import { jsx as
|
|
707
|
-
var
|
|
708
|
-
"
|
|
709
|
-
/* @__PURE__ */
|
|
941
|
+
// src/icons/ShieldIcon.tsx
|
|
942
|
+
import { jsx as jsx61 } from "react/jsx-runtime";
|
|
943
|
+
var ShieldIcon = createIcon(
|
|
944
|
+
"ShieldIcon",
|
|
945
|
+
/* @__PURE__ */ jsx61("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" })
|
|
946
|
+
);
|
|
947
|
+
|
|
948
|
+
// src/icons/SparklesIcon.tsx
|
|
949
|
+
import { jsx as jsx62 } from "react/jsx-runtime";
|
|
950
|
+
var SparklesIcon = createIcon(
|
|
951
|
+
"SparklesIcon",
|
|
952
|
+
/* @__PURE__ */ jsx62("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 3v4M3 5h4M6 17v4m-2-2h4m5-16l2.286 6.857L21 12l-5.714 2.143L13 21l-2.286-6.857L5 12l5.714-2.143L13 3z" })
|
|
953
|
+
);
|
|
954
|
+
|
|
955
|
+
// src/icons/BrainIcon.tsx
|
|
956
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
957
|
+
var BrainIcon = createIcon(
|
|
958
|
+
"BrainIcon",
|
|
959
|
+
/* @__PURE__ */ jsx63("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z" })
|
|
960
|
+
);
|
|
961
|
+
|
|
962
|
+
// src/icons/GlobeIcon.tsx
|
|
963
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
964
|
+
var GlobeIcon = createIcon(
|
|
965
|
+
"GlobeIcon",
|
|
966
|
+
/* @__PURE__ */ jsx64("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z" })
|
|
967
|
+
);
|
|
968
|
+
|
|
969
|
+
// src/icons/BeakerIcon.tsx
|
|
970
|
+
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
971
|
+
var BeakerIcon = createIcon(
|
|
972
|
+
"BeakerIcon",
|
|
973
|
+
/* @__PURE__ */ jsx65("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z" })
|
|
710
974
|
);
|
|
711
975
|
|
|
712
976
|
// src/icons/GoogleIcon.tsx
|
|
713
|
-
import { jsx as
|
|
977
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
714
978
|
var GoogleIcon = createIcon(
|
|
715
979
|
"GoogleIcon",
|
|
716
|
-
/* @__PURE__ */
|
|
980
|
+
/* @__PURE__ */ jsx66("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" }),
|
|
717
981
|
true
|
|
718
982
|
);
|
|
719
983
|
|
|
720
984
|
// src/icons/GitHubIcon.tsx
|
|
721
|
-
import { jsx as
|
|
985
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
722
986
|
var GitHubIcon = createIcon(
|
|
723
987
|
"GitHubIcon",
|
|
724
|
-
/* @__PURE__ */
|
|
988
|
+
/* @__PURE__ */ jsx67("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" }),
|
|
725
989
|
true
|
|
726
990
|
);
|
|
727
991
|
|
|
728
992
|
// src/icons/TwitterIcon.tsx
|
|
729
|
-
import { jsx as
|
|
993
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
730
994
|
var TwitterIcon = createIcon(
|
|
731
995
|
"TwitterIcon",
|
|
732
|
-
/* @__PURE__ */
|
|
996
|
+
/* @__PURE__ */ jsx68("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" }),
|
|
733
997
|
true
|
|
734
998
|
);
|
|
735
999
|
|
|
736
1000
|
// src/icons/FacebookIcon.tsx
|
|
737
|
-
import { jsx as
|
|
1001
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
738
1002
|
var FacebookIcon = createIcon(
|
|
739
1003
|
"FacebookIcon",
|
|
740
|
-
/* @__PURE__ */
|
|
1004
|
+
/* @__PURE__ */ jsx69("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" }),
|
|
741
1005
|
true
|
|
742
1006
|
);
|
|
743
1007
|
|
|
744
1008
|
// src/icons/AppleIcon.tsx
|
|
745
|
-
import { jsx as
|
|
1009
|
+
import { jsx as jsx70 } from "react/jsx-runtime";
|
|
746
1010
|
var AppleIcon = createIcon(
|
|
747
1011
|
"AppleIcon",
|
|
748
|
-
/* @__PURE__ */
|
|
1012
|
+
/* @__PURE__ */ jsx70("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" }),
|
|
749
1013
|
true
|
|
750
1014
|
);
|
|
751
1015
|
|
|
752
1016
|
// src/icons/LinkedInIcon.tsx
|
|
753
|
-
import { jsx as
|
|
1017
|
+
import { jsx as jsx71 } from "react/jsx-runtime";
|
|
754
1018
|
var LinkedInIcon = createIcon(
|
|
755
1019
|
"LinkedInIcon",
|
|
756
|
-
/* @__PURE__ */
|
|
1020
|
+
/* @__PURE__ */ jsx71("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" }),
|
|
757
1021
|
true
|
|
758
1022
|
);
|
|
759
1023
|
|
|
760
1024
|
// src/icons/YouTubeIcon.tsx
|
|
761
|
-
import { jsx as
|
|
1025
|
+
import { jsx as jsx72 } from "react/jsx-runtime";
|
|
762
1026
|
var YouTubeIcon = createIcon(
|
|
763
1027
|
"YouTubeIcon",
|
|
764
|
-
/* @__PURE__ */
|
|
1028
|
+
/* @__PURE__ */ jsx72("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" }),
|
|
765
1029
|
true
|
|
766
1030
|
);
|
|
767
1031
|
|
|
768
1032
|
// src/icons/SlackIcon.tsx
|
|
769
|
-
import { jsx as
|
|
1033
|
+
import { jsx as jsx73 } from "react/jsx-runtime";
|
|
770
1034
|
var SlackIcon = createIcon(
|
|
771
1035
|
"SlackIcon",
|
|
772
|
-
/* @__PURE__ */
|
|
1036
|
+
/* @__PURE__ */ jsx73("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" }),
|
|
773
1037
|
true
|
|
774
1038
|
);
|
|
775
1039
|
|
|
776
1040
|
// src/components/AppShell.tsx
|
|
777
|
-
import { Fragment as
|
|
1041
|
+
import { Fragment as Fragment9, jsx as jsx74, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
778
1042
|
var widthClasses2 = {
|
|
779
1043
|
sm: "w-48",
|
|
780
1044
|
md: "w-64",
|
|
@@ -804,60 +1068,60 @@ var AppShell = ({
|
|
|
804
1068
|
const widthClass = widthClasses2[navbarWidth];
|
|
805
1069
|
const breakpoint = breakpointClasses[navbarBreakpoint];
|
|
806
1070
|
if (!responsive && navbar) {
|
|
807
|
-
return /* @__PURE__ */
|
|
808
|
-
header && /* @__PURE__ */
|
|
809
|
-
/* @__PURE__ */
|
|
810
|
-
/* @__PURE__ */
|
|
811
|
-
/* @__PURE__ */
|
|
1071
|
+
return /* @__PURE__ */ jsxs9("div", { className: `min-h-screen flex flex-col ${className}`, children: [
|
|
1072
|
+
header && /* @__PURE__ */ jsx74("div", { className: "w-full", children: header }),
|
|
1073
|
+
/* @__PURE__ */ jsxs9("div", { className: "flex flex-1", children: [
|
|
1074
|
+
/* @__PURE__ */ jsx74("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 }),
|
|
1075
|
+
/* @__PURE__ */ jsx74("main", { className: "flex-1 overflow-y-auto", children })
|
|
812
1076
|
] })
|
|
813
1077
|
] });
|
|
814
1078
|
}
|
|
815
1079
|
if (!responsive) {
|
|
816
|
-
return /* @__PURE__ */
|
|
817
|
-
header && /* @__PURE__ */
|
|
818
|
-
/* @__PURE__ */
|
|
1080
|
+
return /* @__PURE__ */ jsxs9("div", { className: `min-h-screen flex flex-col ${className}`, children: [
|
|
1081
|
+
header && /* @__PURE__ */ jsx74("div", { className: "w-full", children: header }),
|
|
1082
|
+
/* @__PURE__ */ jsx74("main", { className: "flex-1 overflow-y-auto", children })
|
|
819
1083
|
] });
|
|
820
1084
|
}
|
|
821
1085
|
if (navbar && navbarPosition === "top") {
|
|
822
1086
|
const mobileMenuClass = navbarBreakpoint === "sm" ? "sm:hidden" : navbarBreakpoint === "md" ? "md:hidden" : navbarBreakpoint === "lg" ? "lg:hidden" : "xl:hidden";
|
|
823
1087
|
const desktopNavClass = navbarBreakpoint === "sm" ? "sm:flex" : navbarBreakpoint === "md" ? "md:flex" : navbarBreakpoint === "lg" ? "lg:flex" : "xl:flex";
|
|
824
|
-
return /* @__PURE__ */
|
|
825
|
-
/* @__PURE__ */
|
|
826
|
-
/* @__PURE__ */
|
|
827
|
-
/* @__PURE__ */
|
|
828
|
-
/* @__PURE__ */
|
|
1088
|
+
return /* @__PURE__ */ jsxs9("div", { className: `min-h-screen flex flex-col bg-gray-50 dark:bg-gray-900 ${className}`, children: [
|
|
1089
|
+
/* @__PURE__ */ jsx74("nav", { className: "sticky top-0 z-30 bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700", children: /* @__PURE__ */ jsx74("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxs9("div", { className: "flex justify-between items-center h-16", children: [
|
|
1090
|
+
/* @__PURE__ */ jsx74("div", { className: "flex items-center", children: navbarLogo ? /* @__PURE__ */ jsx74("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ jsx74("span", { className: "text-xl font-bold text-gray-900 dark:text-gray-100", children: navbarTitle }) : null }),
|
|
1091
|
+
/* @__PURE__ */ jsx74("div", { className: `hidden ${desktopNavClass} items-center gap-6`, children: navbar.content }),
|
|
1092
|
+
/* @__PURE__ */ jsx74(
|
|
829
1093
|
"button",
|
|
830
1094
|
{
|
|
831
1095
|
className: `${mobileMenuClass} p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors`,
|
|
832
1096
|
onClick: () => setIsMobileNavbarOpen(!isMobileNavbarOpen),
|
|
833
1097
|
"aria-label": "Toggle menu",
|
|
834
|
-
children: /* @__PURE__ */
|
|
1098
|
+
children: /* @__PURE__ */ jsx74(MenuIcon, { size: "md" })
|
|
835
1099
|
}
|
|
836
1100
|
)
|
|
837
1101
|
] }) }) }),
|
|
838
|
-
header && /* @__PURE__ */
|
|
839
|
-
isMobileNavbarOpen && /* @__PURE__ */
|
|
840
|
-
/* @__PURE__ */
|
|
1102
|
+
header && /* @__PURE__ */ jsx74("div", { className: "w-full", children: header }),
|
|
1103
|
+
isMobileNavbarOpen && /* @__PURE__ */ jsxs9(Fragment9, { children: [
|
|
1104
|
+
/* @__PURE__ */ jsx74(
|
|
841
1105
|
"div",
|
|
842
1106
|
{
|
|
843
1107
|
className: `${mobileMenuClass} fixed inset-0 z-40 bg-black/60 backdrop-blur-sm animate-in fade-in duration-200`,
|
|
844
1108
|
onClick: () => setIsMobileNavbarOpen(false)
|
|
845
1109
|
}
|
|
846
1110
|
),
|
|
847
|
-
/* @__PURE__ */
|
|
848
|
-
/* @__PURE__ */
|
|
849
|
-
navbarLogo ? /* @__PURE__ */
|
|
850
|
-
/* @__PURE__ */
|
|
1111
|
+
/* @__PURE__ */ jsxs9("div", { className: `${mobileMenuClass} 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: [
|
|
1112
|
+
/* @__PURE__ */ jsxs9("div", { className: "p-4 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between", children: [
|
|
1113
|
+
navbarLogo ? /* @__PURE__ */ jsx74("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ jsx74("span", { className: "text-xl font-bold text-gray-900 dark:text-gray-100", children: navbarTitle }) : null,
|
|
1114
|
+
/* @__PURE__ */ jsx74(
|
|
851
1115
|
"button",
|
|
852
1116
|
{
|
|
853
1117
|
className: "p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
854
1118
|
onClick: () => setIsMobileNavbarOpen(false),
|
|
855
1119
|
"aria-label": "Close menu",
|
|
856
|
-
children: /* @__PURE__ */
|
|
1120
|
+
children: /* @__PURE__ */ jsx74("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx74("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
857
1121
|
}
|
|
858
1122
|
)
|
|
859
1123
|
] }),
|
|
860
|
-
/* @__PURE__ */
|
|
1124
|
+
/* @__PURE__ */ jsx74(
|
|
861
1125
|
"div",
|
|
862
1126
|
{
|
|
863
1127
|
className: "p-4 flex flex-col gap-4",
|
|
@@ -867,7 +1131,7 @@ var AppShell = ({
|
|
|
867
1131
|
)
|
|
868
1132
|
] })
|
|
869
1133
|
] }),
|
|
870
|
-
/* @__PURE__ */
|
|
1134
|
+
/* @__PURE__ */ jsx74("main", { className: "flex-1 overflow-y-auto", children })
|
|
871
1135
|
] });
|
|
872
1136
|
}
|
|
873
1137
|
if (navbar) {
|
|
@@ -875,44 +1139,44 @@ var AppShell = ({
|
|
|
875
1139
|
const desktopNavbarClass = navbarBreakpoint === "sm" ? "sm:block" : navbarBreakpoint === "md" ? "md:block" : navbarBreakpoint === "lg" ? "lg:block" : "xl:block";
|
|
876
1140
|
const mobileDrawerClass = navbarBreakpoint === "sm" ? "sm:hidden" : navbarBreakpoint === "md" ? "md:hidden" : navbarBreakpoint === "lg" ? "lg:hidden" : "xl:hidden";
|
|
877
1141
|
const sidebarWidthClass = navbarWidth === "sm" ? "w-48" : navbarWidth === "lg" ? "w-80" : "w-64";
|
|
878
|
-
return /* @__PURE__ */
|
|
879
|
-
/* @__PURE__ */
|
|
880
|
-
navbarLogo ? /* @__PURE__ */
|
|
881
|
-
/* @__PURE__ */
|
|
1142
|
+
return /* @__PURE__ */ jsxs9("div", { className: `min-h-screen flex flex-col bg-gray-50 dark:bg-gray-900 ${className}`, children: [
|
|
1143
|
+
/* @__PURE__ */ jsxs9("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: [
|
|
1144
|
+
navbarLogo ? /* @__PURE__ */ jsx74("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ jsx74("span", { className: "text-xl font-bold text-gray-900 dark:text-gray-100", children: navbarTitle }) : null,
|
|
1145
|
+
/* @__PURE__ */ jsx74(
|
|
882
1146
|
"button",
|
|
883
1147
|
{
|
|
884
1148
|
className: "p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
885
1149
|
onClick: () => setIsMobileNavbarOpen(!isMobileNavbarOpen),
|
|
886
1150
|
"aria-label": "Toggle menu",
|
|
887
|
-
children: /* @__PURE__ */
|
|
1151
|
+
children: /* @__PURE__ */ jsx74(MenuIcon, { size: "md" })
|
|
888
1152
|
}
|
|
889
1153
|
)
|
|
890
1154
|
] }),
|
|
891
|
-
header && /* @__PURE__ */
|
|
892
|
-
/* @__PURE__ */
|
|
893
|
-
/* @__PURE__ */
|
|
894
|
-
isMobileNavbarOpen && /* @__PURE__ */
|
|
895
|
-
/* @__PURE__ */
|
|
1155
|
+
header && /* @__PURE__ */ jsx74("div", { className: "w-full", children: header }),
|
|
1156
|
+
/* @__PURE__ */ jsxs9("div", { className: "flex flex-1 min-h-0", children: [
|
|
1157
|
+
/* @__PURE__ */ jsx74("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 }),
|
|
1158
|
+
isMobileNavbarOpen && /* @__PURE__ */ jsxs9(Fragment9, { children: [
|
|
1159
|
+
/* @__PURE__ */ jsx74(
|
|
896
1160
|
"div",
|
|
897
1161
|
{
|
|
898
1162
|
className: `${mobileDrawerClass} fixed inset-0 z-40 bg-black/60 backdrop-blur-sm animate-in fade-in duration-200`,
|
|
899
1163
|
onClick: () => setIsMobileNavbarOpen(false)
|
|
900
1164
|
}
|
|
901
1165
|
),
|
|
902
|
-
/* @__PURE__ */
|
|
903
|
-
/* @__PURE__ */
|
|
904
|
-
navbarLogo ? /* @__PURE__ */
|
|
905
|
-
/* @__PURE__ */
|
|
1166
|
+
/* @__PURE__ */ jsxs9("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: [
|
|
1167
|
+
/* @__PURE__ */ jsxs9("div", { className: "p-4 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between", children: [
|
|
1168
|
+
navbarLogo ? /* @__PURE__ */ jsx74("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ jsx74("span", { className: "text-xl font-bold text-gray-900 dark:text-gray-100", children: navbarTitle }) : null,
|
|
1169
|
+
/* @__PURE__ */ jsx74(
|
|
906
1170
|
"button",
|
|
907
1171
|
{
|
|
908
1172
|
className: "p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
909
1173
|
onClick: () => setIsMobileNavbarOpen(false),
|
|
910
1174
|
"aria-label": "Close menu",
|
|
911
|
-
children: /* @__PURE__ */
|
|
1175
|
+
children: /* @__PURE__ */ jsx74("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx74("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
912
1176
|
}
|
|
913
1177
|
)
|
|
914
1178
|
] }),
|
|
915
|
-
/* @__PURE__ */
|
|
1179
|
+
/* @__PURE__ */ jsx74(
|
|
916
1180
|
"div",
|
|
917
1181
|
{
|
|
918
1182
|
className: "overflow-y-auto h-[calc(100vh-73px)]",
|
|
@@ -922,19 +1186,19 @@ var AppShell = ({
|
|
|
922
1186
|
)
|
|
923
1187
|
] })
|
|
924
1188
|
] }),
|
|
925
|
-
/* @__PURE__ */
|
|
1189
|
+
/* @__PURE__ */ jsx74("main", { className: "flex-1 overflow-y-auto min-h-screen", children })
|
|
926
1190
|
] })
|
|
927
1191
|
] });
|
|
928
1192
|
}
|
|
929
|
-
return /* @__PURE__ */
|
|
930
|
-
header && /* @__PURE__ */
|
|
931
|
-
/* @__PURE__ */
|
|
1193
|
+
return /* @__PURE__ */ jsxs9("div", { className: `min-h-screen flex flex-col ${className}`, children: [
|
|
1194
|
+
header && /* @__PURE__ */ jsx74("div", { className: "w-full", children: header }),
|
|
1195
|
+
/* @__PURE__ */ jsx74("main", { className: "flex-1 overflow-y-auto", children })
|
|
932
1196
|
] });
|
|
933
1197
|
};
|
|
934
1198
|
|
|
935
1199
|
// src/components/Drawer.tsx
|
|
936
1200
|
import { useEffect as useEffect4 } from "react";
|
|
937
|
-
import { Fragment as
|
|
1201
|
+
import { Fragment as Fragment10, jsx as jsx75, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
938
1202
|
var sizeClasses3 = {
|
|
939
1203
|
left: {
|
|
940
1204
|
sm: "w-64",
|
|
@@ -997,32 +1261,32 @@ var Drawer = ({
|
|
|
997
1261
|
if (!isOpen) return null;
|
|
998
1262
|
const sizeClass = sizeClasses3[position][size];
|
|
999
1263
|
const positionClass = positionClasses[position];
|
|
1000
|
-
return /* @__PURE__ */
|
|
1001
|
-
/* @__PURE__ */
|
|
1264
|
+
return /* @__PURE__ */ jsxs10(Fragment10, { children: [
|
|
1265
|
+
/* @__PURE__ */ jsx75(
|
|
1002
1266
|
"div",
|
|
1003
1267
|
{
|
|
1004
1268
|
className: "fixed inset-0 z-40 bg-black/60 backdrop-blur-sm transition-all duration-200",
|
|
1005
1269
|
onClick: onClose
|
|
1006
1270
|
}
|
|
1007
1271
|
),
|
|
1008
|
-
/* @__PURE__ */
|
|
1272
|
+
/* @__PURE__ */ jsxs10(
|
|
1009
1273
|
"div",
|
|
1010
1274
|
{
|
|
1011
1275
|
className: `fixed z-50 ${positionClass} ${sizeClass} bg-white dark:bg-gray-800 shadow-2xl overflow-hidden flex flex-col ${slideClasses[position]}`,
|
|
1012
1276
|
children: [
|
|
1013
|
-
(title || showCloseButton) && /* @__PURE__ */
|
|
1014
|
-
title && /* @__PURE__ */
|
|
1015
|
-
showCloseButton && /* @__PURE__ */
|
|
1277
|
+
(title || showCloseButton) && /* @__PURE__ */ jsxs10("div", { className: "flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700", children: [
|
|
1278
|
+
title && /* @__PURE__ */ jsx75("h3", { className: "text-xl font-semibold text-gray-900 dark:text-gray-100", children: title }),
|
|
1279
|
+
showCloseButton && /* @__PURE__ */ jsx75(
|
|
1016
1280
|
"button",
|
|
1017
1281
|
{
|
|
1018
1282
|
onClick: onClose,
|
|
1019
1283
|
className: "ml-auto text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors",
|
|
1020
1284
|
"aria-label": "Close drawer",
|
|
1021
|
-
children: /* @__PURE__ */
|
|
1285
|
+
children: /* @__PURE__ */ jsx75("svg", { className: "w-6 h-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx75("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
1022
1286
|
}
|
|
1023
1287
|
)
|
|
1024
1288
|
] }),
|
|
1025
|
-
/* @__PURE__ */
|
|
1289
|
+
/* @__PURE__ */ jsx75("div", { className: "flex-1 p-6 overflow-y-auto", children })
|
|
1026
1290
|
]
|
|
1027
1291
|
}
|
|
1028
1292
|
)
|
|
@@ -1031,7 +1295,7 @@ var Drawer = ({
|
|
|
1031
1295
|
|
|
1032
1296
|
// src/components/TextInput.tsx
|
|
1033
1297
|
import { forwardRef } from "react";
|
|
1034
|
-
import { jsx as
|
|
1298
|
+
import { jsx as jsx76, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1035
1299
|
var sizeClasses4 = {
|
|
1036
1300
|
sm: "px-3 py-1.5 text-sm",
|
|
1037
1301
|
md: "px-4 py-2.5 text-base",
|
|
@@ -1057,11 +1321,11 @@ var TextInput = forwardRef(
|
|
|
1057
1321
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1058
1322
|
const widthStyle = fullWidth ? "w-full" : "";
|
|
1059
1323
|
const paddingWithIcon = leftIcon ? "pl-10" : rightIcon ? "pr-10" : "";
|
|
1060
|
-
return /* @__PURE__ */
|
|
1061
|
-
label && /* @__PURE__ */
|
|
1062
|
-
/* @__PURE__ */
|
|
1063
|
-
leftIcon && /* @__PURE__ */
|
|
1064
|
-
/* @__PURE__ */
|
|
1324
|
+
return /* @__PURE__ */ jsxs11("div", { className: `${widthStyle} ${className}`, children: [
|
|
1325
|
+
label && /* @__PURE__ */ jsx76("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1326
|
+
/* @__PURE__ */ jsxs11("div", { className: "relative", children: [
|
|
1327
|
+
leftIcon && /* @__PURE__ */ jsx76("div", { className: "absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 dark:text-gray-500", children: leftIcon }),
|
|
1328
|
+
/* @__PURE__ */ jsx76(
|
|
1065
1329
|
"input",
|
|
1066
1330
|
{
|
|
1067
1331
|
ref,
|
|
@@ -1070,10 +1334,10 @@ var TextInput = forwardRef(
|
|
|
1070
1334
|
...props
|
|
1071
1335
|
}
|
|
1072
1336
|
),
|
|
1073
|
-
rightIcon && /* @__PURE__ */
|
|
1337
|
+
rightIcon && /* @__PURE__ */ jsx76("div", { className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 dark:text-gray-500", children: rightIcon })
|
|
1074
1338
|
] }),
|
|
1075
|
-
error && /* @__PURE__ */
|
|
1076
|
-
helperText && !error && /* @__PURE__ */
|
|
1339
|
+
error && /* @__PURE__ */ jsx76("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1340
|
+
helperText && !error && /* @__PURE__ */ jsx76("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1077
1341
|
] });
|
|
1078
1342
|
}
|
|
1079
1343
|
);
|
|
@@ -1081,7 +1345,7 @@ TextInput.displayName = "TextInput";
|
|
|
1081
1345
|
|
|
1082
1346
|
// src/components/NumberInput.tsx
|
|
1083
1347
|
import { useState as useState5, useRef as useRef2 } from "react";
|
|
1084
|
-
import { jsx as
|
|
1348
|
+
import { jsx as jsx77, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1085
1349
|
var sizeClasses5 = {
|
|
1086
1350
|
sm: "px-3 py-1.5 text-sm",
|
|
1087
1351
|
md: "px-4 py-2.5 text-base",
|
|
@@ -1156,10 +1420,10 @@ var NumberInput = ({
|
|
|
1156
1420
|
const widthStyle = fullWidth ? "w-full" : "";
|
|
1157
1421
|
const paddingWithControls = !hideControls ? "pr-8" : "";
|
|
1158
1422
|
const displayValue = value !== void 0 ? value.toString() : "";
|
|
1159
|
-
return /* @__PURE__ */
|
|
1160
|
-
label && /* @__PURE__ */
|
|
1161
|
-
/* @__PURE__ */
|
|
1162
|
-
/* @__PURE__ */
|
|
1423
|
+
return /* @__PURE__ */ jsxs12("div", { className: `${widthStyle} ${className}`, children: [
|
|
1424
|
+
label && /* @__PURE__ */ jsx77("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1425
|
+
/* @__PURE__ */ jsxs12("div", { className: "relative", children: [
|
|
1426
|
+
/* @__PURE__ */ jsx77(
|
|
1163
1427
|
"input",
|
|
1164
1428
|
{
|
|
1165
1429
|
ref: inputRef,
|
|
@@ -1177,8 +1441,8 @@ var NumberInput = ({
|
|
|
1177
1441
|
className: `${baseStyles} ${sizeStyle} ${errorStyles} ${disabledStyles} ${paddingWithControls} [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none`.trim()
|
|
1178
1442
|
}
|
|
1179
1443
|
),
|
|
1180
|
-
!hideControls && /* @__PURE__ */
|
|
1181
|
-
/* @__PURE__ */
|
|
1444
|
+
!hideControls && /* @__PURE__ */ jsxs12("div", { className: "absolute right-1 top-1/2 -translate-y-1/2 flex flex-col", children: [
|
|
1445
|
+
/* @__PURE__ */ jsx77(
|
|
1182
1446
|
"button",
|
|
1183
1447
|
{
|
|
1184
1448
|
type: "button",
|
|
@@ -1186,10 +1450,10 @@ var NumberInput = ({
|
|
|
1186
1450
|
disabled: disabled || max !== void 0 && value !== void 0 && value >= max,
|
|
1187
1451
|
className: "px-2 py-0.5 hover:bg-gray-100 dark:hover:bg-gray-700 rounded transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
1188
1452
|
tabIndex: -1,
|
|
1189
|
-
children: /* @__PURE__ */
|
|
1453
|
+
children: /* @__PURE__ */ jsx77("svg", { className: "w-3 h-3 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx77("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 3, d: "M5 15l7-7 7 7" }) })
|
|
1190
1454
|
}
|
|
1191
1455
|
),
|
|
1192
|
-
/* @__PURE__ */
|
|
1456
|
+
/* @__PURE__ */ jsx77(
|
|
1193
1457
|
"button",
|
|
1194
1458
|
{
|
|
1195
1459
|
type: "button",
|
|
@@ -1197,13 +1461,13 @@ var NumberInput = ({
|
|
|
1197
1461
|
disabled: disabled || min !== void 0 && value !== void 0 && value <= min,
|
|
1198
1462
|
className: "px-2 py-0.5 hover:bg-gray-100 dark:hover:bg-gray-700 rounded transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
1199
1463
|
tabIndex: -1,
|
|
1200
|
-
children: /* @__PURE__ */
|
|
1464
|
+
children: /* @__PURE__ */ jsx77("svg", { className: "w-3 h-3 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx77("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 3, d: "M19 9l-7 7-7-7" }) })
|
|
1201
1465
|
}
|
|
1202
1466
|
)
|
|
1203
1467
|
] })
|
|
1204
1468
|
] }),
|
|
1205
|
-
error && /* @__PURE__ */
|
|
1206
|
-
helperText && !error && /* @__PURE__ */
|
|
1469
|
+
error && /* @__PURE__ */ jsx77("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1470
|
+
helperText && !error && /* @__PURE__ */ jsx77("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1207
1471
|
] });
|
|
1208
1472
|
};
|
|
1209
1473
|
NumberInput.displayName = "NumberInput";
|
|
@@ -1211,7 +1475,7 @@ NumberInput.displayName = "NumberInput";
|
|
|
1211
1475
|
// src/components/ActionMenu.tsx
|
|
1212
1476
|
import { useState as useState6, useRef as useRef3, useEffect as useEffect5 } from "react";
|
|
1213
1477
|
import { createPortal } from "react-dom";
|
|
1214
|
-
import { Fragment as
|
|
1478
|
+
import { Fragment as Fragment11, jsx as jsx78, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1215
1479
|
var ActionMenu = ({
|
|
1216
1480
|
items,
|
|
1217
1481
|
trigger,
|
|
@@ -1276,17 +1540,17 @@ var ActionMenu = ({
|
|
|
1276
1540
|
setIsOpen(false);
|
|
1277
1541
|
}
|
|
1278
1542
|
};
|
|
1279
|
-
const defaultTrigger = /* @__PURE__ */
|
|
1543
|
+
const defaultTrigger = /* @__PURE__ */ jsx78(
|
|
1280
1544
|
"button",
|
|
1281
1545
|
{
|
|
1282
1546
|
className: "p-2 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
1283
1547
|
"aria-label": "Open menu",
|
|
1284
|
-
children: /* @__PURE__ */
|
|
1548
|
+
children: /* @__PURE__ */ jsx78("svg", { className: "w-5 h-5 text-gray-600 dark:text-gray-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx78("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" }) })
|
|
1285
1549
|
}
|
|
1286
1550
|
);
|
|
1287
1551
|
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";
|
|
1288
1552
|
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";
|
|
1289
|
-
const menu = isOpen && mounted && menuPosition ? /* @__PURE__ */
|
|
1553
|
+
const menu = isOpen && mounted && menuPosition ? /* @__PURE__ */ jsx78(
|
|
1290
1554
|
"div",
|
|
1291
1555
|
{
|
|
1292
1556
|
ref: menuRef,
|
|
@@ -1298,7 +1562,7 @@ var ActionMenu = ({
|
|
|
1298
1562
|
},
|
|
1299
1563
|
children: items.map((item, index) => {
|
|
1300
1564
|
if (item.type === "divider") {
|
|
1301
|
-
return /* @__PURE__ */
|
|
1565
|
+
return /* @__PURE__ */ jsx78(
|
|
1302
1566
|
"div",
|
|
1303
1567
|
{
|
|
1304
1568
|
className: "my-1 border-t border-gray-200 dark:border-gray-700"
|
|
@@ -1306,15 +1570,15 @@ var ActionMenu = ({
|
|
|
1306
1570
|
index
|
|
1307
1571
|
);
|
|
1308
1572
|
}
|
|
1309
|
-
return /* @__PURE__ */
|
|
1573
|
+
return /* @__PURE__ */ jsxs13(
|
|
1310
1574
|
"button",
|
|
1311
1575
|
{
|
|
1312
1576
|
onClick: () => handleItemClick(item),
|
|
1313
1577
|
disabled: item.disabled,
|
|
1314
1578
|
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" : ""}`,
|
|
1315
1579
|
children: [
|
|
1316
|
-
item.icon && /* @__PURE__ */
|
|
1317
|
-
/* @__PURE__ */
|
|
1580
|
+
item.icon && /* @__PURE__ */ jsx78("span", { className: "flex-shrink-0", children: item.icon }),
|
|
1581
|
+
/* @__PURE__ */ jsx78("span", { className: "flex-1", children: item.label })
|
|
1318
1582
|
]
|
|
1319
1583
|
},
|
|
1320
1584
|
index
|
|
@@ -1322,14 +1586,14 @@ var ActionMenu = ({
|
|
|
1322
1586
|
})
|
|
1323
1587
|
}
|
|
1324
1588
|
) : null;
|
|
1325
|
-
return /* @__PURE__ */
|
|
1326
|
-
/* @__PURE__ */
|
|
1589
|
+
return /* @__PURE__ */ jsxs13(Fragment11, { children: [
|
|
1590
|
+
/* @__PURE__ */ jsx78("div", { className: "relative inline-block", ref: triggerRef, children: /* @__PURE__ */ jsx78("div", { onClick: () => setIsOpen(!isOpen), children: trigger || defaultTrigger }) }),
|
|
1327
1591
|
mounted && createPortal(menu, document.body)
|
|
1328
1592
|
] });
|
|
1329
1593
|
};
|
|
1330
1594
|
|
|
1331
1595
|
// src/components/Card.tsx
|
|
1332
|
-
import { jsx as
|
|
1596
|
+
import { jsx as jsx79 } from "react/jsx-runtime";
|
|
1333
1597
|
var paddingClasses = {
|
|
1334
1598
|
none: "",
|
|
1335
1599
|
sm: "p-4",
|
|
@@ -1346,7 +1610,7 @@ var Card = ({
|
|
|
1346
1610
|
const { theme } = useTheme();
|
|
1347
1611
|
const paddingClass = paddingClasses[padding];
|
|
1348
1612
|
const hoverClass = hover ? "hover:shadow-xl hover:scale-[1.02] hover:border-blue-400 dark:hover:border-blue-500 cursor-pointer transition-all duration-200 ease-in-out" : "";
|
|
1349
|
-
return /* @__PURE__ */
|
|
1613
|
+
return /* @__PURE__ */ jsx79(
|
|
1350
1614
|
"div",
|
|
1351
1615
|
{
|
|
1352
1616
|
className: `bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 ${paddingClass} ${hoverClass} ${className}`,
|
|
@@ -1357,7 +1621,7 @@ var Card = ({
|
|
|
1357
1621
|
};
|
|
1358
1622
|
|
|
1359
1623
|
// src/components/Alert.tsx
|
|
1360
|
-
import { jsx as
|
|
1624
|
+
import { jsx as jsx80, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1361
1625
|
var variantStyles = {
|
|
1362
1626
|
info: "bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800 text-blue-900 dark:text-blue-100",
|
|
1363
1627
|
success: "bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800 text-green-900 dark:text-green-100",
|
|
@@ -1380,24 +1644,24 @@ var Alert = ({
|
|
|
1380
1644
|
const { theme } = useTheme();
|
|
1381
1645
|
const variantClass = variantStyles[variant];
|
|
1382
1646
|
const iconClass = iconStyles[variant];
|
|
1383
|
-
return /* @__PURE__ */
|
|
1384
|
-
/* @__PURE__ */
|
|
1385
|
-
variant === "info" && /* @__PURE__ */
|
|
1386
|
-
variant === "success" && /* @__PURE__ */
|
|
1387
|
-
variant === "warning" && /* @__PURE__ */
|
|
1388
|
-
variant === "error" && /* @__PURE__ */
|
|
1647
|
+
return /* @__PURE__ */ jsx80("div", { className: `rounded-lg border p-4 ${variantClass} ${className}`, role: "alert", children: /* @__PURE__ */ jsxs14("div", { className: "flex items-start gap-3", children: [
|
|
1648
|
+
/* @__PURE__ */ jsxs14("div", { className: `flex-shrink-0 ${iconClass}`, children: [
|
|
1649
|
+
variant === "info" && /* @__PURE__ */ jsx80("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx80("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" }) }),
|
|
1650
|
+
variant === "success" && /* @__PURE__ */ jsx80("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx80("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" }) }),
|
|
1651
|
+
variant === "warning" && /* @__PURE__ */ jsx80("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx80("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" }) }),
|
|
1652
|
+
variant === "error" && /* @__PURE__ */ jsx80("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx80("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" }) })
|
|
1389
1653
|
] }),
|
|
1390
|
-
/* @__PURE__ */
|
|
1391
|
-
title && /* @__PURE__ */
|
|
1392
|
-
/* @__PURE__ */
|
|
1654
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex-1", children: [
|
|
1655
|
+
title && /* @__PURE__ */ jsx80("h3", { className: "font-semibold mb-1", children: title }),
|
|
1656
|
+
/* @__PURE__ */ jsx80("div", { className: "text-sm", children })
|
|
1393
1657
|
] }),
|
|
1394
|
-
onClose && /* @__PURE__ */
|
|
1658
|
+
onClose && /* @__PURE__ */ jsx80(
|
|
1395
1659
|
"button",
|
|
1396
1660
|
{
|
|
1397
1661
|
onClick: onClose,
|
|
1398
1662
|
className: `flex-shrink-0 ${iconClass} hover:opacity-70 transition-opacity`,
|
|
1399
1663
|
"aria-label": "Close alert",
|
|
1400
|
-
children: /* @__PURE__ */
|
|
1664
|
+
children: /* @__PURE__ */ jsx80("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx80("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
1401
1665
|
}
|
|
1402
1666
|
)
|
|
1403
1667
|
] }) });
|
|
@@ -1405,14 +1669,14 @@ var Alert = ({
|
|
|
1405
1669
|
|
|
1406
1670
|
// src/components/Checkbox.tsx
|
|
1407
1671
|
import { forwardRef as forwardRef2 } from "react";
|
|
1408
|
-
import { jsx as
|
|
1672
|
+
import { jsx as jsx81, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1409
1673
|
var Checkbox = forwardRef2(
|
|
1410
1674
|
({ label, error, className = "", disabled, checked, ...props }, ref) => {
|
|
1411
1675
|
const { theme } = useTheme();
|
|
1412
|
-
return /* @__PURE__ */
|
|
1413
|
-
/* @__PURE__ */
|
|
1414
|
-
/* @__PURE__ */
|
|
1415
|
-
/* @__PURE__ */
|
|
1676
|
+
return /* @__PURE__ */ jsxs15("div", { className, children: [
|
|
1677
|
+
/* @__PURE__ */ jsxs15("label", { className: "flex items-center gap-2 cursor-pointer group", children: [
|
|
1678
|
+
/* @__PURE__ */ jsxs15("div", { className: "relative inline-flex items-center", children: [
|
|
1679
|
+
/* @__PURE__ */ jsx81(
|
|
1416
1680
|
"input",
|
|
1417
1681
|
{
|
|
1418
1682
|
ref,
|
|
@@ -1423,19 +1687,19 @@ var Checkbox = forwardRef2(
|
|
|
1423
1687
|
...props
|
|
1424
1688
|
}
|
|
1425
1689
|
),
|
|
1426
|
-
/* @__PURE__ */
|
|
1690
|
+
/* @__PURE__ */ jsx81("div", { className: `w-4 h-4 border-2 rounded transition-all duration-200 flex items-center justify-center
|
|
1427
1691
|
${error ? "border-red-500 dark:border-red-500" : "border-gray-300 dark:border-gray-600"}
|
|
1428
1692
|
${disabled ? "opacity-50 cursor-not-allowed bg-gray-100 dark:bg-gray-800" : "peer-hover:border-gray-400 dark:peer-hover:border-gray-500"}
|
|
1429
1693
|
peer-checked:bg-blue-600 peer-checked:border-blue-600
|
|
1430
1694
|
peer-focus:ring-2 peer-focus:ring-blue-500 peer-focus:ring-offset-2
|
|
1431
|
-
`, children: /* @__PURE__ */
|
|
1695
|
+
`, children: /* @__PURE__ */ jsx81(
|
|
1432
1696
|
"svg",
|
|
1433
1697
|
{
|
|
1434
1698
|
className: `w-3 h-3 text-white transition-opacity duration-200 ${checked ? "opacity-100" : "opacity-0"}`,
|
|
1435
1699
|
viewBox: "0 0 12 12",
|
|
1436
1700
|
fill: "none",
|
|
1437
1701
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1438
|
-
children: /* @__PURE__ */
|
|
1702
|
+
children: /* @__PURE__ */ jsx81(
|
|
1439
1703
|
"path",
|
|
1440
1704
|
{
|
|
1441
1705
|
d: "M10 3L4.5 8.5L2 6",
|
|
@@ -1448,9 +1712,9 @@ var Checkbox = forwardRef2(
|
|
|
1448
1712
|
}
|
|
1449
1713
|
) })
|
|
1450
1714
|
] }),
|
|
1451
|
-
label && /* @__PURE__ */
|
|
1715
|
+
label && /* @__PURE__ */ jsx81("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 })
|
|
1452
1716
|
] }),
|
|
1453
|
-
error && /* @__PURE__ */
|
|
1717
|
+
error && /* @__PURE__ */ jsx81("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error })
|
|
1454
1718
|
] });
|
|
1455
1719
|
}
|
|
1456
1720
|
);
|
|
@@ -1458,7 +1722,7 @@ Checkbox.displayName = "Checkbox";
|
|
|
1458
1722
|
|
|
1459
1723
|
// src/components/Toggle.tsx
|
|
1460
1724
|
import { forwardRef as forwardRef3 } from "react";
|
|
1461
|
-
import { jsx as
|
|
1725
|
+
import { jsx as jsx82, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1462
1726
|
var Toggle = forwardRef3(
|
|
1463
1727
|
({ label, size = "md", className = "", disabled, checked, ...props }, ref) => {
|
|
1464
1728
|
const { theme } = useTheme();
|
|
@@ -1477,9 +1741,9 @@ var Toggle = forwardRef3(
|
|
|
1477
1741
|
}
|
|
1478
1742
|
};
|
|
1479
1743
|
const currentSize = toggleClasses[size];
|
|
1480
|
-
return /* @__PURE__ */
|
|
1481
|
-
/* @__PURE__ */
|
|
1482
|
-
/* @__PURE__ */
|
|
1744
|
+
return /* @__PURE__ */ jsxs16("label", { className: `inline-flex items-center gap-3 cursor-pointer ${disabled ? "opacity-50 cursor-not-allowed" : ""} ${className}`, children: [
|
|
1745
|
+
/* @__PURE__ */ jsxs16("div", { className: "relative", children: [
|
|
1746
|
+
/* @__PURE__ */ jsx82(
|
|
1483
1747
|
"input",
|
|
1484
1748
|
{
|
|
1485
1749
|
ref,
|
|
@@ -1490,27 +1754,27 @@ var Toggle = forwardRef3(
|
|
|
1490
1754
|
...props
|
|
1491
1755
|
}
|
|
1492
1756
|
),
|
|
1493
|
-
/* @__PURE__ */
|
|
1757
|
+
/* @__PURE__ */ jsx82(
|
|
1494
1758
|
"div",
|
|
1495
1759
|
{
|
|
1496
1760
|
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`
|
|
1497
1761
|
}
|
|
1498
1762
|
),
|
|
1499
|
-
/* @__PURE__ */
|
|
1763
|
+
/* @__PURE__ */ jsx82(
|
|
1500
1764
|
"div",
|
|
1501
1765
|
{
|
|
1502
1766
|
className: `${currentSize.thumb} bg-white rounded-full shadow-md absolute top-0.5 left-0.5 transition-transform`
|
|
1503
1767
|
}
|
|
1504
1768
|
)
|
|
1505
1769
|
] }),
|
|
1506
|
-
label && /* @__PURE__ */
|
|
1770
|
+
label && /* @__PURE__ */ jsx82("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label })
|
|
1507
1771
|
] });
|
|
1508
1772
|
}
|
|
1509
1773
|
);
|
|
1510
1774
|
Toggle.displayName = "Toggle";
|
|
1511
1775
|
|
|
1512
1776
|
// src/components/Badge.tsx
|
|
1513
|
-
import { jsx as
|
|
1777
|
+
import { jsx as jsx83 } from "react/jsx-runtime";
|
|
1514
1778
|
var variantStyles2 = {
|
|
1515
1779
|
default: "bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-200",
|
|
1516
1780
|
primary: "bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-200",
|
|
@@ -1533,11 +1797,11 @@ var Badge = ({
|
|
|
1533
1797
|
const { theme } = useTheme();
|
|
1534
1798
|
const variantClass = variantStyles2[variant];
|
|
1535
1799
|
const sizeClass = sizeStyles[size];
|
|
1536
|
-
return /* @__PURE__ */
|
|
1800
|
+
return /* @__PURE__ */ jsx83("span", { className: `inline-flex items-center font-medium rounded-full ${variantClass} ${sizeClass} ${className}`, children });
|
|
1537
1801
|
};
|
|
1538
1802
|
|
|
1539
1803
|
// src/components/Spinner.tsx
|
|
1540
|
-
import { jsx as
|
|
1804
|
+
import { jsx as jsx84 } from "react/jsx-runtime";
|
|
1541
1805
|
var sizeClasses6 = {
|
|
1542
1806
|
sm: "w-4 h-4 border-2",
|
|
1543
1807
|
md: "w-8 h-8 border-2",
|
|
@@ -1557,20 +1821,20 @@ var Spinner = ({
|
|
|
1557
1821
|
const { theme } = useTheme();
|
|
1558
1822
|
const sizeClass = sizeClasses6[size];
|
|
1559
1823
|
const colorClass = colorClasses[color];
|
|
1560
|
-
return /* @__PURE__ */
|
|
1824
|
+
return /* @__PURE__ */ jsx84(
|
|
1561
1825
|
"div",
|
|
1562
1826
|
{
|
|
1563
1827
|
className: `inline-block rounded-full animate-spin ${sizeClass} ${colorClass} ${className}`,
|
|
1564
1828
|
role: "status",
|
|
1565
1829
|
"aria-label": "Loading",
|
|
1566
|
-
children: /* @__PURE__ */
|
|
1830
|
+
children: /* @__PURE__ */ jsx84("span", { className: "sr-only", children: "Loading..." })
|
|
1567
1831
|
}
|
|
1568
1832
|
);
|
|
1569
1833
|
};
|
|
1570
1834
|
|
|
1571
1835
|
// src/components/Tabs.tsx
|
|
1572
1836
|
import { useState as useState7 } from "react";
|
|
1573
|
-
import { jsx as
|
|
1837
|
+
import { jsx as jsx85, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1574
1838
|
var Tabs = ({
|
|
1575
1839
|
tabs,
|
|
1576
1840
|
defaultIndex = 0,
|
|
@@ -1584,8 +1848,8 @@ var Tabs = ({
|
|
|
1584
1848
|
setActiveIndex(index);
|
|
1585
1849
|
onChange?.(index);
|
|
1586
1850
|
};
|
|
1587
|
-
return /* @__PURE__ */
|
|
1588
|
-
/* @__PURE__ */
|
|
1851
|
+
return /* @__PURE__ */ jsxs17("div", { className, children: [
|
|
1852
|
+
/* @__PURE__ */ jsx85("div", { className: "border-b border-gray-200 dark:border-gray-700", children: /* @__PURE__ */ jsx85("nav", { className: "flex gap-8 px-6", "aria-label": "Tabs", children: tabs.map((tab, index) => /* @__PURE__ */ jsx85(
|
|
1589
1853
|
"button",
|
|
1590
1854
|
{
|
|
1591
1855
|
onClick: () => handleTabClick(index),
|
|
@@ -1596,12 +1860,12 @@ var Tabs = ({
|
|
|
1596
1860
|
},
|
|
1597
1861
|
index
|
|
1598
1862
|
)) }) }),
|
|
1599
|
-
/* @__PURE__ */
|
|
1863
|
+
/* @__PURE__ */ jsx85("div", { children: tabs[activeIndex]?.content })
|
|
1600
1864
|
] });
|
|
1601
1865
|
};
|
|
1602
1866
|
|
|
1603
1867
|
// src/components/Table.tsx
|
|
1604
|
-
import { jsx as
|
|
1868
|
+
import { jsx as jsx86, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1605
1869
|
function Table({
|
|
1606
1870
|
columns,
|
|
1607
1871
|
data,
|
|
@@ -1611,11 +1875,11 @@ function Table({
|
|
|
1611
1875
|
className = ""
|
|
1612
1876
|
}) {
|
|
1613
1877
|
const { theme } = useTheme();
|
|
1614
|
-
return /* @__PURE__ */
|
|
1615
|
-
/* @__PURE__ */
|
|
1616
|
-
/* @__PURE__ */
|
|
1878
|
+
return /* @__PURE__ */ jsxs18("div", { className: `overflow-x-auto ${className}`, children: [
|
|
1879
|
+
/* @__PURE__ */ jsxs18("table", { className: "w-full text-left", children: [
|
|
1880
|
+
/* @__PURE__ */ jsx86("thead", { className: "bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700", children: /* @__PURE__ */ jsx86("tr", { children: columns.map((column, colIndex) => {
|
|
1617
1881
|
const isLast = colIndex === columns.length - 1;
|
|
1618
|
-
return /* @__PURE__ */
|
|
1882
|
+
return /* @__PURE__ */ jsx86(
|
|
1619
1883
|
"th",
|
|
1620
1884
|
{
|
|
1621
1885
|
className: isLast ? "px-6 py-3 text-xs font-medium text-gray-700 dark:text-gray-300 uppercase tracking-wider relative" : "px-6 py-3 text-xs font-medium text-gray-700 dark:text-gray-300 uppercase tracking-wider",
|
|
@@ -1625,18 +1889,18 @@ function Table({
|
|
|
1625
1889
|
column.key
|
|
1626
1890
|
);
|
|
1627
1891
|
}) }) }),
|
|
1628
|
-
/* @__PURE__ */
|
|
1892
|
+
/* @__PURE__ */ jsx86("tbody", { className: "bg-white dark:bg-gray-900 divide-y divide-gray-200 dark:divide-gray-700", children: data.map((row, rowIndex) => {
|
|
1629
1893
|
const rowClasses = [
|
|
1630
1894
|
striped && rowIndex % 2 === 1 ? "bg-gray-50 dark:bg-gray-800/50" : "",
|
|
1631
1895
|
hoverable ? "hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors" : ""
|
|
1632
1896
|
].filter(Boolean).join(" ");
|
|
1633
|
-
return /* @__PURE__ */
|
|
1897
|
+
return /* @__PURE__ */ jsx86(
|
|
1634
1898
|
"tr",
|
|
1635
1899
|
{
|
|
1636
1900
|
className: rowClasses,
|
|
1637
1901
|
children: columns.map((column, colIndex) => {
|
|
1638
1902
|
const isLast = colIndex === columns.length - 1;
|
|
1639
|
-
return /* @__PURE__ */
|
|
1903
|
+
return /* @__PURE__ */ jsx86(
|
|
1640
1904
|
"td",
|
|
1641
1905
|
{
|
|
1642
1906
|
className: isLast ? "px-6 py-4 text-sm text-gray-900 dark:text-gray-100 overflow-visible" : "px-6 py-4 text-sm text-gray-900 dark:text-gray-100",
|
|
@@ -1650,12 +1914,12 @@ function Table({
|
|
|
1650
1914
|
);
|
|
1651
1915
|
}) })
|
|
1652
1916
|
] }),
|
|
1653
|
-
data.length === 0 && /* @__PURE__ */
|
|
1917
|
+
data.length === 0 && /* @__PURE__ */ jsx86("div", { className: "text-center py-8 text-gray-500 dark:text-gray-400", children: "No data available" })
|
|
1654
1918
|
] });
|
|
1655
1919
|
}
|
|
1656
1920
|
|
|
1657
1921
|
// src/components/Pagination.tsx
|
|
1658
|
-
import { jsx as
|
|
1922
|
+
import { jsx as jsx87, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1659
1923
|
var Pagination = ({
|
|
1660
1924
|
currentPage,
|
|
1661
1925
|
totalPages,
|
|
@@ -1696,8 +1960,8 @@ var Pagination = ({
|
|
|
1696
1960
|
return range(1, totalPages);
|
|
1697
1961
|
};
|
|
1698
1962
|
const pages = paginationRange();
|
|
1699
|
-
return /* @__PURE__ */
|
|
1700
|
-
/* @__PURE__ */
|
|
1963
|
+
return /* @__PURE__ */ jsxs19("nav", { className: `flex items-center gap-1 ${className}`, "aria-label": "Pagination", children: [
|
|
1964
|
+
/* @__PURE__ */ jsx87(
|
|
1701
1965
|
"button",
|
|
1702
1966
|
{
|
|
1703
1967
|
onClick: () => onPageChange(currentPage - 1),
|
|
@@ -1709,7 +1973,7 @@ var Pagination = ({
|
|
|
1709
1973
|
),
|
|
1710
1974
|
pages.map((page, index) => {
|
|
1711
1975
|
if (page === "...") {
|
|
1712
|
-
return /* @__PURE__ */
|
|
1976
|
+
return /* @__PURE__ */ jsx87(
|
|
1713
1977
|
"span",
|
|
1714
1978
|
{
|
|
1715
1979
|
className: "px-3 py-2 text-gray-700 dark:text-gray-300",
|
|
@@ -1718,7 +1982,7 @@ var Pagination = ({
|
|
|
1718
1982
|
`dots-${index}`
|
|
1719
1983
|
);
|
|
1720
1984
|
}
|
|
1721
|
-
return /* @__PURE__ */
|
|
1985
|
+
return /* @__PURE__ */ jsx87(
|
|
1722
1986
|
"button",
|
|
1723
1987
|
{
|
|
1724
1988
|
onClick: () => onPageChange(page),
|
|
@@ -1730,7 +1994,7 @@ var Pagination = ({
|
|
|
1730
1994
|
page
|
|
1731
1995
|
);
|
|
1732
1996
|
}),
|
|
1733
|
-
/* @__PURE__ */
|
|
1997
|
+
/* @__PURE__ */ jsx87(
|
|
1734
1998
|
"button",
|
|
1735
1999
|
{
|
|
1736
2000
|
onClick: () => onPageChange(currentPage + 1),
|
|
@@ -1746,7 +2010,7 @@ var Pagination = ({
|
|
|
1746
2010
|
// src/components/DatePicker.tsx
|
|
1747
2011
|
import { useState as useState8, useRef as useRef4, useEffect as useEffect6 } from "react";
|
|
1748
2012
|
import { createPortal as createPortal2 } from "react-dom";
|
|
1749
|
-
import { jsx as
|
|
2013
|
+
import { jsx as jsx88, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1750
2014
|
var DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
1751
2015
|
var MONTHS = [
|
|
1752
2016
|
"January",
|
|
@@ -1867,7 +2131,7 @@ var DatePicker = ({
|
|
|
1867
2131
|
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 cursor-pointer";
|
|
1868
2132
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
1869
2133
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1870
|
-
const calendar = isOpen && mounted && calendarPosition ? /* @__PURE__ */
|
|
2134
|
+
const calendar = isOpen && mounted && calendarPosition ? /* @__PURE__ */ jsxs20(
|
|
1871
2135
|
"div",
|
|
1872
2136
|
{
|
|
1873
2137
|
ref: calendarRef,
|
|
@@ -1878,23 +2142,23 @@ var DatePicker = ({
|
|
|
1878
2142
|
minWidth: "320px"
|
|
1879
2143
|
},
|
|
1880
2144
|
children: [
|
|
1881
|
-
/* @__PURE__ */
|
|
1882
|
-
/* @__PURE__ */
|
|
2145
|
+
/* @__PURE__ */ jsxs20("div", { className: "flex items-center justify-between mb-4", children: [
|
|
2146
|
+
/* @__PURE__ */ jsx88(
|
|
1883
2147
|
"button",
|
|
1884
2148
|
{
|
|
1885
2149
|
onClick: handlePrevMonth,
|
|
1886
2150
|
className: "p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors",
|
|
1887
2151
|
"aria-label": "Previous month",
|
|
1888
|
-
children: /* @__PURE__ */
|
|
2152
|
+
children: /* @__PURE__ */ jsx88("svg", { className: "w-5 h-5 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx88("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) })
|
|
1889
2153
|
}
|
|
1890
2154
|
),
|
|
1891
|
-
/* @__PURE__ */
|
|
1892
|
-
/* @__PURE__ */
|
|
2155
|
+
/* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2", children: [
|
|
2156
|
+
/* @__PURE__ */ jsxs20("h2", { className: "text-base font-semibold text-gray-900 dark:text-gray-100", children: [
|
|
1893
2157
|
MONTHS[month],
|
|
1894
2158
|
" ",
|
|
1895
2159
|
year
|
|
1896
2160
|
] }),
|
|
1897
|
-
/* @__PURE__ */
|
|
2161
|
+
/* @__PURE__ */ jsx88(
|
|
1898
2162
|
"button",
|
|
1899
2163
|
{
|
|
1900
2164
|
onClick: handleToday,
|
|
@@ -1903,23 +2167,23 @@ var DatePicker = ({
|
|
|
1903
2167
|
}
|
|
1904
2168
|
)
|
|
1905
2169
|
] }),
|
|
1906
|
-
/* @__PURE__ */
|
|
2170
|
+
/* @__PURE__ */ jsx88(
|
|
1907
2171
|
"button",
|
|
1908
2172
|
{
|
|
1909
2173
|
onClick: handleNextMonth,
|
|
1910
2174
|
className: "p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors",
|
|
1911
2175
|
"aria-label": "Next month",
|
|
1912
|
-
children: /* @__PURE__ */
|
|
2176
|
+
children: /* @__PURE__ */ jsx88("svg", { className: "w-5 h-5 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx88("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
|
|
1913
2177
|
}
|
|
1914
2178
|
)
|
|
1915
2179
|
] }),
|
|
1916
|
-
/* @__PURE__ */
|
|
1917
|
-
/* @__PURE__ */
|
|
2180
|
+
/* @__PURE__ */ jsx88("div", { className: "grid grid-cols-7 gap-1 mb-2", children: DAYS.map((day) => /* @__PURE__ */ jsx88("div", { className: "text-center text-xs font-semibold text-gray-600 dark:text-gray-400 py-1", children: day }, day)) }),
|
|
2181
|
+
/* @__PURE__ */ jsx88("div", { className: "grid grid-cols-7 gap-1", children: calendarDays.map((date, index) => {
|
|
1918
2182
|
const isCurrentMonthDay = isCurrentMonth(date);
|
|
1919
2183
|
const isTodayDay = isToday(date);
|
|
1920
2184
|
const isSelectedDay = isSelected(date);
|
|
1921
2185
|
const isDisabledDay = isDisabled(date);
|
|
1922
|
-
return /* @__PURE__ */
|
|
2186
|
+
return /* @__PURE__ */ jsx88(
|
|
1923
2187
|
"button",
|
|
1924
2188
|
{
|
|
1925
2189
|
onClick: () => handleDateClick(date),
|
|
@@ -1940,22 +2204,22 @@ var DatePicker = ({
|
|
|
1940
2204
|
]
|
|
1941
2205
|
}
|
|
1942
2206
|
) : null;
|
|
1943
|
-
return /* @__PURE__ */
|
|
1944
|
-
label && /* @__PURE__ */
|
|
1945
|
-
/* @__PURE__ */
|
|
2207
|
+
return /* @__PURE__ */ jsxs20("div", { className, children: [
|
|
2208
|
+
label && /* @__PURE__ */ jsx88("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
2209
|
+
/* @__PURE__ */ jsxs20(
|
|
1946
2210
|
"div",
|
|
1947
2211
|
{
|
|
1948
2212
|
ref: inputRef,
|
|
1949
2213
|
onClick: () => !disabled && setIsOpen(!isOpen),
|
|
1950
2214
|
className: `${baseStyles} ${errorStyles} ${disabledStyles} flex items-center justify-between`.trim(),
|
|
1951
2215
|
children: [
|
|
1952
|
-
/* @__PURE__ */
|
|
1953
|
-
/* @__PURE__ */
|
|
2216
|
+
/* @__PURE__ */ jsx88("span", { className: !value ? "text-gray-500 dark:text-gray-400" : "", children: value ? formatDate(value) : placeholder }),
|
|
2217
|
+
/* @__PURE__ */ jsx88("svg", { className: "w-5 h-5 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx88("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" }) })
|
|
1954
2218
|
]
|
|
1955
2219
|
}
|
|
1956
2220
|
),
|
|
1957
|
-
error && /* @__PURE__ */
|
|
1958
|
-
helperText && !error && /* @__PURE__ */
|
|
2221
|
+
error && /* @__PURE__ */ jsx88("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
2222
|
+
helperText && !error && /* @__PURE__ */ jsx88("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText }),
|
|
1959
2223
|
mounted && createPortal2(calendar, document.body)
|
|
1960
2224
|
] });
|
|
1961
2225
|
};
|
|
@@ -1963,16 +2227,16 @@ DatePicker.displayName = "DatePicker";
|
|
|
1963
2227
|
|
|
1964
2228
|
// src/components/TimePicker.tsx
|
|
1965
2229
|
import { forwardRef as forwardRef4 } from "react";
|
|
1966
|
-
import { jsx as
|
|
2230
|
+
import { jsx as jsx89, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1967
2231
|
var TimePicker = forwardRef4(
|
|
1968
2232
|
({ label, error, helperText, className = "", disabled, ...props }, ref) => {
|
|
1969
2233
|
const { theme } = useTheme();
|
|
1970
2234
|
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";
|
|
1971
2235
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
1972
2236
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1973
|
-
return /* @__PURE__ */
|
|
1974
|
-
label && /* @__PURE__ */
|
|
1975
|
-
/* @__PURE__ */
|
|
2237
|
+
return /* @__PURE__ */ jsxs21("div", { className, children: [
|
|
2238
|
+
label && /* @__PURE__ */ jsx89("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
2239
|
+
/* @__PURE__ */ jsx89(
|
|
1976
2240
|
"input",
|
|
1977
2241
|
{
|
|
1978
2242
|
ref,
|
|
@@ -1982,8 +2246,8 @@ var TimePicker = forwardRef4(
|
|
|
1982
2246
|
...props
|
|
1983
2247
|
}
|
|
1984
2248
|
),
|
|
1985
|
-
error && /* @__PURE__ */
|
|
1986
|
-
helperText && !error && /* @__PURE__ */
|
|
2249
|
+
error && /* @__PURE__ */ jsx89("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
2250
|
+
helperText && !error && /* @__PURE__ */ jsx89("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1987
2251
|
] });
|
|
1988
2252
|
}
|
|
1989
2253
|
);
|
|
@@ -1992,7 +2256,7 @@ TimePicker.displayName = "TimePicker";
|
|
|
1992
2256
|
// src/components/DateTimePicker.tsx
|
|
1993
2257
|
import { useState as useState9, useRef as useRef5, useEffect as useEffect7 } from "react";
|
|
1994
2258
|
import { createPortal as createPortal3 } from "react-dom";
|
|
1995
|
-
import { jsx as
|
|
2259
|
+
import { jsx as jsx90, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1996
2260
|
var DAYS2 = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
1997
2261
|
var MONTHS2 = [
|
|
1998
2262
|
"January",
|
|
@@ -2149,7 +2413,7 @@ var DateTimePicker = ({
|
|
|
2149
2413
|
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 cursor-pointer";
|
|
2150
2414
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
2151
2415
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
2152
|
-
const picker = isOpen && mounted && pickerPosition ? /* @__PURE__ */
|
|
2416
|
+
const picker = isOpen && mounted && pickerPosition ? /* @__PURE__ */ jsxs22(
|
|
2153
2417
|
"div",
|
|
2154
2418
|
{
|
|
2155
2419
|
ref: pickerRef,
|
|
@@ -2160,23 +2424,23 @@ var DateTimePicker = ({
|
|
|
2160
2424
|
minWidth: "360px"
|
|
2161
2425
|
},
|
|
2162
2426
|
children: [
|
|
2163
|
-
/* @__PURE__ */
|
|
2164
|
-
/* @__PURE__ */
|
|
2427
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex items-center justify-between mb-4", children: [
|
|
2428
|
+
/* @__PURE__ */ jsx90(
|
|
2165
2429
|
"button",
|
|
2166
2430
|
{
|
|
2167
2431
|
onClick: handlePrevMonth,
|
|
2168
2432
|
className: "p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors",
|
|
2169
2433
|
"aria-label": "Previous month",
|
|
2170
|
-
children: /* @__PURE__ */
|
|
2434
|
+
children: /* @__PURE__ */ jsx90("svg", { className: "w-5 h-5 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx90("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) })
|
|
2171
2435
|
}
|
|
2172
2436
|
),
|
|
2173
|
-
/* @__PURE__ */
|
|
2174
|
-
/* @__PURE__ */
|
|
2437
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2", children: [
|
|
2438
|
+
/* @__PURE__ */ jsxs22("h2", { className: "text-base font-semibold text-gray-900 dark:text-gray-100", children: [
|
|
2175
2439
|
MONTHS2[month],
|
|
2176
2440
|
" ",
|
|
2177
2441
|
year
|
|
2178
2442
|
] }),
|
|
2179
|
-
/* @__PURE__ */
|
|
2443
|
+
/* @__PURE__ */ jsx90(
|
|
2180
2444
|
"button",
|
|
2181
2445
|
{
|
|
2182
2446
|
onClick: handleToday,
|
|
@@ -2185,23 +2449,23 @@ var DateTimePicker = ({
|
|
|
2185
2449
|
}
|
|
2186
2450
|
)
|
|
2187
2451
|
] }),
|
|
2188
|
-
/* @__PURE__ */
|
|
2452
|
+
/* @__PURE__ */ jsx90(
|
|
2189
2453
|
"button",
|
|
2190
2454
|
{
|
|
2191
2455
|
onClick: handleNextMonth,
|
|
2192
2456
|
className: "p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors",
|
|
2193
2457
|
"aria-label": "Next month",
|
|
2194
|
-
children: /* @__PURE__ */
|
|
2458
|
+
children: /* @__PURE__ */ jsx90("svg", { className: "w-5 h-5 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx90("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
|
|
2195
2459
|
}
|
|
2196
2460
|
)
|
|
2197
2461
|
] }),
|
|
2198
|
-
/* @__PURE__ */
|
|
2199
|
-
/* @__PURE__ */
|
|
2462
|
+
/* @__PURE__ */ jsx90("div", { className: "grid grid-cols-7 gap-1 mb-2", children: DAYS2.map((day) => /* @__PURE__ */ jsx90("div", { className: "text-center text-xs font-semibold text-gray-600 dark:text-gray-400 py-1", children: day }, day)) }),
|
|
2463
|
+
/* @__PURE__ */ jsx90("div", { className: "grid grid-cols-7 gap-1 mb-4", children: calendarDays.map((date, index) => {
|
|
2200
2464
|
const isCurrentMonthDay = isCurrentMonth(date);
|
|
2201
2465
|
const isTodayDay = isToday(date);
|
|
2202
2466
|
const isSelectedDay = isSelected(date);
|
|
2203
2467
|
const isDisabledDay = isDisabled(date);
|
|
2204
|
-
return /* @__PURE__ */
|
|
2468
|
+
return /* @__PURE__ */ jsx90(
|
|
2205
2469
|
"button",
|
|
2206
2470
|
{
|
|
2207
2471
|
onClick: () => handleDateClick(date),
|
|
@@ -2219,21 +2483,21 @@ var DateTimePicker = ({
|
|
|
2219
2483
|
index
|
|
2220
2484
|
);
|
|
2221
2485
|
}) }),
|
|
2222
|
-
/* @__PURE__ */
|
|
2223
|
-
/* @__PURE__ */
|
|
2224
|
-
/* @__PURE__ */
|
|
2225
|
-
/* @__PURE__ */
|
|
2226
|
-
/* @__PURE__ */
|
|
2227
|
-
/* @__PURE__ */
|
|
2486
|
+
/* @__PURE__ */ jsxs22("div", { className: "border-t border-gray-200 dark:border-gray-700 pt-4", children: [
|
|
2487
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex items-center justify-center gap-4 mb-4", children: [
|
|
2488
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center", children: [
|
|
2489
|
+
/* @__PURE__ */ jsx90("label", { className: "text-xs font-semibold text-gray-600 dark:text-gray-400 mb-2", children: "Hour" }),
|
|
2490
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center gap-1", children: [
|
|
2491
|
+
/* @__PURE__ */ jsx90(
|
|
2228
2492
|
"button",
|
|
2229
2493
|
{
|
|
2230
2494
|
type: "button",
|
|
2231
2495
|
onClick: () => handleTimeChange((selectedTime.hours + 1) % 24, selectedTime.minutes),
|
|
2232
2496
|
className: "p-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded transition-colors",
|
|
2233
|
-
children: /* @__PURE__ */
|
|
2497
|
+
children: /* @__PURE__ */ jsx90("svg", { className: "w-4 h-4 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx90("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 15l7-7 7 7" }) })
|
|
2234
2498
|
}
|
|
2235
2499
|
),
|
|
2236
|
-
/* @__PURE__ */
|
|
2500
|
+
/* @__PURE__ */ jsx90(
|
|
2237
2501
|
"input",
|
|
2238
2502
|
{
|
|
2239
2503
|
type: "number",
|
|
@@ -2249,31 +2513,31 @@ var DateTimePicker = ({
|
|
|
2249
2513
|
className: "w-16 px-2 py-2 text-center border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500 text-lg font-semibold [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none"
|
|
2250
2514
|
}
|
|
2251
2515
|
),
|
|
2252
|
-
/* @__PURE__ */
|
|
2516
|
+
/* @__PURE__ */ jsx90(
|
|
2253
2517
|
"button",
|
|
2254
2518
|
{
|
|
2255
2519
|
type: "button",
|
|
2256
2520
|
onClick: () => handleTimeChange((selectedTime.hours - 1 + 24) % 24, selectedTime.minutes),
|
|
2257
2521
|
className: "p-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded transition-colors",
|
|
2258
|
-
children: /* @__PURE__ */
|
|
2522
|
+
children: /* @__PURE__ */ jsx90("svg", { className: "w-4 h-4 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx90("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })
|
|
2259
2523
|
}
|
|
2260
2524
|
)
|
|
2261
2525
|
] })
|
|
2262
2526
|
] }),
|
|
2263
|
-
/* @__PURE__ */
|
|
2264
|
-
/* @__PURE__ */
|
|
2265
|
-
/* @__PURE__ */
|
|
2266
|
-
/* @__PURE__ */
|
|
2267
|
-
/* @__PURE__ */
|
|
2527
|
+
/* @__PURE__ */ jsx90("span", { className: "text-2xl font-bold text-gray-600 dark:text-gray-400 mt-8", children: ":" }),
|
|
2528
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center", children: [
|
|
2529
|
+
/* @__PURE__ */ jsx90("label", { className: "text-xs font-semibold text-gray-600 dark:text-gray-400 mb-2", children: "Minute" }),
|
|
2530
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center gap-1", children: [
|
|
2531
|
+
/* @__PURE__ */ jsx90(
|
|
2268
2532
|
"button",
|
|
2269
2533
|
{
|
|
2270
2534
|
type: "button",
|
|
2271
2535
|
onClick: () => handleTimeChange(selectedTime.hours, (selectedTime.minutes + 1) % 60),
|
|
2272
2536
|
className: "p-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded transition-colors",
|
|
2273
|
-
children: /* @__PURE__ */
|
|
2537
|
+
children: /* @__PURE__ */ jsx90("svg", { className: "w-4 h-4 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx90("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 15l7-7 7 7" }) })
|
|
2274
2538
|
}
|
|
2275
2539
|
),
|
|
2276
|
-
/* @__PURE__ */
|
|
2540
|
+
/* @__PURE__ */ jsx90(
|
|
2277
2541
|
"input",
|
|
2278
2542
|
{
|
|
2279
2543
|
type: "number",
|
|
@@ -2289,20 +2553,20 @@ var DateTimePicker = ({
|
|
|
2289
2553
|
className: "w-16 px-2 py-2 text-center border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500 text-lg font-semibold [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none"
|
|
2290
2554
|
}
|
|
2291
2555
|
),
|
|
2292
|
-
/* @__PURE__ */
|
|
2556
|
+
/* @__PURE__ */ jsx90(
|
|
2293
2557
|
"button",
|
|
2294
2558
|
{
|
|
2295
2559
|
type: "button",
|
|
2296
2560
|
onClick: () => handleTimeChange(selectedTime.hours, (selectedTime.minutes - 1 + 60) % 60),
|
|
2297
2561
|
className: "p-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded transition-colors",
|
|
2298
|
-
children: /* @__PURE__ */
|
|
2562
|
+
children: /* @__PURE__ */ jsx90("svg", { className: "w-4 h-4 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx90("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })
|
|
2299
2563
|
}
|
|
2300
2564
|
)
|
|
2301
2565
|
] })
|
|
2302
2566
|
] })
|
|
2303
2567
|
] }),
|
|
2304
|
-
/* @__PURE__ */
|
|
2305
|
-
/* @__PURE__ */
|
|
2568
|
+
/* @__PURE__ */ jsx90("div", { className: "text-center text-sm text-gray-600 dark:text-gray-400 mb-4", children: formatTime(selectedTime.hours, selectedTime.minutes) }),
|
|
2569
|
+
/* @__PURE__ */ jsx90(
|
|
2306
2570
|
"button",
|
|
2307
2571
|
{
|
|
2308
2572
|
onClick: handleDone,
|
|
@@ -2314,22 +2578,22 @@ var DateTimePicker = ({
|
|
|
2314
2578
|
]
|
|
2315
2579
|
}
|
|
2316
2580
|
) : null;
|
|
2317
|
-
return /* @__PURE__ */
|
|
2318
|
-
label && /* @__PURE__ */
|
|
2319
|
-
/* @__PURE__ */
|
|
2581
|
+
return /* @__PURE__ */ jsxs22("div", { className, children: [
|
|
2582
|
+
label && /* @__PURE__ */ jsx90("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
2583
|
+
/* @__PURE__ */ jsxs22(
|
|
2320
2584
|
"div",
|
|
2321
2585
|
{
|
|
2322
2586
|
ref: inputRef,
|
|
2323
2587
|
onClick: () => !disabled && setIsOpen(!isOpen),
|
|
2324
2588
|
className: `${baseStyles} ${errorStyles} ${disabledStyles} flex items-center justify-between`.trim(),
|
|
2325
2589
|
children: [
|
|
2326
|
-
/* @__PURE__ */
|
|
2327
|
-
/* @__PURE__ */
|
|
2590
|
+
/* @__PURE__ */ jsx90("span", { className: !value ? "text-gray-500 dark:text-gray-400" : "", children: value ? formatDateTime(value) : placeholder }),
|
|
2591
|
+
/* @__PURE__ */ jsx90("svg", { className: "w-5 h-5 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx90("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" }) })
|
|
2328
2592
|
]
|
|
2329
2593
|
}
|
|
2330
2594
|
),
|
|
2331
|
-
error && /* @__PURE__ */
|
|
2332
|
-
helperText && !error && /* @__PURE__ */
|
|
2595
|
+
error && /* @__PURE__ */ jsx90("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
2596
|
+
helperText && !error && /* @__PURE__ */ jsx90("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText }),
|
|
2333
2597
|
mounted && createPortal3(picker, document.body)
|
|
2334
2598
|
] });
|
|
2335
2599
|
};
|
|
@@ -2337,7 +2601,7 @@ DateTimePicker.displayName = "DateTimePicker";
|
|
|
2337
2601
|
|
|
2338
2602
|
// src/components/Calendar.tsx
|
|
2339
2603
|
import { useState as useState10 } from "react";
|
|
2340
|
-
import { jsx as
|
|
2604
|
+
import { jsx as jsx91, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2341
2605
|
var DAYS3 = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
2342
2606
|
var MONTHS3 = [
|
|
2343
2607
|
"January",
|
|
@@ -2413,24 +2677,24 @@ var Calendar = ({
|
|
|
2413
2677
|
setCurrentDate(today);
|
|
2414
2678
|
onChange?.(today);
|
|
2415
2679
|
};
|
|
2416
|
-
return /* @__PURE__ */
|
|
2417
|
-
/* @__PURE__ */
|
|
2418
|
-
/* @__PURE__ */
|
|
2680
|
+
return /* @__PURE__ */ jsxs23("div", { className: `bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 p-4 ${className}`, children: [
|
|
2681
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex items-center justify-between mb-4", children: [
|
|
2682
|
+
/* @__PURE__ */ jsx91(
|
|
2419
2683
|
"button",
|
|
2420
2684
|
{
|
|
2421
2685
|
onClick: handlePrevMonth,
|
|
2422
2686
|
className: "p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors",
|
|
2423
2687
|
"aria-label": "Previous month",
|
|
2424
|
-
children: /* @__PURE__ */
|
|
2688
|
+
children: /* @__PURE__ */ jsx91("svg", { className: "w-5 h-5 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx91("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) })
|
|
2425
2689
|
}
|
|
2426
2690
|
),
|
|
2427
|
-
/* @__PURE__ */
|
|
2428
|
-
/* @__PURE__ */
|
|
2691
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-2", children: [
|
|
2692
|
+
/* @__PURE__ */ jsxs23("h2", { className: "text-lg font-semibold text-gray-900 dark:text-gray-100", children: [
|
|
2429
2693
|
MONTHS3[month],
|
|
2430
2694
|
" ",
|
|
2431
2695
|
year
|
|
2432
2696
|
] }),
|
|
2433
|
-
/* @__PURE__ */
|
|
2697
|
+
/* @__PURE__ */ jsx91(
|
|
2434
2698
|
"button",
|
|
2435
2699
|
{
|
|
2436
2700
|
onClick: handleToday,
|
|
@@ -2439,17 +2703,17 @@ var Calendar = ({
|
|
|
2439
2703
|
}
|
|
2440
2704
|
)
|
|
2441
2705
|
] }),
|
|
2442
|
-
/* @__PURE__ */
|
|
2706
|
+
/* @__PURE__ */ jsx91(
|
|
2443
2707
|
"button",
|
|
2444
2708
|
{
|
|
2445
2709
|
onClick: handleNextMonth,
|
|
2446
2710
|
className: "p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors",
|
|
2447
2711
|
"aria-label": "Next month",
|
|
2448
|
-
children: /* @__PURE__ */
|
|
2712
|
+
children: /* @__PURE__ */ jsx91("svg", { className: "w-5 h-5 text-gray-600 dark:text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx91("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
|
|
2449
2713
|
}
|
|
2450
2714
|
)
|
|
2451
2715
|
] }),
|
|
2452
|
-
/* @__PURE__ */
|
|
2716
|
+
/* @__PURE__ */ jsx91("div", { className: "grid grid-cols-7 gap-1 mb-2", children: DAYS3.map((day) => /* @__PURE__ */ jsx91(
|
|
2453
2717
|
"div",
|
|
2454
2718
|
{
|
|
2455
2719
|
className: "text-center text-xs font-semibold text-gray-600 dark:text-gray-400 py-2",
|
|
@@ -2457,13 +2721,13 @@ var Calendar = ({
|
|
|
2457
2721
|
},
|
|
2458
2722
|
day
|
|
2459
2723
|
)) }),
|
|
2460
|
-
/* @__PURE__ */
|
|
2461
|
-
if (!date) return /* @__PURE__ */
|
|
2724
|
+
/* @__PURE__ */ jsx91("div", { className: "grid grid-cols-7 gap-1", children: calendarDays.map((date, index) => {
|
|
2725
|
+
if (!date) return /* @__PURE__ */ jsx91("div", {}, index);
|
|
2462
2726
|
const isCurrentMonthDay = isCurrentMonth(date);
|
|
2463
2727
|
const isTodayDay = isToday(date);
|
|
2464
2728
|
const isSelectedDay = isSelected(date);
|
|
2465
2729
|
const isDisabledDay = isDisabled(date);
|
|
2466
|
-
return /* @__PURE__ */
|
|
2730
|
+
return /* @__PURE__ */ jsx91(
|
|
2467
2731
|
"button",
|
|
2468
2732
|
{
|
|
2469
2733
|
onClick: () => handleDateClick(date),
|
|
@@ -2486,7 +2750,7 @@ var Calendar = ({
|
|
|
2486
2750
|
|
|
2487
2751
|
// src/components/Radio.tsx
|
|
2488
2752
|
import React17 from "react";
|
|
2489
|
-
import { jsx as
|
|
2753
|
+
import { jsx as jsx92, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2490
2754
|
var Radio = ({
|
|
2491
2755
|
name,
|
|
2492
2756
|
options,
|
|
@@ -2505,18 +2769,18 @@ var Radio = ({
|
|
|
2505
2769
|
onChange?.(optionValue);
|
|
2506
2770
|
};
|
|
2507
2771
|
const containerClass = orientation === "horizontal" ? "flex flex-wrap gap-4" : "flex flex-col gap-2";
|
|
2508
|
-
return /* @__PURE__ */
|
|
2772
|
+
return /* @__PURE__ */ jsx92("div", { className: `${containerClass} ${className}`, role: "radiogroup", children: options.map((option) => {
|
|
2509
2773
|
const isDisabled = disabled || option.disabled;
|
|
2510
2774
|
const isChecked = value === option.value;
|
|
2511
2775
|
const id = `${name}-${option.value}`;
|
|
2512
|
-
return /* @__PURE__ */
|
|
2776
|
+
return /* @__PURE__ */ jsxs24(
|
|
2513
2777
|
"label",
|
|
2514
2778
|
{
|
|
2515
2779
|
htmlFor: id,
|
|
2516
2780
|
className: `flex items-center gap-2 cursor-pointer group ${isDisabled ? "opacity-50 cursor-not-allowed" : ""}`,
|
|
2517
2781
|
children: [
|
|
2518
|
-
/* @__PURE__ */
|
|
2519
|
-
/* @__PURE__ */
|
|
2782
|
+
/* @__PURE__ */ jsxs24("div", { className: "relative inline-flex items-center", children: [
|
|
2783
|
+
/* @__PURE__ */ jsx92(
|
|
2520
2784
|
"input",
|
|
2521
2785
|
{
|
|
2522
2786
|
type: "radio",
|
|
@@ -2529,14 +2793,14 @@ var Radio = ({
|
|
|
2529
2793
|
className: "sr-only peer"
|
|
2530
2794
|
}
|
|
2531
2795
|
),
|
|
2532
|
-
/* @__PURE__ */
|
|
2796
|
+
/* @__PURE__ */ jsx92("div", { className: `w-4 h-4 rounded-full border-2 transition-all duration-200 flex items-center justify-center
|
|
2533
2797
|
border-gray-300 dark:border-gray-600
|
|
2534
2798
|
${isDisabled ? "bg-gray-100 dark:bg-gray-800" : "peer-hover:border-gray-400 dark:peer-hover:border-gray-500"}
|
|
2535
2799
|
${isChecked ? "border-blue-600 bg-white dark:bg-gray-900" : ""}
|
|
2536
2800
|
peer-focus:ring-2 peer-focus:ring-blue-500 peer-focus:ring-offset-2
|
|
2537
|
-
`, children: /* @__PURE__ */
|
|
2801
|
+
`, children: /* @__PURE__ */ jsx92("div", { className: `w-2 h-2 rounded-full bg-blue-600 transition-all duration-200 ${isChecked ? "scale-100" : "scale-0"}` }) })
|
|
2538
2802
|
] }),
|
|
2539
|
-
/* @__PURE__ */
|
|
2803
|
+
/* @__PURE__ */ jsx92("span", { className: `text-sm font-medium text-gray-900 dark:text-gray-300 ${!isDisabled && "group-hover:text-gray-700 dark:group-hover:text-gray-100"}`, children: option.label })
|
|
2540
2804
|
]
|
|
2541
2805
|
},
|
|
2542
2806
|
option.value
|
|
@@ -2545,7 +2809,7 @@ var Radio = ({
|
|
|
2545
2809
|
};
|
|
2546
2810
|
|
|
2547
2811
|
// src/components/ProgressBar.tsx
|
|
2548
|
-
import { jsx as
|
|
2812
|
+
import { jsx as jsx93, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2549
2813
|
var ProgressBar = ({
|
|
2550
2814
|
value,
|
|
2551
2815
|
max = 100,
|
|
@@ -2567,15 +2831,15 @@ var ProgressBar = ({
|
|
|
2567
2831
|
warning: "bg-yellow-500 dark:bg-yellow-400",
|
|
2568
2832
|
danger: "bg-red-600 dark:bg-red-500"
|
|
2569
2833
|
};
|
|
2570
|
-
return /* @__PURE__ */
|
|
2571
|
-
(showLabel || label) && /* @__PURE__ */
|
|
2572
|
-
label && /* @__PURE__ */
|
|
2573
|
-
showLabel && /* @__PURE__ */
|
|
2834
|
+
return /* @__PURE__ */ jsxs25("div", { className: `w-full ${className}`, children: [
|
|
2835
|
+
(showLabel || label) && /* @__PURE__ */ jsxs25("div", { className: "flex justify-between items-center mb-1", children: [
|
|
2836
|
+
label && /* @__PURE__ */ jsx93("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label }),
|
|
2837
|
+
showLabel && /* @__PURE__ */ jsxs25("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: [
|
|
2574
2838
|
Math.round(percentage),
|
|
2575
2839
|
"%"
|
|
2576
2840
|
] })
|
|
2577
2841
|
] }),
|
|
2578
|
-
/* @__PURE__ */
|
|
2842
|
+
/* @__PURE__ */ jsx93(
|
|
2579
2843
|
"div",
|
|
2580
2844
|
{
|
|
2581
2845
|
className: `w-full bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden ${sizeClasses7[size]}`,
|
|
@@ -2583,7 +2847,7 @@ var ProgressBar = ({
|
|
|
2583
2847
|
"aria-valuenow": value,
|
|
2584
2848
|
"aria-valuemin": 0,
|
|
2585
2849
|
"aria-valuemax": max,
|
|
2586
|
-
children: /* @__PURE__ */
|
|
2850
|
+
children: /* @__PURE__ */ jsx93(
|
|
2587
2851
|
"div",
|
|
2588
2852
|
{
|
|
2589
2853
|
className: `${sizeClasses7[size]} ${variantClasses[variant]} rounded-full transition-all duration-300 ease-out`,
|
|
@@ -2597,7 +2861,7 @@ var ProgressBar = ({
|
|
|
2597
2861
|
|
|
2598
2862
|
// src/components/Slider.tsx
|
|
2599
2863
|
import React18, { useRef as useRef6 } from "react";
|
|
2600
|
-
import { jsx as
|
|
2864
|
+
import { jsx as jsx94, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2601
2865
|
var Slider = ({
|
|
2602
2866
|
value: controlledValue,
|
|
2603
2867
|
defaultValue = 50,
|
|
@@ -2664,18 +2928,18 @@ var Slider = ({
|
|
|
2664
2928
|
const minPercentage = (rangeValue[0] - min) / (max - min) * 100;
|
|
2665
2929
|
const maxPercentage = (rangeValue[1] - min) / (max - min) * 100;
|
|
2666
2930
|
if (range) {
|
|
2667
|
-
return /* @__PURE__ */
|
|
2668
|
-
(label || showValue) && /* @__PURE__ */
|
|
2669
|
-
label && /* @__PURE__ */
|
|
2670
|
-
showValue && /* @__PURE__ */
|
|
2931
|
+
return /* @__PURE__ */ jsxs26("div", { className: `w-full ${className}`, children: [
|
|
2932
|
+
(label || showValue) && /* @__PURE__ */ jsxs26("div", { className: "flex justify-between items-center mb-2", children: [
|
|
2933
|
+
label && /* @__PURE__ */ jsx94("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label }),
|
|
2934
|
+
showValue && /* @__PURE__ */ jsxs26("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: [
|
|
2671
2935
|
rangeValue[0],
|
|
2672
2936
|
" - ",
|
|
2673
2937
|
rangeValue[1]
|
|
2674
2938
|
] })
|
|
2675
2939
|
] }),
|
|
2676
|
-
/* @__PURE__ */
|
|
2677
|
-
/* @__PURE__ */
|
|
2678
|
-
/* @__PURE__ */
|
|
2940
|
+
/* @__PURE__ */ jsxs26("div", { className: "relative h-10 flex items-center", ref: trackRef, children: [
|
|
2941
|
+
/* @__PURE__ */ jsx94("div", { className: "absolute w-full h-2 bg-gray-200 dark:bg-gray-700 rounded-full" }),
|
|
2942
|
+
/* @__PURE__ */ jsx94(
|
|
2679
2943
|
"div",
|
|
2680
2944
|
{
|
|
2681
2945
|
className: "absolute h-2 bg-blue-600 dark:bg-blue-500 rounded-full pointer-events-none",
|
|
@@ -2685,7 +2949,7 @@ var Slider = ({
|
|
|
2685
2949
|
}
|
|
2686
2950
|
}
|
|
2687
2951
|
),
|
|
2688
|
-
/* @__PURE__ */
|
|
2952
|
+
/* @__PURE__ */ jsx94(
|
|
2689
2953
|
"div",
|
|
2690
2954
|
{
|
|
2691
2955
|
className: `absolute w-4 h-4 -ml-2 rounded-sm bg-white dark:bg-gray-800 border-2 border-blue-600 shadow-md cursor-pointer z-10
|
|
@@ -2701,7 +2965,7 @@ var Slider = ({
|
|
|
2701
2965
|
tabIndex: disabled ? -1 : 0
|
|
2702
2966
|
}
|
|
2703
2967
|
),
|
|
2704
|
-
/* @__PURE__ */
|
|
2968
|
+
/* @__PURE__ */ jsx94(
|
|
2705
2969
|
"div",
|
|
2706
2970
|
{
|
|
2707
2971
|
className: `absolute w-4 h-4 -ml-2 rounded-sm bg-white dark:bg-gray-800 border-2 border-blue-600 shadow-md cursor-pointer z-10
|
|
@@ -2720,21 +2984,21 @@ var Slider = ({
|
|
|
2720
2984
|
] })
|
|
2721
2985
|
] });
|
|
2722
2986
|
}
|
|
2723
|
-
return /* @__PURE__ */
|
|
2724
|
-
(label || showValue) && /* @__PURE__ */
|
|
2725
|
-
label && /* @__PURE__ */
|
|
2726
|
-
showValue && /* @__PURE__ */
|
|
2987
|
+
return /* @__PURE__ */ jsxs26("div", { className: `w-full ${className}`, children: [
|
|
2988
|
+
(label || showValue) && /* @__PURE__ */ jsxs26("div", { className: "flex justify-between items-center mb-2", children: [
|
|
2989
|
+
label && /* @__PURE__ */ jsx94("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label }),
|
|
2990
|
+
showValue && /* @__PURE__ */ jsx94("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: value })
|
|
2727
2991
|
] }),
|
|
2728
|
-
/* @__PURE__ */
|
|
2729
|
-
/* @__PURE__ */
|
|
2730
|
-
/* @__PURE__ */
|
|
2992
|
+
/* @__PURE__ */ jsxs26("div", { className: "relative h-10 flex items-center", children: [
|
|
2993
|
+
/* @__PURE__ */ jsx94("div", { className: "absolute w-full h-2 bg-gray-200 dark:bg-gray-700 rounded-full" }),
|
|
2994
|
+
/* @__PURE__ */ jsx94(
|
|
2731
2995
|
"div",
|
|
2732
2996
|
{
|
|
2733
2997
|
className: "absolute h-2 bg-blue-600 dark:bg-blue-500 rounded-full pointer-events-none",
|
|
2734
2998
|
style: { width: `${percentage}%` }
|
|
2735
2999
|
}
|
|
2736
3000
|
),
|
|
2737
|
-
/* @__PURE__ */
|
|
3001
|
+
/* @__PURE__ */ jsx94(
|
|
2738
3002
|
"div",
|
|
2739
3003
|
{
|
|
2740
3004
|
className: `absolute w-4 h-4 -ml-2 rounded-sm bg-white dark:bg-gray-800 border-2 border-blue-600 shadow-md pointer-events-none z-10
|
|
@@ -2743,7 +3007,7 @@ var Slider = ({
|
|
|
2743
3007
|
style: { left: `${percentage}%` }
|
|
2744
3008
|
}
|
|
2745
3009
|
),
|
|
2746
|
-
/* @__PURE__ */
|
|
3010
|
+
/* @__PURE__ */ jsx94(
|
|
2747
3011
|
"input",
|
|
2748
3012
|
{
|
|
2749
3013
|
type: "range",
|
|
@@ -2766,7 +3030,7 @@ var Slider = ({
|
|
|
2766
3030
|
|
|
2767
3031
|
// src/components/Avatar.tsx
|
|
2768
3032
|
import React19 from "react";
|
|
2769
|
-
import { jsx as
|
|
3033
|
+
import { jsx as jsx95 } from "react/jsx-runtime";
|
|
2770
3034
|
var Avatar = ({
|
|
2771
3035
|
src,
|
|
2772
3036
|
alt,
|
|
@@ -2794,11 +3058,11 @@ var Avatar = ({
|
|
|
2794
3058
|
};
|
|
2795
3059
|
const showImage = src && !imageError;
|
|
2796
3060
|
const showInitials = !showImage && name;
|
|
2797
|
-
return /* @__PURE__ */
|
|
3061
|
+
return /* @__PURE__ */ jsx95(
|
|
2798
3062
|
"div",
|
|
2799
3063
|
{
|
|
2800
3064
|
className: `${sizeClasses7[size]} ${shapeClass} flex items-center justify-center overflow-hidden ${showImage ? "bg-gray-200 dark:bg-gray-700" : `${fallbackColor} text-white`} ${className}`,
|
|
2801
|
-
children: showImage ? /* @__PURE__ */
|
|
3065
|
+
children: showImage ? /* @__PURE__ */ jsx95(
|
|
2802
3066
|
"img",
|
|
2803
3067
|
{
|
|
2804
3068
|
src,
|
|
@@ -2806,13 +3070,13 @@ var Avatar = ({
|
|
|
2806
3070
|
className: "w-full h-full object-cover",
|
|
2807
3071
|
onError: () => setImageError(true)
|
|
2808
3072
|
}
|
|
2809
|
-
) : showInitials ? /* @__PURE__ */
|
|
3073
|
+
) : showInitials ? /* @__PURE__ */ jsx95("span", { className: "font-semibold select-none", children: getInitials(name) }) : /* @__PURE__ */ jsx95(
|
|
2810
3074
|
"svg",
|
|
2811
3075
|
{
|
|
2812
3076
|
className: "w-full h-full text-gray-400 dark:text-gray-600",
|
|
2813
3077
|
fill: "currentColor",
|
|
2814
3078
|
viewBox: "0 0 24 24",
|
|
2815
|
-
children: /* @__PURE__ */
|
|
3079
|
+
children: /* @__PURE__ */ jsx95("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" })
|
|
2816
3080
|
}
|
|
2817
3081
|
)
|
|
2818
3082
|
}
|
|
@@ -2820,7 +3084,7 @@ var Avatar = ({
|
|
|
2820
3084
|
};
|
|
2821
3085
|
|
|
2822
3086
|
// src/components/Textarea.tsx
|
|
2823
|
-
import { jsx as
|
|
3087
|
+
import { jsx as jsx96, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
2824
3088
|
var Textarea = ({
|
|
2825
3089
|
label,
|
|
2826
3090
|
error,
|
|
@@ -2847,9 +3111,9 @@ var Textarea = ({
|
|
|
2847
3111
|
bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100
|
|
2848
3112
|
placeholder:text-gray-500 dark:placeholder:text-gray-400
|
|
2849
3113
|
disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-gray-50 dark:disabled:bg-gray-900`;
|
|
2850
|
-
return /* @__PURE__ */
|
|
2851
|
-
label && /* @__PURE__ */
|
|
2852
|
-
/* @__PURE__ */
|
|
3114
|
+
return /* @__PURE__ */ jsxs27("div", { className: `w-full ${className}`, children: [
|
|
3115
|
+
label && /* @__PURE__ */ jsx96("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
3116
|
+
/* @__PURE__ */ jsx96(
|
|
2853
3117
|
"textarea",
|
|
2854
3118
|
{
|
|
2855
3119
|
className: `${baseClasses} ${sizeClasses7[size]} ${resizeClasses[resize]}`,
|
|
@@ -2857,14 +3121,14 @@ var Textarea = ({
|
|
|
2857
3121
|
...props
|
|
2858
3122
|
}
|
|
2859
3123
|
),
|
|
2860
|
-
error && /* @__PURE__ */
|
|
2861
|
-
helperText && !error && /* @__PURE__ */
|
|
3124
|
+
error && /* @__PURE__ */ jsx96("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
3125
|
+
helperText && !error && /* @__PURE__ */ jsx96("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
2862
3126
|
] });
|
|
2863
3127
|
};
|
|
2864
3128
|
|
|
2865
3129
|
// src/components/RichTextEditor.tsx
|
|
2866
3130
|
import { useRef as useRef7, useCallback, useState as useState12, useEffect as useEffect8, useLayoutEffect } from "react";
|
|
2867
|
-
import { jsx as
|
|
3131
|
+
import { jsx as jsx97, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
2868
3132
|
var RichTextEditor = ({
|
|
2869
3133
|
value = "",
|
|
2870
3134
|
onChange,
|
|
@@ -3058,11 +3322,11 @@ var RichTextEditor = ({
|
|
|
3058
3322
|
const editorBaseClass = themeName === "minimalistic" ? "bg-transparent border-2 border-white text-white placeholder:text-gray-500" : "bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 text-gray-900 dark:text-gray-100";
|
|
3059
3323
|
const focusClass = isFocused && !disabled ? themeName === "minimalistic" ? "border-white" : "border-blue-500 dark:border-blue-400 ring-2 ring-blue-500/20" : "";
|
|
3060
3324
|
const errorClass = error ? "border-red-500 dark:border-red-400" : "";
|
|
3061
|
-
return /* @__PURE__ */
|
|
3062
|
-
label && /* @__PURE__ */
|
|
3063
|
-
/* @__PURE__ */
|
|
3064
|
-
/* @__PURE__ */
|
|
3065
|
-
/* @__PURE__ */
|
|
3325
|
+
return /* @__PURE__ */ jsxs28("div", { className: `w-full ${className}`, children: [
|
|
3326
|
+
label && /* @__PURE__ */ jsx97("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2", children: label }),
|
|
3327
|
+
/* @__PURE__ */ jsxs28("div", { className: `rounded-t-lg border-b ${editorBaseClass} p-2 flex flex-wrap gap-1`, children: [
|
|
3328
|
+
/* @__PURE__ */ jsxs28("div", { className: "flex gap-1", children: [
|
|
3329
|
+
/* @__PURE__ */ jsx97(
|
|
3066
3330
|
"button",
|
|
3067
3331
|
{
|
|
3068
3332
|
type: "button",
|
|
@@ -3070,10 +3334,10 @@ var RichTextEditor = ({
|
|
|
3070
3334
|
className: getButtonClass(activeFormats.has("bold")),
|
|
3071
3335
|
disabled,
|
|
3072
3336
|
title: "Bold (Ctrl+B)",
|
|
3073
|
-
children: /* @__PURE__ */
|
|
3337
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx97("path", { d: "M12.78 4c1.09 0 2.04.38 2.84 1.14.8.76 1.2 1.74 1.2 2.94 0 .9-.25 1.68-.76 2.36-.51.68-1.2 1.14-2.04 1.38v.08c1.06.22 1.89.7 2.48 1.44.59.74.88 1.64.88 2.7 0 1.34-.47 2.43-1.41 3.27C14.96 19.77 13.74 20 12.24 20H4V4h8.78zm-.66 7.14c.62 0 1.12-.18 1.5-.54.38-.36.57-.84.57-1.44 0-.6-.19-1.08-.57-1.44-.38-.36-.88-.54-1.5-.54H7.5v3.96h4.62zm.24 6.86c.68 0 1.24-.19 1.68-.57.44-.38.66-.9.66-1.56 0-.66-.22-1.18-.66-1.56-.44-.38-1-.57-1.68-.57H7.5v4.26h4.86z" }) })
|
|
3074
3338
|
}
|
|
3075
3339
|
),
|
|
3076
|
-
/* @__PURE__ */
|
|
3340
|
+
/* @__PURE__ */ jsx97(
|
|
3077
3341
|
"button",
|
|
3078
3342
|
{
|
|
3079
3343
|
type: "button",
|
|
@@ -3081,10 +3345,10 @@ var RichTextEditor = ({
|
|
|
3081
3345
|
className: getButtonClass(activeFormats.has("italic")),
|
|
3082
3346
|
disabled,
|
|
3083
3347
|
title: "Italic (Ctrl+I)",
|
|
3084
|
-
children: /* @__PURE__ */
|
|
3348
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx97("path", { d: "M11.59 4H16v2h-1.71l-3.58 8H13v2H8v-2h1.71l3.58-8H11.59V4z" }) })
|
|
3085
3349
|
}
|
|
3086
3350
|
),
|
|
3087
|
-
/* @__PURE__ */
|
|
3351
|
+
/* @__PURE__ */ jsx97(
|
|
3088
3352
|
"button",
|
|
3089
3353
|
{
|
|
3090
3354
|
type: "button",
|
|
@@ -3092,10 +3356,10 @@ var RichTextEditor = ({
|
|
|
3092
3356
|
className: getButtonClass(activeFormats.has("underline")),
|
|
3093
3357
|
disabled,
|
|
3094
3358
|
title: "Underline (Ctrl+U)",
|
|
3095
|
-
children: /* @__PURE__ */
|
|
3359
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx97("path", { d: "M10 16c-2.21 0-4-1.79-4-4V4h2v8c0 1.1.9 2 2 2s2-.9 2-2V4h2v8c0 2.21-1.79 4-4 4zM4 18h12v2H4v-2z" }) })
|
|
3096
3360
|
}
|
|
3097
3361
|
),
|
|
3098
|
-
/* @__PURE__ */
|
|
3362
|
+
/* @__PURE__ */ jsx97(
|
|
3099
3363
|
"button",
|
|
3100
3364
|
{
|
|
3101
3365
|
type: "button",
|
|
@@ -3103,13 +3367,13 @@ var RichTextEditor = ({
|
|
|
3103
3367
|
className: getButtonClass(activeFormats.has("strikeThrough")),
|
|
3104
3368
|
disabled,
|
|
3105
3369
|
title: "Strikethrough",
|
|
3106
|
-
children: /* @__PURE__ */
|
|
3370
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx97("path", { d: "M10 4c-2 0-3.5.5-4.5 1.5S4 7.5 4 9h2c0-.7.2-1.2.6-1.6.4-.4 1-.6 1.9-.6.8 0 1.4.2 1.8.5.4.3.7.8.7 1.4 0 .5-.2.9-.5 1.2-.3.3-.9.6-1.8.9l-.7.2c-1.2.3-2.1.7-2.7 1.2C4.2 12.7 4 13.5 4 14.5c0 1.1.4 2 1.1 2.6.7.6 1.7.9 3 .9 2.1 0 3.6-.5 4.6-1.5.9-1 1.3-2.3 1.3-3.8h-2c0 .9-.2 1.6-.7 2.1-.5.5-1.2.7-2.2.7-.8 0-1.4-.2-1.8-.5-.4-.3-.6-.8-.6-1.4 0-.5.2-.9.5-1.2.3-.3.9-.6 1.8-.9l.7-.2c1.2-.3 2.1-.7 2.7-1.2.6-.5.9-1.3.9-2.3 0-1.2-.4-2.1-1.2-2.8-.8-.7-1.9-1-3.3-1zM2 10h16v1H2v-1z" }) })
|
|
3107
3371
|
}
|
|
3108
3372
|
)
|
|
3109
3373
|
] }),
|
|
3110
|
-
/* @__PURE__ */
|
|
3111
|
-
/* @__PURE__ */
|
|
3112
|
-
/* @__PURE__ */
|
|
3374
|
+
/* @__PURE__ */ jsx97("div", { className: "w-px bg-gray-300 dark:bg-gray-600 mx-1" }),
|
|
3375
|
+
/* @__PURE__ */ jsxs28("div", { className: "flex gap-1", children: [
|
|
3376
|
+
/* @__PURE__ */ jsx97(
|
|
3113
3377
|
"button",
|
|
3114
3378
|
{
|
|
3115
3379
|
type: "button",
|
|
@@ -3117,10 +3381,10 @@ var RichTextEditor = ({
|
|
|
3117
3381
|
className: getButtonClass(activeFormats.has("h1")),
|
|
3118
3382
|
disabled,
|
|
3119
3383
|
title: "Heading 1",
|
|
3120
|
-
children: /* @__PURE__ */
|
|
3384
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx97("text", { x: "2", y: "16", fontSize: "14", fontWeight: "bold", children: "H1" }) })
|
|
3121
3385
|
}
|
|
3122
3386
|
),
|
|
3123
|
-
/* @__PURE__ */
|
|
3387
|
+
/* @__PURE__ */ jsx97(
|
|
3124
3388
|
"button",
|
|
3125
3389
|
{
|
|
3126
3390
|
type: "button",
|
|
@@ -3128,10 +3392,10 @@ var RichTextEditor = ({
|
|
|
3128
3392
|
className: getButtonClass(activeFormats.has("h2")),
|
|
3129
3393
|
disabled,
|
|
3130
3394
|
title: "Heading 2",
|
|
3131
|
-
children: /* @__PURE__ */
|
|
3395
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx97("text", { x: "2", y: "16", fontSize: "14", fontWeight: "bold", children: "H2" }) })
|
|
3132
3396
|
}
|
|
3133
3397
|
),
|
|
3134
|
-
/* @__PURE__ */
|
|
3398
|
+
/* @__PURE__ */ jsx97(
|
|
3135
3399
|
"button",
|
|
3136
3400
|
{
|
|
3137
3401
|
type: "button",
|
|
@@ -3139,13 +3403,13 @@ var RichTextEditor = ({
|
|
|
3139
3403
|
className: getButtonClass(activeFormats.has("h3")),
|
|
3140
3404
|
disabled,
|
|
3141
3405
|
title: "Heading 3",
|
|
3142
|
-
children: /* @__PURE__ */
|
|
3406
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx97("text", { x: "2", y: "16", fontSize: "14", fontWeight: "bold", children: "H3" }) })
|
|
3143
3407
|
}
|
|
3144
3408
|
)
|
|
3145
3409
|
] }),
|
|
3146
|
-
/* @__PURE__ */
|
|
3147
|
-
/* @__PURE__ */
|
|
3148
|
-
/* @__PURE__ */
|
|
3410
|
+
/* @__PURE__ */ jsx97("div", { className: "w-px bg-gray-300 dark:bg-gray-600 mx-1" }),
|
|
3411
|
+
/* @__PURE__ */ jsxs28("div", { className: "flex gap-1", children: [
|
|
3412
|
+
/* @__PURE__ */ jsx97(
|
|
3149
3413
|
"button",
|
|
3150
3414
|
{
|
|
3151
3415
|
type: "button",
|
|
@@ -3153,10 +3417,10 @@ var RichTextEditor = ({
|
|
|
3153
3417
|
className: getButtonClass(activeFormats.has("ul")),
|
|
3154
3418
|
disabled,
|
|
3155
3419
|
title: "Bullet List",
|
|
3156
|
-
children: /* @__PURE__ */
|
|
3420
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx97("path", { d: "M4 4h2v2H4V4zm4 0h8v2H8V4zM4 8h2v2H4V8zm4 0h8v2H8V8zm-4 4h2v2H4v-2zm4 0h8v2H8v-2zm-4 4h2v2H4v-2zm4 0h8v2H8v-2z" }) })
|
|
3157
3421
|
}
|
|
3158
3422
|
),
|
|
3159
|
-
/* @__PURE__ */
|
|
3423
|
+
/* @__PURE__ */ jsx97(
|
|
3160
3424
|
"button",
|
|
3161
3425
|
{
|
|
3162
3426
|
type: "button",
|
|
@@ -3164,13 +3428,13 @@ var RichTextEditor = ({
|
|
|
3164
3428
|
className: getButtonClass(activeFormats.has("ol")),
|
|
3165
3429
|
disabled,
|
|
3166
3430
|
title: "Numbered List",
|
|
3167
|
-
children: /* @__PURE__ */
|
|
3431
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx97("path", { d: "M4 4h1v3H4V4zm0 4h1v1H3V8h2v1H4zm1 2H3v1h2v1H3v1h2v-3zM8 4h8v2H8V4zm0 4h8v2H8V8zm0 4h8v2H8v-2zm0 4h8v2H8v-2z" }) })
|
|
3168
3432
|
}
|
|
3169
3433
|
)
|
|
3170
3434
|
] }),
|
|
3171
|
-
/* @__PURE__ */
|
|
3172
|
-
/* @__PURE__ */
|
|
3173
|
-
/* @__PURE__ */
|
|
3435
|
+
/* @__PURE__ */ jsx97("div", { className: "w-px bg-gray-300 dark:bg-gray-600 mx-1" }),
|
|
3436
|
+
/* @__PURE__ */ jsxs28("div", { className: "flex gap-1", children: [
|
|
3437
|
+
/* @__PURE__ */ jsx97(
|
|
3174
3438
|
"button",
|
|
3175
3439
|
{
|
|
3176
3440
|
type: "button",
|
|
@@ -3178,10 +3442,10 @@ var RichTextEditor = ({
|
|
|
3178
3442
|
className: getButtonClass(false),
|
|
3179
3443
|
disabled,
|
|
3180
3444
|
title: "Insert Link",
|
|
3181
|
-
children: /* @__PURE__ */
|
|
3445
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx97("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1" }) })
|
|
3182
3446
|
}
|
|
3183
3447
|
),
|
|
3184
|
-
/* @__PURE__ */
|
|
3448
|
+
/* @__PURE__ */ jsx97(
|
|
3185
3449
|
"button",
|
|
3186
3450
|
{
|
|
3187
3451
|
type: "button",
|
|
@@ -3189,10 +3453,10 @@ var RichTextEditor = ({
|
|
|
3189
3453
|
className: getButtonClass(false),
|
|
3190
3454
|
disabled,
|
|
3191
3455
|
title: "Insert Image/Video",
|
|
3192
|
-
children: /* @__PURE__ */
|
|
3456
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx97("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" }) })
|
|
3193
3457
|
}
|
|
3194
3458
|
),
|
|
3195
|
-
/* @__PURE__ */
|
|
3459
|
+
/* @__PURE__ */ jsx97(
|
|
3196
3460
|
"button",
|
|
3197
3461
|
{
|
|
3198
3462
|
type: "button",
|
|
@@ -3200,12 +3464,12 @@ var RichTextEditor = ({
|
|
|
3200
3464
|
className: getButtonClass(false),
|
|
3201
3465
|
disabled,
|
|
3202
3466
|
title: "Code",
|
|
3203
|
-
children: /* @__PURE__ */
|
|
3467
|
+
children: /* @__PURE__ */ jsx97("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx97("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" }) })
|
|
3204
3468
|
}
|
|
3205
3469
|
)
|
|
3206
3470
|
] })
|
|
3207
3471
|
] }),
|
|
3208
|
-
/* @__PURE__ */
|
|
3472
|
+
/* @__PURE__ */ jsx97(
|
|
3209
3473
|
"div",
|
|
3210
3474
|
{
|
|
3211
3475
|
ref: editorRef,
|
|
@@ -3230,9 +3494,9 @@ var RichTextEditor = ({
|
|
|
3230
3494
|
suppressContentEditableWarning: true
|
|
3231
3495
|
}
|
|
3232
3496
|
),
|
|
3233
|
-
error && /* @__PURE__ */
|
|
3234
|
-
helperText && !error && /* @__PURE__ */
|
|
3235
|
-
/* @__PURE__ */
|
|
3497
|
+
error && /* @__PURE__ */ jsx97("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
3498
|
+
helperText && !error && /* @__PURE__ */ jsx97("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText }),
|
|
3499
|
+
/* @__PURE__ */ jsx97(
|
|
3236
3500
|
Modal,
|
|
3237
3501
|
{
|
|
3238
3502
|
isOpen: showLinkModal,
|
|
@@ -3242,8 +3506,8 @@ var RichTextEditor = ({
|
|
|
3242
3506
|
},
|
|
3243
3507
|
title: "Insert Link",
|
|
3244
3508
|
size: "sm",
|
|
3245
|
-
children: /* @__PURE__ */
|
|
3246
|
-
/* @__PURE__ */
|
|
3509
|
+
children: /* @__PURE__ */ jsxs28("div", { className: "space-y-4", children: [
|
|
3510
|
+
/* @__PURE__ */ jsx97(
|
|
3247
3511
|
TextInput,
|
|
3248
3512
|
{
|
|
3249
3513
|
label: "URL",
|
|
@@ -3259,8 +3523,8 @@ var RichTextEditor = ({
|
|
|
3259
3523
|
}
|
|
3260
3524
|
}
|
|
3261
3525
|
),
|
|
3262
|
-
/* @__PURE__ */
|
|
3263
|
-
/* @__PURE__ */
|
|
3526
|
+
/* @__PURE__ */ jsxs28("div", { className: "flex gap-2 justify-end", children: [
|
|
3527
|
+
/* @__PURE__ */ jsx97(
|
|
3264
3528
|
Button,
|
|
3265
3529
|
{
|
|
3266
3530
|
variant: "secondary",
|
|
@@ -3271,7 +3535,7 @@ var RichTextEditor = ({
|
|
|
3271
3535
|
children: "Cancel"
|
|
3272
3536
|
}
|
|
3273
3537
|
),
|
|
3274
|
-
/* @__PURE__ */
|
|
3538
|
+
/* @__PURE__ */ jsx97(
|
|
3275
3539
|
Button,
|
|
3276
3540
|
{
|
|
3277
3541
|
variant: "primary",
|
|
@@ -3284,7 +3548,7 @@ var RichTextEditor = ({
|
|
|
3284
3548
|
] })
|
|
3285
3549
|
}
|
|
3286
3550
|
),
|
|
3287
|
-
/* @__PURE__ */
|
|
3551
|
+
/* @__PURE__ */ jsx97(
|
|
3288
3552
|
Modal,
|
|
3289
3553
|
{
|
|
3290
3554
|
isOpen: showImageModal,
|
|
@@ -3295,8 +3559,8 @@ var RichTextEditor = ({
|
|
|
3295
3559
|
},
|
|
3296
3560
|
title: "Insert Image",
|
|
3297
3561
|
size: "sm",
|
|
3298
|
-
children: /* @__PURE__ */
|
|
3299
|
-
/* @__PURE__ */
|
|
3562
|
+
children: /* @__PURE__ */ jsxs28("div", { className: "space-y-4", children: [
|
|
3563
|
+
/* @__PURE__ */ jsx97(
|
|
3300
3564
|
TextInput,
|
|
3301
3565
|
{
|
|
3302
3566
|
label: "Image URL",
|
|
@@ -3312,7 +3576,7 @@ var RichTextEditor = ({
|
|
|
3312
3576
|
}
|
|
3313
3577
|
}
|
|
3314
3578
|
),
|
|
3315
|
-
/* @__PURE__ */
|
|
3579
|
+
/* @__PURE__ */ jsx97(
|
|
3316
3580
|
TextInput,
|
|
3317
3581
|
{
|
|
3318
3582
|
label: "Alt Text (optional)",
|
|
@@ -3321,8 +3585,8 @@ var RichTextEditor = ({
|
|
|
3321
3585
|
placeholder: "Describe the image"
|
|
3322
3586
|
}
|
|
3323
3587
|
),
|
|
3324
|
-
/* @__PURE__ */
|
|
3325
|
-
/* @__PURE__ */
|
|
3588
|
+
/* @__PURE__ */ jsxs28("div", { className: "flex gap-2 justify-end", children: [
|
|
3589
|
+
/* @__PURE__ */ jsx97(
|
|
3326
3590
|
Button,
|
|
3327
3591
|
{
|
|
3328
3592
|
variant: "secondary",
|
|
@@ -3334,7 +3598,7 @@ var RichTextEditor = ({
|
|
|
3334
3598
|
children: "Cancel"
|
|
3335
3599
|
}
|
|
3336
3600
|
),
|
|
3337
|
-
/* @__PURE__ */
|
|
3601
|
+
/* @__PURE__ */ jsx97(
|
|
3338
3602
|
Button,
|
|
3339
3603
|
{
|
|
3340
3604
|
variant: "primary",
|
|
@@ -3352,7 +3616,7 @@ var RichTextEditor = ({
|
|
|
3352
3616
|
|
|
3353
3617
|
// src/components/Toast.tsx
|
|
3354
3618
|
import { createContext as createContext3, useContext as useContext3, useState as useState13, useCallback as useCallback2 } from "react";
|
|
3355
|
-
import { jsx as
|
|
3619
|
+
import { jsx as jsx98, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3356
3620
|
var ToastContext = createContext3(void 0);
|
|
3357
3621
|
var useToast = () => {
|
|
3358
3622
|
const context = useContext3(ToastContext);
|
|
@@ -3383,9 +3647,9 @@ var ToastProvider = ({ children, position = "top-right" }) => {
|
|
|
3383
3647
|
"top-center": "top-4 left-1/2 -translate-x-1/2",
|
|
3384
3648
|
"bottom-center": "bottom-4 left-1/2 -translate-x-1/2"
|
|
3385
3649
|
};
|
|
3386
|
-
return /* @__PURE__ */
|
|
3650
|
+
return /* @__PURE__ */ jsxs29(ToastContext.Provider, { value: { toasts, addToast, removeToast }, children: [
|
|
3387
3651
|
children,
|
|
3388
|
-
/* @__PURE__ */
|
|
3652
|
+
/* @__PURE__ */ jsx98("div", { className: `fixed ${positionClasses2[position]} z-50 flex flex-col gap-2 max-w-md`, children: toasts.map((toast2) => /* @__PURE__ */ jsx98(ToastItem, { toast: toast2, onClose: () => removeToast(toast2.id) }, toast2.id)) })
|
|
3389
3653
|
] });
|
|
3390
3654
|
};
|
|
3391
3655
|
var ToastItem = ({ toast: toast2, onClose }) => {
|
|
@@ -3396,27 +3660,27 @@ var ToastItem = ({ toast: toast2, onClose }) => {
|
|
|
3396
3660
|
info: "bg-blue-50 dark:bg-blue-900/30 border-blue-500 text-blue-800 dark:text-blue-200"
|
|
3397
3661
|
};
|
|
3398
3662
|
const typeIcons = {
|
|
3399
|
-
success: /* @__PURE__ */
|
|
3400
|
-
error: /* @__PURE__ */
|
|
3401
|
-
warning: /* @__PURE__ */
|
|
3402
|
-
info: /* @__PURE__ */
|
|
3663
|
+
success: /* @__PURE__ */ jsx98(CheckIcon, { size: "sm", className: "text-green-600 dark:text-green-400" }),
|
|
3664
|
+
error: /* @__PURE__ */ jsx98(CloseIcon, { size: "sm", className: "text-red-600 dark:text-red-400" }),
|
|
3665
|
+
warning: /* @__PURE__ */ jsx98("svg", { className: "w-4 h-4 text-yellow-600 dark:text-yellow-400", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx98("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" }) }),
|
|
3666
|
+
info: /* @__PURE__ */ jsx98("svg", { className: "w-4 h-4 text-blue-600 dark:text-blue-400", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx98("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" }) })
|
|
3403
3667
|
};
|
|
3404
3668
|
const type = toast2.type || "info";
|
|
3405
|
-
return /* @__PURE__ */
|
|
3669
|
+
return /* @__PURE__ */ jsxs29(
|
|
3406
3670
|
"div",
|
|
3407
3671
|
{
|
|
3408
3672
|
className: `flex items-start gap-3 p-4 rounded-lg border-l-4 shadow-lg backdrop-blur-sm ${typeStyles[type]} animate-slide-in`,
|
|
3409
3673
|
role: "alert",
|
|
3410
3674
|
children: [
|
|
3411
|
-
/* @__PURE__ */
|
|
3412
|
-
/* @__PURE__ */
|
|
3413
|
-
/* @__PURE__ */
|
|
3675
|
+
/* @__PURE__ */ jsx98("div", { className: "flex-shrink-0 mt-0.5", children: typeIcons[type] }),
|
|
3676
|
+
/* @__PURE__ */ jsx98("p", { className: "flex-1 text-sm font-medium", children: toast2.message }),
|
|
3677
|
+
/* @__PURE__ */ jsx98(
|
|
3414
3678
|
"button",
|
|
3415
3679
|
{
|
|
3416
3680
|
onClick: onClose,
|
|
3417
3681
|
className: "flex-shrink-0 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 transition-colors",
|
|
3418
3682
|
"aria-label": "Close",
|
|
3419
|
-
children: /* @__PURE__ */
|
|
3683
|
+
children: /* @__PURE__ */ jsx98(CloseIcon, { size: "sm" })
|
|
3420
3684
|
}
|
|
3421
3685
|
)
|
|
3422
3686
|
]
|
|
@@ -3448,7 +3712,7 @@ var toast = {
|
|
|
3448
3712
|
|
|
3449
3713
|
// src/components/Stepper.tsx
|
|
3450
3714
|
import React22 from "react";
|
|
3451
|
-
import { jsx as
|
|
3715
|
+
import { jsx as jsx99, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3452
3716
|
var Stepper = ({
|
|
3453
3717
|
steps,
|
|
3454
3718
|
currentStep,
|
|
@@ -3456,18 +3720,18 @@ var Stepper = ({
|
|
|
3456
3720
|
className = ""
|
|
3457
3721
|
}) => {
|
|
3458
3722
|
const isHorizontal = orientation === "horizontal";
|
|
3459
|
-
return /* @__PURE__ */
|
|
3723
|
+
return /* @__PURE__ */ jsx99("div", { className: `${isHorizontal ? "flex items-center" : "flex flex-col"} ${className}`, children: steps.map((step, index) => {
|
|
3460
3724
|
const stepNumber = index + 1;
|
|
3461
3725
|
const isActive = stepNumber === currentStep;
|
|
3462
3726
|
const isCompleted = stepNumber < currentStep;
|
|
3463
3727
|
const isLast = index === steps.length - 1;
|
|
3464
|
-
return /* @__PURE__ */
|
|
3465
|
-
/* @__PURE__ */
|
|
3466
|
-
/* @__PURE__ */
|
|
3728
|
+
return /* @__PURE__ */ jsxs30(React22.Fragment, { children: [
|
|
3729
|
+
/* @__PURE__ */ jsxs30("div", { className: `flex ${isHorizontal ? "flex-col items-center" : "flex-row items-start"} ${isHorizontal ? "" : "flex-1"}`, children: [
|
|
3730
|
+
/* @__PURE__ */ jsx99("div", { className: "flex items-center", children: /* @__PURE__ */ jsx99(
|
|
3467
3731
|
"div",
|
|
3468
3732
|
{
|
|
3469
3733
|
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"}`,
|
|
3470
|
-
children: isCompleted ? /* @__PURE__ */
|
|
3734
|
+
children: isCompleted ? /* @__PURE__ */ jsx99(CheckIcon, { size: "sm", className: "text-white" }) : /* @__PURE__ */ jsx99(
|
|
3471
3735
|
"span",
|
|
3472
3736
|
{
|
|
3473
3737
|
className: `text-sm font-semibold ${isActive ? "text-blue-600 dark:text-blue-400" : "text-gray-500 dark:text-gray-400"}`,
|
|
@@ -3476,18 +3740,18 @@ var Stepper = ({
|
|
|
3476
3740
|
)
|
|
3477
3741
|
}
|
|
3478
3742
|
) }),
|
|
3479
|
-
/* @__PURE__ */
|
|
3480
|
-
/* @__PURE__ */
|
|
3743
|
+
/* @__PURE__ */ jsxs30("div", { className: `${isHorizontal ? "mt-2 text-center" : "ml-4 pb-8"} ${isLast && !isHorizontal ? "pb-0" : ""}`, children: [
|
|
3744
|
+
/* @__PURE__ */ jsx99(
|
|
3481
3745
|
"p",
|
|
3482
3746
|
{
|
|
3483
3747
|
className: `text-sm font-medium ${isActive || isCompleted ? "text-gray-900 dark:text-gray-100" : "text-gray-500 dark:text-gray-400"}`,
|
|
3484
3748
|
children: step.label
|
|
3485
3749
|
}
|
|
3486
3750
|
),
|
|
3487
|
-
step.description && /* @__PURE__ */
|
|
3751
|
+
step.description && /* @__PURE__ */ jsx99("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: step.description })
|
|
3488
3752
|
] })
|
|
3489
3753
|
] }),
|
|
3490
|
-
!isLast && /* @__PURE__ */
|
|
3754
|
+
!isLast && /* @__PURE__ */ jsx99(
|
|
3491
3755
|
"div",
|
|
3492
3756
|
{
|
|
3493
3757
|
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"}`
|
|
@@ -3498,7 +3762,7 @@ var Stepper = ({
|
|
|
3498
3762
|
};
|
|
3499
3763
|
|
|
3500
3764
|
// src/components/Divider.tsx
|
|
3501
|
-
import { jsx as
|
|
3765
|
+
import { jsx as jsx100, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
3502
3766
|
var Divider = ({
|
|
3503
3767
|
orientation = "horizontal",
|
|
3504
3768
|
variant = "solid",
|
|
@@ -3517,14 +3781,14 @@ var Divider = ({
|
|
|
3517
3781
|
center: "justify-center",
|
|
3518
3782
|
right: "justify-end"
|
|
3519
3783
|
};
|
|
3520
|
-
return /* @__PURE__ */
|
|
3521
|
-
labelPosition !== "left" && /* @__PURE__ */
|
|
3522
|
-
/* @__PURE__ */
|
|
3523
|
-
labelPosition !== "right" && /* @__PURE__ */
|
|
3784
|
+
return /* @__PURE__ */ jsxs31("div", { className: `flex items-center ${alignmentClasses[labelPosition]} ${className}`, role: "separator", children: [
|
|
3785
|
+
labelPosition !== "left" && /* @__PURE__ */ jsx100("div", { className: `flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600` }),
|
|
3786
|
+
/* @__PURE__ */ jsx100("span", { className: "px-4 text-sm text-gray-500 dark:text-gray-400", children: label }),
|
|
3787
|
+
labelPosition !== "right" && /* @__PURE__ */ jsx100("div", { className: `flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600` })
|
|
3524
3788
|
] });
|
|
3525
3789
|
}
|
|
3526
3790
|
if (orientation === "vertical") {
|
|
3527
|
-
return /* @__PURE__ */
|
|
3791
|
+
return /* @__PURE__ */ jsx100(
|
|
3528
3792
|
"div",
|
|
3529
3793
|
{
|
|
3530
3794
|
className: `inline-block h-full border-l ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`,
|
|
@@ -3533,7 +3797,7 @@ var Divider = ({
|
|
|
3533
3797
|
}
|
|
3534
3798
|
);
|
|
3535
3799
|
}
|
|
3536
|
-
return /* @__PURE__ */
|
|
3800
|
+
return /* @__PURE__ */ jsx100(
|
|
3537
3801
|
"hr",
|
|
3538
3802
|
{
|
|
3539
3803
|
className: `border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`,
|
|
@@ -3544,7 +3808,7 @@ var Divider = ({
|
|
|
3544
3808
|
|
|
3545
3809
|
// src/components/FileUpload.tsx
|
|
3546
3810
|
import { useRef as useRef8, useState as useState14 } from "react";
|
|
3547
|
-
import { jsx as
|
|
3811
|
+
import { jsx as jsx101, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
3548
3812
|
var FileUpload = ({
|
|
3549
3813
|
accept,
|
|
3550
3814
|
multiple = false,
|
|
@@ -3617,9 +3881,9 @@ var FileUpload = ({
|
|
|
3617
3881
|
setFiles(newFiles);
|
|
3618
3882
|
onChange?.(newFiles);
|
|
3619
3883
|
};
|
|
3620
|
-
return /* @__PURE__ */
|
|
3621
|
-
label && /* @__PURE__ */
|
|
3622
|
-
/* @__PURE__ */
|
|
3884
|
+
return /* @__PURE__ */ jsxs32("div", { className: `w-full ${className}`, children: [
|
|
3885
|
+
label && /* @__PURE__ */ jsx101("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2", children: label }),
|
|
3886
|
+
/* @__PURE__ */ jsxs32(
|
|
3623
3887
|
"div",
|
|
3624
3888
|
{
|
|
3625
3889
|
onDrop: handleDrop,
|
|
@@ -3628,7 +3892,7 @@ var FileUpload = ({
|
|
|
3628
3892
|
onClick: handleClick,
|
|
3629
3893
|
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" : ""}`,
|
|
3630
3894
|
children: [
|
|
3631
|
-
/* @__PURE__ */
|
|
3895
|
+
/* @__PURE__ */ jsx101(
|
|
3632
3896
|
"input",
|
|
3633
3897
|
{
|
|
3634
3898
|
ref: fileInputRef,
|
|
@@ -3640,14 +3904,14 @@ var FileUpload = ({
|
|
|
3640
3904
|
className: "hidden"
|
|
3641
3905
|
}
|
|
3642
3906
|
),
|
|
3643
|
-
/* @__PURE__ */
|
|
3644
|
-
/* @__PURE__ */
|
|
3645
|
-
/* @__PURE__ */
|
|
3646
|
-
/* @__PURE__ */
|
|
3647
|
-
/* @__PURE__ */
|
|
3907
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex flex-col items-center gap-2", children: [
|
|
3908
|
+
/* @__PURE__ */ jsx101("div", { className: "w-12 h-12 rounded-full bg-gray-100 dark:bg-gray-800 flex items-center justify-center", children: /* @__PURE__ */ jsx101(UploadIcon, { size: "lg", className: "text-gray-400 dark:text-gray-500" }) }),
|
|
3909
|
+
/* @__PURE__ */ jsxs32("div", { children: [
|
|
3910
|
+
/* @__PURE__ */ jsxs32("p", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: [
|
|
3911
|
+
/* @__PURE__ */ jsx101("span", { className: "text-blue-600 dark:text-blue-400", children: "Click to upload" }),
|
|
3648
3912
|
" or drag and drop"
|
|
3649
3913
|
] }),
|
|
3650
|
-
/* @__PURE__ */
|
|
3914
|
+
/* @__PURE__ */ jsxs32("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: [
|
|
3651
3915
|
accept ? `Accepted: ${accept}` : "Any file type",
|
|
3652
3916
|
maxSize && ` \u2022 Max size: ${formatFileSize(maxSize)}`
|
|
3653
3917
|
] })
|
|
@@ -3656,17 +3920,17 @@ var FileUpload = ({
|
|
|
3656
3920
|
]
|
|
3657
3921
|
}
|
|
3658
3922
|
),
|
|
3659
|
-
helperText && /* @__PURE__ */
|
|
3660
|
-
files.length > 0 && /* @__PURE__ */
|
|
3923
|
+
helperText && /* @__PURE__ */ jsx101("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: helperText }),
|
|
3924
|
+
files.length > 0 && /* @__PURE__ */ jsx101("div", { className: "mt-4 space-y-2", children: files.map((file, index) => /* @__PURE__ */ jsxs32(
|
|
3661
3925
|
"div",
|
|
3662
3926
|
{
|
|
3663
3927
|
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",
|
|
3664
3928
|
children: [
|
|
3665
|
-
/* @__PURE__ */
|
|
3666
|
-
/* @__PURE__ */
|
|
3667
|
-
/* @__PURE__ */
|
|
3929
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex-1 min-w-0", children: [
|
|
3930
|
+
/* @__PURE__ */ jsx101("p", { className: "text-sm font-medium text-gray-900 dark:text-gray-100 truncate", children: file.name }),
|
|
3931
|
+
/* @__PURE__ */ jsx101("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: formatFileSize(file.size) })
|
|
3668
3932
|
] }),
|
|
3669
|
-
/* @__PURE__ */
|
|
3933
|
+
/* @__PURE__ */ jsx101(
|
|
3670
3934
|
"button",
|
|
3671
3935
|
{
|
|
3672
3936
|
onClick: (e) => {
|
|
@@ -3675,7 +3939,7 @@ var FileUpload = ({
|
|
|
3675
3939
|
},
|
|
3676
3940
|
className: "ml-4 text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors",
|
|
3677
3941
|
"aria-label": "Remove file",
|
|
3678
|
-
children: /* @__PURE__ */
|
|
3942
|
+
children: /* @__PURE__ */ jsx101(CloseIcon, { size: "sm" })
|
|
3679
3943
|
}
|
|
3680
3944
|
)
|
|
3681
3945
|
]
|
|
@@ -3685,6 +3949,364 @@ var FileUpload = ({
|
|
|
3685
3949
|
] });
|
|
3686
3950
|
};
|
|
3687
3951
|
|
|
3952
|
+
// src/components/AudioPlayer.tsx
|
|
3953
|
+
import { useRef as useRef9, useState as useState15, useEffect as useEffect9 } from "react";
|
|
3954
|
+
import { jsx as jsx102, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
3955
|
+
var AudioPlayer = ({
|
|
3956
|
+
src,
|
|
3957
|
+
title,
|
|
3958
|
+
artist,
|
|
3959
|
+
album,
|
|
3960
|
+
coverArt,
|
|
3961
|
+
variant = "default",
|
|
3962
|
+
autoPlay = false,
|
|
3963
|
+
loop = false,
|
|
3964
|
+
preload = "metadata",
|
|
3965
|
+
onPlay,
|
|
3966
|
+
onPause,
|
|
3967
|
+
onEnded,
|
|
3968
|
+
onTimeUpdate,
|
|
3969
|
+
className = "",
|
|
3970
|
+
showSkipButtons = false,
|
|
3971
|
+
onSkipBack,
|
|
3972
|
+
onSkipForward
|
|
3973
|
+
}) => {
|
|
3974
|
+
const audioRef = useRef9(null);
|
|
3975
|
+
const [isPlaying, setIsPlaying] = useState15(false);
|
|
3976
|
+
const [currentTime, setCurrentTime] = useState15(0);
|
|
3977
|
+
const [duration, setDuration] = useState15(0);
|
|
3978
|
+
const [volume, setVolume] = useState15(1);
|
|
3979
|
+
const [isMuted, setIsMuted] = useState15(false);
|
|
3980
|
+
const [isLoading, setIsLoading] = useState15(true);
|
|
3981
|
+
useEffect9(() => {
|
|
3982
|
+
const audio = audioRef.current;
|
|
3983
|
+
if (!audio) return;
|
|
3984
|
+
const handleLoadedMetadata = () => {
|
|
3985
|
+
setDuration(audio.duration);
|
|
3986
|
+
setIsLoading(false);
|
|
3987
|
+
};
|
|
3988
|
+
const handleCanPlay = () => {
|
|
3989
|
+
setIsLoading(false);
|
|
3990
|
+
};
|
|
3991
|
+
const handleTimeUpdate = () => {
|
|
3992
|
+
setCurrentTime(audio.currentTime);
|
|
3993
|
+
onTimeUpdate?.(audio.currentTime);
|
|
3994
|
+
};
|
|
3995
|
+
const handleEnded = () => {
|
|
3996
|
+
setIsPlaying(false);
|
|
3997
|
+
onEnded?.();
|
|
3998
|
+
};
|
|
3999
|
+
const handlePlay = () => {
|
|
4000
|
+
setIsPlaying(true);
|
|
4001
|
+
onPlay?.();
|
|
4002
|
+
};
|
|
4003
|
+
const handlePause = () => {
|
|
4004
|
+
setIsPlaying(false);
|
|
4005
|
+
onPause?.();
|
|
4006
|
+
};
|
|
4007
|
+
const handleError = (e) => {
|
|
4008
|
+
console.error("Audio error:", e);
|
|
4009
|
+
setIsPlaying(false);
|
|
4010
|
+
setIsLoading(false);
|
|
4011
|
+
};
|
|
4012
|
+
const handleLoadStart = () => {
|
|
4013
|
+
setIsLoading(true);
|
|
4014
|
+
};
|
|
4015
|
+
audio.addEventListener("loadstart", handleLoadStart);
|
|
4016
|
+
audio.addEventListener("loadedmetadata", handleLoadedMetadata);
|
|
4017
|
+
audio.addEventListener("canplay", handleCanPlay);
|
|
4018
|
+
audio.addEventListener("timeupdate", handleTimeUpdate);
|
|
4019
|
+
audio.addEventListener("ended", handleEnded);
|
|
4020
|
+
audio.addEventListener("play", handlePlay);
|
|
4021
|
+
audio.addEventListener("pause", handlePause);
|
|
4022
|
+
audio.addEventListener("error", handleError);
|
|
4023
|
+
if (audio.readyState >= 2) {
|
|
4024
|
+
setIsLoading(false);
|
|
4025
|
+
setDuration(audio.duration);
|
|
4026
|
+
}
|
|
4027
|
+
return () => {
|
|
4028
|
+
audio.removeEventListener("loadstart", handleLoadStart);
|
|
4029
|
+
audio.removeEventListener("loadedmetadata", handleLoadedMetadata);
|
|
4030
|
+
audio.removeEventListener("canplay", handleCanPlay);
|
|
4031
|
+
audio.removeEventListener("timeupdate", handleTimeUpdate);
|
|
4032
|
+
audio.removeEventListener("ended", handleEnded);
|
|
4033
|
+
audio.removeEventListener("play", handlePlay);
|
|
4034
|
+
audio.removeEventListener("pause", handlePause);
|
|
4035
|
+
audio.removeEventListener("error", handleError);
|
|
4036
|
+
};
|
|
4037
|
+
}, [onPlay, onPause, onEnded, onTimeUpdate]);
|
|
4038
|
+
useEffect9(() => {
|
|
4039
|
+
const audio = audioRef.current;
|
|
4040
|
+
if (!audio) return;
|
|
4041
|
+
audio.load();
|
|
4042
|
+
}, [src]);
|
|
4043
|
+
const togglePlayPause = async () => {
|
|
4044
|
+
const audio = audioRef.current;
|
|
4045
|
+
if (!audio) return;
|
|
4046
|
+
try {
|
|
4047
|
+
if (isPlaying) {
|
|
4048
|
+
audio.pause();
|
|
4049
|
+
} else {
|
|
4050
|
+
await audio.play();
|
|
4051
|
+
}
|
|
4052
|
+
} catch (error) {
|
|
4053
|
+
console.error("Playback error:", error);
|
|
4054
|
+
setIsPlaying(false);
|
|
4055
|
+
}
|
|
4056
|
+
};
|
|
4057
|
+
const handleSeek = (e) => {
|
|
4058
|
+
const audio = audioRef.current;
|
|
4059
|
+
if (!audio) return;
|
|
4060
|
+
const time = parseFloat(e.target.value);
|
|
4061
|
+
audio.currentTime = time;
|
|
4062
|
+
setCurrentTime(time);
|
|
4063
|
+
};
|
|
4064
|
+
const handleVolumeChange = (e) => {
|
|
4065
|
+
const audio = audioRef.current;
|
|
4066
|
+
if (!audio) return;
|
|
4067
|
+
const vol = parseFloat(e.target.value);
|
|
4068
|
+
audio.volume = vol;
|
|
4069
|
+
setVolume(vol);
|
|
4070
|
+
setIsMuted(vol === 0);
|
|
4071
|
+
};
|
|
4072
|
+
const toggleMute = () => {
|
|
4073
|
+
const audio = audioRef.current;
|
|
4074
|
+
if (!audio) return;
|
|
4075
|
+
if (isMuted) {
|
|
4076
|
+
audio.volume = volume || 0.5;
|
|
4077
|
+
setIsMuted(false);
|
|
4078
|
+
} else {
|
|
4079
|
+
audio.volume = 0;
|
|
4080
|
+
setIsMuted(true);
|
|
4081
|
+
}
|
|
4082
|
+
};
|
|
4083
|
+
const formatTime = (time) => {
|
|
4084
|
+
if (!isFinite(time)) return "0:00";
|
|
4085
|
+
const minutes = Math.floor(time / 60);
|
|
4086
|
+
const seconds = Math.floor(time % 60);
|
|
4087
|
+
return `${minutes}:${seconds.toString().padStart(2, "0")}`;
|
|
4088
|
+
};
|
|
4089
|
+
const handleSkipBack = () => {
|
|
4090
|
+
const audio = audioRef.current;
|
|
4091
|
+
if (!audio) return;
|
|
4092
|
+
if (onSkipBack) {
|
|
4093
|
+
onSkipBack();
|
|
4094
|
+
} else {
|
|
4095
|
+
audio.currentTime = Math.max(0, audio.currentTime - 10);
|
|
4096
|
+
}
|
|
4097
|
+
};
|
|
4098
|
+
const handleSkipForward = () => {
|
|
4099
|
+
const audio = audioRef.current;
|
|
4100
|
+
if (!audio) return;
|
|
4101
|
+
if (onSkipForward) {
|
|
4102
|
+
onSkipForward();
|
|
4103
|
+
} else {
|
|
4104
|
+
audio.currentTime = Math.min(duration, audio.currentTime + 10);
|
|
4105
|
+
}
|
|
4106
|
+
};
|
|
4107
|
+
const progress = duration > 0 ? currentTime / duration * 100 : 0;
|
|
4108
|
+
if (variant === "mini") {
|
|
4109
|
+
return /* @__PURE__ */ jsxs33("div", { className: `flex items-center gap-2 p-2 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 ${className}`, children: [
|
|
4110
|
+
/* @__PURE__ */ jsx102("audio", { ref: audioRef, src, preload, loop, autoPlay }),
|
|
4111
|
+
/* @__PURE__ */ jsx102(
|
|
4112
|
+
Button,
|
|
4113
|
+
{
|
|
4114
|
+
iconOnly: true,
|
|
4115
|
+
size: "sm",
|
|
4116
|
+
variant: "primary",
|
|
4117
|
+
onClick: togglePlayPause,
|
|
4118
|
+
disabled: isLoading,
|
|
4119
|
+
"aria-label": isPlaying ? "Pause" : "Play",
|
|
4120
|
+
children: isPlaying ? /* @__PURE__ */ jsx102(PauseIcon, { size: "sm" }) : /* @__PURE__ */ jsx102(PlayIcon, { size: "sm" })
|
|
4121
|
+
}
|
|
4122
|
+
),
|
|
4123
|
+
title && /* @__PURE__ */ jsx102("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300 truncate", children: title })
|
|
4124
|
+
] });
|
|
4125
|
+
}
|
|
4126
|
+
if (variant === "compact") {
|
|
4127
|
+
return /* @__PURE__ */ jsxs33("div", { className: `flex items-center gap-3 p-3 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 shadow-sm ${className}`, children: [
|
|
4128
|
+
/* @__PURE__ */ jsx102("audio", { ref: audioRef, src, preload, loop, autoPlay }),
|
|
4129
|
+
/* @__PURE__ */ jsx102(
|
|
4130
|
+
Button,
|
|
4131
|
+
{
|
|
4132
|
+
iconOnly: true,
|
|
4133
|
+
size: "md",
|
|
4134
|
+
variant: "primary",
|
|
4135
|
+
onClick: togglePlayPause,
|
|
4136
|
+
disabled: isLoading,
|
|
4137
|
+
"aria-label": isPlaying ? "Pause" : "Play",
|
|
4138
|
+
children: isPlaying ? /* @__PURE__ */ jsx102(PauseIcon, { size: "md" }) : /* @__PURE__ */ jsx102(PlayIcon, { size: "md" })
|
|
4139
|
+
}
|
|
4140
|
+
),
|
|
4141
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex-1 min-w-0", children: [
|
|
4142
|
+
title && /* @__PURE__ */ jsx102("div", { className: "text-sm font-medium text-gray-900 dark:text-gray-100 truncate", children: title }),
|
|
4143
|
+
artist && /* @__PURE__ */ jsx102("div", { className: "text-xs text-gray-500 dark:text-gray-400 truncate", children: artist })
|
|
4144
|
+
] }),
|
|
4145
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
4146
|
+
/* @__PURE__ */ jsx102("span", { className: "text-xs text-gray-500 dark:text-gray-400 tabular-nums", children: formatTime(currentTime) }),
|
|
4147
|
+
/* @__PURE__ */ jsxs33("div", { className: "relative flex-1 h-1.5 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden", children: [
|
|
4148
|
+
/* @__PURE__ */ jsx102(
|
|
4149
|
+
"div",
|
|
4150
|
+
{
|
|
4151
|
+
className: "absolute h-full bg-blue-600 dark:bg-blue-500 rounded-full transition-all",
|
|
4152
|
+
style: { width: `${progress}%` }
|
|
4153
|
+
}
|
|
4154
|
+
),
|
|
4155
|
+
/* @__PURE__ */ jsx102(
|
|
4156
|
+
"input",
|
|
4157
|
+
{
|
|
4158
|
+
type: "range",
|
|
4159
|
+
min: 0,
|
|
4160
|
+
max: duration || 0,
|
|
4161
|
+
value: currentTime,
|
|
4162
|
+
onChange: handleSeek,
|
|
4163
|
+
disabled: isLoading,
|
|
4164
|
+
className: "absolute inset-0 w-full h-full opacity-0 cursor-pointer disabled:cursor-not-allowed",
|
|
4165
|
+
"aria-label": "Seek"
|
|
4166
|
+
}
|
|
4167
|
+
)
|
|
4168
|
+
] }),
|
|
4169
|
+
/* @__PURE__ */ jsx102("span", { className: "text-xs text-gray-500 dark:text-gray-400 tabular-nums", children: formatTime(duration) })
|
|
4170
|
+
] }),
|
|
4171
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-2", children: [
|
|
4172
|
+
/* @__PURE__ */ jsx102(
|
|
4173
|
+
"button",
|
|
4174
|
+
{
|
|
4175
|
+
onClick: toggleMute,
|
|
4176
|
+
className: "text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200",
|
|
4177
|
+
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
4178
|
+
children: isMuted ? /* @__PURE__ */ jsx102(VolumeOffIcon, { size: "sm" }) : /* @__PURE__ */ jsx102(VolumeUpIcon, { size: "sm" })
|
|
4179
|
+
}
|
|
4180
|
+
),
|
|
4181
|
+
/* @__PURE__ */ jsx102(
|
|
4182
|
+
"input",
|
|
4183
|
+
{
|
|
4184
|
+
type: "range",
|
|
4185
|
+
min: 0,
|
|
4186
|
+
max: 1,
|
|
4187
|
+
step: 0.01,
|
|
4188
|
+
value: isMuted ? 0 : volume,
|
|
4189
|
+
onChange: handleVolumeChange,
|
|
4190
|
+
className: "w-16 h-1.5 bg-gray-200 dark:bg-gray-700 rounded-full appearance-none cursor-pointer\n [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3\n [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-blue-600 [&::-webkit-slider-thumb]:cursor-pointer\n [&::-moz-range-thumb]:w-3 [&::-moz-range-thumb]:h-3 [&::-moz-range-thumb]:rounded-full\n [&::-moz-range-thumb]:bg-blue-600 [&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-none",
|
|
4191
|
+
"aria-label": "Volume"
|
|
4192
|
+
}
|
|
4193
|
+
)
|
|
4194
|
+
] })
|
|
4195
|
+
] });
|
|
4196
|
+
}
|
|
4197
|
+
return /* @__PURE__ */ jsxs33("div", { className: `bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 shadow-md overflow-hidden ${className}`, children: [
|
|
4198
|
+
/* @__PURE__ */ jsx102("audio", { ref: audioRef, src, preload, loop, autoPlay }),
|
|
4199
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-4 p-4 border-b border-gray-200 dark:border-gray-700", children: [
|
|
4200
|
+
coverArt && /* @__PURE__ */ jsx102("div", { className: "w-16 h-16 flex-shrink-0 rounded-md overflow-hidden bg-gray-100 dark:bg-gray-700", children: /* @__PURE__ */ jsx102(
|
|
4201
|
+
"img",
|
|
4202
|
+
{
|
|
4203
|
+
src: coverArt,
|
|
4204
|
+
alt: `${title || "Track"} cover art`,
|
|
4205
|
+
className: "w-full h-full object-cover"
|
|
4206
|
+
}
|
|
4207
|
+
) }),
|
|
4208
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex-1 min-w-0", children: [
|
|
4209
|
+
title && /* @__PURE__ */ jsx102("h3", { className: "text-base font-semibold text-gray-900 dark:text-gray-100 truncate", children: title }),
|
|
4210
|
+
artist && /* @__PURE__ */ jsx102("p", { className: "text-sm text-gray-600 dark:text-gray-400 truncate", children: artist }),
|
|
4211
|
+
album && /* @__PURE__ */ jsx102("p", { className: "text-xs text-gray-500 dark:text-gray-500 truncate", children: album })
|
|
4212
|
+
] })
|
|
4213
|
+
] }),
|
|
4214
|
+
/* @__PURE__ */ jsxs33("div", { className: "px-4 pt-4", children: [
|
|
4215
|
+
/* @__PURE__ */ jsxs33("div", { className: "relative h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden", children: [
|
|
4216
|
+
/* @__PURE__ */ jsx102(
|
|
4217
|
+
"div",
|
|
4218
|
+
{
|
|
4219
|
+
className: "absolute h-full bg-blue-600 dark:bg-blue-500 rounded-full transition-all",
|
|
4220
|
+
style: { width: `${progress}%` }
|
|
4221
|
+
}
|
|
4222
|
+
),
|
|
4223
|
+
/* @__PURE__ */ jsx102(
|
|
4224
|
+
"input",
|
|
4225
|
+
{
|
|
4226
|
+
type: "range",
|
|
4227
|
+
min: 0,
|
|
4228
|
+
max: duration || 0,
|
|
4229
|
+
value: currentTime,
|
|
4230
|
+
onChange: handleSeek,
|
|
4231
|
+
disabled: isLoading,
|
|
4232
|
+
className: "absolute inset-0 w-full h-full opacity-0 cursor-pointer disabled:cursor-not-allowed",
|
|
4233
|
+
"aria-label": "Seek"
|
|
4234
|
+
}
|
|
4235
|
+
)
|
|
4236
|
+
] }),
|
|
4237
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex justify-between items-center mt-1 text-xs text-gray-500 dark:text-gray-400 tabular-nums", children: [
|
|
4238
|
+
/* @__PURE__ */ jsx102("span", { children: formatTime(currentTime) }),
|
|
4239
|
+
/* @__PURE__ */ jsx102("span", { children: formatTime(duration) })
|
|
4240
|
+
] })
|
|
4241
|
+
] }),
|
|
4242
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex items-center justify-between px-4 py-4", children: [
|
|
4243
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
4244
|
+
/* @__PURE__ */ jsx102(
|
|
4245
|
+
"button",
|
|
4246
|
+
{
|
|
4247
|
+
onClick: toggleMute,
|
|
4248
|
+
className: "text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 transition-colors",
|
|
4249
|
+
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
4250
|
+
children: isMuted ? /* @__PURE__ */ jsx102(VolumeOffIcon, { size: "md" }) : /* @__PURE__ */ jsx102(VolumeUpIcon, { size: "md" })
|
|
4251
|
+
}
|
|
4252
|
+
),
|
|
4253
|
+
/* @__PURE__ */ jsx102(
|
|
4254
|
+
"input",
|
|
4255
|
+
{
|
|
4256
|
+
type: "range",
|
|
4257
|
+
min: 0,
|
|
4258
|
+
max: 1,
|
|
4259
|
+
step: 0.01,
|
|
4260
|
+
value: isMuted ? 0 : volume,
|
|
4261
|
+
onChange: handleVolumeChange,
|
|
4262
|
+
className: "w-20 h-1.5 bg-gray-200 dark:bg-gray-700 rounded-full appearance-none cursor-pointer\n [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3\n [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-blue-600 [&::-webkit-slider-thumb]:cursor-pointer\n [&::-moz-range-thumb]:w-3 [&::-moz-range-thumb]:h-3 [&::-moz-range-thumb]:rounded-full\n [&::-moz-range-thumb]:bg-blue-600 [&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-none",
|
|
4263
|
+
"aria-label": "Volume"
|
|
4264
|
+
}
|
|
4265
|
+
)
|
|
4266
|
+
] }),
|
|
4267
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-2", children: [
|
|
4268
|
+
showSkipButtons && /* @__PURE__ */ jsx102(
|
|
4269
|
+
Button,
|
|
4270
|
+
{
|
|
4271
|
+
iconOnly: true,
|
|
4272
|
+
size: "md",
|
|
4273
|
+
variant: "secondary",
|
|
4274
|
+
onClick: handleSkipBack,
|
|
4275
|
+
disabled: isLoading,
|
|
4276
|
+
"aria-label": "Skip back 10 seconds",
|
|
4277
|
+
children: /* @__PURE__ */ jsx102(SkipBackIcon, { size: "md" })
|
|
4278
|
+
}
|
|
4279
|
+
),
|
|
4280
|
+
/* @__PURE__ */ jsx102(
|
|
4281
|
+
Button,
|
|
4282
|
+
{
|
|
4283
|
+
iconOnly: true,
|
|
4284
|
+
size: "lg",
|
|
4285
|
+
variant: "primary",
|
|
4286
|
+
onClick: togglePlayPause,
|
|
4287
|
+
disabled: isLoading,
|
|
4288
|
+
"aria-label": isPlaying ? "Pause" : "Play",
|
|
4289
|
+
children: isPlaying ? /* @__PURE__ */ jsx102(PauseIcon, { size: "lg" }) : /* @__PURE__ */ jsx102(PlayIcon, { size: "lg" })
|
|
4290
|
+
}
|
|
4291
|
+
),
|
|
4292
|
+
showSkipButtons && /* @__PURE__ */ jsx102(
|
|
4293
|
+
Button,
|
|
4294
|
+
{
|
|
4295
|
+
iconOnly: true,
|
|
4296
|
+
size: "md",
|
|
4297
|
+
variant: "secondary",
|
|
4298
|
+
onClick: handleSkipForward,
|
|
4299
|
+
disabled: isLoading,
|
|
4300
|
+
"aria-label": "Skip forward 10 seconds",
|
|
4301
|
+
children: /* @__PURE__ */ jsx102(SkipForwardIcon, { size: "md" })
|
|
4302
|
+
}
|
|
4303
|
+
)
|
|
4304
|
+
] }),
|
|
4305
|
+
/* @__PURE__ */ jsx102("div", { className: "flex-1" })
|
|
4306
|
+
] })
|
|
4307
|
+
] });
|
|
4308
|
+
};
|
|
4309
|
+
|
|
3688
4310
|
// src/utils/theme-script.ts
|
|
3689
4311
|
var themeScript = `
|
|
3690
4312
|
(function() {
|
|
@@ -3720,33 +4342,57 @@ function getThemeScript() {
|
|
|
3720
4342
|
export {
|
|
3721
4343
|
ActionMenu,
|
|
3722
4344
|
Alert,
|
|
4345
|
+
AlertCircleIcon,
|
|
3723
4346
|
AppShell,
|
|
3724
4347
|
AppleIcon,
|
|
4348
|
+
ArrowLeftIcon,
|
|
4349
|
+
ArrowRightIcon,
|
|
4350
|
+
AudioPlayer,
|
|
3725
4351
|
Avatar,
|
|
3726
4352
|
Badge,
|
|
4353
|
+
BeakerIcon,
|
|
3727
4354
|
BellIcon,
|
|
4355
|
+
BookIcon,
|
|
4356
|
+
BrainIcon,
|
|
3728
4357
|
Button,
|
|
3729
4358
|
Calendar,
|
|
3730
4359
|
CalendarIcon,
|
|
3731
4360
|
CameraIcon,
|
|
3732
4361
|
Card,
|
|
4362
|
+
ChatIcon,
|
|
4363
|
+
CheckCircleIcon,
|
|
3733
4364
|
CheckIcon,
|
|
3734
4365
|
Checkbox,
|
|
3735
4366
|
ChevronDownIcon,
|
|
4367
|
+
ChevronLeftIcon,
|
|
3736
4368
|
ChevronRightIcon,
|
|
4369
|
+
ChevronUpIcon,
|
|
3737
4370
|
CloseIcon,
|
|
4371
|
+
CloudIcon,
|
|
4372
|
+
CodeIcon,
|
|
4373
|
+
CopyIcon,
|
|
4374
|
+
DatabaseIcon,
|
|
3738
4375
|
DatePicker,
|
|
3739
4376
|
DateTimePicker,
|
|
3740
4377
|
Divider,
|
|
3741
4378
|
DownloadIcon,
|
|
3742
4379
|
Drawer,
|
|
3743
4380
|
EditIcon,
|
|
4381
|
+
ExternalLinkIcon,
|
|
4382
|
+
EyeIcon,
|
|
4383
|
+
EyeOffIcon,
|
|
3744
4384
|
FacebookIcon,
|
|
4385
|
+
FileIcon,
|
|
3745
4386
|
FileUpload,
|
|
4387
|
+
FolderIcon,
|
|
3746
4388
|
GitHubIcon,
|
|
4389
|
+
GlobeIcon,
|
|
3747
4390
|
GoogleIcon,
|
|
3748
4391
|
HeartIcon,
|
|
3749
4392
|
HomeIcon,
|
|
4393
|
+
ImageIcon,
|
|
4394
|
+
InfoCircleIcon,
|
|
4395
|
+
KeyIcon,
|
|
3750
4396
|
LinkedInIcon,
|
|
3751
4397
|
LockIcon,
|
|
3752
4398
|
MailIcon,
|
|
@@ -3755,22 +4401,33 @@ export {
|
|
|
3755
4401
|
Navbar,
|
|
3756
4402
|
NumberInput,
|
|
3757
4403
|
Pagination,
|
|
4404
|
+
PauseIcon,
|
|
4405
|
+
PlayIcon,
|
|
4406
|
+
PlugIcon,
|
|
3758
4407
|
PlusIcon,
|
|
3759
4408
|
ProgressBar,
|
|
3760
4409
|
Radio,
|
|
4410
|
+
RefreshIcon,
|
|
3761
4411
|
RichTextEditor,
|
|
4412
|
+
SaveIcon,
|
|
3762
4413
|
SearchIcon,
|
|
3763
4414
|
Select,
|
|
3764
4415
|
SettingsIcon,
|
|
4416
|
+
ShieldIcon,
|
|
3765
4417
|
Sidebar,
|
|
3766
4418
|
SidebarProvider,
|
|
4419
|
+
SkipBackIcon,
|
|
4420
|
+
SkipForwardIcon,
|
|
3767
4421
|
SlackIcon,
|
|
3768
4422
|
Slider,
|
|
4423
|
+
SparklesIcon,
|
|
3769
4424
|
Spinner,
|
|
3770
4425
|
StarIcon,
|
|
3771
4426
|
Stepper,
|
|
4427
|
+
StopIcon,
|
|
3772
4428
|
Table,
|
|
3773
4429
|
Tabs,
|
|
4430
|
+
TerminalIcon,
|
|
3774
4431
|
TextInput,
|
|
3775
4432
|
Textarea,
|
|
3776
4433
|
ThemeProvider,
|
|
@@ -3781,6 +4438,8 @@ export {
|
|
|
3781
4438
|
TwitterIcon,
|
|
3782
4439
|
UploadIcon,
|
|
3783
4440
|
UserIcon,
|
|
4441
|
+
VolumeOffIcon,
|
|
4442
|
+
VolumeUpIcon,
|
|
3784
4443
|
YouTubeIcon,
|
|
3785
4444
|
getThemeScript,
|
|
3786
4445
|
themeScript,
|