@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/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
- return /* @__PURE__ */ jsx(AccordionContext.Provider, { value: { variant }, children: /* @__PURE__ */ jsx(
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" ? "rounded-xl border border-border-default " : "border-b last:border-b-0",
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
- !hasCustomIcon && "[&[data-state=open]>svg]:rotate-180",
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(ChevronDownIcon, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-400" })
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: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
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 showEmpty = !loading && options.length === 0 && query.trim() !== "";
800
- const hasBody = loading || options.length > 0 || showEmpty;
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("span", { className: cn("text-gray-subtle", classNames?.optionDescription), children: `, ${option.description}` })
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: loading ? /* @__PURE__ */ jsxs5("div", { className: cn(messageClassName, classNames?.loading), children: [
909
- /* @__PURE__ */ jsx8(
910
- Loader2,
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
- className: cn(
913
- "size-[16px] animate-spin text-gray-icon-light",
914
- classNames?.loadingSpinner
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
- loadingMessage
919
- ] }) : showEmpty ? emptyState ?? /* @__PURE__ */ jsx8("div", { className: cn(messageClassName, classNames?.empty), children: emptyMessage }) : options.map(renderRow)
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("w-full", className),
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/form.tsx
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/label.tsx
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 labelTextVariants = cva9("font-sans font-semibold text-vibrant-text-body", {
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-base md:text-lg md:leading-[1.625rem] leading-[1.5rem]",
4183
- md: "md:text-base text-sm md:leading-[1.5rem] leading-[1.25rem] ",
4184
- sm: "md:text-sm text-xs md:leading-[1.25rem] leading-[1.125rem] ",
4185
- xs: "text-xs leading-[1.125rem]"
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 Label3({
4338
+ function Body({
4193
4339
  className,
4194
4340
  size,
4195
4341
  asChild = false,
4196
4342
  ...props
4197
4343
  }) {
4198
- const Comp = asChild ? Slot4 : "label";
4344
+ const Comp = asChild ? Slot4 : "p";
4199
4345
  return /* @__PURE__ */ jsx32(
4200
4346
  Comp,
4201
4347
  {
4202
- "data-slot": "label",
4203
- className: cn(labelTextVariants({ size, className })),
4348
+ "data-slot": "p",
4349
+ className: cn(bodyTextVariants({ size, className })),
4204
4350
  ...props
4205
4351
  }
4206
4352
  );
4207
4353
  }
4208
-
4209
- // src/components/ui/form.tsx
4210
- import { jsx as jsx33 } from "react/jsx-runtime";
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
- return /* @__PURE__ */ jsx33(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx33(Controller, { ...props }) });
4219
- };
4220
- var useFormField = () => {
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": "form-item",
4248
- className: cn("grid gap-2", className),
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 FormLabel({
4372
+ function HeadingL({
4254
4373
  className,
4374
+ asChild = false,
4255
4375
  ...props
4256
4376
  }) {
4257
- const { error, formItemId } = useFormField();
4258
- return /* @__PURE__ */ jsx33(
4259
- Label3,
4377
+ const Comp = asChild ? Slot4 : "h2";
4378
+ return /* @__PURE__ */ jsx32(
4379
+ Comp,
4260
4380
  {
4261
- "data-slot": "form-label",
4262
- "data-error": !!error,
4263
- className: cn("data-[error=true]:text-destructive", className),
4264
- htmlFor: formItemId,
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 FormControl({ ...props }) {
4270
- const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
4271
- return /* @__PURE__ */ jsx33(
4272
- Slot5,
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": "form-control",
4275
- id: formItemId,
4276
- "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
4277
- "aria-invalid": !!error,
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 FormDescription({ className, ...props }) {
4283
- const { formDescriptionId } = useFormField();
4284
- return /* @__PURE__ */ jsx33(
4285
- "p",
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": "form-description",
4288
- id: formDescriptionId,
4289
- className: cn("text-muted-foreground text-sm", className),
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 FormMessage({ className, ...props }) {
4295
- const { error, formMessageId } = useFormField();
4296
- const body = error ? String(error?.message ?? "") : props.children;
4297
- if (!body) {
4298
- return null;
4299
- }
4300
- return /* @__PURE__ */ jsx33(
4301
- "p",
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": "form-message",
4304
- id: formMessageId,
4305
- className: cn("text-destructive text-sm", className),
4306
- ...props,
4307
- children: body
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
- // src/components/ui/hover-card.tsx
4313
- import "react";
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
- return /* @__PURE__ */ jsx34(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
4320
- }
4321
- function HoverCardTrigger({
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": "hover-card-content",
4336
- align,
4337
- sideOffset,
4453
+ "data-slot": "h6",
4338
4454
  className: cn(
4339
- "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",
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 InputOTPSlot({
4383
- index,
4462
+ function HeadingXLMedium({
4384
4463
  className,
4464
+ asChild = false,
4385
4465
  ...props
4386
4466
  }) {
4387
- const inputOTPContext = React34.useContext(OTPInputContext);
4388
- const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
4389
- const isHovering = inputOTPContext?.isHovering ?? false;
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": "input-otp-slot",
4395
- "data-active": isActive,
4471
+ "data-slot": "h1",
4396
4472
  className: cn(
4397
- // Base layout & typography
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 InputOTPSeparator({ ...props }) {
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
- return /* @__PURE__ */ jsx36(
4437
- MenubarPrimitive.Root,
4485
+ const Comp = asChild ? Slot4 : "h2";
4486
+ return /* @__PURE__ */ jsx32(
4487
+ Comp,
4438
4488
  {
4439
- "data-slot": "menubar",
4489
+ "data-slot": "h2",
4440
4490
  className: cn(
4441
- "bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs",
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 MenubarMenu({
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
- return /* @__PURE__ */ jsx36(
4473
- MenubarPrimitive.Trigger,
4503
+ const Comp = asChild ? Slot4 : "h3";
4504
+ return /* @__PURE__ */ jsx32(
4505
+ Comp,
4474
4506
  {
4475
- "data-slot": "menubar-trigger",
4507
+ "data-slot": "h3",
4476
4508
  className: cn(
4477
- "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",
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 MenubarContent({
4516
+ function HeadingSMedium({
4485
4517
  className,
4486
- align = "start",
4487
- alignOffset = -4,
4488
- sideOffset = 8,
4518
+ asChild = false,
4489
4519
  ...props
4490
4520
  }) {
4491
- return /* @__PURE__ */ jsx36(MenubarPortal, { children: /* @__PURE__ */ jsx36(
4492
- MenubarPrimitive.Content,
4521
+ const Comp = asChild ? Slot4 : "h4";
4522
+ return /* @__PURE__ */ jsx32(
4523
+ Comp,
4493
4524
  {
4494
- "data-slot": "menubar-content",
4495
- align,
4496
- alignOffset,
4497
- sideOffset,
4525
+ "data-slot": "h4",
4498
4526
  className: cn(
4499
- "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",
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 MenubarItem({
4534
+ function HeadingXSMedium({
4507
4535
  className,
4508
- inset,
4509
- variant = "default",
4536
+ asChild = false,
4510
4537
  ...props
4511
4538
  }) {
4512
- return /* @__PURE__ */ jsx36(
4513
- MenubarPrimitive.Item,
4539
+ const Comp = asChild ? Slot4 : "h5";
4540
+ return /* @__PURE__ */ jsx32(
4541
+ Comp,
4514
4542
  {
4515
- "data-slot": "menubar-item",
4516
- "data-inset": inset,
4517
- "data-variant": variant,
4543
+ "data-slot": "h5",
4518
4544
  className: cn(
4519
- "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",
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 MenubarCheckboxItem({
4552
+ function HeadingXXSMedium({
4527
4553
  className,
4528
- children,
4529
- checked,
4554
+ asChild = false,
4530
4555
  ...props
4531
4556
  }) {
4532
- return /* @__PURE__ */ jsxs20(
4533
- MenubarPrimitive.CheckboxItem,
4557
+ const Comp = asChild ? Slot4 : "h6";
4558
+ return /* @__PURE__ */ jsx32(
4559
+ Comp,
4534
4560
  {
4535
- "data-slot": "menubar-checkbox-item",
4561
+ "data-slot": "h6",
4536
4562
  className: cn(
4537
- "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",
4563
+ "text-xs leading-[16px] font-medium font-sans text-vibrant-text-heading",
4538
4564
  className
4539
4565
  ),
4540
- checked,
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
- function MenubarRadioItem({
4550
- className,
4551
- children,
4552
- ...props
4553
- }) {
4554
- return /* @__PURE__ */ jsxs20(
4555
- MenubarPrimitive.RadioItem,
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
- "data-slot": "menubar-radio-item",
4558
- className: cn(
4559
- "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",
4560
- className
4561
- ),
4562
- ...props,
4563
- children: [
4564
- /* @__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(CircleIcon3, { className: "size-2 fill-current" }) }) }),
4565
- children
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
- function MenubarLabel({
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
- inset,
4669
+ size,
4670
+ asChild = false,
4573
4671
  ...props
4574
4672
  }) {
4575
- return /* @__PURE__ */ jsx36(
4576
- MenubarPrimitive.Label,
4673
+ const Comp = asChild ? Slot5 : "label";
4674
+ return /* @__PURE__ */ jsx34(
4675
+ Comp,
4577
4676
  {
4578
- "data-slot": "menubar-label",
4579
- "data-inset": inset,
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
- function MenubarSeparator({
4589
- className,
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
- return /* @__PURE__ */ jsx36(
4593
- MenubarPrimitive.Separator,
4732
+ const { error, formItemId } = useFormField();
4733
+ return /* @__PURE__ */ jsx35(
4734
+ Label3,
4594
4735
  {
4595
- "data-slot": "menubar-separator",
4596
- className: cn("bg-border -mx-1 my-1 h-px", className),
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 MenubarShortcut({
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
- "span",
4807
+ return /* @__PURE__ */ jsx36(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx36(
4808
+ HoverCardPrimitive.Content,
4607
4809
  {
4608
- "data-slot": "menubar-shortcut",
4810
+ "data-slot": "hover-card-content",
4811
+ align,
4812
+ sideOffset,
4609
4813
  className: cn(
4610
- "text-muted-foreground ml-auto text-xs tracking-widest",
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
- function MenubarSub({
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__ */ jsx36(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
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 MenubarSubTrigger({
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
- MenubarPrimitive.SubTrigger,
4867
+ "div",
4630
4868
  {
4631
- "data-slot": "menubar-sub-trigger",
4632
- "data-inset": inset,
4869
+ "data-slot": "input-otp-slot",
4870
+ "data-active": isActive,
4633
4871
  className: cn(
4634
- "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",
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
- children,
4640
- /* @__PURE__ */ jsx36(ChevronRightIcon4, { className: "ml-auto h-4 w-4" })
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 MenubarSubContent({
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__ */ jsx36(
4650
- MenubarPrimitive.SubContent,
4911
+ return /* @__PURE__ */ jsx38(
4912
+ MenubarPrimitive.Root,
4651
4913
  {
4652
- "data-slot": "menubar-sub-content",
4914
+ "data-slot": "menubar",
4653
4915
  className: cn(
4654
- "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",
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
- // src/components/ui/multi-select-free-text.tsx
4663
- import * as React36 from "react";
4664
- import * as PopoverPrimitive4 from "@radix-ui/react-popover";
4665
- import { ChevronDown as ChevronDown2, X as X3 } from "lucide-react";
4666
- import { jsx as jsx37, jsxs as jsxs21 } from "react/jsx-runtime";
4667
- function Tag({ label, onRemove }) {
4668
- return /* @__PURE__ */ jsxs21(
4669
- "span",
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": "multi-select-tag",
4672
- 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",
4673
- children: [
4674
- label,
4675
- /* @__PURE__ */ jsx37(
4676
- "button",
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 MultiSelectFreeText({
4693
- values: valuesProp,
4694
- defaultValues = [],
4695
- onValuesChange,
4696
- options = [],
4697
- placeholder = "Placeholder text",
4698
- icon,
4699
- label,
4700
- mandatory = false,
4701
- disabled = false,
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] = React36.useState(defaultValues);
4705
- const [inputValue, setInputValue] = React36.useState("");
4706
- const [open, setOpen] = React36.useState(false);
4707
- const [highlightedIndex, setHighlightedIndex] = React36.useState(-1);
4708
- const inputRef = React36.useRef(null);
4709
- const triggerRef = React36.useRef(null);
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 = React36.useCallback(
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 = React36.useCallback(
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 = React36.useCallback(
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 = React36.useMemo(() => {
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 = React36.useCallback(
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 = React36.useCallback(
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 = React36.useCallback(
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 = React36.useCallback(() => {
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__ */ jsx37(PopoverPrimitive4.Root, { open, onOpenChange: disabled ? void 0 : setOpen, children: /* @__PURE__ */ jsxs21(
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__ */ jsxs21("div", { className: "flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details", children: [
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__ */ jsx37("span", { className: "text-error-surface-default ml-0.5 text-[14px] leading-[20px]", children: "*" })
5277
+ mandatory && /* @__PURE__ */ jsx39("span", { className: "text-error-surface-default ml-0.5 text-[14px] leading-[20px]", children: "*" })
4803
5278
  ] }),
4804
- /* @__PURE__ */ jsx37(PopoverPrimitive4.Anchor, { asChild: true, children: /* @__PURE__ */ jsxs21(
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__ */ jsx37("span", { className: "flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px] text-muted-foreground", children: icon }),
4817
- /* @__PURE__ */ jsxs21("div", { className: "flex flex-wrap items-center gap-[8px] flex-1 min-w-0", children: [
4818
- values.map((tag) => /* @__PURE__ */ jsx37(Tag, { label: tag, onRemove: () => removeTag(tag) }, tag)),
4819
- /* @__PURE__ */ jsx37(
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__ */ jsx37(
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__ */ jsx37(PopoverPrimitive4.Portal, { children: /* @__PURE__ */ jsx37(
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__ */ jsxs21("div", { role: "listbox", className: "flex flex-col", children: [
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__ */ jsx37(
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__ */ jsx37(
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__ */ jsx37("div", { className: "flex items-center h-[48px] px-[8px] font-sans font-medium text-[14px] leading-[20px] text-muted-foreground", children: "No options available" })
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 cva10 } from "class-variance-authority";
5390
+ import { cva as cva11 } from "class-variance-authority";
4916
5391
  import { ChevronDownIcon as ChevronDownIcon3 } from "lucide-react";
4917
- import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
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__ */ jsxs22(
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__ */ jsx38(NavigationMenuViewport, {})
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__ */ jsx38(
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__ */ jsx38(
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 = cva10(
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__ */ jsxs22(
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__ */ jsx38(
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__ */ jsx38(
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__ */ jsx38(
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__ */ jsx38(
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__ */ jsx38(
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__ */ jsx38(
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__ */ jsx38("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
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 cva11 } from "class-variance-authority";
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 jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
5078
- var optionCardVariants = cva11(
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__ */ jsx39(
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__ */ jsx39(Circle, { className: "size-2 fill-white text-white" })
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__ */ jsx39(
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__ */ jsx39(Check2, { className: "size-4 text-white" })
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__ */ jsx39(Indicator5, { selected });
5195
- return /* @__PURE__ */ jsxs23(
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__ */ jsxs23("span", { className: "flex items-center gap-2 flex-1 min-w-0", children: [
5215
- icon && /* @__PURE__ */ jsx39("span", { className: "flex items-center justify-center shrink-0 size-5 [&_svg]:size-5", children: icon }),
5216
- /* @__PURE__ */ jsx39("span", { className: "truncate", children })
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 jsx40, jsxs as jsxs24 } from "react/jsx-runtime";
5706
+ import { jsx as jsx42, jsxs as jsxs25 } from "react/jsx-runtime";
5232
5707
  function Pagination({ className, ...props }) {
5233
- return /* @__PURE__ */ jsx40(
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__ */ jsx40(
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__ */ jsx40("li", { "data-slot": "pagination-item", ...props });
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__ */ jsx40(
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__ */ jsxs24(
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__ */ jsx40(ChevronLeftIcon2, {}),
5296
- /* @__PURE__ */ jsx40("span", { className: "hidden sm:block", children: "Previous" })
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__ */ jsxs24(
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__ */ jsx40("span", { className: "hidden sm:block", children: "Next" }),
5314
- /* @__PURE__ */ jsx40(ChevronRightIcon5, {})
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__ */ jsxs24(
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__ */ jsx40(MoreHorizontalIcon, { className: "size-4" }),
5332
- /* @__PURE__ */ jsx40("span", { className: "sr-only", children: "More pages" })
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 jsx41 } from "react/jsx-runtime";
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__ */ jsx41(
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__ */ jsx41(
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 cva12 } from "class-variance-authority";
5844
+ import { cva as cva13 } from "class-variance-authority";
5370
5845
  import "react";
5371
- import { jsx as jsx42, jsxs as jsxs25 } from "react/jsx-runtime";
5372
- var progressBarVariants = cva12("relative overflow-hidden rounded-[8px]", {
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__ */ jsxs25(
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__ */ jsx42("div", { className: "absolute inset-0 rounded-[8px] bg-primary-surface-light" }),
5404
- /* @__PURE__ */ jsx42(
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 jsx43 } from "react/jsx-runtime";
5896
+ import { jsx as jsx45 } from "react/jsx-runtime";
5422
5897
  function RadioGroup4({
5423
5898
  className,
5424
5899
  ...props
5425
5900
  }) {
5426
- return /* @__PURE__ */ jsx43(
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__ */ jsx43(
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__ */ jsx43(
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__ */ jsx43(CircleIcon4, { className: "fill-white absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
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 jsx44 } from "react/jsx-runtime";
5939
+ import { jsx as jsx46 } from "react/jsx-runtime";
5465
5940
  function ResizablePanelGroup({
5466
5941
  className,
5467
5942
  ...props
5468
5943
  }) {
5469
- return /* @__PURE__ */ jsx44(
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__ */ jsx44(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
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__ */ jsx44(
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__ */ jsx44("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ jsx44(GripVerticalIcon, { className: "size-2.5" }) })
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 jsx45, jsxs as jsxs26 } from "react/jsx-runtime";
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__ */ jsxs26(
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__ */ jsx45(
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__ */ jsx45(ScrollBar, {}),
5530
- /* @__PURE__ */ jsx45(ScrollAreaPrimitive.Corner, {})
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__ */ jsx45(
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__ */ jsx45(
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 React45 from "react";
6039
+ import * as React47 from "react";
5565
6040
  import { Search, X as X4 } from "lucide-react";
5566
- import { jsx as jsx46, jsxs as jsxs27 } from "react/jsx-runtime";
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] = React45.useState(defaultValue);
5586
- const [isFocused, setIsFocused] = React45.useState(false);
5587
- const [showSuggestions, setShowSuggestions] = React45.useState(false);
5588
- const inputRef = React45.useRef(null);
5589
- const containerRef = React45.useRef(null);
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 = React45.useCallback(
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 = React45.useCallback(
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 = React45.useCallback(
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 = React45.useCallback(() => {
6100
+ const handleClear = React47.useCallback(() => {
5626
6101
  updateValue("");
5627
6102
  onClear?.();
5628
6103
  inputRef.current?.focus();
5629
6104
  }, [updateValue, onClear]);
5630
- const handleSearchClick = React45.useCallback(() => {
6105
+ const handleSearchClick = React47.useCallback(() => {
5631
6106
  onSearch?.(currentValue);
5632
6107
  setShowSuggestions(false);
5633
6108
  }, [currentValue, onSearch]);
5634
- const handleSuggestionClick = React45.useCallback(
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 = React45.useCallback(() => {
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 = React45.useCallback(
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__ */ jsxs27(
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__ */ jsx46("div", { className: "flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details", children: label }),
5669
- /* @__PURE__ */ jsxs27(
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__ */ jsx46(
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__ */ jsx46(
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__ */ jsx46(
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__ */ jsx46(X4, { className: "size-[16px]" })
6196
+ children: /* @__PURE__ */ jsx48(X4, { className: "size-[16px]" })
5722
6197
  }
5723
- ) : variant === "button" ? /* @__PURE__ */ jsx46(
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__ */ jsx46(
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__ */ jsx46(Search, { className: "size-[20px] text-white" })
6217
+ children: /* @__PURE__ */ jsx48(Search, { className: "size-[20px] text-white" })
5743
6218
  }
5744
6219
  )
5745
6220
  ]
5746
6221
  }
5747
6222
  ),
5748
- displayHelperText && /* @__PURE__ */ jsx46(
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__ */ jsx46(
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__ */ jsxs27(
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__ */ jsx46("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 }),
5772
- /* @__PURE__ */ jsx46("span", { className: "flex-1 min-w-0 font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading truncate", children: suggestion.label })
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 React46 from "react";
6260
+ import * as React48 from "react";
5786
6261
  import { CheckIcon as CheckIcon4, ChevronsUpDown, XIcon as XIcon3 } from "lucide-react";
5787
- import { jsx as jsx47, jsxs as jsxs28 } from "react/jsx-runtime";
5788
- var SearchableSelectContext = React46.createContext(null);
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 = React46.useContext(SearchableSelectContext);
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] = React46.useState(false);
5817
- const [internalValue, setInternalValue] = React46.useState(defaultValue);
5818
- const [internalValues, setInternalValues] = React46.useState(defaultValues);
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 = React46.useCallback(
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 = React46.useCallback(
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 = React46.useCallback(
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 = React46.useMemo(() => {
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 = React46.useMemo(
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__ */ jsx47(SearchableSelectContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx47(Popover, { open, onOpenChange: setOpen, children }) });
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__ */ jsx47(
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__ */ jsx47(
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__ */ jsxs28(
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__ */ jsxs28(
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__ */ jsx47("span", { className: "truncate max-w-[120px]", children: ctx.optionMap.get(v) || v }),
5942
- /* @__PURE__ */ jsx47(
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__ */ jsx47(XIcon3, { className: "size-3" })
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__ */ jsxs28(Badge, { variant: "outline", className: "text-muted-foreground", children: [
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__ */ jsxs28(
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__ */ jsx47(ChevronsUpDown, { className: "size-4 shrink-0 opacity-50" })
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 = React46.useMemo(() => {
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__ */ jsx47(
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__ */ jsx47(SearchableSelectGroup, { heading: group || void 0, children: opts.map((opt) => /* @__PURE__ */ jsx47(
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__ */ jsx47(
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__ */ jsxs28(Command, { children: [
6038
- ctx.searchable && /* @__PURE__ */ jsx47(CommandInput, { placeholder: ctx.searchPlaceholder }),
6039
- /* @__PURE__ */ jsxs28(CommandList, { children: [
6040
- /* @__PURE__ */ jsx47(CommandEmpty, { children: emptyText }),
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__ */ jsxs28(
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__ */ jsx47("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx47(
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__ */ jsx47(CheckIcon4, { className: "size-4 p-0.5" })
6562
+ children: isSelected && /* @__PURE__ */ jsx49(CheckIcon4, { className: "size-4 p-0.5" })
6088
6563
  }
6089
6564
  ) }),
6090
- /* @__PURE__ */ jsx47("span", { className: "flex-1 truncate", children }),
6091
- ctx.mode === "single" && isSelected && /* @__PURE__ */ jsx47("span", { className: "absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx47(CheckIcon4, { className: "size-4" }) })
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__ */ jsx47(
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__ */ jsx47(
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 jsx48, jsxs as jsxs29 } from "react/jsx-runtime";
6604
+ import { jsx as jsx50, jsxs as jsxs30 } from "react/jsx-runtime";
6130
6605
  function Select({
6131
6606
  ...props
6132
6607
  }) {
6133
- return /* @__PURE__ */ jsx48(SelectPrimitive.Root, { "data-slot": "select", ...props });
6608
+ return /* @__PURE__ */ jsx50(SelectPrimitive.Root, { "data-slot": "select", ...props });
6134
6609
  }
6135
6610
  function SelectGroup({
6136
6611
  ...props
6137
6612
  }) {
6138
- return /* @__PURE__ */ jsx48(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
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__ */ jsx48(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
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__ */ jsxs29(
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__ */ jsx48(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx48(ChevronDownIcon4, { className: "size-4 opacity-50" }) })
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__ */ jsx48(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs29(
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__ */ jsx48(SelectScrollUpButton, {}),
6187
- /* @__PURE__ */ jsx48(
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__ */ jsx48(SelectScrollDownButton, {})
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__ */ jsx48(
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__ */ jsxs29(
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__ */ jsx48("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx48(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx48(CheckIcon5, { className: "size-4" }) }) }),
6231
- /* @__PURE__ */ jsx48(SelectPrimitive.ItemText, { children })
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__ */ jsx48(
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__ */ jsx48(
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__ */ jsx48(ChevronUpIcon, { className: "size-4" })
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__ */ jsx48(
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__ */ jsx48(ChevronDownIcon4, { className: "size-4" })
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 jsx49 } from "react/jsx-runtime";
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__ */ jsx49(
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 jsx50, jsxs as jsxs30 } from "react/jsx-runtime";
6788
+ import { jsx as jsx52, jsxs as jsxs31 } from "react/jsx-runtime";
6314
6789
  function Sheet({ ...props }) {
6315
- return /* @__PURE__ */ jsx50(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
6790
+ return /* @__PURE__ */ jsx52(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
6316
6791
  }
6317
6792
  function SheetTrigger({
6318
6793
  ...props
6319
6794
  }) {
6320
- return /* @__PURE__ */ jsx50(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
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__ */ jsx50(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
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__ */ jsx50(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
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__ */ jsx50(
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__ */ jsxs30(SheetPortal, { children: [
6356
- /* @__PURE__ */ jsx50(SheetOverlay, {}),
6357
- /* @__PURE__ */ jsxs30(
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__ */ jsxs30(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: [
6373
- /* @__PURE__ */ jsx50(XIcon4, { className: "size-4" }),
6374
- /* @__PURE__ */ jsx50("span", { className: "sr-only", children: "Close" })
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__ */ jsx50(
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__ */ jsx50(
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__ */ jsx50(
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__ */ jsx50(
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 Slot6 } from "@radix-ui/react-slot";
6430
- import { cva as cva13 } from "class-variance-authority";
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 React51 from "react";
6907
+ import * as React53 from "react";
6433
6908
 
6434
6909
  // src/components/ui/skeleton.tsx
6435
- import { jsx as jsx51 } from "react/jsx-runtime";
6910
+ import { jsx as jsx53 } from "react/jsx-runtime";
6436
6911
  function Skeleton({ className, ...props }) {
6437
- return /* @__PURE__ */ jsx51(
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 React50 from "react";
6451
- import { jsx as jsx52, jsxs as jsxs31 } from "react/jsx-runtime";
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__ */ jsx52(
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 = React50.createContext(null);
6940
+ var TooltipCloseContext = React52.createContext(null);
6466
6941
  function Tooltip2({
6467
6942
  persistent = false,
6468
6943
  ...props
6469
6944
  }) {
6470
- const [open, setOpen] = React50.useState(props.defaultOpen ?? false);
6945
+ const [open, setOpen] = React52.useState(props.defaultOpen ?? false);
6471
6946
  if (!persistent) {
6472
- return /* @__PURE__ */ jsx52(TooltipProvider, { children: /* @__PURE__ */ jsx52(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
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__ */ jsx52(TooltipProvider, { children: /* @__PURE__ */ jsx52(TooltipCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx52(
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__ */ jsx52(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
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__ */ jsx52(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs31(
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__ */ jsx52(
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 = React50.useContext(TooltipCloseContext);
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__ */ jsx52(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs31(
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__ */ jsxs31(
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__ */ jsx52("span", { className: "flex items-center justify-center shrink-0 size-5 [&_svg]:size-5", children: icon }),
6590
- /* @__PURE__ */ jsxs31("div", { className: "flex flex-1 flex-col gap-2 min-w-0", children: [
6591
- heading && /* @__PURE__ */ jsx52("p", { className: "font-semibold text-sm leading-5", children: heading }),
6592
- /* @__PURE__ */ jsx52("div", { className: "font-normal text-sm leading-5", children })
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__ */ jsx52(
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__ */ jsx52(X5, { className: "size-3.5" })
7079
+ children: /* @__PURE__ */ jsx54(X5, { className: "size-3.5" })
6605
7080
  }
6606
7081
  )
6607
7082
  ]
6608
7083
  }
6609
7084
  ),
6610
- !hideArrow && /* @__PURE__ */ jsx52(
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 jsx53, jsxs as jsxs32 } from "react/jsx-runtime";
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 = React51.createContext(null);
7106
+ var SidebarContext = React53.createContext(null);
6632
7107
  function useSidebar() {
6633
- const context = React51.useContext(SidebarContext);
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] = React51.useState(false);
6650
- const [_open, _setOpen] = React51.useState(defaultOpen);
7124
+ const [openMobile, setOpenMobile] = React53.useState(false);
7125
+ const [_open, _setOpen] = React53.useState(defaultOpen);
6651
7126
  const open = openProp ?? _open;
6652
- const setOpen = React51.useCallback(
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 = React51.useCallback(() => {
7139
+ const toggleSidebar = React53.useCallback(() => {
6665
7140
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
6666
7141
  }, [isMobile, setOpen, setOpenMobile]);
6667
- React51.useEffect(() => {
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 = React51.useMemo(
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__ */ jsx53(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx53(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs32(
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__ */ jsxs32(SheetHeader, { className: "sr-only", children: [
6745
- /* @__PURE__ */ jsx53(SheetTitle, { children: "Sidebar" }),
6746
- /* @__PURE__ */ jsx53(SheetDescription, { children: "Displays the mobile sidebar." })
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__ */ jsx53("div", { className: "flex h-full w-full flex-col", children })
7223
+ /* @__PURE__ */ jsx55("div", { className: "flex h-full w-full flex-col", children })
6749
7224
  ]
6750
7225
  }
6751
7226
  ) });
6752
7227
  }
6753
- return /* @__PURE__ */ jsxs32(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsxs32(
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__ */ jsx53(PanelLeftIcon, {}),
6823
- /* @__PURE__ */ jsx53("span", { className: "sr-only", children: "Toggle Sidebar" })
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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 ? Slot6 : "div";
6947
- return /* @__PURE__ */ jsx53(
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 ? Slot6 : "button";
6967
- return /* @__PURE__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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 = cva13(
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 ? Slot6 : "button";
7523
+ const Comp = asChild ? Slot7 : "button";
7049
7524
  const { isMobile, state } = useSidebar();
7050
- const button = /* @__PURE__ */ jsx53(
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__ */ jsxs32(Tooltip2, { children: [
7070
- /* @__PURE__ */ jsx53(TooltipTrigger, { asChild: true, children: button }),
7071
- /* @__PURE__ */ jsx53(
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 ? Slot6 : "button";
7089
- return /* @__PURE__ */ jsx53(
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__ */ jsx53(
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 = React51.useMemo(() => {
7611
+ const width = React53.useMemo(() => {
7137
7612
  return `${Math.floor(Math.random() * 40) + 50}%`;
7138
7613
  }, []);
7139
- return /* @__PURE__ */ jsxs32(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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 ? Slot6 : "a";
7205
- return /* @__PURE__ */ jsx53(
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 React52 from "react";
7701
+ import * as React54 from "react";
7227
7702
  import * as SliderPrimitive from "@radix-ui/react-slider";
7228
- import { jsx as jsx54, jsxs as jsxs33 } from "react/jsx-runtime";
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 = React52.useMemo(
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__ */ jsxs33(
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__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54(
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 React53 from "react";
7765
+ import * as React55 from "react";
7291
7766
  function useMediaQuery(query) {
7292
- const subscribe = React53.useCallback(
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 = React53.useCallback(
7779
+ const getSnapshot = React55.useCallback(
7305
7780
  () => window.matchMedia(query).matches,
7306
7781
  [query]
7307
7782
  );
7308
- const getServerSnapshot = React53.useCallback(() => false, []);
7309
- return React53.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
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 jsx55 } from "react/jsx-runtime";
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__ */ jsx55(Drawer, { ...props, children }) : /* @__PURE__ */ jsx55(Dialog, { ...props, children });
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__ */ jsx55(
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__ */ jsx55(
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__ */ jsx55(DrawerDescription, { ...props, children }) : /* @__PURE__ */ jsx55(DialogDescription, { ...props, children });
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__ */ jsx55(DrawerHeader, { ...props, children }) : /* @__PURE__ */ jsx55(DialogHeader, { ...props, children });
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__ */ jsx55(DrawerTitle, { ...props, children }) : /* @__PURE__ */ jsx55(DialogTitle, { ...props, children });
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__ */ jsx55(DrawerTrigger, { ...props, children }) : /* @__PURE__ */ jsx55(DialogTrigger, { ...props, children });
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__ */ jsx55(DrawerFooter, { ...props, children }) : /* @__PURE__ */ jsx55(DialogFooter, { ...props, children });
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__ */ jsx55(Fragment4, { children: /* @__PURE__ */ jsx55(DrawerClose, { ...props, children }) }) : /* @__PURE__ */ jsx55(DialogClose, { ...props, children });
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 jsx56 } from "react/jsx-runtime";
7381
- var iconWrapper = (icon) => /* @__PURE__ */ jsx56("span", { className: "flex items-center justify-center shrink-0 size-5 [&_svg]:size-5", children: icon });
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__ */ jsx56(
7859
+ return /* @__PURE__ */ jsx58(
7385
7860
  Sonner,
7386
7861
  {
7387
7862
  theme,
7388
7863
  className: "toaster group",
7389
7864
  icons: {
7390
- info: iconWrapper(/* @__PURE__ */ jsx56(Info, {})),
7391
- error: iconWrapper(/* @__PURE__ */ jsx56(TriangleAlert, {})),
7392
- success: iconWrapper(/* @__PURE__ */ jsx56(CircleCheck, {}))
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 jsx57 } from "react/jsx-runtime";
7891
+ import { jsx as jsx59 } from "react/jsx-runtime";
7417
7892
  function Switch({
7418
7893
  className,
7419
7894
  ...props
7420
7895
  }) {
7421
- return /* @__PURE__ */ jsx57(
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__ */ jsx57(
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 jsx58 } from "react/jsx-runtime";
7920
+ import { jsx as jsx60 } from "react/jsx-runtime";
7446
7921
  function Table({ className, ...props }) {
7447
- return /* @__PURE__ */ jsx58(
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__ */ jsx58(
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__ */ jsx58(
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__ */ jsx58(
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__ */ jsx58(
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__ */ jsx58(
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__ */ jsx58(
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__ */ jsx58(
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__ */ jsx58(
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 cva14 } from "class-variance-authority";
7552
- import * as React57 from "react";
7553
- import { jsx as jsx59, jsxs as jsxs34 } from "react/jsx-runtime";
7554
- var TabsContext = React57.createContext({
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] = React57.useState({
8033
+ const [style, setStyle] = React59.useState({
7559
8034
  position: "absolute",
7560
8035
  opacity: 0
7561
8036
  });
7562
- const isFirstMeasurement = React57.useRef(true);
7563
- const measure = React57.useCallback(() => {
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
- React57.useEffect(() => {
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 = React57.useMemo(
8108
+ const ctx = React59.useMemo(
7634
8109
  () => ({ orientation: orientation ?? "horizontal" }),
7635
8110
  [orientation]
7636
8111
  );
7637
- return /* @__PURE__ */ jsx59(TabsContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx59(
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 = React57.useRef(null);
7655
- const { orientation } = React57.useContext(TabsContext);
8129
+ const listRef = React59.useRef(null);
8130
+ const { orientation } = React59.useContext(TabsContext);
7656
8131
  const { style: indicatorStyle } = useTabIndicator(listRef, orientation);
7657
- return /* @__PURE__ */ jsxs34(
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__ */ jsx59("span", { "data-slot": "tabs-indicator", style: indicatorStyle })
8147
+ /* @__PURE__ */ jsx61("span", { "data-slot": "tabs-indicator", style: indicatorStyle })
7673
8148
  ]
7674
8149
  }
7675
8150
  );
7676
8151
  }
7677
- var tabsTriggerVariants = cva14(
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 } = React57.useContext(TabsContext);
7707
- return /* @__PURE__ */ jsx59(
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__ */ jsx59(
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__ */ jsx59(
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 jsx60 } from "react/jsx-runtime";
8219
+ import { jsx as jsx62 } from "react/jsx-runtime";
7745
8220
  function ThemeProvider({ children, ...props }) {
7746
- return /* @__PURE__ */ jsx60(
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 jsx61, jsxs as jsxs35 } from "react/jsx-runtime";
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__ */ jsxs35(DropdownMenu, { children: [
7770
- /* @__PURE__ */ jsx61(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs35(Button, { variant: "outline", size: "icon", className, ...props, children: [
7771
- /* @__PURE__ */ jsx61(Sun, { className: "size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
7772
- /* @__PURE__ */ jsx61(Moon, { className: "absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" }),
7773
- /* @__PURE__ */ jsx61("span", { className: "sr-only", children: "Toggle theme" })
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__ */ jsxs35(DropdownMenuContent, { align: "end", children: [
7776
- /* @__PURE__ */ jsxs35(DropdownMenuItem, { onClick: () => setTheme("light"), children: [
7777
- /* @__PURE__ */ jsx61(Sun, { className: "size-4" }),
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__ */ jsxs35(DropdownMenuItem, { onClick: () => setTheme("dark"), children: [
7781
- /* @__PURE__ */ jsx61(Moon, { className: "size-4" }),
8255
+ /* @__PURE__ */ jsxs36(DropdownMenuItem, { onClick: () => setTheme("dark"), children: [
8256
+ /* @__PURE__ */ jsx63(Moon, { className: "size-4" }),
7782
8257
  "Dark"
7783
8258
  ] }),
7784
- /* @__PURE__ */ jsxs35(DropdownMenuItem, { onClick: () => setTheme("system"), children: [
7785
- /* @__PURE__ */ jsx61(Monitor, { className: "size-4" }),
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 React59 from "react";
7796
- import { jsx as jsx62, jsxs as jsxs36 } from "react/jsx-runtime";
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 = React59.useMemo(() => {
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] = React59.useState(false);
7855
- const hoursRef = React59.useRef(null);
7856
- const minutesRef = React59.useRef(null);
7857
- const periodRef = React59.useRef(null);
7858
- const scrollToSelected = React59.useCallback(() => {
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
- React59.useEffect(() => {
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__ */ jsx62("div", { className: cn("relative flex gap-2", className), children: /* @__PURE__ */ jsxs36(Popover, { open, onOpenChange: setOpen, children: [
7907
- /* @__PURE__ */ jsx62(PopoverTrigger, { asChild: true, disabled: inputDisabled, children: /* @__PURE__ */ jsxs36(
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__ */ jsx62(Clock, { className: "h-4 w-4 text-muted-foreground shrink-0" })
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__ */ jsx62(
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__ */ jsxs36("div", { className: "flex divide-x border border-focus-ring rounded-md", children: [
7933
- /* @__PURE__ */ jsx62("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx62("div", { ref: hoursRef, className: "flex flex-col p-1 ", children: hoursList.map((h) => /* @__PURE__ */ jsx62(
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__ */ jsx62("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx62(
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__ */ jsx62(
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__ */ jsx62("div", { className: "flex flex-col p-1 justify-center gap-1", children: ["AM", "PM"].map((p) => /* @__PURE__ */ jsx62(
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 cva15 } from "class-variance-authority";
7998
- import { jsx as jsx63 } from "react/jsx-runtime";
7999
- var toggleVariants = cva15(
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__ */ jsx63(
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 React61 from "react";
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 jsx64 } from "react/jsx-runtime";
8040
- var ToggleGroupContext = React61.createContext({
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__ */ jsx64(
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__ */ jsx64(ToggleGroupContext.Provider, { value: { variant, size }, children })
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 = React61.useContext(ToggleGroupContext);
8074
- return /* @__PURE__ */ jsx64(
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,