@codapet/design-system 0.8.6 → 0.8.8
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/AGENTS.md +10 -3
- package/dist/index.d.mts +79 -8
- package/dist/index.mjs +1238 -1044
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +52 -0
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -14,15 +14,22 @@ function cn(...inputs) {
|
|
|
14
14
|
|
|
15
15
|
// src/components/ui/accordion.tsx
|
|
16
16
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
17
|
+
var ACCORDION_STAGGER_STEP_MS = 80;
|
|
17
18
|
var AccordionContext = React.createContext({
|
|
18
|
-
variant: "default"
|
|
19
|
+
variant: "default",
|
|
20
|
+
staggerReveal: false
|
|
19
21
|
});
|
|
20
22
|
function Accordion({
|
|
21
23
|
variant = "default",
|
|
24
|
+
staggerReveal = false,
|
|
22
25
|
className,
|
|
23
26
|
...props
|
|
24
27
|
}) {
|
|
25
|
-
|
|
28
|
+
const context = React.useMemo(
|
|
29
|
+
() => ({ variant, staggerReveal }),
|
|
30
|
+
[variant, staggerReveal]
|
|
31
|
+
);
|
|
32
|
+
return /* @__PURE__ */ jsx(AccordionContext.Provider, { value: context, children: /* @__PURE__ */ jsx(
|
|
26
33
|
AccordionPrimitive.Root,
|
|
27
34
|
{
|
|
28
35
|
"data-slot": "accordion",
|
|
@@ -37,31 +44,61 @@ function Accordion({
|
|
|
37
44
|
}
|
|
38
45
|
function AccordionItem({
|
|
39
46
|
className,
|
|
47
|
+
style,
|
|
48
|
+
revealIndex,
|
|
40
49
|
...props
|
|
41
50
|
}) {
|
|
42
|
-
const { variant } = React.useContext(AccordionContext);
|
|
51
|
+
const { variant, staggerReveal } = React.useContext(AccordionContext);
|
|
52
|
+
const staggerStyle = staggerReveal && revealIndex ? { animationDelay: `${revealIndex * ACCORDION_STAGGER_STEP_MS}ms` } : void 0;
|
|
43
53
|
return /* @__PURE__ */ jsx(
|
|
44
54
|
AccordionPrimitive.Item,
|
|
45
55
|
{
|
|
46
56
|
"data-slot": "accordion-item",
|
|
47
57
|
className: cn(
|
|
48
|
-
variant === "outlined" ?
|
|
58
|
+
variant === "outlined" ? cn(
|
|
59
|
+
"rounded-xl border border-border-default",
|
|
60
|
+
// Border warms to the brand stroke on pointer hover only — a
|
|
61
|
+
// touch device would otherwise keep the hover colour after a tap.
|
|
62
|
+
"transition-[border-color] duration-300 ease-out motion-reduce:transition-none",
|
|
63
|
+
"[@media(hover:hover)]:hover:border-primary-stroke-default/60"
|
|
64
|
+
) : "border-b last:border-b-0",
|
|
65
|
+
staggerReveal && "animate-accordion-item-in",
|
|
49
66
|
className
|
|
50
67
|
),
|
|
68
|
+
style: staggerStyle ? { ...staggerStyle, ...style } : style,
|
|
51
69
|
...props
|
|
52
70
|
}
|
|
53
71
|
);
|
|
54
72
|
}
|
|
73
|
+
function PlusMinusIcon({ className }) {
|
|
74
|
+
return /* @__PURE__ */ jsxs(
|
|
75
|
+
"span",
|
|
76
|
+
{
|
|
77
|
+
"aria-hidden": true,
|
|
78
|
+
className: cn(
|
|
79
|
+
"text-gray-icon-default pointer-events-none relative grid size-6 shrink-0 place-items-center",
|
|
80
|
+
className
|
|
81
|
+
),
|
|
82
|
+
children: [
|
|
83
|
+
/* @__PURE__ */ jsx("span", { className: "col-start-1 row-start-1 h-[1.8px] w-3.5 rounded-full bg-current" }),
|
|
84
|
+
/* @__PURE__ */ jsx("span", { className: "col-start-1 row-start-1 h-[1.8px] w-3.5 origin-center rotate-90 rounded-full bg-current transition-[rotate] duration-[280ms] ease-[cubic-bezier(0.33,1,0.68,1)] group-data-[state=open]:rotate-0 motion-reduce:transition-none" })
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
);
|
|
88
|
+
}
|
|
55
89
|
function AccordionTrigger({
|
|
56
90
|
className,
|
|
57
91
|
children,
|
|
58
92
|
expandedIcon,
|
|
59
93
|
collapsedIcon,
|
|
94
|
+
icon = "chevron",
|
|
95
|
+
iconClassName,
|
|
60
96
|
...props
|
|
61
97
|
}) {
|
|
62
98
|
const { variant } = React.useContext(AccordionContext);
|
|
63
99
|
const hasCustomIcon = expandedIcon !== void 0 || collapsedIcon !== void 0;
|
|
64
100
|
const animatedIconSwap = variant === "outlined" && collapsedIcon !== void 0 && expandedIcon !== void 0;
|
|
101
|
+
const usesChevron = !hasCustomIcon && icon === "chevron";
|
|
65
102
|
return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
66
103
|
AccordionPrimitive.Trigger,
|
|
67
104
|
{
|
|
@@ -69,7 +106,7 @@ function AccordionTrigger({
|
|
|
69
106
|
className: cn(
|
|
70
107
|
"group focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50",
|
|
71
108
|
variant === "outlined" && "min-h-16 items-center gap-8 px-5 py-4 text-base lg:px-6 lg:text-lg lg:leading-7 hover:no-underline",
|
|
72
|
-
|
|
109
|
+
usesChevron && "[&[data-state=open]>svg]:rotate-180",
|
|
73
110
|
className
|
|
74
111
|
),
|
|
75
112
|
...props,
|
|
@@ -81,7 +118,15 @@ function AccordionTrigger({
|
|
|
81
118
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
82
119
|
collapsedIcon !== void 0 && /* @__PURE__ */ jsx("span", { className: "group-data-[state=open]:hidden pointer-events-none shrink-0 text-muted-foreground", children: collapsedIcon }),
|
|
83
120
|
expandedIcon !== void 0 && /* @__PURE__ */ jsx("span", { className: "group-data-[state=closed]:hidden pointer-events-none shrink-0 text-muted-foreground", children: expandedIcon })
|
|
84
|
-
] }) : /* @__PURE__ */ jsx(
|
|
121
|
+
] }) : icon === "plus-minus" ? /* @__PURE__ */ jsx(PlusMinusIcon, { className: iconClassName }) : /* @__PURE__ */ jsx(
|
|
122
|
+
ChevronDownIcon,
|
|
123
|
+
{
|
|
124
|
+
className: cn(
|
|
125
|
+
"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-400",
|
|
126
|
+
iconClassName
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
)
|
|
85
130
|
]
|
|
86
131
|
}
|
|
87
132
|
) });
|
|
@@ -96,7 +141,12 @@ function AccordionContent({
|
|
|
96
141
|
AccordionPrimitive.Content,
|
|
97
142
|
{
|
|
98
143
|
"data-slot": "accordion-content",
|
|
99
|
-
className:
|
|
144
|
+
className: cn(
|
|
145
|
+
"overflow-hidden text-sm",
|
|
146
|
+
// Outlined cards fade while they grow; the stripe variant keeps the
|
|
147
|
+
// shadcn height-only motion.
|
|
148
|
+
variant === "outlined" ? "data-[state=closed]:animate-accordion-up-fade data-[state=open]:animate-accordion-down-fade" : "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"
|
|
149
|
+
),
|
|
100
150
|
...props,
|
|
101
151
|
children: /* @__PURE__ */ jsx(
|
|
102
152
|
"div",
|
|
@@ -664,6 +714,8 @@ function AsyncAutocomplete({
|
|
|
664
714
|
onValueChange,
|
|
665
715
|
onClear,
|
|
666
716
|
placeholder,
|
|
717
|
+
label,
|
|
718
|
+
mandatory = false,
|
|
667
719
|
leftIcon,
|
|
668
720
|
size = "md",
|
|
669
721
|
error = false,
|
|
@@ -702,6 +754,13 @@ function AsyncAutocomplete({
|
|
|
702
754
|
const sheetInputRef = React8.useRef(null);
|
|
703
755
|
const optionRefs = React8.useRef([]);
|
|
704
756
|
const isMobile = useIsMobile();
|
|
757
|
+
const hasAccessibleName = !!label || !!inputProps?.["aria-label"] || !!inputProps?.["aria-labelledby"];
|
|
758
|
+
React8.useEffect(() => {
|
|
759
|
+
if (process.env.NODE_ENV === "production" || hasAccessibleName) return;
|
|
760
|
+
console.warn(
|
|
761
|
+
"[AsyncAutocomplete] No accessible name. Pass `label`, or an `aria-label`/`aria-labelledby` via `inputProps`. A `placeholder` does not name a combobox."
|
|
762
|
+
);
|
|
763
|
+
}, [hasAccessibleName]);
|
|
705
764
|
const isControlledValue = valueProp !== void 0;
|
|
706
765
|
const isControlledOpen = openProp !== void 0;
|
|
707
766
|
const query = isControlledValue ? valueProp : internalValue;
|
|
@@ -796,13 +855,13 @@ function AsyncAutocomplete({
|
|
|
796
855
|
if (highlightedIndex < 0) return;
|
|
797
856
|
optionRefs.current[highlightedIndex]?.scrollIntoView({ block: "nearest" });
|
|
798
857
|
}, [highlightedIndex]);
|
|
799
|
-
const
|
|
800
|
-
const
|
|
858
|
+
const hasOptions = options.length > 0;
|
|
859
|
+
const showLoadingRow = loading && !hasOptions;
|
|
860
|
+
const showEmpty = !loading && !hasOptions && query.trim() !== "";
|
|
861
|
+
const isRefreshing = loading && hasOptions;
|
|
862
|
+
const hasBody = showLoadingRow || hasOptions || showEmpty;
|
|
801
863
|
const popoverOpen = isOpen && !useSheet && hasBody;
|
|
802
|
-
const dismissIgnoreRefs = React8.useMemo(
|
|
803
|
-
() => [contentRef, fieldRef],
|
|
804
|
-
[]
|
|
805
|
-
);
|
|
864
|
+
const dismissIgnoreRefs = React8.useMemo(() => [contentRef, fieldRef], []);
|
|
806
865
|
useDismissOnScroll(popoverOpen, closePanel, dismissIgnoreRefs);
|
|
807
866
|
const handleKeyDown = (event) => {
|
|
808
867
|
if (useSheet && !isOpen && (event.key === "Enter" || event.key === " " || event.key === "ArrowDown")) {
|
|
@@ -890,7 +949,16 @@ function AsyncAutocomplete({
|
|
|
890
949
|
),
|
|
891
950
|
children: [
|
|
892
951
|
option.label,
|
|
893
|
-
option.description && /* @__PURE__ */ jsx8(
|
|
952
|
+
option.description && /* @__PURE__ */ jsx8(
|
|
953
|
+
"span",
|
|
954
|
+
{
|
|
955
|
+
className: cn(
|
|
956
|
+
"text-gray-subtle",
|
|
957
|
+
classNames?.optionDescription
|
|
958
|
+
),
|
|
959
|
+
children: `, ${option.description}`
|
|
960
|
+
}
|
|
961
|
+
)
|
|
894
962
|
]
|
|
895
963
|
}
|
|
896
964
|
)
|
|
@@ -904,22 +972,71 @@ function AsyncAutocomplete({
|
|
|
904
972
|
{
|
|
905
973
|
role: "listbox",
|
|
906
974
|
id: listboxId,
|
|
975
|
+
"aria-busy": loading || void 0,
|
|
976
|
+
"data-busy": isRefreshing || void 0,
|
|
907
977
|
className: cn("flex flex-col", classNames?.listbox),
|
|
908
|
-
children:
|
|
909
|
-
|
|
910
|
-
|
|
978
|
+
children: showLoadingRow ? (
|
|
979
|
+
// `role="listbox"` may only own `option` and `group` children, so the
|
|
980
|
+
// status rows are disabled options: still announced, never selectable,
|
|
981
|
+
// and skipped by keyboard nav since they are not in `options`.
|
|
982
|
+
/* @__PURE__ */ jsxs5(
|
|
983
|
+
"div",
|
|
911
984
|
{
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
)
|
|
985
|
+
role: "option",
|
|
986
|
+
"aria-disabled": "true",
|
|
987
|
+
"aria-selected": "false",
|
|
988
|
+
className: cn(messageClassName, classNames?.loading),
|
|
989
|
+
children: [
|
|
990
|
+
/* @__PURE__ */ jsx8(
|
|
991
|
+
Loader2,
|
|
992
|
+
{
|
|
993
|
+
className: cn(
|
|
994
|
+
"size-[16px] animate-spin text-gray-icon-light",
|
|
995
|
+
classNames?.loadingSpinner
|
|
996
|
+
)
|
|
997
|
+
}
|
|
998
|
+
),
|
|
999
|
+
loadingMessage
|
|
1000
|
+
]
|
|
916
1001
|
}
|
|
917
|
-
)
|
|
918
|
-
|
|
919
|
-
|
|
1002
|
+
)
|
|
1003
|
+
) : showEmpty ? /* @__PURE__ */ jsx8(
|
|
1004
|
+
"div",
|
|
1005
|
+
{
|
|
1006
|
+
role: "option",
|
|
1007
|
+
"aria-disabled": "true",
|
|
1008
|
+
"aria-selected": "false",
|
|
1009
|
+
className: cn(!emptyState && messageClassName, classNames?.empty),
|
|
1010
|
+
children: emptyState ?? emptyMessage
|
|
1011
|
+
}
|
|
1012
|
+
) : options.map(renderRow)
|
|
920
1013
|
}
|
|
921
1014
|
);
|
|
922
1015
|
const activeDescendant = highlightedIndex >= 0 ? optionDomId(highlightedIndex) : void 0;
|
|
1016
|
+
const labelNode = label ? /* @__PURE__ */ jsxs5(
|
|
1017
|
+
"label",
|
|
1018
|
+
{
|
|
1019
|
+
htmlFor: `${prefix}-input`,
|
|
1020
|
+
"data-slot": "async-autocomplete-label",
|
|
1021
|
+
className: cn(
|
|
1022
|
+
"flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details",
|
|
1023
|
+
classNames?.label
|
|
1024
|
+
),
|
|
1025
|
+
children: [
|
|
1026
|
+
label,
|
|
1027
|
+
mandatory && // Decorative: the requirement is conveyed by aria-required on the
|
|
1028
|
+
// input, so screen readers say "City, required" rather than "City star".
|
|
1029
|
+
/* @__PURE__ */ jsx8(
|
|
1030
|
+
"span",
|
|
1031
|
+
{
|
|
1032
|
+
"aria-hidden": "true",
|
|
1033
|
+
className: "ml-0.5 text-[14px] leading-[20px] text-error-surface-default",
|
|
1034
|
+
children: "*"
|
|
1035
|
+
}
|
|
1036
|
+
)
|
|
1037
|
+
]
|
|
1038
|
+
}
|
|
1039
|
+
) : null;
|
|
923
1040
|
const field = /* @__PURE__ */ jsx8("div", { ref: fieldRef, className: cn("relative w-full", classNames?.field), children: /* @__PURE__ */ jsx8(
|
|
924
1041
|
Input,
|
|
925
1042
|
{
|
|
@@ -933,6 +1050,7 @@ function AsyncAutocomplete({
|
|
|
933
1050
|
"aria-expanded": useSheet ? sheetIsOpen : popoverOpen,
|
|
934
1051
|
"aria-controls": popoverOpen ? listboxId : void 0,
|
|
935
1052
|
"aria-autocomplete": useSheet ? void 0 : "list",
|
|
1053
|
+
"aria-required": mandatory || void 0,
|
|
936
1054
|
"aria-activedescendant": popoverOpen ? activeDescendant : void 0,
|
|
937
1055
|
size,
|
|
938
1056
|
error,
|
|
@@ -971,8 +1089,13 @@ function AsyncAutocomplete({
|
|
|
971
1089
|
"div",
|
|
972
1090
|
{
|
|
973
1091
|
"data-slot": "async-autocomplete",
|
|
974
|
-
className: cn(
|
|
1092
|
+
className: cn(
|
|
1093
|
+
"flex w-full flex-col",
|
|
1094
|
+
labelNode && "gap-[8px]",
|
|
1095
|
+
className
|
|
1096
|
+
),
|
|
975
1097
|
children: [
|
|
1098
|
+
labelNode,
|
|
976
1099
|
/* @__PURE__ */ jsx8(PopoverPrimitive.Anchor, { asChild: true, children: field }),
|
|
977
1100
|
/* @__PURE__ */ jsx8(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx8(
|
|
978
1101
|
PopoverPrimitive.Content,
|
|
@@ -1076,7 +1199,7 @@ function AsyncAutocomplete({
|
|
|
1076
1199
|
"aria-controls": listboxId,
|
|
1077
1200
|
"aria-autocomplete": "list",
|
|
1078
1201
|
"aria-activedescendant": activeDescendant,
|
|
1079
|
-
"aria-label": sheetTitle,
|
|
1202
|
+
"aria-label": label ?? sheetTitle,
|
|
1080
1203
|
size,
|
|
1081
1204
|
placeholder,
|
|
1082
1205
|
leftIcon,
|
|
@@ -4160,563 +4283,915 @@ function DropdownSelectOption({
|
|
|
4160
4283
|
);
|
|
4161
4284
|
}
|
|
4162
4285
|
|
|
4163
|
-
// src/components/ui/
|
|
4286
|
+
// src/components/ui/faq-accordion.tsx
|
|
4164
4287
|
import * as React32 from "react";
|
|
4165
|
-
import "@radix-ui/react-label";
|
|
4166
|
-
import { Slot as Slot5 } from "@radix-ui/react-slot";
|
|
4167
|
-
import {
|
|
4168
|
-
Controller,
|
|
4169
|
-
FormProvider,
|
|
4170
|
-
useFormContext,
|
|
4171
|
-
useFormState
|
|
4172
|
-
} from "react-hook-form";
|
|
4173
4288
|
|
|
4174
|
-
// src/components/ui/
|
|
4289
|
+
// src/components/ui/typography.tsx
|
|
4175
4290
|
import { Slot as Slot4 } from "@radix-ui/react-slot";
|
|
4176
4291
|
import { cva as cva9 } from "class-variance-authority";
|
|
4177
4292
|
import "react";
|
|
4178
4293
|
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
4179
|
-
var
|
|
4294
|
+
var displayTextVariants = cva9(
|
|
4295
|
+
"tracking-normal font-normal font-serif italic text-vibrant-text-display",
|
|
4296
|
+
{
|
|
4297
|
+
variants: {
|
|
4298
|
+
size: {
|
|
4299
|
+
lg: "text-4xl md:text-[3.25rem] leading-[44px] md:leading-[64px]",
|
|
4300
|
+
md: "text-[1.75rem] md:text-4xl leading-[36px] md:leading-[44px]",
|
|
4301
|
+
sm: "text-lg md:text-xl leading-[26px] md:leading-[28px]"
|
|
4302
|
+
}
|
|
4303
|
+
},
|
|
4304
|
+
defaultVariants: {
|
|
4305
|
+
size: "md"
|
|
4306
|
+
}
|
|
4307
|
+
}
|
|
4308
|
+
);
|
|
4309
|
+
function DisplayHeading({
|
|
4310
|
+
className,
|
|
4311
|
+
size,
|
|
4312
|
+
asChild = false,
|
|
4313
|
+
...props
|
|
4314
|
+
}) {
|
|
4315
|
+
const Comp = asChild ? Slot4 : "h1";
|
|
4316
|
+
return /* @__PURE__ */ jsx32(
|
|
4317
|
+
Comp,
|
|
4318
|
+
{
|
|
4319
|
+
"data-slot": "h1",
|
|
4320
|
+
className: cn(displayTextVariants({ size, className })),
|
|
4321
|
+
...props
|
|
4322
|
+
}
|
|
4323
|
+
);
|
|
4324
|
+
}
|
|
4325
|
+
var bodyTextVariants = cva9("font-sans text-vibrant-text-body", {
|
|
4180
4326
|
variants: {
|
|
4181
4327
|
size: {
|
|
4182
|
-
lg: "text-
|
|
4183
|
-
md: "
|
|
4184
|
-
sm: "
|
|
4185
|
-
xs: "text-xs leading-[
|
|
4328
|
+
lg: "text-lg md:text-xl leading-[26px] md:leading-[28px]",
|
|
4329
|
+
md: "text-base leading-[24px]",
|
|
4330
|
+
sm: "text-sm leading-[20px]",
|
|
4331
|
+
xs: "text-xs leading-[16px]"
|
|
4186
4332
|
}
|
|
4187
4333
|
},
|
|
4188
4334
|
defaultVariants: {
|
|
4189
4335
|
size: "md"
|
|
4190
4336
|
}
|
|
4191
4337
|
});
|
|
4192
|
-
function
|
|
4338
|
+
function Body({
|
|
4193
4339
|
className,
|
|
4194
4340
|
size,
|
|
4195
4341
|
asChild = false,
|
|
4196
4342
|
...props
|
|
4197
4343
|
}) {
|
|
4198
|
-
const Comp = asChild ? Slot4 : "
|
|
4344
|
+
const Comp = asChild ? Slot4 : "p";
|
|
4199
4345
|
return /* @__PURE__ */ jsx32(
|
|
4200
4346
|
Comp,
|
|
4201
4347
|
{
|
|
4202
|
-
"data-slot": "
|
|
4203
|
-
className: cn(
|
|
4348
|
+
"data-slot": "p",
|
|
4349
|
+
className: cn(bodyTextVariants({ size, className })),
|
|
4204
4350
|
...props
|
|
4205
4351
|
}
|
|
4206
4352
|
);
|
|
4207
4353
|
}
|
|
4208
|
-
|
|
4209
|
-
|
|
4210
|
-
|
|
4211
|
-
var Form = FormProvider;
|
|
4212
|
-
var FormFieldContext = React32.createContext(
|
|
4213
|
-
{}
|
|
4214
|
-
);
|
|
4215
|
-
var FormField = ({
|
|
4354
|
+
function HeadingXL({
|
|
4355
|
+
className,
|
|
4356
|
+
asChild = false,
|
|
4216
4357
|
...props
|
|
4217
|
-
})
|
|
4218
|
-
|
|
4219
|
-
|
|
4220
|
-
|
|
4221
|
-
const fieldContext = React32.useContext(FormFieldContext);
|
|
4222
|
-
const itemContext = React32.useContext(FormItemContext);
|
|
4223
|
-
const { getFieldState } = useFormContext();
|
|
4224
|
-
const formState = useFormState({ name: fieldContext.name });
|
|
4225
|
-
const fieldState = getFieldState(fieldContext.name, formState);
|
|
4226
|
-
if (!fieldContext) {
|
|
4227
|
-
throw new Error("useFormField should be used within <FormField>");
|
|
4228
|
-
}
|
|
4229
|
-
const { id } = itemContext;
|
|
4230
|
-
return {
|
|
4231
|
-
id,
|
|
4232
|
-
name: fieldContext.name,
|
|
4233
|
-
formItemId: `${id}-form-item`,
|
|
4234
|
-
formDescriptionId: `${id}-form-item-description`,
|
|
4235
|
-
formMessageId: `${id}-form-item-message`,
|
|
4236
|
-
...fieldState
|
|
4237
|
-
};
|
|
4238
|
-
};
|
|
4239
|
-
var FormItemContext = React32.createContext(
|
|
4240
|
-
{}
|
|
4241
|
-
);
|
|
4242
|
-
function FormItem({ className, ...props }) {
|
|
4243
|
-
const id = React32.useId();
|
|
4244
|
-
return /* @__PURE__ */ jsx33(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx33(
|
|
4245
|
-
"div",
|
|
4358
|
+
}) {
|
|
4359
|
+
const Comp = asChild ? Slot4 : "h1";
|
|
4360
|
+
return /* @__PURE__ */ jsx32(
|
|
4361
|
+
Comp,
|
|
4246
4362
|
{
|
|
4247
|
-
"data-slot": "
|
|
4248
|
-
className: cn(
|
|
4363
|
+
"data-slot": "h1",
|
|
4364
|
+
className: cn(
|
|
4365
|
+
"text-2xl md:text-[2rem] leading-[32px] md:leading-[40px] font-semibold font-sans text-vibrant-text-heading",
|
|
4366
|
+
className
|
|
4367
|
+
),
|
|
4249
4368
|
...props
|
|
4250
4369
|
}
|
|
4251
|
-
)
|
|
4370
|
+
);
|
|
4252
4371
|
}
|
|
4253
|
-
function
|
|
4372
|
+
function HeadingL({
|
|
4254
4373
|
className,
|
|
4374
|
+
asChild = false,
|
|
4255
4375
|
...props
|
|
4256
4376
|
}) {
|
|
4257
|
-
const
|
|
4258
|
-
return /* @__PURE__ */
|
|
4259
|
-
|
|
4377
|
+
const Comp = asChild ? Slot4 : "h2";
|
|
4378
|
+
return /* @__PURE__ */ jsx32(
|
|
4379
|
+
Comp,
|
|
4260
4380
|
{
|
|
4261
|
-
"data-slot": "
|
|
4262
|
-
|
|
4263
|
-
|
|
4264
|
-
|
|
4381
|
+
"data-slot": "h2",
|
|
4382
|
+
className: cn(
|
|
4383
|
+
"text-[1.25rem] md:text-[1.5rem] leading-[28px] md:leading-[32px] font-semibold font-sans text-vibrant-text-heading",
|
|
4384
|
+
className
|
|
4385
|
+
),
|
|
4265
4386
|
...props
|
|
4266
4387
|
}
|
|
4267
4388
|
);
|
|
4268
4389
|
}
|
|
4269
|
-
function
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4390
|
+
function HeadingM({
|
|
4391
|
+
className,
|
|
4392
|
+
asChild = false,
|
|
4393
|
+
...props
|
|
4394
|
+
}) {
|
|
4395
|
+
const Comp = asChild ? Slot4 : "h3";
|
|
4396
|
+
return /* @__PURE__ */ jsx32(
|
|
4397
|
+
Comp,
|
|
4273
4398
|
{
|
|
4274
|
-
"data-slot": "
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4399
|
+
"data-slot": "h3",
|
|
4400
|
+
className: cn(
|
|
4401
|
+
"text-[1.125rem] md:text-xl leading-[26px] md:leading-[28px] font-semibold font-sans text-vibrant-text-heading",
|
|
4402
|
+
className
|
|
4403
|
+
),
|
|
4278
4404
|
...props
|
|
4279
4405
|
}
|
|
4280
4406
|
);
|
|
4281
4407
|
}
|
|
4282
|
-
function
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4408
|
+
function HeadingS({
|
|
4409
|
+
className,
|
|
4410
|
+
asChild = false,
|
|
4411
|
+
...props
|
|
4412
|
+
}) {
|
|
4413
|
+
const Comp = asChild ? Slot4 : "h4";
|
|
4414
|
+
return /* @__PURE__ */ jsx32(
|
|
4415
|
+
Comp,
|
|
4286
4416
|
{
|
|
4287
|
-
"data-slot": "
|
|
4288
|
-
|
|
4289
|
-
|
|
4417
|
+
"data-slot": "h4",
|
|
4418
|
+
className: cn(
|
|
4419
|
+
"text-base leading-[24px] font-semibold font-sans text-vibrant-text-heading",
|
|
4420
|
+
className
|
|
4421
|
+
),
|
|
4290
4422
|
...props
|
|
4291
4423
|
}
|
|
4292
4424
|
);
|
|
4293
4425
|
}
|
|
4294
|
-
function
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
return /* @__PURE__ */
|
|
4301
|
-
|
|
4426
|
+
function HeadingXS({
|
|
4427
|
+
className,
|
|
4428
|
+
asChild = false,
|
|
4429
|
+
...props
|
|
4430
|
+
}) {
|
|
4431
|
+
const Comp = asChild ? Slot4 : "h5";
|
|
4432
|
+
return /* @__PURE__ */ jsx32(
|
|
4433
|
+
Comp,
|
|
4302
4434
|
{
|
|
4303
|
-
"data-slot": "
|
|
4304
|
-
|
|
4305
|
-
|
|
4306
|
-
|
|
4307
|
-
|
|
4435
|
+
"data-slot": "h5",
|
|
4436
|
+
className: cn(
|
|
4437
|
+
"text-sm leading-[20px] font-semibold font-sans text-vibrant-text-heading",
|
|
4438
|
+
className
|
|
4439
|
+
),
|
|
4440
|
+
...props
|
|
4308
4441
|
}
|
|
4309
4442
|
);
|
|
4310
4443
|
}
|
|
4311
|
-
|
|
4312
|
-
|
|
4313
|
-
|
|
4314
|
-
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
4315
|
-
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
4316
|
-
function HoverCard({
|
|
4444
|
+
function HeadingXXS({
|
|
4445
|
+
className,
|
|
4446
|
+
asChild = false,
|
|
4317
4447
|
...props
|
|
4318
4448
|
}) {
|
|
4319
|
-
|
|
4320
|
-
|
|
4321
|
-
|
|
4322
|
-
...props
|
|
4323
|
-
}) {
|
|
4324
|
-
return /* @__PURE__ */ jsx34(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
|
|
4325
|
-
}
|
|
4326
|
-
function HoverCardContent({
|
|
4327
|
-
className,
|
|
4328
|
-
align = "center",
|
|
4329
|
-
sideOffset = 4,
|
|
4330
|
-
...props
|
|
4331
|
-
}) {
|
|
4332
|
-
return /* @__PURE__ */ jsx34(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx34(
|
|
4333
|
-
HoverCardPrimitive.Content,
|
|
4449
|
+
const Comp = asChild ? Slot4 : "h6";
|
|
4450
|
+
return /* @__PURE__ */ jsx32(
|
|
4451
|
+
Comp,
|
|
4334
4452
|
{
|
|
4335
|
-
"data-slot": "
|
|
4336
|
-
align,
|
|
4337
|
-
sideOffset,
|
|
4453
|
+
"data-slot": "h6",
|
|
4338
4454
|
className: cn(
|
|
4339
|
-
"
|
|
4455
|
+
"text-xs leading-[16px] font-medium font-sans text-vibrant-text-heading",
|
|
4340
4456
|
className
|
|
4341
4457
|
),
|
|
4342
4458
|
...props
|
|
4343
4459
|
}
|
|
4344
|
-
) });
|
|
4345
|
-
}
|
|
4346
|
-
|
|
4347
|
-
// src/components/ui/input-otp.tsx
|
|
4348
|
-
import * as React34 from "react";
|
|
4349
|
-
import { OTPInput, OTPInputContext } from "input-otp";
|
|
4350
|
-
import { MinusIcon } from "lucide-react";
|
|
4351
|
-
import { jsx as jsx35, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
4352
|
-
var InputOTPErrorContext = React34.createContext(false);
|
|
4353
|
-
function InputOTP({
|
|
4354
|
-
className,
|
|
4355
|
-
containerClassName,
|
|
4356
|
-
error,
|
|
4357
|
-
...props
|
|
4358
|
-
}) {
|
|
4359
|
-
return /* @__PURE__ */ jsx35(InputOTPErrorContext.Provider, { value: error ?? false, children: /* @__PURE__ */ jsx35(
|
|
4360
|
-
OTPInput,
|
|
4361
|
-
{
|
|
4362
|
-
"data-slot": "input-otp",
|
|
4363
|
-
containerClassName: cn(
|
|
4364
|
-
"flex items-center gap-2 has-disabled:opacity-40",
|
|
4365
|
-
containerClassName
|
|
4366
|
-
),
|
|
4367
|
-
className: cn("disabled:cursor-not-allowed", className),
|
|
4368
|
-
...props
|
|
4369
|
-
}
|
|
4370
|
-
) });
|
|
4371
|
-
}
|
|
4372
|
-
function InputOTPGroup({ className, ...props }) {
|
|
4373
|
-
return /* @__PURE__ */ jsx35(
|
|
4374
|
-
"div",
|
|
4375
|
-
{
|
|
4376
|
-
"data-slot": "input-otp-group",
|
|
4377
|
-
className: cn("flex items-center", className),
|
|
4378
|
-
...props
|
|
4379
|
-
}
|
|
4380
4460
|
);
|
|
4381
4461
|
}
|
|
4382
|
-
function
|
|
4383
|
-
index,
|
|
4462
|
+
function HeadingXLMedium({
|
|
4384
4463
|
className,
|
|
4464
|
+
asChild = false,
|
|
4385
4465
|
...props
|
|
4386
4466
|
}) {
|
|
4387
|
-
const
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
const error = React34.useContext(InputOTPErrorContext);
|
|
4391
|
-
return /* @__PURE__ */ jsxs19(
|
|
4392
|
-
"div",
|
|
4467
|
+
const Comp = asChild ? Slot4 : "h1";
|
|
4468
|
+
return /* @__PURE__ */ jsx32(
|
|
4469
|
+
Comp,
|
|
4393
4470
|
{
|
|
4394
|
-
"data-slot": "
|
|
4395
|
-
"data-active": isActive,
|
|
4471
|
+
"data-slot": "h1",
|
|
4396
4472
|
className: cn(
|
|
4397
|
-
|
|
4398
|
-
"relative flex size-10 items-center justify-center",
|
|
4399
|
-
"border-y border-r first:border-l text-sm font-medium leading-5",
|
|
4400
|
-
"transition-all outline-none",
|
|
4401
|
-
"first:rounded-l-[4px] last:rounded-r-[4px]",
|
|
4402
|
-
"text-foreground",
|
|
4403
|
-
// Default state (no error)
|
|
4404
|
-
!error && "border-gray-stroke-default bg-background",
|
|
4405
|
-
// Hover: all slots turn blue (non-error, non-active)
|
|
4406
|
-
!error && isHovering && !isActive && "border-focus-ring",
|
|
4407
|
-
// Active slot (non-error): 2px blue border
|
|
4408
|
-
!error && isActive && "z-10 border-2 border-focus-ring",
|
|
4409
|
-
// Error (non-active)
|
|
4410
|
-
error && !isActive && "border-error-stroke-default bg-error-surface-subtle",
|
|
4411
|
-
// Error + active
|
|
4412
|
-
error && isActive && "z-10 border-2 border-error-stroke-default bg-error-surface-subtle",
|
|
4473
|
+
"text-2xl md:text-[2rem] leading-[32px] md:leading-[40px] font-medium font-sans text-vibrant-text-heading",
|
|
4413
4474
|
className
|
|
4414
4475
|
),
|
|
4415
|
-
...props
|
|
4416
|
-
children: [
|
|
4417
|
-
char,
|
|
4418
|
-
hasFakeCaret && /* @__PURE__ */ jsx35("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx35("div", { className: "animate-caret-blink bg-focus-ring h-4 w-px duration-1000" }) })
|
|
4419
|
-
]
|
|
4476
|
+
...props
|
|
4420
4477
|
}
|
|
4421
4478
|
);
|
|
4422
4479
|
}
|
|
4423
|
-
function
|
|
4424
|
-
return /* @__PURE__ */ jsx35("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ jsx35(MinusIcon, {}) });
|
|
4425
|
-
}
|
|
4426
|
-
|
|
4427
|
-
// src/components/ui/menubar.tsx
|
|
4428
|
-
import "react";
|
|
4429
|
-
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
4430
|
-
import { CheckIcon as CheckIcon3, ChevronRightIcon as ChevronRightIcon4, CircleIcon as CircleIcon3 } from "lucide-react";
|
|
4431
|
-
import { jsx as jsx36, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
4432
|
-
function Menubar({
|
|
4480
|
+
function HeadingLMedium({
|
|
4433
4481
|
className,
|
|
4482
|
+
asChild = false,
|
|
4434
4483
|
...props
|
|
4435
4484
|
}) {
|
|
4436
|
-
|
|
4437
|
-
|
|
4485
|
+
const Comp = asChild ? Slot4 : "h2";
|
|
4486
|
+
return /* @__PURE__ */ jsx32(
|
|
4487
|
+
Comp,
|
|
4438
4488
|
{
|
|
4439
|
-
"data-slot": "
|
|
4489
|
+
"data-slot": "h2",
|
|
4440
4490
|
className: cn(
|
|
4441
|
-
"
|
|
4491
|
+
"text-[1.25rem] md:text-[1.5rem] leading-[28px] md:leading-[32px] font-medium font-sans text-vibrant-text-heading",
|
|
4442
4492
|
className
|
|
4443
4493
|
),
|
|
4444
4494
|
...props
|
|
4445
4495
|
}
|
|
4446
4496
|
);
|
|
4447
4497
|
}
|
|
4448
|
-
function
|
|
4449
|
-
...props
|
|
4450
|
-
}) {
|
|
4451
|
-
return /* @__PURE__ */ jsx36(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
|
|
4452
|
-
}
|
|
4453
|
-
function MenubarGroup({
|
|
4454
|
-
...props
|
|
4455
|
-
}) {
|
|
4456
|
-
return /* @__PURE__ */ jsx36(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
|
|
4457
|
-
}
|
|
4458
|
-
function MenubarPortal({
|
|
4459
|
-
...props
|
|
4460
|
-
}) {
|
|
4461
|
-
return /* @__PURE__ */ jsx36(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
|
|
4462
|
-
}
|
|
4463
|
-
function MenubarRadioGroup({
|
|
4464
|
-
...props
|
|
4465
|
-
}) {
|
|
4466
|
-
return /* @__PURE__ */ jsx36(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
|
|
4467
|
-
}
|
|
4468
|
-
function MenubarTrigger({
|
|
4498
|
+
function HeadingMMedium({
|
|
4469
4499
|
className,
|
|
4500
|
+
asChild = false,
|
|
4470
4501
|
...props
|
|
4471
4502
|
}) {
|
|
4472
|
-
|
|
4473
|
-
|
|
4503
|
+
const Comp = asChild ? Slot4 : "h3";
|
|
4504
|
+
return /* @__PURE__ */ jsx32(
|
|
4505
|
+
Comp,
|
|
4474
4506
|
{
|
|
4475
|
-
"data-slot": "
|
|
4507
|
+
"data-slot": "h3",
|
|
4476
4508
|
className: cn(
|
|
4477
|
-
"
|
|
4509
|
+
"text-[1.125rem] md:text-xl leading-[26px] md:leading-[28px] font-medium font-sans text-vibrant-text-heading",
|
|
4478
4510
|
className
|
|
4479
4511
|
),
|
|
4480
4512
|
...props
|
|
4481
4513
|
}
|
|
4482
4514
|
);
|
|
4483
4515
|
}
|
|
4484
|
-
function
|
|
4516
|
+
function HeadingSMedium({
|
|
4485
4517
|
className,
|
|
4486
|
-
|
|
4487
|
-
alignOffset = -4,
|
|
4488
|
-
sideOffset = 8,
|
|
4518
|
+
asChild = false,
|
|
4489
4519
|
...props
|
|
4490
4520
|
}) {
|
|
4491
|
-
|
|
4492
|
-
|
|
4521
|
+
const Comp = asChild ? Slot4 : "h4";
|
|
4522
|
+
return /* @__PURE__ */ jsx32(
|
|
4523
|
+
Comp,
|
|
4493
4524
|
{
|
|
4494
|
-
"data-slot": "
|
|
4495
|
-
align,
|
|
4496
|
-
alignOffset,
|
|
4497
|
-
sideOffset,
|
|
4525
|
+
"data-slot": "h4",
|
|
4498
4526
|
className: cn(
|
|
4499
|
-
"
|
|
4527
|
+
"text-base leading-[24px] font-medium font-sans text-vibrant-text-heading",
|
|
4500
4528
|
className
|
|
4501
4529
|
),
|
|
4502
4530
|
...props
|
|
4503
4531
|
}
|
|
4504
|
-
)
|
|
4532
|
+
);
|
|
4505
4533
|
}
|
|
4506
|
-
function
|
|
4534
|
+
function HeadingXSMedium({
|
|
4507
4535
|
className,
|
|
4508
|
-
|
|
4509
|
-
variant = "default",
|
|
4536
|
+
asChild = false,
|
|
4510
4537
|
...props
|
|
4511
4538
|
}) {
|
|
4512
|
-
|
|
4513
|
-
|
|
4539
|
+
const Comp = asChild ? Slot4 : "h5";
|
|
4540
|
+
return /* @__PURE__ */ jsx32(
|
|
4541
|
+
Comp,
|
|
4514
4542
|
{
|
|
4515
|
-
"data-slot": "
|
|
4516
|
-
"data-inset": inset,
|
|
4517
|
-
"data-variant": variant,
|
|
4543
|
+
"data-slot": "h5",
|
|
4518
4544
|
className: cn(
|
|
4519
|
-
"
|
|
4545
|
+
"text-sm leading-[20px] font-medium font-sans text-vibrant-text-heading",
|
|
4520
4546
|
className
|
|
4521
4547
|
),
|
|
4522
4548
|
...props
|
|
4523
4549
|
}
|
|
4524
4550
|
);
|
|
4525
4551
|
}
|
|
4526
|
-
function
|
|
4552
|
+
function HeadingXXSMedium({
|
|
4527
4553
|
className,
|
|
4528
|
-
|
|
4529
|
-
checked,
|
|
4554
|
+
asChild = false,
|
|
4530
4555
|
...props
|
|
4531
4556
|
}) {
|
|
4532
|
-
|
|
4533
|
-
|
|
4557
|
+
const Comp = asChild ? Slot4 : "h6";
|
|
4558
|
+
return /* @__PURE__ */ jsx32(
|
|
4559
|
+
Comp,
|
|
4534
4560
|
{
|
|
4535
|
-
"data-slot": "
|
|
4561
|
+
"data-slot": "h6",
|
|
4536
4562
|
className: cn(
|
|
4537
|
-
"
|
|
4563
|
+
"text-xs leading-[16px] font-medium font-sans text-vibrant-text-heading",
|
|
4538
4564
|
className
|
|
4539
4565
|
),
|
|
4540
|
-
|
|
4541
|
-
...props,
|
|
4542
|
-
children: [
|
|
4543
|
-
/* @__PURE__ */ jsx36("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx36(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx36(CheckIcon3, { className: "size-4" }) }) }),
|
|
4544
|
-
children
|
|
4545
|
-
]
|
|
4566
|
+
...props
|
|
4546
4567
|
}
|
|
4547
4568
|
);
|
|
4548
4569
|
}
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
|
|
4555
|
-
|
|
4570
|
+
|
|
4571
|
+
// src/components/ui/faq-accordion.tsx
|
|
4572
|
+
import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
4573
|
+
function FaqAccordion({
|
|
4574
|
+
faqs,
|
|
4575
|
+
className,
|
|
4576
|
+
staggerReveal = false,
|
|
4577
|
+
defaultOpenQuestion,
|
|
4578
|
+
questionClassName,
|
|
4579
|
+
answerClassName,
|
|
4580
|
+
itemClassName
|
|
4581
|
+
}) {
|
|
4582
|
+
const values = React32.useMemo(() => {
|
|
4583
|
+
const seen = /* @__PURE__ */ new Set();
|
|
4584
|
+
return faqs.map((faq, i) => {
|
|
4585
|
+
const value2 = seen.has(faq.question) ? `${faq.question}__${i}` : faq.question;
|
|
4586
|
+
seen.add(faq.question);
|
|
4587
|
+
return value2;
|
|
4588
|
+
});
|
|
4589
|
+
}, [faqs]);
|
|
4590
|
+
const valueFor = (question) => {
|
|
4591
|
+
if (!question) return "";
|
|
4592
|
+
const i = faqs.findIndex((faq) => faq.question === question);
|
|
4593
|
+
return i >= 0 ? values[i] : "";
|
|
4594
|
+
};
|
|
4595
|
+
const [value, setValue] = React32.useState(() => valueFor(defaultOpenQuestion));
|
|
4596
|
+
const [seenDefault, setSeenDefault] = React32.useState(defaultOpenQuestion);
|
|
4597
|
+
if (defaultOpenQuestion !== seenDefault) {
|
|
4598
|
+
setSeenDefault(defaultOpenQuestion);
|
|
4599
|
+
setValue(valueFor(defaultOpenQuestion));
|
|
4600
|
+
}
|
|
4601
|
+
return /* @__PURE__ */ jsx33(
|
|
4602
|
+
Accordion,
|
|
4556
4603
|
{
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
|
|
4560
|
-
|
|
4561
|
-
|
|
4562
|
-
|
|
4563
|
-
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
|
|
4604
|
+
type: "single",
|
|
4605
|
+
collapsible: true,
|
|
4606
|
+
variant: "outlined",
|
|
4607
|
+
staggerReveal,
|
|
4608
|
+
value,
|
|
4609
|
+
onValueChange: setValue,
|
|
4610
|
+
className,
|
|
4611
|
+
children: faqs.map((faq, i) => /* @__PURE__ */ jsxs19(
|
|
4612
|
+
AccordionItem,
|
|
4613
|
+
{
|
|
4614
|
+
value: values[i],
|
|
4615
|
+
revealIndex: i,
|
|
4616
|
+
className: cn("rounded-lg", itemClassName),
|
|
4617
|
+
children: [
|
|
4618
|
+
/* @__PURE__ */ jsx33(AccordionTrigger, { icon: "plus-minus", children: /* @__PURE__ */ jsx33("span", { className: cn("text-vibrant-text-heading", questionClassName), children: faq.question }) }),
|
|
4619
|
+
/* @__PURE__ */ jsx33(
|
|
4620
|
+
AccordionContent,
|
|
4621
|
+
{
|
|
4622
|
+
className: cn(
|
|
4623
|
+
bodyTextVariants({ size: "md" }),
|
|
4624
|
+
"font-normal [&_a]:text-primary-stroke-default [&_a]:underline",
|
|
4625
|
+
answerClassName
|
|
4626
|
+
),
|
|
4627
|
+
children: typeof faq.answer === "string" ? /* @__PURE__ */ jsx33("p", { children: faq.answer }) : faq.answer
|
|
4628
|
+
}
|
|
4629
|
+
)
|
|
4630
|
+
]
|
|
4631
|
+
},
|
|
4632
|
+
values[i]
|
|
4633
|
+
))
|
|
4567
4634
|
}
|
|
4568
4635
|
);
|
|
4569
4636
|
}
|
|
4570
|
-
|
|
4637
|
+
|
|
4638
|
+
// src/components/ui/form.tsx
|
|
4639
|
+
import * as React34 from "react";
|
|
4640
|
+
import "@radix-ui/react-label";
|
|
4641
|
+
import { Slot as Slot6 } from "@radix-ui/react-slot";
|
|
4642
|
+
import {
|
|
4643
|
+
Controller,
|
|
4644
|
+
FormProvider,
|
|
4645
|
+
useFormContext,
|
|
4646
|
+
useFormState
|
|
4647
|
+
} from "react-hook-form";
|
|
4648
|
+
|
|
4649
|
+
// src/components/ui/label.tsx
|
|
4650
|
+
import { Slot as Slot5 } from "@radix-ui/react-slot";
|
|
4651
|
+
import { cva as cva10 } from "class-variance-authority";
|
|
4652
|
+
import "react";
|
|
4653
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
4654
|
+
var labelTextVariants = cva10("font-sans font-semibold text-vibrant-text-body", {
|
|
4655
|
+
variants: {
|
|
4656
|
+
size: {
|
|
4657
|
+
lg: "text-base md:text-lg md:leading-[1.625rem] leading-[1.5rem]",
|
|
4658
|
+
md: "md:text-base text-sm md:leading-[1.5rem] leading-[1.25rem] ",
|
|
4659
|
+
sm: "md:text-sm text-xs md:leading-[1.25rem] leading-[1.125rem] ",
|
|
4660
|
+
xs: "text-xs leading-[1.125rem]"
|
|
4661
|
+
}
|
|
4662
|
+
},
|
|
4663
|
+
defaultVariants: {
|
|
4664
|
+
size: "md"
|
|
4665
|
+
}
|
|
4666
|
+
});
|
|
4667
|
+
function Label3({
|
|
4571
4668
|
className,
|
|
4572
|
-
|
|
4669
|
+
size,
|
|
4670
|
+
asChild = false,
|
|
4573
4671
|
...props
|
|
4574
4672
|
}) {
|
|
4575
|
-
|
|
4576
|
-
|
|
4673
|
+
const Comp = asChild ? Slot5 : "label";
|
|
4674
|
+
return /* @__PURE__ */ jsx34(
|
|
4675
|
+
Comp,
|
|
4577
4676
|
{
|
|
4578
|
-
"data-slot": "
|
|
4579
|
-
|
|
4580
|
-
className: cn(
|
|
4581
|
-
"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
|
|
4582
|
-
className
|
|
4583
|
-
),
|
|
4677
|
+
"data-slot": "label",
|
|
4678
|
+
className: cn(labelTextVariants({ size, className })),
|
|
4584
4679
|
...props
|
|
4585
4680
|
}
|
|
4586
4681
|
);
|
|
4587
4682
|
}
|
|
4588
|
-
|
|
4589
|
-
|
|
4683
|
+
|
|
4684
|
+
// src/components/ui/form.tsx
|
|
4685
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
4686
|
+
var Form = FormProvider;
|
|
4687
|
+
var FormFieldContext = React34.createContext(
|
|
4688
|
+
{}
|
|
4689
|
+
);
|
|
4690
|
+
var FormField = ({
|
|
4691
|
+
...props
|
|
4692
|
+
}) => {
|
|
4693
|
+
return /* @__PURE__ */ jsx35(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx35(Controller, { ...props }) });
|
|
4694
|
+
};
|
|
4695
|
+
var useFormField = () => {
|
|
4696
|
+
const fieldContext = React34.useContext(FormFieldContext);
|
|
4697
|
+
const itemContext = React34.useContext(FormItemContext);
|
|
4698
|
+
const { getFieldState } = useFormContext();
|
|
4699
|
+
const formState = useFormState({ name: fieldContext.name });
|
|
4700
|
+
const fieldState = getFieldState(fieldContext.name, formState);
|
|
4701
|
+
if (!fieldContext) {
|
|
4702
|
+
throw new Error("useFormField should be used within <FormField>");
|
|
4703
|
+
}
|
|
4704
|
+
const { id } = itemContext;
|
|
4705
|
+
return {
|
|
4706
|
+
id,
|
|
4707
|
+
name: fieldContext.name,
|
|
4708
|
+
formItemId: `${id}-form-item`,
|
|
4709
|
+
formDescriptionId: `${id}-form-item-description`,
|
|
4710
|
+
formMessageId: `${id}-form-item-message`,
|
|
4711
|
+
...fieldState
|
|
4712
|
+
};
|
|
4713
|
+
};
|
|
4714
|
+
var FormItemContext = React34.createContext(
|
|
4715
|
+
{}
|
|
4716
|
+
);
|
|
4717
|
+
function FormItem({ className, ...props }) {
|
|
4718
|
+
const id = React34.useId();
|
|
4719
|
+
return /* @__PURE__ */ jsx35(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx35(
|
|
4720
|
+
"div",
|
|
4721
|
+
{
|
|
4722
|
+
"data-slot": "form-item",
|
|
4723
|
+
className: cn("grid gap-2", className),
|
|
4724
|
+
...props
|
|
4725
|
+
}
|
|
4726
|
+
) });
|
|
4727
|
+
}
|
|
4728
|
+
function FormLabel({
|
|
4729
|
+
className,
|
|
4590
4730
|
...props
|
|
4591
4731
|
}) {
|
|
4592
|
-
|
|
4593
|
-
|
|
4732
|
+
const { error, formItemId } = useFormField();
|
|
4733
|
+
return /* @__PURE__ */ jsx35(
|
|
4734
|
+
Label3,
|
|
4594
4735
|
{
|
|
4595
|
-
"data-slot": "
|
|
4596
|
-
|
|
4736
|
+
"data-slot": "form-label",
|
|
4737
|
+
"data-error": !!error,
|
|
4738
|
+
className: cn("data-[error=true]:text-destructive", className),
|
|
4739
|
+
htmlFor: formItemId,
|
|
4597
4740
|
...props
|
|
4598
4741
|
}
|
|
4599
4742
|
);
|
|
4600
4743
|
}
|
|
4601
|
-
function
|
|
4744
|
+
function FormControl({ ...props }) {
|
|
4745
|
+
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
4746
|
+
return /* @__PURE__ */ jsx35(
|
|
4747
|
+
Slot6,
|
|
4748
|
+
{
|
|
4749
|
+
"data-slot": "form-control",
|
|
4750
|
+
id: formItemId,
|
|
4751
|
+
"aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
|
|
4752
|
+
"aria-invalid": !!error,
|
|
4753
|
+
...props
|
|
4754
|
+
}
|
|
4755
|
+
);
|
|
4756
|
+
}
|
|
4757
|
+
function FormDescription({ className, ...props }) {
|
|
4758
|
+
const { formDescriptionId } = useFormField();
|
|
4759
|
+
return /* @__PURE__ */ jsx35(
|
|
4760
|
+
"p",
|
|
4761
|
+
{
|
|
4762
|
+
"data-slot": "form-description",
|
|
4763
|
+
id: formDescriptionId,
|
|
4764
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
4765
|
+
...props
|
|
4766
|
+
}
|
|
4767
|
+
);
|
|
4768
|
+
}
|
|
4769
|
+
function FormMessage({ className, ...props }) {
|
|
4770
|
+
const { error, formMessageId } = useFormField();
|
|
4771
|
+
const body = error ? String(error?.message ?? "") : props.children;
|
|
4772
|
+
if (!body) {
|
|
4773
|
+
return null;
|
|
4774
|
+
}
|
|
4775
|
+
return /* @__PURE__ */ jsx35(
|
|
4776
|
+
"p",
|
|
4777
|
+
{
|
|
4778
|
+
"data-slot": "form-message",
|
|
4779
|
+
id: formMessageId,
|
|
4780
|
+
className: cn("text-destructive text-sm", className),
|
|
4781
|
+
...props,
|
|
4782
|
+
children: body
|
|
4783
|
+
}
|
|
4784
|
+
);
|
|
4785
|
+
}
|
|
4786
|
+
|
|
4787
|
+
// src/components/ui/hover-card.tsx
|
|
4788
|
+
import "react";
|
|
4789
|
+
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
4790
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
4791
|
+
function HoverCard({
|
|
4792
|
+
...props
|
|
4793
|
+
}) {
|
|
4794
|
+
return /* @__PURE__ */ jsx36(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
|
|
4795
|
+
}
|
|
4796
|
+
function HoverCardTrigger({
|
|
4797
|
+
...props
|
|
4798
|
+
}) {
|
|
4799
|
+
return /* @__PURE__ */ jsx36(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
|
|
4800
|
+
}
|
|
4801
|
+
function HoverCardContent({
|
|
4602
4802
|
className,
|
|
4803
|
+
align = "center",
|
|
4804
|
+
sideOffset = 4,
|
|
4603
4805
|
...props
|
|
4604
4806
|
}) {
|
|
4605
|
-
return /* @__PURE__ */ jsx36(
|
|
4606
|
-
|
|
4807
|
+
return /* @__PURE__ */ jsx36(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx36(
|
|
4808
|
+
HoverCardPrimitive.Content,
|
|
4607
4809
|
{
|
|
4608
|
-
"data-slot": "
|
|
4810
|
+
"data-slot": "hover-card-content",
|
|
4811
|
+
align,
|
|
4812
|
+
sideOffset,
|
|
4609
4813
|
className: cn(
|
|
4610
|
-
"text-
|
|
4814
|
+
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
|
|
4611
4815
|
className
|
|
4612
4816
|
),
|
|
4613
4817
|
...props
|
|
4614
4818
|
}
|
|
4615
|
-
);
|
|
4819
|
+
) });
|
|
4616
4820
|
}
|
|
4617
|
-
|
|
4821
|
+
|
|
4822
|
+
// src/components/ui/input-otp.tsx
|
|
4823
|
+
import * as React36 from "react";
|
|
4824
|
+
import { OTPInput, OTPInputContext } from "input-otp";
|
|
4825
|
+
import { MinusIcon } from "lucide-react";
|
|
4826
|
+
import { jsx as jsx37, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
4827
|
+
var InputOTPErrorContext = React36.createContext(false);
|
|
4828
|
+
function InputOTP({
|
|
4829
|
+
className,
|
|
4830
|
+
containerClassName,
|
|
4831
|
+
error,
|
|
4618
4832
|
...props
|
|
4619
4833
|
}) {
|
|
4620
|
-
return /* @__PURE__ */
|
|
4834
|
+
return /* @__PURE__ */ jsx37(InputOTPErrorContext.Provider, { value: error ?? false, children: /* @__PURE__ */ jsx37(
|
|
4835
|
+
OTPInput,
|
|
4836
|
+
{
|
|
4837
|
+
"data-slot": "input-otp",
|
|
4838
|
+
containerClassName: cn(
|
|
4839
|
+
"flex items-center gap-2 has-disabled:opacity-40",
|
|
4840
|
+
containerClassName
|
|
4841
|
+
),
|
|
4842
|
+
className: cn("disabled:cursor-not-allowed", className),
|
|
4843
|
+
...props
|
|
4844
|
+
}
|
|
4845
|
+
) });
|
|
4621
4846
|
}
|
|
4622
|
-
function
|
|
4847
|
+
function InputOTPGroup({ className, ...props }) {
|
|
4848
|
+
return /* @__PURE__ */ jsx37(
|
|
4849
|
+
"div",
|
|
4850
|
+
{
|
|
4851
|
+
"data-slot": "input-otp-group",
|
|
4852
|
+
className: cn("flex items-center", className),
|
|
4853
|
+
...props
|
|
4854
|
+
}
|
|
4855
|
+
);
|
|
4856
|
+
}
|
|
4857
|
+
function InputOTPSlot({
|
|
4858
|
+
index,
|
|
4623
4859
|
className,
|
|
4624
|
-
inset,
|
|
4625
|
-
children,
|
|
4626
4860
|
...props
|
|
4627
4861
|
}) {
|
|
4862
|
+
const inputOTPContext = React36.useContext(OTPInputContext);
|
|
4863
|
+
const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
|
|
4864
|
+
const isHovering = inputOTPContext?.isHovering ?? false;
|
|
4865
|
+
const error = React36.useContext(InputOTPErrorContext);
|
|
4628
4866
|
return /* @__PURE__ */ jsxs20(
|
|
4629
|
-
|
|
4867
|
+
"div",
|
|
4630
4868
|
{
|
|
4631
|
-
"data-slot": "
|
|
4632
|
-
"data-
|
|
4869
|
+
"data-slot": "input-otp-slot",
|
|
4870
|
+
"data-active": isActive,
|
|
4633
4871
|
className: cn(
|
|
4634
|
-
|
|
4872
|
+
// Base layout & typography
|
|
4873
|
+
"relative flex size-10 items-center justify-center",
|
|
4874
|
+
"border-y border-r first:border-l text-sm font-medium leading-5",
|
|
4875
|
+
"transition-all outline-none",
|
|
4876
|
+
"first:rounded-l-[4px] last:rounded-r-[4px]",
|
|
4877
|
+
"text-foreground",
|
|
4878
|
+
// Default state (no error)
|
|
4879
|
+
!error && "border-gray-stroke-default bg-background",
|
|
4880
|
+
// Hover: all slots turn blue (non-error, non-active)
|
|
4881
|
+
!error && isHovering && !isActive && "border-focus-ring",
|
|
4882
|
+
// Active slot (non-error): 2px blue border
|
|
4883
|
+
!error && isActive && "z-10 border-2 border-focus-ring",
|
|
4884
|
+
// Error (non-active)
|
|
4885
|
+
error && !isActive && "border-error-stroke-default bg-error-surface-subtle",
|
|
4886
|
+
// Error + active
|
|
4887
|
+
error && isActive && "z-10 border-2 border-error-stroke-default bg-error-surface-subtle",
|
|
4635
4888
|
className
|
|
4636
4889
|
),
|
|
4637
4890
|
...props,
|
|
4638
4891
|
children: [
|
|
4639
|
-
|
|
4640
|
-
/* @__PURE__ */
|
|
4892
|
+
char,
|
|
4893
|
+
hasFakeCaret && /* @__PURE__ */ jsx37("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx37("div", { className: "animate-caret-blink bg-focus-ring h-4 w-px duration-1000" }) })
|
|
4641
4894
|
]
|
|
4642
4895
|
}
|
|
4643
4896
|
);
|
|
4644
4897
|
}
|
|
4645
|
-
function
|
|
4898
|
+
function InputOTPSeparator({ ...props }) {
|
|
4899
|
+
return /* @__PURE__ */ jsx37("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ jsx37(MinusIcon, {}) });
|
|
4900
|
+
}
|
|
4901
|
+
|
|
4902
|
+
// src/components/ui/menubar.tsx
|
|
4903
|
+
import "react";
|
|
4904
|
+
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
4905
|
+
import { CheckIcon as CheckIcon3, ChevronRightIcon as ChevronRightIcon4, CircleIcon as CircleIcon3 } from "lucide-react";
|
|
4906
|
+
import { jsx as jsx38, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
4907
|
+
function Menubar({
|
|
4646
4908
|
className,
|
|
4647
4909
|
...props
|
|
4648
4910
|
}) {
|
|
4649
|
-
return /* @__PURE__ */
|
|
4650
|
-
MenubarPrimitive.
|
|
4911
|
+
return /* @__PURE__ */ jsx38(
|
|
4912
|
+
MenubarPrimitive.Root,
|
|
4651
4913
|
{
|
|
4652
|
-
"data-slot": "menubar
|
|
4914
|
+
"data-slot": "menubar",
|
|
4653
4915
|
className: cn(
|
|
4654
|
-
"bg-
|
|
4916
|
+
"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs",
|
|
4655
4917
|
className
|
|
4656
4918
|
),
|
|
4657
4919
|
...props
|
|
4658
4920
|
}
|
|
4659
4921
|
);
|
|
4660
4922
|
}
|
|
4661
|
-
|
|
4662
|
-
|
|
4663
|
-
|
|
4664
|
-
|
|
4665
|
-
|
|
4666
|
-
|
|
4667
|
-
|
|
4668
|
-
|
|
4669
|
-
|
|
4923
|
+
function MenubarMenu({
|
|
4924
|
+
...props
|
|
4925
|
+
}) {
|
|
4926
|
+
return /* @__PURE__ */ jsx38(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
|
|
4927
|
+
}
|
|
4928
|
+
function MenubarGroup({
|
|
4929
|
+
...props
|
|
4930
|
+
}) {
|
|
4931
|
+
return /* @__PURE__ */ jsx38(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
|
|
4932
|
+
}
|
|
4933
|
+
function MenubarPortal({
|
|
4934
|
+
...props
|
|
4935
|
+
}) {
|
|
4936
|
+
return /* @__PURE__ */ jsx38(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
|
|
4937
|
+
}
|
|
4938
|
+
function MenubarRadioGroup({
|
|
4939
|
+
...props
|
|
4940
|
+
}) {
|
|
4941
|
+
return /* @__PURE__ */ jsx38(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
|
|
4942
|
+
}
|
|
4943
|
+
function MenubarTrigger({
|
|
4944
|
+
className,
|
|
4945
|
+
...props
|
|
4946
|
+
}) {
|
|
4947
|
+
return /* @__PURE__ */ jsx38(
|
|
4948
|
+
MenubarPrimitive.Trigger,
|
|
4670
4949
|
{
|
|
4671
|
-
"data-slot": "
|
|
4672
|
-
className:
|
|
4673
|
-
|
|
4674
|
-
|
|
4675
|
-
|
|
4676
|
-
|
|
4677
|
-
{
|
|
4678
|
-
type: "button",
|
|
4679
|
-
onClick: (e) => {
|
|
4680
|
-
e.stopPropagation();
|
|
4681
|
-
onRemove();
|
|
4682
|
-
},
|
|
4683
|
-
className: "flex items-center justify-center size-[20px] text-primary-stroke-default hover:text-primary-surface-default transition-colors cursor-pointer",
|
|
4684
|
-
"aria-label": `Remove ${label}`,
|
|
4685
|
-
children: /* @__PURE__ */ jsx37(X3, { className: "size-[16px]" })
|
|
4686
|
-
}
|
|
4687
|
-
)
|
|
4688
|
-
]
|
|
4950
|
+
"data-slot": "menubar-trigger",
|
|
4951
|
+
className: cn(
|
|
4952
|
+
"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none",
|
|
4953
|
+
className
|
|
4954
|
+
),
|
|
4955
|
+
...props
|
|
4689
4956
|
}
|
|
4690
4957
|
);
|
|
4691
4958
|
}
|
|
4692
|
-
function
|
|
4693
|
-
|
|
4694
|
-
|
|
4695
|
-
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
|
|
4959
|
+
function MenubarContent({
|
|
4960
|
+
className,
|
|
4961
|
+
align = "start",
|
|
4962
|
+
alignOffset = -4,
|
|
4963
|
+
sideOffset = 8,
|
|
4964
|
+
...props
|
|
4965
|
+
}) {
|
|
4966
|
+
return /* @__PURE__ */ jsx38(MenubarPortal, { children: /* @__PURE__ */ jsx38(
|
|
4967
|
+
MenubarPrimitive.Content,
|
|
4968
|
+
{
|
|
4969
|
+
"data-slot": "menubar-content",
|
|
4970
|
+
align,
|
|
4971
|
+
alignOffset,
|
|
4972
|
+
sideOffset,
|
|
4973
|
+
className: cn(
|
|
4974
|
+
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md",
|
|
4975
|
+
className
|
|
4976
|
+
),
|
|
4977
|
+
...props
|
|
4978
|
+
}
|
|
4979
|
+
) });
|
|
4980
|
+
}
|
|
4981
|
+
function MenubarItem({
|
|
4982
|
+
className,
|
|
4983
|
+
inset,
|
|
4984
|
+
variant = "default",
|
|
4985
|
+
...props
|
|
4986
|
+
}) {
|
|
4987
|
+
return /* @__PURE__ */ jsx38(
|
|
4988
|
+
MenubarPrimitive.Item,
|
|
4989
|
+
{
|
|
4990
|
+
"data-slot": "menubar-item",
|
|
4991
|
+
"data-inset": inset,
|
|
4992
|
+
"data-variant": variant,
|
|
4993
|
+
className: cn(
|
|
4994
|
+
"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
4995
|
+
className
|
|
4996
|
+
),
|
|
4997
|
+
...props
|
|
4998
|
+
}
|
|
4999
|
+
);
|
|
5000
|
+
}
|
|
5001
|
+
function MenubarCheckboxItem({
|
|
5002
|
+
className,
|
|
5003
|
+
children,
|
|
5004
|
+
checked,
|
|
5005
|
+
...props
|
|
5006
|
+
}) {
|
|
5007
|
+
return /* @__PURE__ */ jsxs21(
|
|
5008
|
+
MenubarPrimitive.CheckboxItem,
|
|
5009
|
+
{
|
|
5010
|
+
"data-slot": "menubar-checkbox-item",
|
|
5011
|
+
className: cn(
|
|
5012
|
+
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
5013
|
+
className
|
|
5014
|
+
),
|
|
5015
|
+
checked,
|
|
5016
|
+
...props,
|
|
5017
|
+
children: [
|
|
5018
|
+
/* @__PURE__ */ jsx38("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx38(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx38(CheckIcon3, { className: "size-4" }) }) }),
|
|
5019
|
+
children
|
|
5020
|
+
]
|
|
5021
|
+
}
|
|
5022
|
+
);
|
|
5023
|
+
}
|
|
5024
|
+
function MenubarRadioItem({
|
|
5025
|
+
className,
|
|
5026
|
+
children,
|
|
5027
|
+
...props
|
|
5028
|
+
}) {
|
|
5029
|
+
return /* @__PURE__ */ jsxs21(
|
|
5030
|
+
MenubarPrimitive.RadioItem,
|
|
5031
|
+
{
|
|
5032
|
+
"data-slot": "menubar-radio-item",
|
|
5033
|
+
className: cn(
|
|
5034
|
+
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
5035
|
+
className
|
|
5036
|
+
),
|
|
5037
|
+
...props,
|
|
5038
|
+
children: [
|
|
5039
|
+
/* @__PURE__ */ jsx38("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx38(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx38(CircleIcon3, { className: "size-2 fill-current" }) }) }),
|
|
5040
|
+
children
|
|
5041
|
+
]
|
|
5042
|
+
}
|
|
5043
|
+
);
|
|
5044
|
+
}
|
|
5045
|
+
function MenubarLabel({
|
|
5046
|
+
className,
|
|
5047
|
+
inset,
|
|
5048
|
+
...props
|
|
5049
|
+
}) {
|
|
5050
|
+
return /* @__PURE__ */ jsx38(
|
|
5051
|
+
MenubarPrimitive.Label,
|
|
5052
|
+
{
|
|
5053
|
+
"data-slot": "menubar-label",
|
|
5054
|
+
"data-inset": inset,
|
|
5055
|
+
className: cn(
|
|
5056
|
+
"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
|
|
5057
|
+
className
|
|
5058
|
+
),
|
|
5059
|
+
...props
|
|
5060
|
+
}
|
|
5061
|
+
);
|
|
5062
|
+
}
|
|
5063
|
+
function MenubarSeparator({
|
|
5064
|
+
className,
|
|
5065
|
+
...props
|
|
5066
|
+
}) {
|
|
5067
|
+
return /* @__PURE__ */ jsx38(
|
|
5068
|
+
MenubarPrimitive.Separator,
|
|
5069
|
+
{
|
|
5070
|
+
"data-slot": "menubar-separator",
|
|
5071
|
+
className: cn("bg-border -mx-1 my-1 h-px", className),
|
|
5072
|
+
...props
|
|
5073
|
+
}
|
|
5074
|
+
);
|
|
5075
|
+
}
|
|
5076
|
+
function MenubarShortcut({
|
|
5077
|
+
className,
|
|
5078
|
+
...props
|
|
5079
|
+
}) {
|
|
5080
|
+
return /* @__PURE__ */ jsx38(
|
|
5081
|
+
"span",
|
|
5082
|
+
{
|
|
5083
|
+
"data-slot": "menubar-shortcut",
|
|
5084
|
+
className: cn(
|
|
5085
|
+
"text-muted-foreground ml-auto text-xs tracking-widest",
|
|
5086
|
+
className
|
|
5087
|
+
),
|
|
5088
|
+
...props
|
|
5089
|
+
}
|
|
5090
|
+
);
|
|
5091
|
+
}
|
|
5092
|
+
function MenubarSub({
|
|
5093
|
+
...props
|
|
5094
|
+
}) {
|
|
5095
|
+
return /* @__PURE__ */ jsx38(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
|
|
5096
|
+
}
|
|
5097
|
+
function MenubarSubTrigger({
|
|
5098
|
+
className,
|
|
5099
|
+
inset,
|
|
5100
|
+
children,
|
|
5101
|
+
...props
|
|
5102
|
+
}) {
|
|
5103
|
+
return /* @__PURE__ */ jsxs21(
|
|
5104
|
+
MenubarPrimitive.SubTrigger,
|
|
5105
|
+
{
|
|
5106
|
+
"data-slot": "menubar-sub-trigger",
|
|
5107
|
+
"data-inset": inset,
|
|
5108
|
+
className: cn(
|
|
5109
|
+
"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8",
|
|
5110
|
+
className
|
|
5111
|
+
),
|
|
5112
|
+
...props,
|
|
5113
|
+
children: [
|
|
5114
|
+
children,
|
|
5115
|
+
/* @__PURE__ */ jsx38(ChevronRightIcon4, { className: "ml-auto h-4 w-4" })
|
|
5116
|
+
]
|
|
5117
|
+
}
|
|
5118
|
+
);
|
|
5119
|
+
}
|
|
5120
|
+
function MenubarSubContent({
|
|
5121
|
+
className,
|
|
5122
|
+
...props
|
|
5123
|
+
}) {
|
|
5124
|
+
return /* @__PURE__ */ jsx38(
|
|
5125
|
+
MenubarPrimitive.SubContent,
|
|
5126
|
+
{
|
|
5127
|
+
"data-slot": "menubar-sub-content",
|
|
5128
|
+
className: cn(
|
|
5129
|
+
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
|
|
5130
|
+
className
|
|
5131
|
+
),
|
|
5132
|
+
...props
|
|
5133
|
+
}
|
|
5134
|
+
);
|
|
5135
|
+
}
|
|
5136
|
+
|
|
5137
|
+
// src/components/ui/multi-select-free-text.tsx
|
|
5138
|
+
import * as React38 from "react";
|
|
5139
|
+
import * as PopoverPrimitive4 from "@radix-ui/react-popover";
|
|
5140
|
+
import { ChevronDown as ChevronDown2, X as X3 } from "lucide-react";
|
|
5141
|
+
import { jsx as jsx39, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
5142
|
+
function Tag({ label, onRemove }) {
|
|
5143
|
+
return /* @__PURE__ */ jsxs22(
|
|
5144
|
+
"span",
|
|
5145
|
+
{
|
|
5146
|
+
"data-slot": "multi-select-tag",
|
|
5147
|
+
className: "inline-flex items-center gap-[8px] h-[32px] px-[12px] py-[8px] rounded-[8px] bg-primary-surface-subtle font-sans font-medium text-[14px] leading-[20px] text-primary-stroke-default shrink-0",
|
|
5148
|
+
children: [
|
|
5149
|
+
label,
|
|
5150
|
+
/* @__PURE__ */ jsx39(
|
|
5151
|
+
"button",
|
|
5152
|
+
{
|
|
5153
|
+
type: "button",
|
|
5154
|
+
onClick: (e) => {
|
|
5155
|
+
e.stopPropagation();
|
|
5156
|
+
onRemove();
|
|
5157
|
+
},
|
|
5158
|
+
className: "flex items-center justify-center size-[20px] text-primary-stroke-default hover:text-primary-surface-default transition-colors cursor-pointer",
|
|
5159
|
+
"aria-label": `Remove ${label}`,
|
|
5160
|
+
children: /* @__PURE__ */ jsx39(X3, { className: "size-[16px]" })
|
|
5161
|
+
}
|
|
5162
|
+
)
|
|
5163
|
+
]
|
|
5164
|
+
}
|
|
5165
|
+
);
|
|
5166
|
+
}
|
|
5167
|
+
function MultiSelectFreeText({
|
|
5168
|
+
values: valuesProp,
|
|
5169
|
+
defaultValues = [],
|
|
5170
|
+
onValuesChange,
|
|
5171
|
+
options = [],
|
|
5172
|
+
placeholder = "Placeholder text",
|
|
5173
|
+
icon,
|
|
5174
|
+
label,
|
|
5175
|
+
mandatory = false,
|
|
5176
|
+
disabled = false,
|
|
4702
5177
|
className
|
|
4703
5178
|
}) {
|
|
4704
|
-
const [internalValues, setInternalValues] =
|
|
4705
|
-
const [inputValue, setInputValue] =
|
|
4706
|
-
const [open, setOpen] =
|
|
4707
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
4708
|
-
const inputRef =
|
|
4709
|
-
const triggerRef =
|
|
5179
|
+
const [internalValues, setInternalValues] = React38.useState(defaultValues);
|
|
5180
|
+
const [inputValue, setInputValue] = React38.useState("");
|
|
5181
|
+
const [open, setOpen] = React38.useState(false);
|
|
5182
|
+
const [highlightedIndex, setHighlightedIndex] = React38.useState(-1);
|
|
5183
|
+
const inputRef = React38.useRef(null);
|
|
5184
|
+
const triggerRef = React38.useRef(null);
|
|
4710
5185
|
const isControlled = valuesProp !== void 0;
|
|
4711
5186
|
const values = isControlled ? valuesProp : internalValues;
|
|
4712
|
-
const updateValues =
|
|
5187
|
+
const updateValues = React38.useCallback(
|
|
4713
5188
|
(next) => {
|
|
4714
5189
|
if (!isControlled) setInternalValues(next);
|
|
4715
5190
|
onValuesChange?.(next);
|
|
4716
5191
|
},
|
|
4717
5192
|
[isControlled, onValuesChange]
|
|
4718
5193
|
);
|
|
4719
|
-
const addTag =
|
|
5194
|
+
const addTag = React38.useCallback(
|
|
4720
5195
|
(tag) => {
|
|
4721
5196
|
const trimmed = tag.trim();
|
|
4722
5197
|
if (!trimmed || values.includes(trimmed)) return;
|
|
@@ -4726,19 +5201,19 @@ function MultiSelectFreeText({
|
|
|
4726
5201
|
},
|
|
4727
5202
|
[values, updateValues]
|
|
4728
5203
|
);
|
|
4729
|
-
const removeTag =
|
|
5204
|
+
const removeTag = React38.useCallback(
|
|
4730
5205
|
(tag) => {
|
|
4731
5206
|
updateValues(values.filter((v) => v !== tag));
|
|
4732
5207
|
},
|
|
4733
5208
|
[values, updateValues]
|
|
4734
5209
|
);
|
|
4735
|
-
const filteredOptions =
|
|
5210
|
+
const filteredOptions = React38.useMemo(() => {
|
|
4736
5211
|
const lower = inputValue.toLowerCase();
|
|
4737
5212
|
return options.filter(
|
|
4738
5213
|
(opt) => !values.includes(opt.value) && (lower === "" || opt.label.toLowerCase().includes(lower))
|
|
4739
5214
|
);
|
|
4740
5215
|
}, [options, inputValue, values]);
|
|
4741
|
-
const handleKeyDown =
|
|
5216
|
+
const handleKeyDown = React38.useCallback(
|
|
4742
5217
|
(e) => {
|
|
4743
5218
|
if (e.key === "Enter") {
|
|
4744
5219
|
e.preventDefault();
|
|
@@ -4770,7 +5245,7 @@ function MultiSelectFreeText({
|
|
|
4770
5245
|
},
|
|
4771
5246
|
[highlightedIndex, filteredOptions, inputValue, values, addTag, removeTag, open]
|
|
4772
5247
|
);
|
|
4773
|
-
const handleInputChange =
|
|
5248
|
+
const handleInputChange = React38.useCallback(
|
|
4774
5249
|
(e) => {
|
|
4775
5250
|
setInputValue(e.target.value);
|
|
4776
5251
|
if (!open) setOpen(true);
|
|
@@ -4778,30 +5253,30 @@ function MultiSelectFreeText({
|
|
|
4778
5253
|
},
|
|
4779
5254
|
[open]
|
|
4780
5255
|
);
|
|
4781
|
-
const handleOptionClick =
|
|
5256
|
+
const handleOptionClick = React38.useCallback(
|
|
4782
5257
|
(optValue) => {
|
|
4783
5258
|
addTag(optValue);
|
|
4784
5259
|
inputRef.current?.focus();
|
|
4785
5260
|
},
|
|
4786
5261
|
[addTag]
|
|
4787
5262
|
);
|
|
4788
|
-
const handleTriggerClick =
|
|
5263
|
+
const handleTriggerClick = React38.useCallback(() => {
|
|
4789
5264
|
if (disabled) return;
|
|
4790
5265
|
inputRef.current?.focus();
|
|
4791
5266
|
if (!open) setOpen(true);
|
|
4792
5267
|
}, [disabled, open]);
|
|
4793
5268
|
const isFocused = open;
|
|
4794
|
-
return /* @__PURE__ */
|
|
5269
|
+
return /* @__PURE__ */ jsx39(PopoverPrimitive4.Root, { open, onOpenChange: disabled ? void 0 : setOpen, children: /* @__PURE__ */ jsxs22(
|
|
4795
5270
|
"div",
|
|
4796
5271
|
{
|
|
4797
5272
|
"data-slot": "multi-select-free-text",
|
|
4798
5273
|
className: cn("flex flex-col gap-[8px] items-start w-full", className),
|
|
4799
5274
|
children: [
|
|
4800
|
-
label && /* @__PURE__ */
|
|
5275
|
+
label && /* @__PURE__ */ jsxs22("div", { className: "flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details", children: [
|
|
4801
5276
|
label,
|
|
4802
|
-
mandatory && /* @__PURE__ */
|
|
5277
|
+
mandatory && /* @__PURE__ */ jsx39("span", { className: "text-error-surface-default ml-0.5 text-[14px] leading-[20px]", children: "*" })
|
|
4803
5278
|
] }),
|
|
4804
|
-
/* @__PURE__ */
|
|
5279
|
+
/* @__PURE__ */ jsx39(PopoverPrimitive4.Anchor, { asChild: true, children: /* @__PURE__ */ jsxs22(
|
|
4805
5280
|
"div",
|
|
4806
5281
|
{
|
|
4807
5282
|
ref: triggerRef,
|
|
@@ -4813,10 +5288,10 @@ function MultiSelectFreeText({
|
|
|
4813
5288
|
disabled && "opacity-60 cursor-not-allowed"
|
|
4814
5289
|
),
|
|
4815
5290
|
children: [
|
|
4816
|
-
icon && /* @__PURE__ */
|
|
4817
|
-
/* @__PURE__ */
|
|
4818
|
-
values.map((tag) => /* @__PURE__ */
|
|
4819
|
-
/* @__PURE__ */
|
|
5291
|
+
icon && /* @__PURE__ */ jsx39("span", { className: "flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px] text-muted-foreground", children: icon }),
|
|
5292
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex flex-wrap items-center gap-[8px] flex-1 min-w-0", children: [
|
|
5293
|
+
values.map((tag) => /* @__PURE__ */ jsx39(Tag, { label: tag, onRemove: () => removeTag(tag) }, tag)),
|
|
5294
|
+
/* @__PURE__ */ jsx39(
|
|
4820
5295
|
"input",
|
|
4821
5296
|
{
|
|
4822
5297
|
ref: inputRef,
|
|
@@ -4836,7 +5311,7 @@ function MultiSelectFreeText({
|
|
|
4836
5311
|
}
|
|
4837
5312
|
)
|
|
4838
5313
|
] }),
|
|
4839
|
-
/* @__PURE__ */
|
|
5314
|
+
/* @__PURE__ */ jsx39(
|
|
4840
5315
|
ChevronDown2,
|
|
4841
5316
|
{
|
|
4842
5317
|
className: cn(
|
|
@@ -4848,7 +5323,7 @@ function MultiSelectFreeText({
|
|
|
4848
5323
|
]
|
|
4849
5324
|
}
|
|
4850
5325
|
) }),
|
|
4851
|
-
/* @__PURE__ */
|
|
5326
|
+
/* @__PURE__ */ jsx39(PopoverPrimitive4.Portal, { children: /* @__PURE__ */ jsx39(
|
|
4852
5327
|
PopoverPrimitive4.Content,
|
|
4853
5328
|
{
|
|
4854
5329
|
"data-slot": "multi-select-free-text-content",
|
|
@@ -4862,10 +5337,10 @@ function MultiSelectFreeText({
|
|
|
4862
5337
|
"[&::-webkit-scrollbar]:w-[5px] [&::-webkit-scrollbar-track]:rounded-[3px] [&::-webkit-scrollbar-track]:bg-gray-surface-light [&::-webkit-scrollbar-thumb]:rounded-[3px] [&::-webkit-scrollbar-thumb]:bg-gray-surface-default",
|
|
4863
5338
|
"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 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2"
|
|
4864
5339
|
),
|
|
4865
|
-
children: /* @__PURE__ */
|
|
5340
|
+
children: /* @__PURE__ */ jsxs22("div", { role: "listbox", className: "flex flex-col", children: [
|
|
4866
5341
|
inputValue.trim() !== "" && !options.some(
|
|
4867
5342
|
(o) => o.label.toLowerCase() === inputValue.toLowerCase()
|
|
4868
|
-
) && /* @__PURE__ */
|
|
5343
|
+
) && /* @__PURE__ */ jsx39(
|
|
4869
5344
|
"div",
|
|
4870
5345
|
{
|
|
4871
5346
|
role: "option",
|
|
@@ -4882,7 +5357,7 @@ function MultiSelectFreeText({
|
|
|
4882
5357
|
children: inputValue.trim()
|
|
4883
5358
|
}
|
|
4884
5359
|
),
|
|
4885
|
-
filteredOptions.map((opt, idx) => /* @__PURE__ */
|
|
5360
|
+
filteredOptions.map((opt, idx) => /* @__PURE__ */ jsx39(
|
|
4886
5361
|
"div",
|
|
4887
5362
|
{
|
|
4888
5363
|
role: "option",
|
|
@@ -4900,7 +5375,7 @@ function MultiSelectFreeText({
|
|
|
4900
5375
|
},
|
|
4901
5376
|
opt.value
|
|
4902
5377
|
)),
|
|
4903
|
-
filteredOptions.length === 0 && inputValue.trim() === "" && /* @__PURE__ */
|
|
5378
|
+
filteredOptions.length === 0 && inputValue.trim() === "" && /* @__PURE__ */ jsx39("div", { className: "flex items-center h-[48px] px-[8px] font-sans font-medium text-[14px] leading-[20px] text-muted-foreground", children: "No options available" })
|
|
4904
5379
|
] })
|
|
4905
5380
|
}
|
|
4906
5381
|
) })
|
|
@@ -4912,16 +5387,16 @@ function MultiSelectFreeText({
|
|
|
4912
5387
|
// src/components/ui/navigation-menu.tsx
|
|
4913
5388
|
import "react";
|
|
4914
5389
|
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
|
|
4915
|
-
import { cva as
|
|
5390
|
+
import { cva as cva11 } from "class-variance-authority";
|
|
4916
5391
|
import { ChevronDownIcon as ChevronDownIcon3 } from "lucide-react";
|
|
4917
|
-
import { jsx as
|
|
5392
|
+
import { jsx as jsx40, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
4918
5393
|
function NavigationMenu({
|
|
4919
5394
|
className,
|
|
4920
5395
|
children,
|
|
4921
5396
|
viewport = true,
|
|
4922
5397
|
...props
|
|
4923
5398
|
}) {
|
|
4924
|
-
return /* @__PURE__ */
|
|
5399
|
+
return /* @__PURE__ */ jsxs23(
|
|
4925
5400
|
NavigationMenuPrimitive.Root,
|
|
4926
5401
|
{
|
|
4927
5402
|
"data-slot": "navigation-menu",
|
|
@@ -4933,7 +5408,7 @@ function NavigationMenu({
|
|
|
4933
5408
|
...props,
|
|
4934
5409
|
children: [
|
|
4935
5410
|
children,
|
|
4936
|
-
viewport && /* @__PURE__ */
|
|
5411
|
+
viewport && /* @__PURE__ */ jsx40(NavigationMenuViewport, {})
|
|
4937
5412
|
]
|
|
4938
5413
|
}
|
|
4939
5414
|
);
|
|
@@ -4942,7 +5417,7 @@ function NavigationMenuList({
|
|
|
4942
5417
|
className,
|
|
4943
5418
|
...props
|
|
4944
5419
|
}) {
|
|
4945
|
-
return /* @__PURE__ */
|
|
5420
|
+
return /* @__PURE__ */ jsx40(
|
|
4946
5421
|
NavigationMenuPrimitive.List,
|
|
4947
5422
|
{
|
|
4948
5423
|
"data-slot": "navigation-menu-list",
|
|
@@ -4958,7 +5433,7 @@ function NavigationMenuItem({
|
|
|
4958
5433
|
className,
|
|
4959
5434
|
...props
|
|
4960
5435
|
}) {
|
|
4961
|
-
return /* @__PURE__ */
|
|
5436
|
+
return /* @__PURE__ */ jsx40(
|
|
4962
5437
|
NavigationMenuPrimitive.Item,
|
|
4963
5438
|
{
|
|
4964
5439
|
"data-slot": "navigation-menu-item",
|
|
@@ -4967,7 +5442,7 @@ function NavigationMenuItem({
|
|
|
4967
5442
|
}
|
|
4968
5443
|
);
|
|
4969
5444
|
}
|
|
4970
|
-
var navigationMenuTriggerStyle =
|
|
5445
|
+
var navigationMenuTriggerStyle = cva11(
|
|
4971
5446
|
"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1"
|
|
4972
5447
|
);
|
|
4973
5448
|
function NavigationMenuTrigger({
|
|
@@ -4975,7 +5450,7 @@ function NavigationMenuTrigger({
|
|
|
4975
5450
|
children,
|
|
4976
5451
|
...props
|
|
4977
5452
|
}) {
|
|
4978
|
-
return /* @__PURE__ */
|
|
5453
|
+
return /* @__PURE__ */ jsxs23(
|
|
4979
5454
|
NavigationMenuPrimitive.Trigger,
|
|
4980
5455
|
{
|
|
4981
5456
|
"data-slot": "navigation-menu-trigger",
|
|
@@ -4984,7 +5459,7 @@ function NavigationMenuTrigger({
|
|
|
4984
5459
|
children: [
|
|
4985
5460
|
children,
|
|
4986
5461
|
" ",
|
|
4987
|
-
/* @__PURE__ */
|
|
5462
|
+
/* @__PURE__ */ jsx40(
|
|
4988
5463
|
ChevronDownIcon3,
|
|
4989
5464
|
{
|
|
4990
5465
|
className: "relative top-[1px] ml-1 size-3 transition duration-400 group-data-[state=open]:rotate-180",
|
|
@@ -4999,7 +5474,7 @@ function NavigationMenuContent({
|
|
|
4999
5474
|
className,
|
|
5000
5475
|
...props
|
|
5001
5476
|
}) {
|
|
5002
|
-
return /* @__PURE__ */
|
|
5477
|
+
return /* @__PURE__ */ jsx40(
|
|
5003
5478
|
NavigationMenuPrimitive.Content,
|
|
5004
5479
|
{
|
|
5005
5480
|
"data-slot": "navigation-menu-content",
|
|
@@ -5016,13 +5491,13 @@ function NavigationMenuViewport({
|
|
|
5016
5491
|
className,
|
|
5017
5492
|
...props
|
|
5018
5493
|
}) {
|
|
5019
|
-
return /* @__PURE__ */
|
|
5494
|
+
return /* @__PURE__ */ jsx40(
|
|
5020
5495
|
"div",
|
|
5021
5496
|
{
|
|
5022
5497
|
className: cn(
|
|
5023
5498
|
"absolute top-full left-0 isolate z-50 flex justify-center"
|
|
5024
5499
|
),
|
|
5025
|
-
children: /* @__PURE__ */
|
|
5500
|
+
children: /* @__PURE__ */ jsx40(
|
|
5026
5501
|
NavigationMenuPrimitive.Viewport,
|
|
5027
5502
|
{
|
|
5028
5503
|
"data-slot": "navigation-menu-viewport",
|
|
@@ -5040,7 +5515,7 @@ function NavigationMenuLink({
|
|
|
5040
5515
|
className,
|
|
5041
5516
|
...props
|
|
5042
5517
|
}) {
|
|
5043
|
-
return /* @__PURE__ */
|
|
5518
|
+
return /* @__PURE__ */ jsx40(
|
|
5044
5519
|
NavigationMenuPrimitive.Link,
|
|
5045
5520
|
{
|
|
5046
5521
|
"data-slot": "navigation-menu-link",
|
|
@@ -5056,7 +5531,7 @@ function NavigationMenuIndicator({
|
|
|
5056
5531
|
className,
|
|
5057
5532
|
...props
|
|
5058
5533
|
}) {
|
|
5059
|
-
return /* @__PURE__ */
|
|
5534
|
+
return /* @__PURE__ */ jsx40(
|
|
5060
5535
|
NavigationMenuPrimitive.Indicator,
|
|
5061
5536
|
{
|
|
5062
5537
|
"data-slot": "navigation-menu-indicator",
|
|
@@ -5065,17 +5540,17 @@ function NavigationMenuIndicator({
|
|
|
5065
5540
|
className
|
|
5066
5541
|
),
|
|
5067
5542
|
...props,
|
|
5068
|
-
children: /* @__PURE__ */
|
|
5543
|
+
children: /* @__PURE__ */ jsx40("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
|
|
5069
5544
|
}
|
|
5070
5545
|
);
|
|
5071
5546
|
}
|
|
5072
5547
|
|
|
5073
5548
|
// src/components/ui/option-card.tsx
|
|
5074
|
-
import { cva as
|
|
5549
|
+
import { cva as cva12 } from "class-variance-authority";
|
|
5075
5550
|
import { Check as Check2, Circle } from "lucide-react";
|
|
5076
5551
|
import "react";
|
|
5077
|
-
import { jsx as
|
|
5078
|
-
var optionCardVariants =
|
|
5552
|
+
import { jsx as jsx41, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
5553
|
+
var optionCardVariants = cva12(
|
|
5079
5554
|
"group flex items-center gap-2 h-12 p-2 cursor-pointer transition-all duration-200 font-medium text-base leading-6 outline-none select-none",
|
|
5080
5555
|
{
|
|
5081
5556
|
variants: {
|
|
@@ -5155,26 +5630,26 @@ var optionCardVariants = cva11(
|
|
|
5155
5630
|
}
|
|
5156
5631
|
);
|
|
5157
5632
|
function RadioIndicator({ selected }) {
|
|
5158
|
-
return /* @__PURE__ */
|
|
5633
|
+
return /* @__PURE__ */ jsx41(
|
|
5159
5634
|
"span",
|
|
5160
5635
|
{
|
|
5161
5636
|
className: cn(
|
|
5162
5637
|
"flex items-center justify-center shrink-0 size-5 rounded-full border-2 transition-colors duration-200",
|
|
5163
5638
|
selected ? "bg-primary-stroke-default border-primary-stroke-default" : "border-gray-stroke-default bg-transparent group-hover:border-primary-stroke-default"
|
|
5164
5639
|
),
|
|
5165
|
-
children: selected && /* @__PURE__ */
|
|
5640
|
+
children: selected && /* @__PURE__ */ jsx41(Circle, { className: "size-2 fill-white text-white" })
|
|
5166
5641
|
}
|
|
5167
5642
|
);
|
|
5168
5643
|
}
|
|
5169
5644
|
function CheckboxIndicator({ selected }) {
|
|
5170
|
-
return /* @__PURE__ */
|
|
5645
|
+
return /* @__PURE__ */ jsx41(
|
|
5171
5646
|
"span",
|
|
5172
5647
|
{
|
|
5173
5648
|
className: cn(
|
|
5174
5649
|
"flex items-center justify-center shrink-0 size-5 rounded-[4px] border-2 transition-colors duration-200",
|
|
5175
5650
|
selected ? "bg-primary-stroke-default border-primary-stroke-default" : "border-gray-stroke-default bg-transparent group-hover:border-primary-stroke-default"
|
|
5176
5651
|
),
|
|
5177
|
-
children: selected && /* @__PURE__ */
|
|
5652
|
+
children: selected && /* @__PURE__ */ jsx41(Check2, { className: "size-4 text-white" })
|
|
5178
5653
|
}
|
|
5179
5654
|
);
|
|
5180
5655
|
}
|
|
@@ -5191,8 +5666,8 @@ function OptionCard({
|
|
|
5191
5666
|
...props
|
|
5192
5667
|
}) {
|
|
5193
5668
|
const Indicator5 = selectionType === "single" ? RadioIndicator : CheckboxIndicator;
|
|
5194
|
-
const indicator = /* @__PURE__ */
|
|
5195
|
-
return /* @__PURE__ */
|
|
5669
|
+
const indicator = /* @__PURE__ */ jsx41(Indicator5, { selected });
|
|
5670
|
+
return /* @__PURE__ */ jsxs24(
|
|
5196
5671
|
"button",
|
|
5197
5672
|
{
|
|
5198
5673
|
type: "button",
|
|
@@ -5211,9 +5686,9 @@ function OptionCard({
|
|
|
5211
5686
|
...props,
|
|
5212
5687
|
children: [
|
|
5213
5688
|
selectorPosition === "left" && indicator,
|
|
5214
|
-
/* @__PURE__ */
|
|
5215
|
-
icon && /* @__PURE__ */
|
|
5216
|
-
/* @__PURE__ */
|
|
5689
|
+
/* @__PURE__ */ jsxs24("span", { className: "flex items-center gap-2 flex-1 min-w-0", children: [
|
|
5690
|
+
icon && /* @__PURE__ */ jsx41("span", { className: "flex items-center justify-center shrink-0 size-5 [&_svg]:size-5", children: icon }),
|
|
5691
|
+
/* @__PURE__ */ jsx41("span", { className: "truncate", children })
|
|
5217
5692
|
] }),
|
|
5218
5693
|
selectorPosition === "right" && indicator
|
|
5219
5694
|
]
|
|
@@ -5228,9 +5703,9 @@ import {
|
|
|
5228
5703
|
ChevronRightIcon as ChevronRightIcon5,
|
|
5229
5704
|
MoreHorizontalIcon
|
|
5230
5705
|
} from "lucide-react";
|
|
5231
|
-
import { jsx as
|
|
5706
|
+
import { jsx as jsx42, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
5232
5707
|
function Pagination({ className, ...props }) {
|
|
5233
|
-
return /* @__PURE__ */
|
|
5708
|
+
return /* @__PURE__ */ jsx42(
|
|
5234
5709
|
"nav",
|
|
5235
5710
|
{
|
|
5236
5711
|
role: "navigation",
|
|
@@ -5245,7 +5720,7 @@ function PaginationContent({
|
|
|
5245
5720
|
className,
|
|
5246
5721
|
...props
|
|
5247
5722
|
}) {
|
|
5248
|
-
return /* @__PURE__ */
|
|
5723
|
+
return /* @__PURE__ */ jsx42(
|
|
5249
5724
|
"ul",
|
|
5250
5725
|
{
|
|
5251
5726
|
"data-slot": "pagination-content",
|
|
@@ -5255,7 +5730,7 @@ function PaginationContent({
|
|
|
5255
5730
|
);
|
|
5256
5731
|
}
|
|
5257
5732
|
function PaginationItem({ ...props }) {
|
|
5258
|
-
return /* @__PURE__ */
|
|
5733
|
+
return /* @__PURE__ */ jsx42("li", { "data-slot": "pagination-item", ...props });
|
|
5259
5734
|
}
|
|
5260
5735
|
function PaginationLink({
|
|
5261
5736
|
className,
|
|
@@ -5263,7 +5738,7 @@ function PaginationLink({
|
|
|
5263
5738
|
size = "icon",
|
|
5264
5739
|
...props
|
|
5265
5740
|
}) {
|
|
5266
|
-
return /* @__PURE__ */
|
|
5741
|
+
return /* @__PURE__ */ jsx42(
|
|
5267
5742
|
"a",
|
|
5268
5743
|
{
|
|
5269
5744
|
"aria-current": isActive ? "page" : void 0,
|
|
@@ -5284,7 +5759,7 @@ function PaginationPrevious({
|
|
|
5284
5759
|
className,
|
|
5285
5760
|
...props
|
|
5286
5761
|
}) {
|
|
5287
|
-
return /* @__PURE__ */
|
|
5762
|
+
return /* @__PURE__ */ jsxs25(
|
|
5288
5763
|
PaginationLink,
|
|
5289
5764
|
{
|
|
5290
5765
|
"aria-label": "Go to previous page",
|
|
@@ -5292,8 +5767,8 @@ function PaginationPrevious({
|
|
|
5292
5767
|
className: cn("gap-1 px-2.5 sm:pl-2.5", className),
|
|
5293
5768
|
...props,
|
|
5294
5769
|
children: [
|
|
5295
|
-
/* @__PURE__ */
|
|
5296
|
-
/* @__PURE__ */
|
|
5770
|
+
/* @__PURE__ */ jsx42(ChevronLeftIcon2, {}),
|
|
5771
|
+
/* @__PURE__ */ jsx42("span", { className: "hidden sm:block", children: "Previous" })
|
|
5297
5772
|
]
|
|
5298
5773
|
}
|
|
5299
5774
|
);
|
|
@@ -5302,7 +5777,7 @@ function PaginationNext({
|
|
|
5302
5777
|
className,
|
|
5303
5778
|
...props
|
|
5304
5779
|
}) {
|
|
5305
|
-
return /* @__PURE__ */
|
|
5780
|
+
return /* @__PURE__ */ jsxs25(
|
|
5306
5781
|
PaginationLink,
|
|
5307
5782
|
{
|
|
5308
5783
|
"aria-label": "Go to next page",
|
|
@@ -5310,8 +5785,8 @@ function PaginationNext({
|
|
|
5310
5785
|
className: cn("gap-1 px-2.5 sm:pr-2.5", className),
|
|
5311
5786
|
...props,
|
|
5312
5787
|
children: [
|
|
5313
|
-
/* @__PURE__ */
|
|
5314
|
-
/* @__PURE__ */
|
|
5788
|
+
/* @__PURE__ */ jsx42("span", { className: "hidden sm:block", children: "Next" }),
|
|
5789
|
+
/* @__PURE__ */ jsx42(ChevronRightIcon5, {})
|
|
5315
5790
|
]
|
|
5316
5791
|
}
|
|
5317
5792
|
);
|
|
@@ -5320,7 +5795,7 @@ function PaginationEllipsis({
|
|
|
5320
5795
|
className,
|
|
5321
5796
|
...props
|
|
5322
5797
|
}) {
|
|
5323
|
-
return /* @__PURE__ */
|
|
5798
|
+
return /* @__PURE__ */ jsxs25(
|
|
5324
5799
|
"span",
|
|
5325
5800
|
{
|
|
5326
5801
|
"aria-hidden": true,
|
|
@@ -5328,8 +5803,8 @@ function PaginationEllipsis({
|
|
|
5328
5803
|
className: cn("flex size-9 items-center justify-center", className),
|
|
5329
5804
|
...props,
|
|
5330
5805
|
children: [
|
|
5331
|
-
/* @__PURE__ */
|
|
5332
|
-
/* @__PURE__ */
|
|
5806
|
+
/* @__PURE__ */ jsx42(MoreHorizontalIcon, { className: "size-4" }),
|
|
5807
|
+
/* @__PURE__ */ jsx42("span", { className: "sr-only", children: "More pages" })
|
|
5333
5808
|
]
|
|
5334
5809
|
}
|
|
5335
5810
|
);
|
|
@@ -5338,13 +5813,13 @@ function PaginationEllipsis({
|
|
|
5338
5813
|
// src/components/ui/progress.tsx
|
|
5339
5814
|
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
5340
5815
|
import "react";
|
|
5341
|
-
import { jsx as
|
|
5816
|
+
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
5342
5817
|
function Progress({
|
|
5343
5818
|
className,
|
|
5344
5819
|
value,
|
|
5345
5820
|
...props
|
|
5346
5821
|
}) {
|
|
5347
|
-
return /* @__PURE__ */
|
|
5822
|
+
return /* @__PURE__ */ jsx43(
|
|
5348
5823
|
ProgressPrimitive.Root,
|
|
5349
5824
|
{
|
|
5350
5825
|
"data-slot": "progress",
|
|
@@ -5353,7 +5828,7 @@ function Progress({
|
|
|
5353
5828
|
className
|
|
5354
5829
|
),
|
|
5355
5830
|
...props,
|
|
5356
|
-
children: /* @__PURE__ */
|
|
5831
|
+
children: /* @__PURE__ */ jsx43(
|
|
5357
5832
|
ProgressPrimitive.Indicator,
|
|
5358
5833
|
{
|
|
5359
5834
|
"data-slot": "progress-indicator",
|
|
@@ -5366,10 +5841,10 @@ function Progress({
|
|
|
5366
5841
|
}
|
|
5367
5842
|
|
|
5368
5843
|
// src/components/ui/progress-bar.tsx
|
|
5369
|
-
import { cva as
|
|
5844
|
+
import { cva as cva13 } from "class-variance-authority";
|
|
5370
5845
|
import "react";
|
|
5371
|
-
import { jsx as
|
|
5372
|
-
var progressBarVariants =
|
|
5846
|
+
import { jsx as jsx44, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
5847
|
+
var progressBarVariants = cva13("relative overflow-hidden rounded-[8px]", {
|
|
5373
5848
|
variants: {
|
|
5374
5849
|
device: {
|
|
5375
5850
|
desktop: "w-[360px] h-[4px]",
|
|
@@ -5389,7 +5864,7 @@ function ProgressBar({
|
|
|
5389
5864
|
...props
|
|
5390
5865
|
}) {
|
|
5391
5866
|
const percentage = value !== void 0 ? Math.min(100, Math.max(0, value)) : Math.min(100, Math.max(0, currentStep / totalSteps * 100));
|
|
5392
|
-
return /* @__PURE__ */
|
|
5867
|
+
return /* @__PURE__ */ jsxs26(
|
|
5393
5868
|
"div",
|
|
5394
5869
|
{
|
|
5395
5870
|
"data-slot": "progress-bar",
|
|
@@ -5400,8 +5875,8 @@ function ProgressBar({
|
|
|
5400
5875
|
"aria-valuemax": 100,
|
|
5401
5876
|
...props,
|
|
5402
5877
|
children: [
|
|
5403
|
-
/* @__PURE__ */
|
|
5404
|
-
/* @__PURE__ */
|
|
5878
|
+
/* @__PURE__ */ jsx44("div", { className: "absolute inset-0 rounded-[8px] bg-primary-surface-light" }),
|
|
5879
|
+
/* @__PURE__ */ jsx44(
|
|
5405
5880
|
"div",
|
|
5406
5881
|
{
|
|
5407
5882
|
"data-slot": "progress-bar-fill",
|
|
@@ -5418,12 +5893,12 @@ function ProgressBar({
|
|
|
5418
5893
|
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
5419
5894
|
import { CircleIcon as CircleIcon4 } from "lucide-react";
|
|
5420
5895
|
import "react";
|
|
5421
|
-
import { jsx as
|
|
5896
|
+
import { jsx as jsx45 } from "react/jsx-runtime";
|
|
5422
5897
|
function RadioGroup4({
|
|
5423
5898
|
className,
|
|
5424
5899
|
...props
|
|
5425
5900
|
}) {
|
|
5426
|
-
return /* @__PURE__ */
|
|
5901
|
+
return /* @__PURE__ */ jsx45(
|
|
5427
5902
|
RadioGroupPrimitive.Root,
|
|
5428
5903
|
{
|
|
5429
5904
|
"data-slot": "radio-group",
|
|
@@ -5436,7 +5911,7 @@ function RadioGroupItem({
|
|
|
5436
5911
|
className,
|
|
5437
5912
|
...props
|
|
5438
5913
|
}) {
|
|
5439
|
-
return /* @__PURE__ */
|
|
5914
|
+
return /* @__PURE__ */ jsx45(
|
|
5440
5915
|
RadioGroupPrimitive.Item,
|
|
5441
5916
|
{
|
|
5442
5917
|
"data-slot": "radio-group-item",
|
|
@@ -5445,12 +5920,12 @@ function RadioGroupItem({
|
|
|
5445
5920
|
className
|
|
5446
5921
|
),
|
|
5447
5922
|
...props,
|
|
5448
|
-
children: /* @__PURE__ */
|
|
5923
|
+
children: /* @__PURE__ */ jsx45(
|
|
5449
5924
|
RadioGroupPrimitive.Indicator,
|
|
5450
5925
|
{
|
|
5451
5926
|
"data-slot": "radio-group-indicator",
|
|
5452
5927
|
className: "relative flex items-center justify-center",
|
|
5453
|
-
children: /* @__PURE__ */
|
|
5928
|
+
children: /* @__PURE__ */ jsx45(CircleIcon4, { className: "fill-white absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
|
|
5454
5929
|
}
|
|
5455
5930
|
)
|
|
5456
5931
|
}
|
|
@@ -5461,12 +5936,12 @@ function RadioGroupItem({
|
|
|
5461
5936
|
import "react";
|
|
5462
5937
|
import { GripVerticalIcon } from "lucide-react";
|
|
5463
5938
|
import * as ResizablePrimitive from "react-resizable-panels";
|
|
5464
|
-
import { jsx as
|
|
5939
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
5465
5940
|
function ResizablePanelGroup({
|
|
5466
5941
|
className,
|
|
5467
5942
|
...props
|
|
5468
5943
|
}) {
|
|
5469
|
-
return /* @__PURE__ */
|
|
5944
|
+
return /* @__PURE__ */ jsx46(
|
|
5470
5945
|
ResizablePrimitive.PanelGroup,
|
|
5471
5946
|
{
|
|
5472
5947
|
"data-slot": "resizable-panel-group",
|
|
@@ -5481,14 +5956,14 @@ function ResizablePanelGroup({
|
|
|
5481
5956
|
function ResizablePanel({
|
|
5482
5957
|
...props
|
|
5483
5958
|
}) {
|
|
5484
|
-
return /* @__PURE__ */
|
|
5959
|
+
return /* @__PURE__ */ jsx46(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
|
|
5485
5960
|
}
|
|
5486
5961
|
function ResizableHandle({
|
|
5487
5962
|
withHandle,
|
|
5488
5963
|
className,
|
|
5489
5964
|
...props
|
|
5490
5965
|
}) {
|
|
5491
|
-
return /* @__PURE__ */
|
|
5966
|
+
return /* @__PURE__ */ jsx46(
|
|
5492
5967
|
ResizablePrimitive.PanelResizeHandle,
|
|
5493
5968
|
{
|
|
5494
5969
|
"data-slot": "resizable-handle",
|
|
@@ -5497,7 +5972,7 @@ function ResizableHandle({
|
|
|
5497
5972
|
className
|
|
5498
5973
|
),
|
|
5499
5974
|
...props,
|
|
5500
|
-
children: withHandle && /* @__PURE__ */
|
|
5975
|
+
children: withHandle && /* @__PURE__ */ jsx46("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ jsx46(GripVerticalIcon, { className: "size-2.5" }) })
|
|
5501
5976
|
}
|
|
5502
5977
|
);
|
|
5503
5978
|
}
|
|
@@ -5505,20 +5980,20 @@ function ResizableHandle({
|
|
|
5505
5980
|
// src/components/ui/scroll-area.tsx
|
|
5506
5981
|
import "react";
|
|
5507
5982
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
5508
|
-
import { jsx as
|
|
5983
|
+
import { jsx as jsx47, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
5509
5984
|
function ScrollArea({
|
|
5510
5985
|
className,
|
|
5511
5986
|
children,
|
|
5512
5987
|
...props
|
|
5513
5988
|
}) {
|
|
5514
|
-
return /* @__PURE__ */
|
|
5989
|
+
return /* @__PURE__ */ jsxs27(
|
|
5515
5990
|
ScrollAreaPrimitive.Root,
|
|
5516
5991
|
{
|
|
5517
5992
|
"data-slot": "scroll-area",
|
|
5518
5993
|
className: cn("relative", className),
|
|
5519
5994
|
...props,
|
|
5520
5995
|
children: [
|
|
5521
|
-
/* @__PURE__ */
|
|
5996
|
+
/* @__PURE__ */ jsx47(
|
|
5522
5997
|
ScrollAreaPrimitive.Viewport,
|
|
5523
5998
|
{
|
|
5524
5999
|
"data-slot": "scroll-area-viewport",
|
|
@@ -5526,8 +6001,8 @@ function ScrollArea({
|
|
|
5526
6001
|
children
|
|
5527
6002
|
}
|
|
5528
6003
|
),
|
|
5529
|
-
/* @__PURE__ */
|
|
5530
|
-
/* @__PURE__ */
|
|
6004
|
+
/* @__PURE__ */ jsx47(ScrollBar, {}),
|
|
6005
|
+
/* @__PURE__ */ jsx47(ScrollAreaPrimitive.Corner, {})
|
|
5531
6006
|
]
|
|
5532
6007
|
}
|
|
5533
6008
|
);
|
|
@@ -5537,7 +6012,7 @@ function ScrollBar({
|
|
|
5537
6012
|
orientation = "vertical",
|
|
5538
6013
|
...props
|
|
5539
6014
|
}) {
|
|
5540
|
-
return /* @__PURE__ */
|
|
6015
|
+
return /* @__PURE__ */ jsx47(
|
|
5541
6016
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
5542
6017
|
{
|
|
5543
6018
|
"data-slot": "scroll-area-scrollbar",
|
|
@@ -5549,7 +6024,7 @@ function ScrollBar({
|
|
|
5549
6024
|
className
|
|
5550
6025
|
),
|
|
5551
6026
|
...props,
|
|
5552
|
-
children: /* @__PURE__ */
|
|
6027
|
+
children: /* @__PURE__ */ jsx47(
|
|
5553
6028
|
ScrollAreaPrimitive.ScrollAreaThumb,
|
|
5554
6029
|
{
|
|
5555
6030
|
"data-slot": "scroll-area-thumb",
|
|
@@ -5561,9 +6036,9 @@ function ScrollBar({
|
|
|
5561
6036
|
}
|
|
5562
6037
|
|
|
5563
6038
|
// src/components/ui/search-input.tsx
|
|
5564
|
-
import * as
|
|
6039
|
+
import * as React47 from "react";
|
|
5565
6040
|
import { Search, X as X4 } from "lucide-react";
|
|
5566
|
-
import { jsx as
|
|
6041
|
+
import { jsx as jsx48, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
5567
6042
|
function SearchInput({
|
|
5568
6043
|
variant = "icon",
|
|
5569
6044
|
value: valueProp,
|
|
@@ -5582,23 +6057,23 @@ function SearchInput({
|
|
|
5582
6057
|
onSuggestionClick,
|
|
5583
6058
|
className
|
|
5584
6059
|
}) {
|
|
5585
|
-
const [internalValue, setInternalValue] =
|
|
5586
|
-
const [isFocused, setIsFocused] =
|
|
5587
|
-
const [showSuggestions, setShowSuggestions] =
|
|
5588
|
-
const inputRef =
|
|
5589
|
-
const containerRef =
|
|
6060
|
+
const [internalValue, setInternalValue] = React47.useState(defaultValue);
|
|
6061
|
+
const [isFocused, setIsFocused] = React47.useState(false);
|
|
6062
|
+
const [showSuggestions, setShowSuggestions] = React47.useState(false);
|
|
6063
|
+
const inputRef = React47.useRef(null);
|
|
6064
|
+
const containerRef = React47.useRef(null);
|
|
5590
6065
|
const isControlled = valueProp !== void 0;
|
|
5591
6066
|
const currentValue = isControlled ? valueProp : internalValue;
|
|
5592
6067
|
const hasValue = currentValue.trim().length > 0;
|
|
5593
6068
|
const isFilledEdit = hasValue && !isFocused && !error;
|
|
5594
|
-
const updateValue =
|
|
6069
|
+
const updateValue = React47.useCallback(
|
|
5595
6070
|
(next) => {
|
|
5596
6071
|
if (!isControlled) setInternalValue(next);
|
|
5597
6072
|
onValueChange?.(next);
|
|
5598
6073
|
},
|
|
5599
6074
|
[isControlled, onValueChange]
|
|
5600
6075
|
);
|
|
5601
|
-
const handleInputChange =
|
|
6076
|
+
const handleInputChange = React47.useCallback(
|
|
5602
6077
|
(e) => {
|
|
5603
6078
|
updateValue(e.target.value);
|
|
5604
6079
|
if (e.target.value.trim().length > 0 && suggestions.length > 0) {
|
|
@@ -5609,7 +6084,7 @@ function SearchInput({
|
|
|
5609
6084
|
},
|
|
5610
6085
|
[updateValue, suggestions.length]
|
|
5611
6086
|
);
|
|
5612
|
-
const handleKeyDown =
|
|
6087
|
+
const handleKeyDown = React47.useCallback(
|
|
5613
6088
|
(e) => {
|
|
5614
6089
|
if (e.key === "Enter") {
|
|
5615
6090
|
e.preventDefault();
|
|
@@ -5622,16 +6097,16 @@ function SearchInput({
|
|
|
5622
6097
|
},
|
|
5623
6098
|
[currentValue, onSearch]
|
|
5624
6099
|
);
|
|
5625
|
-
const handleClear =
|
|
6100
|
+
const handleClear = React47.useCallback(() => {
|
|
5626
6101
|
updateValue("");
|
|
5627
6102
|
onClear?.();
|
|
5628
6103
|
inputRef.current?.focus();
|
|
5629
6104
|
}, [updateValue, onClear]);
|
|
5630
|
-
const handleSearchClick =
|
|
6105
|
+
const handleSearchClick = React47.useCallback(() => {
|
|
5631
6106
|
onSearch?.(currentValue);
|
|
5632
6107
|
setShowSuggestions(false);
|
|
5633
6108
|
}, [currentValue, onSearch]);
|
|
5634
|
-
const handleSuggestionClick =
|
|
6109
|
+
const handleSuggestionClick = React47.useCallback(
|
|
5635
6110
|
(label2) => {
|
|
5636
6111
|
updateValue(label2);
|
|
5637
6112
|
onSuggestionClick?.(label2);
|
|
@@ -5640,14 +6115,14 @@ function SearchInput({
|
|
|
5640
6115
|
},
|
|
5641
6116
|
[updateValue, onSuggestionClick]
|
|
5642
6117
|
);
|
|
5643
|
-
const handleFocus =
|
|
6118
|
+
const handleFocus = React47.useCallback(() => {
|
|
5644
6119
|
if (disabled) return;
|
|
5645
6120
|
setIsFocused(true);
|
|
5646
6121
|
if (currentValue.trim().length > 0 && suggestions.length > 0) {
|
|
5647
6122
|
setShowSuggestions(true);
|
|
5648
6123
|
}
|
|
5649
6124
|
}, [disabled, currentValue, suggestions.length]);
|
|
5650
|
-
const handleBlur =
|
|
6125
|
+
const handleBlur = React47.useCallback(
|
|
5651
6126
|
(e) => {
|
|
5652
6127
|
if (containerRef.current?.contains(e.relatedTarget)) return;
|
|
5653
6128
|
setIsFocused(false);
|
|
@@ -5657,7 +6132,7 @@ function SearchInput({
|
|
|
5657
6132
|
);
|
|
5658
6133
|
const displayHelperText = error && errorMessage ? errorMessage : helperText;
|
|
5659
6134
|
const showClearButton = (isFilledEdit || error) && hasValue;
|
|
5660
|
-
return /* @__PURE__ */
|
|
6135
|
+
return /* @__PURE__ */ jsxs28(
|
|
5661
6136
|
"div",
|
|
5662
6137
|
{
|
|
5663
6138
|
ref: containerRef,
|
|
@@ -5665,8 +6140,8 @@ function SearchInput({
|
|
|
5665
6140
|
className: cn("flex flex-col gap-[8px] items-start w-full", className),
|
|
5666
6141
|
onBlur: handleBlur,
|
|
5667
6142
|
children: [
|
|
5668
|
-
label && /* @__PURE__ */
|
|
5669
|
-
/* @__PURE__ */
|
|
6143
|
+
label && /* @__PURE__ */ jsx48("div", { className: "flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details", children: label }),
|
|
6144
|
+
/* @__PURE__ */ jsxs28(
|
|
5670
6145
|
"div",
|
|
5671
6146
|
{
|
|
5672
6147
|
className: cn(
|
|
@@ -5683,7 +6158,7 @@ function SearchInput({
|
|
|
5683
6158
|
disabled && "opacity-60 cursor-not-allowed"
|
|
5684
6159
|
),
|
|
5685
6160
|
children: [
|
|
5686
|
-
icon && /* @__PURE__ */
|
|
6161
|
+
icon && /* @__PURE__ */ jsx48(
|
|
5687
6162
|
"span",
|
|
5688
6163
|
{
|
|
5689
6164
|
className: cn(
|
|
@@ -5693,7 +6168,7 @@ function SearchInput({
|
|
|
5693
6168
|
children: icon
|
|
5694
6169
|
}
|
|
5695
6170
|
),
|
|
5696
|
-
/* @__PURE__ */
|
|
6171
|
+
/* @__PURE__ */ jsx48(
|
|
5697
6172
|
"input",
|
|
5698
6173
|
{
|
|
5699
6174
|
ref: inputRef,
|
|
@@ -5710,7 +6185,7 @@ function SearchInput({
|
|
|
5710
6185
|
)
|
|
5711
6186
|
}
|
|
5712
6187
|
),
|
|
5713
|
-
showClearButton ? /* @__PURE__ */
|
|
6188
|
+
showClearButton ? /* @__PURE__ */ jsx48(
|
|
5714
6189
|
"button",
|
|
5715
6190
|
{
|
|
5716
6191
|
type: "button",
|
|
@@ -5718,9 +6193,9 @@ function SearchInput({
|
|
|
5718
6193
|
className: "flex items-center justify-center shrink-0 size-[20px] text-muted-foreground hover:text-vibrant-text-heading transition-colors cursor-pointer",
|
|
5719
6194
|
"aria-label": "Clear search",
|
|
5720
6195
|
tabIndex: -1,
|
|
5721
|
-
children: /* @__PURE__ */
|
|
6196
|
+
children: /* @__PURE__ */ jsx48(X4, { className: "size-[16px]" })
|
|
5722
6197
|
}
|
|
5723
|
-
) : variant === "button" ? /* @__PURE__ */
|
|
6198
|
+
) : variant === "button" ? /* @__PURE__ */ jsx48(
|
|
5724
6199
|
"button",
|
|
5725
6200
|
{
|
|
5726
6201
|
type: "button",
|
|
@@ -5730,7 +6205,7 @@ function SearchInput({
|
|
|
5730
6205
|
tabIndex: -1,
|
|
5731
6206
|
children: "Search"
|
|
5732
6207
|
}
|
|
5733
|
-
) : /* @__PURE__ */
|
|
6208
|
+
) : /* @__PURE__ */ jsx48(
|
|
5734
6209
|
"button",
|
|
5735
6210
|
{
|
|
5736
6211
|
type: "button",
|
|
@@ -5739,13 +6214,13 @@ function SearchInput({
|
|
|
5739
6214
|
className: "flex items-center justify-center shrink-0 size-[36px] rounded-[6px] bg-primary-surface-default cursor-pointer disabled:cursor-not-allowed transition-colors",
|
|
5740
6215
|
"aria-label": "Search",
|
|
5741
6216
|
tabIndex: -1,
|
|
5742
|
-
children: /* @__PURE__ */
|
|
6217
|
+
children: /* @__PURE__ */ jsx48(Search, { className: "size-[20px] text-white" })
|
|
5743
6218
|
}
|
|
5744
6219
|
)
|
|
5745
6220
|
]
|
|
5746
6221
|
}
|
|
5747
6222
|
),
|
|
5748
|
-
displayHelperText && /* @__PURE__ */
|
|
6223
|
+
displayHelperText && /* @__PURE__ */ jsx48(
|
|
5749
6224
|
"p",
|
|
5750
6225
|
{
|
|
5751
6226
|
className: cn(
|
|
@@ -5755,12 +6230,12 @@ function SearchInput({
|
|
|
5755
6230
|
children: displayHelperText
|
|
5756
6231
|
}
|
|
5757
6232
|
),
|
|
5758
|
-
showSuggestions && suggestions.length > 0 && /* @__PURE__ */
|
|
6233
|
+
showSuggestions && suggestions.length > 0 && /* @__PURE__ */ jsx48(
|
|
5759
6234
|
"div",
|
|
5760
6235
|
{
|
|
5761
6236
|
"data-slot": "search-input-suggestions",
|
|
5762
6237
|
className: "w-full rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)] flex flex-col gap-[16px]",
|
|
5763
|
-
children: suggestions.map((suggestion, idx) => /* @__PURE__ */
|
|
6238
|
+
children: suggestions.map((suggestion, idx) => /* @__PURE__ */ jsxs28(
|
|
5764
6239
|
"button",
|
|
5765
6240
|
{
|
|
5766
6241
|
type: "button",
|
|
@@ -5768,8 +6243,8 @@ function SearchInput({
|
|
|
5768
6243
|
onMouseDown: (e) => e.preventDefault(),
|
|
5769
6244
|
className: "flex items-center gap-[13px] h-[40px] pr-[12px] rounded-[8px] w-full text-left hover:bg-gray-surface-light transition-colors cursor-pointer",
|
|
5770
6245
|
children: [
|
|
5771
|
-
suggestion.icon && /* @__PURE__ */
|
|
5772
|
-
/* @__PURE__ */
|
|
6246
|
+
suggestion.icon && /* @__PURE__ */ jsx48("span", { className: "flex items-center justify-center shrink-0 size-[40px] rounded-[8px] bg-gray-surface-light [&_svg]:size-[20px] text-muted-foreground", children: suggestion.icon }),
|
|
6247
|
+
/* @__PURE__ */ jsx48("span", { className: "flex-1 min-w-0 font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading truncate", children: suggestion.label })
|
|
5773
6248
|
]
|
|
5774
6249
|
},
|
|
5775
6250
|
`${suggestion.label}-${idx}`
|
|
@@ -5782,12 +6257,12 @@ function SearchInput({
|
|
|
5782
6257
|
}
|
|
5783
6258
|
|
|
5784
6259
|
// src/components/ui/searchable-select.tsx
|
|
5785
|
-
import * as
|
|
6260
|
+
import * as React48 from "react";
|
|
5786
6261
|
import { CheckIcon as CheckIcon4, ChevronsUpDown, XIcon as XIcon3 } from "lucide-react";
|
|
5787
|
-
import { jsx as
|
|
5788
|
-
var SearchableSelectContext =
|
|
6262
|
+
import { jsx as jsx49, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
6263
|
+
var SearchableSelectContext = React48.createContext(null);
|
|
5789
6264
|
function useSearchableSelect() {
|
|
5790
|
-
const ctx =
|
|
6265
|
+
const ctx = React48.useContext(SearchableSelectContext);
|
|
5791
6266
|
if (!ctx) {
|
|
5792
6267
|
throw new Error(
|
|
5793
6268
|
"SearchableSelect compound components must be used within <SearchableSelect>"
|
|
@@ -5813,11 +6288,11 @@ function SearchableSelect({
|
|
|
5813
6288
|
onOpenChange,
|
|
5814
6289
|
children
|
|
5815
6290
|
}) {
|
|
5816
|
-
const [internalOpen, setInternalOpen] =
|
|
5817
|
-
const [internalValue, setInternalValue] =
|
|
5818
|
-
const [internalValues, setInternalValues] =
|
|
6291
|
+
const [internalOpen, setInternalOpen] = React48.useState(false);
|
|
6292
|
+
const [internalValue, setInternalValue] = React48.useState(defaultValue);
|
|
6293
|
+
const [internalValues, setInternalValues] = React48.useState(defaultValues);
|
|
5819
6294
|
const open = controlledOpen ?? internalOpen;
|
|
5820
|
-
const setOpen =
|
|
6295
|
+
const setOpen = React48.useCallback(
|
|
5821
6296
|
(next) => {
|
|
5822
6297
|
if (controlledOpen !== void 0) {
|
|
5823
6298
|
onOpenChange?.(next);
|
|
@@ -5829,7 +6304,7 @@ function SearchableSelect({
|
|
|
5829
6304
|
[controlledOpen, onOpenChange]
|
|
5830
6305
|
);
|
|
5831
6306
|
const value = controlledValue ?? internalValue;
|
|
5832
|
-
const setValue =
|
|
6307
|
+
const setValue = React48.useCallback(
|
|
5833
6308
|
(next) => {
|
|
5834
6309
|
if (controlledValue === void 0) {
|
|
5835
6310
|
setInternalValue(next);
|
|
@@ -5839,7 +6314,7 @@ function SearchableSelect({
|
|
|
5839
6314
|
[controlledValue, onValueChange]
|
|
5840
6315
|
);
|
|
5841
6316
|
const values = controlledValues ?? internalValues;
|
|
5842
|
-
const setValues =
|
|
6317
|
+
const setValues = React48.useCallback(
|
|
5843
6318
|
(next) => {
|
|
5844
6319
|
if (controlledValues === void 0) {
|
|
5845
6320
|
setInternalValues(next);
|
|
@@ -5848,14 +6323,14 @@ function SearchableSelect({
|
|
|
5848
6323
|
},
|
|
5849
6324
|
[controlledValues, onValuesChange]
|
|
5850
6325
|
);
|
|
5851
|
-
const optionMap =
|
|
6326
|
+
const optionMap = React48.useMemo(() => {
|
|
5852
6327
|
const map = /* @__PURE__ */ new Map();
|
|
5853
6328
|
for (const opt of options) {
|
|
5854
6329
|
map.set(opt.value, opt.label);
|
|
5855
6330
|
}
|
|
5856
6331
|
return map;
|
|
5857
6332
|
}, [options]);
|
|
5858
|
-
const ctx =
|
|
6333
|
+
const ctx = React48.useMemo(
|
|
5859
6334
|
() => ({
|
|
5860
6335
|
open,
|
|
5861
6336
|
setOpen,
|
|
@@ -5889,7 +6364,7 @@ function SearchableSelect({
|
|
|
5889
6364
|
optionMap
|
|
5890
6365
|
]
|
|
5891
6366
|
);
|
|
5892
|
-
return /* @__PURE__ */
|
|
6367
|
+
return /* @__PURE__ */ jsx49(SearchableSelectContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx49(Popover, { open, onOpenChange: setOpen, children }) });
|
|
5893
6368
|
}
|
|
5894
6369
|
function SearchableSelectTrigger({
|
|
5895
6370
|
className,
|
|
@@ -5902,7 +6377,7 @@ function SearchableSelectTrigger({
|
|
|
5902
6377
|
if (children) return children;
|
|
5903
6378
|
if (ctx.mode === "single") {
|
|
5904
6379
|
const label = ctx.optionMap.get(ctx.value);
|
|
5905
|
-
return /* @__PURE__ */
|
|
6380
|
+
return /* @__PURE__ */ jsx49(
|
|
5906
6381
|
"span",
|
|
5907
6382
|
{
|
|
5908
6383
|
"data-slot": "searchable-select-value",
|
|
@@ -5915,7 +6390,7 @@ function SearchableSelectTrigger({
|
|
|
5915
6390
|
);
|
|
5916
6391
|
}
|
|
5917
6392
|
if (ctx.values.length === 0) {
|
|
5918
|
-
return /* @__PURE__ */
|
|
6393
|
+
return /* @__PURE__ */ jsx49(
|
|
5919
6394
|
"span",
|
|
5920
6395
|
{
|
|
5921
6396
|
"data-slot": "searchable-select-value",
|
|
@@ -5926,20 +6401,20 @@ function SearchableSelectTrigger({
|
|
|
5926
6401
|
}
|
|
5927
6402
|
const visible = ctx.values.slice(0, ctx.maxCount);
|
|
5928
6403
|
const remaining = ctx.values.length - visible.length;
|
|
5929
|
-
return /* @__PURE__ */
|
|
6404
|
+
return /* @__PURE__ */ jsxs29(
|
|
5930
6405
|
"span",
|
|
5931
6406
|
{
|
|
5932
6407
|
"data-slot": "searchable-select-value",
|
|
5933
6408
|
className: "flex flex-wrap items-center gap-1",
|
|
5934
6409
|
children: [
|
|
5935
|
-
visible.map((v) => /* @__PURE__ */
|
|
6410
|
+
visible.map((v) => /* @__PURE__ */ jsxs29(
|
|
5936
6411
|
Badge,
|
|
5937
6412
|
{
|
|
5938
6413
|
variant: "secondary",
|
|
5939
6414
|
className: "gap-1 pr-1",
|
|
5940
6415
|
children: [
|
|
5941
|
-
/* @__PURE__ */
|
|
5942
|
-
/* @__PURE__ */
|
|
6416
|
+
/* @__PURE__ */ jsx49("span", { className: "truncate max-w-[120px]", children: ctx.optionMap.get(v) || v }),
|
|
6417
|
+
/* @__PURE__ */ jsx49(
|
|
5943
6418
|
"span",
|
|
5944
6419
|
{
|
|
5945
6420
|
role: "button",
|
|
@@ -5951,14 +6426,14 @@ function SearchableSelectTrigger({
|
|
|
5951
6426
|
e.stopPropagation();
|
|
5952
6427
|
ctx.setValues(ctx.values.filter((val) => val !== v));
|
|
5953
6428
|
},
|
|
5954
|
-
children: /* @__PURE__ */
|
|
6429
|
+
children: /* @__PURE__ */ jsx49(XIcon3, { className: "size-3" })
|
|
5955
6430
|
}
|
|
5956
6431
|
)
|
|
5957
6432
|
]
|
|
5958
6433
|
},
|
|
5959
6434
|
v
|
|
5960
6435
|
)),
|
|
5961
|
-
remaining > 0 && /* @__PURE__ */
|
|
6436
|
+
remaining > 0 && /* @__PURE__ */ jsxs29(Badge, { variant: "outline", className: "text-muted-foreground", children: [
|
|
5962
6437
|
"+",
|
|
5963
6438
|
remaining,
|
|
5964
6439
|
" more"
|
|
@@ -5967,7 +6442,7 @@ function SearchableSelectTrigger({
|
|
|
5967
6442
|
}
|
|
5968
6443
|
);
|
|
5969
6444
|
};
|
|
5970
|
-
return /* @__PURE__ */
|
|
6445
|
+
return /* @__PURE__ */ jsxs29(
|
|
5971
6446
|
PopoverTrigger,
|
|
5972
6447
|
{
|
|
5973
6448
|
"data-slot": "searchable-select-trigger",
|
|
@@ -5981,7 +6456,7 @@ function SearchableSelectTrigger({
|
|
|
5981
6456
|
...props,
|
|
5982
6457
|
children: [
|
|
5983
6458
|
renderContent(),
|
|
5984
|
-
/* @__PURE__ */
|
|
6459
|
+
/* @__PURE__ */ jsx49(ChevronsUpDown, { className: "size-4 shrink-0 opacity-50" })
|
|
5985
6460
|
]
|
|
5986
6461
|
}
|
|
5987
6462
|
);
|
|
@@ -5993,7 +6468,7 @@ function SearchableSelectContent({
|
|
|
5993
6468
|
...props
|
|
5994
6469
|
}) {
|
|
5995
6470
|
const ctx = useSearchableSelect();
|
|
5996
|
-
const groupedOptions =
|
|
6471
|
+
const groupedOptions = React48.useMemo(() => {
|
|
5997
6472
|
if (ctx.options.length === 0) return null;
|
|
5998
6473
|
const groups = /* @__PURE__ */ new Map();
|
|
5999
6474
|
for (const opt of ctx.options) {
|
|
@@ -6007,7 +6482,7 @@ function SearchableSelectContent({
|
|
|
6007
6482
|
if (!groupedOptions) return null;
|
|
6008
6483
|
const entries = Array.from(groupedOptions.entries());
|
|
6009
6484
|
if (entries.length === 1 && entries[0][0] === "") {
|
|
6010
|
-
return entries[0][1].map((opt) => /* @__PURE__ */
|
|
6485
|
+
return entries[0][1].map((opt) => /* @__PURE__ */ jsx49(
|
|
6011
6486
|
SearchableSelectItem,
|
|
6012
6487
|
{
|
|
6013
6488
|
value: opt.value,
|
|
@@ -6017,7 +6492,7 @@ function SearchableSelectContent({
|
|
|
6017
6492
|
opt.value
|
|
6018
6493
|
));
|
|
6019
6494
|
}
|
|
6020
|
-
return entries.map(([group, opts]) => /* @__PURE__ */
|
|
6495
|
+
return entries.map(([group, opts]) => /* @__PURE__ */ jsx49(SearchableSelectGroup, { heading: group || void 0, children: opts.map((opt) => /* @__PURE__ */ jsx49(
|
|
6021
6496
|
SearchableSelectItem,
|
|
6022
6497
|
{
|
|
6023
6498
|
value: opt.value,
|
|
@@ -6027,17 +6502,17 @@ function SearchableSelectContent({
|
|
|
6027
6502
|
opt.value
|
|
6028
6503
|
)) }, group));
|
|
6029
6504
|
};
|
|
6030
|
-
return /* @__PURE__ */
|
|
6505
|
+
return /* @__PURE__ */ jsx49(
|
|
6031
6506
|
PopoverContent,
|
|
6032
6507
|
{
|
|
6033
6508
|
"data-slot": "searchable-select-content",
|
|
6034
6509
|
className: cn("w-[var(--radix-popover-trigger-width)] p-0", className),
|
|
6035
6510
|
align: "start",
|
|
6036
6511
|
...props,
|
|
6037
|
-
children: /* @__PURE__ */
|
|
6038
|
-
ctx.searchable && /* @__PURE__ */
|
|
6039
|
-
/* @__PURE__ */
|
|
6040
|
-
/* @__PURE__ */
|
|
6512
|
+
children: /* @__PURE__ */ jsxs29(Command, { children: [
|
|
6513
|
+
ctx.searchable && /* @__PURE__ */ jsx49(CommandInput, { placeholder: ctx.searchPlaceholder }),
|
|
6514
|
+
/* @__PURE__ */ jsxs29(CommandList, { children: [
|
|
6515
|
+
/* @__PURE__ */ jsx49(CommandEmpty, { children: emptyText }),
|
|
6041
6516
|
children || renderAutoItems()
|
|
6042
6517
|
] })
|
|
6043
6518
|
] })
|
|
@@ -6064,7 +6539,7 @@ function SearchableSelectItem({
|
|
|
6064
6539
|
);
|
|
6065
6540
|
}
|
|
6066
6541
|
};
|
|
6067
|
-
return /* @__PURE__ */
|
|
6542
|
+
return /* @__PURE__ */ jsxs29(
|
|
6068
6543
|
CommandItem,
|
|
6069
6544
|
{
|
|
6070
6545
|
"data-slot": "searchable-select-item",
|
|
@@ -6077,18 +6552,18 @@ function SearchableSelectItem({
|
|
|
6077
6552
|
"data-disabled": disabled || void 0,
|
|
6078
6553
|
...props,
|
|
6079
6554
|
children: [
|
|
6080
|
-
ctx.mode === "multiple" && /* @__PURE__ */
|
|
6555
|
+
ctx.mode === "multiple" && /* @__PURE__ */ jsx49("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx49(
|
|
6081
6556
|
"span",
|
|
6082
6557
|
{
|
|
6083
6558
|
className: cn(
|
|
6084
6559
|
"size-4 rounded-sm border border-primary transition-colors",
|
|
6085
6560
|
isSelected ? "bg-primary text-primary-foreground" : "bg-transparent"
|
|
6086
6561
|
),
|
|
6087
|
-
children: isSelected && /* @__PURE__ */
|
|
6562
|
+
children: isSelected && /* @__PURE__ */ jsx49(CheckIcon4, { className: "size-4 p-0.5" })
|
|
6088
6563
|
}
|
|
6089
6564
|
) }),
|
|
6090
|
-
/* @__PURE__ */
|
|
6091
|
-
ctx.mode === "single" && isSelected && /* @__PURE__ */
|
|
6565
|
+
/* @__PURE__ */ jsx49("span", { className: "flex-1 truncate", children }),
|
|
6566
|
+
ctx.mode === "single" && isSelected && /* @__PURE__ */ jsx49("span", { className: "absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx49(CheckIcon4, { className: "size-4" }) })
|
|
6092
6567
|
]
|
|
6093
6568
|
}
|
|
6094
6569
|
);
|
|
@@ -6097,7 +6572,7 @@ function SearchableSelectGroup({
|
|
|
6097
6572
|
className,
|
|
6098
6573
|
...props
|
|
6099
6574
|
}) {
|
|
6100
|
-
return /* @__PURE__ */
|
|
6575
|
+
return /* @__PURE__ */ jsx49(
|
|
6101
6576
|
CommandGroup,
|
|
6102
6577
|
{
|
|
6103
6578
|
"data-slot": "searchable-select-group",
|
|
@@ -6111,7 +6586,7 @@ function SearchableSelectEmpty({
|
|
|
6111
6586
|
children = "No results found.",
|
|
6112
6587
|
...props
|
|
6113
6588
|
}) {
|
|
6114
|
-
return /* @__PURE__ */
|
|
6589
|
+
return /* @__PURE__ */ jsx49(
|
|
6115
6590
|
CommandEmpty,
|
|
6116
6591
|
{
|
|
6117
6592
|
"data-slot": "searchable-select-empty",
|
|
@@ -6126,21 +6601,21 @@ function SearchableSelectEmpty({
|
|
|
6126
6601
|
import "react";
|
|
6127
6602
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
6128
6603
|
import { CheckIcon as CheckIcon5, ChevronDownIcon as ChevronDownIcon4, ChevronUpIcon } from "lucide-react";
|
|
6129
|
-
import { jsx as
|
|
6604
|
+
import { jsx as jsx50, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
6130
6605
|
function Select({
|
|
6131
6606
|
...props
|
|
6132
6607
|
}) {
|
|
6133
|
-
return /* @__PURE__ */
|
|
6608
|
+
return /* @__PURE__ */ jsx50(SelectPrimitive.Root, { "data-slot": "select", ...props });
|
|
6134
6609
|
}
|
|
6135
6610
|
function SelectGroup({
|
|
6136
6611
|
...props
|
|
6137
6612
|
}) {
|
|
6138
|
-
return /* @__PURE__ */
|
|
6613
|
+
return /* @__PURE__ */ jsx50(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
|
|
6139
6614
|
}
|
|
6140
6615
|
function SelectValue({
|
|
6141
6616
|
...props
|
|
6142
6617
|
}) {
|
|
6143
|
-
return /* @__PURE__ */
|
|
6618
|
+
return /* @__PURE__ */ jsx50(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
|
|
6144
6619
|
}
|
|
6145
6620
|
function SelectTrigger({
|
|
6146
6621
|
className,
|
|
@@ -6148,7 +6623,7 @@ function SelectTrigger({
|
|
|
6148
6623
|
children,
|
|
6149
6624
|
...props
|
|
6150
6625
|
}) {
|
|
6151
|
-
return /* @__PURE__ */
|
|
6626
|
+
return /* @__PURE__ */ jsxs30(
|
|
6152
6627
|
SelectPrimitive.Trigger,
|
|
6153
6628
|
{
|
|
6154
6629
|
"data-slot": "select-trigger",
|
|
@@ -6160,7 +6635,7 @@ function SelectTrigger({
|
|
|
6160
6635
|
...props,
|
|
6161
6636
|
children: [
|
|
6162
6637
|
children,
|
|
6163
|
-
/* @__PURE__ */
|
|
6638
|
+
/* @__PURE__ */ jsx50(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx50(ChevronDownIcon4, { className: "size-4 opacity-50" }) })
|
|
6164
6639
|
]
|
|
6165
6640
|
}
|
|
6166
6641
|
);
|
|
@@ -6171,7 +6646,7 @@ function SelectContent({
|
|
|
6171
6646
|
position = "popper",
|
|
6172
6647
|
...props
|
|
6173
6648
|
}) {
|
|
6174
|
-
return /* @__PURE__ */
|
|
6649
|
+
return /* @__PURE__ */ jsx50(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs30(
|
|
6175
6650
|
SelectPrimitive.Content,
|
|
6176
6651
|
{
|
|
6177
6652
|
"data-slot": "select-content",
|
|
@@ -6183,8 +6658,8 @@ function SelectContent({
|
|
|
6183
6658
|
position,
|
|
6184
6659
|
...props,
|
|
6185
6660
|
children: [
|
|
6186
|
-
/* @__PURE__ */
|
|
6187
|
-
/* @__PURE__ */
|
|
6661
|
+
/* @__PURE__ */ jsx50(SelectScrollUpButton, {}),
|
|
6662
|
+
/* @__PURE__ */ jsx50(
|
|
6188
6663
|
SelectPrimitive.Viewport,
|
|
6189
6664
|
{
|
|
6190
6665
|
className: cn(
|
|
@@ -6194,7 +6669,7 @@ function SelectContent({
|
|
|
6194
6669
|
children
|
|
6195
6670
|
}
|
|
6196
6671
|
),
|
|
6197
|
-
/* @__PURE__ */
|
|
6672
|
+
/* @__PURE__ */ jsx50(SelectScrollDownButton, {})
|
|
6198
6673
|
]
|
|
6199
6674
|
}
|
|
6200
6675
|
) });
|
|
@@ -6203,7 +6678,7 @@ function SelectLabel({
|
|
|
6203
6678
|
className,
|
|
6204
6679
|
...props
|
|
6205
6680
|
}) {
|
|
6206
|
-
return /* @__PURE__ */
|
|
6681
|
+
return /* @__PURE__ */ jsx50(
|
|
6207
6682
|
SelectPrimitive.Label,
|
|
6208
6683
|
{
|
|
6209
6684
|
"data-slot": "select-label",
|
|
@@ -6217,7 +6692,7 @@ function SelectItem({
|
|
|
6217
6692
|
children,
|
|
6218
6693
|
...props
|
|
6219
6694
|
}) {
|
|
6220
|
-
return /* @__PURE__ */
|
|
6695
|
+
return /* @__PURE__ */ jsxs30(
|
|
6221
6696
|
SelectPrimitive.Item,
|
|
6222
6697
|
{
|
|
6223
6698
|
"data-slot": "select-item",
|
|
@@ -6227,8 +6702,8 @@ function SelectItem({
|
|
|
6227
6702
|
),
|
|
6228
6703
|
...props,
|
|
6229
6704
|
children: [
|
|
6230
|
-
/* @__PURE__ */
|
|
6231
|
-
/* @__PURE__ */
|
|
6705
|
+
/* @__PURE__ */ jsx50("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx50(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx50(CheckIcon5, { className: "size-4" }) }) }),
|
|
6706
|
+
/* @__PURE__ */ jsx50(SelectPrimitive.ItemText, { children })
|
|
6232
6707
|
]
|
|
6233
6708
|
}
|
|
6234
6709
|
);
|
|
@@ -6237,7 +6712,7 @@ function SelectSeparator({
|
|
|
6237
6712
|
className,
|
|
6238
6713
|
...props
|
|
6239
6714
|
}) {
|
|
6240
|
-
return /* @__PURE__ */
|
|
6715
|
+
return /* @__PURE__ */ jsx50(
|
|
6241
6716
|
SelectPrimitive.Separator,
|
|
6242
6717
|
{
|
|
6243
6718
|
"data-slot": "select-separator",
|
|
@@ -6250,7 +6725,7 @@ function SelectScrollUpButton({
|
|
|
6250
6725
|
className,
|
|
6251
6726
|
...props
|
|
6252
6727
|
}) {
|
|
6253
|
-
return /* @__PURE__ */
|
|
6728
|
+
return /* @__PURE__ */ jsx50(
|
|
6254
6729
|
SelectPrimitive.ScrollUpButton,
|
|
6255
6730
|
{
|
|
6256
6731
|
"data-slot": "select-scroll-up-button",
|
|
@@ -6259,7 +6734,7 @@ function SelectScrollUpButton({
|
|
|
6259
6734
|
className
|
|
6260
6735
|
),
|
|
6261
6736
|
...props,
|
|
6262
|
-
children: /* @__PURE__ */
|
|
6737
|
+
children: /* @__PURE__ */ jsx50(ChevronUpIcon, { className: "size-4" })
|
|
6263
6738
|
}
|
|
6264
6739
|
);
|
|
6265
6740
|
}
|
|
@@ -6267,7 +6742,7 @@ function SelectScrollDownButton({
|
|
|
6267
6742
|
className,
|
|
6268
6743
|
...props
|
|
6269
6744
|
}) {
|
|
6270
|
-
return /* @__PURE__ */
|
|
6745
|
+
return /* @__PURE__ */ jsx50(
|
|
6271
6746
|
SelectPrimitive.ScrollDownButton,
|
|
6272
6747
|
{
|
|
6273
6748
|
"data-slot": "select-scroll-down-button",
|
|
@@ -6276,7 +6751,7 @@ function SelectScrollDownButton({
|
|
|
6276
6751
|
className
|
|
6277
6752
|
),
|
|
6278
6753
|
...props,
|
|
6279
|
-
children: /* @__PURE__ */
|
|
6754
|
+
children: /* @__PURE__ */ jsx50(ChevronDownIcon4, { className: "size-4" })
|
|
6280
6755
|
}
|
|
6281
6756
|
);
|
|
6282
6757
|
}
|
|
@@ -6284,14 +6759,14 @@ function SelectScrollDownButton({
|
|
|
6284
6759
|
// src/components/ui/separator.tsx
|
|
6285
6760
|
import "react";
|
|
6286
6761
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
6287
|
-
import { jsx as
|
|
6762
|
+
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
6288
6763
|
function Separator5({
|
|
6289
6764
|
className,
|
|
6290
6765
|
orientation = "horizontal",
|
|
6291
6766
|
decorative = true,
|
|
6292
6767
|
...props
|
|
6293
6768
|
}) {
|
|
6294
|
-
return /* @__PURE__ */
|
|
6769
|
+
return /* @__PURE__ */ jsx51(
|
|
6295
6770
|
SeparatorPrimitive.Root,
|
|
6296
6771
|
{
|
|
6297
6772
|
"data-slot": "separator",
|
|
@@ -6310,30 +6785,30 @@ function Separator5({
|
|
|
6310
6785
|
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
6311
6786
|
import { XIcon as XIcon4 } from "lucide-react";
|
|
6312
6787
|
import "react";
|
|
6313
|
-
import { jsx as
|
|
6788
|
+
import { jsx as jsx52, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
6314
6789
|
function Sheet({ ...props }) {
|
|
6315
|
-
return /* @__PURE__ */
|
|
6790
|
+
return /* @__PURE__ */ jsx52(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
|
|
6316
6791
|
}
|
|
6317
6792
|
function SheetTrigger({
|
|
6318
6793
|
...props
|
|
6319
6794
|
}) {
|
|
6320
|
-
return /* @__PURE__ */
|
|
6795
|
+
return /* @__PURE__ */ jsx52(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
6321
6796
|
}
|
|
6322
6797
|
function SheetClose({
|
|
6323
6798
|
...props
|
|
6324
6799
|
}) {
|
|
6325
|
-
return /* @__PURE__ */
|
|
6800
|
+
return /* @__PURE__ */ jsx52(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
|
|
6326
6801
|
}
|
|
6327
6802
|
function SheetPortal({
|
|
6328
6803
|
...props
|
|
6329
6804
|
}) {
|
|
6330
|
-
return /* @__PURE__ */
|
|
6805
|
+
return /* @__PURE__ */ jsx52(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
|
|
6331
6806
|
}
|
|
6332
6807
|
function SheetOverlay({
|
|
6333
6808
|
className,
|
|
6334
6809
|
...props
|
|
6335
6810
|
}) {
|
|
6336
|
-
return /* @__PURE__ */
|
|
6811
|
+
return /* @__PURE__ */ jsx52(
|
|
6337
6812
|
SheetPrimitive.Overlay,
|
|
6338
6813
|
{
|
|
6339
6814
|
"data-slot": "sheet-overlay",
|
|
@@ -6352,9 +6827,9 @@ function SheetContent({
|
|
|
6352
6827
|
showCloseButton = true,
|
|
6353
6828
|
...props
|
|
6354
6829
|
}) {
|
|
6355
|
-
return /* @__PURE__ */
|
|
6356
|
-
/* @__PURE__ */
|
|
6357
|
-
/* @__PURE__ */
|
|
6830
|
+
return /* @__PURE__ */ jsxs31(SheetPortal, { children: [
|
|
6831
|
+
/* @__PURE__ */ jsx52(SheetOverlay, {}),
|
|
6832
|
+
/* @__PURE__ */ jsxs31(
|
|
6358
6833
|
SheetPrimitive.Content,
|
|
6359
6834
|
{
|
|
6360
6835
|
"data-slot": "sheet-content",
|
|
@@ -6369,9 +6844,9 @@ function SheetContent({
|
|
|
6369
6844
|
...props,
|
|
6370
6845
|
children: [
|
|
6371
6846
|
children,
|
|
6372
|
-
showCloseButton && /* @__PURE__ */
|
|
6373
|
-
/* @__PURE__ */
|
|
6374
|
-
/* @__PURE__ */
|
|
6847
|
+
showCloseButton && /* @__PURE__ */ jsxs31(SheetPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
|
|
6848
|
+
/* @__PURE__ */ jsx52(XIcon4, { className: "size-4" }),
|
|
6849
|
+
/* @__PURE__ */ jsx52("span", { className: "sr-only", children: "Close" })
|
|
6375
6850
|
] })
|
|
6376
6851
|
]
|
|
6377
6852
|
}
|
|
@@ -6379,7 +6854,7 @@ function SheetContent({
|
|
|
6379
6854
|
] });
|
|
6380
6855
|
}
|
|
6381
6856
|
function SheetHeader({ className, ...props }) {
|
|
6382
|
-
return /* @__PURE__ */
|
|
6857
|
+
return /* @__PURE__ */ jsx52(
|
|
6383
6858
|
"div",
|
|
6384
6859
|
{
|
|
6385
6860
|
"data-slot": "sheet-header",
|
|
@@ -6389,7 +6864,7 @@ function SheetHeader({ className, ...props }) {
|
|
|
6389
6864
|
);
|
|
6390
6865
|
}
|
|
6391
6866
|
function SheetFooter({ className, ...props }) {
|
|
6392
|
-
return /* @__PURE__ */
|
|
6867
|
+
return /* @__PURE__ */ jsx52(
|
|
6393
6868
|
"div",
|
|
6394
6869
|
{
|
|
6395
6870
|
"data-slot": "sheet-footer",
|
|
@@ -6402,7 +6877,7 @@ function SheetTitle({
|
|
|
6402
6877
|
className,
|
|
6403
6878
|
...props
|
|
6404
6879
|
}) {
|
|
6405
|
-
return /* @__PURE__ */
|
|
6880
|
+
return /* @__PURE__ */ jsx52(
|
|
6406
6881
|
SheetPrimitive.Title,
|
|
6407
6882
|
{
|
|
6408
6883
|
"data-slot": "sheet-title",
|
|
@@ -6415,7 +6890,7 @@ function SheetDescription({
|
|
|
6415
6890
|
className,
|
|
6416
6891
|
...props
|
|
6417
6892
|
}) {
|
|
6418
|
-
return /* @__PURE__ */
|
|
6893
|
+
return /* @__PURE__ */ jsx52(
|
|
6419
6894
|
SheetPrimitive.Description,
|
|
6420
6895
|
{
|
|
6421
6896
|
"data-slot": "sheet-description",
|
|
@@ -6426,15 +6901,15 @@ function SheetDescription({
|
|
|
6426
6901
|
}
|
|
6427
6902
|
|
|
6428
6903
|
// src/components/ui/sidebar.tsx
|
|
6429
|
-
import { Slot as
|
|
6430
|
-
import { cva as
|
|
6904
|
+
import { Slot as Slot7 } from "@radix-ui/react-slot";
|
|
6905
|
+
import { cva as cva14 } from "class-variance-authority";
|
|
6431
6906
|
import { PanelLeftIcon } from "lucide-react";
|
|
6432
|
-
import * as
|
|
6907
|
+
import * as React53 from "react";
|
|
6433
6908
|
|
|
6434
6909
|
// src/components/ui/skeleton.tsx
|
|
6435
|
-
import { jsx as
|
|
6910
|
+
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
6436
6911
|
function Skeleton({ className, ...props }) {
|
|
6437
|
-
return /* @__PURE__ */
|
|
6912
|
+
return /* @__PURE__ */ jsx53(
|
|
6438
6913
|
"div",
|
|
6439
6914
|
{
|
|
6440
6915
|
"data-slot": "skeleton",
|
|
@@ -6447,13 +6922,13 @@ function Skeleton({ className, ...props }) {
|
|
|
6447
6922
|
// src/components/ui/tooltip.tsx
|
|
6448
6923
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
6449
6924
|
import { X as X5 } from "lucide-react";
|
|
6450
|
-
import * as
|
|
6451
|
-
import { jsx as
|
|
6925
|
+
import * as React52 from "react";
|
|
6926
|
+
import { jsx as jsx54, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
6452
6927
|
function TooltipProvider({
|
|
6453
6928
|
delayDuration = 0,
|
|
6454
6929
|
...props
|
|
6455
6930
|
}) {
|
|
6456
|
-
return /* @__PURE__ */
|
|
6931
|
+
return /* @__PURE__ */ jsx54(
|
|
6457
6932
|
TooltipPrimitive.Provider,
|
|
6458
6933
|
{
|
|
6459
6934
|
"data-slot": "tooltip-provider",
|
|
@@ -6462,20 +6937,20 @@ function TooltipProvider({
|
|
|
6462
6937
|
}
|
|
6463
6938
|
);
|
|
6464
6939
|
}
|
|
6465
|
-
var TooltipCloseContext =
|
|
6940
|
+
var TooltipCloseContext = React52.createContext(null);
|
|
6466
6941
|
function Tooltip2({
|
|
6467
6942
|
persistent = false,
|
|
6468
6943
|
...props
|
|
6469
6944
|
}) {
|
|
6470
|
-
const [open, setOpen] =
|
|
6945
|
+
const [open, setOpen] = React52.useState(props.defaultOpen ?? false);
|
|
6471
6946
|
if (!persistent) {
|
|
6472
|
-
return /* @__PURE__ */
|
|
6947
|
+
return /* @__PURE__ */ jsx54(TooltipProvider, { children: /* @__PURE__ */ jsx54(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
|
|
6473
6948
|
}
|
|
6474
6949
|
const close = () => {
|
|
6475
6950
|
setOpen(false);
|
|
6476
6951
|
props.onOpenChange?.(false);
|
|
6477
6952
|
};
|
|
6478
|
-
return /* @__PURE__ */
|
|
6953
|
+
return /* @__PURE__ */ jsx54(TooltipProvider, { children: /* @__PURE__ */ jsx54(TooltipCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx54(
|
|
6479
6954
|
TooltipPrimitive.Root,
|
|
6480
6955
|
{
|
|
6481
6956
|
"data-slot": "tooltip",
|
|
@@ -6493,7 +6968,7 @@ function Tooltip2({
|
|
|
6493
6968
|
function TooltipTrigger({
|
|
6494
6969
|
...props
|
|
6495
6970
|
}) {
|
|
6496
|
-
return /* @__PURE__ */
|
|
6971
|
+
return /* @__PURE__ */ jsx54(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
6497
6972
|
}
|
|
6498
6973
|
function TooltipContent({
|
|
6499
6974
|
className,
|
|
@@ -6503,7 +6978,7 @@ function TooltipContent({
|
|
|
6503
6978
|
children,
|
|
6504
6979
|
...props
|
|
6505
6980
|
}) {
|
|
6506
|
-
return /* @__PURE__ */
|
|
6981
|
+
return /* @__PURE__ */ jsx54(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs32(
|
|
6507
6982
|
TooltipPrimitive.Content,
|
|
6508
6983
|
{
|
|
6509
6984
|
"data-slot": "tooltip-content",
|
|
@@ -6515,7 +6990,7 @@ function TooltipContent({
|
|
|
6515
6990
|
...props,
|
|
6516
6991
|
children: [
|
|
6517
6992
|
children,
|
|
6518
|
-
!hideArrow && /* @__PURE__ */
|
|
6993
|
+
!hideArrow && /* @__PURE__ */ jsx54(
|
|
6519
6994
|
TooltipPrimitive.Arrow,
|
|
6520
6995
|
{
|
|
6521
6996
|
className: cn(
|
|
@@ -6556,13 +7031,13 @@ function RichTooltipContent({
|
|
|
6556
7031
|
hideArrow = false,
|
|
6557
7032
|
...props
|
|
6558
7033
|
}) {
|
|
6559
|
-
const close =
|
|
7034
|
+
const close = React52.useContext(TooltipCloseContext);
|
|
6560
7035
|
const handleDismiss = () => {
|
|
6561
7036
|
close?.();
|
|
6562
7037
|
onDismiss?.();
|
|
6563
7038
|
};
|
|
6564
7039
|
const styles = richTooltipVariants[variant] ?? richTooltipVariants.dark;
|
|
6565
|
-
return /* @__PURE__ */
|
|
7040
|
+
return /* @__PURE__ */ jsx54(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs32(
|
|
6566
7041
|
TooltipPrimitive.Content,
|
|
6567
7042
|
{
|
|
6568
7043
|
"data-slot": "rich-tooltip-content",
|
|
@@ -6576,7 +7051,7 @@ function RichTooltipContent({
|
|
|
6576
7051
|
},
|
|
6577
7052
|
...props,
|
|
6578
7053
|
children: [
|
|
6579
|
-
/* @__PURE__ */
|
|
7054
|
+
/* @__PURE__ */ jsxs32(
|
|
6580
7055
|
"div",
|
|
6581
7056
|
{
|
|
6582
7057
|
className: cn(
|
|
@@ -6586,12 +7061,12 @@ function RichTooltipContent({
|
|
|
6586
7061
|
surfaceClassName
|
|
6587
7062
|
),
|
|
6588
7063
|
children: [
|
|
6589
|
-
icon && /* @__PURE__ */
|
|
6590
|
-
/* @__PURE__ */
|
|
6591
|
-
heading && /* @__PURE__ */
|
|
6592
|
-
/* @__PURE__ */
|
|
7064
|
+
icon && /* @__PURE__ */ jsx54("span", { className: "flex items-center justify-center shrink-0 size-5 [&_svg]:size-5", children: icon }),
|
|
7065
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex flex-1 flex-col gap-2 min-w-0", children: [
|
|
7066
|
+
heading && /* @__PURE__ */ jsx54("p", { className: "font-semibold text-sm leading-5", children: heading }),
|
|
7067
|
+
/* @__PURE__ */ jsx54("div", { className: "font-normal text-sm leading-5", children })
|
|
6593
7068
|
] }),
|
|
6594
|
-
dismissible && /* @__PURE__ */
|
|
7069
|
+
dismissible && /* @__PURE__ */ jsx54(
|
|
6595
7070
|
"button",
|
|
6596
7071
|
{
|
|
6597
7072
|
type: "button",
|
|
@@ -6601,13 +7076,13 @@ function RichTooltipContent({
|
|
|
6601
7076
|
styles.mutedText
|
|
6602
7077
|
),
|
|
6603
7078
|
"aria-label": "Dismiss",
|
|
6604
|
-
children: /* @__PURE__ */
|
|
7079
|
+
children: /* @__PURE__ */ jsx54(X5, { className: "size-3.5" })
|
|
6605
7080
|
}
|
|
6606
7081
|
)
|
|
6607
7082
|
]
|
|
6608
7083
|
}
|
|
6609
7084
|
),
|
|
6610
|
-
!hideArrow && /* @__PURE__ */
|
|
7085
|
+
!hideArrow && /* @__PURE__ */ jsx54(
|
|
6611
7086
|
TooltipPrimitive.Arrow,
|
|
6612
7087
|
{
|
|
6613
7088
|
width: 16,
|
|
@@ -6621,16 +7096,16 @@ function RichTooltipContent({
|
|
|
6621
7096
|
}
|
|
6622
7097
|
|
|
6623
7098
|
// src/components/ui/sidebar.tsx
|
|
6624
|
-
import { jsx as
|
|
7099
|
+
import { jsx as jsx55, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
6625
7100
|
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
6626
7101
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
6627
7102
|
var SIDEBAR_WIDTH = "18rem";
|
|
6628
7103
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
6629
7104
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
6630
7105
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
6631
|
-
var SidebarContext =
|
|
7106
|
+
var SidebarContext = React53.createContext(null);
|
|
6632
7107
|
function useSidebar() {
|
|
6633
|
-
const context =
|
|
7108
|
+
const context = React53.useContext(SidebarContext);
|
|
6634
7109
|
if (!context) {
|
|
6635
7110
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
6636
7111
|
}
|
|
@@ -6646,10 +7121,10 @@ function SidebarProvider({
|
|
|
6646
7121
|
...props
|
|
6647
7122
|
}) {
|
|
6648
7123
|
const isMobile = useIsMobile();
|
|
6649
|
-
const [openMobile, setOpenMobile] =
|
|
6650
|
-
const [_open, _setOpen] =
|
|
7124
|
+
const [openMobile, setOpenMobile] = React53.useState(false);
|
|
7125
|
+
const [_open, _setOpen] = React53.useState(defaultOpen);
|
|
6651
7126
|
const open = openProp ?? _open;
|
|
6652
|
-
const setOpen =
|
|
7127
|
+
const setOpen = React53.useCallback(
|
|
6653
7128
|
(value) => {
|
|
6654
7129
|
const openState = typeof value === "function" ? value(open) : value;
|
|
6655
7130
|
if (setOpenProp) {
|
|
@@ -6661,10 +7136,10 @@ function SidebarProvider({
|
|
|
6661
7136
|
},
|
|
6662
7137
|
[setOpenProp, open]
|
|
6663
7138
|
);
|
|
6664
|
-
const toggleSidebar =
|
|
7139
|
+
const toggleSidebar = React53.useCallback(() => {
|
|
6665
7140
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
6666
7141
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
6667
|
-
|
|
7142
|
+
React53.useEffect(() => {
|
|
6668
7143
|
const handleKeyDown = (event) => {
|
|
6669
7144
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
6670
7145
|
event.preventDefault();
|
|
@@ -6675,7 +7150,7 @@ function SidebarProvider({
|
|
|
6675
7150
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
6676
7151
|
}, [toggleSidebar]);
|
|
6677
7152
|
const state = open ? "expanded" : "collapsed";
|
|
6678
|
-
const contextValue =
|
|
7153
|
+
const contextValue = React53.useMemo(
|
|
6679
7154
|
() => ({
|
|
6680
7155
|
state,
|
|
6681
7156
|
open,
|
|
@@ -6687,7 +7162,7 @@ function SidebarProvider({
|
|
|
6687
7162
|
}),
|
|
6688
7163
|
[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
|
|
6689
7164
|
);
|
|
6690
|
-
return /* @__PURE__ */
|
|
7165
|
+
return /* @__PURE__ */ jsx55(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx55(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx55(
|
|
6691
7166
|
"div",
|
|
6692
7167
|
{
|
|
6693
7168
|
"data-slot": "sidebar-wrapper",
|
|
@@ -6715,7 +7190,7 @@ function Sidebar({
|
|
|
6715
7190
|
}) {
|
|
6716
7191
|
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
6717
7192
|
if (collapsible === "none") {
|
|
6718
|
-
return /* @__PURE__ */
|
|
7193
|
+
return /* @__PURE__ */ jsx55(
|
|
6719
7194
|
"div",
|
|
6720
7195
|
{
|
|
6721
7196
|
"data-slot": "sidebar",
|
|
@@ -6729,7 +7204,7 @@ function Sidebar({
|
|
|
6729
7204
|
);
|
|
6730
7205
|
}
|
|
6731
7206
|
if (isMobile) {
|
|
6732
|
-
return /* @__PURE__ */
|
|
7207
|
+
return /* @__PURE__ */ jsx55(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs33(
|
|
6733
7208
|
SheetContent,
|
|
6734
7209
|
{
|
|
6735
7210
|
"data-sidebar": "sidebar",
|
|
@@ -6741,16 +7216,16 @@ function Sidebar({
|
|
|
6741
7216
|
},
|
|
6742
7217
|
side,
|
|
6743
7218
|
children: [
|
|
6744
|
-
/* @__PURE__ */
|
|
6745
|
-
/* @__PURE__ */
|
|
6746
|
-
/* @__PURE__ */
|
|
7219
|
+
/* @__PURE__ */ jsxs33(SheetHeader, { className: "sr-only", children: [
|
|
7220
|
+
/* @__PURE__ */ jsx55(SheetTitle, { children: "Sidebar" }),
|
|
7221
|
+
/* @__PURE__ */ jsx55(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
6747
7222
|
] }),
|
|
6748
|
-
/* @__PURE__ */
|
|
7223
|
+
/* @__PURE__ */ jsx55("div", { className: "flex h-full w-full flex-col", children })
|
|
6749
7224
|
]
|
|
6750
7225
|
}
|
|
6751
7226
|
) });
|
|
6752
7227
|
}
|
|
6753
|
-
return /* @__PURE__ */
|
|
7228
|
+
return /* @__PURE__ */ jsxs33(
|
|
6754
7229
|
"div",
|
|
6755
7230
|
{
|
|
6756
7231
|
className: "group peer text-sidebar-foreground hidden md:block",
|
|
@@ -6760,7 +7235,7 @@ function Sidebar({
|
|
|
6760
7235
|
"data-side": side,
|
|
6761
7236
|
"data-slot": "sidebar",
|
|
6762
7237
|
children: [
|
|
6763
|
-
/* @__PURE__ */
|
|
7238
|
+
/* @__PURE__ */ jsx55(
|
|
6764
7239
|
"div",
|
|
6765
7240
|
{
|
|
6766
7241
|
"data-slot": "sidebar-gap",
|
|
@@ -6772,7 +7247,7 @@ function Sidebar({
|
|
|
6772
7247
|
)
|
|
6773
7248
|
}
|
|
6774
7249
|
),
|
|
6775
|
-
/* @__PURE__ */
|
|
7250
|
+
/* @__PURE__ */ jsx55(
|
|
6776
7251
|
"div",
|
|
6777
7252
|
{
|
|
6778
7253
|
"data-slot": "sidebar-container",
|
|
@@ -6784,7 +7259,7 @@ function Sidebar({
|
|
|
6784
7259
|
className
|
|
6785
7260
|
),
|
|
6786
7261
|
...props,
|
|
6787
|
-
children: /* @__PURE__ */
|
|
7262
|
+
children: /* @__PURE__ */ jsx55(
|
|
6788
7263
|
"div",
|
|
6789
7264
|
{
|
|
6790
7265
|
"data-sidebar": "sidebar",
|
|
@@ -6805,7 +7280,7 @@ function SidebarTrigger({
|
|
|
6805
7280
|
...props
|
|
6806
7281
|
}) {
|
|
6807
7282
|
const { toggleSidebar } = useSidebar();
|
|
6808
|
-
return /* @__PURE__ */
|
|
7283
|
+
return /* @__PURE__ */ jsxs33(
|
|
6809
7284
|
Button,
|
|
6810
7285
|
{
|
|
6811
7286
|
"data-sidebar": "trigger",
|
|
@@ -6819,15 +7294,15 @@ function SidebarTrigger({
|
|
|
6819
7294
|
},
|
|
6820
7295
|
...props,
|
|
6821
7296
|
children: [
|
|
6822
|
-
/* @__PURE__ */
|
|
6823
|
-
/* @__PURE__ */
|
|
7297
|
+
/* @__PURE__ */ jsx55(PanelLeftIcon, {}),
|
|
7298
|
+
/* @__PURE__ */ jsx55("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
6824
7299
|
]
|
|
6825
7300
|
}
|
|
6826
7301
|
);
|
|
6827
7302
|
}
|
|
6828
7303
|
function SidebarRail({ className, ...props }) {
|
|
6829
7304
|
const { toggleSidebar } = useSidebar();
|
|
6830
|
-
return /* @__PURE__ */
|
|
7305
|
+
return /* @__PURE__ */ jsx55(
|
|
6831
7306
|
"button",
|
|
6832
7307
|
{
|
|
6833
7308
|
"data-sidebar": "rail",
|
|
@@ -6850,7 +7325,7 @@ function SidebarRail({ className, ...props }) {
|
|
|
6850
7325
|
);
|
|
6851
7326
|
}
|
|
6852
7327
|
function SidebarInset({ className, ...props }) {
|
|
6853
|
-
return /* @__PURE__ */
|
|
7328
|
+
return /* @__PURE__ */ jsx55(
|
|
6854
7329
|
"main",
|
|
6855
7330
|
{
|
|
6856
7331
|
"data-slot": "sidebar-inset",
|
|
@@ -6867,7 +7342,7 @@ function SidebarInput({
|
|
|
6867
7342
|
className,
|
|
6868
7343
|
...props
|
|
6869
7344
|
}) {
|
|
6870
|
-
return /* @__PURE__ */
|
|
7345
|
+
return /* @__PURE__ */ jsx55(
|
|
6871
7346
|
Input,
|
|
6872
7347
|
{
|
|
6873
7348
|
"data-slot": "sidebar-input",
|
|
@@ -6878,7 +7353,7 @@ function SidebarInput({
|
|
|
6878
7353
|
);
|
|
6879
7354
|
}
|
|
6880
7355
|
function SidebarHeader({ className, ...props }) {
|
|
6881
|
-
return /* @__PURE__ */
|
|
7356
|
+
return /* @__PURE__ */ jsx55(
|
|
6882
7357
|
"div",
|
|
6883
7358
|
{
|
|
6884
7359
|
"data-slot": "sidebar-header",
|
|
@@ -6889,7 +7364,7 @@ function SidebarHeader({ className, ...props }) {
|
|
|
6889
7364
|
);
|
|
6890
7365
|
}
|
|
6891
7366
|
function SidebarFooter({ className, ...props }) {
|
|
6892
|
-
return /* @__PURE__ */
|
|
7367
|
+
return /* @__PURE__ */ jsx55(
|
|
6893
7368
|
"div",
|
|
6894
7369
|
{
|
|
6895
7370
|
"data-slot": "sidebar-footer",
|
|
@@ -6903,7 +7378,7 @@ function SidebarSeparator({
|
|
|
6903
7378
|
className,
|
|
6904
7379
|
...props
|
|
6905
7380
|
}) {
|
|
6906
|
-
return /* @__PURE__ */
|
|
7381
|
+
return /* @__PURE__ */ jsx55(
|
|
6907
7382
|
Separator5,
|
|
6908
7383
|
{
|
|
6909
7384
|
"data-slot": "sidebar-separator",
|
|
@@ -6914,7 +7389,7 @@ function SidebarSeparator({
|
|
|
6914
7389
|
);
|
|
6915
7390
|
}
|
|
6916
7391
|
function SidebarContent({ className, ...props }) {
|
|
6917
|
-
return /* @__PURE__ */
|
|
7392
|
+
return /* @__PURE__ */ jsx55(
|
|
6918
7393
|
"div",
|
|
6919
7394
|
{
|
|
6920
7395
|
"data-slot": "sidebar-content",
|
|
@@ -6928,7 +7403,7 @@ function SidebarContent({ className, ...props }) {
|
|
|
6928
7403
|
);
|
|
6929
7404
|
}
|
|
6930
7405
|
function SidebarGroup({ className, ...props }) {
|
|
6931
|
-
return /* @__PURE__ */
|
|
7406
|
+
return /* @__PURE__ */ jsx55(
|
|
6932
7407
|
"div",
|
|
6933
7408
|
{
|
|
6934
7409
|
"data-slot": "sidebar-group",
|
|
@@ -6943,8 +7418,8 @@ function SidebarGroupLabel({
|
|
|
6943
7418
|
asChild = false,
|
|
6944
7419
|
...props
|
|
6945
7420
|
}) {
|
|
6946
|
-
const Comp = asChild ?
|
|
6947
|
-
return /* @__PURE__ */
|
|
7421
|
+
const Comp = asChild ? Slot7 : "div";
|
|
7422
|
+
return /* @__PURE__ */ jsx55(
|
|
6948
7423
|
Comp,
|
|
6949
7424
|
{
|
|
6950
7425
|
"data-slot": "sidebar-group-label",
|
|
@@ -6963,8 +7438,8 @@ function SidebarGroupAction({
|
|
|
6963
7438
|
asChild = false,
|
|
6964
7439
|
...props
|
|
6965
7440
|
}) {
|
|
6966
|
-
const Comp = asChild ?
|
|
6967
|
-
return /* @__PURE__ */
|
|
7441
|
+
const Comp = asChild ? Slot7 : "button";
|
|
7442
|
+
return /* @__PURE__ */ jsx55(
|
|
6968
7443
|
Comp,
|
|
6969
7444
|
{
|
|
6970
7445
|
"data-slot": "sidebar-group-action",
|
|
@@ -6984,7 +7459,7 @@ function SidebarGroupContent({
|
|
|
6984
7459
|
className,
|
|
6985
7460
|
...props
|
|
6986
7461
|
}) {
|
|
6987
|
-
return /* @__PURE__ */
|
|
7462
|
+
return /* @__PURE__ */ jsx55(
|
|
6988
7463
|
"div",
|
|
6989
7464
|
{
|
|
6990
7465
|
"data-slot": "sidebar-group-content",
|
|
@@ -6995,7 +7470,7 @@ function SidebarGroupContent({
|
|
|
6995
7470
|
);
|
|
6996
7471
|
}
|
|
6997
7472
|
function SidebarMenu({ className, ...props }) {
|
|
6998
|
-
return /* @__PURE__ */
|
|
7473
|
+
return /* @__PURE__ */ jsx55(
|
|
6999
7474
|
"ul",
|
|
7000
7475
|
{
|
|
7001
7476
|
"data-slot": "sidebar-menu",
|
|
@@ -7006,7 +7481,7 @@ function SidebarMenu({ className, ...props }) {
|
|
|
7006
7481
|
);
|
|
7007
7482
|
}
|
|
7008
7483
|
function SidebarMenuItem({ className, ...props }) {
|
|
7009
|
-
return /* @__PURE__ */
|
|
7484
|
+
return /* @__PURE__ */ jsx55(
|
|
7010
7485
|
"li",
|
|
7011
7486
|
{
|
|
7012
7487
|
"data-slot": "sidebar-menu-item",
|
|
@@ -7016,7 +7491,7 @@ function SidebarMenuItem({ className, ...props }) {
|
|
|
7016
7491
|
}
|
|
7017
7492
|
);
|
|
7018
7493
|
}
|
|
7019
|
-
var sidebarMenuButtonVariants =
|
|
7494
|
+
var sidebarMenuButtonVariants = cva14(
|
|
7020
7495
|
"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground 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 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
|
|
7021
7496
|
{
|
|
7022
7497
|
variants: {
|
|
@@ -7045,9 +7520,9 @@ function SidebarMenuButton({
|
|
|
7045
7520
|
className,
|
|
7046
7521
|
...props
|
|
7047
7522
|
}) {
|
|
7048
|
-
const Comp = asChild ?
|
|
7523
|
+
const Comp = asChild ? Slot7 : "button";
|
|
7049
7524
|
const { isMobile, state } = useSidebar();
|
|
7050
|
-
const button = /* @__PURE__ */
|
|
7525
|
+
const button = /* @__PURE__ */ jsx55(
|
|
7051
7526
|
Comp,
|
|
7052
7527
|
{
|
|
7053
7528
|
"data-slot": "sidebar-menu-button",
|
|
@@ -7066,9 +7541,9 @@ function SidebarMenuButton({
|
|
|
7066
7541
|
children: tooltip
|
|
7067
7542
|
};
|
|
7068
7543
|
}
|
|
7069
|
-
return /* @__PURE__ */
|
|
7070
|
-
/* @__PURE__ */
|
|
7071
|
-
/* @__PURE__ */
|
|
7544
|
+
return /* @__PURE__ */ jsxs33(Tooltip2, { children: [
|
|
7545
|
+
/* @__PURE__ */ jsx55(TooltipTrigger, { asChild: true, children: button }),
|
|
7546
|
+
/* @__PURE__ */ jsx55(
|
|
7072
7547
|
TooltipContent,
|
|
7073
7548
|
{
|
|
7074
7549
|
side: "right",
|
|
@@ -7085,8 +7560,8 @@ function SidebarMenuAction({
|
|
|
7085
7560
|
showOnHover = false,
|
|
7086
7561
|
...props
|
|
7087
7562
|
}) {
|
|
7088
|
-
const Comp = asChild ?
|
|
7089
|
-
return /* @__PURE__ */
|
|
7563
|
+
const Comp = asChild ? Slot7 : "button";
|
|
7564
|
+
return /* @__PURE__ */ jsx55(
|
|
7090
7565
|
Comp,
|
|
7091
7566
|
{
|
|
7092
7567
|
"data-slot": "sidebar-menu-action",
|
|
@@ -7110,7 +7585,7 @@ function SidebarMenuBadge({
|
|
|
7110
7585
|
className,
|
|
7111
7586
|
...props
|
|
7112
7587
|
}) {
|
|
7113
|
-
return /* @__PURE__ */
|
|
7588
|
+
return /* @__PURE__ */ jsx55(
|
|
7114
7589
|
"div",
|
|
7115
7590
|
{
|
|
7116
7591
|
"data-slot": "sidebar-menu-badge",
|
|
@@ -7133,10 +7608,10 @@ function SidebarMenuSkeleton({
|
|
|
7133
7608
|
showIcon = false,
|
|
7134
7609
|
...props
|
|
7135
7610
|
}) {
|
|
7136
|
-
const width =
|
|
7611
|
+
const width = React53.useMemo(() => {
|
|
7137
7612
|
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
7138
7613
|
}, []);
|
|
7139
|
-
return /* @__PURE__ */
|
|
7614
|
+
return /* @__PURE__ */ jsxs33(
|
|
7140
7615
|
"div",
|
|
7141
7616
|
{
|
|
7142
7617
|
"data-slot": "sidebar-menu-skeleton",
|
|
@@ -7144,14 +7619,14 @@ function SidebarMenuSkeleton({
|
|
|
7144
7619
|
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
7145
7620
|
...props,
|
|
7146
7621
|
children: [
|
|
7147
|
-
showIcon && /* @__PURE__ */
|
|
7622
|
+
showIcon && /* @__PURE__ */ jsx55(
|
|
7148
7623
|
Skeleton,
|
|
7149
7624
|
{
|
|
7150
7625
|
className: "size-4 rounded-md",
|
|
7151
7626
|
"data-sidebar": "menu-skeleton-icon"
|
|
7152
7627
|
}
|
|
7153
7628
|
),
|
|
7154
|
-
/* @__PURE__ */
|
|
7629
|
+
/* @__PURE__ */ jsx55(
|
|
7155
7630
|
Skeleton,
|
|
7156
7631
|
{
|
|
7157
7632
|
className: "h-4 max-w-(--skeleton-width) flex-1",
|
|
@@ -7166,7 +7641,7 @@ function SidebarMenuSkeleton({
|
|
|
7166
7641
|
);
|
|
7167
7642
|
}
|
|
7168
7643
|
function SidebarMenuSub({ className, ...props }) {
|
|
7169
|
-
return /* @__PURE__ */
|
|
7644
|
+
return /* @__PURE__ */ jsx55(
|
|
7170
7645
|
"ul",
|
|
7171
7646
|
{
|
|
7172
7647
|
"data-slot": "sidebar-menu-sub",
|
|
@@ -7184,7 +7659,7 @@ function SidebarMenuSubItem({
|
|
|
7184
7659
|
className,
|
|
7185
7660
|
...props
|
|
7186
7661
|
}) {
|
|
7187
|
-
return /* @__PURE__ */
|
|
7662
|
+
return /* @__PURE__ */ jsx55(
|
|
7188
7663
|
"li",
|
|
7189
7664
|
{
|
|
7190
7665
|
"data-slot": "sidebar-menu-sub-item",
|
|
@@ -7201,8 +7676,8 @@ function SidebarMenuSubButton({
|
|
|
7201
7676
|
className,
|
|
7202
7677
|
...props
|
|
7203
7678
|
}) {
|
|
7204
|
-
const Comp = asChild ?
|
|
7205
|
-
return /* @__PURE__ */
|
|
7679
|
+
const Comp = asChild ? Slot7 : "a";
|
|
7680
|
+
return /* @__PURE__ */ jsx55(
|
|
7206
7681
|
Comp,
|
|
7207
7682
|
{
|
|
7208
7683
|
"data-slot": "sidebar-menu-sub-button",
|
|
@@ -7223,9 +7698,9 @@ function SidebarMenuSubButton({
|
|
|
7223
7698
|
}
|
|
7224
7699
|
|
|
7225
7700
|
// src/components/ui/slider.tsx
|
|
7226
|
-
import * as
|
|
7701
|
+
import * as React54 from "react";
|
|
7227
7702
|
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
7228
|
-
import { jsx as
|
|
7703
|
+
import { jsx as jsx56, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
7229
7704
|
function Slider({
|
|
7230
7705
|
className,
|
|
7231
7706
|
defaultValue,
|
|
@@ -7234,11 +7709,11 @@ function Slider({
|
|
|
7234
7709
|
max = 100,
|
|
7235
7710
|
...props
|
|
7236
7711
|
}) {
|
|
7237
|
-
const _values =
|
|
7712
|
+
const _values = React54.useMemo(
|
|
7238
7713
|
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
|
|
7239
7714
|
[value, defaultValue, min, max]
|
|
7240
7715
|
);
|
|
7241
|
-
return /* @__PURE__ */
|
|
7716
|
+
return /* @__PURE__ */ jsxs34(
|
|
7242
7717
|
SliderPrimitive.Root,
|
|
7243
7718
|
{
|
|
7244
7719
|
"data-slot": "slider",
|
|
@@ -7252,14 +7727,14 @@ function Slider({
|
|
|
7252
7727
|
),
|
|
7253
7728
|
...props,
|
|
7254
7729
|
children: [
|
|
7255
|
-
/* @__PURE__ */
|
|
7730
|
+
/* @__PURE__ */ jsx56(
|
|
7256
7731
|
SliderPrimitive.Track,
|
|
7257
7732
|
{
|
|
7258
7733
|
"data-slot": "slider-track",
|
|
7259
7734
|
className: cn(
|
|
7260
7735
|
"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
|
|
7261
7736
|
),
|
|
7262
|
-
children: /* @__PURE__ */
|
|
7737
|
+
children: /* @__PURE__ */ jsx56(
|
|
7263
7738
|
SliderPrimitive.Range,
|
|
7264
7739
|
{
|
|
7265
7740
|
"data-slot": "slider-range",
|
|
@@ -7270,7 +7745,7 @@ function Slider({
|
|
|
7270
7745
|
)
|
|
7271
7746
|
}
|
|
7272
7747
|
),
|
|
7273
|
-
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */
|
|
7748
|
+
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx56(
|
|
7274
7749
|
SliderPrimitive.Thumb,
|
|
7275
7750
|
{
|
|
7276
7751
|
"data-slot": "slider-thumb",
|
|
@@ -7287,9 +7762,9 @@ function Slider({
|
|
|
7287
7762
|
import "react";
|
|
7288
7763
|
|
|
7289
7764
|
// src/components/ui/useMediaQuery.ts
|
|
7290
|
-
import * as
|
|
7765
|
+
import * as React55 from "react";
|
|
7291
7766
|
function useMediaQuery(query) {
|
|
7292
|
-
const subscribe =
|
|
7767
|
+
const subscribe = React55.useCallback(
|
|
7293
7768
|
(onStoreChange) => {
|
|
7294
7769
|
const list = window.matchMedia(query);
|
|
7295
7770
|
if (list.addEventListener) {
|
|
@@ -7301,19 +7776,19 @@ function useMediaQuery(query) {
|
|
|
7301
7776
|
},
|
|
7302
7777
|
[query]
|
|
7303
7778
|
);
|
|
7304
|
-
const getSnapshot =
|
|
7779
|
+
const getSnapshot = React55.useCallback(
|
|
7305
7780
|
() => window.matchMedia(query).matches,
|
|
7306
7781
|
[query]
|
|
7307
7782
|
);
|
|
7308
|
-
const getServerSnapshot =
|
|
7309
|
-
return
|
|
7783
|
+
const getServerSnapshot = React55.useCallback(() => false, []);
|
|
7784
|
+
return React55.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
7310
7785
|
}
|
|
7311
7786
|
|
|
7312
7787
|
// src/components/ui/smart-dialog-drawer.tsx
|
|
7313
|
-
import { Fragment as Fragment4, jsx as
|
|
7788
|
+
import { Fragment as Fragment4, jsx as jsx57 } from "react/jsx-runtime";
|
|
7314
7789
|
var SmartDialog = ({ children, ...props }) => {
|
|
7315
7790
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
7316
|
-
return isMobile ? /* @__PURE__ */
|
|
7791
|
+
return isMobile ? /* @__PURE__ */ jsx57(Drawer, { ...props, children }) : /* @__PURE__ */ jsx57(Dialog, { ...props, children });
|
|
7317
7792
|
};
|
|
7318
7793
|
var SmartDialogContent = ({
|
|
7319
7794
|
children,
|
|
@@ -7323,7 +7798,7 @@ var SmartDialogContent = ({
|
|
|
7323
7798
|
...props
|
|
7324
7799
|
}) => {
|
|
7325
7800
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
7326
|
-
return isMobile ? /* @__PURE__ */
|
|
7801
|
+
return isMobile ? /* @__PURE__ */ jsx57(
|
|
7327
7802
|
DrawerContent,
|
|
7328
7803
|
{
|
|
7329
7804
|
...props,
|
|
@@ -7332,7 +7807,7 @@ var SmartDialogContent = ({
|
|
|
7332
7807
|
showCloseButton: showCloseButton ?? true,
|
|
7333
7808
|
children
|
|
7334
7809
|
}
|
|
7335
|
-
) : /* @__PURE__ */
|
|
7810
|
+
) : /* @__PURE__ */ jsx57(
|
|
7336
7811
|
DialogContent,
|
|
7337
7812
|
{
|
|
7338
7813
|
...props,
|
|
@@ -7347,49 +7822,49 @@ var SmartDialogDescription = ({
|
|
|
7347
7822
|
...props
|
|
7348
7823
|
}) => {
|
|
7349
7824
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
7350
|
-
return isMobile ? /* @__PURE__ */
|
|
7825
|
+
return isMobile ? /* @__PURE__ */ jsx57(DrawerDescription, { ...props, children }) : /* @__PURE__ */ jsx57(DialogDescription, { ...props, children });
|
|
7351
7826
|
};
|
|
7352
7827
|
var SmartDialogHeader = ({ children, ...props }) => {
|
|
7353
7828
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
7354
|
-
return isMobile ? /* @__PURE__ */
|
|
7829
|
+
return isMobile ? /* @__PURE__ */ jsx57(DrawerHeader, { ...props, children }) : /* @__PURE__ */ jsx57(DialogHeader, { ...props, children });
|
|
7355
7830
|
};
|
|
7356
7831
|
var SmartDialogTitle = ({ children, ...props }) => {
|
|
7357
7832
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
7358
|
-
return isMobile ? /* @__PURE__ */
|
|
7833
|
+
return isMobile ? /* @__PURE__ */ jsx57(DrawerTitle, { ...props, children }) : /* @__PURE__ */ jsx57(DialogTitle, { ...props, children });
|
|
7359
7834
|
};
|
|
7360
7835
|
var SmartDialogTrigger = ({
|
|
7361
7836
|
children,
|
|
7362
7837
|
...props
|
|
7363
7838
|
}) => {
|
|
7364
7839
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
7365
|
-
return isMobile ? /* @__PURE__ */
|
|
7840
|
+
return isMobile ? /* @__PURE__ */ jsx57(DrawerTrigger, { ...props, children }) : /* @__PURE__ */ jsx57(DialogTrigger, { ...props, children });
|
|
7366
7841
|
};
|
|
7367
7842
|
var SmartDialogFooter = ({ children, ...props }) => {
|
|
7368
7843
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
7369
|
-
return isMobile ? /* @__PURE__ */
|
|
7844
|
+
return isMobile ? /* @__PURE__ */ jsx57(DrawerFooter, { ...props, children }) : /* @__PURE__ */ jsx57(DialogFooter, { ...props, children });
|
|
7370
7845
|
};
|
|
7371
7846
|
var SmartDialogClose = ({ children, ...props }) => {
|
|
7372
7847
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
7373
|
-
return isMobile ? /* @__PURE__ */
|
|
7848
|
+
return isMobile ? /* @__PURE__ */ jsx57(Fragment4, { children: /* @__PURE__ */ jsx57(DrawerClose, { ...props, children }) }) : /* @__PURE__ */ jsx57(DialogClose, { ...props, children });
|
|
7374
7849
|
};
|
|
7375
7850
|
|
|
7376
7851
|
// src/components/ui/sonner.tsx
|
|
7377
7852
|
import { CircleCheck, Info, TriangleAlert } from "lucide-react";
|
|
7378
7853
|
import { useTheme } from "next-themes";
|
|
7379
7854
|
import { Toaster as Sonner, toast } from "sonner";
|
|
7380
|
-
import { jsx as
|
|
7381
|
-
var iconWrapper = (icon) => /* @__PURE__ */
|
|
7855
|
+
import { jsx as jsx58 } from "react/jsx-runtime";
|
|
7856
|
+
var iconWrapper = (icon) => /* @__PURE__ */ jsx58("span", { className: "flex items-center justify-center shrink-0 size-5 [&_svg]:size-5", children: icon });
|
|
7382
7857
|
var Toaster = ({ ...props }) => {
|
|
7383
7858
|
const { theme = "system" } = useTheme();
|
|
7384
|
-
return /* @__PURE__ */
|
|
7859
|
+
return /* @__PURE__ */ jsx58(
|
|
7385
7860
|
Sonner,
|
|
7386
7861
|
{
|
|
7387
7862
|
theme,
|
|
7388
7863
|
className: "toaster group",
|
|
7389
7864
|
icons: {
|
|
7390
|
-
info: iconWrapper(/* @__PURE__ */
|
|
7391
|
-
error: iconWrapper(/* @__PURE__ */
|
|
7392
|
-
success: iconWrapper(/* @__PURE__ */
|
|
7865
|
+
info: iconWrapper(/* @__PURE__ */ jsx58(Info, {})),
|
|
7866
|
+
error: iconWrapper(/* @__PURE__ */ jsx58(TriangleAlert, {})),
|
|
7867
|
+
success: iconWrapper(/* @__PURE__ */ jsx58(CircleCheck, {}))
|
|
7393
7868
|
},
|
|
7394
7869
|
toastOptions: {
|
|
7395
7870
|
unstyled: true,
|
|
@@ -7413,12 +7888,12 @@ var Toaster = ({ ...props }) => {
|
|
|
7413
7888
|
// src/components/ui/switch.tsx
|
|
7414
7889
|
import * as SwitchPrimitive from "@radix-ui/react-switch";
|
|
7415
7890
|
import "react";
|
|
7416
|
-
import { jsx as
|
|
7891
|
+
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
7417
7892
|
function Switch({
|
|
7418
7893
|
className,
|
|
7419
7894
|
...props
|
|
7420
7895
|
}) {
|
|
7421
|
-
return /* @__PURE__ */
|
|
7896
|
+
return /* @__PURE__ */ jsx59(
|
|
7422
7897
|
SwitchPrimitive.Root,
|
|
7423
7898
|
{
|
|
7424
7899
|
"data-slot": "switch",
|
|
@@ -7427,7 +7902,7 @@ function Switch({
|
|
|
7427
7902
|
className
|
|
7428
7903
|
),
|
|
7429
7904
|
...props,
|
|
7430
|
-
children: /* @__PURE__ */
|
|
7905
|
+
children: /* @__PURE__ */ jsx59(
|
|
7431
7906
|
SwitchPrimitive.Thumb,
|
|
7432
7907
|
{
|
|
7433
7908
|
"data-slot": "switch-thumb",
|
|
@@ -7442,14 +7917,14 @@ function Switch({
|
|
|
7442
7917
|
|
|
7443
7918
|
// src/components/ui/table.tsx
|
|
7444
7919
|
import "react";
|
|
7445
|
-
import { jsx as
|
|
7920
|
+
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
7446
7921
|
function Table({ className, ...props }) {
|
|
7447
|
-
return /* @__PURE__ */
|
|
7922
|
+
return /* @__PURE__ */ jsx60(
|
|
7448
7923
|
"div",
|
|
7449
7924
|
{
|
|
7450
7925
|
"data-slot": "table-container",
|
|
7451
7926
|
className: "relative w-full overflow-x-auto",
|
|
7452
|
-
children: /* @__PURE__ */
|
|
7927
|
+
children: /* @__PURE__ */ jsx60(
|
|
7453
7928
|
"table",
|
|
7454
7929
|
{
|
|
7455
7930
|
"data-slot": "table",
|
|
@@ -7461,7 +7936,7 @@ function Table({ className, ...props }) {
|
|
|
7461
7936
|
);
|
|
7462
7937
|
}
|
|
7463
7938
|
function TableHeader({ className, ...props }) {
|
|
7464
|
-
return /* @__PURE__ */
|
|
7939
|
+
return /* @__PURE__ */ jsx60(
|
|
7465
7940
|
"thead",
|
|
7466
7941
|
{
|
|
7467
7942
|
"data-slot": "table-header",
|
|
@@ -7471,7 +7946,7 @@ function TableHeader({ className, ...props }) {
|
|
|
7471
7946
|
);
|
|
7472
7947
|
}
|
|
7473
7948
|
function TableBody({ className, ...props }) {
|
|
7474
|
-
return /* @__PURE__ */
|
|
7949
|
+
return /* @__PURE__ */ jsx60(
|
|
7475
7950
|
"tbody",
|
|
7476
7951
|
{
|
|
7477
7952
|
"data-slot": "table-body",
|
|
@@ -7481,7 +7956,7 @@ function TableBody({ className, ...props }) {
|
|
|
7481
7956
|
);
|
|
7482
7957
|
}
|
|
7483
7958
|
function TableFooter({ className, ...props }) {
|
|
7484
|
-
return /* @__PURE__ */
|
|
7959
|
+
return /* @__PURE__ */ jsx60(
|
|
7485
7960
|
"tfoot",
|
|
7486
7961
|
{
|
|
7487
7962
|
"data-slot": "table-footer",
|
|
@@ -7494,7 +7969,7 @@ function TableFooter({ className, ...props }) {
|
|
|
7494
7969
|
);
|
|
7495
7970
|
}
|
|
7496
7971
|
function TableRow({ className, ...props }) {
|
|
7497
|
-
return /* @__PURE__ */
|
|
7972
|
+
return /* @__PURE__ */ jsx60(
|
|
7498
7973
|
"tr",
|
|
7499
7974
|
{
|
|
7500
7975
|
"data-slot": "table-row",
|
|
@@ -7507,7 +7982,7 @@ function TableRow({ className, ...props }) {
|
|
|
7507
7982
|
);
|
|
7508
7983
|
}
|
|
7509
7984
|
function TableHead({ className, ...props }) {
|
|
7510
|
-
return /* @__PURE__ */
|
|
7985
|
+
return /* @__PURE__ */ jsx60(
|
|
7511
7986
|
"th",
|
|
7512
7987
|
{
|
|
7513
7988
|
"data-slot": "table-head",
|
|
@@ -7520,7 +7995,7 @@ function TableHead({ className, ...props }) {
|
|
|
7520
7995
|
);
|
|
7521
7996
|
}
|
|
7522
7997
|
function TableCell({ className, ...props }) {
|
|
7523
|
-
return /* @__PURE__ */
|
|
7998
|
+
return /* @__PURE__ */ jsx60(
|
|
7524
7999
|
"td",
|
|
7525
8000
|
{
|
|
7526
8001
|
"data-slot": "table-cell",
|
|
@@ -7536,7 +8011,7 @@ function TableCaption({
|
|
|
7536
8011
|
className,
|
|
7537
8012
|
...props
|
|
7538
8013
|
}) {
|
|
7539
|
-
return /* @__PURE__ */
|
|
8014
|
+
return /* @__PURE__ */ jsx60(
|
|
7540
8015
|
"caption",
|
|
7541
8016
|
{
|
|
7542
8017
|
"data-slot": "table-caption",
|
|
@@ -7548,19 +8023,19 @@ function TableCaption({
|
|
|
7548
8023
|
|
|
7549
8024
|
// src/components/ui/tabs.tsx
|
|
7550
8025
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
7551
|
-
import { cva as
|
|
7552
|
-
import * as
|
|
7553
|
-
import { jsx as
|
|
7554
|
-
var TabsContext =
|
|
8026
|
+
import { cva as cva15 } from "class-variance-authority";
|
|
8027
|
+
import * as React59 from "react";
|
|
8028
|
+
import { jsx as jsx61, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
8029
|
+
var TabsContext = React59.createContext({
|
|
7555
8030
|
orientation: "horizontal"
|
|
7556
8031
|
});
|
|
7557
8032
|
function useTabIndicator(listRef, orientation) {
|
|
7558
|
-
const [style, setStyle] =
|
|
8033
|
+
const [style, setStyle] = React59.useState({
|
|
7559
8034
|
position: "absolute",
|
|
7560
8035
|
opacity: 0
|
|
7561
8036
|
});
|
|
7562
|
-
const isFirstMeasurement =
|
|
7563
|
-
const measure =
|
|
8037
|
+
const isFirstMeasurement = React59.useRef(true);
|
|
8038
|
+
const measure = React59.useCallback(() => {
|
|
7564
8039
|
const list = listRef.current;
|
|
7565
8040
|
if (!list) return;
|
|
7566
8041
|
requestAnimationFrame(() => {
|
|
@@ -7601,7 +8076,7 @@ function useTabIndicator(listRef, orientation) {
|
|
|
7601
8076
|
}
|
|
7602
8077
|
});
|
|
7603
8078
|
}, [listRef, orientation]);
|
|
7604
|
-
|
|
8079
|
+
React59.useEffect(() => {
|
|
7605
8080
|
const list = listRef.current;
|
|
7606
8081
|
if (!list) return;
|
|
7607
8082
|
measure();
|
|
@@ -7630,11 +8105,11 @@ function Tabs({
|
|
|
7630
8105
|
orientation = "horizontal",
|
|
7631
8106
|
...props
|
|
7632
8107
|
}) {
|
|
7633
|
-
const ctx =
|
|
8108
|
+
const ctx = React59.useMemo(
|
|
7634
8109
|
() => ({ orientation: orientation ?? "horizontal" }),
|
|
7635
8110
|
[orientation]
|
|
7636
8111
|
);
|
|
7637
|
-
return /* @__PURE__ */
|
|
8112
|
+
return /* @__PURE__ */ jsx61(TabsContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx61(
|
|
7638
8113
|
TabsPrimitive.Root,
|
|
7639
8114
|
{
|
|
7640
8115
|
"data-slot": "tabs",
|
|
@@ -7651,10 +8126,10 @@ function TabsList({
|
|
|
7651
8126
|
className,
|
|
7652
8127
|
...props
|
|
7653
8128
|
}) {
|
|
7654
|
-
const listRef =
|
|
7655
|
-
const { orientation } =
|
|
8129
|
+
const listRef = React59.useRef(null);
|
|
8130
|
+
const { orientation } = React59.useContext(TabsContext);
|
|
7656
8131
|
const { style: indicatorStyle } = useTabIndicator(listRef, orientation);
|
|
7657
|
-
return /* @__PURE__ */
|
|
8132
|
+
return /* @__PURE__ */ jsxs35(
|
|
7658
8133
|
TabsPrimitive.List,
|
|
7659
8134
|
{
|
|
7660
8135
|
ref: listRef,
|
|
@@ -7669,12 +8144,12 @@ function TabsList({
|
|
|
7669
8144
|
...props,
|
|
7670
8145
|
children: [
|
|
7671
8146
|
props.children,
|
|
7672
|
-
/* @__PURE__ */
|
|
8147
|
+
/* @__PURE__ */ jsx61("span", { "data-slot": "tabs-indicator", style: indicatorStyle })
|
|
7673
8148
|
]
|
|
7674
8149
|
}
|
|
7675
8150
|
);
|
|
7676
8151
|
}
|
|
7677
|
-
var tabsTriggerVariants =
|
|
8152
|
+
var tabsTriggerVariants = cva15(
|
|
7678
8153
|
"cursor-pointer inline-flex shrink-0 items-center justify-center font-sans font-medium whitespace-nowrap transition-[color,box-shadow] text-vibrant-text-details data-[state=active]:font-semibold data-[state=active]:text-vibrant-text-heading disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-4",
|
|
7679
8154
|
{
|
|
7680
8155
|
variants: {
|
|
@@ -7703,14 +8178,14 @@ function TabsTrigger({
|
|
|
7703
8178
|
children,
|
|
7704
8179
|
...props
|
|
7705
8180
|
}) {
|
|
7706
|
-
const { orientation } =
|
|
7707
|
-
return /* @__PURE__ */
|
|
8181
|
+
const { orientation } = React59.useContext(TabsContext);
|
|
8182
|
+
return /* @__PURE__ */ jsx61(
|
|
7708
8183
|
TabsPrimitive.Trigger,
|
|
7709
8184
|
{
|
|
7710
8185
|
"data-slot": "tabs-trigger",
|
|
7711
8186
|
className: cn(tabsTriggerVariants({ size, orientation }), className),
|
|
7712
8187
|
...props,
|
|
7713
|
-
children: /* @__PURE__ */
|
|
8188
|
+
children: /* @__PURE__ */ jsx61(
|
|
7714
8189
|
"span",
|
|
7715
8190
|
{
|
|
7716
8191
|
className: cn(
|
|
@@ -7727,7 +8202,7 @@ function TabsContent({
|
|
|
7727
8202
|
className,
|
|
7728
8203
|
...props
|
|
7729
8204
|
}) {
|
|
7730
|
-
return /* @__PURE__ */
|
|
8205
|
+
return /* @__PURE__ */ jsx61(
|
|
7731
8206
|
TabsPrimitive.Content,
|
|
7732
8207
|
{
|
|
7733
8208
|
"data-slot": "tabs-content",
|
|
@@ -7741,9 +8216,9 @@ function TabsContent({
|
|
|
7741
8216
|
import {
|
|
7742
8217
|
ThemeProvider as NextThemesProvider
|
|
7743
8218
|
} from "next-themes";
|
|
7744
|
-
import { jsx as
|
|
8219
|
+
import { jsx as jsx62 } from "react/jsx-runtime";
|
|
7745
8220
|
function ThemeProvider({ children, ...props }) {
|
|
7746
|
-
return /* @__PURE__ */
|
|
8221
|
+
return /* @__PURE__ */ jsx62(
|
|
7747
8222
|
NextThemesProvider,
|
|
7748
8223
|
{
|
|
7749
8224
|
attribute: "class",
|
|
@@ -7760,29 +8235,29 @@ function ThemeProvider({ children, ...props }) {
|
|
|
7760
8235
|
import { Monitor, Moon, Sun } from "lucide-react";
|
|
7761
8236
|
import { useTheme as useTheme2 } from "next-themes";
|
|
7762
8237
|
import "react";
|
|
7763
|
-
import { jsx as
|
|
8238
|
+
import { jsx as jsx63, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
7764
8239
|
function ThemeToggle({
|
|
7765
8240
|
className,
|
|
7766
8241
|
...props
|
|
7767
8242
|
}) {
|
|
7768
8243
|
const { setTheme } = useTheme2();
|
|
7769
|
-
return /* @__PURE__ */
|
|
7770
|
-
/* @__PURE__ */
|
|
7771
|
-
/* @__PURE__ */
|
|
7772
|
-
/* @__PURE__ */
|
|
7773
|
-
/* @__PURE__ */
|
|
8244
|
+
return /* @__PURE__ */ jsxs36(DropdownMenu, { children: [
|
|
8245
|
+
/* @__PURE__ */ jsx63(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs36(Button, { variant: "outline", size: "icon", className, ...props, children: [
|
|
8246
|
+
/* @__PURE__ */ jsx63(Sun, { className: "size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
|
|
8247
|
+
/* @__PURE__ */ jsx63(Moon, { className: "absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" }),
|
|
8248
|
+
/* @__PURE__ */ jsx63("span", { className: "sr-only", children: "Toggle theme" })
|
|
7774
8249
|
] }) }),
|
|
7775
|
-
/* @__PURE__ */
|
|
7776
|
-
/* @__PURE__ */
|
|
7777
|
-
/* @__PURE__ */
|
|
8250
|
+
/* @__PURE__ */ jsxs36(DropdownMenuContent, { align: "end", children: [
|
|
8251
|
+
/* @__PURE__ */ jsxs36(DropdownMenuItem, { onClick: () => setTheme("light"), children: [
|
|
8252
|
+
/* @__PURE__ */ jsx63(Sun, { className: "size-4" }),
|
|
7778
8253
|
"Light"
|
|
7779
8254
|
] }),
|
|
7780
|
-
/* @__PURE__ */
|
|
7781
|
-
/* @__PURE__ */
|
|
8255
|
+
/* @__PURE__ */ jsxs36(DropdownMenuItem, { onClick: () => setTheme("dark"), children: [
|
|
8256
|
+
/* @__PURE__ */ jsx63(Moon, { className: "size-4" }),
|
|
7782
8257
|
"Dark"
|
|
7783
8258
|
] }),
|
|
7784
|
-
/* @__PURE__ */
|
|
7785
|
-
/* @__PURE__ */
|
|
8259
|
+
/* @__PURE__ */ jsxs36(DropdownMenuItem, { onClick: () => setTheme("system"), children: [
|
|
8260
|
+
/* @__PURE__ */ jsx63(Monitor, { className: "size-4" }),
|
|
7786
8261
|
"System"
|
|
7787
8262
|
] })
|
|
7788
8263
|
] })
|
|
@@ -7792,8 +8267,8 @@ function ThemeToggle({
|
|
|
7792
8267
|
// src/components/ui/time-input.tsx
|
|
7793
8268
|
import "class-variance-authority";
|
|
7794
8269
|
import { Clock } from "lucide-react";
|
|
7795
|
-
import * as
|
|
7796
|
-
import { jsx as
|
|
8270
|
+
import * as React61 from "react";
|
|
8271
|
+
import { jsx as jsx64, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
7797
8272
|
var TIME_FORMAT_PLACEHOLDER = {
|
|
7798
8273
|
"12h": "hh:mm AM/PM",
|
|
7799
8274
|
"24h": "HH:mm",
|
|
@@ -7846,16 +8321,16 @@ function TimeInput({
|
|
|
7846
8321
|
formatDisplay
|
|
7847
8322
|
}) {
|
|
7848
8323
|
const resolvedPlaceholder = placeholder ?? TIME_FORMAT_PLACEHOLDER[timeFormat];
|
|
7849
|
-
const displayValue =
|
|
8324
|
+
const displayValue = React61.useMemo(() => {
|
|
7850
8325
|
if (!time) return "";
|
|
7851
8326
|
if (formatDisplay) return formatDisplay(time);
|
|
7852
8327
|
return formatTime(time, timeFormat);
|
|
7853
8328
|
}, [time, formatDisplay, timeFormat]);
|
|
7854
|
-
const [open, setOpen] =
|
|
7855
|
-
const hoursRef =
|
|
7856
|
-
const minutesRef =
|
|
7857
|
-
const periodRef =
|
|
7858
|
-
const scrollToSelected =
|
|
8329
|
+
const [open, setOpen] = React61.useState(false);
|
|
8330
|
+
const hoursRef = React61.useRef(null);
|
|
8331
|
+
const minutesRef = React61.useRef(null);
|
|
8332
|
+
const periodRef = React61.useRef(null);
|
|
8333
|
+
const scrollToSelected = React61.useCallback(() => {
|
|
7859
8334
|
requestAnimationFrame(() => {
|
|
7860
8335
|
for (const ref of [hoursRef, minutesRef, periodRef]) {
|
|
7861
8336
|
const container = ref.current;
|
|
@@ -7867,7 +8342,7 @@ function TimeInput({
|
|
|
7867
8342
|
}
|
|
7868
8343
|
});
|
|
7869
8344
|
}, []);
|
|
7870
|
-
|
|
8345
|
+
React61.useEffect(() => {
|
|
7871
8346
|
if (open) {
|
|
7872
8347
|
scrollToSelected();
|
|
7873
8348
|
}
|
|
@@ -7903,8 +8378,8 @@ function TimeInput({
|
|
|
7903
8378
|
const selectedH12 = time ? getDisplayHour(time.hours, timeFormat) : null;
|
|
7904
8379
|
const selectedMinute = time?.minutes ?? null;
|
|
7905
8380
|
const selectedPeriod = time ? getPeriod(time.hours) : null;
|
|
7906
|
-
return /* @__PURE__ */
|
|
7907
|
-
/* @__PURE__ */
|
|
8381
|
+
return /* @__PURE__ */ jsx64("div", { className: cn("relative flex gap-2", className), children: /* @__PURE__ */ jsxs37(Popover, { open, onOpenChange: setOpen, children: [
|
|
8382
|
+
/* @__PURE__ */ jsx64(PopoverTrigger, { asChild: true, disabled: inputDisabled, children: /* @__PURE__ */ jsxs37(
|
|
7908
8383
|
Button,
|
|
7909
8384
|
{
|
|
7910
8385
|
type: "button",
|
|
@@ -7919,18 +8394,18 @@ function TimeInput({
|
|
|
7919
8394
|
disabled: inputDisabled,
|
|
7920
8395
|
children: [
|
|
7921
8396
|
displayValue || resolvedPlaceholder,
|
|
7922
|
-
icon !== void 0 ? icon : /* @__PURE__ */
|
|
8397
|
+
icon !== void 0 ? icon : /* @__PURE__ */ jsx64(Clock, { className: "h-4 w-4 text-muted-foreground shrink-0" })
|
|
7923
8398
|
]
|
|
7924
8399
|
}
|
|
7925
8400
|
) }),
|
|
7926
|
-
/* @__PURE__ */
|
|
8401
|
+
/* @__PURE__ */ jsx64(
|
|
7927
8402
|
PopoverContent,
|
|
7928
8403
|
{
|
|
7929
8404
|
className: cn("w-auto p-0", popoverContentClassName),
|
|
7930
8405
|
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
7931
8406
|
...popoverContentProps,
|
|
7932
|
-
children: /* @__PURE__ */
|
|
7933
|
-
/* @__PURE__ */
|
|
8407
|
+
children: /* @__PURE__ */ jsxs37("div", { className: "flex divide-x border border-focus-ring rounded-md", children: [
|
|
8408
|
+
/* @__PURE__ */ jsx64("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx64("div", { ref: hoursRef, className: "flex flex-col p-1 ", children: hoursList.map((h) => /* @__PURE__ */ jsx64(
|
|
7934
8409
|
Button,
|
|
7935
8410
|
{
|
|
7936
8411
|
variant: "ghost",
|
|
@@ -7945,7 +8420,7 @@ function TimeInput({
|
|
|
7945
8420
|
},
|
|
7946
8421
|
h
|
|
7947
8422
|
)) }) }),
|
|
7948
|
-
/* @__PURE__ */
|
|
8423
|
+
/* @__PURE__ */ jsx64("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx64(
|
|
7949
8424
|
"div",
|
|
7950
8425
|
{
|
|
7951
8426
|
ref: minutesRef,
|
|
@@ -7953,7 +8428,7 @@ function TimeInput({
|
|
|
7953
8428
|
"flex flex-col p-1",
|
|
7954
8429
|
minutesList.length <= 12 && "h-full justify-center"
|
|
7955
8430
|
),
|
|
7956
|
-
children: minutesList.map((m) => /* @__PURE__ */
|
|
8431
|
+
children: minutesList.map((m) => /* @__PURE__ */ jsx64(
|
|
7957
8432
|
Button,
|
|
7958
8433
|
{
|
|
7959
8434
|
variant: "ghost",
|
|
@@ -7970,7 +8445,7 @@ function TimeInput({
|
|
|
7970
8445
|
))
|
|
7971
8446
|
}
|
|
7972
8447
|
) }),
|
|
7973
|
-
!is24HourFormat(timeFormat) && /* @__PURE__ */
|
|
8448
|
+
!is24HourFormat(timeFormat) && /* @__PURE__ */ jsx64("div", { className: "flex flex-col p-1 justify-center gap-1", children: ["AM", "PM"].map((p) => /* @__PURE__ */ jsx64(
|
|
7974
8449
|
Button,
|
|
7975
8450
|
{
|
|
7976
8451
|
variant: "ghost",
|
|
@@ -7994,9 +8469,9 @@ function TimeInput({
|
|
|
7994
8469
|
// src/components/ui/toggle.tsx
|
|
7995
8470
|
import "react";
|
|
7996
8471
|
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
7997
|
-
import { cva as
|
|
7998
|
-
import { jsx as
|
|
7999
|
-
var toggleVariants =
|
|
8472
|
+
import { cva as cva16 } from "class-variance-authority";
|
|
8473
|
+
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
8474
|
+
var toggleVariants = cva16(
|
|
8000
8475
|
"cursor-pointer inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
|
|
8001
8476
|
{
|
|
8002
8477
|
variants: {
|
|
@@ -8022,7 +8497,7 @@ function Toggle({
|
|
|
8022
8497
|
size,
|
|
8023
8498
|
...props
|
|
8024
8499
|
}) {
|
|
8025
|
-
return /* @__PURE__ */
|
|
8500
|
+
return /* @__PURE__ */ jsx65(
|
|
8026
8501
|
TogglePrimitive.Root,
|
|
8027
8502
|
{
|
|
8028
8503
|
"data-slot": "toggle",
|
|
@@ -8033,11 +8508,11 @@ function Toggle({
|
|
|
8033
8508
|
}
|
|
8034
8509
|
|
|
8035
8510
|
// src/components/ui/toggle-group.tsx
|
|
8036
|
-
import * as
|
|
8511
|
+
import * as React63 from "react";
|
|
8037
8512
|
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
8038
8513
|
import "class-variance-authority";
|
|
8039
|
-
import { jsx as
|
|
8040
|
-
var ToggleGroupContext =
|
|
8514
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
8515
|
+
var ToggleGroupContext = React63.createContext({
|
|
8041
8516
|
size: "default",
|
|
8042
8517
|
variant: "default"
|
|
8043
8518
|
});
|
|
@@ -8048,7 +8523,7 @@ function ToggleGroup({
|
|
|
8048
8523
|
children,
|
|
8049
8524
|
...props
|
|
8050
8525
|
}) {
|
|
8051
|
-
return /* @__PURE__ */
|
|
8526
|
+
return /* @__PURE__ */ jsx66(
|
|
8052
8527
|
ToggleGroupPrimitive.Root,
|
|
8053
8528
|
{
|
|
8054
8529
|
"data-slot": "toggle-group",
|
|
@@ -8059,7 +8534,7 @@ function ToggleGroup({
|
|
|
8059
8534
|
className
|
|
8060
8535
|
),
|
|
8061
8536
|
...props,
|
|
8062
|
-
children: /* @__PURE__ */
|
|
8537
|
+
children: /* @__PURE__ */ jsx66(ToggleGroupContext.Provider, { value: { variant, size }, children })
|
|
8063
8538
|
}
|
|
8064
8539
|
);
|
|
8065
8540
|
}
|
|
@@ -8070,8 +8545,8 @@ function ToggleGroupItem({
|
|
|
8070
8545
|
size,
|
|
8071
8546
|
...props
|
|
8072
8547
|
}) {
|
|
8073
|
-
const context =
|
|
8074
|
-
return /* @__PURE__ */
|
|
8548
|
+
const context = React63.useContext(ToggleGroupContext);
|
|
8549
|
+
return /* @__PURE__ */ jsx66(
|
|
8075
8550
|
ToggleGroupPrimitive.Item,
|
|
8076
8551
|
{
|
|
8077
8552
|
"data-slot": "toggle-group-item",
|
|
@@ -8091,288 +8566,6 @@ function ToggleGroupItem({
|
|
|
8091
8566
|
);
|
|
8092
8567
|
}
|
|
8093
8568
|
|
|
8094
|
-
// src/components/ui/typography.tsx
|
|
8095
|
-
import { Slot as Slot7 } from "@radix-ui/react-slot";
|
|
8096
|
-
import { cva as cva16 } from "class-variance-authority";
|
|
8097
|
-
import "react";
|
|
8098
|
-
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
8099
|
-
var displayTextVariants = cva16(
|
|
8100
|
-
"tracking-normal font-normal font-serif italic text-vibrant-text-display",
|
|
8101
|
-
{
|
|
8102
|
-
variants: {
|
|
8103
|
-
size: {
|
|
8104
|
-
lg: "text-4xl md:text-[3.25rem] leading-[44px] md:leading-[64px]",
|
|
8105
|
-
md: "text-[1.75rem] md:text-4xl leading-[36px] md:leading-[44px]",
|
|
8106
|
-
sm: "text-lg md:text-xl leading-[26px] md:leading-[28px]"
|
|
8107
|
-
}
|
|
8108
|
-
},
|
|
8109
|
-
defaultVariants: {
|
|
8110
|
-
size: "md"
|
|
8111
|
-
}
|
|
8112
|
-
}
|
|
8113
|
-
);
|
|
8114
|
-
function DisplayHeading({
|
|
8115
|
-
className,
|
|
8116
|
-
size,
|
|
8117
|
-
asChild = false,
|
|
8118
|
-
...props
|
|
8119
|
-
}) {
|
|
8120
|
-
const Comp = asChild ? Slot7 : "h1";
|
|
8121
|
-
return /* @__PURE__ */ jsx65(
|
|
8122
|
-
Comp,
|
|
8123
|
-
{
|
|
8124
|
-
"data-slot": "h1",
|
|
8125
|
-
className: cn(displayTextVariants({ size, className })),
|
|
8126
|
-
...props
|
|
8127
|
-
}
|
|
8128
|
-
);
|
|
8129
|
-
}
|
|
8130
|
-
var bodyTextVariants = cva16("font-sans text-vibrant-text-body", {
|
|
8131
|
-
variants: {
|
|
8132
|
-
size: {
|
|
8133
|
-
lg: "text-lg md:text-xl leading-[26px] md:leading-[28px]",
|
|
8134
|
-
md: "text-base leading-[24px]",
|
|
8135
|
-
sm: "text-sm leading-[20px]",
|
|
8136
|
-
xs: "text-xs leading-[16px]"
|
|
8137
|
-
}
|
|
8138
|
-
},
|
|
8139
|
-
defaultVariants: {
|
|
8140
|
-
size: "md"
|
|
8141
|
-
}
|
|
8142
|
-
});
|
|
8143
|
-
function Body({
|
|
8144
|
-
className,
|
|
8145
|
-
size,
|
|
8146
|
-
asChild = false,
|
|
8147
|
-
...props
|
|
8148
|
-
}) {
|
|
8149
|
-
const Comp = asChild ? Slot7 : "p";
|
|
8150
|
-
return /* @__PURE__ */ jsx65(
|
|
8151
|
-
Comp,
|
|
8152
|
-
{
|
|
8153
|
-
"data-slot": "p",
|
|
8154
|
-
className: cn(bodyTextVariants({ size, className })),
|
|
8155
|
-
...props
|
|
8156
|
-
}
|
|
8157
|
-
);
|
|
8158
|
-
}
|
|
8159
|
-
function HeadingXL({
|
|
8160
|
-
className,
|
|
8161
|
-
asChild = false,
|
|
8162
|
-
...props
|
|
8163
|
-
}) {
|
|
8164
|
-
const Comp = asChild ? Slot7 : "h1";
|
|
8165
|
-
return /* @__PURE__ */ jsx65(
|
|
8166
|
-
Comp,
|
|
8167
|
-
{
|
|
8168
|
-
"data-slot": "h1",
|
|
8169
|
-
className: cn(
|
|
8170
|
-
"text-2xl md:text-[2rem] leading-[32px] md:leading-[40px] font-semibold font-sans text-vibrant-text-heading",
|
|
8171
|
-
className
|
|
8172
|
-
),
|
|
8173
|
-
...props
|
|
8174
|
-
}
|
|
8175
|
-
);
|
|
8176
|
-
}
|
|
8177
|
-
function HeadingL({
|
|
8178
|
-
className,
|
|
8179
|
-
asChild = false,
|
|
8180
|
-
...props
|
|
8181
|
-
}) {
|
|
8182
|
-
const Comp = asChild ? Slot7 : "h2";
|
|
8183
|
-
return /* @__PURE__ */ jsx65(
|
|
8184
|
-
Comp,
|
|
8185
|
-
{
|
|
8186
|
-
"data-slot": "h2",
|
|
8187
|
-
className: cn(
|
|
8188
|
-
"text-[1.25rem] md:text-[1.5rem] leading-[28px] md:leading-[32px] font-semibold font-sans text-vibrant-text-heading",
|
|
8189
|
-
className
|
|
8190
|
-
),
|
|
8191
|
-
...props
|
|
8192
|
-
}
|
|
8193
|
-
);
|
|
8194
|
-
}
|
|
8195
|
-
function HeadingM({
|
|
8196
|
-
className,
|
|
8197
|
-
asChild = false,
|
|
8198
|
-
...props
|
|
8199
|
-
}) {
|
|
8200
|
-
const Comp = asChild ? Slot7 : "h3";
|
|
8201
|
-
return /* @__PURE__ */ jsx65(
|
|
8202
|
-
Comp,
|
|
8203
|
-
{
|
|
8204
|
-
"data-slot": "h3",
|
|
8205
|
-
className: cn(
|
|
8206
|
-
"text-[1.125rem] md:text-xl leading-[26px] md:leading-[28px] font-semibold font-sans text-vibrant-text-heading",
|
|
8207
|
-
className
|
|
8208
|
-
),
|
|
8209
|
-
...props
|
|
8210
|
-
}
|
|
8211
|
-
);
|
|
8212
|
-
}
|
|
8213
|
-
function HeadingS({
|
|
8214
|
-
className,
|
|
8215
|
-
asChild = false,
|
|
8216
|
-
...props
|
|
8217
|
-
}) {
|
|
8218
|
-
const Comp = asChild ? Slot7 : "h4";
|
|
8219
|
-
return /* @__PURE__ */ jsx65(
|
|
8220
|
-
Comp,
|
|
8221
|
-
{
|
|
8222
|
-
"data-slot": "h4",
|
|
8223
|
-
className: cn(
|
|
8224
|
-
"text-base leading-[24px] font-semibold font-sans text-vibrant-text-heading",
|
|
8225
|
-
className
|
|
8226
|
-
),
|
|
8227
|
-
...props
|
|
8228
|
-
}
|
|
8229
|
-
);
|
|
8230
|
-
}
|
|
8231
|
-
function HeadingXS({
|
|
8232
|
-
className,
|
|
8233
|
-
asChild = false,
|
|
8234
|
-
...props
|
|
8235
|
-
}) {
|
|
8236
|
-
const Comp = asChild ? Slot7 : "h5";
|
|
8237
|
-
return /* @__PURE__ */ jsx65(
|
|
8238
|
-
Comp,
|
|
8239
|
-
{
|
|
8240
|
-
"data-slot": "h5",
|
|
8241
|
-
className: cn(
|
|
8242
|
-
"text-sm leading-[20px] font-semibold font-sans text-vibrant-text-heading",
|
|
8243
|
-
className
|
|
8244
|
-
),
|
|
8245
|
-
...props
|
|
8246
|
-
}
|
|
8247
|
-
);
|
|
8248
|
-
}
|
|
8249
|
-
function HeadingXXS({
|
|
8250
|
-
className,
|
|
8251
|
-
asChild = false,
|
|
8252
|
-
...props
|
|
8253
|
-
}) {
|
|
8254
|
-
const Comp = asChild ? Slot7 : "h6";
|
|
8255
|
-
return /* @__PURE__ */ jsx65(
|
|
8256
|
-
Comp,
|
|
8257
|
-
{
|
|
8258
|
-
"data-slot": "h6",
|
|
8259
|
-
className: cn(
|
|
8260
|
-
"text-xs leading-[16px] font-medium font-sans text-vibrant-text-heading",
|
|
8261
|
-
className
|
|
8262
|
-
),
|
|
8263
|
-
...props
|
|
8264
|
-
}
|
|
8265
|
-
);
|
|
8266
|
-
}
|
|
8267
|
-
function HeadingXLMedium({
|
|
8268
|
-
className,
|
|
8269
|
-
asChild = false,
|
|
8270
|
-
...props
|
|
8271
|
-
}) {
|
|
8272
|
-
const Comp = asChild ? Slot7 : "h1";
|
|
8273
|
-
return /* @__PURE__ */ jsx65(
|
|
8274
|
-
Comp,
|
|
8275
|
-
{
|
|
8276
|
-
"data-slot": "h1",
|
|
8277
|
-
className: cn(
|
|
8278
|
-
"text-2xl md:text-[2rem] leading-[32px] md:leading-[40px] font-medium font-sans text-vibrant-text-heading",
|
|
8279
|
-
className
|
|
8280
|
-
),
|
|
8281
|
-
...props
|
|
8282
|
-
}
|
|
8283
|
-
);
|
|
8284
|
-
}
|
|
8285
|
-
function HeadingLMedium({
|
|
8286
|
-
className,
|
|
8287
|
-
asChild = false,
|
|
8288
|
-
...props
|
|
8289
|
-
}) {
|
|
8290
|
-
const Comp = asChild ? Slot7 : "h2";
|
|
8291
|
-
return /* @__PURE__ */ jsx65(
|
|
8292
|
-
Comp,
|
|
8293
|
-
{
|
|
8294
|
-
"data-slot": "h2",
|
|
8295
|
-
className: cn(
|
|
8296
|
-
"text-[1.25rem] md:text-[1.5rem] leading-[28px] md:leading-[32px] font-medium font-sans text-vibrant-text-heading",
|
|
8297
|
-
className
|
|
8298
|
-
),
|
|
8299
|
-
...props
|
|
8300
|
-
}
|
|
8301
|
-
);
|
|
8302
|
-
}
|
|
8303
|
-
function HeadingMMedium({
|
|
8304
|
-
className,
|
|
8305
|
-
asChild = false,
|
|
8306
|
-
...props
|
|
8307
|
-
}) {
|
|
8308
|
-
const Comp = asChild ? Slot7 : "h3";
|
|
8309
|
-
return /* @__PURE__ */ jsx65(
|
|
8310
|
-
Comp,
|
|
8311
|
-
{
|
|
8312
|
-
"data-slot": "h3",
|
|
8313
|
-
className: cn(
|
|
8314
|
-
"text-[1.125rem] md:text-xl leading-[26px] md:leading-[28px] font-medium font-sans text-vibrant-text-heading",
|
|
8315
|
-
className
|
|
8316
|
-
),
|
|
8317
|
-
...props
|
|
8318
|
-
}
|
|
8319
|
-
);
|
|
8320
|
-
}
|
|
8321
|
-
function HeadingSMedium({
|
|
8322
|
-
className,
|
|
8323
|
-
asChild = false,
|
|
8324
|
-
...props
|
|
8325
|
-
}) {
|
|
8326
|
-
const Comp = asChild ? Slot7 : "h4";
|
|
8327
|
-
return /* @__PURE__ */ jsx65(
|
|
8328
|
-
Comp,
|
|
8329
|
-
{
|
|
8330
|
-
"data-slot": "h4",
|
|
8331
|
-
className: cn(
|
|
8332
|
-
"text-base leading-[24px] font-medium font-sans text-vibrant-text-heading",
|
|
8333
|
-
className
|
|
8334
|
-
),
|
|
8335
|
-
...props
|
|
8336
|
-
}
|
|
8337
|
-
);
|
|
8338
|
-
}
|
|
8339
|
-
function HeadingXSMedium({
|
|
8340
|
-
className,
|
|
8341
|
-
asChild = false,
|
|
8342
|
-
...props
|
|
8343
|
-
}) {
|
|
8344
|
-
const Comp = asChild ? Slot7 : "h5";
|
|
8345
|
-
return /* @__PURE__ */ jsx65(
|
|
8346
|
-
Comp,
|
|
8347
|
-
{
|
|
8348
|
-
"data-slot": "h5",
|
|
8349
|
-
className: cn(
|
|
8350
|
-
"text-sm leading-[20px] font-medium font-sans text-vibrant-text-heading",
|
|
8351
|
-
className
|
|
8352
|
-
),
|
|
8353
|
-
...props
|
|
8354
|
-
}
|
|
8355
|
-
);
|
|
8356
|
-
}
|
|
8357
|
-
function HeadingXXSMedium({
|
|
8358
|
-
className,
|
|
8359
|
-
asChild = false,
|
|
8360
|
-
...props
|
|
8361
|
-
}) {
|
|
8362
|
-
const Comp = asChild ? Slot7 : "h6";
|
|
8363
|
-
return /* @__PURE__ */ jsx65(
|
|
8364
|
-
Comp,
|
|
8365
|
-
{
|
|
8366
|
-
"data-slot": "h6",
|
|
8367
|
-
className: cn(
|
|
8368
|
-
"text-xs leading-[16px] font-medium font-sans text-vibrant-text-heading",
|
|
8369
|
-
className
|
|
8370
|
-
),
|
|
8371
|
-
...props
|
|
8372
|
-
}
|
|
8373
|
-
);
|
|
8374
|
-
}
|
|
8375
|
-
|
|
8376
8569
|
// src/hooks/use-theme.ts
|
|
8377
8570
|
import { useTheme as useTheme3 } from "next-themes";
|
|
8378
8571
|
export {
|
|
@@ -8507,6 +8700,7 @@ export {
|
|
|
8507
8700
|
DropdownSelectLabel,
|
|
8508
8701
|
DropdownSelectOption,
|
|
8509
8702
|
DropdownSelectTrigger,
|
|
8703
|
+
FaqAccordion,
|
|
8510
8704
|
Form,
|
|
8511
8705
|
FormControl,
|
|
8512
8706
|
FormDescription,
|