@codapet/design-system 0.6.9 → 0.7.1

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
@@ -1645,7 +1645,7 @@ function Checkbox({
1645
1645
  {
1646
1646
  "data-slot": "checkbox",
1647
1647
  className: cn(
1648
- "group peer border-input dark:bg-input/30 transition-colors duration-400 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50 focus-visible:before:absolute focus-visible:before:-inset-[3px] focus:ring-offset-1 focus:ring-offset-brand-text-vibrant",
1648
+ "group peer border-gray-stroke-default dark:bg-input/30 transition-colors duration-400 data-[state=checked]:bg-primary-stroke-default data-[state=checked]:text-white dark:data-[state=checked]:bg-primary-stroke-default data-[state=checked]:border-primary-stroke-default focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-5 shrink-0 rounded-[4px] border-2 outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-40 focus-visible:before:absolute focus-visible:before:-inset-[3px] focus:ring-offset-1 focus:ring-offset-brand-text-vibrant",
1649
1649
  className
1650
1650
  ),
1651
1651
  ...props,
@@ -1655,7 +1655,7 @@ function Checkbox({
1655
1655
  "data-slot": "checkbox-indicator",
1656
1656
  forceMount: true,
1657
1657
  className: "flex items-center justify-center text-current transition-opacity duration-400 opacity-0 group-data-[state=checked]:opacity-100",
1658
- children: /* @__PURE__ */ jsx19(Check, { className: "size-3.5" })
1658
+ children: /* @__PURE__ */ jsx19(Check, { className: "size-4" })
1659
1659
  }
1660
1660
  )
1661
1661
  }
@@ -3712,23 +3712,25 @@ import * as React32 from "react";
3712
3712
  import { OTPInput, OTPInputContext } from "input-otp";
3713
3713
  import { MinusIcon } from "lucide-react";
3714
3714
  import { jsx as jsx34, jsxs as jsxs18 } from "react/jsx-runtime";
3715
+ var InputOTPErrorContext = React32.createContext(false);
3715
3716
  function InputOTP({
3716
3717
  className,
3717
3718
  containerClassName,
3719
+ error,
3718
3720
  ...props
3719
3721
  }) {
3720
- return /* @__PURE__ */ jsx34(
3722
+ return /* @__PURE__ */ jsx34(InputOTPErrorContext.Provider, { value: error ?? false, children: /* @__PURE__ */ jsx34(
3721
3723
  OTPInput,
3722
3724
  {
3723
3725
  "data-slot": "input-otp",
3724
3726
  containerClassName: cn(
3725
- "flex items-center gap-2 has-disabled:opacity-50",
3727
+ "flex items-center gap-2 has-disabled:opacity-40",
3726
3728
  containerClassName
3727
3729
  ),
3728
3730
  className: cn("disabled:cursor-not-allowed", className),
3729
3731
  ...props
3730
3732
  }
3731
- );
3733
+ ) });
3732
3734
  }
3733
3735
  function InputOTPGroup({ className, ...props }) {
3734
3736
  return /* @__PURE__ */ jsx34(
@@ -3747,19 +3749,36 @@ function InputOTPSlot({
3747
3749
  }) {
3748
3750
  const inputOTPContext = React32.useContext(OTPInputContext);
3749
3751
  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
3752
+ const isHovering = inputOTPContext?.isHovering ?? false;
3753
+ const error = React32.useContext(InputOTPErrorContext);
3750
3754
  return /* @__PURE__ */ jsxs18(
3751
3755
  "div",
3752
3756
  {
3753
3757
  "data-slot": "input-otp-slot",
3754
3758
  "data-active": isActive,
3755
3759
  className: cn(
3756
- "data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]",
3760
+ // Base layout & typography
3761
+ "relative flex size-10 items-center justify-center",
3762
+ "border-y border-r first:border-l text-sm font-medium leading-5",
3763
+ "transition-all outline-none",
3764
+ "first:rounded-l-[4px] last:rounded-r-[4px]",
3765
+ "text-foreground",
3766
+ // Default state (no error)
3767
+ !error && "border-gray-stroke-default bg-background",
3768
+ // Hover: all slots turn blue (non-error, non-active)
3769
+ !error && isHovering && !isActive && "border-focus-ring",
3770
+ // Active slot (non-error): 2px blue border
3771
+ !error && isActive && "z-10 border-2 border-focus-ring",
3772
+ // Error (non-active)
3773
+ error && !isActive && "border-error-stroke-default bg-error-surface-subtle",
3774
+ // Error + active
3775
+ error && isActive && "z-10 border-2 border-error-stroke-default bg-error-surface-subtle",
3757
3776
  className
3758
3777
  ),
3759
3778
  ...props,
3760
3779
  children: [
3761
3780
  char,
3762
- hasFakeCaret && /* @__PURE__ */ jsx34("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx34("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) })
3781
+ hasFakeCaret && /* @__PURE__ */ jsx34("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx34("div", { className: "animate-caret-blink bg-focus-ring h-4 w-px duration-1000" }) })
3763
3782
  ]
3764
3783
  }
3765
3784
  );
@@ -4414,6 +4433,157 @@ function NavigationMenuIndicator({
4414
4433
  );
4415
4434
  }
4416
4435
 
4436
+ // src/components/ui/option-card.tsx
4437
+ import { cva as cva11 } from "class-variance-authority";
4438
+ import { Check as Check2, Circle } from "lucide-react";
4439
+ import "react";
4440
+ import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
4441
+ var optionCardVariants = cva11(
4442
+ "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",
4443
+ {
4444
+ variants: {
4445
+ hasStroke: {
4446
+ true: "border rounded-lg",
4447
+ false: "rounded-lg"
4448
+ },
4449
+ selected: {
4450
+ true: "",
4451
+ false: ""
4452
+ },
4453
+ weight: {
4454
+ hug: "w-fit",
4455
+ resizable: "w-full"
4456
+ },
4457
+ disabled: {
4458
+ true: "opacity-40 cursor-not-allowed pointer-events-none",
4459
+ false: ""
4460
+ }
4461
+ },
4462
+ compoundVariants: [
4463
+ // Stroke + not selected
4464
+ {
4465
+ hasStroke: true,
4466
+ selected: false,
4467
+ disabled: false,
4468
+ className: "border-gray-stroke-default text-vibrant-text-heading hover:border-primary-stroke-default"
4469
+ },
4470
+ // Stroke + selected
4471
+ {
4472
+ hasStroke: true,
4473
+ selected: true,
4474
+ disabled: false,
4475
+ className: "border-primary-stroke-default bg-primary-surface-subtle text-primary-stroke-default"
4476
+ },
4477
+ // Stroke + disabled + not selected
4478
+ {
4479
+ hasStroke: true,
4480
+ selected: false,
4481
+ disabled: true,
4482
+ className: "border-gray-stroke-default text-vibrant-text-heading"
4483
+ },
4484
+ // Stroke + disabled + selected
4485
+ {
4486
+ hasStroke: true,
4487
+ selected: true,
4488
+ disabled: true,
4489
+ className: "border-gray-stroke-default text-vibrant-text-heading"
4490
+ },
4491
+ // No stroke + not selected
4492
+ {
4493
+ hasStroke: false,
4494
+ selected: false,
4495
+ disabled: false,
4496
+ className: "text-vibrant-text-heading"
4497
+ },
4498
+ // No stroke + selected
4499
+ {
4500
+ hasStroke: false,
4501
+ selected: true,
4502
+ disabled: false,
4503
+ className: "bg-primary-surface-subtle text-primary-stroke-default"
4504
+ },
4505
+ // No stroke + disabled
4506
+ {
4507
+ hasStroke: false,
4508
+ disabled: true,
4509
+ className: "text-vibrant-text-heading"
4510
+ }
4511
+ ],
4512
+ defaultVariants: {
4513
+ hasStroke: true,
4514
+ selected: false,
4515
+ weight: "hug",
4516
+ disabled: false
4517
+ }
4518
+ }
4519
+ );
4520
+ function RadioIndicator({ selected }) {
4521
+ return /* @__PURE__ */ jsx38(
4522
+ "span",
4523
+ {
4524
+ className: cn(
4525
+ "flex items-center justify-center shrink-0 size-5 rounded-full border-2 transition-colors duration-200",
4526
+ selected ? "bg-primary-stroke-default border-primary-stroke-default" : "border-gray-stroke-default bg-transparent group-hover:border-primary-stroke-default"
4527
+ ),
4528
+ children: selected && /* @__PURE__ */ jsx38(Circle, { className: "size-2 fill-white text-white" })
4529
+ }
4530
+ );
4531
+ }
4532
+ function CheckboxIndicator({ selected }) {
4533
+ return /* @__PURE__ */ jsx38(
4534
+ "span",
4535
+ {
4536
+ className: cn(
4537
+ "flex items-center justify-center shrink-0 size-5 rounded-[4px] border-2 transition-colors duration-200",
4538
+ selected ? "bg-primary-stroke-default border-primary-stroke-default" : "border-gray-stroke-default bg-transparent group-hover:border-primary-stroke-default"
4539
+ ),
4540
+ children: selected && /* @__PURE__ */ jsx38(Check2, { className: "size-4 text-white" })
4541
+ }
4542
+ );
4543
+ }
4544
+ function OptionCard({
4545
+ className,
4546
+ children,
4547
+ selected = false,
4548
+ disabled = false,
4549
+ hasStroke = true,
4550
+ weight = "hug",
4551
+ selectorPosition = "right",
4552
+ selectionType = "single",
4553
+ icon,
4554
+ ...props
4555
+ }) {
4556
+ const Indicator5 = selectionType === "single" ? RadioIndicator : CheckboxIndicator;
4557
+ const indicator = /* @__PURE__ */ jsx38(Indicator5, { selected });
4558
+ return /* @__PURE__ */ jsxs22(
4559
+ "button",
4560
+ {
4561
+ type: "button",
4562
+ "data-slot": "option-card",
4563
+ "data-state": selected ? "selected" : "unselected",
4564
+ disabled,
4565
+ className: cn(
4566
+ optionCardVariants({
4567
+ hasStroke,
4568
+ selected,
4569
+ weight,
4570
+ disabled
4571
+ }),
4572
+ className
4573
+ ),
4574
+ ...props,
4575
+ children: [
4576
+ selectorPosition === "left" && indicator,
4577
+ /* @__PURE__ */ jsxs22("span", { className: "flex items-center gap-2 flex-1 min-w-0", children: [
4578
+ icon && /* @__PURE__ */ jsx38("span", { className: "flex items-center justify-center shrink-0 size-5 [&_svg]:size-5", children: icon }),
4579
+ /* @__PURE__ */ jsx38("span", { className: "truncate", children })
4580
+ ] }),
4581
+ selectorPosition === "right" && indicator
4582
+ ]
4583
+ }
4584
+ );
4585
+ }
4586
+
4417
4587
  // src/components/ui/pagination.tsx
4418
4588
  import "react";
4419
4589
  import {
@@ -4421,9 +4591,9 @@ import {
4421
4591
  ChevronRightIcon as ChevronRightIcon5,
4422
4592
  MoreHorizontalIcon
4423
4593
  } from "lucide-react";
4424
- import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
4594
+ import { jsx as jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
4425
4595
  function Pagination({ className, ...props }) {
4426
- return /* @__PURE__ */ jsx38(
4596
+ return /* @__PURE__ */ jsx39(
4427
4597
  "nav",
4428
4598
  {
4429
4599
  role: "navigation",
@@ -4438,7 +4608,7 @@ function PaginationContent({
4438
4608
  className,
4439
4609
  ...props
4440
4610
  }) {
4441
- return /* @__PURE__ */ jsx38(
4611
+ return /* @__PURE__ */ jsx39(
4442
4612
  "ul",
4443
4613
  {
4444
4614
  "data-slot": "pagination-content",
@@ -4448,7 +4618,7 @@ function PaginationContent({
4448
4618
  );
4449
4619
  }
4450
4620
  function PaginationItem({ ...props }) {
4451
- return /* @__PURE__ */ jsx38("li", { "data-slot": "pagination-item", ...props });
4621
+ return /* @__PURE__ */ jsx39("li", { "data-slot": "pagination-item", ...props });
4452
4622
  }
4453
4623
  function PaginationLink({
4454
4624
  className,
@@ -4456,7 +4626,7 @@ function PaginationLink({
4456
4626
  size = "icon",
4457
4627
  ...props
4458
4628
  }) {
4459
- return /* @__PURE__ */ jsx38(
4629
+ return /* @__PURE__ */ jsx39(
4460
4630
  "a",
4461
4631
  {
4462
4632
  "aria-current": isActive ? "page" : void 0,
@@ -4477,7 +4647,7 @@ function PaginationPrevious({
4477
4647
  className,
4478
4648
  ...props
4479
4649
  }) {
4480
- return /* @__PURE__ */ jsxs22(
4650
+ return /* @__PURE__ */ jsxs23(
4481
4651
  PaginationLink,
4482
4652
  {
4483
4653
  "aria-label": "Go to previous page",
@@ -4485,8 +4655,8 @@ function PaginationPrevious({
4485
4655
  className: cn("gap-1 px-2.5 sm:pl-2.5", className),
4486
4656
  ...props,
4487
4657
  children: [
4488
- /* @__PURE__ */ jsx38(ChevronLeftIcon2, {}),
4489
- /* @__PURE__ */ jsx38("span", { className: "hidden sm:block", children: "Previous" })
4658
+ /* @__PURE__ */ jsx39(ChevronLeftIcon2, {}),
4659
+ /* @__PURE__ */ jsx39("span", { className: "hidden sm:block", children: "Previous" })
4490
4660
  ]
4491
4661
  }
4492
4662
  );
@@ -4495,7 +4665,7 @@ function PaginationNext({
4495
4665
  className,
4496
4666
  ...props
4497
4667
  }) {
4498
- return /* @__PURE__ */ jsxs22(
4668
+ return /* @__PURE__ */ jsxs23(
4499
4669
  PaginationLink,
4500
4670
  {
4501
4671
  "aria-label": "Go to next page",
@@ -4503,8 +4673,8 @@ function PaginationNext({
4503
4673
  className: cn("gap-1 px-2.5 sm:pr-2.5", className),
4504
4674
  ...props,
4505
4675
  children: [
4506
- /* @__PURE__ */ jsx38("span", { className: "hidden sm:block", children: "Next" }),
4507
- /* @__PURE__ */ jsx38(ChevronRightIcon5, {})
4676
+ /* @__PURE__ */ jsx39("span", { className: "hidden sm:block", children: "Next" }),
4677
+ /* @__PURE__ */ jsx39(ChevronRightIcon5, {})
4508
4678
  ]
4509
4679
  }
4510
4680
  );
@@ -4513,7 +4683,7 @@ function PaginationEllipsis({
4513
4683
  className,
4514
4684
  ...props
4515
4685
  }) {
4516
- return /* @__PURE__ */ jsxs22(
4686
+ return /* @__PURE__ */ jsxs23(
4517
4687
  "span",
4518
4688
  {
4519
4689
  "aria-hidden": true,
@@ -4521,8 +4691,8 @@ function PaginationEllipsis({
4521
4691
  className: cn("flex size-9 items-center justify-center", className),
4522
4692
  ...props,
4523
4693
  children: [
4524
- /* @__PURE__ */ jsx38(MoreHorizontalIcon, { className: "size-4" }),
4525
- /* @__PURE__ */ jsx38("span", { className: "sr-only", children: "More pages" })
4694
+ /* @__PURE__ */ jsx39(MoreHorizontalIcon, { className: "size-4" }),
4695
+ /* @__PURE__ */ jsx39("span", { className: "sr-only", children: "More pages" })
4526
4696
  ]
4527
4697
  }
4528
4698
  );
@@ -4531,13 +4701,13 @@ function PaginationEllipsis({
4531
4701
  // src/components/ui/progress.tsx
4532
4702
  import * as ProgressPrimitive from "@radix-ui/react-progress";
4533
4703
  import "react";
4534
- import { jsx as jsx39 } from "react/jsx-runtime";
4704
+ import { jsx as jsx40 } from "react/jsx-runtime";
4535
4705
  function Progress({
4536
4706
  className,
4537
4707
  value,
4538
4708
  ...props
4539
4709
  }) {
4540
- return /* @__PURE__ */ jsx39(
4710
+ return /* @__PURE__ */ jsx40(
4541
4711
  ProgressPrimitive.Root,
4542
4712
  {
4543
4713
  "data-slot": "progress",
@@ -4546,7 +4716,7 @@ function Progress({
4546
4716
  className
4547
4717
  ),
4548
4718
  ...props,
4549
- children: /* @__PURE__ */ jsx39(
4719
+ children: /* @__PURE__ */ jsx40(
4550
4720
  ProgressPrimitive.Indicator,
4551
4721
  {
4552
4722
  "data-slot": "progress-indicator",
@@ -4559,10 +4729,10 @@ function Progress({
4559
4729
  }
4560
4730
 
4561
4731
  // src/components/ui/progress-bar.tsx
4562
- import { cva as cva11 } from "class-variance-authority";
4732
+ import { cva as cva12 } from "class-variance-authority";
4563
4733
  import "react";
4564
- import { jsx as jsx40, jsxs as jsxs23 } from "react/jsx-runtime";
4565
- var progressBarVariants = cva11("relative overflow-hidden rounded-[8px]", {
4734
+ import { jsx as jsx41, jsxs as jsxs24 } from "react/jsx-runtime";
4735
+ var progressBarVariants = cva12("relative overflow-hidden rounded-[8px]", {
4566
4736
  variants: {
4567
4737
  device: {
4568
4738
  desktop: "w-[360px] h-[4px]",
@@ -4582,7 +4752,7 @@ function ProgressBar({
4582
4752
  ...props
4583
4753
  }) {
4584
4754
  const percentage = value !== void 0 ? Math.min(100, Math.max(0, value)) : Math.min(100, Math.max(0, currentStep / totalSteps * 100));
4585
- return /* @__PURE__ */ jsxs23(
4755
+ return /* @__PURE__ */ jsxs24(
4586
4756
  "div",
4587
4757
  {
4588
4758
  "data-slot": "progress-bar",
@@ -4593,8 +4763,8 @@ function ProgressBar({
4593
4763
  "aria-valuemax": 100,
4594
4764
  ...props,
4595
4765
  children: [
4596
- /* @__PURE__ */ jsx40("div", { className: "absolute inset-0 rounded-[8px] bg-primary-surface-light" }),
4597
- /* @__PURE__ */ jsx40(
4766
+ /* @__PURE__ */ jsx41("div", { className: "absolute inset-0 rounded-[8px] bg-primary-surface-light" }),
4767
+ /* @__PURE__ */ jsx41(
4598
4768
  "div",
4599
4769
  {
4600
4770
  "data-slot": "progress-bar-fill",
@@ -4611,12 +4781,12 @@ function ProgressBar({
4611
4781
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
4612
4782
  import { CircleIcon as CircleIcon4 } from "lucide-react";
4613
4783
  import "react";
4614
- import { jsx as jsx41 } from "react/jsx-runtime";
4784
+ import { jsx as jsx42 } from "react/jsx-runtime";
4615
4785
  function RadioGroup4({
4616
4786
  className,
4617
4787
  ...props
4618
4788
  }) {
4619
- return /* @__PURE__ */ jsx41(
4789
+ return /* @__PURE__ */ jsx42(
4620
4790
  RadioGroupPrimitive.Root,
4621
4791
  {
4622
4792
  "data-slot": "radio-group",
@@ -4629,21 +4799,21 @@ function RadioGroupItem({
4629
4799
  className,
4630
4800
  ...props
4631
4801
  }) {
4632
- return /* @__PURE__ */ jsx41(
4802
+ return /* @__PURE__ */ jsx42(
4633
4803
  RadioGroupPrimitive.Item,
4634
4804
  {
4635
4805
  "data-slot": "radio-group-item",
4636
4806
  className: cn(
4637
- "border-input text-primary focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border transition-all duration-400 outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:border-primary",
4807
+ "border-gray-stroke-default text-primary-stroke-default focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-5 shrink-0 rounded-full border-2 transition-all duration-400 outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-40 data-[state=checked]:bg-primary-stroke-default data-[state=checked]:border-primary-stroke-default",
4638
4808
  className
4639
4809
  ),
4640
4810
  ...props,
4641
- children: /* @__PURE__ */ jsx41(
4811
+ children: /* @__PURE__ */ jsx42(
4642
4812
  RadioGroupPrimitive.Indicator,
4643
4813
  {
4644
4814
  "data-slot": "radio-group-indicator",
4645
4815
  className: "relative flex items-center justify-center",
4646
- children: /* @__PURE__ */ jsx41(CircleIcon4, { className: "fill-white absolute top-1/2 left-1/2 size-1.5 -translate-x-1/2 -translate-y-1/2" })
4816
+ children: /* @__PURE__ */ jsx42(CircleIcon4, { className: "fill-white absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
4647
4817
  }
4648
4818
  )
4649
4819
  }
@@ -4654,12 +4824,12 @@ function RadioGroupItem({
4654
4824
  import "react";
4655
4825
  import { GripVerticalIcon } from "lucide-react";
4656
4826
  import * as ResizablePrimitive from "react-resizable-panels";
4657
- import { jsx as jsx42 } from "react/jsx-runtime";
4827
+ import { jsx as jsx43 } from "react/jsx-runtime";
4658
4828
  function ResizablePanelGroup({
4659
4829
  className,
4660
4830
  ...props
4661
4831
  }) {
4662
- return /* @__PURE__ */ jsx42(
4832
+ return /* @__PURE__ */ jsx43(
4663
4833
  ResizablePrimitive.PanelGroup,
4664
4834
  {
4665
4835
  "data-slot": "resizable-panel-group",
@@ -4674,14 +4844,14 @@ function ResizablePanelGroup({
4674
4844
  function ResizablePanel({
4675
4845
  ...props
4676
4846
  }) {
4677
- return /* @__PURE__ */ jsx42(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
4847
+ return /* @__PURE__ */ jsx43(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
4678
4848
  }
4679
4849
  function ResizableHandle({
4680
4850
  withHandle,
4681
4851
  className,
4682
4852
  ...props
4683
4853
  }) {
4684
- return /* @__PURE__ */ jsx42(
4854
+ return /* @__PURE__ */ jsx43(
4685
4855
  ResizablePrimitive.PanelResizeHandle,
4686
4856
  {
4687
4857
  "data-slot": "resizable-handle",
@@ -4690,7 +4860,7 @@ function ResizableHandle({
4690
4860
  className
4691
4861
  ),
4692
4862
  ...props,
4693
- children: withHandle && /* @__PURE__ */ jsx42("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ jsx42(GripVerticalIcon, { className: "size-2.5" }) })
4863
+ children: withHandle && /* @__PURE__ */ jsx43("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ jsx43(GripVerticalIcon, { className: "size-2.5" }) })
4694
4864
  }
4695
4865
  );
4696
4866
  }
@@ -4698,20 +4868,20 @@ function ResizableHandle({
4698
4868
  // src/components/ui/scroll-area.tsx
4699
4869
  import "react";
4700
4870
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
4701
- import { jsx as jsx43, jsxs as jsxs24 } from "react/jsx-runtime";
4871
+ import { jsx as jsx44, jsxs as jsxs25 } from "react/jsx-runtime";
4702
4872
  function ScrollArea({
4703
4873
  className,
4704
4874
  children,
4705
4875
  ...props
4706
4876
  }) {
4707
- return /* @__PURE__ */ jsxs24(
4877
+ return /* @__PURE__ */ jsxs25(
4708
4878
  ScrollAreaPrimitive.Root,
4709
4879
  {
4710
4880
  "data-slot": "scroll-area",
4711
4881
  className: cn("relative", className),
4712
4882
  ...props,
4713
4883
  children: [
4714
- /* @__PURE__ */ jsx43(
4884
+ /* @__PURE__ */ jsx44(
4715
4885
  ScrollAreaPrimitive.Viewport,
4716
4886
  {
4717
4887
  "data-slot": "scroll-area-viewport",
@@ -4719,8 +4889,8 @@ function ScrollArea({
4719
4889
  children
4720
4890
  }
4721
4891
  ),
4722
- /* @__PURE__ */ jsx43(ScrollBar, {}),
4723
- /* @__PURE__ */ jsx43(ScrollAreaPrimitive.Corner, {})
4892
+ /* @__PURE__ */ jsx44(ScrollBar, {}),
4893
+ /* @__PURE__ */ jsx44(ScrollAreaPrimitive.Corner, {})
4724
4894
  ]
4725
4895
  }
4726
4896
  );
@@ -4730,7 +4900,7 @@ function ScrollBar({
4730
4900
  orientation = "vertical",
4731
4901
  ...props
4732
4902
  }) {
4733
- return /* @__PURE__ */ jsx43(
4903
+ return /* @__PURE__ */ jsx44(
4734
4904
  ScrollAreaPrimitive.ScrollAreaScrollbar,
4735
4905
  {
4736
4906
  "data-slot": "scroll-area-scrollbar",
@@ -4742,7 +4912,7 @@ function ScrollBar({
4742
4912
  className
4743
4913
  ),
4744
4914
  ...props,
4745
- children: /* @__PURE__ */ jsx43(
4915
+ children: /* @__PURE__ */ jsx44(
4746
4916
  ScrollAreaPrimitive.ScrollAreaThumb,
4747
4917
  {
4748
4918
  "data-slot": "scroll-area-thumb",
@@ -4754,9 +4924,9 @@ function ScrollBar({
4754
4924
  }
4755
4925
 
4756
4926
  // src/components/ui/search-input.tsx
4757
- import * as React42 from "react";
4927
+ import * as React43 from "react";
4758
4928
  import { Search, X as X3 } from "lucide-react";
4759
- import { jsx as jsx44, jsxs as jsxs25 } from "react/jsx-runtime";
4929
+ import { jsx as jsx45, jsxs as jsxs26 } from "react/jsx-runtime";
4760
4930
  function SearchInput({
4761
4931
  variant = "icon",
4762
4932
  value: valueProp,
@@ -4775,23 +4945,23 @@ function SearchInput({
4775
4945
  onSuggestionClick,
4776
4946
  className
4777
4947
  }) {
4778
- const [internalValue, setInternalValue] = React42.useState(defaultValue);
4779
- const [isFocused, setIsFocused] = React42.useState(false);
4780
- const [showSuggestions, setShowSuggestions] = React42.useState(false);
4781
- const inputRef = React42.useRef(null);
4782
- const containerRef = React42.useRef(null);
4948
+ const [internalValue, setInternalValue] = React43.useState(defaultValue);
4949
+ const [isFocused, setIsFocused] = React43.useState(false);
4950
+ const [showSuggestions, setShowSuggestions] = React43.useState(false);
4951
+ const inputRef = React43.useRef(null);
4952
+ const containerRef = React43.useRef(null);
4783
4953
  const isControlled = valueProp !== void 0;
4784
4954
  const currentValue = isControlled ? valueProp : internalValue;
4785
4955
  const hasValue = currentValue.trim().length > 0;
4786
4956
  const isFilledEdit = hasValue && !isFocused && !error;
4787
- const updateValue = React42.useCallback(
4957
+ const updateValue = React43.useCallback(
4788
4958
  (next) => {
4789
4959
  if (!isControlled) setInternalValue(next);
4790
4960
  onValueChange?.(next);
4791
4961
  },
4792
4962
  [isControlled, onValueChange]
4793
4963
  );
4794
- const handleInputChange = React42.useCallback(
4964
+ const handleInputChange = React43.useCallback(
4795
4965
  (e) => {
4796
4966
  updateValue(e.target.value);
4797
4967
  if (e.target.value.trim().length > 0 && suggestions.length > 0) {
@@ -4802,7 +4972,7 @@ function SearchInput({
4802
4972
  },
4803
4973
  [updateValue, suggestions.length]
4804
4974
  );
4805
- const handleKeyDown = React42.useCallback(
4975
+ const handleKeyDown = React43.useCallback(
4806
4976
  (e) => {
4807
4977
  if (e.key === "Enter") {
4808
4978
  e.preventDefault();
@@ -4815,16 +4985,16 @@ function SearchInput({
4815
4985
  },
4816
4986
  [currentValue, onSearch]
4817
4987
  );
4818
- const handleClear = React42.useCallback(() => {
4988
+ const handleClear = React43.useCallback(() => {
4819
4989
  updateValue("");
4820
4990
  onClear?.();
4821
4991
  inputRef.current?.focus();
4822
4992
  }, [updateValue, onClear]);
4823
- const handleSearchClick = React42.useCallback(() => {
4993
+ const handleSearchClick = React43.useCallback(() => {
4824
4994
  onSearch?.(currentValue);
4825
4995
  setShowSuggestions(false);
4826
4996
  }, [currentValue, onSearch]);
4827
- const handleSuggestionClick = React42.useCallback(
4997
+ const handleSuggestionClick = React43.useCallback(
4828
4998
  (label2) => {
4829
4999
  updateValue(label2);
4830
5000
  onSuggestionClick?.(label2);
@@ -4833,14 +5003,14 @@ function SearchInput({
4833
5003
  },
4834
5004
  [updateValue, onSuggestionClick]
4835
5005
  );
4836
- const handleFocus = React42.useCallback(() => {
5006
+ const handleFocus = React43.useCallback(() => {
4837
5007
  if (disabled) return;
4838
5008
  setIsFocused(true);
4839
5009
  if (currentValue.trim().length > 0 && suggestions.length > 0) {
4840
5010
  setShowSuggestions(true);
4841
5011
  }
4842
5012
  }, [disabled, currentValue, suggestions.length]);
4843
- const handleBlur = React42.useCallback(
5013
+ const handleBlur = React43.useCallback(
4844
5014
  (e) => {
4845
5015
  if (containerRef.current?.contains(e.relatedTarget)) return;
4846
5016
  setIsFocused(false);
@@ -4850,7 +5020,7 @@ function SearchInput({
4850
5020
  );
4851
5021
  const displayHelperText = error && errorMessage ? errorMessage : helperText;
4852
5022
  const showClearButton = (isFilledEdit || error) && hasValue;
4853
- return /* @__PURE__ */ jsxs25(
5023
+ return /* @__PURE__ */ jsxs26(
4854
5024
  "div",
4855
5025
  {
4856
5026
  ref: containerRef,
@@ -4858,8 +5028,8 @@ function SearchInput({
4858
5028
  className: cn("flex flex-col gap-[8px] items-start w-full", className),
4859
5029
  onBlur: handleBlur,
4860
5030
  children: [
4861
- label && /* @__PURE__ */ jsx44("div", { className: "flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details", children: label }),
4862
- /* @__PURE__ */ jsxs25(
5031
+ label && /* @__PURE__ */ jsx45("div", { className: "flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details", children: label }),
5032
+ /* @__PURE__ */ jsxs26(
4863
5033
  "div",
4864
5034
  {
4865
5035
  className: cn(
@@ -4876,7 +5046,7 @@ function SearchInput({
4876
5046
  disabled && "opacity-60 cursor-not-allowed"
4877
5047
  ),
4878
5048
  children: [
4879
- icon && /* @__PURE__ */ jsx44(
5049
+ icon && /* @__PURE__ */ jsx45(
4880
5050
  "span",
4881
5051
  {
4882
5052
  className: cn(
@@ -4886,7 +5056,7 @@ function SearchInput({
4886
5056
  children: icon
4887
5057
  }
4888
5058
  ),
4889
- /* @__PURE__ */ jsx44(
5059
+ /* @__PURE__ */ jsx45(
4890
5060
  "input",
4891
5061
  {
4892
5062
  ref: inputRef,
@@ -4903,7 +5073,7 @@ function SearchInput({
4903
5073
  )
4904
5074
  }
4905
5075
  ),
4906
- showClearButton ? /* @__PURE__ */ jsx44(
5076
+ showClearButton ? /* @__PURE__ */ jsx45(
4907
5077
  "button",
4908
5078
  {
4909
5079
  type: "button",
@@ -4911,9 +5081,9 @@ function SearchInput({
4911
5081
  className: "flex items-center justify-center shrink-0 size-[20px] text-muted-foreground hover:text-vibrant-text-heading transition-colors cursor-pointer",
4912
5082
  "aria-label": "Clear search",
4913
5083
  tabIndex: -1,
4914
- children: /* @__PURE__ */ jsx44(X3, { className: "size-[16px]" })
5084
+ children: /* @__PURE__ */ jsx45(X3, { className: "size-[16px]" })
4915
5085
  }
4916
- ) : variant === "button" ? /* @__PURE__ */ jsx44(
5086
+ ) : variant === "button" ? /* @__PURE__ */ jsx45(
4917
5087
  "button",
4918
5088
  {
4919
5089
  type: "button",
@@ -4923,7 +5093,7 @@ function SearchInput({
4923
5093
  tabIndex: -1,
4924
5094
  children: "Search"
4925
5095
  }
4926
- ) : /* @__PURE__ */ jsx44(
5096
+ ) : /* @__PURE__ */ jsx45(
4927
5097
  "button",
4928
5098
  {
4929
5099
  type: "button",
@@ -4932,13 +5102,13 @@ function SearchInput({
4932
5102
  className: "flex items-center justify-center shrink-0 size-[36px] rounded-[6px] bg-primary-surface-default cursor-pointer disabled:cursor-not-allowed transition-colors",
4933
5103
  "aria-label": "Search",
4934
5104
  tabIndex: -1,
4935
- children: /* @__PURE__ */ jsx44(Search, { className: "size-[20px] text-white" })
5105
+ children: /* @__PURE__ */ jsx45(Search, { className: "size-[20px] text-white" })
4936
5106
  }
4937
5107
  )
4938
5108
  ]
4939
5109
  }
4940
5110
  ),
4941
- displayHelperText && /* @__PURE__ */ jsx44(
5111
+ displayHelperText && /* @__PURE__ */ jsx45(
4942
5112
  "p",
4943
5113
  {
4944
5114
  className: cn(
@@ -4948,12 +5118,12 @@ function SearchInput({
4948
5118
  children: displayHelperText
4949
5119
  }
4950
5120
  ),
4951
- showSuggestions && suggestions.length > 0 && /* @__PURE__ */ jsx44(
5121
+ showSuggestions && suggestions.length > 0 && /* @__PURE__ */ jsx45(
4952
5122
  "div",
4953
5123
  {
4954
5124
  "data-slot": "search-input-suggestions",
4955
5125
  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]",
4956
- children: suggestions.map((suggestion, idx) => /* @__PURE__ */ jsxs25(
5126
+ children: suggestions.map((suggestion, idx) => /* @__PURE__ */ jsxs26(
4957
5127
  "button",
4958
5128
  {
4959
5129
  type: "button",
@@ -4961,8 +5131,8 @@ function SearchInput({
4961
5131
  onMouseDown: (e) => e.preventDefault(),
4962
5132
  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",
4963
5133
  children: [
4964
- suggestion.icon && /* @__PURE__ */ jsx44("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 }),
4965
- /* @__PURE__ */ jsx44("span", { className: "flex-1 min-w-0 font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading truncate", children: suggestion.label })
5134
+ suggestion.icon && /* @__PURE__ */ jsx45("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 }),
5135
+ /* @__PURE__ */ jsx45("span", { className: "flex-1 min-w-0 font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading truncate", children: suggestion.label })
4966
5136
  ]
4967
5137
  },
4968
5138
  `${suggestion.label}-${idx}`
@@ -4975,12 +5145,12 @@ function SearchInput({
4975
5145
  }
4976
5146
 
4977
5147
  // src/components/ui/searchable-select.tsx
4978
- import * as React43 from "react";
5148
+ import * as React44 from "react";
4979
5149
  import { CheckIcon as CheckIcon4, ChevronsUpDown, XIcon as XIcon2 } from "lucide-react";
4980
- import { jsx as jsx45, jsxs as jsxs26 } from "react/jsx-runtime";
4981
- var SearchableSelectContext = React43.createContext(null);
5150
+ import { jsx as jsx46, jsxs as jsxs27 } from "react/jsx-runtime";
5151
+ var SearchableSelectContext = React44.createContext(null);
4982
5152
  function useSearchableSelect() {
4983
- const ctx = React43.useContext(SearchableSelectContext);
5153
+ const ctx = React44.useContext(SearchableSelectContext);
4984
5154
  if (!ctx) {
4985
5155
  throw new Error(
4986
5156
  "SearchableSelect compound components must be used within <SearchableSelect>"
@@ -5006,11 +5176,11 @@ function SearchableSelect({
5006
5176
  onOpenChange,
5007
5177
  children
5008
5178
  }) {
5009
- const [internalOpen, setInternalOpen] = React43.useState(false);
5010
- const [internalValue, setInternalValue] = React43.useState(defaultValue);
5011
- const [internalValues, setInternalValues] = React43.useState(defaultValues);
5179
+ const [internalOpen, setInternalOpen] = React44.useState(false);
5180
+ const [internalValue, setInternalValue] = React44.useState(defaultValue);
5181
+ const [internalValues, setInternalValues] = React44.useState(defaultValues);
5012
5182
  const open = controlledOpen ?? internalOpen;
5013
- const setOpen = React43.useCallback(
5183
+ const setOpen = React44.useCallback(
5014
5184
  (next) => {
5015
5185
  if (controlledOpen !== void 0) {
5016
5186
  onOpenChange?.(next);
@@ -5022,7 +5192,7 @@ function SearchableSelect({
5022
5192
  [controlledOpen, onOpenChange]
5023
5193
  );
5024
5194
  const value = controlledValue ?? internalValue;
5025
- const setValue = React43.useCallback(
5195
+ const setValue = React44.useCallback(
5026
5196
  (next) => {
5027
5197
  if (controlledValue === void 0) {
5028
5198
  setInternalValue(next);
@@ -5032,7 +5202,7 @@ function SearchableSelect({
5032
5202
  [controlledValue, onValueChange]
5033
5203
  );
5034
5204
  const values = controlledValues ?? internalValues;
5035
- const setValues = React43.useCallback(
5205
+ const setValues = React44.useCallback(
5036
5206
  (next) => {
5037
5207
  if (controlledValues === void 0) {
5038
5208
  setInternalValues(next);
@@ -5041,14 +5211,14 @@ function SearchableSelect({
5041
5211
  },
5042
5212
  [controlledValues, onValuesChange]
5043
5213
  );
5044
- const optionMap = React43.useMemo(() => {
5214
+ const optionMap = React44.useMemo(() => {
5045
5215
  const map = /* @__PURE__ */ new Map();
5046
5216
  for (const opt of options) {
5047
5217
  map.set(opt.value, opt.label);
5048
5218
  }
5049
5219
  return map;
5050
5220
  }, [options]);
5051
- const ctx = React43.useMemo(
5221
+ const ctx = React44.useMemo(
5052
5222
  () => ({
5053
5223
  open,
5054
5224
  setOpen,
@@ -5082,7 +5252,7 @@ function SearchableSelect({
5082
5252
  optionMap
5083
5253
  ]
5084
5254
  );
5085
- return /* @__PURE__ */ jsx45(SearchableSelectContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx45(Popover, { open, onOpenChange: setOpen, children }) });
5255
+ return /* @__PURE__ */ jsx46(SearchableSelectContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx46(Popover, { open, onOpenChange: setOpen, children }) });
5086
5256
  }
5087
5257
  function SearchableSelectTrigger({
5088
5258
  className,
@@ -5095,7 +5265,7 @@ function SearchableSelectTrigger({
5095
5265
  if (children) return children;
5096
5266
  if (ctx.mode === "single") {
5097
5267
  const label = ctx.optionMap.get(ctx.value);
5098
- return /* @__PURE__ */ jsx45(
5268
+ return /* @__PURE__ */ jsx46(
5099
5269
  "span",
5100
5270
  {
5101
5271
  "data-slot": "searchable-select-value",
@@ -5108,7 +5278,7 @@ function SearchableSelectTrigger({
5108
5278
  );
5109
5279
  }
5110
5280
  if (ctx.values.length === 0) {
5111
- return /* @__PURE__ */ jsx45(
5281
+ return /* @__PURE__ */ jsx46(
5112
5282
  "span",
5113
5283
  {
5114
5284
  "data-slot": "searchable-select-value",
@@ -5119,20 +5289,20 @@ function SearchableSelectTrigger({
5119
5289
  }
5120
5290
  const visible = ctx.values.slice(0, ctx.maxCount);
5121
5291
  const remaining = ctx.values.length - visible.length;
5122
- return /* @__PURE__ */ jsxs26(
5292
+ return /* @__PURE__ */ jsxs27(
5123
5293
  "span",
5124
5294
  {
5125
5295
  "data-slot": "searchable-select-value",
5126
5296
  className: "flex flex-wrap items-center gap-1",
5127
5297
  children: [
5128
- visible.map((v) => /* @__PURE__ */ jsxs26(
5298
+ visible.map((v) => /* @__PURE__ */ jsxs27(
5129
5299
  Badge,
5130
5300
  {
5131
5301
  variant: "secondary",
5132
5302
  className: "gap-1 pr-1",
5133
5303
  children: [
5134
- /* @__PURE__ */ jsx45("span", { className: "truncate max-w-[120px]", children: ctx.optionMap.get(v) || v }),
5135
- /* @__PURE__ */ jsx45(
5304
+ /* @__PURE__ */ jsx46("span", { className: "truncate max-w-[120px]", children: ctx.optionMap.get(v) || v }),
5305
+ /* @__PURE__ */ jsx46(
5136
5306
  "span",
5137
5307
  {
5138
5308
  role: "button",
@@ -5144,14 +5314,14 @@ function SearchableSelectTrigger({
5144
5314
  e.stopPropagation();
5145
5315
  ctx.setValues(ctx.values.filter((val) => val !== v));
5146
5316
  },
5147
- children: /* @__PURE__ */ jsx45(XIcon2, { className: "size-3" })
5317
+ children: /* @__PURE__ */ jsx46(XIcon2, { className: "size-3" })
5148
5318
  }
5149
5319
  )
5150
5320
  ]
5151
5321
  },
5152
5322
  v
5153
5323
  )),
5154
- remaining > 0 && /* @__PURE__ */ jsxs26(Badge, { variant: "outline", className: "text-muted-foreground", children: [
5324
+ remaining > 0 && /* @__PURE__ */ jsxs27(Badge, { variant: "outline", className: "text-muted-foreground", children: [
5155
5325
  "+",
5156
5326
  remaining,
5157
5327
  " more"
@@ -5160,7 +5330,7 @@ function SearchableSelectTrigger({
5160
5330
  }
5161
5331
  );
5162
5332
  };
5163
- return /* @__PURE__ */ jsxs26(
5333
+ return /* @__PURE__ */ jsxs27(
5164
5334
  PopoverTrigger,
5165
5335
  {
5166
5336
  "data-slot": "searchable-select-trigger",
@@ -5174,7 +5344,7 @@ function SearchableSelectTrigger({
5174
5344
  ...props,
5175
5345
  children: [
5176
5346
  renderContent(),
5177
- /* @__PURE__ */ jsx45(ChevronsUpDown, { className: "size-4 shrink-0 opacity-50" })
5347
+ /* @__PURE__ */ jsx46(ChevronsUpDown, { className: "size-4 shrink-0 opacity-50" })
5178
5348
  ]
5179
5349
  }
5180
5350
  );
@@ -5186,7 +5356,7 @@ function SearchableSelectContent({
5186
5356
  ...props
5187
5357
  }) {
5188
5358
  const ctx = useSearchableSelect();
5189
- const groupedOptions = React43.useMemo(() => {
5359
+ const groupedOptions = React44.useMemo(() => {
5190
5360
  if (ctx.options.length === 0) return null;
5191
5361
  const groups = /* @__PURE__ */ new Map();
5192
5362
  for (const opt of ctx.options) {
@@ -5200,7 +5370,7 @@ function SearchableSelectContent({
5200
5370
  if (!groupedOptions) return null;
5201
5371
  const entries = Array.from(groupedOptions.entries());
5202
5372
  if (entries.length === 1 && entries[0][0] === "") {
5203
- return entries[0][1].map((opt) => /* @__PURE__ */ jsx45(
5373
+ return entries[0][1].map((opt) => /* @__PURE__ */ jsx46(
5204
5374
  SearchableSelectItem,
5205
5375
  {
5206
5376
  value: opt.value,
@@ -5210,7 +5380,7 @@ function SearchableSelectContent({
5210
5380
  opt.value
5211
5381
  ));
5212
5382
  }
5213
- return entries.map(([group, opts]) => /* @__PURE__ */ jsx45(SearchableSelectGroup, { heading: group || void 0, children: opts.map((opt) => /* @__PURE__ */ jsx45(
5383
+ return entries.map(([group, opts]) => /* @__PURE__ */ jsx46(SearchableSelectGroup, { heading: group || void 0, children: opts.map((opt) => /* @__PURE__ */ jsx46(
5214
5384
  SearchableSelectItem,
5215
5385
  {
5216
5386
  value: opt.value,
@@ -5220,17 +5390,17 @@ function SearchableSelectContent({
5220
5390
  opt.value
5221
5391
  )) }, group));
5222
5392
  };
5223
- return /* @__PURE__ */ jsx45(
5393
+ return /* @__PURE__ */ jsx46(
5224
5394
  PopoverContent,
5225
5395
  {
5226
5396
  "data-slot": "searchable-select-content",
5227
5397
  className: cn("w-[var(--radix-popover-trigger-width)] p-0", className),
5228
5398
  align: "start",
5229
5399
  ...props,
5230
- children: /* @__PURE__ */ jsxs26(Command, { children: [
5231
- ctx.searchable && /* @__PURE__ */ jsx45(CommandInput, { placeholder: ctx.searchPlaceholder }),
5232
- /* @__PURE__ */ jsxs26(CommandList, { children: [
5233
- /* @__PURE__ */ jsx45(CommandEmpty, { children: emptyText }),
5400
+ children: /* @__PURE__ */ jsxs27(Command, { children: [
5401
+ ctx.searchable && /* @__PURE__ */ jsx46(CommandInput, { placeholder: ctx.searchPlaceholder }),
5402
+ /* @__PURE__ */ jsxs27(CommandList, { children: [
5403
+ /* @__PURE__ */ jsx46(CommandEmpty, { children: emptyText }),
5234
5404
  children || renderAutoItems()
5235
5405
  ] })
5236
5406
  ] })
@@ -5257,7 +5427,7 @@ function SearchableSelectItem({
5257
5427
  );
5258
5428
  }
5259
5429
  };
5260
- return /* @__PURE__ */ jsxs26(
5430
+ return /* @__PURE__ */ jsxs27(
5261
5431
  CommandItem,
5262
5432
  {
5263
5433
  "data-slot": "searchable-select-item",
@@ -5270,18 +5440,18 @@ function SearchableSelectItem({
5270
5440
  "data-disabled": disabled || void 0,
5271
5441
  ...props,
5272
5442
  children: [
5273
- ctx.mode === "multiple" && /* @__PURE__ */ jsx45("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx45(
5443
+ ctx.mode === "multiple" && /* @__PURE__ */ jsx46("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx46(
5274
5444
  "span",
5275
5445
  {
5276
5446
  className: cn(
5277
5447
  "size-4 rounded-sm border border-primary transition-colors",
5278
5448
  isSelected ? "bg-primary text-primary-foreground" : "bg-transparent"
5279
5449
  ),
5280
- children: isSelected && /* @__PURE__ */ jsx45(CheckIcon4, { className: "size-4 p-0.5" })
5450
+ children: isSelected && /* @__PURE__ */ jsx46(CheckIcon4, { className: "size-4 p-0.5" })
5281
5451
  }
5282
5452
  ) }),
5283
- /* @__PURE__ */ jsx45("span", { className: "flex-1 truncate", children }),
5284
- ctx.mode === "single" && isSelected && /* @__PURE__ */ jsx45("span", { className: "absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx45(CheckIcon4, { className: "size-4" }) })
5453
+ /* @__PURE__ */ jsx46("span", { className: "flex-1 truncate", children }),
5454
+ ctx.mode === "single" && isSelected && /* @__PURE__ */ jsx46("span", { className: "absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx46(CheckIcon4, { className: "size-4" }) })
5285
5455
  ]
5286
5456
  }
5287
5457
  );
@@ -5290,7 +5460,7 @@ function SearchableSelectGroup({
5290
5460
  className,
5291
5461
  ...props
5292
5462
  }) {
5293
- return /* @__PURE__ */ jsx45(
5463
+ return /* @__PURE__ */ jsx46(
5294
5464
  CommandGroup,
5295
5465
  {
5296
5466
  "data-slot": "searchable-select-group",
@@ -5304,7 +5474,7 @@ function SearchableSelectEmpty({
5304
5474
  children = "No results found.",
5305
5475
  ...props
5306
5476
  }) {
5307
- return /* @__PURE__ */ jsx45(
5477
+ return /* @__PURE__ */ jsx46(
5308
5478
  CommandEmpty,
5309
5479
  {
5310
5480
  "data-slot": "searchable-select-empty",
@@ -5319,21 +5489,21 @@ function SearchableSelectEmpty({
5319
5489
  import "react";
5320
5490
  import * as SelectPrimitive from "@radix-ui/react-select";
5321
5491
  import { CheckIcon as CheckIcon5, ChevronDownIcon as ChevronDownIcon4, ChevronUpIcon } from "lucide-react";
5322
- import { jsx as jsx46, jsxs as jsxs27 } from "react/jsx-runtime";
5492
+ import { jsx as jsx47, jsxs as jsxs28 } from "react/jsx-runtime";
5323
5493
  function Select({
5324
5494
  ...props
5325
5495
  }) {
5326
- return /* @__PURE__ */ jsx46(SelectPrimitive.Root, { "data-slot": "select", ...props });
5496
+ return /* @__PURE__ */ jsx47(SelectPrimitive.Root, { "data-slot": "select", ...props });
5327
5497
  }
5328
5498
  function SelectGroup({
5329
5499
  ...props
5330
5500
  }) {
5331
- return /* @__PURE__ */ jsx46(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
5501
+ return /* @__PURE__ */ jsx47(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
5332
5502
  }
5333
5503
  function SelectValue({
5334
5504
  ...props
5335
5505
  }) {
5336
- return /* @__PURE__ */ jsx46(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
5506
+ return /* @__PURE__ */ jsx47(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
5337
5507
  }
5338
5508
  function SelectTrigger({
5339
5509
  className,
@@ -5341,7 +5511,7 @@ function SelectTrigger({
5341
5511
  children,
5342
5512
  ...props
5343
5513
  }) {
5344
- return /* @__PURE__ */ jsxs27(
5514
+ return /* @__PURE__ */ jsxs28(
5345
5515
  SelectPrimitive.Trigger,
5346
5516
  {
5347
5517
  "data-slot": "select-trigger",
@@ -5353,7 +5523,7 @@ function SelectTrigger({
5353
5523
  ...props,
5354
5524
  children: [
5355
5525
  children,
5356
- /* @__PURE__ */ jsx46(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx46(ChevronDownIcon4, { className: "size-4 opacity-50" }) })
5526
+ /* @__PURE__ */ jsx47(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx47(ChevronDownIcon4, { className: "size-4 opacity-50" }) })
5357
5527
  ]
5358
5528
  }
5359
5529
  );
@@ -5364,7 +5534,7 @@ function SelectContent({
5364
5534
  position = "popper",
5365
5535
  ...props
5366
5536
  }) {
5367
- return /* @__PURE__ */ jsx46(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs27(
5537
+ return /* @__PURE__ */ jsx47(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs28(
5368
5538
  SelectPrimitive.Content,
5369
5539
  {
5370
5540
  "data-slot": "select-content",
@@ -5376,8 +5546,8 @@ function SelectContent({
5376
5546
  position,
5377
5547
  ...props,
5378
5548
  children: [
5379
- /* @__PURE__ */ jsx46(SelectScrollUpButton, {}),
5380
- /* @__PURE__ */ jsx46(
5549
+ /* @__PURE__ */ jsx47(SelectScrollUpButton, {}),
5550
+ /* @__PURE__ */ jsx47(
5381
5551
  SelectPrimitive.Viewport,
5382
5552
  {
5383
5553
  className: cn(
@@ -5387,7 +5557,7 @@ function SelectContent({
5387
5557
  children
5388
5558
  }
5389
5559
  ),
5390
- /* @__PURE__ */ jsx46(SelectScrollDownButton, {})
5560
+ /* @__PURE__ */ jsx47(SelectScrollDownButton, {})
5391
5561
  ]
5392
5562
  }
5393
5563
  ) });
@@ -5396,7 +5566,7 @@ function SelectLabel({
5396
5566
  className,
5397
5567
  ...props
5398
5568
  }) {
5399
- return /* @__PURE__ */ jsx46(
5569
+ return /* @__PURE__ */ jsx47(
5400
5570
  SelectPrimitive.Label,
5401
5571
  {
5402
5572
  "data-slot": "select-label",
@@ -5410,7 +5580,7 @@ function SelectItem({
5410
5580
  children,
5411
5581
  ...props
5412
5582
  }) {
5413
- return /* @__PURE__ */ jsxs27(
5583
+ return /* @__PURE__ */ jsxs28(
5414
5584
  SelectPrimitive.Item,
5415
5585
  {
5416
5586
  "data-slot": "select-item",
@@ -5420,8 +5590,8 @@ function SelectItem({
5420
5590
  ),
5421
5591
  ...props,
5422
5592
  children: [
5423
- /* @__PURE__ */ jsx46("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx46(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx46(CheckIcon5, { className: "size-4" }) }) }),
5424
- /* @__PURE__ */ jsx46(SelectPrimitive.ItemText, { children })
5593
+ /* @__PURE__ */ jsx47("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx47(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx47(CheckIcon5, { className: "size-4" }) }) }),
5594
+ /* @__PURE__ */ jsx47(SelectPrimitive.ItemText, { children })
5425
5595
  ]
5426
5596
  }
5427
5597
  );
@@ -5430,7 +5600,7 @@ function SelectSeparator({
5430
5600
  className,
5431
5601
  ...props
5432
5602
  }) {
5433
- return /* @__PURE__ */ jsx46(
5603
+ return /* @__PURE__ */ jsx47(
5434
5604
  SelectPrimitive.Separator,
5435
5605
  {
5436
5606
  "data-slot": "select-separator",
@@ -5443,7 +5613,7 @@ function SelectScrollUpButton({
5443
5613
  className,
5444
5614
  ...props
5445
5615
  }) {
5446
- return /* @__PURE__ */ jsx46(
5616
+ return /* @__PURE__ */ jsx47(
5447
5617
  SelectPrimitive.ScrollUpButton,
5448
5618
  {
5449
5619
  "data-slot": "select-scroll-up-button",
@@ -5452,7 +5622,7 @@ function SelectScrollUpButton({
5452
5622
  className
5453
5623
  ),
5454
5624
  ...props,
5455
- children: /* @__PURE__ */ jsx46(ChevronUpIcon, { className: "size-4" })
5625
+ children: /* @__PURE__ */ jsx47(ChevronUpIcon, { className: "size-4" })
5456
5626
  }
5457
5627
  );
5458
5628
  }
@@ -5460,7 +5630,7 @@ function SelectScrollDownButton({
5460
5630
  className,
5461
5631
  ...props
5462
5632
  }) {
5463
- return /* @__PURE__ */ jsx46(
5633
+ return /* @__PURE__ */ jsx47(
5464
5634
  SelectPrimitive.ScrollDownButton,
5465
5635
  {
5466
5636
  "data-slot": "select-scroll-down-button",
@@ -5469,7 +5639,7 @@ function SelectScrollDownButton({
5469
5639
  className
5470
5640
  ),
5471
5641
  ...props,
5472
- children: /* @__PURE__ */ jsx46(ChevronDownIcon4, { className: "size-4" })
5642
+ children: /* @__PURE__ */ jsx47(ChevronDownIcon4, { className: "size-4" })
5473
5643
  }
5474
5644
  );
5475
5645
  }
@@ -5477,14 +5647,14 @@ function SelectScrollDownButton({
5477
5647
  // src/components/ui/separator.tsx
5478
5648
  import "react";
5479
5649
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
5480
- import { jsx as jsx47 } from "react/jsx-runtime";
5650
+ import { jsx as jsx48 } from "react/jsx-runtime";
5481
5651
  function Separator5({
5482
5652
  className,
5483
5653
  orientation = "horizontal",
5484
5654
  decorative = true,
5485
5655
  ...props
5486
5656
  }) {
5487
- return /* @__PURE__ */ jsx47(
5657
+ return /* @__PURE__ */ jsx48(
5488
5658
  SeparatorPrimitive.Root,
5489
5659
  {
5490
5660
  "data-slot": "separator",
@@ -5503,30 +5673,30 @@ function Separator5({
5503
5673
  import * as SheetPrimitive from "@radix-ui/react-dialog";
5504
5674
  import { XIcon as XIcon3 } from "lucide-react";
5505
5675
  import "react";
5506
- import { jsx as jsx48, jsxs as jsxs28 } from "react/jsx-runtime";
5676
+ import { jsx as jsx49, jsxs as jsxs29 } from "react/jsx-runtime";
5507
5677
  function Sheet({ ...props }) {
5508
- return /* @__PURE__ */ jsx48(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
5678
+ return /* @__PURE__ */ jsx49(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
5509
5679
  }
5510
5680
  function SheetTrigger({
5511
5681
  ...props
5512
5682
  }) {
5513
- return /* @__PURE__ */ jsx48(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
5683
+ return /* @__PURE__ */ jsx49(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
5514
5684
  }
5515
5685
  function SheetClose({
5516
5686
  ...props
5517
5687
  }) {
5518
- return /* @__PURE__ */ jsx48(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
5688
+ return /* @__PURE__ */ jsx49(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
5519
5689
  }
5520
5690
  function SheetPortal({
5521
5691
  ...props
5522
5692
  }) {
5523
- return /* @__PURE__ */ jsx48(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
5693
+ return /* @__PURE__ */ jsx49(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
5524
5694
  }
5525
5695
  function SheetOverlay({
5526
5696
  className,
5527
5697
  ...props
5528
5698
  }) {
5529
- return /* @__PURE__ */ jsx48(
5699
+ return /* @__PURE__ */ jsx49(
5530
5700
  SheetPrimitive.Overlay,
5531
5701
  {
5532
5702
  "data-slot": "sheet-overlay",
@@ -5545,9 +5715,9 @@ function SheetContent({
5545
5715
  showCloseButton = true,
5546
5716
  ...props
5547
5717
  }) {
5548
- return /* @__PURE__ */ jsxs28(SheetPortal, { children: [
5549
- /* @__PURE__ */ jsx48(SheetOverlay, {}),
5550
- /* @__PURE__ */ jsxs28(
5718
+ return /* @__PURE__ */ jsxs29(SheetPortal, { children: [
5719
+ /* @__PURE__ */ jsx49(SheetOverlay, {}),
5720
+ /* @__PURE__ */ jsxs29(
5551
5721
  SheetPrimitive.Content,
5552
5722
  {
5553
5723
  "data-slot": "sheet-content",
@@ -5562,9 +5732,9 @@ function SheetContent({
5562
5732
  ...props,
5563
5733
  children: [
5564
5734
  children,
5565
- showCloseButton && /* @__PURE__ */ jsxs28(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: [
5566
- /* @__PURE__ */ jsx48(XIcon3, { className: "size-4" }),
5567
- /* @__PURE__ */ jsx48("span", { className: "sr-only", children: "Close" })
5735
+ showCloseButton && /* @__PURE__ */ jsxs29(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: [
5736
+ /* @__PURE__ */ jsx49(XIcon3, { className: "size-4" }),
5737
+ /* @__PURE__ */ jsx49("span", { className: "sr-only", children: "Close" })
5568
5738
  ] })
5569
5739
  ]
5570
5740
  }
@@ -5572,7 +5742,7 @@ function SheetContent({
5572
5742
  ] });
5573
5743
  }
5574
5744
  function SheetHeader({ className, ...props }) {
5575
- return /* @__PURE__ */ jsx48(
5745
+ return /* @__PURE__ */ jsx49(
5576
5746
  "div",
5577
5747
  {
5578
5748
  "data-slot": "sheet-header",
@@ -5582,7 +5752,7 @@ function SheetHeader({ className, ...props }) {
5582
5752
  );
5583
5753
  }
5584
5754
  function SheetFooter({ className, ...props }) {
5585
- return /* @__PURE__ */ jsx48(
5755
+ return /* @__PURE__ */ jsx49(
5586
5756
  "div",
5587
5757
  {
5588
5758
  "data-slot": "sheet-footer",
@@ -5595,7 +5765,7 @@ function SheetTitle({
5595
5765
  className,
5596
5766
  ...props
5597
5767
  }) {
5598
- return /* @__PURE__ */ jsx48(
5768
+ return /* @__PURE__ */ jsx49(
5599
5769
  SheetPrimitive.Title,
5600
5770
  {
5601
5771
  "data-slot": "sheet-title",
@@ -5608,7 +5778,7 @@ function SheetDescription({
5608
5778
  className,
5609
5779
  ...props
5610
5780
  }) {
5611
- return /* @__PURE__ */ jsx48(
5781
+ return /* @__PURE__ */ jsx49(
5612
5782
  SheetPrimitive.Description,
5613
5783
  {
5614
5784
  "data-slot": "sheet-description",
@@ -5620,14 +5790,14 @@ function SheetDescription({
5620
5790
 
5621
5791
  // src/components/ui/sidebar.tsx
5622
5792
  import { Slot as Slot6 } from "@radix-ui/react-slot";
5623
- import { cva as cva12 } from "class-variance-authority";
5793
+ import { cva as cva13 } from "class-variance-authority";
5624
5794
  import { PanelLeftIcon } from "lucide-react";
5625
- import * as React49 from "react";
5795
+ import * as React50 from "react";
5626
5796
 
5627
5797
  // src/components/ui/skeleton.tsx
5628
- import { jsx as jsx49 } from "react/jsx-runtime";
5798
+ import { jsx as jsx50 } from "react/jsx-runtime";
5629
5799
  function Skeleton({ className, ...props }) {
5630
- return /* @__PURE__ */ jsx49(
5800
+ return /* @__PURE__ */ jsx50(
5631
5801
  "div",
5632
5802
  {
5633
5803
  "data-slot": "skeleton",
@@ -5638,15 +5808,15 @@ function Skeleton({ className, ...props }) {
5638
5808
  }
5639
5809
 
5640
5810
  // src/components/ui/tooltip.tsx
5641
- import "react";
5811
+ import * as React48 from "react";
5642
5812
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
5643
5813
  import { X as X4 } from "lucide-react";
5644
- import { jsx as jsx50, jsxs as jsxs29 } from "react/jsx-runtime";
5814
+ import { jsx as jsx51, jsxs as jsxs30 } from "react/jsx-runtime";
5645
5815
  function TooltipProvider({
5646
5816
  delayDuration = 0,
5647
5817
  ...props
5648
5818
  }) {
5649
- return /* @__PURE__ */ jsx50(
5819
+ return /* @__PURE__ */ jsx51(
5650
5820
  TooltipPrimitive.Provider,
5651
5821
  {
5652
5822
  "data-slot": "tooltip-provider",
@@ -5655,15 +5825,38 @@ function TooltipProvider({
5655
5825
  }
5656
5826
  );
5657
5827
  }
5828
+ var TooltipCloseContext = React48.createContext(null);
5658
5829
  function Tooltip2({
5830
+ persistent = false,
5659
5831
  ...props
5660
5832
  }) {
5661
- return /* @__PURE__ */ jsx50(TooltipProvider, { children: /* @__PURE__ */ jsx50(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
5833
+ const [open, setOpen] = React48.useState(props.defaultOpen ?? false);
5834
+ if (!persistent) {
5835
+ return /* @__PURE__ */ jsx51(TooltipProvider, { children: /* @__PURE__ */ jsx51(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
5836
+ }
5837
+ const close = () => {
5838
+ setOpen(false);
5839
+ props.onOpenChange?.(false);
5840
+ };
5841
+ return /* @__PURE__ */ jsx51(TooltipProvider, { children: /* @__PURE__ */ jsx51(TooltipCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx51(
5842
+ TooltipPrimitive.Root,
5843
+ {
5844
+ "data-slot": "tooltip",
5845
+ open: props.open ?? open,
5846
+ onOpenChange: (isOpen) => {
5847
+ if (isOpen) {
5848
+ setOpen(true);
5849
+ props.onOpenChange?.(true);
5850
+ }
5851
+ },
5852
+ ...props
5853
+ }
5854
+ ) }) });
5662
5855
  }
5663
5856
  function TooltipTrigger({
5664
5857
  ...props
5665
5858
  }) {
5666
- return /* @__PURE__ */ jsx50(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
5859
+ return /* @__PURE__ */ jsx51(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
5667
5860
  }
5668
5861
  function TooltipContent({
5669
5862
  className,
@@ -5671,7 +5864,7 @@ function TooltipContent({
5671
5864
  children,
5672
5865
  ...props
5673
5866
  }) {
5674
- return /* @__PURE__ */ jsx50(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs29(
5867
+ return /* @__PURE__ */ jsx51(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs30(
5675
5868
  TooltipPrimitive.Content,
5676
5869
  {
5677
5870
  "data-slot": "tooltip-content",
@@ -5683,7 +5876,7 @@ function TooltipContent({
5683
5876
  ...props,
5684
5877
  children: [
5685
5878
  children,
5686
- /* @__PURE__ */ jsx50(TooltipPrimitive.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
5879
+ /* @__PURE__ */ jsx51(TooltipPrimitive.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
5687
5880
  ]
5688
5881
  }
5689
5882
  ) });
@@ -5698,7 +5891,12 @@ function RichTooltipContent({
5698
5891
  children,
5699
5892
  ...props
5700
5893
  }) {
5701
- return /* @__PURE__ */ jsx50(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs29(
5894
+ const close = React48.useContext(TooltipCloseContext);
5895
+ const handleDismiss = () => {
5896
+ close?.();
5897
+ onDismiss?.();
5898
+ };
5899
+ return /* @__PURE__ */ jsx51(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs30(
5702
5900
  TooltipPrimitive.Content,
5703
5901
  {
5704
5902
  "data-slot": "rich-tooltip-content",
@@ -5707,26 +5905,29 @@ function RichTooltipContent({
5707
5905
  "animate-in fade-in-0 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=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 origin-(--radix-tooltip-content-transform-origin)",
5708
5906
  className
5709
5907
  ),
5908
+ ...dismissible && {
5909
+ onPointerDownOutside: handleDismiss
5910
+ },
5710
5911
  ...props,
5711
5912
  children: [
5712
- /* @__PURE__ */ jsxs29("div", { className: "flex items-start gap-3 bg-gray-surface-dark rounded-[12px] px-3 py-4 text-sm leading-5 max-w-sm", children: [
5713
- icon && /* @__PURE__ */ jsx50("span", { className: "flex items-center justify-center shrink-0 size-5 text-white [&_svg]:size-5", children: icon }),
5714
- /* @__PURE__ */ jsxs29("div", { className: "flex flex-1 flex-col gap-2 min-w-0", children: [
5715
- heading && /* @__PURE__ */ jsx50("p", { className: "font-semibold text-sm leading-5 text-white", children: heading }),
5716
- /* @__PURE__ */ jsx50("div", { className: "font-normal text-sm leading-5 text-white", children })
5913
+ /* @__PURE__ */ jsxs30("div", { className: "flex items-start gap-3 bg-gray-surface-dark rounded-[12px] px-3 py-4 text-sm leading-5 max-w-sm", children: [
5914
+ icon && /* @__PURE__ */ jsx51("span", { className: "flex items-center justify-center shrink-0 size-5 text-white [&_svg]:size-5", children: icon }),
5915
+ /* @__PURE__ */ jsxs30("div", { className: "flex flex-1 flex-col gap-2 min-w-0", children: [
5916
+ heading && /* @__PURE__ */ jsx51("p", { className: "font-semibold text-sm leading-5 text-white", children: heading }),
5917
+ /* @__PURE__ */ jsx51("div", { className: "font-normal text-sm leading-5 text-white", children })
5717
5918
  ] }),
5718
- dismissible && /* @__PURE__ */ jsx50(
5919
+ dismissible && /* @__PURE__ */ jsx51(
5719
5920
  "button",
5720
5921
  {
5721
5922
  type: "button",
5722
- onClick: onDismiss,
5923
+ onClick: handleDismiss,
5723
5924
  className: "flex items-center justify-center shrink-0 size-5 text-white/70 hover:text-white transition-colors cursor-pointer",
5724
5925
  "aria-label": "Dismiss",
5725
- children: /* @__PURE__ */ jsx50(X4, { className: "size-2.5" })
5926
+ children: /* @__PURE__ */ jsx51(X4, { className: "size-3.5" })
5726
5927
  }
5727
5928
  )
5728
5929
  ] }),
5729
- /* @__PURE__ */ jsx50(
5930
+ /* @__PURE__ */ jsx51(
5730
5931
  TooltipPrimitive.Arrow,
5731
5932
  {
5732
5933
  width: 16,
@@ -5740,11 +5941,11 @@ function RichTooltipContent({
5740
5941
  }
5741
5942
 
5742
5943
  // src/hooks/use-mobile.ts
5743
- import * as React48 from "react";
5944
+ import * as React49 from "react";
5744
5945
  var MOBILE_BREAKPOINT = 768;
5745
5946
  function useIsMobile() {
5746
- const [isMobile, setIsMobile] = React48.useState(void 0);
5747
- React48.useEffect(() => {
5947
+ const [isMobile, setIsMobile] = React49.useState(void 0);
5948
+ React49.useEffect(() => {
5748
5949
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
5749
5950
  const onChange = () => {
5750
5951
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -5757,16 +5958,16 @@ function useIsMobile() {
5757
5958
  }
5758
5959
 
5759
5960
  // src/components/ui/sidebar.tsx
5760
- import { jsx as jsx51, jsxs as jsxs30 } from "react/jsx-runtime";
5961
+ import { jsx as jsx52, jsxs as jsxs31 } from "react/jsx-runtime";
5761
5962
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
5762
5963
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
5763
5964
  var SIDEBAR_WIDTH = "18rem";
5764
5965
  var SIDEBAR_WIDTH_MOBILE = "18rem";
5765
5966
  var SIDEBAR_WIDTH_ICON = "3rem";
5766
5967
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
5767
- var SidebarContext = React49.createContext(null);
5968
+ var SidebarContext = React50.createContext(null);
5768
5969
  function useSidebar() {
5769
- const context = React49.useContext(SidebarContext);
5970
+ const context = React50.useContext(SidebarContext);
5770
5971
  if (!context) {
5771
5972
  throw new Error("useSidebar must be used within a SidebarProvider.");
5772
5973
  }
@@ -5782,10 +5983,10 @@ function SidebarProvider({
5782
5983
  ...props
5783
5984
  }) {
5784
5985
  const isMobile = useIsMobile();
5785
- const [openMobile, setOpenMobile] = React49.useState(false);
5786
- const [_open, _setOpen] = React49.useState(defaultOpen);
5986
+ const [openMobile, setOpenMobile] = React50.useState(false);
5987
+ const [_open, _setOpen] = React50.useState(defaultOpen);
5787
5988
  const open = openProp ?? _open;
5788
- const setOpen = React49.useCallback(
5989
+ const setOpen = React50.useCallback(
5789
5990
  (value) => {
5790
5991
  const openState = typeof value === "function" ? value(open) : value;
5791
5992
  if (setOpenProp) {
@@ -5797,10 +5998,10 @@ function SidebarProvider({
5797
5998
  },
5798
5999
  [setOpenProp, open]
5799
6000
  );
5800
- const toggleSidebar = React49.useCallback(() => {
6001
+ const toggleSidebar = React50.useCallback(() => {
5801
6002
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
5802
6003
  }, [isMobile, setOpen, setOpenMobile]);
5803
- React49.useEffect(() => {
6004
+ React50.useEffect(() => {
5804
6005
  const handleKeyDown = (event) => {
5805
6006
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
5806
6007
  event.preventDefault();
@@ -5811,7 +6012,7 @@ function SidebarProvider({
5811
6012
  return () => window.removeEventListener("keydown", handleKeyDown);
5812
6013
  }, [toggleSidebar]);
5813
6014
  const state = open ? "expanded" : "collapsed";
5814
- const contextValue = React49.useMemo(
6015
+ const contextValue = React50.useMemo(
5815
6016
  () => ({
5816
6017
  state,
5817
6018
  open,
@@ -5823,7 +6024,7 @@ function SidebarProvider({
5823
6024
  }),
5824
6025
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
5825
6026
  );
5826
- return /* @__PURE__ */ jsx51(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx51(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx51(
6027
+ return /* @__PURE__ */ jsx52(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx52(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx52(
5827
6028
  "div",
5828
6029
  {
5829
6030
  "data-slot": "sidebar-wrapper",
@@ -5851,7 +6052,7 @@ function Sidebar({
5851
6052
  }) {
5852
6053
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
5853
6054
  if (collapsible === "none") {
5854
- return /* @__PURE__ */ jsx51(
6055
+ return /* @__PURE__ */ jsx52(
5855
6056
  "div",
5856
6057
  {
5857
6058
  "data-slot": "sidebar",
@@ -5865,7 +6066,7 @@ function Sidebar({
5865
6066
  );
5866
6067
  }
5867
6068
  if (isMobile) {
5868
- return /* @__PURE__ */ jsx51(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs30(
6069
+ return /* @__PURE__ */ jsx52(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs31(
5869
6070
  SheetContent,
5870
6071
  {
5871
6072
  "data-sidebar": "sidebar",
@@ -5877,16 +6078,16 @@ function Sidebar({
5877
6078
  },
5878
6079
  side,
5879
6080
  children: [
5880
- /* @__PURE__ */ jsxs30(SheetHeader, { className: "sr-only", children: [
5881
- /* @__PURE__ */ jsx51(SheetTitle, { children: "Sidebar" }),
5882
- /* @__PURE__ */ jsx51(SheetDescription, { children: "Displays the mobile sidebar." })
6081
+ /* @__PURE__ */ jsxs31(SheetHeader, { className: "sr-only", children: [
6082
+ /* @__PURE__ */ jsx52(SheetTitle, { children: "Sidebar" }),
6083
+ /* @__PURE__ */ jsx52(SheetDescription, { children: "Displays the mobile sidebar." })
5883
6084
  ] }),
5884
- /* @__PURE__ */ jsx51("div", { className: "flex h-full w-full flex-col", children })
6085
+ /* @__PURE__ */ jsx52("div", { className: "flex h-full w-full flex-col", children })
5885
6086
  ]
5886
6087
  }
5887
6088
  ) });
5888
6089
  }
5889
- return /* @__PURE__ */ jsxs30(
6090
+ return /* @__PURE__ */ jsxs31(
5890
6091
  "div",
5891
6092
  {
5892
6093
  className: "group peer text-sidebar-foreground hidden md:block",
@@ -5896,7 +6097,7 @@ function Sidebar({
5896
6097
  "data-side": side,
5897
6098
  "data-slot": "sidebar",
5898
6099
  children: [
5899
- /* @__PURE__ */ jsx51(
6100
+ /* @__PURE__ */ jsx52(
5900
6101
  "div",
5901
6102
  {
5902
6103
  "data-slot": "sidebar-gap",
@@ -5908,7 +6109,7 @@ function Sidebar({
5908
6109
  )
5909
6110
  }
5910
6111
  ),
5911
- /* @__PURE__ */ jsx51(
6112
+ /* @__PURE__ */ jsx52(
5912
6113
  "div",
5913
6114
  {
5914
6115
  "data-slot": "sidebar-container",
@@ -5920,7 +6121,7 @@ function Sidebar({
5920
6121
  className
5921
6122
  ),
5922
6123
  ...props,
5923
- children: /* @__PURE__ */ jsx51(
6124
+ children: /* @__PURE__ */ jsx52(
5924
6125
  "div",
5925
6126
  {
5926
6127
  "data-sidebar": "sidebar",
@@ -5941,7 +6142,7 @@ function SidebarTrigger({
5941
6142
  ...props
5942
6143
  }) {
5943
6144
  const { toggleSidebar } = useSidebar();
5944
- return /* @__PURE__ */ jsxs30(
6145
+ return /* @__PURE__ */ jsxs31(
5945
6146
  Button,
5946
6147
  {
5947
6148
  "data-sidebar": "trigger",
@@ -5955,15 +6156,15 @@ function SidebarTrigger({
5955
6156
  },
5956
6157
  ...props,
5957
6158
  children: [
5958
- /* @__PURE__ */ jsx51(PanelLeftIcon, {}),
5959
- /* @__PURE__ */ jsx51("span", { className: "sr-only", children: "Toggle Sidebar" })
6159
+ /* @__PURE__ */ jsx52(PanelLeftIcon, {}),
6160
+ /* @__PURE__ */ jsx52("span", { className: "sr-only", children: "Toggle Sidebar" })
5960
6161
  ]
5961
6162
  }
5962
6163
  );
5963
6164
  }
5964
6165
  function SidebarRail({ className, ...props }) {
5965
6166
  const { toggleSidebar } = useSidebar();
5966
- return /* @__PURE__ */ jsx51(
6167
+ return /* @__PURE__ */ jsx52(
5967
6168
  "button",
5968
6169
  {
5969
6170
  "data-sidebar": "rail",
@@ -5986,7 +6187,7 @@ function SidebarRail({ className, ...props }) {
5986
6187
  );
5987
6188
  }
5988
6189
  function SidebarInset({ className, ...props }) {
5989
- return /* @__PURE__ */ jsx51(
6190
+ return /* @__PURE__ */ jsx52(
5990
6191
  "main",
5991
6192
  {
5992
6193
  "data-slot": "sidebar-inset",
@@ -6003,7 +6204,7 @@ function SidebarInput({
6003
6204
  className,
6004
6205
  ...props
6005
6206
  }) {
6006
- return /* @__PURE__ */ jsx51(
6207
+ return /* @__PURE__ */ jsx52(
6007
6208
  Input,
6008
6209
  {
6009
6210
  "data-slot": "sidebar-input",
@@ -6014,7 +6215,7 @@ function SidebarInput({
6014
6215
  );
6015
6216
  }
6016
6217
  function SidebarHeader({ className, ...props }) {
6017
- return /* @__PURE__ */ jsx51(
6218
+ return /* @__PURE__ */ jsx52(
6018
6219
  "div",
6019
6220
  {
6020
6221
  "data-slot": "sidebar-header",
@@ -6025,7 +6226,7 @@ function SidebarHeader({ className, ...props }) {
6025
6226
  );
6026
6227
  }
6027
6228
  function SidebarFooter({ className, ...props }) {
6028
- return /* @__PURE__ */ jsx51(
6229
+ return /* @__PURE__ */ jsx52(
6029
6230
  "div",
6030
6231
  {
6031
6232
  "data-slot": "sidebar-footer",
@@ -6039,7 +6240,7 @@ function SidebarSeparator({
6039
6240
  className,
6040
6241
  ...props
6041
6242
  }) {
6042
- return /* @__PURE__ */ jsx51(
6243
+ return /* @__PURE__ */ jsx52(
6043
6244
  Separator5,
6044
6245
  {
6045
6246
  "data-slot": "sidebar-separator",
@@ -6050,7 +6251,7 @@ function SidebarSeparator({
6050
6251
  );
6051
6252
  }
6052
6253
  function SidebarContent({ className, ...props }) {
6053
- return /* @__PURE__ */ jsx51(
6254
+ return /* @__PURE__ */ jsx52(
6054
6255
  "div",
6055
6256
  {
6056
6257
  "data-slot": "sidebar-content",
@@ -6064,7 +6265,7 @@ function SidebarContent({ className, ...props }) {
6064
6265
  );
6065
6266
  }
6066
6267
  function SidebarGroup({ className, ...props }) {
6067
- return /* @__PURE__ */ jsx51(
6268
+ return /* @__PURE__ */ jsx52(
6068
6269
  "div",
6069
6270
  {
6070
6271
  "data-slot": "sidebar-group",
@@ -6080,7 +6281,7 @@ function SidebarGroupLabel({
6080
6281
  ...props
6081
6282
  }) {
6082
6283
  const Comp = asChild ? Slot6 : "div";
6083
- return /* @__PURE__ */ jsx51(
6284
+ return /* @__PURE__ */ jsx52(
6084
6285
  Comp,
6085
6286
  {
6086
6287
  "data-slot": "sidebar-group-label",
@@ -6100,7 +6301,7 @@ function SidebarGroupAction({
6100
6301
  ...props
6101
6302
  }) {
6102
6303
  const Comp = asChild ? Slot6 : "button";
6103
- return /* @__PURE__ */ jsx51(
6304
+ return /* @__PURE__ */ jsx52(
6104
6305
  Comp,
6105
6306
  {
6106
6307
  "data-slot": "sidebar-group-action",
@@ -6120,7 +6321,7 @@ function SidebarGroupContent({
6120
6321
  className,
6121
6322
  ...props
6122
6323
  }) {
6123
- return /* @__PURE__ */ jsx51(
6324
+ return /* @__PURE__ */ jsx52(
6124
6325
  "div",
6125
6326
  {
6126
6327
  "data-slot": "sidebar-group-content",
@@ -6131,7 +6332,7 @@ function SidebarGroupContent({
6131
6332
  );
6132
6333
  }
6133
6334
  function SidebarMenu({ className, ...props }) {
6134
- return /* @__PURE__ */ jsx51(
6335
+ return /* @__PURE__ */ jsx52(
6135
6336
  "ul",
6136
6337
  {
6137
6338
  "data-slot": "sidebar-menu",
@@ -6142,7 +6343,7 @@ function SidebarMenu({ className, ...props }) {
6142
6343
  );
6143
6344
  }
6144
6345
  function SidebarMenuItem({ className, ...props }) {
6145
- return /* @__PURE__ */ jsx51(
6346
+ return /* @__PURE__ */ jsx52(
6146
6347
  "li",
6147
6348
  {
6148
6349
  "data-slot": "sidebar-menu-item",
@@ -6152,7 +6353,7 @@ function SidebarMenuItem({ className, ...props }) {
6152
6353
  }
6153
6354
  );
6154
6355
  }
6155
- var sidebarMenuButtonVariants = cva12(
6356
+ var sidebarMenuButtonVariants = cva13(
6156
6357
  "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",
6157
6358
  {
6158
6359
  variants: {
@@ -6183,7 +6384,7 @@ function SidebarMenuButton({
6183
6384
  }) {
6184
6385
  const Comp = asChild ? Slot6 : "button";
6185
6386
  const { isMobile, state } = useSidebar();
6186
- const button = /* @__PURE__ */ jsx51(
6387
+ const button = /* @__PURE__ */ jsx52(
6187
6388
  Comp,
6188
6389
  {
6189
6390
  "data-slot": "sidebar-menu-button",
@@ -6202,9 +6403,9 @@ function SidebarMenuButton({
6202
6403
  children: tooltip
6203
6404
  };
6204
6405
  }
6205
- return /* @__PURE__ */ jsxs30(Tooltip2, { children: [
6206
- /* @__PURE__ */ jsx51(TooltipTrigger, { asChild: true, children: button }),
6207
- /* @__PURE__ */ jsx51(
6406
+ return /* @__PURE__ */ jsxs31(Tooltip2, { children: [
6407
+ /* @__PURE__ */ jsx52(TooltipTrigger, { asChild: true, children: button }),
6408
+ /* @__PURE__ */ jsx52(
6208
6409
  TooltipContent,
6209
6410
  {
6210
6411
  side: "right",
@@ -6222,7 +6423,7 @@ function SidebarMenuAction({
6222
6423
  ...props
6223
6424
  }) {
6224
6425
  const Comp = asChild ? Slot6 : "button";
6225
- return /* @__PURE__ */ jsx51(
6426
+ return /* @__PURE__ */ jsx52(
6226
6427
  Comp,
6227
6428
  {
6228
6429
  "data-slot": "sidebar-menu-action",
@@ -6246,7 +6447,7 @@ function SidebarMenuBadge({
6246
6447
  className,
6247
6448
  ...props
6248
6449
  }) {
6249
- return /* @__PURE__ */ jsx51(
6450
+ return /* @__PURE__ */ jsx52(
6250
6451
  "div",
6251
6452
  {
6252
6453
  "data-slot": "sidebar-menu-badge",
@@ -6269,10 +6470,10 @@ function SidebarMenuSkeleton({
6269
6470
  showIcon = false,
6270
6471
  ...props
6271
6472
  }) {
6272
- const width = React49.useMemo(() => {
6473
+ const width = React50.useMemo(() => {
6273
6474
  return `${Math.floor(Math.random() * 40) + 50}%`;
6274
6475
  }, []);
6275
- return /* @__PURE__ */ jsxs30(
6476
+ return /* @__PURE__ */ jsxs31(
6276
6477
  "div",
6277
6478
  {
6278
6479
  "data-slot": "sidebar-menu-skeleton",
@@ -6280,14 +6481,14 @@ function SidebarMenuSkeleton({
6280
6481
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
6281
6482
  ...props,
6282
6483
  children: [
6283
- showIcon && /* @__PURE__ */ jsx51(
6484
+ showIcon && /* @__PURE__ */ jsx52(
6284
6485
  Skeleton,
6285
6486
  {
6286
6487
  className: "size-4 rounded-md",
6287
6488
  "data-sidebar": "menu-skeleton-icon"
6288
6489
  }
6289
6490
  ),
6290
- /* @__PURE__ */ jsx51(
6491
+ /* @__PURE__ */ jsx52(
6291
6492
  Skeleton,
6292
6493
  {
6293
6494
  className: "h-4 max-w-(--skeleton-width) flex-1",
@@ -6302,7 +6503,7 @@ function SidebarMenuSkeleton({
6302
6503
  );
6303
6504
  }
6304
6505
  function SidebarMenuSub({ className, ...props }) {
6305
- return /* @__PURE__ */ jsx51(
6506
+ return /* @__PURE__ */ jsx52(
6306
6507
  "ul",
6307
6508
  {
6308
6509
  "data-slot": "sidebar-menu-sub",
@@ -6320,7 +6521,7 @@ function SidebarMenuSubItem({
6320
6521
  className,
6321
6522
  ...props
6322
6523
  }) {
6323
- return /* @__PURE__ */ jsx51(
6524
+ return /* @__PURE__ */ jsx52(
6324
6525
  "li",
6325
6526
  {
6326
6527
  "data-slot": "sidebar-menu-sub-item",
@@ -6338,7 +6539,7 @@ function SidebarMenuSubButton({
6338
6539
  ...props
6339
6540
  }) {
6340
6541
  const Comp = asChild ? Slot6 : "a";
6341
- return /* @__PURE__ */ jsx51(
6542
+ return /* @__PURE__ */ jsx52(
6342
6543
  Comp,
6343
6544
  {
6344
6545
  "data-slot": "sidebar-menu-sub-button",
@@ -6359,9 +6560,9 @@ function SidebarMenuSubButton({
6359
6560
  }
6360
6561
 
6361
6562
  // src/components/ui/slider.tsx
6362
- import * as React50 from "react";
6563
+ import * as React51 from "react";
6363
6564
  import * as SliderPrimitive from "@radix-ui/react-slider";
6364
- import { jsx as jsx52, jsxs as jsxs31 } from "react/jsx-runtime";
6565
+ import { jsx as jsx53, jsxs as jsxs32 } from "react/jsx-runtime";
6365
6566
  function Slider({
6366
6567
  className,
6367
6568
  defaultValue,
@@ -6370,11 +6571,11 @@ function Slider({
6370
6571
  max = 100,
6371
6572
  ...props
6372
6573
  }) {
6373
- const _values = React50.useMemo(
6574
+ const _values = React51.useMemo(
6374
6575
  () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
6375
6576
  [value, defaultValue, min, max]
6376
6577
  );
6377
- return /* @__PURE__ */ jsxs31(
6578
+ return /* @__PURE__ */ jsxs32(
6378
6579
  SliderPrimitive.Root,
6379
6580
  {
6380
6581
  "data-slot": "slider",
@@ -6388,14 +6589,14 @@ function Slider({
6388
6589
  ),
6389
6590
  ...props,
6390
6591
  children: [
6391
- /* @__PURE__ */ jsx52(
6592
+ /* @__PURE__ */ jsx53(
6392
6593
  SliderPrimitive.Track,
6393
6594
  {
6394
6595
  "data-slot": "slider-track",
6395
6596
  className: cn(
6396
6597
  "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"
6397
6598
  ),
6398
- children: /* @__PURE__ */ jsx52(
6599
+ children: /* @__PURE__ */ jsx53(
6399
6600
  SliderPrimitive.Range,
6400
6601
  {
6401
6602
  "data-slot": "slider-range",
@@ -6406,7 +6607,7 @@ function Slider({
6406
6607
  )
6407
6608
  }
6408
6609
  ),
6409
- Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx52(
6610
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx53(
6410
6611
  SliderPrimitive.Thumb,
6411
6612
  {
6412
6613
  "data-slot": "slider-thumb",
@@ -6423,7 +6624,7 @@ function Slider({
6423
6624
  import "react";
6424
6625
 
6425
6626
  // src/components/ui/useMediaQuery.ts
6426
- import { useEffect as useEffect8, useState as useState10 } from "react";
6627
+ import { useEffect as useEffect8, useState as useState11 } from "react";
6427
6628
  function useMediaQuery(query) {
6428
6629
  const getMatches = (query2) => {
6429
6630
  if (typeof window !== "undefined") {
@@ -6431,7 +6632,7 @@ function useMediaQuery(query) {
6431
6632
  }
6432
6633
  return false;
6433
6634
  };
6434
- const [matches, setMatches] = useState10(getMatches(query));
6635
+ const [matches, setMatches] = useState11(getMatches(query));
6435
6636
  function handleChange() {
6436
6637
  setMatches(getMatches(query));
6437
6638
  }
@@ -6455,10 +6656,10 @@ function useMediaQuery(query) {
6455
6656
  }
6456
6657
 
6457
6658
  // src/components/ui/smart-dialog-drawer.tsx
6458
- import { Fragment as Fragment3, jsx as jsx53 } from "react/jsx-runtime";
6659
+ import { Fragment as Fragment3, jsx as jsx54 } from "react/jsx-runtime";
6459
6660
  var SmartDialog = ({ children, ...props }) => {
6460
6661
  const isMobile = useMediaQuery("(max-width: 600px)");
6461
- return isMobile ? /* @__PURE__ */ jsx53(Drawer, { ...props, children }) : /* @__PURE__ */ jsx53(Dialog, { ...props, children });
6662
+ return isMobile ? /* @__PURE__ */ jsx54(Drawer, { ...props, children }) : /* @__PURE__ */ jsx54(Dialog, { ...props, children });
6462
6663
  };
6463
6664
  var SmartDialogContent = ({
6464
6665
  children,
@@ -6468,14 +6669,14 @@ var SmartDialogContent = ({
6468
6669
  ...props
6469
6670
  }) => {
6470
6671
  const isMobile = useMediaQuery("(max-width: 600px)");
6471
- return isMobile ? /* @__PURE__ */ jsx53(
6672
+ return isMobile ? /* @__PURE__ */ jsx54(
6472
6673
  DrawerContent,
6473
6674
  {
6474
6675
  ...props,
6475
6676
  withCloseButton: withCloseButton ?? showCloseButton ?? true,
6476
6677
  children
6477
6678
  }
6478
- ) : /* @__PURE__ */ jsx53(
6679
+ ) : /* @__PURE__ */ jsx54(
6479
6680
  DialogContent,
6480
6681
  {
6481
6682
  ...props,
@@ -6490,47 +6691,63 @@ var SmartDialogDescription = ({
6490
6691
  ...props
6491
6692
  }) => {
6492
6693
  const isMobile = useMediaQuery("(max-width: 600px)");
6493
- return isMobile ? /* @__PURE__ */ jsx53(DrawerDescription, { ...props, children }) : /* @__PURE__ */ jsx53(DialogDescription, { ...props, children });
6694
+ return isMobile ? /* @__PURE__ */ jsx54(DrawerDescription, { ...props, children }) : /* @__PURE__ */ jsx54(DialogDescription, { ...props, children });
6494
6695
  };
6495
6696
  var SmartDialogHeader = ({ children, ...props }) => {
6496
6697
  const isMobile = useMediaQuery("(max-width: 600px)");
6497
- return isMobile ? /* @__PURE__ */ jsx53(DrawerHeader, { ...props, children }) : /* @__PURE__ */ jsx53(DialogHeader, { ...props, children });
6698
+ return isMobile ? /* @__PURE__ */ jsx54(DrawerHeader, { ...props, children }) : /* @__PURE__ */ jsx54(DialogHeader, { ...props, children });
6498
6699
  };
6499
6700
  var SmartDialogTitle = ({ children, ...props }) => {
6500
6701
  const isMobile = useMediaQuery("(max-width: 600px)");
6501
- return isMobile ? /* @__PURE__ */ jsx53(DrawerTitle, { ...props, children }) : /* @__PURE__ */ jsx53(DialogTitle, { ...props, children });
6702
+ return isMobile ? /* @__PURE__ */ jsx54(DrawerTitle, { ...props, children }) : /* @__PURE__ */ jsx54(DialogTitle, { ...props, children });
6502
6703
  };
6503
6704
  var SmartDialogTrigger = ({
6504
6705
  children,
6505
6706
  ...props
6506
6707
  }) => {
6507
6708
  const isMobile = useMediaQuery("(max-width: 600px)");
6508
- return isMobile ? /* @__PURE__ */ jsx53(DrawerTrigger, { ...props, children }) : /* @__PURE__ */ jsx53(DialogTrigger, { ...props, children });
6709
+ return isMobile ? /* @__PURE__ */ jsx54(DrawerTrigger, { ...props, children }) : /* @__PURE__ */ jsx54(DialogTrigger, { ...props, children });
6509
6710
  };
6510
6711
  var SmartDialogFooter = ({ children, ...props }) => {
6511
6712
  const isMobile = useMediaQuery("(max-width: 600px)");
6512
- return isMobile ? /* @__PURE__ */ jsx53(DrawerFooter, { ...props, children }) : /* @__PURE__ */ jsx53(DialogFooter, { ...props, children });
6713
+ return isMobile ? /* @__PURE__ */ jsx54(DrawerFooter, { ...props, children }) : /* @__PURE__ */ jsx54(DialogFooter, { ...props, children });
6513
6714
  };
6514
6715
  var SmartDialogClose = ({ children, ...props }) => {
6515
6716
  const isMobile = useMediaQuery("(max-width: 600px)");
6516
- return isMobile ? /* @__PURE__ */ jsx53(Fragment3, { children: /* @__PURE__ */ jsx53(DrawerClose, { ...props, children }) }) : /* @__PURE__ */ jsx53(DialogClose, { ...props, children });
6717
+ return isMobile ? /* @__PURE__ */ jsx54(Fragment3, { children: /* @__PURE__ */ jsx54(DrawerClose, { ...props, children }) }) : /* @__PURE__ */ jsx54(DialogClose, { ...props, children });
6517
6718
  };
6518
6719
 
6519
6720
  // src/components/ui/sonner.tsx
6721
+ import { CircleCheck, Info, TriangleAlert } from "lucide-react";
6520
6722
  import { useTheme } from "next-themes";
6521
- import { Toaster as Sonner } from "sonner";
6522
- import { jsx as jsx54 } from "react/jsx-runtime";
6723
+ import { Toaster as Sonner, toast } from "sonner";
6724
+ import { jsx as jsx55 } from "react/jsx-runtime";
6725
+ var iconWrapper = (icon) => /* @__PURE__ */ jsx55("span", { className: "flex items-center justify-center shrink-0 size-5 [&_svg]:size-5", children: icon });
6523
6726
  var Toaster = ({ ...props }) => {
6524
6727
  const { theme = "system" } = useTheme();
6525
- return /* @__PURE__ */ jsx54(
6728
+ return /* @__PURE__ */ jsx55(
6526
6729
  Sonner,
6527
6730
  {
6528
6731
  theme,
6529
6732
  className: "toaster group",
6733
+ icons: {
6734
+ info: iconWrapper(/* @__PURE__ */ jsx55(Info, {})),
6735
+ error: iconWrapper(/* @__PURE__ */ jsx55(TriangleAlert, {})),
6736
+ success: iconWrapper(/* @__PURE__ */ jsx55(CircleCheck, {}))
6737
+ },
6738
+ toastOptions: {
6739
+ unstyled: true,
6740
+ classNames: {
6741
+ toast: "flex items-start gap-3 w-full rounded-[12px] border px-3 py-4 text-sm leading-5",
6742
+ title: "font-semibold text-sm leading-5 text-vibrant-text-heading",
6743
+ description: "font-normal text-sm leading-5 text-vibrant-text-body",
6744
+ info: "bg-alert-bg-informative border-gray-stroke-light [&_svg]:text-[#52525c] dark:[&_svg]:text-[#a1a1aa]",
6745
+ error: "bg-alert-bg-error border-error-stroke-light [&_svg]:text-[#ff6467] dark:[&_svg]:text-[#ff8486]",
6746
+ success: "bg-success-surface-subtle border-success-stroke-light [&_svg]:text-[#00a63e] dark:[&_svg]:text-[#34d399]"
6747
+ }
6748
+ },
6530
6749
  style: {
6531
- "--normal-bg": "var(--popover)",
6532
- "--normal-text": "var(--popover-foreground)",
6533
- "--normal-border": "var(--border)"
6750
+ "--width": "436px"
6534
6751
  },
6535
6752
  ...props
6536
6753
  }
@@ -6540,12 +6757,12 @@ var Toaster = ({ ...props }) => {
6540
6757
  // src/components/ui/switch.tsx
6541
6758
  import * as SwitchPrimitive from "@radix-ui/react-switch";
6542
6759
  import "react";
6543
- import { jsx as jsx55 } from "react/jsx-runtime";
6760
+ import { jsx as jsx56 } from "react/jsx-runtime";
6544
6761
  function Switch({
6545
6762
  className,
6546
6763
  ...props
6547
6764
  }) {
6548
- return /* @__PURE__ */ jsx55(
6765
+ return /* @__PURE__ */ jsx56(
6549
6766
  SwitchPrimitive.Root,
6550
6767
  {
6551
6768
  "data-slot": "switch",
@@ -6554,7 +6771,7 @@ function Switch({
6554
6771
  className
6555
6772
  ),
6556
6773
  ...props,
6557
- children: /* @__PURE__ */ jsx55(
6774
+ children: /* @__PURE__ */ jsx56(
6558
6775
  SwitchPrimitive.Thumb,
6559
6776
  {
6560
6777
  "data-slot": "switch-thumb",
@@ -6569,14 +6786,14 @@ function Switch({
6569
6786
 
6570
6787
  // src/components/ui/table.tsx
6571
6788
  import "react";
6572
- import { jsx as jsx56 } from "react/jsx-runtime";
6789
+ import { jsx as jsx57 } from "react/jsx-runtime";
6573
6790
  function Table({ className, ...props }) {
6574
- return /* @__PURE__ */ jsx56(
6791
+ return /* @__PURE__ */ jsx57(
6575
6792
  "div",
6576
6793
  {
6577
6794
  "data-slot": "table-container",
6578
6795
  className: "relative w-full overflow-x-auto",
6579
- children: /* @__PURE__ */ jsx56(
6796
+ children: /* @__PURE__ */ jsx57(
6580
6797
  "table",
6581
6798
  {
6582
6799
  "data-slot": "table",
@@ -6588,7 +6805,7 @@ function Table({ className, ...props }) {
6588
6805
  );
6589
6806
  }
6590
6807
  function TableHeader({ className, ...props }) {
6591
- return /* @__PURE__ */ jsx56(
6808
+ return /* @__PURE__ */ jsx57(
6592
6809
  "thead",
6593
6810
  {
6594
6811
  "data-slot": "table-header",
@@ -6598,7 +6815,7 @@ function TableHeader({ className, ...props }) {
6598
6815
  );
6599
6816
  }
6600
6817
  function TableBody({ className, ...props }) {
6601
- return /* @__PURE__ */ jsx56(
6818
+ return /* @__PURE__ */ jsx57(
6602
6819
  "tbody",
6603
6820
  {
6604
6821
  "data-slot": "table-body",
@@ -6608,7 +6825,7 @@ function TableBody({ className, ...props }) {
6608
6825
  );
6609
6826
  }
6610
6827
  function TableFooter({ className, ...props }) {
6611
- return /* @__PURE__ */ jsx56(
6828
+ return /* @__PURE__ */ jsx57(
6612
6829
  "tfoot",
6613
6830
  {
6614
6831
  "data-slot": "table-footer",
@@ -6621,7 +6838,7 @@ function TableFooter({ className, ...props }) {
6621
6838
  );
6622
6839
  }
6623
6840
  function TableRow({ className, ...props }) {
6624
- return /* @__PURE__ */ jsx56(
6841
+ return /* @__PURE__ */ jsx57(
6625
6842
  "tr",
6626
6843
  {
6627
6844
  "data-slot": "table-row",
@@ -6634,7 +6851,7 @@ function TableRow({ className, ...props }) {
6634
6851
  );
6635
6852
  }
6636
6853
  function TableHead({ className, ...props }) {
6637
- return /* @__PURE__ */ jsx56(
6854
+ return /* @__PURE__ */ jsx57(
6638
6855
  "th",
6639
6856
  {
6640
6857
  "data-slot": "table-head",
@@ -6647,7 +6864,7 @@ function TableHead({ className, ...props }) {
6647
6864
  );
6648
6865
  }
6649
6866
  function TableCell({ className, ...props }) {
6650
- return /* @__PURE__ */ jsx56(
6867
+ return /* @__PURE__ */ jsx57(
6651
6868
  "td",
6652
6869
  {
6653
6870
  "data-slot": "table-cell",
@@ -6663,7 +6880,7 @@ function TableCaption({
6663
6880
  className,
6664
6881
  ...props
6665
6882
  }) {
6666
- return /* @__PURE__ */ jsx56(
6883
+ return /* @__PURE__ */ jsx57(
6667
6884
  "caption",
6668
6885
  {
6669
6886
  "data-slot": "table-caption",
@@ -6675,19 +6892,19 @@ function TableCaption({
6675
6892
 
6676
6893
  // src/components/ui/tabs.tsx
6677
6894
  import * as TabsPrimitive from "@radix-ui/react-tabs";
6678
- import { cva as cva13 } from "class-variance-authority";
6679
- import * as React54 from "react";
6680
- import { jsx as jsx57, jsxs as jsxs32 } from "react/jsx-runtime";
6681
- var TabsContext = React54.createContext({
6895
+ import { cva as cva14 } from "class-variance-authority";
6896
+ import * as React55 from "react";
6897
+ import { jsx as jsx58, jsxs as jsxs33 } from "react/jsx-runtime";
6898
+ var TabsContext = React55.createContext({
6682
6899
  orientation: "horizontal"
6683
6900
  });
6684
6901
  function useTabIndicator(listRef, orientation) {
6685
- const [style, setStyle] = React54.useState({
6902
+ const [style, setStyle] = React55.useState({
6686
6903
  position: "absolute",
6687
6904
  opacity: 0
6688
6905
  });
6689
- const isFirstMeasurement = React54.useRef(true);
6690
- const measure = React54.useCallback(() => {
6906
+ const isFirstMeasurement = React55.useRef(true);
6907
+ const measure = React55.useCallback(() => {
6691
6908
  const list = listRef.current;
6692
6909
  if (!list) return;
6693
6910
  requestAnimationFrame(() => {
@@ -6726,7 +6943,7 @@ function useTabIndicator(listRef, orientation) {
6726
6943
  }
6727
6944
  });
6728
6945
  }, [listRef, orientation]);
6729
- React54.useEffect(() => {
6946
+ React55.useEffect(() => {
6730
6947
  const list = listRef.current;
6731
6948
  if (!list) return;
6732
6949
  measure();
@@ -6755,11 +6972,11 @@ function Tabs({
6755
6972
  orientation = "horizontal",
6756
6973
  ...props
6757
6974
  }) {
6758
- const ctx = React54.useMemo(
6975
+ const ctx = React55.useMemo(
6759
6976
  () => ({ orientation: orientation ?? "horizontal" }),
6760
6977
  [orientation]
6761
6978
  );
6762
- return /* @__PURE__ */ jsx57(TabsContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx57(
6979
+ return /* @__PURE__ */ jsx58(TabsContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx58(
6763
6980
  TabsPrimitive.Root,
6764
6981
  {
6765
6982
  "data-slot": "tabs",
@@ -6776,10 +6993,10 @@ function TabsList({
6776
6993
  className,
6777
6994
  ...props
6778
6995
  }) {
6779
- const listRef = React54.useRef(null);
6780
- const { orientation } = React54.useContext(TabsContext);
6996
+ const listRef = React55.useRef(null);
6997
+ const { orientation } = React55.useContext(TabsContext);
6781
6998
  const { style: indicatorStyle } = useTabIndicator(listRef, orientation);
6782
- return /* @__PURE__ */ jsxs32(
6999
+ return /* @__PURE__ */ jsxs33(
6783
7000
  TabsPrimitive.List,
6784
7001
  {
6785
7002
  ref: listRef,
@@ -6792,12 +7009,12 @@ function TabsList({
6792
7009
  ...props,
6793
7010
  children: [
6794
7011
  props.children,
6795
- /* @__PURE__ */ jsx57("span", { "data-slot": "tabs-indicator", style: indicatorStyle })
7012
+ /* @__PURE__ */ jsx58("span", { "data-slot": "tabs-indicator", style: indicatorStyle })
6796
7013
  ]
6797
7014
  }
6798
7015
  );
6799
7016
  }
6800
- var tabsTriggerVariants = cva13(
7017
+ var tabsTriggerVariants = cva14(
6801
7018
  "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",
6802
7019
  {
6803
7020
  variants: {
@@ -6826,14 +7043,14 @@ function TabsTrigger({
6826
7043
  children,
6827
7044
  ...props
6828
7045
  }) {
6829
- const { orientation } = React54.useContext(TabsContext);
6830
- return /* @__PURE__ */ jsx57(
7046
+ const { orientation } = React55.useContext(TabsContext);
7047
+ return /* @__PURE__ */ jsx58(
6831
7048
  TabsPrimitive.Trigger,
6832
7049
  {
6833
7050
  "data-slot": "tabs-trigger",
6834
7051
  className: cn(tabsTriggerVariants({ size, orientation }), className),
6835
7052
  ...props,
6836
- children: /* @__PURE__ */ jsx57(
7053
+ children: /* @__PURE__ */ jsx58(
6837
7054
  "span",
6838
7055
  {
6839
7056
  className: cn(
@@ -6850,7 +7067,7 @@ function TabsContent({
6850
7067
  className,
6851
7068
  ...props
6852
7069
  }) {
6853
- return /* @__PURE__ */ jsx57(
7070
+ return /* @__PURE__ */ jsx58(
6854
7071
  TabsPrimitive.Content,
6855
7072
  {
6856
7073
  "data-slot": "tabs-content",
@@ -6864,9 +7081,9 @@ function TabsContent({
6864
7081
  import {
6865
7082
  ThemeProvider as NextThemesProvider
6866
7083
  } from "next-themes";
6867
- import { jsx as jsx58 } from "react/jsx-runtime";
7084
+ import { jsx as jsx59 } from "react/jsx-runtime";
6868
7085
  function ThemeProvider({ children, ...props }) {
6869
- return /* @__PURE__ */ jsx58(
7086
+ return /* @__PURE__ */ jsx59(
6870
7087
  NextThemesProvider,
6871
7088
  {
6872
7089
  attribute: "class",
@@ -6883,29 +7100,29 @@ function ThemeProvider({ children, ...props }) {
6883
7100
  import { Monitor, Moon, Sun } from "lucide-react";
6884
7101
  import { useTheme as useTheme2 } from "next-themes";
6885
7102
  import "react";
6886
- import { jsx as jsx59, jsxs as jsxs33 } from "react/jsx-runtime";
7103
+ import { jsx as jsx60, jsxs as jsxs34 } from "react/jsx-runtime";
6887
7104
  function ThemeToggle({
6888
7105
  className,
6889
7106
  ...props
6890
7107
  }) {
6891
7108
  const { setTheme } = useTheme2();
6892
- return /* @__PURE__ */ jsxs33(DropdownMenu, { children: [
6893
- /* @__PURE__ */ jsx59(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs33(Button, { variant: "outline", size: "icon", className, ...props, children: [
6894
- /* @__PURE__ */ jsx59(Sun, { className: "size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
6895
- /* @__PURE__ */ jsx59(Moon, { className: "absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" }),
6896
- /* @__PURE__ */ jsx59("span", { className: "sr-only", children: "Toggle theme" })
7109
+ return /* @__PURE__ */ jsxs34(DropdownMenu, { children: [
7110
+ /* @__PURE__ */ jsx60(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs34(Button, { variant: "outline", size: "icon", className, ...props, children: [
7111
+ /* @__PURE__ */ jsx60(Sun, { className: "size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
7112
+ /* @__PURE__ */ jsx60(Moon, { className: "absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" }),
7113
+ /* @__PURE__ */ jsx60("span", { className: "sr-only", children: "Toggle theme" })
6897
7114
  ] }) }),
6898
- /* @__PURE__ */ jsxs33(DropdownMenuContent, { align: "end", children: [
6899
- /* @__PURE__ */ jsxs33(DropdownMenuItem, { onClick: () => setTheme("light"), children: [
6900
- /* @__PURE__ */ jsx59(Sun, { className: "size-4" }),
7115
+ /* @__PURE__ */ jsxs34(DropdownMenuContent, { align: "end", children: [
7116
+ /* @__PURE__ */ jsxs34(DropdownMenuItem, { onClick: () => setTheme("light"), children: [
7117
+ /* @__PURE__ */ jsx60(Sun, { className: "size-4" }),
6901
7118
  "Light"
6902
7119
  ] }),
6903
- /* @__PURE__ */ jsxs33(DropdownMenuItem, { onClick: () => setTheme("dark"), children: [
6904
- /* @__PURE__ */ jsx59(Moon, { className: "size-4" }),
7120
+ /* @__PURE__ */ jsxs34(DropdownMenuItem, { onClick: () => setTheme("dark"), children: [
7121
+ /* @__PURE__ */ jsx60(Moon, { className: "size-4" }),
6905
7122
  "Dark"
6906
7123
  ] }),
6907
- /* @__PURE__ */ jsxs33(DropdownMenuItem, { onClick: () => setTheme("system"), children: [
6908
- /* @__PURE__ */ jsx59(Monitor, { className: "size-4" }),
7124
+ /* @__PURE__ */ jsxs34(DropdownMenuItem, { onClick: () => setTheme("system"), children: [
7125
+ /* @__PURE__ */ jsx60(Monitor, { className: "size-4" }),
6909
7126
  "System"
6910
7127
  ] })
6911
7128
  ] })
@@ -6915,8 +7132,8 @@ function ThemeToggle({
6915
7132
  // src/components/ui/time-input.tsx
6916
7133
  import "class-variance-authority";
6917
7134
  import { Clock } from "lucide-react";
6918
- import * as React56 from "react";
6919
- import { jsx as jsx60, jsxs as jsxs34 } from "react/jsx-runtime";
7135
+ import * as React57 from "react";
7136
+ import { jsx as jsx61, jsxs as jsxs35 } from "react/jsx-runtime";
6920
7137
  var TIME_FORMAT_PLACEHOLDER = {
6921
7138
  "12h": "hh:mm AM/PM",
6922
7139
  "24h": "HH:mm",
@@ -6969,16 +7186,16 @@ function TimeInput({
6969
7186
  formatDisplay
6970
7187
  }) {
6971
7188
  const resolvedPlaceholder = placeholder ?? TIME_FORMAT_PLACEHOLDER[timeFormat];
6972
- const displayValue = React56.useMemo(() => {
7189
+ const displayValue = React57.useMemo(() => {
6973
7190
  if (!time) return "";
6974
7191
  if (formatDisplay) return formatDisplay(time);
6975
7192
  return formatTime(time, timeFormat);
6976
7193
  }, [time, formatDisplay, timeFormat]);
6977
- const [open, setOpen] = React56.useState(false);
6978
- const hoursRef = React56.useRef(null);
6979
- const minutesRef = React56.useRef(null);
6980
- const periodRef = React56.useRef(null);
6981
- const scrollToSelected = React56.useCallback(() => {
7194
+ const [open, setOpen] = React57.useState(false);
7195
+ const hoursRef = React57.useRef(null);
7196
+ const minutesRef = React57.useRef(null);
7197
+ const periodRef = React57.useRef(null);
7198
+ const scrollToSelected = React57.useCallback(() => {
6982
7199
  requestAnimationFrame(() => {
6983
7200
  for (const ref of [hoursRef, minutesRef, periodRef]) {
6984
7201
  const container = ref.current;
@@ -6990,7 +7207,7 @@ function TimeInput({
6990
7207
  }
6991
7208
  });
6992
7209
  }, []);
6993
- React56.useEffect(() => {
7210
+ React57.useEffect(() => {
6994
7211
  if (open) {
6995
7212
  scrollToSelected();
6996
7213
  }
@@ -7026,8 +7243,8 @@ function TimeInput({
7026
7243
  const selectedH12 = time ? getDisplayHour(time.hours, timeFormat) : null;
7027
7244
  const selectedMinute = time?.minutes ?? null;
7028
7245
  const selectedPeriod = time ? getPeriod(time.hours) : null;
7029
- return /* @__PURE__ */ jsx60("div", { className: cn("relative flex gap-2", className), children: /* @__PURE__ */ jsxs34(Popover, { open, onOpenChange: setOpen, children: [
7030
- /* @__PURE__ */ jsx60(PopoverTrigger, { asChild: true, disabled: inputDisabled, children: /* @__PURE__ */ jsxs34(
7246
+ return /* @__PURE__ */ jsx61("div", { className: cn("relative flex gap-2", className), children: /* @__PURE__ */ jsxs35(Popover, { open, onOpenChange: setOpen, children: [
7247
+ /* @__PURE__ */ jsx61(PopoverTrigger, { asChild: true, disabled: inputDisabled, children: /* @__PURE__ */ jsxs35(
7031
7248
  Button,
7032
7249
  {
7033
7250
  type: "button",
@@ -7042,18 +7259,18 @@ function TimeInput({
7042
7259
  disabled: inputDisabled,
7043
7260
  children: [
7044
7261
  displayValue || resolvedPlaceholder,
7045
- icon !== void 0 ? icon : /* @__PURE__ */ jsx60(Clock, { className: "h-4 w-4 text-muted-foreground shrink-0" })
7262
+ icon !== void 0 ? icon : /* @__PURE__ */ jsx61(Clock, { className: "h-4 w-4 text-muted-foreground shrink-0" })
7046
7263
  ]
7047
7264
  }
7048
7265
  ) }),
7049
- /* @__PURE__ */ jsx60(
7266
+ /* @__PURE__ */ jsx61(
7050
7267
  PopoverContent,
7051
7268
  {
7052
7269
  className: cn("w-auto p-0", popoverContentClassName),
7053
7270
  onOpenAutoFocus: (e) => e.preventDefault(),
7054
7271
  ...popoverContentProps,
7055
- children: /* @__PURE__ */ jsxs34("div", { className: "flex divide-x border border-focus-ring rounded-md", children: [
7056
- /* @__PURE__ */ jsx60("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx60("div", { ref: hoursRef, className: "flex flex-col p-1 ", children: hoursList.map((h) => /* @__PURE__ */ jsx60(
7272
+ children: /* @__PURE__ */ jsxs35("div", { className: "flex divide-x border border-focus-ring rounded-md", children: [
7273
+ /* @__PURE__ */ jsx61("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx61("div", { ref: hoursRef, className: "flex flex-col p-1 ", children: hoursList.map((h) => /* @__PURE__ */ jsx61(
7057
7274
  Button,
7058
7275
  {
7059
7276
  variant: "ghost",
@@ -7068,7 +7285,7 @@ function TimeInput({
7068
7285
  },
7069
7286
  h
7070
7287
  )) }) }),
7071
- /* @__PURE__ */ jsx60("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx60(
7288
+ /* @__PURE__ */ jsx61("div", { className: "h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]", children: /* @__PURE__ */ jsx61(
7072
7289
  "div",
7073
7290
  {
7074
7291
  ref: minutesRef,
@@ -7076,7 +7293,7 @@ function TimeInput({
7076
7293
  "flex flex-col p-1",
7077
7294
  minutesList.length <= 12 && "h-full justify-center"
7078
7295
  ),
7079
- children: minutesList.map((m) => /* @__PURE__ */ jsx60(
7296
+ children: minutesList.map((m) => /* @__PURE__ */ jsx61(
7080
7297
  Button,
7081
7298
  {
7082
7299
  variant: "ghost",
@@ -7093,7 +7310,7 @@ function TimeInput({
7093
7310
  ))
7094
7311
  }
7095
7312
  ) }),
7096
- !is24HourFormat(timeFormat) && /* @__PURE__ */ jsx60("div", { className: "flex flex-col p-1 justify-center gap-1", children: ["AM", "PM"].map((p) => /* @__PURE__ */ jsx60(
7313
+ !is24HourFormat(timeFormat) && /* @__PURE__ */ jsx61("div", { className: "flex flex-col p-1 justify-center gap-1", children: ["AM", "PM"].map((p) => /* @__PURE__ */ jsx61(
7097
7314
  Button,
7098
7315
  {
7099
7316
  variant: "ghost",
@@ -7117,9 +7334,9 @@ function TimeInput({
7117
7334
  // src/components/ui/toggle.tsx
7118
7335
  import "react";
7119
7336
  import * as TogglePrimitive from "@radix-ui/react-toggle";
7120
- import { cva as cva14 } from "class-variance-authority";
7121
- import { jsx as jsx61 } from "react/jsx-runtime";
7122
- var toggleVariants = cva14(
7337
+ import { cva as cva15 } from "class-variance-authority";
7338
+ import { jsx as jsx62 } from "react/jsx-runtime";
7339
+ var toggleVariants = cva15(
7123
7340
  "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",
7124
7341
  {
7125
7342
  variants: {
@@ -7145,7 +7362,7 @@ function Toggle({
7145
7362
  size,
7146
7363
  ...props
7147
7364
  }) {
7148
- return /* @__PURE__ */ jsx61(
7365
+ return /* @__PURE__ */ jsx62(
7149
7366
  TogglePrimitive.Root,
7150
7367
  {
7151
7368
  "data-slot": "toggle",
@@ -7156,11 +7373,11 @@ function Toggle({
7156
7373
  }
7157
7374
 
7158
7375
  // src/components/ui/toggle-group.tsx
7159
- import * as React58 from "react";
7376
+ import * as React59 from "react";
7160
7377
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
7161
7378
  import "class-variance-authority";
7162
- import { jsx as jsx62 } from "react/jsx-runtime";
7163
- var ToggleGroupContext = React58.createContext({
7379
+ import { jsx as jsx63 } from "react/jsx-runtime";
7380
+ var ToggleGroupContext = React59.createContext({
7164
7381
  size: "default",
7165
7382
  variant: "default"
7166
7383
  });
@@ -7171,7 +7388,7 @@ function ToggleGroup({
7171
7388
  children,
7172
7389
  ...props
7173
7390
  }) {
7174
- return /* @__PURE__ */ jsx62(
7391
+ return /* @__PURE__ */ jsx63(
7175
7392
  ToggleGroupPrimitive.Root,
7176
7393
  {
7177
7394
  "data-slot": "toggle-group",
@@ -7182,7 +7399,7 @@ function ToggleGroup({
7182
7399
  className
7183
7400
  ),
7184
7401
  ...props,
7185
- children: /* @__PURE__ */ jsx62(ToggleGroupContext.Provider, { value: { variant, size }, children })
7402
+ children: /* @__PURE__ */ jsx63(ToggleGroupContext.Provider, { value: { variant, size }, children })
7186
7403
  }
7187
7404
  );
7188
7405
  }
@@ -7193,8 +7410,8 @@ function ToggleGroupItem({
7193
7410
  size,
7194
7411
  ...props
7195
7412
  }) {
7196
- const context = React58.useContext(ToggleGroupContext);
7197
- return /* @__PURE__ */ jsx62(
7413
+ const context = React59.useContext(ToggleGroupContext);
7414
+ return /* @__PURE__ */ jsx63(
7198
7415
  ToggleGroupPrimitive.Item,
7199
7416
  {
7200
7417
  "data-slot": "toggle-group-item",
@@ -7216,10 +7433,10 @@ function ToggleGroupItem({
7216
7433
 
7217
7434
  // src/components/ui/typography.tsx
7218
7435
  import { Slot as Slot7 } from "@radix-ui/react-slot";
7219
- import { cva as cva15 } from "class-variance-authority";
7436
+ import { cva as cva16 } from "class-variance-authority";
7220
7437
  import "react";
7221
- import { jsx as jsx63 } from "react/jsx-runtime";
7222
- var displayTextVariants = cva15(
7438
+ import { jsx as jsx64 } from "react/jsx-runtime";
7439
+ var displayTextVariants = cva16(
7223
7440
  "tracking-normal font-normal font-serif italic text-vibrant-text-display",
7224
7441
  {
7225
7442
  variants: {
@@ -7241,7 +7458,7 @@ function DisplayHeading({
7241
7458
  ...props
7242
7459
  }) {
7243
7460
  const Comp = asChild ? Slot7 : "h1";
7244
- return /* @__PURE__ */ jsx63(
7461
+ return /* @__PURE__ */ jsx64(
7245
7462
  Comp,
7246
7463
  {
7247
7464
  "data-slot": "h1",
@@ -7250,7 +7467,7 @@ function DisplayHeading({
7250
7467
  }
7251
7468
  );
7252
7469
  }
7253
- var bodyTextVariants = cva15("font-sans text-vibrant-text-body", {
7470
+ var bodyTextVariants = cva16("font-sans text-vibrant-text-body", {
7254
7471
  variants: {
7255
7472
  size: {
7256
7473
  lg: "text-lg md:text-xl leading-[26px] md:leading-[28px]",
@@ -7270,7 +7487,7 @@ function Body({
7270
7487
  ...props
7271
7488
  }) {
7272
7489
  const Comp = asChild ? Slot7 : "p";
7273
- return /* @__PURE__ */ jsx63(
7490
+ return /* @__PURE__ */ jsx64(
7274
7491
  Comp,
7275
7492
  {
7276
7493
  "data-slot": "p",
@@ -7285,7 +7502,7 @@ function HeadingXL({
7285
7502
  ...props
7286
7503
  }) {
7287
7504
  const Comp = asChild ? Slot7 : "h1";
7288
- return /* @__PURE__ */ jsx63(
7505
+ return /* @__PURE__ */ jsx64(
7289
7506
  Comp,
7290
7507
  {
7291
7508
  "data-slot": "h1",
@@ -7303,7 +7520,7 @@ function HeadingL({
7303
7520
  ...props
7304
7521
  }) {
7305
7522
  const Comp = asChild ? Slot7 : "h2";
7306
- return /* @__PURE__ */ jsx63(
7523
+ return /* @__PURE__ */ jsx64(
7307
7524
  Comp,
7308
7525
  {
7309
7526
  "data-slot": "h2",
@@ -7321,7 +7538,7 @@ function HeadingM({
7321
7538
  ...props
7322
7539
  }) {
7323
7540
  const Comp = asChild ? Slot7 : "h3";
7324
- return /* @__PURE__ */ jsx63(
7541
+ return /* @__PURE__ */ jsx64(
7325
7542
  Comp,
7326
7543
  {
7327
7544
  "data-slot": "h3",
@@ -7339,7 +7556,7 @@ function HeadingS({
7339
7556
  ...props
7340
7557
  }) {
7341
7558
  const Comp = asChild ? Slot7 : "h4";
7342
- return /* @__PURE__ */ jsx63(
7559
+ return /* @__PURE__ */ jsx64(
7343
7560
  Comp,
7344
7561
  {
7345
7562
  "data-slot": "h4",
@@ -7357,7 +7574,7 @@ function HeadingXS({
7357
7574
  ...props
7358
7575
  }) {
7359
7576
  const Comp = asChild ? Slot7 : "h5";
7360
- return /* @__PURE__ */ jsx63(
7577
+ return /* @__PURE__ */ jsx64(
7361
7578
  Comp,
7362
7579
  {
7363
7580
  "data-slot": "h5",
@@ -7375,7 +7592,7 @@ function HeadingXXS({
7375
7592
  ...props
7376
7593
  }) {
7377
7594
  const Comp = asChild ? Slot7 : "h6";
7378
- return /* @__PURE__ */ jsx63(
7595
+ return /* @__PURE__ */ jsx64(
7379
7596
  Comp,
7380
7597
  {
7381
7598
  "data-slot": "h6",
@@ -7393,7 +7610,7 @@ function HeadingXLMedium({
7393
7610
  ...props
7394
7611
  }) {
7395
7612
  const Comp = asChild ? Slot7 : "h1";
7396
- return /* @__PURE__ */ jsx63(
7613
+ return /* @__PURE__ */ jsx64(
7397
7614
  Comp,
7398
7615
  {
7399
7616
  "data-slot": "h1",
@@ -7411,7 +7628,7 @@ function HeadingLMedium({
7411
7628
  ...props
7412
7629
  }) {
7413
7630
  const Comp = asChild ? Slot7 : "h2";
7414
- return /* @__PURE__ */ jsx63(
7631
+ return /* @__PURE__ */ jsx64(
7415
7632
  Comp,
7416
7633
  {
7417
7634
  "data-slot": "h2",
@@ -7429,7 +7646,7 @@ function HeadingMMedium({
7429
7646
  ...props
7430
7647
  }) {
7431
7648
  const Comp = asChild ? Slot7 : "h3";
7432
- return /* @__PURE__ */ jsx63(
7649
+ return /* @__PURE__ */ jsx64(
7433
7650
  Comp,
7434
7651
  {
7435
7652
  "data-slot": "h3",
@@ -7447,7 +7664,7 @@ function HeadingSMedium({
7447
7664
  ...props
7448
7665
  }) {
7449
7666
  const Comp = asChild ? Slot7 : "h4";
7450
- return /* @__PURE__ */ jsx63(
7667
+ return /* @__PURE__ */ jsx64(
7451
7668
  Comp,
7452
7669
  {
7453
7670
  "data-slot": "h4",
@@ -7465,7 +7682,7 @@ function HeadingXSMedium({
7465
7682
  ...props
7466
7683
  }) {
7467
7684
  const Comp = asChild ? Slot7 : "h5";
7468
- return /* @__PURE__ */ jsx63(
7685
+ return /* @__PURE__ */ jsx64(
7469
7686
  Comp,
7470
7687
  {
7471
7688
  "data-slot": "h5",
@@ -7483,7 +7700,7 @@ function HeadingXXSMedium({
7483
7700
  ...props
7484
7701
  }) {
7485
7702
  const Comp = asChild ? Slot7 : "h6";
7486
- return /* @__PURE__ */ jsx63(
7703
+ return /* @__PURE__ */ jsx64(
7487
7704
  Comp,
7488
7705
  {
7489
7706
  "data-slot": "h6",
@@ -7682,6 +7899,7 @@ export {
7682
7899
  NavigationMenuList,
7683
7900
  NavigationMenuTrigger,
7684
7901
  NavigationMenuViewport,
7902
+ OptionCard,
7685
7903
  Pagination,
7686
7904
  PaginationContent,
7687
7905
  PaginationEllipsis,
@@ -7799,8 +8017,10 @@ export {
7799
8017
  inputVariants,
7800
8018
  labelTextVariants,
7801
8019
  navigationMenuTriggerStyle,
8020
+ optionCardVariants,
7802
8021
  progressBarVariants,
7803
8022
  tabsTriggerVariants,
8023
+ toast,
7804
8024
  toggleVariants,
7805
8025
  useFormField,
7806
8026
  useIsMobile,