@mikenotthepope/substrateui 0.1.0 → 0.1.2
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/README.md +5 -5
- package/base/substrate.css +164 -1
- package/dist/index.d.mts +20 -3
- package/dist/index.d.ts +20 -3
- package/dist/index.js +318 -144
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +436 -264
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.mjs
CHANGED
|
@@ -400,18 +400,41 @@ var DrawerComponent = Object.assign(Drawer, {
|
|
|
400
400
|
// components/ui/Avatar.tsx
|
|
401
401
|
import * as React5 from "react";
|
|
402
402
|
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
403
|
-
import {
|
|
403
|
+
import { cva as cva4 } from "class-variance-authority";
|
|
404
|
+
import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
405
|
+
var avatarVariants = cva4(
|
|
406
|
+
"relative flex h-10 w-10 border-2 overflow-hidden",
|
|
407
|
+
{
|
|
408
|
+
variants: {
|
|
409
|
+
shape: {
|
|
410
|
+
circle: "rounded-full",
|
|
411
|
+
square: "rounded-none",
|
|
412
|
+
rounded: "rounded-lg",
|
|
413
|
+
hexagon: "rounded-none border-0 [clip-path:polygon(50%_0%,100%_25%,100%_75%,50%_100%,0%_75%,0%_25%)]",
|
|
414
|
+
diamond: "rounded-none rotate-45 border-2",
|
|
415
|
+
squircle: "rounded-none border-0 [clip-path:url(#squircle)]",
|
|
416
|
+
shield: "rounded-none border-0 [clip-path:polygon(50%_0%,100%_0%,100%_70%,50%_100%,0%_70%,0%_0%)]"
|
|
417
|
+
}
|
|
418
|
+
},
|
|
419
|
+
defaultVariants: {
|
|
420
|
+
shape: "circle"
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
);
|
|
404
424
|
var Avatar = React5.forwardRef((_a, ref) => {
|
|
405
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
406
|
-
return /* @__PURE__ */
|
|
425
|
+
var _b = _a, { className, shape = "circle", children } = _b, props = __objRest(_b, ["className", "shape", "children"]);
|
|
426
|
+
return /* @__PURE__ */ jsxs2(
|
|
407
427
|
AvatarPrimitive.Root,
|
|
408
|
-
__spreadValues({
|
|
428
|
+
__spreadProps(__spreadValues({
|
|
409
429
|
ref,
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
430
|
+
"data-shape": shape,
|
|
431
|
+
className: cn(avatarVariants({ shape }), className)
|
|
432
|
+
}, props), {
|
|
433
|
+
children: [
|
|
434
|
+
shape === "squircle" && /* @__PURE__ */ jsx6("svg", { width: "0", height: "0", className: "absolute", children: /* @__PURE__ */ jsx6("defs", { children: /* @__PURE__ */ jsx6("clipPath", { id: "squircle", clipPathUnits: "objectBoundingBox", children: /* @__PURE__ */ jsx6("path", { d: "M 0.5 0 C 0.9 0, 1 0.1, 1 0.5 C 1 0.9, 0.9 1, 0.5 1 C 0.1 1, 0 0.9, 0 0.5 C 0 0.1, 0.1 0, 0.5 0" }) }) }) }),
|
|
435
|
+
children
|
|
436
|
+
]
|
|
437
|
+
})
|
|
415
438
|
);
|
|
416
439
|
});
|
|
417
440
|
Avatar.displayName = "Avatar";
|
|
@@ -421,7 +444,10 @@ var AvatarImage = React5.forwardRef((_a, ref) => {
|
|
|
421
444
|
AvatarPrimitive.Image,
|
|
422
445
|
__spreadValues({
|
|
423
446
|
ref,
|
|
424
|
-
className: cn(
|
|
447
|
+
className: cn(
|
|
448
|
+
"aspect-square h-full w-full [[data-shape=diamond]>&]:-rotate-45",
|
|
449
|
+
className
|
|
450
|
+
)
|
|
425
451
|
}, props)
|
|
426
452
|
);
|
|
427
453
|
});
|
|
@@ -433,7 +459,10 @@ var AvatarFallback = React5.forwardRef((_a, ref) => {
|
|
|
433
459
|
__spreadValues({
|
|
434
460
|
ref,
|
|
435
461
|
className: cn(
|
|
436
|
-
"flex h-full w-full items-center justify-center
|
|
462
|
+
"flex h-full w-full items-center justify-center bg-primary text-primary-foreground font-head text-sm",
|
|
463
|
+
"[[data-shape=circle]>&]:rounded-full",
|
|
464
|
+
"[[data-shape=rounded]>&]:rounded-lg",
|
|
465
|
+
"[[data-shape=diamond]>&]:-rotate-45",
|
|
437
466
|
className
|
|
438
467
|
)
|
|
439
468
|
}, props)
|
|
@@ -454,7 +483,7 @@ import React6, {
|
|
|
454
483
|
useContext,
|
|
455
484
|
useState
|
|
456
485
|
} from "react";
|
|
457
|
-
import { jsx as jsx7, jsxs as
|
|
486
|
+
import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
458
487
|
var TabsValueContext = createContext({ setValue: () => {
|
|
459
488
|
} });
|
|
460
489
|
function TabsRoot(_a) {
|
|
@@ -530,8 +559,8 @@ var TabsContent = React6.forwardRef((_a, ref) => {
|
|
|
530
559
|
});
|
|
531
560
|
TabsContent.displayName = "TabsContent";
|
|
532
561
|
function TabsMore({ children, className, label = "More" }) {
|
|
533
|
-
return /* @__PURE__ */
|
|
534
|
-
/* @__PURE__ */
|
|
562
|
+
return /* @__PURE__ */ jsxs3(DropdownMenu2.Root, { children: [
|
|
563
|
+
/* @__PURE__ */ jsxs3(
|
|
535
564
|
DropdownMenu2.Trigger,
|
|
536
565
|
{
|
|
537
566
|
className: cn(
|
|
@@ -653,10 +682,10 @@ Textarea.displayName = "Textarea";
|
|
|
653
682
|
// components/ui/Checkbox.tsx
|
|
654
683
|
import * as React10 from "react";
|
|
655
684
|
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
656
|
-
import { cva as
|
|
685
|
+
import { cva as cva5 } from "class-variance-authority";
|
|
657
686
|
import { Check } from "lucide-react";
|
|
658
687
|
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
659
|
-
var checkboxVariants =
|
|
688
|
+
var checkboxVariants = cva5("border-2 shrink-0 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50", {
|
|
660
689
|
variants: {
|
|
661
690
|
variant: {
|
|
662
691
|
default: "data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
|
|
@@ -691,9 +720,9 @@ Checkbox.displayName = "Checkbox";
|
|
|
691
720
|
// components/ui/RadioGroup.tsx
|
|
692
721
|
import * as React11 from "react";
|
|
693
722
|
import * as RadioPrimitive from "@radix-ui/react-radio-group";
|
|
694
|
-
import { cva as
|
|
695
|
-
import { jsx as jsx12, jsxs as
|
|
696
|
-
var radioVariants =
|
|
723
|
+
import { cva as cva6 } from "class-variance-authority";
|
|
724
|
+
import { jsx as jsx12, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
725
|
+
var radioVariants = cva6("border-2 border-border shrink-0 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50", {
|
|
697
726
|
variants: {
|
|
698
727
|
variant: {
|
|
699
728
|
default: "",
|
|
@@ -704,14 +733,19 @@ var radioVariants = cva5("border-2 border-border shrink-0 cursor-pointer disable
|
|
|
704
733
|
sm: "h-4 w-4",
|
|
705
734
|
md: "h-5 w-5",
|
|
706
735
|
lg: "h-6 w-6"
|
|
736
|
+
},
|
|
737
|
+
shape: {
|
|
738
|
+
circle: "rounded-full",
|
|
739
|
+
diamond: "rotate-45"
|
|
707
740
|
}
|
|
708
741
|
},
|
|
709
742
|
defaultVariants: {
|
|
710
743
|
variant: "default",
|
|
711
|
-
size: "md"
|
|
744
|
+
size: "md",
|
|
745
|
+
shape: "circle"
|
|
712
746
|
}
|
|
713
747
|
});
|
|
714
|
-
var radioIndicatorVariants =
|
|
748
|
+
var radioIndicatorVariants = cva6("flex", {
|
|
715
749
|
variants: {
|
|
716
750
|
variant: {
|
|
717
751
|
default: "bg-primary border-2 border-border",
|
|
@@ -719,14 +753,19 @@ var radioIndicatorVariants = cva5("flex", {
|
|
|
719
753
|
solid: "bg-border"
|
|
720
754
|
},
|
|
721
755
|
size: {
|
|
722
|
-
sm: "h-2 w-2",
|
|
723
|
-
md: "h-
|
|
724
|
-
lg: "h-
|
|
756
|
+
sm: "h-2.5 w-2.5",
|
|
757
|
+
md: "h-3 w-3",
|
|
758
|
+
lg: "h-4 w-4"
|
|
759
|
+
},
|
|
760
|
+
shape: {
|
|
761
|
+
circle: "rounded-full",
|
|
762
|
+
diamond: ""
|
|
725
763
|
}
|
|
726
764
|
},
|
|
727
765
|
defaultVariants: {
|
|
728
766
|
variant: "default",
|
|
729
|
-
size: "md"
|
|
767
|
+
size: "md",
|
|
768
|
+
shape: "circle"
|
|
730
769
|
}
|
|
731
770
|
});
|
|
732
771
|
var RadioGroupRoot = React11.forwardRef((_a, ref) => {
|
|
@@ -741,15 +780,15 @@ var RadioGroupRoot = React11.forwardRef((_a, ref) => {
|
|
|
741
780
|
});
|
|
742
781
|
RadioGroupRoot.displayName = "RadioGroup";
|
|
743
782
|
var RadioGroupItem = React11.forwardRef((_a, ref) => {
|
|
744
|
-
var _b = _a, { className, size, variant, children } = _b, props = __objRest(_b, ["className", "size", "variant", "children"]);
|
|
745
|
-
return /* @__PURE__ */
|
|
783
|
+
var _b = _a, { className, size, variant, shape, children } = _b, props = __objRest(_b, ["className", "size", "variant", "shape", "children"]);
|
|
784
|
+
return /* @__PURE__ */ jsxs4(
|
|
746
785
|
RadioPrimitive.Item,
|
|
747
786
|
__spreadProps(__spreadValues({
|
|
748
787
|
ref,
|
|
749
|
-
className: cn(radioVariants({ size, variant }), className)
|
|
788
|
+
className: cn(radioVariants({ size, variant, shape }), className)
|
|
750
789
|
}, props), {
|
|
751
790
|
children: [
|
|
752
|
-
/* @__PURE__ */ jsx12(RadioPrimitive.Indicator, { className: "flex justify-center items-center", children: /* @__PURE__ */ jsx12("span", { className: radioIndicatorVariants({ size, variant }) }) }),
|
|
791
|
+
/* @__PURE__ */ jsx12(RadioPrimitive.Indicator, { className: "flex justify-center items-center", children: /* @__PURE__ */ jsx12("span", { className: radioIndicatorVariants({ size, variant, shape }) }) }),
|
|
753
792
|
children
|
|
754
793
|
]
|
|
755
794
|
})
|
|
@@ -764,11 +803,11 @@ var RadioGroup = Object.assign(RadioGroupRoot, {
|
|
|
764
803
|
import * as React12 from "react";
|
|
765
804
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
766
805
|
import { Check as Check2, ChevronDown, ChevronUp } from "lucide-react";
|
|
767
|
-
import { jsx as jsx13, jsxs as
|
|
806
|
+
import { jsx as jsx13, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
768
807
|
var SelectRoot = SelectPrimitive.Root;
|
|
769
808
|
var SelectTrigger = React12.forwardRef((_a, ref) => {
|
|
770
809
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
771
|
-
return /* @__PURE__ */
|
|
810
|
+
return /* @__PURE__ */ jsxs5(
|
|
772
811
|
SelectPrimitive.Trigger,
|
|
773
812
|
__spreadProps(__spreadValues({
|
|
774
813
|
ref,
|
|
@@ -788,7 +827,7 @@ SelectTrigger.displayName = "Select.Trigger";
|
|
|
788
827
|
var SelectValue = SelectPrimitive.Value;
|
|
789
828
|
var SelectContent = React12.forwardRef((_a, ref) => {
|
|
790
829
|
var _b = _a, { className, children, position = "popper" } = _b, props = __objRest(_b, ["className", "children", "position"]);
|
|
791
|
-
return /* @__PURE__ */ jsx13(SelectPrimitive.Portal, { children: /* @__PURE__ */
|
|
830
|
+
return /* @__PURE__ */ jsx13(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs5(
|
|
792
831
|
SelectPrimitive.Content,
|
|
793
832
|
__spreadProps(__spreadValues({
|
|
794
833
|
ref,
|
|
@@ -819,7 +858,7 @@ SelectContent.displayName = "Select.Content";
|
|
|
819
858
|
var SelectGroup = SelectPrimitive.Group;
|
|
820
859
|
var SelectItem = React12.forwardRef((_a, ref) => {
|
|
821
860
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
822
|
-
return /* @__PURE__ */
|
|
861
|
+
return /* @__PURE__ */ jsxs5(
|
|
823
862
|
SelectPrimitive.Item,
|
|
824
863
|
__spreadProps(__spreadValues({
|
|
825
864
|
ref,
|
|
@@ -879,10 +918,10 @@ Switch.displayName = "Switch";
|
|
|
879
918
|
// components/ui/Slider.tsx
|
|
880
919
|
import * as React14 from "react";
|
|
881
920
|
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
882
|
-
import { jsx as jsx15, jsxs as
|
|
921
|
+
import { jsx as jsx15, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
883
922
|
var Slider = React14.forwardRef((_a, ref) => {
|
|
884
923
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
885
|
-
return /* @__PURE__ */
|
|
924
|
+
return /* @__PURE__ */ jsxs6(
|
|
886
925
|
SliderPrimitive.Root,
|
|
887
926
|
__spreadProps(__spreadValues({
|
|
888
927
|
ref,
|
|
@@ -940,7 +979,7 @@ function Text(_a) {
|
|
|
940
979
|
|
|
941
980
|
// components/ui/FormLayout.tsx
|
|
942
981
|
import * as React15 from "react";
|
|
943
|
-
import { jsx as jsx17, jsxs as
|
|
982
|
+
import { jsx as jsx17, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
944
983
|
var FormLayoutRoot = React15.forwardRef(
|
|
945
984
|
(_a, ref) => {
|
|
946
985
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
@@ -951,14 +990,14 @@ FormLayoutRoot.displayName = "FormLayout";
|
|
|
951
990
|
var FormSection = React15.forwardRef(
|
|
952
991
|
(_a, ref) => {
|
|
953
992
|
var _b = _a, { className, title, description, children } = _b, props = __objRest(_b, ["className", "title", "description", "children"]);
|
|
954
|
-
return /* @__PURE__ */
|
|
993
|
+
return /* @__PURE__ */ jsxs7(
|
|
955
994
|
"fieldset",
|
|
956
995
|
__spreadProps(__spreadValues({
|
|
957
996
|
ref,
|
|
958
997
|
className: cn("space-y-6 border-0 p-0 m-0", className)
|
|
959
998
|
}, props), {
|
|
960
999
|
children: [
|
|
961
|
-
(title || description) && /* @__PURE__ */
|
|
1000
|
+
(title || description) && /* @__PURE__ */ jsxs7("div", { className: "space-y-1 border-b-2 border-border pb-4", children: [
|
|
962
1001
|
title && /* @__PURE__ */ jsx17("legend", { className: "font-head text-lg font-normal", children: title }),
|
|
963
1002
|
description && /* @__PURE__ */ jsx17("p", { className: "font-sans text-sm text-muted-foreground", children: description })
|
|
964
1003
|
] }),
|
|
@@ -972,8 +1011,8 @@ FormSection.displayName = "FormLayout.Section";
|
|
|
972
1011
|
var FormField = React15.forwardRef(
|
|
973
1012
|
(_a, ref) => {
|
|
974
1013
|
var _b = _a, { className, label, htmlFor, description, error, required, children } = _b, props = __objRest(_b, ["className", "label", "htmlFor", "description", "error", "required", "children"]);
|
|
975
|
-
return /* @__PURE__ */
|
|
976
|
-
label && /* @__PURE__ */
|
|
1014
|
+
return /* @__PURE__ */ jsxs7("div", __spreadProps(__spreadValues({ ref, className: cn("space-y-2", className) }, props), { children: [
|
|
1015
|
+
label && /* @__PURE__ */ jsxs7(Label, { htmlFor, children: [
|
|
977
1016
|
label,
|
|
978
1017
|
required && /* @__PURE__ */ jsx17("span", { className: "ml-0.5 text-destructive", "aria-hidden": "true", children: "*" })
|
|
979
1018
|
] }),
|
|
@@ -1011,7 +1050,7 @@ var FormActions = React15.forwardRef(
|
|
|
1011
1050
|
__spreadValues({
|
|
1012
1051
|
ref,
|
|
1013
1052
|
className: cn(
|
|
1014
|
-
"flex items-center gap-3 border-t-2 border-border pt-6",
|
|
1053
|
+
"flex items-center gap-3 border-t-2 border-border mt-6 pt-6",
|
|
1015
1054
|
alignMap[align],
|
|
1016
1055
|
className
|
|
1017
1056
|
)
|
|
@@ -1028,11 +1067,11 @@ var FormLayout = Object.assign(FormLayoutRoot, {
|
|
|
1028
1067
|
});
|
|
1029
1068
|
|
|
1030
1069
|
// components/ui/Link.tsx
|
|
1031
|
-
import { cva as
|
|
1070
|
+
import { cva as cva7 } from "class-variance-authority";
|
|
1032
1071
|
import React16 from "react";
|
|
1033
1072
|
import { Slot as Slot4 } from "@radix-ui/react-slot";
|
|
1034
1073
|
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
1035
|
-
var linkVariants =
|
|
1074
|
+
var linkVariants = cva7(
|
|
1036
1075
|
"font-head inline-flex items-center gap-1 cursor-pointer transition-colors duration-200 underline-offset-4",
|
|
1037
1076
|
{
|
|
1038
1077
|
variants: {
|
|
@@ -1085,9 +1124,9 @@ Link.displayName = "Link";
|
|
|
1085
1124
|
|
|
1086
1125
|
// components/ui/Alert.tsx
|
|
1087
1126
|
import * as React17 from "react";
|
|
1088
|
-
import { cva as
|
|
1127
|
+
import { cva as cva8 } from "class-variance-authority";
|
|
1089
1128
|
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
1090
|
-
var alertVariants =
|
|
1129
|
+
var alertVariants = cva8(
|
|
1091
1130
|
"relative w-full border-2 border-border p-4",
|
|
1092
1131
|
{
|
|
1093
1132
|
variants: {
|
|
@@ -1151,11 +1190,11 @@ var AlertComponent = Object.assign(AlertRoot, {
|
|
|
1151
1190
|
});
|
|
1152
1191
|
|
|
1153
1192
|
// components/ui/IconButton.tsx
|
|
1154
|
-
import { cva as
|
|
1193
|
+
import { cva as cva9 } from "class-variance-authority";
|
|
1155
1194
|
import React18 from "react";
|
|
1156
1195
|
import { Slot as Slot5 } from "@radix-ui/react-slot";
|
|
1157
1196
|
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
1158
|
-
var iconButtonVariants =
|
|
1197
|
+
var iconButtonVariants = cva9(
|
|
1159
1198
|
"font-head transition-all outline-hidden cursor-pointer duration-200 inline-flex justify-center items-center disabled:opacity-60 disabled:cursor-not-allowed border-2 border-border",
|
|
1160
1199
|
{
|
|
1161
1200
|
variants: {
|
|
@@ -1208,9 +1247,9 @@ IconButton.displayName = "IconButton";
|
|
|
1208
1247
|
|
|
1209
1248
|
// components/ui/Loader.tsx
|
|
1210
1249
|
import * as React19 from "react";
|
|
1211
|
-
import { cva as
|
|
1250
|
+
import { cva as cva10 } from "class-variance-authority";
|
|
1212
1251
|
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1213
|
-
var loaderVariants =
|
|
1252
|
+
var loaderVariants = cva10("flex gap-1", {
|
|
1214
1253
|
variants: {
|
|
1215
1254
|
variant: {
|
|
1216
1255
|
default: "[&>div]:bg-primary [&>div]:border-border",
|
|
@@ -1275,12 +1314,12 @@ Loader.displayName = "Loader";
|
|
|
1275
1314
|
import * as React20 from "react";
|
|
1276
1315
|
import * as ReactDialog from "@radix-ui/react-dialog";
|
|
1277
1316
|
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
|
|
1278
|
-
import { cva as
|
|
1317
|
+
import { cva as cva11 } from "class-variance-authority";
|
|
1279
1318
|
import { X } from "lucide-react";
|
|
1280
|
-
import { jsx as jsx22, jsxs as
|
|
1319
|
+
import { jsx as jsx22, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1281
1320
|
var Dialog = ReactDialog.Root;
|
|
1282
1321
|
var DialogTrigger = ReactDialog.Trigger;
|
|
1283
|
-
var overlayVariants =
|
|
1322
|
+
var overlayVariants = cva11(
|
|
1284
1323
|
"fixed inset-0 z-50 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0",
|
|
1285
1324
|
{
|
|
1286
1325
|
variants: {
|
|
@@ -1307,7 +1346,7 @@ var DialogOverlay = React20.forwardRef(
|
|
|
1307
1346
|
}
|
|
1308
1347
|
);
|
|
1309
1348
|
DialogOverlay.displayName = "Dialog.Overlay";
|
|
1310
|
-
var dialogContentVariants =
|
|
1349
|
+
var dialogContentVariants = cva11(
|
|
1311
1350
|
"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] border-2 border-border bg-background shadow-lg duration-200 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
|
|
1312
1351
|
{
|
|
1313
1352
|
variants: {
|
|
@@ -1327,9 +1366,9 @@ var dialogContentVariants = cva10(
|
|
|
1327
1366
|
var DialogContent = React20.forwardRef(
|
|
1328
1367
|
(_a, ref) => {
|
|
1329
1368
|
var _b = _a, { children, size = "md", className, overlay } = _b, props = __objRest(_b, ["children", "size", "className", "overlay"]);
|
|
1330
|
-
return /* @__PURE__ */
|
|
1369
|
+
return /* @__PURE__ */ jsxs8(ReactDialog.Portal, { children: [
|
|
1331
1370
|
/* @__PURE__ */ jsx22(DialogOverlay, __spreadValues({}, overlay)),
|
|
1332
|
-
/* @__PURE__ */
|
|
1371
|
+
/* @__PURE__ */ jsxs8(
|
|
1333
1372
|
ReactDialog.Content,
|
|
1334
1373
|
__spreadProps(__spreadValues({
|
|
1335
1374
|
ref,
|
|
@@ -1347,7 +1386,7 @@ var DialogContent = React20.forwardRef(
|
|
|
1347
1386
|
DialogContent.displayName = "Dialog.Content";
|
|
1348
1387
|
var DialogHeader = React20.forwardRef((_a, ref) => {
|
|
1349
1388
|
var _b = _a, { children, className } = _b, props = __objRest(_b, ["children", "className"]);
|
|
1350
|
-
return /* @__PURE__ */
|
|
1389
|
+
return /* @__PURE__ */ jsxs8(
|
|
1351
1390
|
"div",
|
|
1352
1391
|
__spreadProps(__spreadValues({
|
|
1353
1392
|
ref,
|
|
@@ -1405,9 +1444,9 @@ var DialogComponent = Object.assign(Dialog, {
|
|
|
1405
1444
|
|
|
1406
1445
|
// components/ui/Divider.tsx
|
|
1407
1446
|
import * as React21 from "react";
|
|
1408
|
-
import { cva as
|
|
1409
|
-
import { jsx as jsx23, jsxs as
|
|
1410
|
-
var dividerVariants =
|
|
1447
|
+
import { cva as cva12 } from "class-variance-authority";
|
|
1448
|
+
import { jsx as jsx23, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1449
|
+
var dividerVariants = cva12("border-border", {
|
|
1411
1450
|
variants: {
|
|
1412
1451
|
orientation: {
|
|
1413
1452
|
horizontal: "w-full border-t-2",
|
|
@@ -1422,7 +1461,7 @@ var Divider = React21.forwardRef(
|
|
|
1422
1461
|
(_a, ref) => {
|
|
1423
1462
|
var _b = _a, { className, orientation = "horizontal", label } = _b, props = __objRest(_b, ["className", "orientation", "label"]);
|
|
1424
1463
|
if (label && orientation === "horizontal") {
|
|
1425
|
-
return /* @__PURE__ */
|
|
1464
|
+
return /* @__PURE__ */ jsxs9(
|
|
1426
1465
|
"div",
|
|
1427
1466
|
__spreadProps(__spreadValues({
|
|
1428
1467
|
ref,
|
|
@@ -1451,9 +1490,9 @@ Divider.displayName = "Divider";
|
|
|
1451
1490
|
|
|
1452
1491
|
// components/ui/Stack.tsx
|
|
1453
1492
|
import * as React22 from "react";
|
|
1454
|
-
import { cva as
|
|
1493
|
+
import { cva as cva13 } from "class-variance-authority";
|
|
1455
1494
|
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
1456
|
-
var stackVariants =
|
|
1495
|
+
var stackVariants = cva13("flex", {
|
|
1457
1496
|
variants: {
|
|
1458
1497
|
direction: {
|
|
1459
1498
|
vertical: "flex-col",
|
|
@@ -1523,9 +1562,9 @@ Stack.displayName = "Stack";
|
|
|
1523
1562
|
|
|
1524
1563
|
// components/ui/Flex.tsx
|
|
1525
1564
|
import * as React23 from "react";
|
|
1526
|
-
import { cva as
|
|
1565
|
+
import { cva as cva14 } from "class-variance-authority";
|
|
1527
1566
|
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
1528
|
-
var flexVariants =
|
|
1567
|
+
var flexVariants = cva14("flex", {
|
|
1529
1568
|
variants: {
|
|
1530
1569
|
direction: {
|
|
1531
1570
|
row: "flex-row",
|
|
@@ -1607,9 +1646,9 @@ Flex.displayName = "Flex";
|
|
|
1607
1646
|
|
|
1608
1647
|
// components/ui/Grid.tsx
|
|
1609
1648
|
import * as React24 from "react";
|
|
1610
|
-
import { cva as
|
|
1649
|
+
import { cva as cva15 } from "class-variance-authority";
|
|
1611
1650
|
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
1612
|
-
var gridVariants =
|
|
1651
|
+
var gridVariants = cva15("grid", {
|
|
1613
1652
|
variants: {
|
|
1614
1653
|
columns: {
|
|
1615
1654
|
1: "grid-cols-1",
|
|
@@ -1700,9 +1739,9 @@ Grid.displayName = "Grid";
|
|
|
1700
1739
|
|
|
1701
1740
|
// components/ui/Container.tsx
|
|
1702
1741
|
import * as React25 from "react";
|
|
1703
|
-
import { cva as
|
|
1742
|
+
import { cva as cva16 } from "class-variance-authority";
|
|
1704
1743
|
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
1705
|
-
var containerVariants =
|
|
1744
|
+
var containerVariants = cva16("mx-auto px-4 sm:px-6 lg:px-8", {
|
|
1706
1745
|
variants: {
|
|
1707
1746
|
size: {
|
|
1708
1747
|
sm: "max-w-2xl",
|
|
@@ -1746,7 +1785,7 @@ Container.displayName = "Container";
|
|
|
1746
1785
|
import * as React26 from "react";
|
|
1747
1786
|
import * as AccordionPrimitives from "@radix-ui/react-accordion";
|
|
1748
1787
|
import { ChevronDown as ChevronDown2 } from "lucide-react";
|
|
1749
|
-
import { jsx as jsx28, jsxs as
|
|
1788
|
+
import { jsx as jsx28, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1750
1789
|
var AccordionRoot = React26.forwardRef((_a, ref) => {
|
|
1751
1790
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1752
1791
|
return /* @__PURE__ */ jsx28(
|
|
@@ -1774,7 +1813,7 @@ var AccordionItem = React26.forwardRef((_a, ref) => {
|
|
|
1774
1813
|
AccordionItem.displayName = "Accordion.Item";
|
|
1775
1814
|
var AccordionTrigger = React26.forwardRef((_a, ref) => {
|
|
1776
1815
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
1777
|
-
return /* @__PURE__ */ jsx28(AccordionPrimitives.Header, { className: "flex", children: /* @__PURE__ */
|
|
1816
|
+
return /* @__PURE__ */ jsx28(AccordionPrimitives.Header, { className: "flex", children: /* @__PURE__ */ jsxs10(
|
|
1778
1817
|
AccordionPrimitives.Trigger,
|
|
1779
1818
|
__spreadProps(__spreadValues({
|
|
1780
1819
|
ref,
|
|
@@ -1817,7 +1856,7 @@ var AccordionComponent = Object.assign(AccordionRoot, {
|
|
|
1817
1856
|
// components/ui/ScrollArea.tsx
|
|
1818
1857
|
import * as React27 from "react";
|
|
1819
1858
|
import * as ScrollAreaPrimitives from "@radix-ui/react-scroll-area";
|
|
1820
|
-
import { jsx as jsx29, jsxs as
|
|
1859
|
+
import { jsx as jsx29, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1821
1860
|
var ScrollBar = React27.forwardRef((_a, ref) => {
|
|
1822
1861
|
var _b = _a, { className, orientation = "vertical" } = _b, props = __objRest(_b, ["className", "orientation"]);
|
|
1823
1862
|
return /* @__PURE__ */ jsx29(
|
|
@@ -1839,7 +1878,7 @@ var ScrollBar = React27.forwardRef((_a, ref) => {
|
|
|
1839
1878
|
ScrollBar.displayName = "ScrollArea.ScrollBar";
|
|
1840
1879
|
var ScrollAreaRoot = React27.forwardRef((_a, ref) => {
|
|
1841
1880
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
1842
|
-
return /* @__PURE__ */
|
|
1881
|
+
return /* @__PURE__ */ jsxs11(
|
|
1843
1882
|
ScrollAreaPrimitives.Root,
|
|
1844
1883
|
__spreadProps(__spreadValues({
|
|
1845
1884
|
ref,
|
|
@@ -2095,7 +2134,7 @@ var PopoverComponent = Object.assign(PopoverRoot, {
|
|
|
2095
2134
|
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
|
|
2096
2135
|
import { Check as Check3, ChevronRight, Circle } from "lucide-react";
|
|
2097
2136
|
import * as React34 from "react";
|
|
2098
|
-
import { jsx as jsx36, jsxs as
|
|
2137
|
+
import { jsx as jsx36, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
2099
2138
|
var ContextMenuRoot = ContextMenuPrimitive.Root;
|
|
2100
2139
|
var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
|
|
2101
2140
|
var ContextMenuGroup = ContextMenuPrimitive.Group;
|
|
@@ -2104,7 +2143,7 @@ var ContextMenuSub = ContextMenuPrimitive.Sub;
|
|
|
2104
2143
|
var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
|
|
2105
2144
|
var ContextMenuSubTrigger = React34.forwardRef((_a, ref) => {
|
|
2106
2145
|
var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
|
|
2107
|
-
return /* @__PURE__ */
|
|
2146
|
+
return /* @__PURE__ */ jsxs12(
|
|
2108
2147
|
ContextMenuPrimitive.SubTrigger,
|
|
2109
2148
|
__spreadProps(__spreadValues({
|
|
2110
2149
|
ref,
|
|
@@ -2167,7 +2206,7 @@ var ContextMenuItem = React34.forwardRef((_a, ref) => {
|
|
|
2167
2206
|
ContextMenuItem.displayName = "ContextMenu.Item";
|
|
2168
2207
|
var ContextMenuCheckboxItem = React34.forwardRef((_a, ref) => {
|
|
2169
2208
|
var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
|
|
2170
|
-
return /* @__PURE__ */
|
|
2209
|
+
return /* @__PURE__ */ jsxs12(
|
|
2171
2210
|
ContextMenuPrimitive.CheckboxItem,
|
|
2172
2211
|
__spreadProps(__spreadValues({
|
|
2173
2212
|
ref,
|
|
@@ -2187,7 +2226,7 @@ var ContextMenuCheckboxItem = React34.forwardRef((_a, ref) => {
|
|
|
2187
2226
|
ContextMenuCheckboxItem.displayName = "ContextMenu.CheckboxItem";
|
|
2188
2227
|
var ContextMenuRadioItem = React34.forwardRef((_a, ref) => {
|
|
2189
2228
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
2190
|
-
return /* @__PURE__ */
|
|
2229
|
+
return /* @__PURE__ */ jsxs12(
|
|
2191
2230
|
ContextMenuPrimitive.RadioItem,
|
|
2192
2231
|
__spreadProps(__spreadValues({
|
|
2193
2232
|
ref,
|
|
@@ -2268,7 +2307,7 @@ var ContextMenuComponent = Object.assign(ContextMenuRoot, {
|
|
|
2268
2307
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
2269
2308
|
import { Check as Check4, ChevronRight as ChevronRight2, Circle as Circle2 } from "lucide-react";
|
|
2270
2309
|
import * as React35 from "react";
|
|
2271
|
-
import { jsx as jsx37, jsxs as
|
|
2310
|
+
import { jsx as jsx37, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2272
2311
|
var DropdownMenuRoot = DropdownMenuPrimitive.Root;
|
|
2273
2312
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
2274
2313
|
var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
@@ -2277,7 +2316,7 @@ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
|
2277
2316
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
2278
2317
|
var DropdownMenuSubTrigger = React35.forwardRef((_a, ref) => {
|
|
2279
2318
|
var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
|
|
2280
|
-
return /* @__PURE__ */
|
|
2319
|
+
return /* @__PURE__ */ jsxs13(
|
|
2281
2320
|
DropdownMenuPrimitive.SubTrigger,
|
|
2282
2321
|
__spreadProps(__spreadValues({
|
|
2283
2322
|
ref,
|
|
@@ -2341,7 +2380,7 @@ var DropdownMenuItem = React35.forwardRef((_a, ref) => {
|
|
|
2341
2380
|
DropdownMenuItem.displayName = "DropdownMenu.Item";
|
|
2342
2381
|
var DropdownMenuCheckboxItem = React35.forwardRef((_a, ref) => {
|
|
2343
2382
|
var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
|
|
2344
|
-
return /* @__PURE__ */
|
|
2383
|
+
return /* @__PURE__ */ jsxs13(
|
|
2345
2384
|
DropdownMenuPrimitive.CheckboxItem,
|
|
2346
2385
|
__spreadProps(__spreadValues({
|
|
2347
2386
|
ref,
|
|
@@ -2361,7 +2400,7 @@ var DropdownMenuCheckboxItem = React35.forwardRef((_a, ref) => {
|
|
|
2361
2400
|
DropdownMenuCheckboxItem.displayName = "DropdownMenu.CheckboxItem";
|
|
2362
2401
|
var DropdownMenuRadioItem = React35.forwardRef((_a, ref) => {
|
|
2363
2402
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
2364
|
-
return /* @__PURE__ */
|
|
2403
|
+
return /* @__PURE__ */ jsxs13(
|
|
2365
2404
|
DropdownMenuPrimitive.RadioItem,
|
|
2366
2405
|
__spreadProps(__spreadValues({
|
|
2367
2406
|
ref,
|
|
@@ -2558,7 +2597,7 @@ var TableComponent = Object.assign(TableRoot, {
|
|
|
2558
2597
|
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
2559
2598
|
import { Check as Check5, ChevronRight as ChevronRight3, Circle as Circle3 } from "lucide-react";
|
|
2560
2599
|
import * as React37 from "react";
|
|
2561
|
-
import { jsx as jsx39, jsxs as
|
|
2600
|
+
import { jsx as jsx39, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2562
2601
|
var MenubarRoot = React37.forwardRef((_a, ref) => {
|
|
2563
2602
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2564
2603
|
return /* @__PURE__ */ jsx39(
|
|
@@ -2626,7 +2665,7 @@ var MenubarItem = React37.forwardRef((_a, ref) => {
|
|
|
2626
2665
|
MenubarItem.displayName = "Menubar.Item";
|
|
2627
2666
|
var MenubarCheckboxItem = React37.forwardRef((_a, ref) => {
|
|
2628
2667
|
var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
|
|
2629
|
-
return /* @__PURE__ */
|
|
2668
|
+
return /* @__PURE__ */ jsxs14(
|
|
2630
2669
|
MenubarPrimitive.CheckboxItem,
|
|
2631
2670
|
__spreadProps(__spreadValues({
|
|
2632
2671
|
ref,
|
|
@@ -2646,7 +2685,7 @@ var MenubarCheckboxItem = React37.forwardRef((_a, ref) => {
|
|
|
2646
2685
|
MenubarCheckboxItem.displayName = "Menubar.CheckboxItem";
|
|
2647
2686
|
var MenubarRadioItem = React37.forwardRef((_a, ref) => {
|
|
2648
2687
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
2649
|
-
return /* @__PURE__ */
|
|
2688
|
+
return /* @__PURE__ */ jsxs14(
|
|
2650
2689
|
MenubarPrimitive.RadioItem,
|
|
2651
2690
|
__spreadProps(__spreadValues({
|
|
2652
2691
|
ref,
|
|
@@ -2708,7 +2747,7 @@ var MenubarShortcut = (_a) => {
|
|
|
2708
2747
|
MenubarShortcut.displayName = "Menubar.Shortcut";
|
|
2709
2748
|
var MenubarSubTrigger = React37.forwardRef((_a, ref) => {
|
|
2710
2749
|
var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
|
|
2711
|
-
return /* @__PURE__ */
|
|
2750
|
+
return /* @__PURE__ */ jsxs14(
|
|
2712
2751
|
MenubarPrimitive.SubTrigger,
|
|
2713
2752
|
__spreadProps(__spreadValues({
|
|
2714
2753
|
ref,
|
|
@@ -2761,12 +2800,12 @@ var MenubarComponent = Object.assign(MenubarRoot, {
|
|
|
2761
2800
|
// components/ui/NavigationMenu.tsx
|
|
2762
2801
|
import * as React38 from "react";
|
|
2763
2802
|
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
|
|
2764
|
-
import { cva as
|
|
2803
|
+
import { cva as cva17 } from "class-variance-authority";
|
|
2765
2804
|
import { ChevronDown as ChevronDown3 } from "lucide-react";
|
|
2766
|
-
import { jsx as jsx40, jsxs as
|
|
2805
|
+
import { jsx as jsx40, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
2767
2806
|
var NavigationMenuRoot = React38.forwardRef((_a, ref) => {
|
|
2768
2807
|
var _b = _a, { className, children, viewport = true } = _b, props = __objRest(_b, ["className", "children", "viewport"]);
|
|
2769
|
-
return /* @__PURE__ */
|
|
2808
|
+
return /* @__PURE__ */ jsxs15(
|
|
2770
2809
|
NavigationMenuPrimitive.Root,
|
|
2771
2810
|
__spreadProps(__spreadValues({
|
|
2772
2811
|
ref,
|
|
@@ -2809,12 +2848,12 @@ var NavigationMenuItem = React38.forwardRef((_a, ref) => {
|
|
|
2809
2848
|
);
|
|
2810
2849
|
});
|
|
2811
2850
|
NavigationMenuItem.displayName = "NavigationMenu.Item";
|
|
2812
|
-
var navigationMenuTriggerStyle =
|
|
2851
|
+
var navigationMenuTriggerStyle = cva17(
|
|
2813
2852
|
"group inline-flex h-10 w-max items-center justify-center bg-background text-foreground px-4 py-2 text-sm font-head transition-colors hover:bg-muted focus:outline-none disabled:pointer-events-none disabled:opacity-50"
|
|
2814
2853
|
);
|
|
2815
2854
|
var NavigationMenuTrigger = React38.forwardRef((_a, ref) => {
|
|
2816
2855
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
2817
|
-
return /* @__PURE__ */
|
|
2856
|
+
return /* @__PURE__ */ jsxs15(
|
|
2818
2857
|
NavigationMenuPrimitive.Trigger,
|
|
2819
2858
|
__spreadProps(__spreadValues({
|
|
2820
2859
|
ref,
|
|
@@ -2976,7 +3015,7 @@ var ResizableComponent = Object.assign(ResizablePanelGroup, {
|
|
|
2976
3015
|
// components/ui/Chart.tsx
|
|
2977
3016
|
import * as React39 from "react";
|
|
2978
3017
|
import * as RechartsPrimitive from "recharts";
|
|
2979
|
-
import { Fragment, jsx as jsx42, jsxs as
|
|
3018
|
+
import { Fragment, jsx as jsx42, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2980
3019
|
var THEMES = { light: "", dark: ".dark" };
|
|
2981
3020
|
var ChartContext = React39.createContext(null);
|
|
2982
3021
|
function useChart() {
|
|
@@ -2991,7 +3030,7 @@ var ChartContainer = React39.forwardRef(
|
|
|
2991
3030
|
var _b = _a, { id, className, children, config } = _b, props = __objRest(_b, ["id", "className", "children", "config"]);
|
|
2992
3031
|
const uniqueId = React39.useId();
|
|
2993
3032
|
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
2994
|
-
return /* @__PURE__ */ jsx42(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */
|
|
3033
|
+
return /* @__PURE__ */ jsx42(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs16(
|
|
2995
3034
|
"div",
|
|
2996
3035
|
__spreadProps(__spreadValues({
|
|
2997
3036
|
ref,
|
|
@@ -3087,7 +3126,7 @@ var ChartTooltipContent = React39.forwardRef(
|
|
|
3087
3126
|
return null;
|
|
3088
3127
|
}
|
|
3089
3128
|
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
3090
|
-
return /* @__PURE__ */
|
|
3129
|
+
return /* @__PURE__ */ jsxs16(
|
|
3091
3130
|
"div",
|
|
3092
3131
|
{
|
|
3093
3132
|
ref,
|
|
@@ -3109,7 +3148,7 @@ var ChartTooltipContent = React39.forwardRef(
|
|
|
3109
3148
|
"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5",
|
|
3110
3149
|
indicator === "dot" && "items-center"
|
|
3111
3150
|
),
|
|
3112
|
-
children: formatter && (item == null ? void 0 : item.value) !== void 0 && item.name ? formatter(item.value, item.name, item, index, itemPayload) : /* @__PURE__ */
|
|
3151
|
+
children: formatter && (item == null ? void 0 : item.value) !== void 0 && item.name ? formatter(item.value, item.name, item, index, itemPayload) : /* @__PURE__ */ jsxs16(Fragment, { children: [
|
|
3113
3152
|
(itemConfig == null ? void 0 : itemConfig.icon) ? /* @__PURE__ */ jsx42(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx42(
|
|
3114
3153
|
"div",
|
|
3115
3154
|
{
|
|
@@ -3127,7 +3166,7 @@ var ChartTooltipContent = React39.forwardRef(
|
|
|
3127
3166
|
}
|
|
3128
3167
|
}
|
|
3129
3168
|
),
|
|
3130
|
-
/* @__PURE__ */
|
|
3169
|
+
/* @__PURE__ */ jsxs16(
|
|
3131
3170
|
"div",
|
|
3132
3171
|
{
|
|
3133
3172
|
className: cn(
|
|
@@ -3135,7 +3174,7 @@ var ChartTooltipContent = React39.forwardRef(
|
|
|
3135
3174
|
nestLabel ? "items-end" : "items-center"
|
|
3136
3175
|
),
|
|
3137
3176
|
children: [
|
|
3138
|
-
/* @__PURE__ */
|
|
3177
|
+
/* @__PURE__ */ jsxs16("div", { className: "grid gap-1.5", children: [
|
|
3139
3178
|
nestLabel ? tooltipLabel : null,
|
|
3140
3179
|
/* @__PURE__ */ jsx42("span", { className: "text-muted-foreground", children: (itemConfig == null ? void 0 : itemConfig.label) || item.name })
|
|
3141
3180
|
] }),
|
|
@@ -3173,7 +3212,7 @@ var ChartLegendContent = React39.forwardRef(
|
|
|
3173
3212
|
children: payload.map((item) => {
|
|
3174
3213
|
const key = `${nameKey || item.dataKey || "value"}`;
|
|
3175
3214
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
3176
|
-
return /* @__PURE__ */
|
|
3215
|
+
return /* @__PURE__ */ jsxs16(
|
|
3177
3216
|
"div",
|
|
3178
3217
|
{
|
|
3179
3218
|
className: cn(
|
|
@@ -3232,30 +3271,58 @@ import * as React40 from "react";
|
|
|
3232
3271
|
// components/ThemeProvider.tsx
|
|
3233
3272
|
import { createContext as createContext3, useContext as useContext3, useEffect, useState as useState2, useCallback, useMemo as useMemo2 } from "react";
|
|
3234
3273
|
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
3274
|
+
var VALID_THEMES = ["light", "dark", "system"];
|
|
3275
|
+
var COLOR_THEMES = ["blue", "plum", "plum-trio"];
|
|
3235
3276
|
var ThemeContext = createContext3(void 0);
|
|
3236
3277
|
var STORAGE_KEY = "substrateui-theme";
|
|
3278
|
+
var COLOR_STORAGE_KEY = "substrateui-color-theme";
|
|
3237
3279
|
function getSystemTheme() {
|
|
3238
3280
|
if (typeof window === "undefined") return "light";
|
|
3239
3281
|
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
3240
3282
|
}
|
|
3283
|
+
function readStoredTheme(key, fallback) {
|
|
3284
|
+
if (typeof window === "undefined") return fallback;
|
|
3285
|
+
const stored = localStorage.getItem(key);
|
|
3286
|
+
return VALID_THEMES.includes(stored) ? stored : fallback;
|
|
3287
|
+
}
|
|
3288
|
+
function readStoredColorTheme(key, fallback) {
|
|
3289
|
+
if (typeof window === "undefined") return fallback;
|
|
3290
|
+
const stored = localStorage.getItem(key);
|
|
3291
|
+
return COLOR_THEMES.includes(stored != null ? stored : "") ? stored : fallback;
|
|
3292
|
+
}
|
|
3241
3293
|
function applyClass(resolved) {
|
|
3242
3294
|
document.documentElement.classList.remove("light", "dark");
|
|
3243
3295
|
document.documentElement.classList.add(resolved);
|
|
3244
3296
|
}
|
|
3297
|
+
function applyColorTheme(colorTheme) {
|
|
3298
|
+
for (const t of COLOR_THEMES) {
|
|
3299
|
+
document.documentElement.classList.remove(`theme-${t}`);
|
|
3300
|
+
}
|
|
3301
|
+
if (colorTheme !== "blue") {
|
|
3302
|
+
document.documentElement.classList.add(`theme-${colorTheme}`);
|
|
3303
|
+
}
|
|
3304
|
+
}
|
|
3245
3305
|
function ThemeProvider({
|
|
3246
3306
|
children,
|
|
3247
3307
|
defaultTheme = "system",
|
|
3248
|
-
|
|
3308
|
+
defaultColorTheme = "blue",
|
|
3309
|
+
storageKey = STORAGE_KEY,
|
|
3310
|
+
colorStorageKey = COLOR_STORAGE_KEY
|
|
3249
3311
|
}) {
|
|
3250
|
-
const [theme, setThemeState] = useState2(
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3312
|
+
const [theme, setThemeState] = useState2(
|
|
3313
|
+
() => readStoredTheme(storageKey, defaultTheme)
|
|
3314
|
+
);
|
|
3315
|
+
const [colorTheme, setColorThemeState] = useState2(
|
|
3316
|
+
() => readStoredColorTheme(colorStorageKey, defaultColorTheme)
|
|
3317
|
+
);
|
|
3254
3318
|
const [systemTheme, setSystemTheme] = useState2(getSystemTheme);
|
|
3255
3319
|
const resolvedTheme = theme === "system" ? systemTheme : theme;
|
|
3256
3320
|
useEffect(() => {
|
|
3257
3321
|
applyClass(resolvedTheme);
|
|
3258
3322
|
}, [resolvedTheme]);
|
|
3323
|
+
useEffect(() => {
|
|
3324
|
+
applyColorTheme(colorTheme);
|
|
3325
|
+
}, [colorTheme]);
|
|
3259
3326
|
useEffect(() => {
|
|
3260
3327
|
const mq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
3261
3328
|
const handler = (e) => {
|
|
@@ -3264,6 +3331,23 @@ function ThemeProvider({
|
|
|
3264
3331
|
mq.addEventListener("change", handler);
|
|
3265
3332
|
return () => mq.removeEventListener("change", handler);
|
|
3266
3333
|
}, []);
|
|
3334
|
+
useEffect(() => {
|
|
3335
|
+
const handler = (e) => {
|
|
3336
|
+
var _a;
|
|
3337
|
+
if (e.key === storageKey) {
|
|
3338
|
+
setThemeState(
|
|
3339
|
+
VALID_THEMES.includes(e.newValue) ? e.newValue : defaultTheme
|
|
3340
|
+
);
|
|
3341
|
+
}
|
|
3342
|
+
if (e.key === colorStorageKey) {
|
|
3343
|
+
setColorThemeState(
|
|
3344
|
+
COLOR_THEMES.includes((_a = e.newValue) != null ? _a : "") ? e.newValue : defaultColorTheme
|
|
3345
|
+
);
|
|
3346
|
+
}
|
|
3347
|
+
};
|
|
3348
|
+
window.addEventListener("storage", handler);
|
|
3349
|
+
return () => window.removeEventListener("storage", handler);
|
|
3350
|
+
}, [storageKey, colorStorageKey, defaultTheme, defaultColorTheme]);
|
|
3267
3351
|
const setTheme = useCallback(
|
|
3268
3352
|
(newTheme) => {
|
|
3269
3353
|
localStorage.setItem(storageKey, newTheme);
|
|
@@ -3271,9 +3355,16 @@ function ThemeProvider({
|
|
|
3271
3355
|
},
|
|
3272
3356
|
[storageKey]
|
|
3273
3357
|
);
|
|
3358
|
+
const setColorTheme = useCallback(
|
|
3359
|
+
(newColorTheme) => {
|
|
3360
|
+
localStorage.setItem(colorStorageKey, newColorTheme);
|
|
3361
|
+
setColorThemeState(newColorTheme);
|
|
3362
|
+
},
|
|
3363
|
+
[colorStorageKey]
|
|
3364
|
+
);
|
|
3274
3365
|
const value = useMemo2(
|
|
3275
|
-
() => ({ theme, resolvedTheme, setTheme }),
|
|
3276
|
-
[theme, resolvedTheme, setTheme]
|
|
3366
|
+
() => ({ theme, resolvedTheme, setTheme, colorTheme, setColorTheme, colorThemes: COLOR_THEMES }),
|
|
3367
|
+
[theme, resolvedTheme, setTheme, colorTheme, setColorTheme]
|
|
3277
3368
|
);
|
|
3278
3369
|
return /* @__PURE__ */ jsx43(ThemeContext.Provider, { value, children });
|
|
3279
3370
|
}
|
|
@@ -3316,7 +3407,7 @@ Toaster.displayName = "Toaster";
|
|
|
3316
3407
|
|
|
3317
3408
|
// components/ui/Marquee.tsx
|
|
3318
3409
|
import * as React41 from "react";
|
|
3319
|
-
import { jsx as jsx45, jsxs as
|
|
3410
|
+
import { jsx as jsx45, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
3320
3411
|
var Marquee = React41.forwardRef(
|
|
3321
3412
|
(_a, ref) => {
|
|
3322
3413
|
var _b = _a, {
|
|
@@ -3333,7 +3424,7 @@ var Marquee = React41.forwardRef(
|
|
|
3333
3424
|
"className"
|
|
3334
3425
|
]);
|
|
3335
3426
|
const direction = reverse ? "reverse" : "normal";
|
|
3336
|
-
return /* @__PURE__ */
|
|
3427
|
+
return /* @__PURE__ */ jsxs17(
|
|
3337
3428
|
"div",
|
|
3338
3429
|
__spreadProps(__spreadValues({
|
|
3339
3430
|
ref,
|
|
@@ -3375,11 +3466,11 @@ Marquee.displayName = "Marquee";
|
|
|
3375
3466
|
|
|
3376
3467
|
// components/ui/ImageCard.tsx
|
|
3377
3468
|
import * as React42 from "react";
|
|
3378
|
-
import { jsx as jsx46, jsxs as
|
|
3469
|
+
import { jsx as jsx46, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
3379
3470
|
var ImageCard = React42.forwardRef(
|
|
3380
3471
|
(_a, ref) => {
|
|
3381
3472
|
var _b = _a, { imageUrl, caption, alt, className } = _b, props = __objRest(_b, ["imageUrl", "caption", "alt", "className"]);
|
|
3382
|
-
return /* @__PURE__ */
|
|
3473
|
+
return /* @__PURE__ */ jsxs18(
|
|
3383
3474
|
"figure",
|
|
3384
3475
|
__spreadProps(__spreadValues({
|
|
3385
3476
|
ref,
|
|
@@ -3409,7 +3500,7 @@ ImageCard.displayName = "ImageCard";
|
|
|
3409
3500
|
import * as React43 from "react";
|
|
3410
3501
|
import { OTPInput, OTPInputContext } from "input-otp";
|
|
3411
3502
|
import { Dot } from "lucide-react";
|
|
3412
|
-
import { jsx as jsx47, jsxs as
|
|
3503
|
+
import { jsx as jsx47, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
3413
3504
|
var InputOTPRoot = React43.forwardRef(
|
|
3414
3505
|
(_a, ref) => {
|
|
3415
3506
|
var _b = _a, { className, containerClassName } = _b, props = __objRest(_b, ["className", "containerClassName"]);
|
|
@@ -3446,7 +3537,7 @@ var InputOTPSlot = React43.forwardRef(
|
|
|
3446
3537
|
var _a2;
|
|
3447
3538
|
const inputOTPContext = React43.useContext(OTPInputContext);
|
|
3448
3539
|
const { char, hasFakeCaret, isActive } = (_a2 = inputOTPContext == null ? void 0 : inputOTPContext.slots[index]) != null ? _a2 : {};
|
|
3449
|
-
return /* @__PURE__ */
|
|
3540
|
+
return /* @__PURE__ */ jsxs19(
|
|
3450
3541
|
"div",
|
|
3451
3542
|
__spreadProps(__spreadValues({
|
|
3452
3543
|
ref,
|
|
@@ -3479,7 +3570,7 @@ var InputOTPComponent = Object.assign(InputOTPRoot, {
|
|
|
3479
3570
|
// components/ui/AlertDialog.tsx
|
|
3480
3571
|
import * as React44 from "react";
|
|
3481
3572
|
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
3482
|
-
import { jsx as jsx48, jsxs as
|
|
3573
|
+
import { jsx as jsx48, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
3483
3574
|
var AlertDialog = AlertDialogPrimitive.Root;
|
|
3484
3575
|
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
3485
3576
|
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
@@ -3499,7 +3590,7 @@ var AlertDialogOverlay = React44.forwardRef((_a, ref) => {
|
|
|
3499
3590
|
AlertDialogOverlay.displayName = "AlertDialog.Overlay";
|
|
3500
3591
|
var AlertDialogContent = React44.forwardRef((_a, ref) => {
|
|
3501
3592
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3502
|
-
return /* @__PURE__ */
|
|
3593
|
+
return /* @__PURE__ */ jsxs20(AlertDialogPortal, { children: [
|
|
3503
3594
|
/* @__PURE__ */ jsx48(AlertDialogOverlay, {}),
|
|
3504
3595
|
/* @__PURE__ */ jsx48(
|
|
3505
3596
|
AlertDialogPrimitive.Content,
|
|
@@ -3598,7 +3689,7 @@ var AlertDialogComponent = Object.assign(AlertDialog, {
|
|
|
3598
3689
|
import * as React45 from "react";
|
|
3599
3690
|
import { Slot as Slot6 } from "@radix-ui/react-slot";
|
|
3600
3691
|
import { ChevronRight as ChevronRight4, MoreHorizontal as MoreHorizontal2 } from "lucide-react";
|
|
3601
|
-
import { jsx as jsx49, jsxs as
|
|
3692
|
+
import { jsx as jsx49, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
3602
3693
|
var Breadcrumb = React45.forwardRef((_a, ref) => {
|
|
3603
3694
|
var props = __objRest(_a, []);
|
|
3604
3695
|
return /* @__PURE__ */ jsx49("nav", __spreadValues({ ref, "aria-label": "breadcrumb" }, props));
|
|
@@ -3674,7 +3765,7 @@ var BreadcrumbSeparator = React45.forwardRef((_a, ref) => {
|
|
|
3674
3765
|
BreadcrumbSeparator.displayName = "Breadcrumb.Separator";
|
|
3675
3766
|
var BreadcrumbEllipsis = React45.forwardRef((_a, ref) => {
|
|
3676
3767
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3677
|
-
return /* @__PURE__ */
|
|
3768
|
+
return /* @__PURE__ */ jsxs21(
|
|
3678
3769
|
"span",
|
|
3679
3770
|
__spreadProps(__spreadValues({
|
|
3680
3771
|
ref,
|
|
@@ -3769,7 +3860,7 @@ Calendar.displayName = "Calendar";
|
|
|
3769
3860
|
import * as React47 from "react";
|
|
3770
3861
|
import useEmblaCarousel from "embla-carousel-react";
|
|
3771
3862
|
import { ArrowLeft, ArrowRight } from "lucide-react";
|
|
3772
|
-
import { jsx as jsx51, jsxs as
|
|
3863
|
+
import { jsx as jsx51, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
3773
3864
|
var CarouselContext = React47.createContext(null);
|
|
3774
3865
|
function useCarousel() {
|
|
3775
3866
|
const context = React47.useContext(CarouselContext);
|
|
@@ -3907,7 +3998,7 @@ var CarouselPrevious = React47.forwardRef(
|
|
|
3907
3998
|
(_a, ref) => {
|
|
3908
3999
|
var _b = _a, { className, variant = "outline", size = "icon" } = _b, props = __objRest(_b, ["className", "variant", "size"]);
|
|
3909
4000
|
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
3910
|
-
return /* @__PURE__ */
|
|
4001
|
+
return /* @__PURE__ */ jsxs22(
|
|
3911
4002
|
Button,
|
|
3912
4003
|
__spreadProps(__spreadValues({
|
|
3913
4004
|
ref,
|
|
@@ -3934,7 +4025,7 @@ var CarouselNext = React47.forwardRef(
|
|
|
3934
4025
|
(_a, ref) => {
|
|
3935
4026
|
var _b = _a, { className, variant = "outline", size = "icon" } = _b, props = __objRest(_b, ["className", "variant", "size"]);
|
|
3936
4027
|
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
3937
|
-
return /* @__PURE__ */
|
|
4028
|
+
return /* @__PURE__ */ jsxs22(
|
|
3938
4029
|
Button,
|
|
3939
4030
|
__spreadProps(__spreadValues({
|
|
3940
4031
|
ref,
|
|
@@ -3967,7 +4058,7 @@ var CarouselComponent = Object.assign(CarouselRoot, {
|
|
|
3967
4058
|
// components/ui/Pagination.tsx
|
|
3968
4059
|
import * as React48 from "react";
|
|
3969
4060
|
import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight6, MoreHorizontal as MoreHorizontal3 } from "lucide-react";
|
|
3970
|
-
import { jsx as jsx52, jsxs as
|
|
4061
|
+
import { jsx as jsx52, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
3971
4062
|
var PaginationRoot = React48.forwardRef((_a, ref) => {
|
|
3972
4063
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3973
4064
|
return /* @__PURE__ */ jsx52(
|
|
@@ -4019,7 +4110,7 @@ var PaginationLink = React48.forwardRef((_a, ref) => {
|
|
|
4019
4110
|
PaginationLink.displayName = "Pagination.Link";
|
|
4020
4111
|
var PaginationPrevious = React48.forwardRef((_a, ref) => {
|
|
4021
4112
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4022
|
-
return /* @__PURE__ */
|
|
4113
|
+
return /* @__PURE__ */ jsxs23(
|
|
4023
4114
|
PaginationLink,
|
|
4024
4115
|
__spreadProps(__spreadValues({
|
|
4025
4116
|
ref,
|
|
@@ -4037,7 +4128,7 @@ var PaginationPrevious = React48.forwardRef((_a, ref) => {
|
|
|
4037
4128
|
PaginationPrevious.displayName = "Pagination.Previous";
|
|
4038
4129
|
var PaginationNext = React48.forwardRef((_a, ref) => {
|
|
4039
4130
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4040
|
-
return /* @__PURE__ */
|
|
4131
|
+
return /* @__PURE__ */ jsxs23(
|
|
4041
4132
|
PaginationLink,
|
|
4042
4133
|
__spreadProps(__spreadValues({
|
|
4043
4134
|
ref,
|
|
@@ -4055,7 +4146,7 @@ var PaginationNext = React48.forwardRef((_a, ref) => {
|
|
|
4055
4146
|
PaginationNext.displayName = "Pagination.Next";
|
|
4056
4147
|
var PaginationEllipsis = React48.forwardRef((_a, ref) => {
|
|
4057
4148
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4058
|
-
return /* @__PURE__ */
|
|
4149
|
+
return /* @__PURE__ */ jsxs23(
|
|
4059
4150
|
"span",
|
|
4060
4151
|
__spreadProps(__spreadValues({
|
|
4061
4152
|
ref,
|
|
@@ -4082,9 +4173,9 @@ var Pagination = Object.assign(PaginationRoot, {
|
|
|
4082
4173
|
// components/ui/Sheet.tsx
|
|
4083
4174
|
import * as React49 from "react";
|
|
4084
4175
|
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
4085
|
-
import { cva as
|
|
4176
|
+
import { cva as cva18 } from "class-variance-authority";
|
|
4086
4177
|
import { X as X2 } from "lucide-react";
|
|
4087
|
-
import { jsx as jsx53, jsxs as
|
|
4178
|
+
import { jsx as jsx53, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
4088
4179
|
var Sheet = SheetPrimitive.Root;
|
|
4089
4180
|
var SheetTrigger = SheetPrimitive.Trigger;
|
|
4090
4181
|
var SheetClose = SheetPrimitive.Close;
|
|
@@ -4102,7 +4193,7 @@ var SheetOverlay = React49.forwardRef((_a, ref) => {
|
|
|
4102
4193
|
);
|
|
4103
4194
|
});
|
|
4104
4195
|
SheetOverlay.displayName = "Sheet.Overlay";
|
|
4105
|
-
var sheetContentVariants =
|
|
4196
|
+
var sheetContentVariants = cva18(
|
|
4106
4197
|
"fixed z-50 flex flex-col gap-4 border-2 border-border bg-background transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
|
|
4107
4198
|
{
|
|
4108
4199
|
variants: {
|
|
@@ -4120,9 +4211,9 @@ var sheetContentVariants = cva17(
|
|
|
4120
4211
|
);
|
|
4121
4212
|
var SheetContent = React49.forwardRef((_a, ref) => {
|
|
4122
4213
|
var _b = _a, { children, side = "right", className } = _b, props = __objRest(_b, ["children", "side", "className"]);
|
|
4123
|
-
return /* @__PURE__ */
|
|
4214
|
+
return /* @__PURE__ */ jsxs24(SheetPrimitive.Portal, { children: [
|
|
4124
4215
|
/* @__PURE__ */ jsx53(SheetOverlay, {}),
|
|
4125
|
-
/* @__PURE__ */
|
|
4216
|
+
/* @__PURE__ */ jsxs24(
|
|
4126
4217
|
SheetPrimitive.Content,
|
|
4127
4218
|
__spreadProps(__spreadValues({
|
|
4128
4219
|
ref,
|
|
@@ -4130,7 +4221,7 @@ var SheetContent = React49.forwardRef((_a, ref) => {
|
|
|
4130
4221
|
}, props), {
|
|
4131
4222
|
children: [
|
|
4132
4223
|
children,
|
|
4133
|
-
/* @__PURE__ */
|
|
4224
|
+
/* @__PURE__ */ jsxs24(SheetPrimitive.Close, { className: "absolute right-4 top-4 cursor-pointer ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none", children: [
|
|
4134
4225
|
/* @__PURE__ */ jsx53(X2, { className: "h-4 w-4" }),
|
|
4135
4226
|
/* @__PURE__ */ jsx53("span", { className: "sr-only", children: "Close" })
|
|
4136
4227
|
] })
|
|
@@ -4323,7 +4414,7 @@ var FormComponent = Object.assign(Form, {
|
|
|
4323
4414
|
import * as React51 from "react";
|
|
4324
4415
|
import { Command as CommandPrimitive } from "cmdk";
|
|
4325
4416
|
import { Search } from "lucide-react";
|
|
4326
|
-
import { jsx as jsx55, jsxs as
|
|
4417
|
+
import { jsx as jsx55, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
4327
4418
|
var CommandRoot = React51.forwardRef((_a, ref) => {
|
|
4328
4419
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4329
4420
|
return /* @__PURE__ */ jsx55(
|
|
@@ -4355,7 +4446,7 @@ var CommandDialog = (_a) => {
|
|
|
4355
4446
|
CommandDialog.displayName = "Command.Dialog";
|
|
4356
4447
|
var CommandInput = React51.forwardRef((_a, ref) => {
|
|
4357
4448
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4358
|
-
return /* @__PURE__ */
|
|
4449
|
+
return /* @__PURE__ */ jsxs25("div", { className: "flex h-9 gap-2 items-center border-b-2 border-border px-3", children: [
|
|
4359
4450
|
/* @__PURE__ */ jsx55(Search, { className: "size-4 shrink-0" }),
|
|
4360
4451
|
/* @__PURE__ */ jsx55(
|
|
4361
4452
|
CommandPrimitive.Input,
|
|
@@ -4465,7 +4556,7 @@ var CommandComponent = Object.assign(CommandRoot, {
|
|
|
4465
4556
|
// components/ui/Combobox.tsx
|
|
4466
4557
|
import * as React52 from "react";
|
|
4467
4558
|
import { Check as Check6, ChevronsUpDown } from "lucide-react";
|
|
4468
|
-
import { jsx as jsx56, jsxs as
|
|
4559
|
+
import { jsx as jsx56, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
4469
4560
|
var ComboboxRoot = React52.forwardRef(
|
|
4470
4561
|
({
|
|
4471
4562
|
items,
|
|
@@ -4491,8 +4582,8 @@ var ComboboxRoot = React52.forwardRef(
|
|
|
4491
4582
|
[onValueChange]
|
|
4492
4583
|
);
|
|
4493
4584
|
const selectedItem = items.find((item) => item.value === value);
|
|
4494
|
-
return /* @__PURE__ */
|
|
4495
|
-
/* @__PURE__ */ jsx56(PopoverComponent.Trigger, { asChild: true, children: /* @__PURE__ */
|
|
4585
|
+
return /* @__PURE__ */ jsxs26(PopoverComponent, { open, onOpenChange: setOpen, children: [
|
|
4586
|
+
/* @__PURE__ */ jsx56(PopoverComponent.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs26(
|
|
4496
4587
|
Button,
|
|
4497
4588
|
{
|
|
4498
4589
|
ref,
|
|
@@ -4507,11 +4598,11 @@ var ComboboxRoot = React52.forwardRef(
|
|
|
4507
4598
|
]
|
|
4508
4599
|
}
|
|
4509
4600
|
) }),
|
|
4510
|
-
/* @__PURE__ */ jsx56(PopoverComponent.Content, { className: "w-[200px] border-0! p-0", children: /* @__PURE__ */
|
|
4601
|
+
/* @__PURE__ */ jsx56(PopoverComponent.Content, { className: "w-[200px] border-0! p-0", children: /* @__PURE__ */ jsxs26(CommandComponent, { children: [
|
|
4511
4602
|
/* @__PURE__ */ jsx56(CommandComponent.Input, { placeholder: searchPlaceholder }),
|
|
4512
|
-
/* @__PURE__ */
|
|
4603
|
+
/* @__PURE__ */ jsxs26(CommandComponent.List, { children: [
|
|
4513
4604
|
/* @__PURE__ */ jsx56(CommandComponent.Empty, { children: emptyText }),
|
|
4514
|
-
/* @__PURE__ */ jsx56(CommandComponent.Group, { children: items.map((item) => /* @__PURE__ */
|
|
4605
|
+
/* @__PURE__ */ jsx56(CommandComponent.Group, { children: items.map((item) => /* @__PURE__ */ jsxs26(
|
|
4515
4606
|
CommandComponent.Item,
|
|
4516
4607
|
{
|
|
4517
4608
|
value: item.value,
|
|
@@ -4566,8 +4657,8 @@ var ComboboxMulti = React52.forwardRef(
|
|
|
4566
4657
|
[onValuesChange]
|
|
4567
4658
|
);
|
|
4568
4659
|
const selectedLabels = items.filter((item) => values.includes(item.value)).map((item) => item.label);
|
|
4569
|
-
return /* @__PURE__ */
|
|
4570
|
-
/* @__PURE__ */ jsx56(PopoverComponent.Trigger, { asChild: true, children: /* @__PURE__ */
|
|
4660
|
+
return /* @__PURE__ */ jsxs26(PopoverComponent, { open, onOpenChange: setOpen, children: [
|
|
4661
|
+
/* @__PURE__ */ jsx56(PopoverComponent.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs26(
|
|
4571
4662
|
Button,
|
|
4572
4663
|
{
|
|
4573
4664
|
ref,
|
|
@@ -4582,11 +4673,11 @@ var ComboboxMulti = React52.forwardRef(
|
|
|
4582
4673
|
]
|
|
4583
4674
|
}
|
|
4584
4675
|
) }),
|
|
4585
|
-
/* @__PURE__ */ jsx56(PopoverComponent.Content, { className: "w-[200px] border-0! p-0", children: /* @__PURE__ */
|
|
4676
|
+
/* @__PURE__ */ jsx56(PopoverComponent.Content, { className: "w-[200px] border-0! p-0", children: /* @__PURE__ */ jsxs26(CommandComponent, { children: [
|
|
4586
4677
|
/* @__PURE__ */ jsx56(CommandComponent.Input, { placeholder: searchPlaceholder }),
|
|
4587
|
-
/* @__PURE__ */
|
|
4678
|
+
/* @__PURE__ */ jsxs26(CommandComponent.List, { children: [
|
|
4588
4679
|
/* @__PURE__ */ jsx56(CommandComponent.Empty, { children: emptyText }),
|
|
4589
|
-
/* @__PURE__ */ jsx56(CommandComponent.Group, { children: items.map((item) => /* @__PURE__ */
|
|
4680
|
+
/* @__PURE__ */ jsx56(CommandComponent.Group, { children: items.map((item) => /* @__PURE__ */ jsxs26(
|
|
4590
4681
|
CommandComponent.Item,
|
|
4591
4682
|
{
|
|
4592
4683
|
value: item.value,
|
|
@@ -4631,14 +4722,14 @@ import {
|
|
|
4631
4722
|
useReactTable
|
|
4632
4723
|
} from "@tanstack/react-table";
|
|
4633
4724
|
import { ArrowUpDown, ChevronDown as ChevronDown4 } from "lucide-react";
|
|
4634
|
-
import { jsx as jsx57, jsxs as
|
|
4725
|
+
import { jsx as jsx57, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
4635
4726
|
var DataTableToolbar = ({
|
|
4636
4727
|
filterValue,
|
|
4637
4728
|
onFilterChange,
|
|
4638
4729
|
filterPlaceholder,
|
|
4639
4730
|
showColumnToggle,
|
|
4640
4731
|
columns
|
|
4641
|
-
}) => /* @__PURE__ */
|
|
4732
|
+
}) => /* @__PURE__ */ jsxs27("div", { className: "flex items-center py-4 gap-2", children: [
|
|
4642
4733
|
/* @__PURE__ */ jsx57(
|
|
4643
4734
|
Input,
|
|
4644
4735
|
{
|
|
@@ -4648,8 +4739,8 @@ var DataTableToolbar = ({
|
|
|
4648
4739
|
className: "max-w-sm"
|
|
4649
4740
|
}
|
|
4650
4741
|
),
|
|
4651
|
-
showColumnToggle && /* @__PURE__ */
|
|
4652
|
-
/* @__PURE__ */ jsx57(DropdownMenuComponent.Trigger, { asChild: true, children: /* @__PURE__ */
|
|
4742
|
+
showColumnToggle && /* @__PURE__ */ jsxs27(DropdownMenuComponent, { children: [
|
|
4743
|
+
/* @__PURE__ */ jsx57(DropdownMenuComponent.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs27(Button, { variant: "outline", className: "ml-auto", children: [
|
|
4653
4744
|
"Columns ",
|
|
4654
4745
|
/* @__PURE__ */ jsx57(ChevronDown4, { className: "ml-2 size-4" })
|
|
4655
4746
|
] }) }),
|
|
@@ -4674,14 +4765,14 @@ var DataTablePagination = ({
|
|
|
4674
4765
|
canNextPage,
|
|
4675
4766
|
onPreviousPage,
|
|
4676
4767
|
onNextPage
|
|
4677
|
-
}) => /* @__PURE__ */
|
|
4678
|
-
showSelectedCount && /* @__PURE__ */
|
|
4768
|
+
}) => /* @__PURE__ */ jsxs27("div", { className: "flex items-center justify-end gap-2 py-4", children: [
|
|
4769
|
+
showSelectedCount && /* @__PURE__ */ jsxs27("div", { className: "text-foreground flex-1 text-sm font-sans", children: [
|
|
4679
4770
|
selectedCount,
|
|
4680
4771
|
" of ",
|
|
4681
4772
|
totalCount,
|
|
4682
4773
|
" row(s) selected."
|
|
4683
4774
|
] }),
|
|
4684
|
-
/* @__PURE__ */
|
|
4775
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex gap-2", children: [
|
|
4685
4776
|
/* @__PURE__ */ jsx57(
|
|
4686
4777
|
Button,
|
|
4687
4778
|
{
|
|
@@ -4709,7 +4800,7 @@ var DataTableSortButton = ({
|
|
|
4709
4800
|
children,
|
|
4710
4801
|
onClick,
|
|
4711
4802
|
className
|
|
4712
|
-
}) => /* @__PURE__ */
|
|
4803
|
+
}) => /* @__PURE__ */ jsxs27(
|
|
4713
4804
|
Button,
|
|
4714
4805
|
{
|
|
4715
4806
|
variant: "ghost",
|
|
@@ -4756,7 +4847,7 @@ function DataTableRoot({
|
|
|
4756
4847
|
rowSelection
|
|
4757
4848
|
}
|
|
4758
4849
|
});
|
|
4759
|
-
return /* @__PURE__ */
|
|
4850
|
+
return /* @__PURE__ */ jsxs27("div", { className: cn("w-full font-sans text-foreground", className), children: [
|
|
4760
4851
|
filterColumn && /* @__PURE__ */ jsx57(
|
|
4761
4852
|
DataTableToolbar,
|
|
4762
4853
|
{
|
|
@@ -4770,7 +4861,7 @@ function DataTableRoot({
|
|
|
4770
4861
|
columns: table.getAllColumns()
|
|
4771
4862
|
}
|
|
4772
4863
|
),
|
|
4773
|
-
/* @__PURE__ */ jsx57("div", { children: /* @__PURE__ */
|
|
4864
|
+
/* @__PURE__ */ jsx57("div", { children: /* @__PURE__ */ jsxs27(TableComponent, { children: [
|
|
4774
4865
|
/* @__PURE__ */ jsx57(TableComponent.Header, { className: "font-head", children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx57(
|
|
4775
4866
|
TableComponent.Row,
|
|
4776
4867
|
{
|
|
@@ -4822,7 +4913,7 @@ var DataTableComponent = Object.assign(DataTableRoot, {
|
|
|
4822
4913
|
// components/ui/Sidebar.tsx
|
|
4823
4914
|
import * as React55 from "react";
|
|
4824
4915
|
import { Slot as Slot8 } from "@radix-ui/react-slot";
|
|
4825
|
-
import { cva as
|
|
4916
|
+
import { cva as cva19 } from "class-variance-authority";
|
|
4826
4917
|
import { PanelLeftIcon } from "lucide-react";
|
|
4827
4918
|
|
|
4828
4919
|
// hooks/use-mobile.ts
|
|
@@ -4845,7 +4936,7 @@ function useIsMobile() {
|
|
|
4845
4936
|
}
|
|
4846
4937
|
|
|
4847
4938
|
// components/ui/Sidebar.tsx
|
|
4848
|
-
import { jsx as jsx58, jsxs as
|
|
4939
|
+
import { jsx as jsx58, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
4849
4940
|
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
4850
4941
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
4851
4942
|
var SIDEBAR_WIDTH = "16rem";
|
|
@@ -4964,7 +5055,7 @@ var SidebarRoot = (_a) => {
|
|
|
4964
5055
|
);
|
|
4965
5056
|
}
|
|
4966
5057
|
if (isMobile) {
|
|
4967
|
-
return /* @__PURE__ */ jsx58(SheetComponent, __spreadProps(__spreadValues({ open: openMobile, onOpenChange: setOpenMobile }, props), { children: /* @__PURE__ */
|
|
5058
|
+
return /* @__PURE__ */ jsx58(SheetComponent, __spreadProps(__spreadValues({ open: openMobile, onOpenChange: setOpenMobile }, props), { children: /* @__PURE__ */ jsxs28(
|
|
4968
5059
|
SheetComponent.Content,
|
|
4969
5060
|
{
|
|
4970
5061
|
"data-sidebar": "sidebar",
|
|
@@ -4975,7 +5066,7 @@ var SidebarRoot = (_a) => {
|
|
|
4975
5066
|
},
|
|
4976
5067
|
side,
|
|
4977
5068
|
children: [
|
|
4978
|
-
/* @__PURE__ */
|
|
5069
|
+
/* @__PURE__ */ jsxs28(SheetComponent.Header, { className: "sr-only", children: [
|
|
4979
5070
|
/* @__PURE__ */ jsx58(SheetComponent.Title, { children: "Sidebar" }),
|
|
4980
5071
|
/* @__PURE__ */ jsx58(SheetComponent.Description, { children: "Displays the mobile sidebar." })
|
|
4981
5072
|
] }),
|
|
@@ -4984,7 +5075,7 @@ var SidebarRoot = (_a) => {
|
|
|
4984
5075
|
}
|
|
4985
5076
|
) }));
|
|
4986
5077
|
}
|
|
4987
|
-
return /* @__PURE__ */
|
|
5078
|
+
return /* @__PURE__ */ jsxs28(
|
|
4988
5079
|
"div",
|
|
4989
5080
|
{
|
|
4990
5081
|
className: "group peer hidden md:block",
|
|
@@ -5032,7 +5123,7 @@ SidebarRoot.displayName = "Sidebar";
|
|
|
5032
5123
|
var SidebarTrigger = React55.forwardRef((_a, ref) => {
|
|
5033
5124
|
var _b = _a, { className, onClick } = _b, props = __objRest(_b, ["className", "onClick"]);
|
|
5034
5125
|
const { toggleSidebar } = useSidebar();
|
|
5035
|
-
return /* @__PURE__ */
|
|
5126
|
+
return /* @__PURE__ */ jsxs28(
|
|
5036
5127
|
Button,
|
|
5037
5128
|
__spreadProps(__spreadValues({
|
|
5038
5129
|
ref,
|
|
@@ -5236,7 +5327,7 @@ var SidebarMenuItem = React55.forwardRef((_a, ref) => {
|
|
|
5236
5327
|
);
|
|
5237
5328
|
});
|
|
5238
5329
|
SidebarMenuItem.displayName = "Sidebar.MenuItem";
|
|
5239
|
-
var sidebarMenuButtonVariants =
|
|
5330
|
+
var sidebarMenuButtonVariants = cva19(
|
|
5240
5331
|
"peer/menu-button flex w-full items-center gap-2 overflow-hidden outline-2 outline-transparent p-2 text-left text-sm ring-ring transition-[width,height,padding] hover:bg-primary hover:text-primary-foreground hover:outline-border focus-visible:outline-border focus-visible:text-primary-foreground focus-visible:bg-primary disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
|
|
5241
5332
|
{
|
|
5242
5333
|
variants: {
|
|
@@ -5282,7 +5373,7 @@ var SidebarMenuButton = React55.forwardRef(
|
|
|
5282
5373
|
return button;
|
|
5283
5374
|
}
|
|
5284
5375
|
const tooltipProps = typeof tooltip === "string" ? { children: tooltip } : tooltip;
|
|
5285
|
-
return /* @__PURE__ */
|
|
5376
|
+
return /* @__PURE__ */ jsxs28(TooltipComponent, { children: [
|
|
5286
5377
|
/* @__PURE__ */ jsx58(TooltipComponent.Trigger, { asChild: true, children: button }),
|
|
5287
5378
|
/* @__PURE__ */ jsx58(
|
|
5288
5379
|
TooltipComponent.Content,
|
|
@@ -5343,7 +5434,7 @@ var SidebarMenuSkeleton = React55.forwardRef((_a, ref) => {
|
|
|
5343
5434
|
const [width] = React55.useState(
|
|
5344
5435
|
() => `${Math.floor(Math.random() * 40) + 50}%`
|
|
5345
5436
|
);
|
|
5346
|
-
return /* @__PURE__ */
|
|
5437
|
+
return /* @__PURE__ */ jsxs28(
|
|
5347
5438
|
"div",
|
|
5348
5439
|
__spreadProps(__spreadValues({
|
|
5349
5440
|
ref,
|
|
@@ -5469,11 +5560,11 @@ function CardGrid({ children, columns = 3, className }) {
|
|
|
5469
5560
|
// components/NavBar/NavBar.tsx
|
|
5470
5561
|
import { useState as useState8 } from "react";
|
|
5471
5562
|
import { AlignJustify, X as X3, ChevronDown as ChevronDown5 } from "lucide-react";
|
|
5472
|
-
import { jsx as jsx60, jsxs as
|
|
5563
|
+
import { jsx as jsx60, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
5473
5564
|
function NavBar({ brand, links = [], auth, linkComponent: LinkComp = "a", className }) {
|
|
5474
5565
|
var _a, _b;
|
|
5475
5566
|
const [drawerOpen, setDrawerOpen] = useState8(false);
|
|
5476
|
-
return /* @__PURE__ */
|
|
5567
|
+
return /* @__PURE__ */ jsxs29(
|
|
5477
5568
|
"nav",
|
|
5478
5569
|
{
|
|
5479
5570
|
className: cn(
|
|
@@ -5481,7 +5572,7 @@ function NavBar({ brand, links = [], auth, linkComponent: LinkComp = "a", classN
|
|
|
5481
5572
|
className
|
|
5482
5573
|
),
|
|
5483
5574
|
children: [
|
|
5484
|
-
/* @__PURE__ */ jsx60("div", { className: "mx-auto max-w-6xl px-4", children: /* @__PURE__ */
|
|
5575
|
+
/* @__PURE__ */ jsx60("div", { className: "mx-auto max-w-6xl px-4", children: /* @__PURE__ */ jsxs29("div", { className: "flex h-16 items-center justify-between", children: [
|
|
5485
5576
|
/* @__PURE__ */ jsx60(
|
|
5486
5577
|
LinkComp,
|
|
5487
5578
|
{
|
|
@@ -5500,7 +5591,7 @@ function NavBar({ brand, links = [], auth, linkComponent: LinkComp = "a", classN
|
|
|
5500
5591
|
link.href
|
|
5501
5592
|
)) }),
|
|
5502
5593
|
/* @__PURE__ */ jsx60("div", { className: "hidden lg:flex items-center gap-3", children: auth.state === "signed-out" ? /* @__PURE__ */ jsx60(SignedOutActions, { auth, linkComponent: LinkComp }) : /* @__PURE__ */ jsx60(UserMenu, { auth, linkComponent: LinkComp }) }),
|
|
5503
|
-
/* @__PURE__ */
|
|
5594
|
+
/* @__PURE__ */ jsxs29("div", { className: "flex lg:hidden items-center gap-3", children: [
|
|
5504
5595
|
auth.state === "signed-out" && /* @__PURE__ */ jsx60("div", { className: "hidden sm:flex items-center gap-2", children: /* @__PURE__ */ jsx60(SignedOutActions, { auth, linkComponent: LinkComp }) }),
|
|
5505
5596
|
/* @__PURE__ */ jsx60(
|
|
5506
5597
|
Button,
|
|
@@ -5520,8 +5611,8 @@ function NavBar({ brand, links = [], auth, linkComponent: LinkComp = "a", classN
|
|
|
5520
5611
|
direction: "right",
|
|
5521
5612
|
open: drawerOpen,
|
|
5522
5613
|
onOpenChange: setDrawerOpen,
|
|
5523
|
-
children: /* @__PURE__ */
|
|
5524
|
-
/* @__PURE__ */
|
|
5614
|
+
children: /* @__PURE__ */ jsxs29(DrawerComponent.Content, { children: [
|
|
5615
|
+
/* @__PURE__ */ jsxs29(DrawerComponent.Header, { className: "flex-row items-center justify-between", children: [
|
|
5525
5616
|
/* @__PURE__ */ jsx60(DrawerComponent.Title, { children: brand.name }),
|
|
5526
5617
|
/* @__PURE__ */ jsx60(DrawerComponent.Close, { asChild: true, children: /* @__PURE__ */ jsx60(Button, { size: "icon", variant: "ghost", className: "p-1", children: /* @__PURE__ */ jsx60(X3, { className: "h-5 w-5" }) }) })
|
|
5527
5618
|
] }),
|
|
@@ -5535,8 +5626,8 @@ function NavBar({ brand, links = [], auth, linkComponent: LinkComp = "a", classN
|
|
|
5535
5626
|
},
|
|
5536
5627
|
link.href
|
|
5537
5628
|
)) }),
|
|
5538
|
-
/* @__PURE__ */ jsx60(DrawerComponent.Footer, { children: auth.state === "signed-out" ? /* @__PURE__ */ jsx60(Button, { asChild: true, children: /* @__PURE__ */ jsx60(LinkComp, { href: auth.href, children: (_b = auth.label) != null ? _b : "Get Started" }) }) : /* @__PURE__ */
|
|
5539
|
-
/* @__PURE__ */
|
|
5629
|
+
/* @__PURE__ */ jsx60(DrawerComponent.Footer, { children: auth.state === "signed-out" ? /* @__PURE__ */ jsx60(Button, { asChild: true, children: /* @__PURE__ */ jsx60(LinkComp, { href: auth.href, children: (_b = auth.label) != null ? _b : "Get Started" }) }) : /* @__PURE__ */ jsxs29("div", { className: "flex flex-col gap-1 border-t-2 pt-4", children: [
|
|
5630
|
+
/* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-3 px-2 pb-3", children: [
|
|
5540
5631
|
/* @__PURE__ */ jsx60(AvatarComponent, { className: "h-8 w-8", children: auth.user.avatar ? /* @__PURE__ */ jsx60(AvatarComponent.Image, { src: auth.user.avatar, alt: auth.user.name }) : /* @__PURE__ */ jsx60(AvatarComponent.Fallback, { children: auth.user.name.charAt(0).toUpperCase() }) }),
|
|
5541
5632
|
/* @__PURE__ */ jsx60("span", { className: "font-head text-sm", children: auth.user.name })
|
|
5542
5633
|
] }),
|
|
@@ -5583,8 +5674,8 @@ function UserMenu({
|
|
|
5583
5674
|
auth,
|
|
5584
5675
|
linkComponent: LinkComp = "a"
|
|
5585
5676
|
}) {
|
|
5586
|
-
return /* @__PURE__ */
|
|
5587
|
-
/* @__PURE__ */ jsx60(MenuComponent.Trigger, { asChild: true, children: /* @__PURE__ */
|
|
5677
|
+
return /* @__PURE__ */ jsxs29(MenuComponent, { children: [
|
|
5678
|
+
/* @__PURE__ */ jsx60(MenuComponent.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs29("button", { className: "flex items-center gap-2 cursor-pointer outline-hidden", children: [
|
|
5588
5679
|
/* @__PURE__ */ jsx60(AvatarComponent, { className: "h-8 w-8", children: auth.user.avatar ? /* @__PURE__ */ jsx60(AvatarComponent.Image, { src: auth.user.avatar, alt: auth.user.name }) : /* @__PURE__ */ jsx60(AvatarComponent.Fallback, { children: auth.user.name.charAt(0).toUpperCase() }) }),
|
|
5589
5680
|
/* @__PURE__ */ jsx60(ChevronDown5, { className: "h-3 w-3" })
|
|
5590
5681
|
] }) }),
|
|
@@ -5598,7 +5689,7 @@ function UserMenu({
|
|
|
5598
5689
|
}
|
|
5599
5690
|
|
|
5600
5691
|
// components/Page/Page.tsx
|
|
5601
|
-
import { jsx as jsx61, jsxs as
|
|
5692
|
+
import { jsx as jsx61, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
5602
5693
|
function SimplePage({
|
|
5603
5694
|
title,
|
|
5604
5695
|
subtitle,
|
|
@@ -5606,9 +5697,9 @@ function SimplePage({
|
|
|
5606
5697
|
children,
|
|
5607
5698
|
className
|
|
5608
5699
|
}) {
|
|
5609
|
-
return /* @__PURE__ */
|
|
5610
|
-
/* @__PURE__ */ jsx61("header", { className: "border-b-2 bg-background", children: /* @__PURE__ */ jsx61("div", { className: "mx-auto max-w-6xl px-4 py-8", children: /* @__PURE__ */
|
|
5611
|
-
/* @__PURE__ */
|
|
5700
|
+
return /* @__PURE__ */ jsxs30("div", { className: cn("min-h-screen", className), children: [
|
|
5701
|
+
/* @__PURE__ */ jsx61("header", { className: "border-b-2 bg-background", children: /* @__PURE__ */ jsx61("div", { className: "mx-auto max-w-6xl px-4 py-8", children: /* @__PURE__ */ jsxs30("div", { className: "flex items-start justify-between gap-4", children: [
|
|
5702
|
+
/* @__PURE__ */ jsxs30("div", { children: [
|
|
5612
5703
|
/* @__PURE__ */ jsx61("h1", { className: "font-head text-4xl mb-2", children: title }),
|
|
5613
5704
|
subtitle && /* @__PURE__ */ jsx61("p", { className: "font-sans text-lg text-muted-foreground max-w-xl", children: subtitle })
|
|
5614
5705
|
] }),
|
|
@@ -5675,7 +5766,7 @@ function SectionNav({ items, className, offsetTop }) {
|
|
|
5675
5766
|
// components/TwoColumnLayout/TwoColumnLayout.tsx
|
|
5676
5767
|
import { PanelRight } from "lucide-react";
|
|
5677
5768
|
import React59, { useState as useState10 } from "react";
|
|
5678
|
-
import { jsx as jsx63, jsxs as
|
|
5769
|
+
import { jsx as jsx63, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
5679
5770
|
function TwoColumnLayout({
|
|
5680
5771
|
children,
|
|
5681
5772
|
className,
|
|
@@ -5690,7 +5781,7 @@ function TwoColumnLayout({
|
|
|
5690
5781
|
if (type.displayName === "TwoColumnLayout.Left") leftContent = child;
|
|
5691
5782
|
if (type.displayName === "TwoColumnLayout.Right") rightContent = child;
|
|
5692
5783
|
});
|
|
5693
|
-
return /* @__PURE__ */
|
|
5784
|
+
return /* @__PURE__ */ jsxs31("div", { className: cn("flex flex-col md:flex-row gap-0 min-h-0", className), children: [
|
|
5694
5785
|
/* @__PURE__ */ jsx63("div", { className: "flex-1 min-w-0 md:border-r-2", children: leftContent }),
|
|
5695
5786
|
/* @__PURE__ */ jsx63("div", { className: "hidden md:block flex-1 min-w-0", children: rightContent }),
|
|
5696
5787
|
rightContent && /* @__PURE__ */ jsx63("div", { className: "fixed bottom-6 right-6 md:hidden z-40", children: /* @__PURE__ */ jsx63(
|
|
@@ -5703,7 +5794,7 @@ function TwoColumnLayout({
|
|
|
5703
5794
|
children: /* @__PURE__ */ jsx63(PanelRight, { className: "size-5" })
|
|
5704
5795
|
}
|
|
5705
5796
|
) }),
|
|
5706
|
-
/* @__PURE__ */ jsx63(DrawerComponent, { open: drawerOpen, onOpenChange: setDrawerOpen, direction: "right", children: /* @__PURE__ */
|
|
5797
|
+
/* @__PURE__ */ jsx63(DrawerComponent, { open: drawerOpen, onOpenChange: setDrawerOpen, direction: "right", children: /* @__PURE__ */ jsxs31(DrawerComponent.Content, { children: [
|
|
5707
5798
|
/* @__PURE__ */ jsx63(DrawerComponent.Header, { children: /* @__PURE__ */ jsx63(DrawerComponent.Title, { children: drawerTitle }) }),
|
|
5708
5799
|
/* @__PURE__ */ jsx63("div", { className: "flex-1 overflow-y-auto p-4", children: rightContent })
|
|
5709
5800
|
] }) })
|
|
@@ -5724,7 +5815,7 @@ var TwoColumnLayoutComponent = Object.assign(TwoColumnLayout, {
|
|
|
5724
5815
|
|
|
5725
5816
|
// components/ThemeToggle.tsx
|
|
5726
5817
|
import { useSyncExternalStore } from "react";
|
|
5727
|
-
import { jsx as jsx64, jsxs as
|
|
5818
|
+
import { jsx as jsx64, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
5728
5819
|
var subscribe = () => () => {
|
|
5729
5820
|
};
|
|
5730
5821
|
var getSnapshot = () => true;
|
|
@@ -5742,7 +5833,7 @@ function ThemeToggle(_a) {
|
|
|
5742
5833
|
const { resolvedTheme, setTheme } = useTheme();
|
|
5743
5834
|
const mounted = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
5744
5835
|
const opposite = resolvedTheme === "dark" ? "light" : "dark";
|
|
5745
|
-
return /* @__PURE__ */
|
|
5836
|
+
return /* @__PURE__ */ jsxs32(
|
|
5746
5837
|
IconButton,
|
|
5747
5838
|
__spreadProps(__spreadValues({
|
|
5748
5839
|
variant,
|
|
@@ -5752,7 +5843,7 @@ function ThemeToggle(_a) {
|
|
|
5752
5843
|
"aria-label": mounted ? `Switch to ${opposite} mode` : "Toggle theme"
|
|
5753
5844
|
}, props), {
|
|
5754
5845
|
children: [
|
|
5755
|
-
/* @__PURE__ */
|
|
5846
|
+
/* @__PURE__ */ jsxs32(
|
|
5756
5847
|
"svg",
|
|
5757
5848
|
{
|
|
5758
5849
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5797,6 +5888,83 @@ function ThemeToggle(_a) {
|
|
|
5797
5888
|
);
|
|
5798
5889
|
}
|
|
5799
5890
|
|
|
5891
|
+
// components/ColorThemeToggle.tsx
|
|
5892
|
+
import { useSyncExternalStore as useSyncExternalStore2 } from "react";
|
|
5893
|
+
import { jsx as jsx65, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
5894
|
+
var subscribe2 = () => () => {
|
|
5895
|
+
};
|
|
5896
|
+
var getSnapshot2 = () => true;
|
|
5897
|
+
var getServerSnapshot2 = () => false;
|
|
5898
|
+
var COLOR_SWATCHES = {
|
|
5899
|
+
blue: "#5294FF",
|
|
5900
|
+
plum: "#B254CF",
|
|
5901
|
+
"plum-trio": "#B254CF"
|
|
5902
|
+
};
|
|
5903
|
+
var COLOR_LABELS = {
|
|
5904
|
+
blue: "Blue",
|
|
5905
|
+
plum: "Plum",
|
|
5906
|
+
"plum-trio": "Plum Trio"
|
|
5907
|
+
};
|
|
5908
|
+
function ColorThemeToggle(_a) {
|
|
5909
|
+
var _b = _a, {
|
|
5910
|
+
variant = "ghost",
|
|
5911
|
+
size = "md",
|
|
5912
|
+
className
|
|
5913
|
+
} = _b, props = __objRest(_b, [
|
|
5914
|
+
"variant",
|
|
5915
|
+
"size",
|
|
5916
|
+
"className"
|
|
5917
|
+
]);
|
|
5918
|
+
const { colorTheme, setColorTheme, colorThemes } = useTheme();
|
|
5919
|
+
const mounted = useSyncExternalStore2(subscribe2, getSnapshot2, getServerSnapshot2);
|
|
5920
|
+
return /* @__PURE__ */ jsxs33(DropdownMenuComponent, { children: [
|
|
5921
|
+
/* @__PURE__ */ jsx65(DropdownMenuComponent.Trigger, { asChild: true, children: /* @__PURE__ */ jsx65(
|
|
5922
|
+
IconButton,
|
|
5923
|
+
__spreadProps(__spreadValues({
|
|
5924
|
+
variant,
|
|
5925
|
+
size,
|
|
5926
|
+
className,
|
|
5927
|
+
"aria-label": mounted ? `Color theme: ${colorTheme}` : "Color theme"
|
|
5928
|
+
}, props), {
|
|
5929
|
+
children: /* @__PURE__ */ jsx65(
|
|
5930
|
+
"span",
|
|
5931
|
+
{
|
|
5932
|
+
className: "block w-4 h-4 border-2 border-border",
|
|
5933
|
+
style: {
|
|
5934
|
+
backgroundColor: mounted ? COLOR_SWATCHES[colorTheme] : void 0,
|
|
5935
|
+
borderRadius: "var(--radius, 0)"
|
|
5936
|
+
}
|
|
5937
|
+
}
|
|
5938
|
+
)
|
|
5939
|
+
})
|
|
5940
|
+
) }),
|
|
5941
|
+
/* @__PURE__ */ jsxs33(DropdownMenuComponent.Content, { align: "end", children: [
|
|
5942
|
+
/* @__PURE__ */ jsx65(DropdownMenuComponent.Label, { children: "Color Theme" }),
|
|
5943
|
+
/* @__PURE__ */ jsx65(DropdownMenuComponent.Separator, {}),
|
|
5944
|
+
/* @__PURE__ */ jsx65(
|
|
5945
|
+
DropdownMenuComponent.RadioGroup,
|
|
5946
|
+
{
|
|
5947
|
+
value: colorTheme,
|
|
5948
|
+
onValueChange: (v) => setColorTheme(v),
|
|
5949
|
+
children: colorThemes.map((theme) => /* @__PURE__ */ jsxs33(DropdownMenuComponent.RadioItem, { value: theme, children: [
|
|
5950
|
+
/* @__PURE__ */ jsx65(
|
|
5951
|
+
"span",
|
|
5952
|
+
{
|
|
5953
|
+
className: "inline-block w-3 h-3 border border-border mr-1",
|
|
5954
|
+
style: {
|
|
5955
|
+
backgroundColor: COLOR_SWATCHES[theme],
|
|
5956
|
+
borderRadius: "var(--radius, 0)"
|
|
5957
|
+
}
|
|
5958
|
+
}
|
|
5959
|
+
),
|
|
5960
|
+
COLOR_LABELS[theme]
|
|
5961
|
+
] }, theme))
|
|
5962
|
+
}
|
|
5963
|
+
)
|
|
5964
|
+
] })
|
|
5965
|
+
] });
|
|
5966
|
+
}
|
|
5967
|
+
|
|
5800
5968
|
// lib/create-theme.ts
|
|
5801
5969
|
function createTheme(name, config) {
|
|
5802
5970
|
const declarations = [];
|
|
@@ -5837,7 +6005,7 @@ ${declarations.join("\n")}
|
|
|
5837
6005
|
}
|
|
5838
6006
|
|
|
5839
6007
|
// components/landing/Hero.tsx
|
|
5840
|
-
import { jsx as
|
|
6008
|
+
import { jsx as jsx66, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
5841
6009
|
function Hero({
|
|
5842
6010
|
badge,
|
|
5843
6011
|
title,
|
|
@@ -5847,14 +6015,14 @@ function Hero({
|
|
|
5847
6015
|
className,
|
|
5848
6016
|
align = "center"
|
|
5849
6017
|
}) {
|
|
5850
|
-
return /* @__PURE__ */
|
|
6018
|
+
return /* @__PURE__ */ jsx66(
|
|
5851
6019
|
"section",
|
|
5852
6020
|
{
|
|
5853
6021
|
className: cn(
|
|
5854
6022
|
"w-full border-b-2 bg-background",
|
|
5855
6023
|
className
|
|
5856
6024
|
),
|
|
5857
|
-
children: /* @__PURE__ */
|
|
6025
|
+
children: /* @__PURE__ */ jsxs34(
|
|
5858
6026
|
"div",
|
|
5859
6027
|
{
|
|
5860
6028
|
className: cn(
|
|
@@ -5863,10 +6031,10 @@ function Hero({
|
|
|
5863
6031
|
align === "left" && "items-start text-left"
|
|
5864
6032
|
),
|
|
5865
6033
|
children: [
|
|
5866
|
-
badge && /* @__PURE__ */
|
|
5867
|
-
/* @__PURE__ */
|
|
5868
|
-
subtitle && /* @__PURE__ */
|
|
5869
|
-
actions && /* @__PURE__ */
|
|
6034
|
+
badge && /* @__PURE__ */ jsx66("div", { children: badge }),
|
|
6035
|
+
/* @__PURE__ */ jsx66("h1", { className: "font-head text-4xl sm:text-5xl lg:text-6xl max-w-4xl", children: title }),
|
|
6036
|
+
subtitle && /* @__PURE__ */ jsx66("p", { className: "font-sans text-lg lg:text-xl text-muted-foreground max-w-2xl", children: subtitle }),
|
|
6037
|
+
actions && /* @__PURE__ */ jsx66("div", { className: "flex flex-wrap gap-3 mt-2", children: actions }),
|
|
5870
6038
|
children
|
|
5871
6039
|
]
|
|
5872
6040
|
}
|
|
@@ -5876,9 +6044,9 @@ function Hero({
|
|
|
5876
6044
|
}
|
|
5877
6045
|
|
|
5878
6046
|
// components/landing/Section.tsx
|
|
5879
|
-
import { cva as
|
|
5880
|
-
import { jsx as
|
|
5881
|
-
var sectionVariants =
|
|
6047
|
+
import { cva as cva20 } from "class-variance-authority";
|
|
6048
|
+
import { jsx as jsx67, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
6049
|
+
var sectionVariants = cva20("w-full py-16 lg:py-24 scroll-mt-[120px]", {
|
|
5882
6050
|
variants: {
|
|
5883
6051
|
background: {
|
|
5884
6052
|
default: "bg-background",
|
|
@@ -5907,13 +6075,13 @@ function Section(_a) {
|
|
|
5907
6075
|
"background",
|
|
5908
6076
|
"align"
|
|
5909
6077
|
]);
|
|
5910
|
-
return /* @__PURE__ */
|
|
6078
|
+
return /* @__PURE__ */ jsx67(
|
|
5911
6079
|
"section",
|
|
5912
6080
|
__spreadProps(__spreadValues({
|
|
5913
6081
|
className: cn(sectionVariants({ background }), className)
|
|
5914
6082
|
}, props), {
|
|
5915
|
-
children: /* @__PURE__ */
|
|
5916
|
-
(title || subtitle) && /* @__PURE__ */
|
|
6083
|
+
children: /* @__PURE__ */ jsxs35("div", { className: "mx-auto max-w-6xl px-4", children: [
|
|
6084
|
+
(title || subtitle) && /* @__PURE__ */ jsxs35(
|
|
5917
6085
|
"div",
|
|
5918
6086
|
{
|
|
5919
6087
|
className: cn(
|
|
@@ -5922,8 +6090,8 @@ function Section(_a) {
|
|
|
5922
6090
|
align === "left" && "text-left"
|
|
5923
6091
|
),
|
|
5924
6092
|
children: [
|
|
5925
|
-
title && /* @__PURE__ */
|
|
5926
|
-
subtitle && /* @__PURE__ */
|
|
6093
|
+
title && /* @__PURE__ */ jsx67("h2", { className: "font-head text-3xl lg:text-4xl mb-3", children: title }),
|
|
6094
|
+
subtitle && /* @__PURE__ */ jsx67("p", { className: "font-sans text-lg text-muted-foreground max-w-2xl mx-auto", children: subtitle })
|
|
5927
6095
|
]
|
|
5928
6096
|
}
|
|
5929
6097
|
),
|
|
@@ -5934,7 +6102,7 @@ function Section(_a) {
|
|
|
5934
6102
|
}
|
|
5935
6103
|
|
|
5936
6104
|
// components/landing/Footer.tsx
|
|
5937
|
-
import { jsx as
|
|
6105
|
+
import { jsx as jsx68, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
5938
6106
|
function Footer({
|
|
5939
6107
|
brand,
|
|
5940
6108
|
tagline,
|
|
@@ -5942,15 +6110,15 @@ function Footer({
|
|
|
5942
6110
|
bottom,
|
|
5943
6111
|
className
|
|
5944
6112
|
}) {
|
|
5945
|
-
return /* @__PURE__ */
|
|
5946
|
-
/* @__PURE__ */
|
|
5947
|
-
/* @__PURE__ */
|
|
5948
|
-
/* @__PURE__ */
|
|
5949
|
-
tagline && /* @__PURE__ */
|
|
6113
|
+
return /* @__PURE__ */ jsx68("footer", { className: cn("w-full border-t-2 bg-background", className), children: /* @__PURE__ */ jsxs36("div", { className: "mx-auto max-w-6xl px-4 py-12 lg:py-16", children: [
|
|
6114
|
+
/* @__PURE__ */ jsxs36("div", { className: "grid gap-8 lg:grid-cols-[1.5fr_repeat(auto-fit,1fr)]", children: [
|
|
6115
|
+
/* @__PURE__ */ jsxs36("div", { className: "max-w-xs", children: [
|
|
6116
|
+
/* @__PURE__ */ jsx68("div", { className: "font-head text-2xl mb-2", children: brand }),
|
|
6117
|
+
tagline && /* @__PURE__ */ jsx68("p", { className: "font-sans text-sm text-muted-foreground", children: tagline })
|
|
5950
6118
|
] }),
|
|
5951
|
-
groups.length > 0 && /* @__PURE__ */
|
|
5952
|
-
/* @__PURE__ */
|
|
5953
|
-
/* @__PURE__ */
|
|
6119
|
+
groups.length > 0 && /* @__PURE__ */ jsx68("div", { className: "grid gap-8 sm:grid-cols-2 lg:grid-cols-3 col-span-full lg:col-span-1", children: groups.map((group) => /* @__PURE__ */ jsxs36("div", { children: [
|
|
6120
|
+
/* @__PURE__ */ jsx68("h4", { className: "font-head text-sm uppercase mb-3", children: group.title }),
|
|
6121
|
+
/* @__PURE__ */ jsx68("ul", { className: "flex flex-col gap-2", children: group.links.map((link) => /* @__PURE__ */ jsx68("li", { children: /* @__PURE__ */ jsx68(
|
|
5954
6122
|
"a",
|
|
5955
6123
|
{
|
|
5956
6124
|
href: link.href,
|
|
@@ -5960,21 +6128,21 @@ function Footer({
|
|
|
5960
6128
|
) }, link.label)) })
|
|
5961
6129
|
] }, group.title)) })
|
|
5962
6130
|
] }),
|
|
5963
|
-
bottom && /* @__PURE__ */
|
|
6131
|
+
bottom && /* @__PURE__ */ jsx68("div", { className: "mt-12 pt-6 border-t-2 font-sans text-sm text-muted-foreground", children: bottom })
|
|
5964
6132
|
] }) });
|
|
5965
6133
|
}
|
|
5966
6134
|
|
|
5967
6135
|
// components/landing/PricingTable.tsx
|
|
5968
|
-
import { jsx as
|
|
6136
|
+
import { jsx as jsx69, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
5969
6137
|
function PricingTable({ tiers, className }) {
|
|
5970
|
-
return /* @__PURE__ */
|
|
6138
|
+
return /* @__PURE__ */ jsx69(
|
|
5971
6139
|
"div",
|
|
5972
6140
|
{
|
|
5973
6141
|
className: cn(
|
|
5974
6142
|
"grid gap-6 sm:grid-cols-2 lg:grid-cols-3",
|
|
5975
6143
|
className
|
|
5976
6144
|
),
|
|
5977
|
-
children: tiers.map((tier) => /* @__PURE__ */
|
|
6145
|
+
children: tiers.map((tier) => /* @__PURE__ */ jsxs37(
|
|
5978
6146
|
"div",
|
|
5979
6147
|
{
|
|
5980
6148
|
className: cn(
|
|
@@ -5982,15 +6150,15 @@ function PricingTable({ tiers, className }) {
|
|
|
5982
6150
|
tier.highlighted ? "shadow-lg border-primary ring-2 ring-primary scale-[1.02]" : "shadow-md"
|
|
5983
6151
|
),
|
|
5984
6152
|
children: [
|
|
5985
|
-
/* @__PURE__ */
|
|
5986
|
-
/* @__PURE__ */
|
|
5987
|
-
/* @__PURE__ */
|
|
6153
|
+
/* @__PURE__ */ jsxs37("div", { className: "p-6 border-b-2", children: [
|
|
6154
|
+
/* @__PURE__ */ jsxs37("div", { className: "flex items-center justify-between mb-2", children: [
|
|
6155
|
+
/* @__PURE__ */ jsx69("h3", { className: "font-head text-xl", children: tier.name }),
|
|
5988
6156
|
tier.badge
|
|
5989
6157
|
] }),
|
|
5990
|
-
/* @__PURE__ */
|
|
5991
|
-
tier.description && /* @__PURE__ */
|
|
6158
|
+
/* @__PURE__ */ jsx69("div", { className: "font-head text-4xl mb-1", children: tier.price }),
|
|
6159
|
+
tier.description && /* @__PURE__ */ jsx69("p", { className: "font-sans text-sm text-muted-foreground", children: tier.description })
|
|
5992
6160
|
] }),
|
|
5993
|
-
/* @__PURE__ */
|
|
6161
|
+
/* @__PURE__ */ jsx69("div", { className: "p-6 flex-1", children: /* @__PURE__ */ jsx69("ul", { className: "flex flex-col gap-3", children: tier.features.map((feature) => /* @__PURE__ */ jsxs37(
|
|
5994
6162
|
"li",
|
|
5995
6163
|
{
|
|
5996
6164
|
className: cn(
|
|
@@ -5998,7 +6166,7 @@ function PricingTable({ tiers, className }) {
|
|
|
5998
6166
|
!feature.included && "text-muted-foreground line-through"
|
|
5999
6167
|
),
|
|
6000
6168
|
children: [
|
|
6001
|
-
/* @__PURE__ */
|
|
6169
|
+
/* @__PURE__ */ jsx69(
|
|
6002
6170
|
"span",
|
|
6003
6171
|
{
|
|
6004
6172
|
className: cn(
|
|
@@ -6013,7 +6181,7 @@ function PricingTable({ tiers, className }) {
|
|
|
6013
6181
|
},
|
|
6014
6182
|
feature.text
|
|
6015
6183
|
)) }) }),
|
|
6016
|
-
/* @__PURE__ */
|
|
6184
|
+
/* @__PURE__ */ jsx69("div", { className: "p-6 border-t-2", children: tier.cta })
|
|
6017
6185
|
]
|
|
6018
6186
|
},
|
|
6019
6187
|
tier.name
|
|
@@ -6023,7 +6191,7 @@ function PricingTable({ tiers, className }) {
|
|
|
6023
6191
|
}
|
|
6024
6192
|
|
|
6025
6193
|
// components/landing/FeatureSection.tsx
|
|
6026
|
-
import { jsx as
|
|
6194
|
+
import { jsx as jsx70, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
6027
6195
|
var columnClasses2 = {
|
|
6028
6196
|
2: "grid gap-6 sm:grid-cols-2",
|
|
6029
6197
|
3: "grid gap-6 sm:grid-cols-2 lg:grid-cols-3",
|
|
@@ -6034,14 +6202,14 @@ function FeatureSection({
|
|
|
6034
6202
|
columns = 3,
|
|
6035
6203
|
className
|
|
6036
6204
|
}) {
|
|
6037
|
-
return /* @__PURE__ */
|
|
6205
|
+
return /* @__PURE__ */ jsx70("div", { className: cn(columnClasses2[columns], className), children: features.map((feature) => /* @__PURE__ */ jsxs38(
|
|
6038
6206
|
"div",
|
|
6039
6207
|
{
|
|
6040
6208
|
className: "border-2 p-6 bg-card shadow-md",
|
|
6041
6209
|
children: [
|
|
6042
|
-
feature.icon && /* @__PURE__ */
|
|
6043
|
-
/* @__PURE__ */
|
|
6044
|
-
/* @__PURE__ */
|
|
6210
|
+
feature.icon && /* @__PURE__ */ jsx70("div", { className: "mb-4 inline-flex items-center justify-center h-12 w-12 border-2 bg-primary text-primary-foreground shadow-sm", children: feature.icon }),
|
|
6211
|
+
/* @__PURE__ */ jsx70("h3", { className: "font-head text-lg mb-2", children: feature.title }),
|
|
6212
|
+
/* @__PURE__ */ jsx70("p", { className: "font-sans text-sm text-muted-foreground", children: feature.description })
|
|
6045
6213
|
]
|
|
6046
6214
|
},
|
|
6047
6215
|
feature.title
|
|
@@ -6049,7 +6217,7 @@ function FeatureSection({
|
|
|
6049
6217
|
}
|
|
6050
6218
|
|
|
6051
6219
|
// components/landing/Testimonial.tsx
|
|
6052
|
-
import { jsx as
|
|
6220
|
+
import { jsx as jsx71, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
6053
6221
|
var columnClasses3 = {
|
|
6054
6222
|
1: "grid gap-6 max-w-2xl mx-auto",
|
|
6055
6223
|
2: "grid gap-6 sm:grid-cols-2",
|
|
@@ -6060,21 +6228,21 @@ function Testimonial({
|
|
|
6060
6228
|
columns = 3,
|
|
6061
6229
|
className
|
|
6062
6230
|
}) {
|
|
6063
|
-
return /* @__PURE__ */
|
|
6231
|
+
return /* @__PURE__ */ jsx71("div", { className: cn(columnClasses3[columns], className), children: testimonials.map((t) => /* @__PURE__ */ jsxs39(
|
|
6064
6232
|
"div",
|
|
6065
6233
|
{
|
|
6066
6234
|
className: "border-2 p-6 bg-card shadow-md flex flex-col",
|
|
6067
6235
|
children: [
|
|
6068
|
-
/* @__PURE__ */
|
|
6236
|
+
/* @__PURE__ */ jsxs39("blockquote", { className: "font-sans text-sm leading-relaxed flex-1 mb-6", children: [
|
|
6069
6237
|
"\u201C",
|
|
6070
6238
|
t.quote,
|
|
6071
6239
|
"\u201D"
|
|
6072
6240
|
] }),
|
|
6073
|
-
/* @__PURE__ */
|
|
6074
|
-
t.avatar && /* @__PURE__ */
|
|
6075
|
-
/* @__PURE__ */
|
|
6076
|
-
/* @__PURE__ */
|
|
6077
|
-
(t.role || t.company) && /* @__PURE__ */
|
|
6241
|
+
/* @__PURE__ */ jsxs39("div", { className: "flex items-center gap-3 border-t-2 pt-4", children: [
|
|
6242
|
+
t.avatar && /* @__PURE__ */ jsx71("div", { className: "h-10 w-10 shrink-0 border-2 overflow-hidden", children: t.avatar }),
|
|
6243
|
+
/* @__PURE__ */ jsxs39("div", { children: [
|
|
6244
|
+
/* @__PURE__ */ jsx71("p", { className: "font-head text-sm", children: t.name }),
|
|
6245
|
+
(t.role || t.company) && /* @__PURE__ */ jsx71("p", { className: "font-sans text-xs text-muted-foreground", children: [t.role, t.company].filter(Boolean).join(", ") })
|
|
6078
6246
|
] })
|
|
6079
6247
|
] })
|
|
6080
6248
|
]
|
|
@@ -6084,9 +6252,9 @@ function Testimonial({
|
|
|
6084
6252
|
}
|
|
6085
6253
|
|
|
6086
6254
|
// components/landing/LogoCloud.tsx
|
|
6087
|
-
import { jsx as
|
|
6255
|
+
import { jsx as jsx72 } from "react/jsx-runtime";
|
|
6088
6256
|
function LogoCloud({ children, className }) {
|
|
6089
|
-
return /* @__PURE__ */
|
|
6257
|
+
return /* @__PURE__ */ jsx72(
|
|
6090
6258
|
"div",
|
|
6091
6259
|
{
|
|
6092
6260
|
className: cn(
|
|
@@ -6099,24 +6267,24 @@ function LogoCloud({ children, className }) {
|
|
|
6099
6267
|
}
|
|
6100
6268
|
|
|
6101
6269
|
// components/landing/CTABanner.tsx
|
|
6102
|
-
import { jsx as
|
|
6270
|
+
import { jsx as jsx73, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
6103
6271
|
function CTABanner({
|
|
6104
6272
|
title,
|
|
6105
6273
|
subtitle,
|
|
6106
6274
|
actions,
|
|
6107
6275
|
className
|
|
6108
6276
|
}) {
|
|
6109
|
-
return /* @__PURE__ */
|
|
6277
|
+
return /* @__PURE__ */ jsx73(
|
|
6110
6278
|
"section",
|
|
6111
6279
|
{
|
|
6112
6280
|
className: cn(
|
|
6113
6281
|
"w-full border-y-2 bg-primary text-primary-foreground",
|
|
6114
6282
|
className
|
|
6115
6283
|
),
|
|
6116
|
-
children: /* @__PURE__ */
|
|
6117
|
-
/* @__PURE__ */
|
|
6118
|
-
subtitle && /* @__PURE__ */
|
|
6119
|
-
actions && /* @__PURE__ */
|
|
6284
|
+
children: /* @__PURE__ */ jsxs40("div", { className: "mx-auto max-w-6xl px-4 py-16 lg:py-20 flex flex-col items-center text-center gap-4", children: [
|
|
6285
|
+
/* @__PURE__ */ jsx73("h2", { className: "font-head text-3xl lg:text-4xl", children: title }),
|
|
6286
|
+
subtitle && /* @__PURE__ */ jsx73("p", { className: "font-sans text-lg max-w-xl", children: subtitle }),
|
|
6287
|
+
actions && /* @__PURE__ */ jsx73("div", { className: "flex flex-wrap gap-3 mt-2", children: actions })
|
|
6120
6288
|
] })
|
|
6121
6289
|
}
|
|
6122
6290
|
);
|
|
@@ -6125,20 +6293,20 @@ function CTABanner({
|
|
|
6125
6293
|
// components/landing/FAQ.tsx
|
|
6126
6294
|
import * as React60 from "react";
|
|
6127
6295
|
import { ChevronDown as ChevronDown6 } from "lucide-react";
|
|
6128
|
-
import { jsx as
|
|
6296
|
+
import { jsx as jsx74, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
6129
6297
|
function FAQ({ items, className }) {
|
|
6130
6298
|
const [openIndex, setOpenIndex] = React60.useState(null);
|
|
6131
|
-
return /* @__PURE__ */
|
|
6299
|
+
return /* @__PURE__ */ jsx74("div", { className: cn("w-full max-w-3xl mx-auto", className), children: items.map((item, i) => {
|
|
6132
6300
|
const isOpen = openIndex === i;
|
|
6133
|
-
return /* @__PURE__ */
|
|
6134
|
-
/* @__PURE__ */
|
|
6301
|
+
return /* @__PURE__ */ jsxs41("div", { className: "border-2 border-b-0 last:border-b-2", children: [
|
|
6302
|
+
/* @__PURE__ */ jsxs41(
|
|
6135
6303
|
"button",
|
|
6136
6304
|
{
|
|
6137
6305
|
onClick: () => setOpenIndex(isOpen ? null : i),
|
|
6138
6306
|
className: "w-full flex items-center justify-between p-4 text-left cursor-pointer hover:bg-accent/30 transition-colors",
|
|
6139
6307
|
children: [
|
|
6140
|
-
/* @__PURE__ */
|
|
6141
|
-
/* @__PURE__ */
|
|
6308
|
+
/* @__PURE__ */ jsx74("span", { className: "font-head text-sm pr-4", children: item.question }),
|
|
6309
|
+
/* @__PURE__ */ jsx74(
|
|
6142
6310
|
ChevronDown6,
|
|
6143
6311
|
{
|
|
6144
6312
|
className: cn(
|
|
@@ -6150,24 +6318,24 @@ function FAQ({ items, className }) {
|
|
|
6150
6318
|
]
|
|
6151
6319
|
}
|
|
6152
6320
|
),
|
|
6153
|
-
isOpen && /* @__PURE__ */
|
|
6321
|
+
isOpen && /* @__PURE__ */ jsx74("div", { className: "px-4 pb-4 font-sans text-sm text-muted-foreground", children: item.answer })
|
|
6154
6322
|
] }, i);
|
|
6155
6323
|
}) });
|
|
6156
6324
|
}
|
|
6157
6325
|
|
|
6158
6326
|
// components/landing/StatsBar.tsx
|
|
6159
|
-
import { jsx as
|
|
6327
|
+
import { jsx as jsx75, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
6160
6328
|
function StatsBar({ stats, className }) {
|
|
6161
|
-
return /* @__PURE__ */
|
|
6329
|
+
return /* @__PURE__ */ jsx75(
|
|
6162
6330
|
"div",
|
|
6163
6331
|
{
|
|
6164
6332
|
className: cn(
|
|
6165
6333
|
"w-full border-y-2 bg-card",
|
|
6166
6334
|
className
|
|
6167
6335
|
),
|
|
6168
|
-
children: /* @__PURE__ */
|
|
6169
|
-
/* @__PURE__ */
|
|
6170
|
-
/* @__PURE__ */
|
|
6336
|
+
children: /* @__PURE__ */ jsx75("div", { className: "mx-auto max-w-6xl px-4 py-10 grid grid-cols-2 lg:grid-cols-4 gap-8", children: stats.map((stat) => /* @__PURE__ */ jsxs42("div", { className: "text-center", children: [
|
|
6337
|
+
/* @__PURE__ */ jsx75("div", { className: "font-head text-3xl lg:text-4xl mb-1", children: stat.value }),
|
|
6338
|
+
/* @__PURE__ */ jsx75("div", { className: "font-sans text-sm text-muted-foreground uppercase", children: stat.label })
|
|
6171
6339
|
] }, stat.label)) })
|
|
6172
6340
|
}
|
|
6173
6341
|
);
|
|
@@ -6176,37 +6344,39 @@ function StatsBar({ stats, className }) {
|
|
|
6176
6344
|
// components/landing/AnnouncementBanner.tsx
|
|
6177
6345
|
import * as React61 from "react";
|
|
6178
6346
|
import { X as X4 } from "lucide-react";
|
|
6179
|
-
import { jsx as
|
|
6347
|
+
import { jsx as jsx76, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
6180
6348
|
function AnnouncementBanner({
|
|
6181
6349
|
children,
|
|
6182
6350
|
dismissible = true,
|
|
6183
6351
|
className
|
|
6184
6352
|
}) {
|
|
6185
|
-
const [visible, setVisible] = React61.useState(
|
|
6186
|
-
|
|
6187
|
-
|
|
6188
|
-
|
|
6353
|
+
const [visible, setVisible] = React61.useState(true);
|
|
6354
|
+
React61.useEffect(() => {
|
|
6355
|
+
if (sessionStorage.getItem("announcement-dismissed") === "true") {
|
|
6356
|
+
setVisible(false);
|
|
6357
|
+
}
|
|
6358
|
+
}, []);
|
|
6189
6359
|
const handleDismiss = () => {
|
|
6190
6360
|
setVisible(false);
|
|
6191
6361
|
sessionStorage.setItem("announcement-dismissed", "true");
|
|
6192
6362
|
};
|
|
6193
6363
|
if (!visible) return null;
|
|
6194
|
-
return /* @__PURE__ */
|
|
6364
|
+
return /* @__PURE__ */ jsx76(
|
|
6195
6365
|
"div",
|
|
6196
6366
|
{
|
|
6197
6367
|
className: cn(
|
|
6198
6368
|
"w-full bg-primary text-primary-foreground border-b-2",
|
|
6199
6369
|
className
|
|
6200
6370
|
),
|
|
6201
|
-
children: /* @__PURE__ */
|
|
6202
|
-
/* @__PURE__ */
|
|
6203
|
-
dismissible && /* @__PURE__ */
|
|
6371
|
+
children: /* @__PURE__ */ jsxs43("div", { className: "mx-auto max-w-6xl px-4 py-2 flex items-center justify-center gap-3", children: [
|
|
6372
|
+
/* @__PURE__ */ jsx76("p", { className: "font-sans text-sm text-center flex-1", children }),
|
|
6373
|
+
dismissible && /* @__PURE__ */ jsx76(
|
|
6204
6374
|
"button",
|
|
6205
6375
|
{
|
|
6206
6376
|
onClick: handleDismiss,
|
|
6207
6377
|
className: "shrink-0 p-2 min-w-[44px] min-h-[44px] inline-flex items-center justify-center hover:bg-foreground/10 transition-colors cursor-pointer",
|
|
6208
6378
|
"aria-label": "Dismiss",
|
|
6209
|
-
children: /* @__PURE__ */
|
|
6379
|
+
children: /* @__PURE__ */ jsx76(X4, { className: "h-4 w-4" })
|
|
6210
6380
|
}
|
|
6211
6381
|
)
|
|
6212
6382
|
] })
|
|
@@ -6215,7 +6385,7 @@ function AnnouncementBanner({
|
|
|
6215
6385
|
}
|
|
6216
6386
|
|
|
6217
6387
|
// components/landing/NewsletterSignup.tsx
|
|
6218
|
-
import { jsx as
|
|
6388
|
+
import { jsx as jsx77, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
6219
6389
|
function NewsletterSignup({
|
|
6220
6390
|
title = "Stay in the loop",
|
|
6221
6391
|
subtitle,
|
|
@@ -6223,16 +6393,16 @@ function NewsletterSignup({
|
|
|
6223
6393
|
buttonLabel = "Subscribe",
|
|
6224
6394
|
className
|
|
6225
6395
|
}) {
|
|
6226
|
-
return /* @__PURE__ */
|
|
6227
|
-
title && /* @__PURE__ */
|
|
6228
|
-
subtitle && /* @__PURE__ */
|
|
6229
|
-
/* @__PURE__ */
|
|
6396
|
+
return /* @__PURE__ */ jsxs44("div", { className: cn("w-full max-w-md mx-auto", className), children: [
|
|
6397
|
+
title && /* @__PURE__ */ jsx77("h3", { className: "font-head text-xl mb-2 text-center", children: title }),
|
|
6398
|
+
subtitle && /* @__PURE__ */ jsx77("p", { className: "font-sans text-sm text-muted-foreground text-center mb-4", children: subtitle }),
|
|
6399
|
+
/* @__PURE__ */ jsxs44(
|
|
6230
6400
|
"form",
|
|
6231
6401
|
{
|
|
6232
6402
|
onSubmit: (e) => e.preventDefault(),
|
|
6233
6403
|
className: "flex gap-2",
|
|
6234
6404
|
children: [
|
|
6235
|
-
/* @__PURE__ */
|
|
6405
|
+
/* @__PURE__ */ jsx77(
|
|
6236
6406
|
"input",
|
|
6237
6407
|
{
|
|
6238
6408
|
type: "email",
|
|
@@ -6241,7 +6411,7 @@ function NewsletterSignup({
|
|
|
6241
6411
|
required: true
|
|
6242
6412
|
}
|
|
6243
6413
|
),
|
|
6244
|
-
/* @__PURE__ */
|
|
6414
|
+
/* @__PURE__ */ jsx77(
|
|
6245
6415
|
"button",
|
|
6246
6416
|
{
|
|
6247
6417
|
type: "submit",
|
|
@@ -6271,6 +6441,7 @@ export {
|
|
|
6271
6441
|
ChartComponent as Chart,
|
|
6272
6442
|
Checkbox,
|
|
6273
6443
|
CollapsibleComponent as Collapsible,
|
|
6444
|
+
ColorThemeToggle,
|
|
6274
6445
|
ComboboxComponent as Combobox,
|
|
6275
6446
|
CommandComponent as Command,
|
|
6276
6447
|
Container,
|
|
@@ -6332,6 +6503,7 @@ export {
|
|
|
6332
6503
|
TooltipComponent as Tooltip,
|
|
6333
6504
|
TwoColumnLayoutComponent as TwoColumnLayout,
|
|
6334
6505
|
alertVariants,
|
|
6506
|
+
avatarVariants,
|
|
6335
6507
|
badgeVariants,
|
|
6336
6508
|
buttonVariants,
|
|
6337
6509
|
cardVariants,
|