@codapet/design-system 0.5.8 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -2174,7 +2174,7 @@ function DateInput({
2174
2174
  setDate,
2175
2175
  maxDate,
2176
2176
  minDate,
2177
- disableFuture = true,
2177
+ disableFuture = false,
2178
2178
  className,
2179
2179
  inputClassName,
2180
2180
  calendarClassName,
@@ -2247,6 +2247,18 @@ function DateInput({
2247
2247
  }
2248
2248
  return null;
2249
2249
  }, [minDate]);
2250
+ const dropdownStartMonth = React20.useMemo(() => {
2251
+ if (effectiveMinDate) return effectiveMinDate;
2252
+ const d = new Date(today);
2253
+ d.setFullYear(d.getFullYear() - 100);
2254
+ return d;
2255
+ }, [effectiveMinDate, today]);
2256
+ const dropdownEndMonth = React20.useMemo(() => {
2257
+ if (effectiveMaxDate) return effectiveMaxDate;
2258
+ const d = new Date(today);
2259
+ d.setFullYear(d.getFullYear() + 100);
2260
+ return d;
2261
+ }, [effectiveMaxDate, today]);
2250
2262
  React20.useEffect(() => {
2251
2263
  if (date) {
2252
2264
  setValue(formatDate(date, dateFormat));
@@ -2284,8 +2296,8 @@ function DateInput({
2284
2296
  month: effectiveMonth,
2285
2297
  onMonthChange: onMonthChange ?? setMonthState,
2286
2298
  showOutsideDays,
2287
- ...effectiveMinDate ? { startMonth: effectiveMinDate } : {},
2288
- ...effectiveMaxDate ? { endMonth: effectiveMaxDate } : {},
2299
+ startMonth: dropdownStartMonth,
2300
+ endMonth: dropdownEndMonth,
2289
2301
  className: cn(
2290
2302
  "w-auto mx-auto overflow-y-auto h-auto m-2",
2291
2303
  calendarClassName
@@ -2441,7 +2453,7 @@ function DateRangeInput({
2441
2453
  setDateRange,
2442
2454
  maxDate,
2443
2455
  minDate,
2444
- disableFuture = true,
2456
+ disableFuture = false,
2445
2457
  className,
2446
2458
  inputClassName,
2447
2459
  calendarClassName,
@@ -2504,6 +2516,18 @@ function DateRangeInput({
2504
2516
  }
2505
2517
  return null;
2506
2518
  }, [minDate]);
2519
+ const dropdownStartMonth = React21.useMemo(() => {
2520
+ if (effectiveMinDate) return effectiveMinDate;
2521
+ const d = new Date(today);
2522
+ d.setFullYear(d.getFullYear() - 100);
2523
+ return d;
2524
+ }, [effectiveMinDate, today]);
2525
+ const dropdownEndMonth = React21.useMemo(() => {
2526
+ if (effectiveMaxDate) return effectiveMaxDate;
2527
+ const d = new Date(today);
2528
+ d.setFullYear(d.getFullYear() + 100);
2529
+ return d;
2530
+ }, [effectiveMaxDate, today]);
2507
2531
  const effectiveMonth = month ?? monthState ?? void 0;
2508
2532
  const effectiveSelected = selected ?? dateRange;
2509
2533
  const isInputDisabled = inputDisabled ?? (typeof calendarDisabled === "boolean" ? calendarDisabled : false);
@@ -2538,8 +2562,8 @@ function DateRangeInput({
2538
2562
  month: effectiveMonth,
2539
2563
  onMonthChange: onMonthChange ?? setMonthState,
2540
2564
  showOutsideDays,
2541
- ...effectiveMinDate ? { startMonth: effectiveMinDate } : {},
2542
- ...effectiveMaxDate ? { endMonth: effectiveMaxDate } : {},
2565
+ startMonth: dropdownStartMonth,
2566
+ endMonth: dropdownEndMonth,
2543
2567
  className: cn("w-auto shrink-0 h-auto mt-2", calendarClassName),
2544
2568
  classNames,
2545
2569
  components,
@@ -3872,25 +3896,366 @@ function ScrollBar({
3872
3896
  );
3873
3897
  }
3874
3898
 
3899
+ // src/components/ui/searchable-select.tsx
3900
+ import * as React35 from "react";
3901
+ import { CheckIcon as CheckIcon4, ChevronsUpDown, XIcon as XIcon2 } from "lucide-react";
3902
+ import { jsx as jsx37, jsxs as jsxs19 } from "react/jsx-runtime";
3903
+ var SearchableSelectContext = React35.createContext(null);
3904
+ function useSearchableSelect() {
3905
+ const ctx = React35.useContext(SearchableSelectContext);
3906
+ if (!ctx) {
3907
+ throw new Error(
3908
+ "SearchableSelect compound components must be used within <SearchableSelect>"
3909
+ );
3910
+ }
3911
+ return ctx;
3912
+ }
3913
+ function SearchableSelect({
3914
+ mode = "single",
3915
+ value: controlledValue,
3916
+ defaultValue = "",
3917
+ onValueChange,
3918
+ values: controlledValues,
3919
+ defaultValues = [],
3920
+ onValuesChange,
3921
+ searchable = true,
3922
+ searchPlaceholder = "Search...",
3923
+ placeholder = "Select...",
3924
+ disabled = false,
3925
+ maxCount = Infinity,
3926
+ options = [],
3927
+ open: controlledOpen,
3928
+ onOpenChange,
3929
+ children
3930
+ }) {
3931
+ const [internalOpen, setInternalOpen] = React35.useState(false);
3932
+ const [internalValue, setInternalValue] = React35.useState(defaultValue);
3933
+ const [internalValues, setInternalValues] = React35.useState(defaultValues);
3934
+ const open = controlledOpen ?? internalOpen;
3935
+ const setOpen = React35.useCallback(
3936
+ (next) => {
3937
+ if (controlledOpen !== void 0) {
3938
+ onOpenChange?.(next);
3939
+ } else {
3940
+ setInternalOpen(next);
3941
+ onOpenChange?.(next);
3942
+ }
3943
+ },
3944
+ [controlledOpen, onOpenChange]
3945
+ );
3946
+ const value = controlledValue ?? internalValue;
3947
+ const setValue = React35.useCallback(
3948
+ (next) => {
3949
+ if (controlledValue === void 0) {
3950
+ setInternalValue(next);
3951
+ }
3952
+ onValueChange?.(next);
3953
+ },
3954
+ [controlledValue, onValueChange]
3955
+ );
3956
+ const values = controlledValues ?? internalValues;
3957
+ const setValues = React35.useCallback(
3958
+ (next) => {
3959
+ if (controlledValues === void 0) {
3960
+ setInternalValues(next);
3961
+ }
3962
+ onValuesChange?.(next);
3963
+ },
3964
+ [controlledValues, onValuesChange]
3965
+ );
3966
+ const optionMap = React35.useMemo(() => {
3967
+ const map = /* @__PURE__ */ new Map();
3968
+ for (const opt of options) {
3969
+ map.set(opt.value, opt.label);
3970
+ }
3971
+ return map;
3972
+ }, [options]);
3973
+ const ctx = React35.useMemo(
3974
+ () => ({
3975
+ open,
3976
+ setOpen,
3977
+ mode,
3978
+ value,
3979
+ setValue,
3980
+ values,
3981
+ setValues,
3982
+ searchable,
3983
+ searchPlaceholder,
3984
+ placeholder,
3985
+ disabled,
3986
+ maxCount,
3987
+ options,
3988
+ optionMap
3989
+ }),
3990
+ [
3991
+ open,
3992
+ setOpen,
3993
+ mode,
3994
+ value,
3995
+ setValue,
3996
+ values,
3997
+ setValues,
3998
+ searchable,
3999
+ searchPlaceholder,
4000
+ placeholder,
4001
+ disabled,
4002
+ maxCount,
4003
+ options,
4004
+ optionMap
4005
+ ]
4006
+ );
4007
+ return /* @__PURE__ */ jsx37(SearchableSelectContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx37(Popover, { open, onOpenChange: setOpen, children }) });
4008
+ }
4009
+ function SearchableSelectTrigger({
4010
+ className,
4011
+ size = "default",
4012
+ children,
4013
+ ...props
4014
+ }) {
4015
+ const ctx = useSearchableSelect();
4016
+ const renderContent = () => {
4017
+ if (children) return children;
4018
+ if (ctx.mode === "single") {
4019
+ const label = ctx.optionMap.get(ctx.value);
4020
+ return /* @__PURE__ */ jsx37(
4021
+ "span",
4022
+ {
4023
+ "data-slot": "searchable-select-value",
4024
+ className: cn(
4025
+ "truncate",
4026
+ !label && "text-muted-foreground"
4027
+ ),
4028
+ children: label || ctx.placeholder
4029
+ }
4030
+ );
4031
+ }
4032
+ if (ctx.values.length === 0) {
4033
+ return /* @__PURE__ */ jsx37(
4034
+ "span",
4035
+ {
4036
+ "data-slot": "searchable-select-value",
4037
+ className: "text-muted-foreground",
4038
+ children: ctx.placeholder
4039
+ }
4040
+ );
4041
+ }
4042
+ const visible = ctx.values.slice(0, ctx.maxCount);
4043
+ const remaining = ctx.values.length - visible.length;
4044
+ return /* @__PURE__ */ jsxs19(
4045
+ "span",
4046
+ {
4047
+ "data-slot": "searchable-select-value",
4048
+ className: "flex flex-wrap items-center gap-1",
4049
+ children: [
4050
+ visible.map((v) => /* @__PURE__ */ jsxs19(
4051
+ Badge,
4052
+ {
4053
+ variant: "secondary",
4054
+ className: "gap-1 pr-1",
4055
+ children: [
4056
+ /* @__PURE__ */ jsx37("span", { className: "truncate max-w-[120px]", children: ctx.optionMap.get(v) || v }),
4057
+ /* @__PURE__ */ jsx37(
4058
+ "span",
4059
+ {
4060
+ role: "button",
4061
+ tabIndex: -1,
4062
+ "aria-label": `Remove ${ctx.optionMap.get(v) || v}`,
4063
+ className: "rounded-sm hover:bg-muted cursor-pointer",
4064
+ onPointerDown: (e) => e.preventDefault(),
4065
+ onClick: (e) => {
4066
+ e.stopPropagation();
4067
+ ctx.setValues(ctx.values.filter((val) => val !== v));
4068
+ },
4069
+ children: /* @__PURE__ */ jsx37(XIcon2, { className: "size-3" })
4070
+ }
4071
+ )
4072
+ ]
4073
+ },
4074
+ v
4075
+ )),
4076
+ remaining > 0 && /* @__PURE__ */ jsxs19(Badge, { variant: "outline", className: "text-muted-foreground", children: [
4077
+ "+",
4078
+ remaining,
4079
+ " more"
4080
+ ] })
4081
+ ]
4082
+ }
4083
+ );
4084
+ };
4085
+ return /* @__PURE__ */ jsxs19(
4086
+ PopoverTrigger,
4087
+ {
4088
+ "data-slot": "searchable-select-trigger",
4089
+ "data-size": size,
4090
+ disabled: ctx.disabled,
4091
+ className: cn(
4092
+ "border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:min-h-9 data-[size=sm]:min-h-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4093
+ ctx.mode === "multiple" && "h-auto flex-wrap whitespace-normal",
4094
+ className
4095
+ ),
4096
+ ...props,
4097
+ children: [
4098
+ renderContent(),
4099
+ /* @__PURE__ */ jsx37(ChevronsUpDown, { className: "size-4 shrink-0 opacity-50" })
4100
+ ]
4101
+ }
4102
+ );
4103
+ }
4104
+ function SearchableSelectContent({
4105
+ className,
4106
+ children,
4107
+ emptyText = "No results found.",
4108
+ ...props
4109
+ }) {
4110
+ const ctx = useSearchableSelect();
4111
+ const groupedOptions = React35.useMemo(() => {
4112
+ if (ctx.options.length === 0) return null;
4113
+ const groups = /* @__PURE__ */ new Map();
4114
+ for (const opt of ctx.options) {
4115
+ const key = opt.group || "";
4116
+ if (!groups.has(key)) groups.set(key, []);
4117
+ groups.get(key).push(opt);
4118
+ }
4119
+ return groups;
4120
+ }, [ctx.options]);
4121
+ const renderAutoItems = () => {
4122
+ if (!groupedOptions) return null;
4123
+ const entries = Array.from(groupedOptions.entries());
4124
+ if (entries.length === 1 && entries[0][0] === "") {
4125
+ return entries[0][1].map((opt) => /* @__PURE__ */ jsx37(
4126
+ SearchableSelectItem,
4127
+ {
4128
+ value: opt.value,
4129
+ disabled: opt.disabled,
4130
+ children: opt.label
4131
+ },
4132
+ opt.value
4133
+ ));
4134
+ }
4135
+ return entries.map(([group, opts]) => /* @__PURE__ */ jsx37(SearchableSelectGroup, { heading: group || void 0, children: opts.map((opt) => /* @__PURE__ */ jsx37(
4136
+ SearchableSelectItem,
4137
+ {
4138
+ value: opt.value,
4139
+ disabled: opt.disabled,
4140
+ children: opt.label
4141
+ },
4142
+ opt.value
4143
+ )) }, group));
4144
+ };
4145
+ return /* @__PURE__ */ jsx37(
4146
+ PopoverContent,
4147
+ {
4148
+ "data-slot": "searchable-select-content",
4149
+ className: cn("w-[var(--radix-popover-trigger-width)] p-0", className),
4150
+ align: "start",
4151
+ ...props,
4152
+ children: /* @__PURE__ */ jsxs19(Command, { children: [
4153
+ ctx.searchable && /* @__PURE__ */ jsx37(CommandInput, { placeholder: ctx.searchPlaceholder }),
4154
+ /* @__PURE__ */ jsxs19(CommandList, { children: [
4155
+ /* @__PURE__ */ jsx37(CommandEmpty, { children: emptyText }),
4156
+ children || renderAutoItems()
4157
+ ] })
4158
+ ] })
4159
+ }
4160
+ );
4161
+ }
4162
+ function SearchableSelectItem({
4163
+ className,
4164
+ value,
4165
+ children,
4166
+ disabled,
4167
+ ...props
4168
+ }) {
4169
+ const ctx = useSearchableSelect();
4170
+ const isSelected = ctx.mode === "single" ? ctx.value === value : ctx.values.includes(value);
4171
+ const handleSelect = () => {
4172
+ if (disabled) return;
4173
+ if (ctx.mode === "single") {
4174
+ ctx.setValue(value === ctx.value ? "" : value);
4175
+ ctx.setOpen(false);
4176
+ } else {
4177
+ ctx.setValues(
4178
+ isSelected ? ctx.values.filter((v) => v !== value) : [...ctx.values, value]
4179
+ );
4180
+ }
4181
+ };
4182
+ return /* @__PURE__ */ jsxs19(
4183
+ CommandItem,
4184
+ {
4185
+ "data-slot": "searchable-select-item",
4186
+ className: cn(
4187
+ "relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none",
4188
+ ctx.mode === "multiple" && "pl-8",
4189
+ className
4190
+ ),
4191
+ onSelect: handleSelect,
4192
+ "data-disabled": disabled || void 0,
4193
+ ...props,
4194
+ children: [
4195
+ ctx.mode === "multiple" && /* @__PURE__ */ jsx37("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx37(
4196
+ "span",
4197
+ {
4198
+ className: cn(
4199
+ "size-4 rounded-sm border border-primary transition-colors",
4200
+ isSelected ? "bg-primary text-primary-foreground" : "bg-transparent"
4201
+ ),
4202
+ children: isSelected && /* @__PURE__ */ jsx37(CheckIcon4, { className: "size-4 p-0.5" })
4203
+ }
4204
+ ) }),
4205
+ /* @__PURE__ */ jsx37("span", { className: "flex-1 truncate", children }),
4206
+ ctx.mode === "single" && isSelected && /* @__PURE__ */ jsx37("span", { className: "absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx37(CheckIcon4, { className: "size-4" }) })
4207
+ ]
4208
+ }
4209
+ );
4210
+ }
4211
+ function SearchableSelectGroup({
4212
+ className,
4213
+ ...props
4214
+ }) {
4215
+ return /* @__PURE__ */ jsx37(
4216
+ CommandGroup,
4217
+ {
4218
+ "data-slot": "searchable-select-group",
4219
+ className: cn(className),
4220
+ ...props
4221
+ }
4222
+ );
4223
+ }
4224
+ function SearchableSelectEmpty({
4225
+ className,
4226
+ children = "No results found.",
4227
+ ...props
4228
+ }) {
4229
+ return /* @__PURE__ */ jsx37(
4230
+ CommandEmpty,
4231
+ {
4232
+ "data-slot": "searchable-select-empty",
4233
+ className: cn(className),
4234
+ ...props,
4235
+ children
4236
+ }
4237
+ );
4238
+ }
4239
+
3875
4240
  // src/components/ui/select.tsx
3876
4241
  import "react";
3877
4242
  import * as SelectPrimitive from "@radix-ui/react-select";
3878
- import { CheckIcon as CheckIcon4, ChevronDownIcon as ChevronDownIcon4, ChevronUpIcon } from "lucide-react";
3879
- import { jsx as jsx37, jsxs as jsxs19 } from "react/jsx-runtime";
4243
+ import { CheckIcon as CheckIcon5, ChevronDownIcon as ChevronDownIcon4, ChevronUpIcon } from "lucide-react";
4244
+ import { jsx as jsx38, jsxs as jsxs20 } from "react/jsx-runtime";
3880
4245
  function Select({
3881
4246
  ...props
3882
4247
  }) {
3883
- return /* @__PURE__ */ jsx37(SelectPrimitive.Root, { "data-slot": "select", ...props });
4248
+ return /* @__PURE__ */ jsx38(SelectPrimitive.Root, { "data-slot": "select", ...props });
3884
4249
  }
3885
4250
  function SelectGroup({
3886
4251
  ...props
3887
4252
  }) {
3888
- return /* @__PURE__ */ jsx37(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
4253
+ return /* @__PURE__ */ jsx38(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
3889
4254
  }
3890
4255
  function SelectValue({
3891
4256
  ...props
3892
4257
  }) {
3893
- return /* @__PURE__ */ jsx37(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
4258
+ return /* @__PURE__ */ jsx38(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
3894
4259
  }
3895
4260
  function SelectTrigger({
3896
4261
  className,
@@ -3898,7 +4263,7 @@ function SelectTrigger({
3898
4263
  children,
3899
4264
  ...props
3900
4265
  }) {
3901
- return /* @__PURE__ */ jsxs19(
4266
+ return /* @__PURE__ */ jsxs20(
3902
4267
  SelectPrimitive.Trigger,
3903
4268
  {
3904
4269
  "data-slot": "select-trigger",
@@ -3910,7 +4275,7 @@ function SelectTrigger({
3910
4275
  ...props,
3911
4276
  children: [
3912
4277
  children,
3913
- /* @__PURE__ */ jsx37(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx37(ChevronDownIcon4, { className: "size-4 opacity-50" }) })
4278
+ /* @__PURE__ */ jsx38(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx38(ChevronDownIcon4, { className: "size-4 opacity-50" }) })
3914
4279
  ]
3915
4280
  }
3916
4281
  );
@@ -3921,7 +4286,7 @@ function SelectContent({
3921
4286
  position = "popper",
3922
4287
  ...props
3923
4288
  }) {
3924
- return /* @__PURE__ */ jsx37(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs19(
4289
+ return /* @__PURE__ */ jsx38(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs20(
3925
4290
  SelectPrimitive.Content,
3926
4291
  {
3927
4292
  "data-slot": "select-content",
@@ -3933,8 +4298,8 @@ function SelectContent({
3933
4298
  position,
3934
4299
  ...props,
3935
4300
  children: [
3936
- /* @__PURE__ */ jsx37(SelectScrollUpButton, {}),
3937
- /* @__PURE__ */ jsx37(
4301
+ /* @__PURE__ */ jsx38(SelectScrollUpButton, {}),
4302
+ /* @__PURE__ */ jsx38(
3938
4303
  SelectPrimitive.Viewport,
3939
4304
  {
3940
4305
  className: cn(
@@ -3944,7 +4309,7 @@ function SelectContent({
3944
4309
  children
3945
4310
  }
3946
4311
  ),
3947
- /* @__PURE__ */ jsx37(SelectScrollDownButton, {})
4312
+ /* @__PURE__ */ jsx38(SelectScrollDownButton, {})
3948
4313
  ]
3949
4314
  }
3950
4315
  ) });
@@ -3953,7 +4318,7 @@ function SelectLabel({
3953
4318
  className,
3954
4319
  ...props
3955
4320
  }) {
3956
- return /* @__PURE__ */ jsx37(
4321
+ return /* @__PURE__ */ jsx38(
3957
4322
  SelectPrimitive.Label,
3958
4323
  {
3959
4324
  "data-slot": "select-label",
@@ -3967,7 +4332,7 @@ function SelectItem({
3967
4332
  children,
3968
4333
  ...props
3969
4334
  }) {
3970
- return /* @__PURE__ */ jsxs19(
4335
+ return /* @__PURE__ */ jsxs20(
3971
4336
  SelectPrimitive.Item,
3972
4337
  {
3973
4338
  "data-slot": "select-item",
@@ -3977,8 +4342,8 @@ function SelectItem({
3977
4342
  ),
3978
4343
  ...props,
3979
4344
  children: [
3980
- /* @__PURE__ */ jsx37("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx37(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx37(CheckIcon4, { className: "size-4" }) }) }),
3981
- /* @__PURE__ */ jsx37(SelectPrimitive.ItemText, { children })
4345
+ /* @__PURE__ */ jsx38("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx38(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx38(CheckIcon5, { className: "size-4" }) }) }),
4346
+ /* @__PURE__ */ jsx38(SelectPrimitive.ItemText, { children })
3982
4347
  ]
3983
4348
  }
3984
4349
  );
@@ -3987,7 +4352,7 @@ function SelectSeparator({
3987
4352
  className,
3988
4353
  ...props
3989
4354
  }) {
3990
- return /* @__PURE__ */ jsx37(
4355
+ return /* @__PURE__ */ jsx38(
3991
4356
  SelectPrimitive.Separator,
3992
4357
  {
3993
4358
  "data-slot": "select-separator",
@@ -4000,7 +4365,7 @@ function SelectScrollUpButton({
4000
4365
  className,
4001
4366
  ...props
4002
4367
  }) {
4003
- return /* @__PURE__ */ jsx37(
4368
+ return /* @__PURE__ */ jsx38(
4004
4369
  SelectPrimitive.ScrollUpButton,
4005
4370
  {
4006
4371
  "data-slot": "select-scroll-up-button",
@@ -4009,7 +4374,7 @@ function SelectScrollUpButton({
4009
4374
  className
4010
4375
  ),
4011
4376
  ...props,
4012
- children: /* @__PURE__ */ jsx37(ChevronUpIcon, { className: "size-4" })
4377
+ children: /* @__PURE__ */ jsx38(ChevronUpIcon, { className: "size-4" })
4013
4378
  }
4014
4379
  );
4015
4380
  }
@@ -4017,7 +4382,7 @@ function SelectScrollDownButton({
4017
4382
  className,
4018
4383
  ...props
4019
4384
  }) {
4020
- return /* @__PURE__ */ jsx37(
4385
+ return /* @__PURE__ */ jsx38(
4021
4386
  SelectPrimitive.ScrollDownButton,
4022
4387
  {
4023
4388
  "data-slot": "select-scroll-down-button",
@@ -4026,7 +4391,7 @@ function SelectScrollDownButton({
4026
4391
  className
4027
4392
  ),
4028
4393
  ...props,
4029
- children: /* @__PURE__ */ jsx37(ChevronDownIcon4, { className: "size-4" })
4394
+ children: /* @__PURE__ */ jsx38(ChevronDownIcon4, { className: "size-4" })
4030
4395
  }
4031
4396
  );
4032
4397
  }
@@ -4034,14 +4399,14 @@ function SelectScrollDownButton({
4034
4399
  // src/components/ui/separator.tsx
4035
4400
  import "react";
4036
4401
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
4037
- import { jsx as jsx38 } from "react/jsx-runtime";
4402
+ import { jsx as jsx39 } from "react/jsx-runtime";
4038
4403
  function Separator5({
4039
4404
  className,
4040
4405
  orientation = "horizontal",
4041
4406
  decorative = true,
4042
4407
  ...props
4043
4408
  }) {
4044
- return /* @__PURE__ */ jsx38(
4409
+ return /* @__PURE__ */ jsx39(
4045
4410
  SeparatorPrimitive.Root,
4046
4411
  {
4047
4412
  "data-slot": "separator",
@@ -4058,32 +4423,32 @@ function Separator5({
4058
4423
 
4059
4424
  // src/components/ui/sheet.tsx
4060
4425
  import * as SheetPrimitive from "@radix-ui/react-dialog";
4061
- import { XIcon as XIcon2 } from "lucide-react";
4426
+ import { XIcon as XIcon3 } from "lucide-react";
4062
4427
  import "react";
4063
- import { jsx as jsx39, jsxs as jsxs20 } from "react/jsx-runtime";
4428
+ import { jsx as jsx40, jsxs as jsxs21 } from "react/jsx-runtime";
4064
4429
  function Sheet({ ...props }) {
4065
- return /* @__PURE__ */ jsx39(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
4430
+ return /* @__PURE__ */ jsx40(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
4066
4431
  }
4067
4432
  function SheetTrigger({
4068
4433
  ...props
4069
4434
  }) {
4070
- return /* @__PURE__ */ jsx39(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
4435
+ return /* @__PURE__ */ jsx40(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
4071
4436
  }
4072
4437
  function SheetClose({
4073
4438
  ...props
4074
4439
  }) {
4075
- return /* @__PURE__ */ jsx39(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
4440
+ return /* @__PURE__ */ jsx40(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
4076
4441
  }
4077
4442
  function SheetPortal({
4078
4443
  ...props
4079
4444
  }) {
4080
- return /* @__PURE__ */ jsx39(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
4445
+ return /* @__PURE__ */ jsx40(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
4081
4446
  }
4082
4447
  function SheetOverlay({
4083
4448
  className,
4084
4449
  ...props
4085
4450
  }) {
4086
- return /* @__PURE__ */ jsx39(
4451
+ return /* @__PURE__ */ jsx40(
4087
4452
  SheetPrimitive.Overlay,
4088
4453
  {
4089
4454
  "data-slot": "sheet-overlay",
@@ -4102,9 +4467,9 @@ function SheetContent({
4102
4467
  showCloseButton = true,
4103
4468
  ...props
4104
4469
  }) {
4105
- return /* @__PURE__ */ jsxs20(SheetPortal, { children: [
4106
- /* @__PURE__ */ jsx39(SheetOverlay, {}),
4107
- /* @__PURE__ */ jsxs20(
4470
+ return /* @__PURE__ */ jsxs21(SheetPortal, { children: [
4471
+ /* @__PURE__ */ jsx40(SheetOverlay, {}),
4472
+ /* @__PURE__ */ jsxs21(
4108
4473
  SheetPrimitive.Content,
4109
4474
  {
4110
4475
  "data-slot": "sheet-content",
@@ -4119,9 +4484,9 @@ function SheetContent({
4119
4484
  ...props,
4120
4485
  children: [
4121
4486
  children,
4122
- showCloseButton && /* @__PURE__ */ jsxs20(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: [
4123
- /* @__PURE__ */ jsx39(XIcon2, { className: "size-4" }),
4124
- /* @__PURE__ */ jsx39("span", { className: "sr-only", children: "Close" })
4487
+ showCloseButton && /* @__PURE__ */ jsxs21(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: [
4488
+ /* @__PURE__ */ jsx40(XIcon3, { className: "size-4" }),
4489
+ /* @__PURE__ */ jsx40("span", { className: "sr-only", children: "Close" })
4125
4490
  ] })
4126
4491
  ]
4127
4492
  }
@@ -4129,7 +4494,7 @@ function SheetContent({
4129
4494
  ] });
4130
4495
  }
4131
4496
  function SheetHeader({ className, ...props }) {
4132
- return /* @__PURE__ */ jsx39(
4497
+ return /* @__PURE__ */ jsx40(
4133
4498
  "div",
4134
4499
  {
4135
4500
  "data-slot": "sheet-header",
@@ -4139,7 +4504,7 @@ function SheetHeader({ className, ...props }) {
4139
4504
  );
4140
4505
  }
4141
4506
  function SheetFooter({ className, ...props }) {
4142
- return /* @__PURE__ */ jsx39(
4507
+ return /* @__PURE__ */ jsx40(
4143
4508
  "div",
4144
4509
  {
4145
4510
  "data-slot": "sheet-footer",
@@ -4152,7 +4517,7 @@ function SheetTitle({
4152
4517
  className,
4153
4518
  ...props
4154
4519
  }) {
4155
- return /* @__PURE__ */ jsx39(
4520
+ return /* @__PURE__ */ jsx40(
4156
4521
  SheetPrimitive.Title,
4157
4522
  {
4158
4523
  "data-slot": "sheet-title",
@@ -4165,7 +4530,7 @@ function SheetDescription({
4165
4530
  className,
4166
4531
  ...props
4167
4532
  }) {
4168
- return /* @__PURE__ */ jsx39(
4533
+ return /* @__PURE__ */ jsx40(
4169
4534
  SheetPrimitive.Description,
4170
4535
  {
4171
4536
  "data-slot": "sheet-description",
@@ -4179,12 +4544,12 @@ function SheetDescription({
4179
4544
  import { Slot as Slot6 } from "@radix-ui/react-slot";
4180
4545
  import { cva as cva7 } from "class-variance-authority";
4181
4546
  import { PanelLeftIcon } from "lucide-react";
4182
- import * as React40 from "react";
4547
+ import * as React41 from "react";
4183
4548
 
4184
4549
  // src/components/ui/skeleton.tsx
4185
- import { jsx as jsx40 } from "react/jsx-runtime";
4550
+ import { jsx as jsx41 } from "react/jsx-runtime";
4186
4551
  function Skeleton({ className, ...props }) {
4187
- return /* @__PURE__ */ jsx40(
4552
+ return /* @__PURE__ */ jsx41(
4188
4553
  "div",
4189
4554
  {
4190
4555
  "data-slot": "skeleton",
@@ -4197,12 +4562,12 @@ function Skeleton({ className, ...props }) {
4197
4562
  // src/components/ui/tooltip.tsx
4198
4563
  import "react";
4199
4564
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
4200
- import { jsx as jsx41, jsxs as jsxs21 } from "react/jsx-runtime";
4565
+ import { jsx as jsx42, jsxs as jsxs22 } from "react/jsx-runtime";
4201
4566
  function TooltipProvider({
4202
4567
  delayDuration = 0,
4203
4568
  ...props
4204
4569
  }) {
4205
- return /* @__PURE__ */ jsx41(
4570
+ return /* @__PURE__ */ jsx42(
4206
4571
  TooltipPrimitive.Provider,
4207
4572
  {
4208
4573
  "data-slot": "tooltip-provider",
@@ -4214,12 +4579,12 @@ function TooltipProvider({
4214
4579
  function Tooltip2({
4215
4580
  ...props
4216
4581
  }) {
4217
- return /* @__PURE__ */ jsx41(TooltipProvider, { children: /* @__PURE__ */ jsx41(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
4582
+ return /* @__PURE__ */ jsx42(TooltipProvider, { children: /* @__PURE__ */ jsx42(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
4218
4583
  }
4219
4584
  function TooltipTrigger({
4220
4585
  ...props
4221
4586
  }) {
4222
- return /* @__PURE__ */ jsx41(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
4587
+ return /* @__PURE__ */ jsx42(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
4223
4588
  }
4224
4589
  function TooltipContent({
4225
4590
  className,
@@ -4227,7 +4592,7 @@ function TooltipContent({
4227
4592
  children,
4228
4593
  ...props
4229
4594
  }) {
4230
- return /* @__PURE__ */ jsx41(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs21(
4595
+ return /* @__PURE__ */ jsx42(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs22(
4231
4596
  TooltipPrimitive.Content,
4232
4597
  {
4233
4598
  "data-slot": "tooltip-content",
@@ -4239,18 +4604,18 @@ function TooltipContent({
4239
4604
  ...props,
4240
4605
  children: [
4241
4606
  children,
4242
- /* @__PURE__ */ jsx41(TooltipPrimitive.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
4607
+ /* @__PURE__ */ jsx42(TooltipPrimitive.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
4243
4608
  ]
4244
4609
  }
4245
4610
  ) });
4246
4611
  }
4247
4612
 
4248
4613
  // src/hooks/use-mobile.ts
4249
- import * as React39 from "react";
4614
+ import * as React40 from "react";
4250
4615
  var MOBILE_BREAKPOINT = 768;
4251
4616
  function useIsMobile() {
4252
- const [isMobile, setIsMobile] = React39.useState(void 0);
4253
- React39.useEffect(() => {
4617
+ const [isMobile, setIsMobile] = React40.useState(void 0);
4618
+ React40.useEffect(() => {
4254
4619
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
4255
4620
  const onChange = () => {
4256
4621
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -4263,16 +4628,16 @@ function useIsMobile() {
4263
4628
  }
4264
4629
 
4265
4630
  // src/components/ui/sidebar.tsx
4266
- import { jsx as jsx42, jsxs as jsxs22 } from "react/jsx-runtime";
4631
+ import { jsx as jsx43, jsxs as jsxs23 } from "react/jsx-runtime";
4267
4632
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
4268
4633
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
4269
4634
  var SIDEBAR_WIDTH = "18rem";
4270
4635
  var SIDEBAR_WIDTH_MOBILE = "18rem";
4271
4636
  var SIDEBAR_WIDTH_ICON = "3rem";
4272
4637
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
4273
- var SidebarContext = React40.createContext(null);
4638
+ var SidebarContext = React41.createContext(null);
4274
4639
  function useSidebar() {
4275
- const context = React40.useContext(SidebarContext);
4640
+ const context = React41.useContext(SidebarContext);
4276
4641
  if (!context) {
4277
4642
  throw new Error("useSidebar must be used within a SidebarProvider.");
4278
4643
  }
@@ -4288,10 +4653,10 @@ function SidebarProvider({
4288
4653
  ...props
4289
4654
  }) {
4290
4655
  const isMobile = useIsMobile();
4291
- const [openMobile, setOpenMobile] = React40.useState(false);
4292
- const [_open, _setOpen] = React40.useState(defaultOpen);
4656
+ const [openMobile, setOpenMobile] = React41.useState(false);
4657
+ const [_open, _setOpen] = React41.useState(defaultOpen);
4293
4658
  const open = openProp ?? _open;
4294
- const setOpen = React40.useCallback(
4659
+ const setOpen = React41.useCallback(
4295
4660
  (value) => {
4296
4661
  const openState = typeof value === "function" ? value(open) : value;
4297
4662
  if (setOpenProp) {
@@ -4303,10 +4668,10 @@ function SidebarProvider({
4303
4668
  },
4304
4669
  [setOpenProp, open]
4305
4670
  );
4306
- const toggleSidebar = React40.useCallback(() => {
4671
+ const toggleSidebar = React41.useCallback(() => {
4307
4672
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
4308
4673
  }, [isMobile, setOpen, setOpenMobile]);
4309
- React40.useEffect(() => {
4674
+ React41.useEffect(() => {
4310
4675
  const handleKeyDown = (event) => {
4311
4676
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
4312
4677
  event.preventDefault();
@@ -4317,7 +4682,7 @@ function SidebarProvider({
4317
4682
  return () => window.removeEventListener("keydown", handleKeyDown);
4318
4683
  }, [toggleSidebar]);
4319
4684
  const state = open ? "expanded" : "collapsed";
4320
- const contextValue = React40.useMemo(
4685
+ const contextValue = React41.useMemo(
4321
4686
  () => ({
4322
4687
  state,
4323
4688
  open,
@@ -4329,7 +4694,7 @@ function SidebarProvider({
4329
4694
  }),
4330
4695
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
4331
4696
  );
4332
- return /* @__PURE__ */ jsx42(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx42(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx42(
4697
+ return /* @__PURE__ */ jsx43(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx43(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx43(
4333
4698
  "div",
4334
4699
  {
4335
4700
  "data-slot": "sidebar-wrapper",
@@ -4357,7 +4722,7 @@ function Sidebar({
4357
4722
  }) {
4358
4723
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
4359
4724
  if (collapsible === "none") {
4360
- return /* @__PURE__ */ jsx42(
4725
+ return /* @__PURE__ */ jsx43(
4361
4726
  "div",
4362
4727
  {
4363
4728
  "data-slot": "sidebar",
@@ -4371,7 +4736,7 @@ function Sidebar({
4371
4736
  );
4372
4737
  }
4373
4738
  if (isMobile) {
4374
- return /* @__PURE__ */ jsx42(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs22(
4739
+ return /* @__PURE__ */ jsx43(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs23(
4375
4740
  SheetContent,
4376
4741
  {
4377
4742
  "data-sidebar": "sidebar",
@@ -4383,16 +4748,16 @@ function Sidebar({
4383
4748
  },
4384
4749
  side,
4385
4750
  children: [
4386
- /* @__PURE__ */ jsxs22(SheetHeader, { className: "sr-only", children: [
4387
- /* @__PURE__ */ jsx42(SheetTitle, { children: "Sidebar" }),
4388
- /* @__PURE__ */ jsx42(SheetDescription, { children: "Displays the mobile sidebar." })
4751
+ /* @__PURE__ */ jsxs23(SheetHeader, { className: "sr-only", children: [
4752
+ /* @__PURE__ */ jsx43(SheetTitle, { children: "Sidebar" }),
4753
+ /* @__PURE__ */ jsx43(SheetDescription, { children: "Displays the mobile sidebar." })
4389
4754
  ] }),
4390
- /* @__PURE__ */ jsx42("div", { className: "flex h-full w-full flex-col", children })
4755
+ /* @__PURE__ */ jsx43("div", { className: "flex h-full w-full flex-col", children })
4391
4756
  ]
4392
4757
  }
4393
4758
  ) });
4394
4759
  }
4395
- return /* @__PURE__ */ jsxs22(
4760
+ return /* @__PURE__ */ jsxs23(
4396
4761
  "div",
4397
4762
  {
4398
4763
  className: "group peer text-sidebar-foreground hidden md:block",
@@ -4402,7 +4767,7 @@ function Sidebar({
4402
4767
  "data-side": side,
4403
4768
  "data-slot": "sidebar",
4404
4769
  children: [
4405
- /* @__PURE__ */ jsx42(
4770
+ /* @__PURE__ */ jsx43(
4406
4771
  "div",
4407
4772
  {
4408
4773
  "data-slot": "sidebar-gap",
@@ -4414,7 +4779,7 @@ function Sidebar({
4414
4779
  )
4415
4780
  }
4416
4781
  ),
4417
- /* @__PURE__ */ jsx42(
4782
+ /* @__PURE__ */ jsx43(
4418
4783
  "div",
4419
4784
  {
4420
4785
  "data-slot": "sidebar-container",
@@ -4426,7 +4791,7 @@ function Sidebar({
4426
4791
  className
4427
4792
  ),
4428
4793
  ...props,
4429
- children: /* @__PURE__ */ jsx42(
4794
+ children: /* @__PURE__ */ jsx43(
4430
4795
  "div",
4431
4796
  {
4432
4797
  "data-sidebar": "sidebar",
@@ -4447,7 +4812,7 @@ function SidebarTrigger({
4447
4812
  ...props
4448
4813
  }) {
4449
4814
  const { toggleSidebar } = useSidebar();
4450
- return /* @__PURE__ */ jsxs22(
4815
+ return /* @__PURE__ */ jsxs23(
4451
4816
  Button,
4452
4817
  {
4453
4818
  "data-sidebar": "trigger",
@@ -4461,15 +4826,15 @@ function SidebarTrigger({
4461
4826
  },
4462
4827
  ...props,
4463
4828
  children: [
4464
- /* @__PURE__ */ jsx42(PanelLeftIcon, {}),
4465
- /* @__PURE__ */ jsx42("span", { className: "sr-only", children: "Toggle Sidebar" })
4829
+ /* @__PURE__ */ jsx43(PanelLeftIcon, {}),
4830
+ /* @__PURE__ */ jsx43("span", { className: "sr-only", children: "Toggle Sidebar" })
4466
4831
  ]
4467
4832
  }
4468
4833
  );
4469
4834
  }
4470
4835
  function SidebarRail({ className, ...props }) {
4471
4836
  const { toggleSidebar } = useSidebar();
4472
- return /* @__PURE__ */ jsx42(
4837
+ return /* @__PURE__ */ jsx43(
4473
4838
  "button",
4474
4839
  {
4475
4840
  "data-sidebar": "rail",
@@ -4492,7 +4857,7 @@ function SidebarRail({ className, ...props }) {
4492
4857
  );
4493
4858
  }
4494
4859
  function SidebarInset({ className, ...props }) {
4495
- return /* @__PURE__ */ jsx42(
4860
+ return /* @__PURE__ */ jsx43(
4496
4861
  "main",
4497
4862
  {
4498
4863
  "data-slot": "sidebar-inset",
@@ -4509,7 +4874,7 @@ function SidebarInput({
4509
4874
  className,
4510
4875
  ...props
4511
4876
  }) {
4512
- return /* @__PURE__ */ jsx42(
4877
+ return /* @__PURE__ */ jsx43(
4513
4878
  Input,
4514
4879
  {
4515
4880
  "data-slot": "sidebar-input",
@@ -4520,7 +4885,7 @@ function SidebarInput({
4520
4885
  );
4521
4886
  }
4522
4887
  function SidebarHeader({ className, ...props }) {
4523
- return /* @__PURE__ */ jsx42(
4888
+ return /* @__PURE__ */ jsx43(
4524
4889
  "div",
4525
4890
  {
4526
4891
  "data-slot": "sidebar-header",
@@ -4531,7 +4896,7 @@ function SidebarHeader({ className, ...props }) {
4531
4896
  );
4532
4897
  }
4533
4898
  function SidebarFooter({ className, ...props }) {
4534
- return /* @__PURE__ */ jsx42(
4899
+ return /* @__PURE__ */ jsx43(
4535
4900
  "div",
4536
4901
  {
4537
4902
  "data-slot": "sidebar-footer",
@@ -4545,7 +4910,7 @@ function SidebarSeparator({
4545
4910
  className,
4546
4911
  ...props
4547
4912
  }) {
4548
- return /* @__PURE__ */ jsx42(
4913
+ return /* @__PURE__ */ jsx43(
4549
4914
  Separator5,
4550
4915
  {
4551
4916
  "data-slot": "sidebar-separator",
@@ -4556,7 +4921,7 @@ function SidebarSeparator({
4556
4921
  );
4557
4922
  }
4558
4923
  function SidebarContent({ className, ...props }) {
4559
- return /* @__PURE__ */ jsx42(
4924
+ return /* @__PURE__ */ jsx43(
4560
4925
  "div",
4561
4926
  {
4562
4927
  "data-slot": "sidebar-content",
@@ -4570,7 +4935,7 @@ function SidebarContent({ className, ...props }) {
4570
4935
  );
4571
4936
  }
4572
4937
  function SidebarGroup({ className, ...props }) {
4573
- return /* @__PURE__ */ jsx42(
4938
+ return /* @__PURE__ */ jsx43(
4574
4939
  "div",
4575
4940
  {
4576
4941
  "data-slot": "sidebar-group",
@@ -4586,7 +4951,7 @@ function SidebarGroupLabel({
4586
4951
  ...props
4587
4952
  }) {
4588
4953
  const Comp = asChild ? Slot6 : "div";
4589
- return /* @__PURE__ */ jsx42(
4954
+ return /* @__PURE__ */ jsx43(
4590
4955
  Comp,
4591
4956
  {
4592
4957
  "data-slot": "sidebar-group-label",
@@ -4606,7 +4971,7 @@ function SidebarGroupAction({
4606
4971
  ...props
4607
4972
  }) {
4608
4973
  const Comp = asChild ? Slot6 : "button";
4609
- return /* @__PURE__ */ jsx42(
4974
+ return /* @__PURE__ */ jsx43(
4610
4975
  Comp,
4611
4976
  {
4612
4977
  "data-slot": "sidebar-group-action",
@@ -4626,7 +4991,7 @@ function SidebarGroupContent({
4626
4991
  className,
4627
4992
  ...props
4628
4993
  }) {
4629
- return /* @__PURE__ */ jsx42(
4994
+ return /* @__PURE__ */ jsx43(
4630
4995
  "div",
4631
4996
  {
4632
4997
  "data-slot": "sidebar-group-content",
@@ -4637,7 +5002,7 @@ function SidebarGroupContent({
4637
5002
  );
4638
5003
  }
4639
5004
  function SidebarMenu({ className, ...props }) {
4640
- return /* @__PURE__ */ jsx42(
5005
+ return /* @__PURE__ */ jsx43(
4641
5006
  "ul",
4642
5007
  {
4643
5008
  "data-slot": "sidebar-menu",
@@ -4648,7 +5013,7 @@ function SidebarMenu({ className, ...props }) {
4648
5013
  );
4649
5014
  }
4650
5015
  function SidebarMenuItem({ className, ...props }) {
4651
- return /* @__PURE__ */ jsx42(
5016
+ return /* @__PURE__ */ jsx43(
4652
5017
  "li",
4653
5018
  {
4654
5019
  "data-slot": "sidebar-menu-item",
@@ -4689,7 +5054,7 @@ function SidebarMenuButton({
4689
5054
  }) {
4690
5055
  const Comp = asChild ? Slot6 : "button";
4691
5056
  const { isMobile, state } = useSidebar();
4692
- const button = /* @__PURE__ */ jsx42(
5057
+ const button = /* @__PURE__ */ jsx43(
4693
5058
  Comp,
4694
5059
  {
4695
5060
  "data-slot": "sidebar-menu-button",
@@ -4708,9 +5073,9 @@ function SidebarMenuButton({
4708
5073
  children: tooltip
4709
5074
  };
4710
5075
  }
4711
- return /* @__PURE__ */ jsxs22(Tooltip2, { children: [
4712
- /* @__PURE__ */ jsx42(TooltipTrigger, { asChild: true, children: button }),
4713
- /* @__PURE__ */ jsx42(
5076
+ return /* @__PURE__ */ jsxs23(Tooltip2, { children: [
5077
+ /* @__PURE__ */ jsx43(TooltipTrigger, { asChild: true, children: button }),
5078
+ /* @__PURE__ */ jsx43(
4714
5079
  TooltipContent,
4715
5080
  {
4716
5081
  side: "right",
@@ -4728,7 +5093,7 @@ function SidebarMenuAction({
4728
5093
  ...props
4729
5094
  }) {
4730
5095
  const Comp = asChild ? Slot6 : "button";
4731
- return /* @__PURE__ */ jsx42(
5096
+ return /* @__PURE__ */ jsx43(
4732
5097
  Comp,
4733
5098
  {
4734
5099
  "data-slot": "sidebar-menu-action",
@@ -4752,7 +5117,7 @@ function SidebarMenuBadge({
4752
5117
  className,
4753
5118
  ...props
4754
5119
  }) {
4755
- return /* @__PURE__ */ jsx42(
5120
+ return /* @__PURE__ */ jsx43(
4756
5121
  "div",
4757
5122
  {
4758
5123
  "data-slot": "sidebar-menu-badge",
@@ -4775,10 +5140,10 @@ function SidebarMenuSkeleton({
4775
5140
  showIcon = false,
4776
5141
  ...props
4777
5142
  }) {
4778
- const width = React40.useMemo(() => {
5143
+ const width = React41.useMemo(() => {
4779
5144
  return `${Math.floor(Math.random() * 40) + 50}%`;
4780
5145
  }, []);
4781
- return /* @__PURE__ */ jsxs22(
5146
+ return /* @__PURE__ */ jsxs23(
4782
5147
  "div",
4783
5148
  {
4784
5149
  "data-slot": "sidebar-menu-skeleton",
@@ -4786,14 +5151,14 @@ function SidebarMenuSkeleton({
4786
5151
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
4787
5152
  ...props,
4788
5153
  children: [
4789
- showIcon && /* @__PURE__ */ jsx42(
5154
+ showIcon && /* @__PURE__ */ jsx43(
4790
5155
  Skeleton,
4791
5156
  {
4792
5157
  className: "size-4 rounded-md",
4793
5158
  "data-sidebar": "menu-skeleton-icon"
4794
5159
  }
4795
5160
  ),
4796
- /* @__PURE__ */ jsx42(
5161
+ /* @__PURE__ */ jsx43(
4797
5162
  Skeleton,
4798
5163
  {
4799
5164
  className: "h-4 max-w-(--skeleton-width) flex-1",
@@ -4808,7 +5173,7 @@ function SidebarMenuSkeleton({
4808
5173
  );
4809
5174
  }
4810
5175
  function SidebarMenuSub({ className, ...props }) {
4811
- return /* @__PURE__ */ jsx42(
5176
+ return /* @__PURE__ */ jsx43(
4812
5177
  "ul",
4813
5178
  {
4814
5179
  "data-slot": "sidebar-menu-sub",
@@ -4826,7 +5191,7 @@ function SidebarMenuSubItem({
4826
5191
  className,
4827
5192
  ...props
4828
5193
  }) {
4829
- return /* @__PURE__ */ jsx42(
5194
+ return /* @__PURE__ */ jsx43(
4830
5195
  "li",
4831
5196
  {
4832
5197
  "data-slot": "sidebar-menu-sub-item",
@@ -4844,7 +5209,7 @@ function SidebarMenuSubButton({
4844
5209
  ...props
4845
5210
  }) {
4846
5211
  const Comp = asChild ? Slot6 : "a";
4847
- return /* @__PURE__ */ jsx42(
5212
+ return /* @__PURE__ */ jsx43(
4848
5213
  Comp,
4849
5214
  {
4850
5215
  "data-slot": "sidebar-menu-sub-button",
@@ -4865,9 +5230,9 @@ function SidebarMenuSubButton({
4865
5230
  }
4866
5231
 
4867
5232
  // src/components/ui/slider.tsx
4868
- import * as React41 from "react";
5233
+ import * as React42 from "react";
4869
5234
  import * as SliderPrimitive from "@radix-ui/react-slider";
4870
- import { jsx as jsx43, jsxs as jsxs23 } from "react/jsx-runtime";
5235
+ import { jsx as jsx44, jsxs as jsxs24 } from "react/jsx-runtime";
4871
5236
  function Slider({
4872
5237
  className,
4873
5238
  defaultValue,
@@ -4876,11 +5241,11 @@ function Slider({
4876
5241
  max = 100,
4877
5242
  ...props
4878
5243
  }) {
4879
- const _values = React41.useMemo(
5244
+ const _values = React42.useMemo(
4880
5245
  () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
4881
5246
  [value, defaultValue, min, max]
4882
5247
  );
4883
- return /* @__PURE__ */ jsxs23(
5248
+ return /* @__PURE__ */ jsxs24(
4884
5249
  SliderPrimitive.Root,
4885
5250
  {
4886
5251
  "data-slot": "slider",
@@ -4894,14 +5259,14 @@ function Slider({
4894
5259
  ),
4895
5260
  ...props,
4896
5261
  children: [
4897
- /* @__PURE__ */ jsx43(
5262
+ /* @__PURE__ */ jsx44(
4898
5263
  SliderPrimitive.Track,
4899
5264
  {
4900
5265
  "data-slot": "slider-track",
4901
5266
  className: cn(
4902
5267
  "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"
4903
5268
  ),
4904
- children: /* @__PURE__ */ jsx43(
5269
+ children: /* @__PURE__ */ jsx44(
4905
5270
  SliderPrimitive.Range,
4906
5271
  {
4907
5272
  "data-slot": "slider-range",
@@ -4912,7 +5277,7 @@ function Slider({
4912
5277
  )
4913
5278
  }
4914
5279
  ),
4915
- Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx43(
5280
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx44(
4916
5281
  SliderPrimitive.Thumb,
4917
5282
  {
4918
5283
  "data-slot": "slider-thumb",
@@ -4929,7 +5294,7 @@ function Slider({
4929
5294
  import "react";
4930
5295
 
4931
5296
  // src/components/ui/useMediaQuery.ts
4932
- import { useEffect as useEffect7, useState as useState6 } from "react";
5297
+ import { useEffect as useEffect7, useState as useState7 } from "react";
4933
5298
  function useMediaQuery(query) {
4934
5299
  const getMatches = (query2) => {
4935
5300
  if (typeof window !== "undefined") {
@@ -4937,7 +5302,7 @@ function useMediaQuery(query) {
4937
5302
  }
4938
5303
  return false;
4939
5304
  };
4940
- const [matches, setMatches] = useState6(getMatches(query));
5305
+ const [matches, setMatches] = useState7(getMatches(query));
4941
5306
  function handleChange() {
4942
5307
  setMatches(getMatches(query));
4943
5308
  }
@@ -4961,10 +5326,10 @@ function useMediaQuery(query) {
4961
5326
  }
4962
5327
 
4963
5328
  // src/components/ui/smart-dialog-drawer.tsx
4964
- import { Fragment as Fragment3, jsx as jsx44 } from "react/jsx-runtime";
5329
+ import { Fragment as Fragment3, jsx as jsx45 } from "react/jsx-runtime";
4965
5330
  var SmartDialog = ({ children, ...props }) => {
4966
5331
  const isMobile = useMediaQuery("(max-width: 600px)");
4967
- return isMobile ? /* @__PURE__ */ jsx44(Drawer, { ...props, children }) : /* @__PURE__ */ jsx44(Dialog, { ...props, children });
5332
+ return isMobile ? /* @__PURE__ */ jsx45(Drawer, { ...props, children }) : /* @__PURE__ */ jsx45(Dialog, { ...props, children });
4968
5333
  };
4969
5334
  var SmartDialogContent = ({
4970
5335
  children,
@@ -4974,14 +5339,14 @@ var SmartDialogContent = ({
4974
5339
  ...props
4975
5340
  }) => {
4976
5341
  const isMobile = useMediaQuery("(max-width: 600px)");
4977
- return isMobile ? /* @__PURE__ */ jsx44(
5342
+ return isMobile ? /* @__PURE__ */ jsx45(
4978
5343
  DrawerContent,
4979
5344
  {
4980
5345
  ...props,
4981
5346
  withCloseButton: withCloseButton ?? showCloseButton ?? true,
4982
5347
  children
4983
5348
  }
4984
- ) : /* @__PURE__ */ jsx44(
5349
+ ) : /* @__PURE__ */ jsx45(
4985
5350
  DialogContent,
4986
5351
  {
4987
5352
  ...props,
@@ -4996,39 +5361,39 @@ var SmartDialogDescription = ({
4996
5361
  ...props
4997
5362
  }) => {
4998
5363
  const isMobile = useMediaQuery("(max-width: 600px)");
4999
- return isMobile ? /* @__PURE__ */ jsx44(DrawerDescription, { ...props, children }) : /* @__PURE__ */ jsx44(DialogDescription, { ...props, children });
5364
+ return isMobile ? /* @__PURE__ */ jsx45(DrawerDescription, { ...props, children }) : /* @__PURE__ */ jsx45(DialogDescription, { ...props, children });
5000
5365
  };
5001
5366
  var SmartDialogHeader = ({ children, ...props }) => {
5002
5367
  const isMobile = useMediaQuery("(max-width: 600px)");
5003
- return isMobile ? /* @__PURE__ */ jsx44(DrawerHeader, { ...props, children }) : /* @__PURE__ */ jsx44(DialogHeader, { ...props, children });
5368
+ return isMobile ? /* @__PURE__ */ jsx45(DrawerHeader, { ...props, children }) : /* @__PURE__ */ jsx45(DialogHeader, { ...props, children });
5004
5369
  };
5005
5370
  var SmartDialogTitle = ({ children, ...props }) => {
5006
5371
  const isMobile = useMediaQuery("(max-width: 600px)");
5007
- return isMobile ? /* @__PURE__ */ jsx44(DrawerTitle, { ...props, children }) : /* @__PURE__ */ jsx44(DialogTitle, { ...props, children });
5372
+ return isMobile ? /* @__PURE__ */ jsx45(DrawerTitle, { ...props, children }) : /* @__PURE__ */ jsx45(DialogTitle, { ...props, children });
5008
5373
  };
5009
5374
  var SmartDialogTrigger = ({
5010
5375
  children,
5011
5376
  ...props
5012
5377
  }) => {
5013
5378
  const isMobile = useMediaQuery("(max-width: 600px)");
5014
- return isMobile ? /* @__PURE__ */ jsx44(DrawerTrigger, { ...props, children }) : /* @__PURE__ */ jsx44(DialogTrigger, { ...props, children });
5379
+ return isMobile ? /* @__PURE__ */ jsx45(DrawerTrigger, { ...props, children }) : /* @__PURE__ */ jsx45(DialogTrigger, { ...props, children });
5015
5380
  };
5016
5381
  var SmartDialogFooter = ({ children, ...props }) => {
5017
5382
  const isMobile = useMediaQuery("(max-width: 600px)");
5018
- return isMobile ? /* @__PURE__ */ jsx44(DrawerFooter, { ...props, children }) : /* @__PURE__ */ jsx44(DialogFooter, { ...props, children });
5383
+ return isMobile ? /* @__PURE__ */ jsx45(DrawerFooter, { ...props, children }) : /* @__PURE__ */ jsx45(DialogFooter, { ...props, children });
5019
5384
  };
5020
5385
  var SmartDialogClose = ({ children, ...props }) => {
5021
5386
  const isMobile = useMediaQuery("(max-width: 600px)");
5022
- return isMobile ? /* @__PURE__ */ jsx44(Fragment3, { children: /* @__PURE__ */ jsx44(DrawerClose, { ...props, children }) }) : /* @__PURE__ */ jsx44(DialogClose, { ...props, children });
5387
+ return isMobile ? /* @__PURE__ */ jsx45(Fragment3, { children: /* @__PURE__ */ jsx45(DrawerClose, { ...props, children }) }) : /* @__PURE__ */ jsx45(DialogClose, { ...props, children });
5023
5388
  };
5024
5389
 
5025
5390
  // src/components/ui/sonner.tsx
5026
5391
  import { useTheme } from "next-themes";
5027
5392
  import { Toaster as Sonner } from "sonner";
5028
- import { jsx as jsx45 } from "react/jsx-runtime";
5393
+ import { jsx as jsx46 } from "react/jsx-runtime";
5029
5394
  var Toaster = ({ ...props }) => {
5030
5395
  const { theme = "system" } = useTheme();
5031
- return /* @__PURE__ */ jsx45(
5396
+ return /* @__PURE__ */ jsx46(
5032
5397
  Sonner,
5033
5398
  {
5034
5399
  theme,
@@ -5046,12 +5411,12 @@ var Toaster = ({ ...props }) => {
5046
5411
  // src/components/ui/switch.tsx
5047
5412
  import * as SwitchPrimitive from "@radix-ui/react-switch";
5048
5413
  import "react";
5049
- import { jsx as jsx46 } from "react/jsx-runtime";
5414
+ import { jsx as jsx47 } from "react/jsx-runtime";
5050
5415
  function Switch({
5051
5416
  className,
5052
5417
  ...props
5053
5418
  }) {
5054
- return /* @__PURE__ */ jsx46(
5419
+ return /* @__PURE__ */ jsx47(
5055
5420
  SwitchPrimitive.Root,
5056
5421
  {
5057
5422
  "data-slot": "switch",
@@ -5060,7 +5425,7 @@ function Switch({
5060
5425
  className
5061
5426
  ),
5062
5427
  ...props,
5063
- children: /* @__PURE__ */ jsx46(
5428
+ children: /* @__PURE__ */ jsx47(
5064
5429
  SwitchPrimitive.Thumb,
5065
5430
  {
5066
5431
  "data-slot": "switch-thumb",
@@ -5075,14 +5440,14 @@ function Switch({
5075
5440
 
5076
5441
  // src/components/ui/table.tsx
5077
5442
  import "react";
5078
- import { jsx as jsx47 } from "react/jsx-runtime";
5443
+ import { jsx as jsx48 } from "react/jsx-runtime";
5079
5444
  function Table({ className, ...props }) {
5080
- return /* @__PURE__ */ jsx47(
5445
+ return /* @__PURE__ */ jsx48(
5081
5446
  "div",
5082
5447
  {
5083
5448
  "data-slot": "table-container",
5084
5449
  className: "relative w-full overflow-x-auto",
5085
- children: /* @__PURE__ */ jsx47(
5450
+ children: /* @__PURE__ */ jsx48(
5086
5451
  "table",
5087
5452
  {
5088
5453
  "data-slot": "table",
@@ -5094,7 +5459,7 @@ function Table({ className, ...props }) {
5094
5459
  );
5095
5460
  }
5096
5461
  function TableHeader({ className, ...props }) {
5097
- return /* @__PURE__ */ jsx47(
5462
+ return /* @__PURE__ */ jsx48(
5098
5463
  "thead",
5099
5464
  {
5100
5465
  "data-slot": "table-header",
@@ -5104,7 +5469,7 @@ function TableHeader({ className, ...props }) {
5104
5469
  );
5105
5470
  }
5106
5471
  function TableBody({ className, ...props }) {
5107
- return /* @__PURE__ */ jsx47(
5472
+ return /* @__PURE__ */ jsx48(
5108
5473
  "tbody",
5109
5474
  {
5110
5475
  "data-slot": "table-body",
@@ -5114,7 +5479,7 @@ function TableBody({ className, ...props }) {
5114
5479
  );
5115
5480
  }
5116
5481
  function TableFooter({ className, ...props }) {
5117
- return /* @__PURE__ */ jsx47(
5482
+ return /* @__PURE__ */ jsx48(
5118
5483
  "tfoot",
5119
5484
  {
5120
5485
  "data-slot": "table-footer",
@@ -5127,7 +5492,7 @@ function TableFooter({ className, ...props }) {
5127
5492
  );
5128
5493
  }
5129
5494
  function TableRow({ className, ...props }) {
5130
- return /* @__PURE__ */ jsx47(
5495
+ return /* @__PURE__ */ jsx48(
5131
5496
  "tr",
5132
5497
  {
5133
5498
  "data-slot": "table-row",
@@ -5140,7 +5505,7 @@ function TableRow({ className, ...props }) {
5140
5505
  );
5141
5506
  }
5142
5507
  function TableHead({ className, ...props }) {
5143
- return /* @__PURE__ */ jsx47(
5508
+ return /* @__PURE__ */ jsx48(
5144
5509
  "th",
5145
5510
  {
5146
5511
  "data-slot": "table-head",
@@ -5153,7 +5518,7 @@ function TableHead({ className, ...props }) {
5153
5518
  );
5154
5519
  }
5155
5520
  function TableCell({ className, ...props }) {
5156
- return /* @__PURE__ */ jsx47(
5521
+ return /* @__PURE__ */ jsx48(
5157
5522
  "td",
5158
5523
  {
5159
5524
  "data-slot": "table-cell",
@@ -5169,7 +5534,7 @@ function TableCaption({
5169
5534
  className,
5170
5535
  ...props
5171
5536
  }) {
5172
- return /* @__PURE__ */ jsx47(
5537
+ return /* @__PURE__ */ jsx48(
5173
5538
  "caption",
5174
5539
  {
5175
5540
  "data-slot": "table-caption",
@@ -5182,12 +5547,12 @@ function TableCaption({
5182
5547
  // src/components/ui/tabs.tsx
5183
5548
  import * as TabsPrimitive from "@radix-ui/react-tabs";
5184
5549
  import "react";
5185
- import { jsx as jsx48 } from "react/jsx-runtime";
5550
+ import { jsx as jsx49 } from "react/jsx-runtime";
5186
5551
  function Tabs({
5187
5552
  className,
5188
5553
  ...props
5189
5554
  }) {
5190
- return /* @__PURE__ */ jsx48(
5555
+ return /* @__PURE__ */ jsx49(
5191
5556
  TabsPrimitive.Root,
5192
5557
  {
5193
5558
  "data-slot": "tabs",
@@ -5200,7 +5565,7 @@ function TabsList({
5200
5565
  className,
5201
5566
  ...props
5202
5567
  }) {
5203
- return /* @__PURE__ */ jsx48(
5568
+ return /* @__PURE__ */ jsx49(
5204
5569
  TabsPrimitive.List,
5205
5570
  {
5206
5571
  "data-slot": "tabs-list",
@@ -5216,7 +5581,7 @@ function TabsTrigger({
5216
5581
  className,
5217
5582
  ...props
5218
5583
  }) {
5219
- return /* @__PURE__ */ jsx48(
5584
+ return /* @__PURE__ */ jsx49(
5220
5585
  TabsPrimitive.Trigger,
5221
5586
  {
5222
5587
  "data-slot": "tabs-trigger",
@@ -5232,7 +5597,7 @@ function TabsContent({
5232
5597
  className,
5233
5598
  ...props
5234
5599
  }) {
5235
- return /* @__PURE__ */ jsx48(
5600
+ return /* @__PURE__ */ jsx49(
5236
5601
  TabsPrimitive.Content,
5237
5602
  {
5238
5603
  "data-slot": "tabs-content",
@@ -5245,8 +5610,8 @@ function TabsContent({
5245
5610
  // src/components/ui/time-input.tsx
5246
5611
  import "class-variance-authority";
5247
5612
  import { Clock } from "lucide-react";
5248
- import * as React46 from "react";
5249
- import { jsx as jsx49, jsxs as jsxs24 } from "react/jsx-runtime";
5613
+ import * as React47 from "react";
5614
+ import { jsx as jsx50, jsxs as jsxs25 } from "react/jsx-runtime";
5250
5615
  var TIME_FORMAT_PLACEHOLDER = {
5251
5616
  "12h": "hh:mm AM/PM",
5252
5617
  "24h": "HH:mm",
@@ -5299,16 +5664,16 @@ function TimeInput({
5299
5664
  formatDisplay
5300
5665
  }) {
5301
5666
  const resolvedPlaceholder = placeholder ?? TIME_FORMAT_PLACEHOLDER[timeFormat];
5302
- const displayValue = React46.useMemo(() => {
5667
+ const displayValue = React47.useMemo(() => {
5303
5668
  if (!time) return "";
5304
5669
  if (formatDisplay) return formatDisplay(time);
5305
5670
  return formatTime(time, timeFormat);
5306
5671
  }, [time, formatDisplay, timeFormat]);
5307
- const [open, setOpen] = React46.useState(false);
5308
- const hoursRef = React46.useRef(null);
5309
- const minutesRef = React46.useRef(null);
5310
- const periodRef = React46.useRef(null);
5311
- const scrollToSelected = React46.useCallback(() => {
5672
+ const [open, setOpen] = React47.useState(false);
5673
+ const hoursRef = React47.useRef(null);
5674
+ const minutesRef = React47.useRef(null);
5675
+ const periodRef = React47.useRef(null);
5676
+ const scrollToSelected = React47.useCallback(() => {
5312
5677
  requestAnimationFrame(() => {
5313
5678
  for (const ref of [hoursRef, minutesRef, periodRef]) {
5314
5679
  const container = ref.current;
@@ -5320,7 +5685,7 @@ function TimeInput({
5320
5685
  }
5321
5686
  });
5322
5687
  }, []);
5323
- React46.useEffect(() => {
5688
+ React47.useEffect(() => {
5324
5689
  if (open) {
5325
5690
  scrollToSelected();
5326
5691
  }
@@ -5356,8 +5721,8 @@ function TimeInput({
5356
5721
  const selectedH12 = time ? getDisplayHour(time.hours, timeFormat) : null;
5357
5722
  const selectedMinute = time?.minutes ?? null;
5358
5723
  const selectedPeriod = time ? getPeriod(time.hours) : null;
5359
- return /* @__PURE__ */ jsx49("div", { className: cn("relative flex gap-2", className), children: /* @__PURE__ */ jsxs24(Popover, { open, onOpenChange: setOpen, children: [
5360
- /* @__PURE__ */ jsx49(PopoverTrigger, { asChild: true, disabled: inputDisabled, children: /* @__PURE__ */ jsxs24(
5724
+ return /* @__PURE__ */ jsx50("div", { className: cn("relative flex gap-2", className), children: /* @__PURE__ */ jsxs25(Popover, { open, onOpenChange: setOpen, children: [
5725
+ /* @__PURE__ */ jsx50(PopoverTrigger, { asChild: true, disabled: inputDisabled, children: /* @__PURE__ */ jsxs25(
5361
5726
  Button,
5362
5727
  {
5363
5728
  type: "button",
@@ -5372,18 +5737,18 @@ function TimeInput({
5372
5737
  disabled: inputDisabled,
5373
5738
  children: [
5374
5739
  displayValue || resolvedPlaceholder,
5375
- icon !== void 0 ? icon : /* @__PURE__ */ jsx49(Clock, { className: "h-4 w-4 text-muted-foreground shrink-0" })
5740
+ icon !== void 0 ? icon : /* @__PURE__ */ jsx50(Clock, { className: "h-4 w-4 text-muted-foreground shrink-0" })
5376
5741
  ]
5377
5742
  }
5378
5743
  ) }),
5379
- /* @__PURE__ */ jsx49(
5744
+ /* @__PURE__ */ jsx50(
5380
5745
  PopoverContent,
5381
5746
  {
5382
5747
  className: cn("w-auto p-0", popoverContentClassName),
5383
5748
  onOpenAutoFocus: (e) => e.preventDefault(),
5384
5749
  ...popoverContentProps,
5385
- children: /* @__PURE__ */ jsxs24("div", { className: "flex divide-x border border-blue-500 rounded-md", children: [
5386
- /* @__PURE__ */ jsx49("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx49("div", { ref: hoursRef, className: "flex flex-col p-1 ", children: hoursList.map((h) => /* @__PURE__ */ jsx49(
5750
+ children: /* @__PURE__ */ jsxs25("div", { className: "flex divide-x border border-blue-500 rounded-md", children: [
5751
+ /* @__PURE__ */ jsx50("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx50("div", { ref: hoursRef, className: "flex flex-col p-1 ", children: hoursList.map((h) => /* @__PURE__ */ jsx50(
5387
5752
  Button,
5388
5753
  {
5389
5754
  variant: "ghost",
@@ -5398,7 +5763,7 @@ function TimeInput({
5398
5763
  },
5399
5764
  h
5400
5765
  )) }) }),
5401
- /* @__PURE__ */ jsx49("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx49(
5766
+ /* @__PURE__ */ jsx50("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx50(
5402
5767
  "div",
5403
5768
  {
5404
5769
  ref: minutesRef,
@@ -5406,7 +5771,7 @@ function TimeInput({
5406
5771
  "flex flex-col p-1",
5407
5772
  minutesList.length <= 12 && "h-full justify-center"
5408
5773
  ),
5409
- children: minutesList.map((m) => /* @__PURE__ */ jsx49(
5774
+ children: minutesList.map((m) => /* @__PURE__ */ jsx50(
5410
5775
  Button,
5411
5776
  {
5412
5777
  variant: "ghost",
@@ -5423,7 +5788,7 @@ function TimeInput({
5423
5788
  ))
5424
5789
  }
5425
5790
  ) }),
5426
- !is24HourFormat(timeFormat) && /* @__PURE__ */ jsx49("div", { className: "flex flex-col p-1 justify-center gap-1", children: ["AM", "PM"].map((p) => /* @__PURE__ */ jsx49(
5791
+ !is24HourFormat(timeFormat) && /* @__PURE__ */ jsx50("div", { className: "flex flex-col p-1 justify-center gap-1", children: ["AM", "PM"].map((p) => /* @__PURE__ */ jsx50(
5427
5792
  Button,
5428
5793
  {
5429
5794
  variant: "ghost",
@@ -5448,7 +5813,7 @@ function TimeInput({
5448
5813
  import "react";
5449
5814
  import * as TogglePrimitive from "@radix-ui/react-toggle";
5450
5815
  import { cva as cva8 } from "class-variance-authority";
5451
- import { jsx as jsx50 } from "react/jsx-runtime";
5816
+ import { jsx as jsx51 } from "react/jsx-runtime";
5452
5817
  var toggleVariants = cva8(
5453
5818
  "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",
5454
5819
  {
@@ -5475,7 +5840,7 @@ function Toggle({
5475
5840
  size,
5476
5841
  ...props
5477
5842
  }) {
5478
- return /* @__PURE__ */ jsx50(
5843
+ return /* @__PURE__ */ jsx51(
5479
5844
  TogglePrimitive.Root,
5480
5845
  {
5481
5846
  "data-slot": "toggle",
@@ -5486,11 +5851,11 @@ function Toggle({
5486
5851
  }
5487
5852
 
5488
5853
  // src/components/ui/toggle-group.tsx
5489
- import * as React48 from "react";
5854
+ import * as React49 from "react";
5490
5855
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
5491
5856
  import "class-variance-authority";
5492
- import { jsx as jsx51 } from "react/jsx-runtime";
5493
- var ToggleGroupContext = React48.createContext({
5857
+ import { jsx as jsx52 } from "react/jsx-runtime";
5858
+ var ToggleGroupContext = React49.createContext({
5494
5859
  size: "default",
5495
5860
  variant: "default"
5496
5861
  });
@@ -5501,7 +5866,7 @@ function ToggleGroup({
5501
5866
  children,
5502
5867
  ...props
5503
5868
  }) {
5504
- return /* @__PURE__ */ jsx51(
5869
+ return /* @__PURE__ */ jsx52(
5505
5870
  ToggleGroupPrimitive.Root,
5506
5871
  {
5507
5872
  "data-slot": "toggle-group",
@@ -5512,7 +5877,7 @@ function ToggleGroup({
5512
5877
  className
5513
5878
  ),
5514
5879
  ...props,
5515
- children: /* @__PURE__ */ jsx51(ToggleGroupContext.Provider, { value: { variant, size }, children })
5880
+ children: /* @__PURE__ */ jsx52(ToggleGroupContext.Provider, { value: { variant, size }, children })
5516
5881
  }
5517
5882
  );
5518
5883
  }
@@ -5523,8 +5888,8 @@ function ToggleGroupItem({
5523
5888
  size,
5524
5889
  ...props
5525
5890
  }) {
5526
- const context = React48.useContext(ToggleGroupContext);
5527
- return /* @__PURE__ */ jsx51(
5891
+ const context = React49.useContext(ToggleGroupContext);
5892
+ return /* @__PURE__ */ jsx52(
5528
5893
  ToggleGroupPrimitive.Item,
5529
5894
  {
5530
5895
  "data-slot": "toggle-group-item",
@@ -5548,7 +5913,7 @@ function ToggleGroupItem({
5548
5913
  import { Slot as Slot7 } from "@radix-ui/react-slot";
5549
5914
  import { cva as cva9 } from "class-variance-authority";
5550
5915
  import "react";
5551
- import { jsx as jsx52 } from "react/jsx-runtime";
5916
+ import { jsx as jsx53 } from "react/jsx-runtime";
5552
5917
  var displayTextVariants = cva9(
5553
5918
  "tracking-normal font-normal leading-none text-brand-dark font-serif italic",
5554
5919
  {
@@ -5571,7 +5936,7 @@ function DisplayHeading({
5571
5936
  ...props
5572
5937
  }) {
5573
5938
  const Comp = asChild ? Slot7 : "h1";
5574
- return /* @__PURE__ */ jsx52(
5939
+ return /* @__PURE__ */ jsx53(
5575
5940
  Comp,
5576
5941
  {
5577
5942
  "data-slot": "h1",
@@ -5600,7 +5965,7 @@ function Body({
5600
5965
  ...props
5601
5966
  }) {
5602
5967
  const Comp = asChild ? Slot7 : "p";
5603
- return /* @__PURE__ */ jsx52(
5968
+ return /* @__PURE__ */ jsx53(
5604
5969
  Comp,
5605
5970
  {
5606
5971
  "data-slot": "h1",
@@ -5615,7 +5980,7 @@ function HeadingXL({
5615
5980
  ...props
5616
5981
  }) {
5617
5982
  const Comp = asChild ? Slot7 : "h1";
5618
- return /* @__PURE__ */ jsx52(
5983
+ return /* @__PURE__ */ jsx53(
5619
5984
  Comp,
5620
5985
  {
5621
5986
  "data-slot": "h1",
@@ -5633,7 +5998,7 @@ function HeadingL({
5633
5998
  ...props
5634
5999
  }) {
5635
6000
  const Comp = asChild ? Slot7 : "h2";
5636
- return /* @__PURE__ */ jsx52(
6001
+ return /* @__PURE__ */ jsx53(
5637
6002
  Comp,
5638
6003
  {
5639
6004
  "data-slot": "h2",
@@ -5651,7 +6016,7 @@ function HeadingM({
5651
6016
  ...props
5652
6017
  }) {
5653
6018
  const Comp = asChild ? Slot7 : "h3";
5654
- return /* @__PURE__ */ jsx52(
6019
+ return /* @__PURE__ */ jsx53(
5655
6020
  Comp,
5656
6021
  {
5657
6022
  "data-slot": "h3",
@@ -5669,7 +6034,7 @@ function HeadingS({
5669
6034
  ...props
5670
6035
  }) {
5671
6036
  const Comp = asChild ? Slot7 : "h4";
5672
- return /* @__PURE__ */ jsx52(
6037
+ return /* @__PURE__ */ jsx53(
5673
6038
  Comp,
5674
6039
  {
5675
6040
  "data-slot": "h4",
@@ -5687,7 +6052,7 @@ function HeadingXS({
5687
6052
  ...props
5688
6053
  }) {
5689
6054
  const Comp = asChild ? Slot7 : "h5";
5690
- return /* @__PURE__ */ jsx52(
6055
+ return /* @__PURE__ */ jsx53(
5691
6056
  Comp,
5692
6057
  {
5693
6058
  "data-slot": "h5",
@@ -5705,7 +6070,7 @@ function HeadingXXS({
5705
6070
  ...props
5706
6071
  }) {
5707
6072
  const Comp = asChild ? Slot7 : "h6";
5708
- return /* @__PURE__ */ jsx52(
6073
+ return /* @__PURE__ */ jsx53(
5709
6074
  Comp,
5710
6075
  {
5711
6076
  "data-slot": "h5",
@@ -5902,6 +6267,12 @@ export {
5902
6267
  ResizablePanelGroup,
5903
6268
  ScrollArea,
5904
6269
  ScrollBar,
6270
+ SearchableSelect,
6271
+ SearchableSelectContent,
6272
+ SearchableSelectEmpty,
6273
+ SearchableSelectGroup,
6274
+ SearchableSelectItem,
6275
+ SearchableSelectTrigger,
5905
6276
  Select,
5906
6277
  SelectContent,
5907
6278
  SelectGroup,