@codapet/design-system 0.7.0 → 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
  }
@@ -4433,6 +4433,157 @@ function NavigationMenuIndicator({
4433
4433
  );
4434
4434
  }
4435
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
+
4436
4587
  // src/components/ui/pagination.tsx
4437
4588
  import "react";
4438
4589
  import {
@@ -4440,9 +4591,9 @@ import {
4440
4591
  ChevronRightIcon as ChevronRightIcon5,
4441
4592
  MoreHorizontalIcon
4442
4593
  } from "lucide-react";
4443
- import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
4594
+ import { jsx as jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
4444
4595
  function Pagination({ className, ...props }) {
4445
- return /* @__PURE__ */ jsx38(
4596
+ return /* @__PURE__ */ jsx39(
4446
4597
  "nav",
4447
4598
  {
4448
4599
  role: "navigation",
@@ -4457,7 +4608,7 @@ function PaginationContent({
4457
4608
  className,
4458
4609
  ...props
4459
4610
  }) {
4460
- return /* @__PURE__ */ jsx38(
4611
+ return /* @__PURE__ */ jsx39(
4461
4612
  "ul",
4462
4613
  {
4463
4614
  "data-slot": "pagination-content",
@@ -4467,7 +4618,7 @@ function PaginationContent({
4467
4618
  );
4468
4619
  }
4469
4620
  function PaginationItem({ ...props }) {
4470
- return /* @__PURE__ */ jsx38("li", { "data-slot": "pagination-item", ...props });
4621
+ return /* @__PURE__ */ jsx39("li", { "data-slot": "pagination-item", ...props });
4471
4622
  }
4472
4623
  function PaginationLink({
4473
4624
  className,
@@ -4475,7 +4626,7 @@ function PaginationLink({
4475
4626
  size = "icon",
4476
4627
  ...props
4477
4628
  }) {
4478
- return /* @__PURE__ */ jsx38(
4629
+ return /* @__PURE__ */ jsx39(
4479
4630
  "a",
4480
4631
  {
4481
4632
  "aria-current": isActive ? "page" : void 0,
@@ -4496,7 +4647,7 @@ function PaginationPrevious({
4496
4647
  className,
4497
4648
  ...props
4498
4649
  }) {
4499
- return /* @__PURE__ */ jsxs22(
4650
+ return /* @__PURE__ */ jsxs23(
4500
4651
  PaginationLink,
4501
4652
  {
4502
4653
  "aria-label": "Go to previous page",
@@ -4504,8 +4655,8 @@ function PaginationPrevious({
4504
4655
  className: cn("gap-1 px-2.5 sm:pl-2.5", className),
4505
4656
  ...props,
4506
4657
  children: [
4507
- /* @__PURE__ */ jsx38(ChevronLeftIcon2, {}),
4508
- /* @__PURE__ */ jsx38("span", { className: "hidden sm:block", children: "Previous" })
4658
+ /* @__PURE__ */ jsx39(ChevronLeftIcon2, {}),
4659
+ /* @__PURE__ */ jsx39("span", { className: "hidden sm:block", children: "Previous" })
4509
4660
  ]
4510
4661
  }
4511
4662
  );
@@ -4514,7 +4665,7 @@ function PaginationNext({
4514
4665
  className,
4515
4666
  ...props
4516
4667
  }) {
4517
- return /* @__PURE__ */ jsxs22(
4668
+ return /* @__PURE__ */ jsxs23(
4518
4669
  PaginationLink,
4519
4670
  {
4520
4671
  "aria-label": "Go to next page",
@@ -4522,8 +4673,8 @@ function PaginationNext({
4522
4673
  className: cn("gap-1 px-2.5 sm:pr-2.5", className),
4523
4674
  ...props,
4524
4675
  children: [
4525
- /* @__PURE__ */ jsx38("span", { className: "hidden sm:block", children: "Next" }),
4526
- /* @__PURE__ */ jsx38(ChevronRightIcon5, {})
4676
+ /* @__PURE__ */ jsx39("span", { className: "hidden sm:block", children: "Next" }),
4677
+ /* @__PURE__ */ jsx39(ChevronRightIcon5, {})
4527
4678
  ]
4528
4679
  }
4529
4680
  );
@@ -4532,7 +4683,7 @@ function PaginationEllipsis({
4532
4683
  className,
4533
4684
  ...props
4534
4685
  }) {
4535
- return /* @__PURE__ */ jsxs22(
4686
+ return /* @__PURE__ */ jsxs23(
4536
4687
  "span",
4537
4688
  {
4538
4689
  "aria-hidden": true,
@@ -4540,8 +4691,8 @@ function PaginationEllipsis({
4540
4691
  className: cn("flex size-9 items-center justify-center", className),
4541
4692
  ...props,
4542
4693
  children: [
4543
- /* @__PURE__ */ jsx38(MoreHorizontalIcon, { className: "size-4" }),
4544
- /* @__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" })
4545
4696
  ]
4546
4697
  }
4547
4698
  );
@@ -4550,13 +4701,13 @@ function PaginationEllipsis({
4550
4701
  // src/components/ui/progress.tsx
4551
4702
  import * as ProgressPrimitive from "@radix-ui/react-progress";
4552
4703
  import "react";
4553
- import { jsx as jsx39 } from "react/jsx-runtime";
4704
+ import { jsx as jsx40 } from "react/jsx-runtime";
4554
4705
  function Progress({
4555
4706
  className,
4556
4707
  value,
4557
4708
  ...props
4558
4709
  }) {
4559
- return /* @__PURE__ */ jsx39(
4710
+ return /* @__PURE__ */ jsx40(
4560
4711
  ProgressPrimitive.Root,
4561
4712
  {
4562
4713
  "data-slot": "progress",
@@ -4565,7 +4716,7 @@ function Progress({
4565
4716
  className
4566
4717
  ),
4567
4718
  ...props,
4568
- children: /* @__PURE__ */ jsx39(
4719
+ children: /* @__PURE__ */ jsx40(
4569
4720
  ProgressPrimitive.Indicator,
4570
4721
  {
4571
4722
  "data-slot": "progress-indicator",
@@ -4578,10 +4729,10 @@ function Progress({
4578
4729
  }
4579
4730
 
4580
4731
  // src/components/ui/progress-bar.tsx
4581
- import { cva as cva11 } from "class-variance-authority";
4732
+ import { cva as cva12 } from "class-variance-authority";
4582
4733
  import "react";
4583
- import { jsx as jsx40, jsxs as jsxs23 } from "react/jsx-runtime";
4584
- 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]", {
4585
4736
  variants: {
4586
4737
  device: {
4587
4738
  desktop: "w-[360px] h-[4px]",
@@ -4601,7 +4752,7 @@ function ProgressBar({
4601
4752
  ...props
4602
4753
  }) {
4603
4754
  const percentage = value !== void 0 ? Math.min(100, Math.max(0, value)) : Math.min(100, Math.max(0, currentStep / totalSteps * 100));
4604
- return /* @__PURE__ */ jsxs23(
4755
+ return /* @__PURE__ */ jsxs24(
4605
4756
  "div",
4606
4757
  {
4607
4758
  "data-slot": "progress-bar",
@@ -4612,8 +4763,8 @@ function ProgressBar({
4612
4763
  "aria-valuemax": 100,
4613
4764
  ...props,
4614
4765
  children: [
4615
- /* @__PURE__ */ jsx40("div", { className: "absolute inset-0 rounded-[8px] bg-primary-surface-light" }),
4616
- /* @__PURE__ */ jsx40(
4766
+ /* @__PURE__ */ jsx41("div", { className: "absolute inset-0 rounded-[8px] bg-primary-surface-light" }),
4767
+ /* @__PURE__ */ jsx41(
4617
4768
  "div",
4618
4769
  {
4619
4770
  "data-slot": "progress-bar-fill",
@@ -4630,12 +4781,12 @@ function ProgressBar({
4630
4781
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
4631
4782
  import { CircleIcon as CircleIcon4 } from "lucide-react";
4632
4783
  import "react";
4633
- import { jsx as jsx41 } from "react/jsx-runtime";
4784
+ import { jsx as jsx42 } from "react/jsx-runtime";
4634
4785
  function RadioGroup4({
4635
4786
  className,
4636
4787
  ...props
4637
4788
  }) {
4638
- return /* @__PURE__ */ jsx41(
4789
+ return /* @__PURE__ */ jsx42(
4639
4790
  RadioGroupPrimitive.Root,
4640
4791
  {
4641
4792
  "data-slot": "radio-group",
@@ -4648,21 +4799,21 @@ function RadioGroupItem({
4648
4799
  className,
4649
4800
  ...props
4650
4801
  }) {
4651
- return /* @__PURE__ */ jsx41(
4802
+ return /* @__PURE__ */ jsx42(
4652
4803
  RadioGroupPrimitive.Item,
4653
4804
  {
4654
4805
  "data-slot": "radio-group-item",
4655
4806
  className: cn(
4656
- "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",
4657
4808
  className
4658
4809
  ),
4659
4810
  ...props,
4660
- children: /* @__PURE__ */ jsx41(
4811
+ children: /* @__PURE__ */ jsx42(
4661
4812
  RadioGroupPrimitive.Indicator,
4662
4813
  {
4663
4814
  "data-slot": "radio-group-indicator",
4664
4815
  className: "relative flex items-center justify-center",
4665
- 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" })
4666
4817
  }
4667
4818
  )
4668
4819
  }
@@ -4673,12 +4824,12 @@ function RadioGroupItem({
4673
4824
  import "react";
4674
4825
  import { GripVerticalIcon } from "lucide-react";
4675
4826
  import * as ResizablePrimitive from "react-resizable-panels";
4676
- import { jsx as jsx42 } from "react/jsx-runtime";
4827
+ import { jsx as jsx43 } from "react/jsx-runtime";
4677
4828
  function ResizablePanelGroup({
4678
4829
  className,
4679
4830
  ...props
4680
4831
  }) {
4681
- return /* @__PURE__ */ jsx42(
4832
+ return /* @__PURE__ */ jsx43(
4682
4833
  ResizablePrimitive.PanelGroup,
4683
4834
  {
4684
4835
  "data-slot": "resizable-panel-group",
@@ -4693,14 +4844,14 @@ function ResizablePanelGroup({
4693
4844
  function ResizablePanel({
4694
4845
  ...props
4695
4846
  }) {
4696
- return /* @__PURE__ */ jsx42(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
4847
+ return /* @__PURE__ */ jsx43(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
4697
4848
  }
4698
4849
  function ResizableHandle({
4699
4850
  withHandle,
4700
4851
  className,
4701
4852
  ...props
4702
4853
  }) {
4703
- return /* @__PURE__ */ jsx42(
4854
+ return /* @__PURE__ */ jsx43(
4704
4855
  ResizablePrimitive.PanelResizeHandle,
4705
4856
  {
4706
4857
  "data-slot": "resizable-handle",
@@ -4709,7 +4860,7 @@ function ResizableHandle({
4709
4860
  className
4710
4861
  ),
4711
4862
  ...props,
4712
- 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" }) })
4713
4864
  }
4714
4865
  );
4715
4866
  }
@@ -4717,20 +4868,20 @@ function ResizableHandle({
4717
4868
  // src/components/ui/scroll-area.tsx
4718
4869
  import "react";
4719
4870
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
4720
- import { jsx as jsx43, jsxs as jsxs24 } from "react/jsx-runtime";
4871
+ import { jsx as jsx44, jsxs as jsxs25 } from "react/jsx-runtime";
4721
4872
  function ScrollArea({
4722
4873
  className,
4723
4874
  children,
4724
4875
  ...props
4725
4876
  }) {
4726
- return /* @__PURE__ */ jsxs24(
4877
+ return /* @__PURE__ */ jsxs25(
4727
4878
  ScrollAreaPrimitive.Root,
4728
4879
  {
4729
4880
  "data-slot": "scroll-area",
4730
4881
  className: cn("relative", className),
4731
4882
  ...props,
4732
4883
  children: [
4733
- /* @__PURE__ */ jsx43(
4884
+ /* @__PURE__ */ jsx44(
4734
4885
  ScrollAreaPrimitive.Viewport,
4735
4886
  {
4736
4887
  "data-slot": "scroll-area-viewport",
@@ -4738,8 +4889,8 @@ function ScrollArea({
4738
4889
  children
4739
4890
  }
4740
4891
  ),
4741
- /* @__PURE__ */ jsx43(ScrollBar, {}),
4742
- /* @__PURE__ */ jsx43(ScrollAreaPrimitive.Corner, {})
4892
+ /* @__PURE__ */ jsx44(ScrollBar, {}),
4893
+ /* @__PURE__ */ jsx44(ScrollAreaPrimitive.Corner, {})
4743
4894
  ]
4744
4895
  }
4745
4896
  );
@@ -4749,7 +4900,7 @@ function ScrollBar({
4749
4900
  orientation = "vertical",
4750
4901
  ...props
4751
4902
  }) {
4752
- return /* @__PURE__ */ jsx43(
4903
+ return /* @__PURE__ */ jsx44(
4753
4904
  ScrollAreaPrimitive.ScrollAreaScrollbar,
4754
4905
  {
4755
4906
  "data-slot": "scroll-area-scrollbar",
@@ -4761,7 +4912,7 @@ function ScrollBar({
4761
4912
  className
4762
4913
  ),
4763
4914
  ...props,
4764
- children: /* @__PURE__ */ jsx43(
4915
+ children: /* @__PURE__ */ jsx44(
4765
4916
  ScrollAreaPrimitive.ScrollAreaThumb,
4766
4917
  {
4767
4918
  "data-slot": "scroll-area-thumb",
@@ -4773,9 +4924,9 @@ function ScrollBar({
4773
4924
  }
4774
4925
 
4775
4926
  // src/components/ui/search-input.tsx
4776
- import * as React42 from "react";
4927
+ import * as React43 from "react";
4777
4928
  import { Search, X as X3 } from "lucide-react";
4778
- import { jsx as jsx44, jsxs as jsxs25 } from "react/jsx-runtime";
4929
+ import { jsx as jsx45, jsxs as jsxs26 } from "react/jsx-runtime";
4779
4930
  function SearchInput({
4780
4931
  variant = "icon",
4781
4932
  value: valueProp,
@@ -4794,23 +4945,23 @@ function SearchInput({
4794
4945
  onSuggestionClick,
4795
4946
  className
4796
4947
  }) {
4797
- const [internalValue, setInternalValue] = React42.useState(defaultValue);
4798
- const [isFocused, setIsFocused] = React42.useState(false);
4799
- const [showSuggestions, setShowSuggestions] = React42.useState(false);
4800
- const inputRef = React42.useRef(null);
4801
- 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);
4802
4953
  const isControlled = valueProp !== void 0;
4803
4954
  const currentValue = isControlled ? valueProp : internalValue;
4804
4955
  const hasValue = currentValue.trim().length > 0;
4805
4956
  const isFilledEdit = hasValue && !isFocused && !error;
4806
- const updateValue = React42.useCallback(
4957
+ const updateValue = React43.useCallback(
4807
4958
  (next) => {
4808
4959
  if (!isControlled) setInternalValue(next);
4809
4960
  onValueChange?.(next);
4810
4961
  },
4811
4962
  [isControlled, onValueChange]
4812
4963
  );
4813
- const handleInputChange = React42.useCallback(
4964
+ const handleInputChange = React43.useCallback(
4814
4965
  (e) => {
4815
4966
  updateValue(e.target.value);
4816
4967
  if (e.target.value.trim().length > 0 && suggestions.length > 0) {
@@ -4821,7 +4972,7 @@ function SearchInput({
4821
4972
  },
4822
4973
  [updateValue, suggestions.length]
4823
4974
  );
4824
- const handleKeyDown = React42.useCallback(
4975
+ const handleKeyDown = React43.useCallback(
4825
4976
  (e) => {
4826
4977
  if (e.key === "Enter") {
4827
4978
  e.preventDefault();
@@ -4834,16 +4985,16 @@ function SearchInput({
4834
4985
  },
4835
4986
  [currentValue, onSearch]
4836
4987
  );
4837
- const handleClear = React42.useCallback(() => {
4988
+ const handleClear = React43.useCallback(() => {
4838
4989
  updateValue("");
4839
4990
  onClear?.();
4840
4991
  inputRef.current?.focus();
4841
4992
  }, [updateValue, onClear]);
4842
- const handleSearchClick = React42.useCallback(() => {
4993
+ const handleSearchClick = React43.useCallback(() => {
4843
4994
  onSearch?.(currentValue);
4844
4995
  setShowSuggestions(false);
4845
4996
  }, [currentValue, onSearch]);
4846
- const handleSuggestionClick = React42.useCallback(
4997
+ const handleSuggestionClick = React43.useCallback(
4847
4998
  (label2) => {
4848
4999
  updateValue(label2);
4849
5000
  onSuggestionClick?.(label2);
@@ -4852,14 +5003,14 @@ function SearchInput({
4852
5003
  },
4853
5004
  [updateValue, onSuggestionClick]
4854
5005
  );
4855
- const handleFocus = React42.useCallback(() => {
5006
+ const handleFocus = React43.useCallback(() => {
4856
5007
  if (disabled) return;
4857
5008
  setIsFocused(true);
4858
5009
  if (currentValue.trim().length > 0 && suggestions.length > 0) {
4859
5010
  setShowSuggestions(true);
4860
5011
  }
4861
5012
  }, [disabled, currentValue, suggestions.length]);
4862
- const handleBlur = React42.useCallback(
5013
+ const handleBlur = React43.useCallback(
4863
5014
  (e) => {
4864
5015
  if (containerRef.current?.contains(e.relatedTarget)) return;
4865
5016
  setIsFocused(false);
@@ -4869,7 +5020,7 @@ function SearchInput({
4869
5020
  );
4870
5021
  const displayHelperText = error && errorMessage ? errorMessage : helperText;
4871
5022
  const showClearButton = (isFilledEdit || error) && hasValue;
4872
- return /* @__PURE__ */ jsxs25(
5023
+ return /* @__PURE__ */ jsxs26(
4873
5024
  "div",
4874
5025
  {
4875
5026
  ref: containerRef,
@@ -4877,8 +5028,8 @@ function SearchInput({
4877
5028
  className: cn("flex flex-col gap-[8px] items-start w-full", className),
4878
5029
  onBlur: handleBlur,
4879
5030
  children: [
4880
- label && /* @__PURE__ */ jsx44("div", { className: "flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details", children: label }),
4881
- /* @__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(
4882
5033
  "div",
4883
5034
  {
4884
5035
  className: cn(
@@ -4895,7 +5046,7 @@ function SearchInput({
4895
5046
  disabled && "opacity-60 cursor-not-allowed"
4896
5047
  ),
4897
5048
  children: [
4898
- icon && /* @__PURE__ */ jsx44(
5049
+ icon && /* @__PURE__ */ jsx45(
4899
5050
  "span",
4900
5051
  {
4901
5052
  className: cn(
@@ -4905,7 +5056,7 @@ function SearchInput({
4905
5056
  children: icon
4906
5057
  }
4907
5058
  ),
4908
- /* @__PURE__ */ jsx44(
5059
+ /* @__PURE__ */ jsx45(
4909
5060
  "input",
4910
5061
  {
4911
5062
  ref: inputRef,
@@ -4922,7 +5073,7 @@ function SearchInput({
4922
5073
  )
4923
5074
  }
4924
5075
  ),
4925
- showClearButton ? /* @__PURE__ */ jsx44(
5076
+ showClearButton ? /* @__PURE__ */ jsx45(
4926
5077
  "button",
4927
5078
  {
4928
5079
  type: "button",
@@ -4930,9 +5081,9 @@ function SearchInput({
4930
5081
  className: "flex items-center justify-center shrink-0 size-[20px] text-muted-foreground hover:text-vibrant-text-heading transition-colors cursor-pointer",
4931
5082
  "aria-label": "Clear search",
4932
5083
  tabIndex: -1,
4933
- children: /* @__PURE__ */ jsx44(X3, { className: "size-[16px]" })
5084
+ children: /* @__PURE__ */ jsx45(X3, { className: "size-[16px]" })
4934
5085
  }
4935
- ) : variant === "button" ? /* @__PURE__ */ jsx44(
5086
+ ) : variant === "button" ? /* @__PURE__ */ jsx45(
4936
5087
  "button",
4937
5088
  {
4938
5089
  type: "button",
@@ -4942,7 +5093,7 @@ function SearchInput({
4942
5093
  tabIndex: -1,
4943
5094
  children: "Search"
4944
5095
  }
4945
- ) : /* @__PURE__ */ jsx44(
5096
+ ) : /* @__PURE__ */ jsx45(
4946
5097
  "button",
4947
5098
  {
4948
5099
  type: "button",
@@ -4951,13 +5102,13 @@ function SearchInput({
4951
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",
4952
5103
  "aria-label": "Search",
4953
5104
  tabIndex: -1,
4954
- children: /* @__PURE__ */ jsx44(Search, { className: "size-[20px] text-white" })
5105
+ children: /* @__PURE__ */ jsx45(Search, { className: "size-[20px] text-white" })
4955
5106
  }
4956
5107
  )
4957
5108
  ]
4958
5109
  }
4959
5110
  ),
4960
- displayHelperText && /* @__PURE__ */ jsx44(
5111
+ displayHelperText && /* @__PURE__ */ jsx45(
4961
5112
  "p",
4962
5113
  {
4963
5114
  className: cn(
@@ -4967,12 +5118,12 @@ function SearchInput({
4967
5118
  children: displayHelperText
4968
5119
  }
4969
5120
  ),
4970
- showSuggestions && suggestions.length > 0 && /* @__PURE__ */ jsx44(
5121
+ showSuggestions && suggestions.length > 0 && /* @__PURE__ */ jsx45(
4971
5122
  "div",
4972
5123
  {
4973
5124
  "data-slot": "search-input-suggestions",
4974
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]",
4975
- children: suggestions.map((suggestion, idx) => /* @__PURE__ */ jsxs25(
5126
+ children: suggestions.map((suggestion, idx) => /* @__PURE__ */ jsxs26(
4976
5127
  "button",
4977
5128
  {
4978
5129
  type: "button",
@@ -4980,8 +5131,8 @@ function SearchInput({
4980
5131
  onMouseDown: (e) => e.preventDefault(),
4981
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",
4982
5133
  children: [
4983
- 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 }),
4984
- /* @__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 })
4985
5136
  ]
4986
5137
  },
4987
5138
  `${suggestion.label}-${idx}`
@@ -4994,12 +5145,12 @@ function SearchInput({
4994
5145
  }
4995
5146
 
4996
5147
  // src/components/ui/searchable-select.tsx
4997
- import * as React43 from "react";
5148
+ import * as React44 from "react";
4998
5149
  import { CheckIcon as CheckIcon4, ChevronsUpDown, XIcon as XIcon2 } from "lucide-react";
4999
- import { jsx as jsx45, jsxs as jsxs26 } from "react/jsx-runtime";
5000
- var SearchableSelectContext = React43.createContext(null);
5150
+ import { jsx as jsx46, jsxs as jsxs27 } from "react/jsx-runtime";
5151
+ var SearchableSelectContext = React44.createContext(null);
5001
5152
  function useSearchableSelect() {
5002
- const ctx = React43.useContext(SearchableSelectContext);
5153
+ const ctx = React44.useContext(SearchableSelectContext);
5003
5154
  if (!ctx) {
5004
5155
  throw new Error(
5005
5156
  "SearchableSelect compound components must be used within <SearchableSelect>"
@@ -5025,11 +5176,11 @@ function SearchableSelect({
5025
5176
  onOpenChange,
5026
5177
  children
5027
5178
  }) {
5028
- const [internalOpen, setInternalOpen] = React43.useState(false);
5029
- const [internalValue, setInternalValue] = React43.useState(defaultValue);
5030
- 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);
5031
5182
  const open = controlledOpen ?? internalOpen;
5032
- const setOpen = React43.useCallback(
5183
+ const setOpen = React44.useCallback(
5033
5184
  (next) => {
5034
5185
  if (controlledOpen !== void 0) {
5035
5186
  onOpenChange?.(next);
@@ -5041,7 +5192,7 @@ function SearchableSelect({
5041
5192
  [controlledOpen, onOpenChange]
5042
5193
  );
5043
5194
  const value = controlledValue ?? internalValue;
5044
- const setValue = React43.useCallback(
5195
+ const setValue = React44.useCallback(
5045
5196
  (next) => {
5046
5197
  if (controlledValue === void 0) {
5047
5198
  setInternalValue(next);
@@ -5051,7 +5202,7 @@ function SearchableSelect({
5051
5202
  [controlledValue, onValueChange]
5052
5203
  );
5053
5204
  const values = controlledValues ?? internalValues;
5054
- const setValues = React43.useCallback(
5205
+ const setValues = React44.useCallback(
5055
5206
  (next) => {
5056
5207
  if (controlledValues === void 0) {
5057
5208
  setInternalValues(next);
@@ -5060,14 +5211,14 @@ function SearchableSelect({
5060
5211
  },
5061
5212
  [controlledValues, onValuesChange]
5062
5213
  );
5063
- const optionMap = React43.useMemo(() => {
5214
+ const optionMap = React44.useMemo(() => {
5064
5215
  const map = /* @__PURE__ */ new Map();
5065
5216
  for (const opt of options) {
5066
5217
  map.set(opt.value, opt.label);
5067
5218
  }
5068
5219
  return map;
5069
5220
  }, [options]);
5070
- const ctx = React43.useMemo(
5221
+ const ctx = React44.useMemo(
5071
5222
  () => ({
5072
5223
  open,
5073
5224
  setOpen,
@@ -5101,7 +5252,7 @@ function SearchableSelect({
5101
5252
  optionMap
5102
5253
  ]
5103
5254
  );
5104
- 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 }) });
5105
5256
  }
5106
5257
  function SearchableSelectTrigger({
5107
5258
  className,
@@ -5114,7 +5265,7 @@ function SearchableSelectTrigger({
5114
5265
  if (children) return children;
5115
5266
  if (ctx.mode === "single") {
5116
5267
  const label = ctx.optionMap.get(ctx.value);
5117
- return /* @__PURE__ */ jsx45(
5268
+ return /* @__PURE__ */ jsx46(
5118
5269
  "span",
5119
5270
  {
5120
5271
  "data-slot": "searchable-select-value",
@@ -5127,7 +5278,7 @@ function SearchableSelectTrigger({
5127
5278
  );
5128
5279
  }
5129
5280
  if (ctx.values.length === 0) {
5130
- return /* @__PURE__ */ jsx45(
5281
+ return /* @__PURE__ */ jsx46(
5131
5282
  "span",
5132
5283
  {
5133
5284
  "data-slot": "searchable-select-value",
@@ -5138,20 +5289,20 @@ function SearchableSelectTrigger({
5138
5289
  }
5139
5290
  const visible = ctx.values.slice(0, ctx.maxCount);
5140
5291
  const remaining = ctx.values.length - visible.length;
5141
- return /* @__PURE__ */ jsxs26(
5292
+ return /* @__PURE__ */ jsxs27(
5142
5293
  "span",
5143
5294
  {
5144
5295
  "data-slot": "searchable-select-value",
5145
5296
  className: "flex flex-wrap items-center gap-1",
5146
5297
  children: [
5147
- visible.map((v) => /* @__PURE__ */ jsxs26(
5298
+ visible.map((v) => /* @__PURE__ */ jsxs27(
5148
5299
  Badge,
5149
5300
  {
5150
5301
  variant: "secondary",
5151
5302
  className: "gap-1 pr-1",
5152
5303
  children: [
5153
- /* @__PURE__ */ jsx45("span", { className: "truncate max-w-[120px]", children: ctx.optionMap.get(v) || v }),
5154
- /* @__PURE__ */ jsx45(
5304
+ /* @__PURE__ */ jsx46("span", { className: "truncate max-w-[120px]", children: ctx.optionMap.get(v) || v }),
5305
+ /* @__PURE__ */ jsx46(
5155
5306
  "span",
5156
5307
  {
5157
5308
  role: "button",
@@ -5163,14 +5314,14 @@ function SearchableSelectTrigger({
5163
5314
  e.stopPropagation();
5164
5315
  ctx.setValues(ctx.values.filter((val) => val !== v));
5165
5316
  },
5166
- children: /* @__PURE__ */ jsx45(XIcon2, { className: "size-3" })
5317
+ children: /* @__PURE__ */ jsx46(XIcon2, { className: "size-3" })
5167
5318
  }
5168
5319
  )
5169
5320
  ]
5170
5321
  },
5171
5322
  v
5172
5323
  )),
5173
- 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: [
5174
5325
  "+",
5175
5326
  remaining,
5176
5327
  " more"
@@ -5179,7 +5330,7 @@ function SearchableSelectTrigger({
5179
5330
  }
5180
5331
  );
5181
5332
  };
5182
- return /* @__PURE__ */ jsxs26(
5333
+ return /* @__PURE__ */ jsxs27(
5183
5334
  PopoverTrigger,
5184
5335
  {
5185
5336
  "data-slot": "searchable-select-trigger",
@@ -5193,7 +5344,7 @@ function SearchableSelectTrigger({
5193
5344
  ...props,
5194
5345
  children: [
5195
5346
  renderContent(),
5196
- /* @__PURE__ */ jsx45(ChevronsUpDown, { className: "size-4 shrink-0 opacity-50" })
5347
+ /* @__PURE__ */ jsx46(ChevronsUpDown, { className: "size-4 shrink-0 opacity-50" })
5197
5348
  ]
5198
5349
  }
5199
5350
  );
@@ -5205,7 +5356,7 @@ function SearchableSelectContent({
5205
5356
  ...props
5206
5357
  }) {
5207
5358
  const ctx = useSearchableSelect();
5208
- const groupedOptions = React43.useMemo(() => {
5359
+ const groupedOptions = React44.useMemo(() => {
5209
5360
  if (ctx.options.length === 0) return null;
5210
5361
  const groups = /* @__PURE__ */ new Map();
5211
5362
  for (const opt of ctx.options) {
@@ -5219,7 +5370,7 @@ function SearchableSelectContent({
5219
5370
  if (!groupedOptions) return null;
5220
5371
  const entries = Array.from(groupedOptions.entries());
5221
5372
  if (entries.length === 1 && entries[0][0] === "") {
5222
- return entries[0][1].map((opt) => /* @__PURE__ */ jsx45(
5373
+ return entries[0][1].map((opt) => /* @__PURE__ */ jsx46(
5223
5374
  SearchableSelectItem,
5224
5375
  {
5225
5376
  value: opt.value,
@@ -5229,7 +5380,7 @@ function SearchableSelectContent({
5229
5380
  opt.value
5230
5381
  ));
5231
5382
  }
5232
- 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(
5233
5384
  SearchableSelectItem,
5234
5385
  {
5235
5386
  value: opt.value,
@@ -5239,17 +5390,17 @@ function SearchableSelectContent({
5239
5390
  opt.value
5240
5391
  )) }, group));
5241
5392
  };
5242
- return /* @__PURE__ */ jsx45(
5393
+ return /* @__PURE__ */ jsx46(
5243
5394
  PopoverContent,
5244
5395
  {
5245
5396
  "data-slot": "searchable-select-content",
5246
5397
  className: cn("w-[var(--radix-popover-trigger-width)] p-0", className),
5247
5398
  align: "start",
5248
5399
  ...props,
5249
- children: /* @__PURE__ */ jsxs26(Command, { children: [
5250
- ctx.searchable && /* @__PURE__ */ jsx45(CommandInput, { placeholder: ctx.searchPlaceholder }),
5251
- /* @__PURE__ */ jsxs26(CommandList, { children: [
5252
- /* @__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 }),
5253
5404
  children || renderAutoItems()
5254
5405
  ] })
5255
5406
  ] })
@@ -5276,7 +5427,7 @@ function SearchableSelectItem({
5276
5427
  );
5277
5428
  }
5278
5429
  };
5279
- return /* @__PURE__ */ jsxs26(
5430
+ return /* @__PURE__ */ jsxs27(
5280
5431
  CommandItem,
5281
5432
  {
5282
5433
  "data-slot": "searchable-select-item",
@@ -5289,18 +5440,18 @@ function SearchableSelectItem({
5289
5440
  "data-disabled": disabled || void 0,
5290
5441
  ...props,
5291
5442
  children: [
5292
- 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(
5293
5444
  "span",
5294
5445
  {
5295
5446
  className: cn(
5296
5447
  "size-4 rounded-sm border border-primary transition-colors",
5297
5448
  isSelected ? "bg-primary text-primary-foreground" : "bg-transparent"
5298
5449
  ),
5299
- children: isSelected && /* @__PURE__ */ jsx45(CheckIcon4, { className: "size-4 p-0.5" })
5450
+ children: isSelected && /* @__PURE__ */ jsx46(CheckIcon4, { className: "size-4 p-0.5" })
5300
5451
  }
5301
5452
  ) }),
5302
- /* @__PURE__ */ jsx45("span", { className: "flex-1 truncate", children }),
5303
- 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" }) })
5304
5455
  ]
5305
5456
  }
5306
5457
  );
@@ -5309,7 +5460,7 @@ function SearchableSelectGroup({
5309
5460
  className,
5310
5461
  ...props
5311
5462
  }) {
5312
- return /* @__PURE__ */ jsx45(
5463
+ return /* @__PURE__ */ jsx46(
5313
5464
  CommandGroup,
5314
5465
  {
5315
5466
  "data-slot": "searchable-select-group",
@@ -5323,7 +5474,7 @@ function SearchableSelectEmpty({
5323
5474
  children = "No results found.",
5324
5475
  ...props
5325
5476
  }) {
5326
- return /* @__PURE__ */ jsx45(
5477
+ return /* @__PURE__ */ jsx46(
5327
5478
  CommandEmpty,
5328
5479
  {
5329
5480
  "data-slot": "searchable-select-empty",
@@ -5338,21 +5489,21 @@ function SearchableSelectEmpty({
5338
5489
  import "react";
5339
5490
  import * as SelectPrimitive from "@radix-ui/react-select";
5340
5491
  import { CheckIcon as CheckIcon5, ChevronDownIcon as ChevronDownIcon4, ChevronUpIcon } from "lucide-react";
5341
- import { jsx as jsx46, jsxs as jsxs27 } from "react/jsx-runtime";
5492
+ import { jsx as jsx47, jsxs as jsxs28 } from "react/jsx-runtime";
5342
5493
  function Select({
5343
5494
  ...props
5344
5495
  }) {
5345
- return /* @__PURE__ */ jsx46(SelectPrimitive.Root, { "data-slot": "select", ...props });
5496
+ return /* @__PURE__ */ jsx47(SelectPrimitive.Root, { "data-slot": "select", ...props });
5346
5497
  }
5347
5498
  function SelectGroup({
5348
5499
  ...props
5349
5500
  }) {
5350
- return /* @__PURE__ */ jsx46(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
5501
+ return /* @__PURE__ */ jsx47(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
5351
5502
  }
5352
5503
  function SelectValue({
5353
5504
  ...props
5354
5505
  }) {
5355
- return /* @__PURE__ */ jsx46(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
5506
+ return /* @__PURE__ */ jsx47(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
5356
5507
  }
5357
5508
  function SelectTrigger({
5358
5509
  className,
@@ -5360,7 +5511,7 @@ function SelectTrigger({
5360
5511
  children,
5361
5512
  ...props
5362
5513
  }) {
5363
- return /* @__PURE__ */ jsxs27(
5514
+ return /* @__PURE__ */ jsxs28(
5364
5515
  SelectPrimitive.Trigger,
5365
5516
  {
5366
5517
  "data-slot": "select-trigger",
@@ -5372,7 +5523,7 @@ function SelectTrigger({
5372
5523
  ...props,
5373
5524
  children: [
5374
5525
  children,
5375
- /* @__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" }) })
5376
5527
  ]
5377
5528
  }
5378
5529
  );
@@ -5383,7 +5534,7 @@ function SelectContent({
5383
5534
  position = "popper",
5384
5535
  ...props
5385
5536
  }) {
5386
- return /* @__PURE__ */ jsx46(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs27(
5537
+ return /* @__PURE__ */ jsx47(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs28(
5387
5538
  SelectPrimitive.Content,
5388
5539
  {
5389
5540
  "data-slot": "select-content",
@@ -5395,8 +5546,8 @@ function SelectContent({
5395
5546
  position,
5396
5547
  ...props,
5397
5548
  children: [
5398
- /* @__PURE__ */ jsx46(SelectScrollUpButton, {}),
5399
- /* @__PURE__ */ jsx46(
5549
+ /* @__PURE__ */ jsx47(SelectScrollUpButton, {}),
5550
+ /* @__PURE__ */ jsx47(
5400
5551
  SelectPrimitive.Viewport,
5401
5552
  {
5402
5553
  className: cn(
@@ -5406,7 +5557,7 @@ function SelectContent({
5406
5557
  children
5407
5558
  }
5408
5559
  ),
5409
- /* @__PURE__ */ jsx46(SelectScrollDownButton, {})
5560
+ /* @__PURE__ */ jsx47(SelectScrollDownButton, {})
5410
5561
  ]
5411
5562
  }
5412
5563
  ) });
@@ -5415,7 +5566,7 @@ function SelectLabel({
5415
5566
  className,
5416
5567
  ...props
5417
5568
  }) {
5418
- return /* @__PURE__ */ jsx46(
5569
+ return /* @__PURE__ */ jsx47(
5419
5570
  SelectPrimitive.Label,
5420
5571
  {
5421
5572
  "data-slot": "select-label",
@@ -5429,7 +5580,7 @@ function SelectItem({
5429
5580
  children,
5430
5581
  ...props
5431
5582
  }) {
5432
- return /* @__PURE__ */ jsxs27(
5583
+ return /* @__PURE__ */ jsxs28(
5433
5584
  SelectPrimitive.Item,
5434
5585
  {
5435
5586
  "data-slot": "select-item",
@@ -5439,8 +5590,8 @@ function SelectItem({
5439
5590
  ),
5440
5591
  ...props,
5441
5592
  children: [
5442
- /* @__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" }) }) }),
5443
- /* @__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 })
5444
5595
  ]
5445
5596
  }
5446
5597
  );
@@ -5449,7 +5600,7 @@ function SelectSeparator({
5449
5600
  className,
5450
5601
  ...props
5451
5602
  }) {
5452
- return /* @__PURE__ */ jsx46(
5603
+ return /* @__PURE__ */ jsx47(
5453
5604
  SelectPrimitive.Separator,
5454
5605
  {
5455
5606
  "data-slot": "select-separator",
@@ -5462,7 +5613,7 @@ function SelectScrollUpButton({
5462
5613
  className,
5463
5614
  ...props
5464
5615
  }) {
5465
- return /* @__PURE__ */ jsx46(
5616
+ return /* @__PURE__ */ jsx47(
5466
5617
  SelectPrimitive.ScrollUpButton,
5467
5618
  {
5468
5619
  "data-slot": "select-scroll-up-button",
@@ -5471,7 +5622,7 @@ function SelectScrollUpButton({
5471
5622
  className
5472
5623
  ),
5473
5624
  ...props,
5474
- children: /* @__PURE__ */ jsx46(ChevronUpIcon, { className: "size-4" })
5625
+ children: /* @__PURE__ */ jsx47(ChevronUpIcon, { className: "size-4" })
5475
5626
  }
5476
5627
  );
5477
5628
  }
@@ -5479,7 +5630,7 @@ function SelectScrollDownButton({
5479
5630
  className,
5480
5631
  ...props
5481
5632
  }) {
5482
- return /* @__PURE__ */ jsx46(
5633
+ return /* @__PURE__ */ jsx47(
5483
5634
  SelectPrimitive.ScrollDownButton,
5484
5635
  {
5485
5636
  "data-slot": "select-scroll-down-button",
@@ -5488,7 +5639,7 @@ function SelectScrollDownButton({
5488
5639
  className
5489
5640
  ),
5490
5641
  ...props,
5491
- children: /* @__PURE__ */ jsx46(ChevronDownIcon4, { className: "size-4" })
5642
+ children: /* @__PURE__ */ jsx47(ChevronDownIcon4, { className: "size-4" })
5492
5643
  }
5493
5644
  );
5494
5645
  }
@@ -5496,14 +5647,14 @@ function SelectScrollDownButton({
5496
5647
  // src/components/ui/separator.tsx
5497
5648
  import "react";
5498
5649
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
5499
- import { jsx as jsx47 } from "react/jsx-runtime";
5650
+ import { jsx as jsx48 } from "react/jsx-runtime";
5500
5651
  function Separator5({
5501
5652
  className,
5502
5653
  orientation = "horizontal",
5503
5654
  decorative = true,
5504
5655
  ...props
5505
5656
  }) {
5506
- return /* @__PURE__ */ jsx47(
5657
+ return /* @__PURE__ */ jsx48(
5507
5658
  SeparatorPrimitive.Root,
5508
5659
  {
5509
5660
  "data-slot": "separator",
@@ -5522,30 +5673,30 @@ function Separator5({
5522
5673
  import * as SheetPrimitive from "@radix-ui/react-dialog";
5523
5674
  import { XIcon as XIcon3 } from "lucide-react";
5524
5675
  import "react";
5525
- import { jsx as jsx48, jsxs as jsxs28 } from "react/jsx-runtime";
5676
+ import { jsx as jsx49, jsxs as jsxs29 } from "react/jsx-runtime";
5526
5677
  function Sheet({ ...props }) {
5527
- return /* @__PURE__ */ jsx48(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
5678
+ return /* @__PURE__ */ jsx49(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
5528
5679
  }
5529
5680
  function SheetTrigger({
5530
5681
  ...props
5531
5682
  }) {
5532
- return /* @__PURE__ */ jsx48(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
5683
+ return /* @__PURE__ */ jsx49(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
5533
5684
  }
5534
5685
  function SheetClose({
5535
5686
  ...props
5536
5687
  }) {
5537
- return /* @__PURE__ */ jsx48(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
5688
+ return /* @__PURE__ */ jsx49(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
5538
5689
  }
5539
5690
  function SheetPortal({
5540
5691
  ...props
5541
5692
  }) {
5542
- return /* @__PURE__ */ jsx48(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
5693
+ return /* @__PURE__ */ jsx49(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
5543
5694
  }
5544
5695
  function SheetOverlay({
5545
5696
  className,
5546
5697
  ...props
5547
5698
  }) {
5548
- return /* @__PURE__ */ jsx48(
5699
+ return /* @__PURE__ */ jsx49(
5549
5700
  SheetPrimitive.Overlay,
5550
5701
  {
5551
5702
  "data-slot": "sheet-overlay",
@@ -5564,9 +5715,9 @@ function SheetContent({
5564
5715
  showCloseButton = true,
5565
5716
  ...props
5566
5717
  }) {
5567
- return /* @__PURE__ */ jsxs28(SheetPortal, { children: [
5568
- /* @__PURE__ */ jsx48(SheetOverlay, {}),
5569
- /* @__PURE__ */ jsxs28(
5718
+ return /* @__PURE__ */ jsxs29(SheetPortal, { children: [
5719
+ /* @__PURE__ */ jsx49(SheetOverlay, {}),
5720
+ /* @__PURE__ */ jsxs29(
5570
5721
  SheetPrimitive.Content,
5571
5722
  {
5572
5723
  "data-slot": "sheet-content",
@@ -5581,9 +5732,9 @@ function SheetContent({
5581
5732
  ...props,
5582
5733
  children: [
5583
5734
  children,
5584
- 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: [
5585
- /* @__PURE__ */ jsx48(XIcon3, { className: "size-4" }),
5586
- /* @__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" })
5587
5738
  ] })
5588
5739
  ]
5589
5740
  }
@@ -5591,7 +5742,7 @@ function SheetContent({
5591
5742
  ] });
5592
5743
  }
5593
5744
  function SheetHeader({ className, ...props }) {
5594
- return /* @__PURE__ */ jsx48(
5745
+ return /* @__PURE__ */ jsx49(
5595
5746
  "div",
5596
5747
  {
5597
5748
  "data-slot": "sheet-header",
@@ -5601,7 +5752,7 @@ function SheetHeader({ className, ...props }) {
5601
5752
  );
5602
5753
  }
5603
5754
  function SheetFooter({ className, ...props }) {
5604
- return /* @__PURE__ */ jsx48(
5755
+ return /* @__PURE__ */ jsx49(
5605
5756
  "div",
5606
5757
  {
5607
5758
  "data-slot": "sheet-footer",
@@ -5614,7 +5765,7 @@ function SheetTitle({
5614
5765
  className,
5615
5766
  ...props
5616
5767
  }) {
5617
- return /* @__PURE__ */ jsx48(
5768
+ return /* @__PURE__ */ jsx49(
5618
5769
  SheetPrimitive.Title,
5619
5770
  {
5620
5771
  "data-slot": "sheet-title",
@@ -5627,7 +5778,7 @@ function SheetDescription({
5627
5778
  className,
5628
5779
  ...props
5629
5780
  }) {
5630
- return /* @__PURE__ */ jsx48(
5781
+ return /* @__PURE__ */ jsx49(
5631
5782
  SheetPrimitive.Description,
5632
5783
  {
5633
5784
  "data-slot": "sheet-description",
@@ -5639,14 +5790,14 @@ function SheetDescription({
5639
5790
 
5640
5791
  // src/components/ui/sidebar.tsx
5641
5792
  import { Slot as Slot6 } from "@radix-ui/react-slot";
5642
- import { cva as cva12 } from "class-variance-authority";
5793
+ import { cva as cva13 } from "class-variance-authority";
5643
5794
  import { PanelLeftIcon } from "lucide-react";
5644
- import * as React49 from "react";
5795
+ import * as React50 from "react";
5645
5796
 
5646
5797
  // src/components/ui/skeleton.tsx
5647
- import { jsx as jsx49 } from "react/jsx-runtime";
5798
+ import { jsx as jsx50 } from "react/jsx-runtime";
5648
5799
  function Skeleton({ className, ...props }) {
5649
- return /* @__PURE__ */ jsx49(
5800
+ return /* @__PURE__ */ jsx50(
5650
5801
  "div",
5651
5802
  {
5652
5803
  "data-slot": "skeleton",
@@ -5657,15 +5808,15 @@ function Skeleton({ className, ...props }) {
5657
5808
  }
5658
5809
 
5659
5810
  // src/components/ui/tooltip.tsx
5660
- import "react";
5811
+ import * as React48 from "react";
5661
5812
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
5662
5813
  import { X as X4 } from "lucide-react";
5663
- import { jsx as jsx50, jsxs as jsxs29 } from "react/jsx-runtime";
5814
+ import { jsx as jsx51, jsxs as jsxs30 } from "react/jsx-runtime";
5664
5815
  function TooltipProvider({
5665
5816
  delayDuration = 0,
5666
5817
  ...props
5667
5818
  }) {
5668
- return /* @__PURE__ */ jsx50(
5819
+ return /* @__PURE__ */ jsx51(
5669
5820
  TooltipPrimitive.Provider,
5670
5821
  {
5671
5822
  "data-slot": "tooltip-provider",
@@ -5674,15 +5825,38 @@ function TooltipProvider({
5674
5825
  }
5675
5826
  );
5676
5827
  }
5828
+ var TooltipCloseContext = React48.createContext(null);
5677
5829
  function Tooltip2({
5830
+ persistent = false,
5678
5831
  ...props
5679
5832
  }) {
5680
- 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
+ ) }) });
5681
5855
  }
5682
5856
  function TooltipTrigger({
5683
5857
  ...props
5684
5858
  }) {
5685
- return /* @__PURE__ */ jsx50(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
5859
+ return /* @__PURE__ */ jsx51(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
5686
5860
  }
5687
5861
  function TooltipContent({
5688
5862
  className,
@@ -5690,7 +5864,7 @@ function TooltipContent({
5690
5864
  children,
5691
5865
  ...props
5692
5866
  }) {
5693
- return /* @__PURE__ */ jsx50(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs29(
5867
+ return /* @__PURE__ */ jsx51(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs30(
5694
5868
  TooltipPrimitive.Content,
5695
5869
  {
5696
5870
  "data-slot": "tooltip-content",
@@ -5702,7 +5876,7 @@ function TooltipContent({
5702
5876
  ...props,
5703
5877
  children: [
5704
5878
  children,
5705
- /* @__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]" })
5706
5880
  ]
5707
5881
  }
5708
5882
  ) });
@@ -5717,7 +5891,12 @@ function RichTooltipContent({
5717
5891
  children,
5718
5892
  ...props
5719
5893
  }) {
5720
- 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(
5721
5900
  TooltipPrimitive.Content,
5722
5901
  {
5723
5902
  "data-slot": "rich-tooltip-content",
@@ -5726,26 +5905,29 @@ function RichTooltipContent({
5726
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)",
5727
5906
  className
5728
5907
  ),
5908
+ ...dismissible && {
5909
+ onPointerDownOutside: handleDismiss
5910
+ },
5729
5911
  ...props,
5730
5912
  children: [
5731
- /* @__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: [
5732
- icon && /* @__PURE__ */ jsx50("span", { className: "flex items-center justify-center shrink-0 size-5 text-white [&_svg]:size-5", children: icon }),
5733
- /* @__PURE__ */ jsxs29("div", { className: "flex flex-1 flex-col gap-2 min-w-0", children: [
5734
- heading && /* @__PURE__ */ jsx50("p", { className: "font-semibold text-sm leading-5 text-white", children: heading }),
5735
- /* @__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 })
5736
5918
  ] }),
5737
- dismissible && /* @__PURE__ */ jsx50(
5919
+ dismissible && /* @__PURE__ */ jsx51(
5738
5920
  "button",
5739
5921
  {
5740
5922
  type: "button",
5741
- onClick: onDismiss,
5923
+ onClick: handleDismiss,
5742
5924
  className: "flex items-center justify-center shrink-0 size-5 text-white/70 hover:text-white transition-colors cursor-pointer",
5743
5925
  "aria-label": "Dismiss",
5744
- children: /* @__PURE__ */ jsx50(X4, { className: "size-2.5" })
5926
+ children: /* @__PURE__ */ jsx51(X4, { className: "size-3.5" })
5745
5927
  }
5746
5928
  )
5747
5929
  ] }),
5748
- /* @__PURE__ */ jsx50(
5930
+ /* @__PURE__ */ jsx51(
5749
5931
  TooltipPrimitive.Arrow,
5750
5932
  {
5751
5933
  width: 16,
@@ -5759,11 +5941,11 @@ function RichTooltipContent({
5759
5941
  }
5760
5942
 
5761
5943
  // src/hooks/use-mobile.ts
5762
- import * as React48 from "react";
5944
+ import * as React49 from "react";
5763
5945
  var MOBILE_BREAKPOINT = 768;
5764
5946
  function useIsMobile() {
5765
- const [isMobile, setIsMobile] = React48.useState(void 0);
5766
- React48.useEffect(() => {
5947
+ const [isMobile, setIsMobile] = React49.useState(void 0);
5948
+ React49.useEffect(() => {
5767
5949
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
5768
5950
  const onChange = () => {
5769
5951
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -5776,16 +5958,16 @@ function useIsMobile() {
5776
5958
  }
5777
5959
 
5778
5960
  // src/components/ui/sidebar.tsx
5779
- import { jsx as jsx51, jsxs as jsxs30 } from "react/jsx-runtime";
5961
+ import { jsx as jsx52, jsxs as jsxs31 } from "react/jsx-runtime";
5780
5962
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
5781
5963
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
5782
5964
  var SIDEBAR_WIDTH = "18rem";
5783
5965
  var SIDEBAR_WIDTH_MOBILE = "18rem";
5784
5966
  var SIDEBAR_WIDTH_ICON = "3rem";
5785
5967
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
5786
- var SidebarContext = React49.createContext(null);
5968
+ var SidebarContext = React50.createContext(null);
5787
5969
  function useSidebar() {
5788
- const context = React49.useContext(SidebarContext);
5970
+ const context = React50.useContext(SidebarContext);
5789
5971
  if (!context) {
5790
5972
  throw new Error("useSidebar must be used within a SidebarProvider.");
5791
5973
  }
@@ -5801,10 +5983,10 @@ function SidebarProvider({
5801
5983
  ...props
5802
5984
  }) {
5803
5985
  const isMobile = useIsMobile();
5804
- const [openMobile, setOpenMobile] = React49.useState(false);
5805
- const [_open, _setOpen] = React49.useState(defaultOpen);
5986
+ const [openMobile, setOpenMobile] = React50.useState(false);
5987
+ const [_open, _setOpen] = React50.useState(defaultOpen);
5806
5988
  const open = openProp ?? _open;
5807
- const setOpen = React49.useCallback(
5989
+ const setOpen = React50.useCallback(
5808
5990
  (value) => {
5809
5991
  const openState = typeof value === "function" ? value(open) : value;
5810
5992
  if (setOpenProp) {
@@ -5816,10 +5998,10 @@ function SidebarProvider({
5816
5998
  },
5817
5999
  [setOpenProp, open]
5818
6000
  );
5819
- const toggleSidebar = React49.useCallback(() => {
6001
+ const toggleSidebar = React50.useCallback(() => {
5820
6002
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
5821
6003
  }, [isMobile, setOpen, setOpenMobile]);
5822
- React49.useEffect(() => {
6004
+ React50.useEffect(() => {
5823
6005
  const handleKeyDown = (event) => {
5824
6006
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
5825
6007
  event.preventDefault();
@@ -5830,7 +6012,7 @@ function SidebarProvider({
5830
6012
  return () => window.removeEventListener("keydown", handleKeyDown);
5831
6013
  }, [toggleSidebar]);
5832
6014
  const state = open ? "expanded" : "collapsed";
5833
- const contextValue = React49.useMemo(
6015
+ const contextValue = React50.useMemo(
5834
6016
  () => ({
5835
6017
  state,
5836
6018
  open,
@@ -5842,7 +6024,7 @@ function SidebarProvider({
5842
6024
  }),
5843
6025
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
5844
6026
  );
5845
- 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(
5846
6028
  "div",
5847
6029
  {
5848
6030
  "data-slot": "sidebar-wrapper",
@@ -5870,7 +6052,7 @@ function Sidebar({
5870
6052
  }) {
5871
6053
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
5872
6054
  if (collapsible === "none") {
5873
- return /* @__PURE__ */ jsx51(
6055
+ return /* @__PURE__ */ jsx52(
5874
6056
  "div",
5875
6057
  {
5876
6058
  "data-slot": "sidebar",
@@ -5884,7 +6066,7 @@ function Sidebar({
5884
6066
  );
5885
6067
  }
5886
6068
  if (isMobile) {
5887
- 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(
5888
6070
  SheetContent,
5889
6071
  {
5890
6072
  "data-sidebar": "sidebar",
@@ -5896,16 +6078,16 @@ function Sidebar({
5896
6078
  },
5897
6079
  side,
5898
6080
  children: [
5899
- /* @__PURE__ */ jsxs30(SheetHeader, { className: "sr-only", children: [
5900
- /* @__PURE__ */ jsx51(SheetTitle, { children: "Sidebar" }),
5901
- /* @__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." })
5902
6084
  ] }),
5903
- /* @__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 })
5904
6086
  ]
5905
6087
  }
5906
6088
  ) });
5907
6089
  }
5908
- return /* @__PURE__ */ jsxs30(
6090
+ return /* @__PURE__ */ jsxs31(
5909
6091
  "div",
5910
6092
  {
5911
6093
  className: "group peer text-sidebar-foreground hidden md:block",
@@ -5915,7 +6097,7 @@ function Sidebar({
5915
6097
  "data-side": side,
5916
6098
  "data-slot": "sidebar",
5917
6099
  children: [
5918
- /* @__PURE__ */ jsx51(
6100
+ /* @__PURE__ */ jsx52(
5919
6101
  "div",
5920
6102
  {
5921
6103
  "data-slot": "sidebar-gap",
@@ -5927,7 +6109,7 @@ function Sidebar({
5927
6109
  )
5928
6110
  }
5929
6111
  ),
5930
- /* @__PURE__ */ jsx51(
6112
+ /* @__PURE__ */ jsx52(
5931
6113
  "div",
5932
6114
  {
5933
6115
  "data-slot": "sidebar-container",
@@ -5939,7 +6121,7 @@ function Sidebar({
5939
6121
  className
5940
6122
  ),
5941
6123
  ...props,
5942
- children: /* @__PURE__ */ jsx51(
6124
+ children: /* @__PURE__ */ jsx52(
5943
6125
  "div",
5944
6126
  {
5945
6127
  "data-sidebar": "sidebar",
@@ -5960,7 +6142,7 @@ function SidebarTrigger({
5960
6142
  ...props
5961
6143
  }) {
5962
6144
  const { toggleSidebar } = useSidebar();
5963
- return /* @__PURE__ */ jsxs30(
6145
+ return /* @__PURE__ */ jsxs31(
5964
6146
  Button,
5965
6147
  {
5966
6148
  "data-sidebar": "trigger",
@@ -5974,15 +6156,15 @@ function SidebarTrigger({
5974
6156
  },
5975
6157
  ...props,
5976
6158
  children: [
5977
- /* @__PURE__ */ jsx51(PanelLeftIcon, {}),
5978
- /* @__PURE__ */ jsx51("span", { className: "sr-only", children: "Toggle Sidebar" })
6159
+ /* @__PURE__ */ jsx52(PanelLeftIcon, {}),
6160
+ /* @__PURE__ */ jsx52("span", { className: "sr-only", children: "Toggle Sidebar" })
5979
6161
  ]
5980
6162
  }
5981
6163
  );
5982
6164
  }
5983
6165
  function SidebarRail({ className, ...props }) {
5984
6166
  const { toggleSidebar } = useSidebar();
5985
- return /* @__PURE__ */ jsx51(
6167
+ return /* @__PURE__ */ jsx52(
5986
6168
  "button",
5987
6169
  {
5988
6170
  "data-sidebar": "rail",
@@ -6005,7 +6187,7 @@ function SidebarRail({ className, ...props }) {
6005
6187
  );
6006
6188
  }
6007
6189
  function SidebarInset({ className, ...props }) {
6008
- return /* @__PURE__ */ jsx51(
6190
+ return /* @__PURE__ */ jsx52(
6009
6191
  "main",
6010
6192
  {
6011
6193
  "data-slot": "sidebar-inset",
@@ -6022,7 +6204,7 @@ function SidebarInput({
6022
6204
  className,
6023
6205
  ...props
6024
6206
  }) {
6025
- return /* @__PURE__ */ jsx51(
6207
+ return /* @__PURE__ */ jsx52(
6026
6208
  Input,
6027
6209
  {
6028
6210
  "data-slot": "sidebar-input",
@@ -6033,7 +6215,7 @@ function SidebarInput({
6033
6215
  );
6034
6216
  }
6035
6217
  function SidebarHeader({ className, ...props }) {
6036
- return /* @__PURE__ */ jsx51(
6218
+ return /* @__PURE__ */ jsx52(
6037
6219
  "div",
6038
6220
  {
6039
6221
  "data-slot": "sidebar-header",
@@ -6044,7 +6226,7 @@ function SidebarHeader({ className, ...props }) {
6044
6226
  );
6045
6227
  }
6046
6228
  function SidebarFooter({ className, ...props }) {
6047
- return /* @__PURE__ */ jsx51(
6229
+ return /* @__PURE__ */ jsx52(
6048
6230
  "div",
6049
6231
  {
6050
6232
  "data-slot": "sidebar-footer",
@@ -6058,7 +6240,7 @@ function SidebarSeparator({
6058
6240
  className,
6059
6241
  ...props
6060
6242
  }) {
6061
- return /* @__PURE__ */ jsx51(
6243
+ return /* @__PURE__ */ jsx52(
6062
6244
  Separator5,
6063
6245
  {
6064
6246
  "data-slot": "sidebar-separator",
@@ -6069,7 +6251,7 @@ function SidebarSeparator({
6069
6251
  );
6070
6252
  }
6071
6253
  function SidebarContent({ className, ...props }) {
6072
- return /* @__PURE__ */ jsx51(
6254
+ return /* @__PURE__ */ jsx52(
6073
6255
  "div",
6074
6256
  {
6075
6257
  "data-slot": "sidebar-content",
@@ -6083,7 +6265,7 @@ function SidebarContent({ className, ...props }) {
6083
6265
  );
6084
6266
  }
6085
6267
  function SidebarGroup({ className, ...props }) {
6086
- return /* @__PURE__ */ jsx51(
6268
+ return /* @__PURE__ */ jsx52(
6087
6269
  "div",
6088
6270
  {
6089
6271
  "data-slot": "sidebar-group",
@@ -6099,7 +6281,7 @@ function SidebarGroupLabel({
6099
6281
  ...props
6100
6282
  }) {
6101
6283
  const Comp = asChild ? Slot6 : "div";
6102
- return /* @__PURE__ */ jsx51(
6284
+ return /* @__PURE__ */ jsx52(
6103
6285
  Comp,
6104
6286
  {
6105
6287
  "data-slot": "sidebar-group-label",
@@ -6119,7 +6301,7 @@ function SidebarGroupAction({
6119
6301
  ...props
6120
6302
  }) {
6121
6303
  const Comp = asChild ? Slot6 : "button";
6122
- return /* @__PURE__ */ jsx51(
6304
+ return /* @__PURE__ */ jsx52(
6123
6305
  Comp,
6124
6306
  {
6125
6307
  "data-slot": "sidebar-group-action",
@@ -6139,7 +6321,7 @@ function SidebarGroupContent({
6139
6321
  className,
6140
6322
  ...props
6141
6323
  }) {
6142
- return /* @__PURE__ */ jsx51(
6324
+ return /* @__PURE__ */ jsx52(
6143
6325
  "div",
6144
6326
  {
6145
6327
  "data-slot": "sidebar-group-content",
@@ -6150,7 +6332,7 @@ function SidebarGroupContent({
6150
6332
  );
6151
6333
  }
6152
6334
  function SidebarMenu({ className, ...props }) {
6153
- return /* @__PURE__ */ jsx51(
6335
+ return /* @__PURE__ */ jsx52(
6154
6336
  "ul",
6155
6337
  {
6156
6338
  "data-slot": "sidebar-menu",
@@ -6161,7 +6343,7 @@ function SidebarMenu({ className, ...props }) {
6161
6343
  );
6162
6344
  }
6163
6345
  function SidebarMenuItem({ className, ...props }) {
6164
- return /* @__PURE__ */ jsx51(
6346
+ return /* @__PURE__ */ jsx52(
6165
6347
  "li",
6166
6348
  {
6167
6349
  "data-slot": "sidebar-menu-item",
@@ -6171,7 +6353,7 @@ function SidebarMenuItem({ className, ...props }) {
6171
6353
  }
6172
6354
  );
6173
6355
  }
6174
- var sidebarMenuButtonVariants = cva12(
6356
+ var sidebarMenuButtonVariants = cva13(
6175
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",
6176
6358
  {
6177
6359
  variants: {
@@ -6202,7 +6384,7 @@ function SidebarMenuButton({
6202
6384
  }) {
6203
6385
  const Comp = asChild ? Slot6 : "button";
6204
6386
  const { isMobile, state } = useSidebar();
6205
- const button = /* @__PURE__ */ jsx51(
6387
+ const button = /* @__PURE__ */ jsx52(
6206
6388
  Comp,
6207
6389
  {
6208
6390
  "data-slot": "sidebar-menu-button",
@@ -6221,9 +6403,9 @@ function SidebarMenuButton({
6221
6403
  children: tooltip
6222
6404
  };
6223
6405
  }
6224
- return /* @__PURE__ */ jsxs30(Tooltip2, { children: [
6225
- /* @__PURE__ */ jsx51(TooltipTrigger, { asChild: true, children: button }),
6226
- /* @__PURE__ */ jsx51(
6406
+ return /* @__PURE__ */ jsxs31(Tooltip2, { children: [
6407
+ /* @__PURE__ */ jsx52(TooltipTrigger, { asChild: true, children: button }),
6408
+ /* @__PURE__ */ jsx52(
6227
6409
  TooltipContent,
6228
6410
  {
6229
6411
  side: "right",
@@ -6241,7 +6423,7 @@ function SidebarMenuAction({
6241
6423
  ...props
6242
6424
  }) {
6243
6425
  const Comp = asChild ? Slot6 : "button";
6244
- return /* @__PURE__ */ jsx51(
6426
+ return /* @__PURE__ */ jsx52(
6245
6427
  Comp,
6246
6428
  {
6247
6429
  "data-slot": "sidebar-menu-action",
@@ -6265,7 +6447,7 @@ function SidebarMenuBadge({
6265
6447
  className,
6266
6448
  ...props
6267
6449
  }) {
6268
- return /* @__PURE__ */ jsx51(
6450
+ return /* @__PURE__ */ jsx52(
6269
6451
  "div",
6270
6452
  {
6271
6453
  "data-slot": "sidebar-menu-badge",
@@ -6288,10 +6470,10 @@ function SidebarMenuSkeleton({
6288
6470
  showIcon = false,
6289
6471
  ...props
6290
6472
  }) {
6291
- const width = React49.useMemo(() => {
6473
+ const width = React50.useMemo(() => {
6292
6474
  return `${Math.floor(Math.random() * 40) + 50}%`;
6293
6475
  }, []);
6294
- return /* @__PURE__ */ jsxs30(
6476
+ return /* @__PURE__ */ jsxs31(
6295
6477
  "div",
6296
6478
  {
6297
6479
  "data-slot": "sidebar-menu-skeleton",
@@ -6299,14 +6481,14 @@ function SidebarMenuSkeleton({
6299
6481
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
6300
6482
  ...props,
6301
6483
  children: [
6302
- showIcon && /* @__PURE__ */ jsx51(
6484
+ showIcon && /* @__PURE__ */ jsx52(
6303
6485
  Skeleton,
6304
6486
  {
6305
6487
  className: "size-4 rounded-md",
6306
6488
  "data-sidebar": "menu-skeleton-icon"
6307
6489
  }
6308
6490
  ),
6309
- /* @__PURE__ */ jsx51(
6491
+ /* @__PURE__ */ jsx52(
6310
6492
  Skeleton,
6311
6493
  {
6312
6494
  className: "h-4 max-w-(--skeleton-width) flex-1",
@@ -6321,7 +6503,7 @@ function SidebarMenuSkeleton({
6321
6503
  );
6322
6504
  }
6323
6505
  function SidebarMenuSub({ className, ...props }) {
6324
- return /* @__PURE__ */ jsx51(
6506
+ return /* @__PURE__ */ jsx52(
6325
6507
  "ul",
6326
6508
  {
6327
6509
  "data-slot": "sidebar-menu-sub",
@@ -6339,7 +6521,7 @@ function SidebarMenuSubItem({
6339
6521
  className,
6340
6522
  ...props
6341
6523
  }) {
6342
- return /* @__PURE__ */ jsx51(
6524
+ return /* @__PURE__ */ jsx52(
6343
6525
  "li",
6344
6526
  {
6345
6527
  "data-slot": "sidebar-menu-sub-item",
@@ -6357,7 +6539,7 @@ function SidebarMenuSubButton({
6357
6539
  ...props
6358
6540
  }) {
6359
6541
  const Comp = asChild ? Slot6 : "a";
6360
- return /* @__PURE__ */ jsx51(
6542
+ return /* @__PURE__ */ jsx52(
6361
6543
  Comp,
6362
6544
  {
6363
6545
  "data-slot": "sidebar-menu-sub-button",
@@ -6378,9 +6560,9 @@ function SidebarMenuSubButton({
6378
6560
  }
6379
6561
 
6380
6562
  // src/components/ui/slider.tsx
6381
- import * as React50 from "react";
6563
+ import * as React51 from "react";
6382
6564
  import * as SliderPrimitive from "@radix-ui/react-slider";
6383
- import { jsx as jsx52, jsxs as jsxs31 } from "react/jsx-runtime";
6565
+ import { jsx as jsx53, jsxs as jsxs32 } from "react/jsx-runtime";
6384
6566
  function Slider({
6385
6567
  className,
6386
6568
  defaultValue,
@@ -6389,11 +6571,11 @@ function Slider({
6389
6571
  max = 100,
6390
6572
  ...props
6391
6573
  }) {
6392
- const _values = React50.useMemo(
6574
+ const _values = React51.useMemo(
6393
6575
  () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
6394
6576
  [value, defaultValue, min, max]
6395
6577
  );
6396
- return /* @__PURE__ */ jsxs31(
6578
+ return /* @__PURE__ */ jsxs32(
6397
6579
  SliderPrimitive.Root,
6398
6580
  {
6399
6581
  "data-slot": "slider",
@@ -6407,14 +6589,14 @@ function Slider({
6407
6589
  ),
6408
6590
  ...props,
6409
6591
  children: [
6410
- /* @__PURE__ */ jsx52(
6592
+ /* @__PURE__ */ jsx53(
6411
6593
  SliderPrimitive.Track,
6412
6594
  {
6413
6595
  "data-slot": "slider-track",
6414
6596
  className: cn(
6415
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"
6416
6598
  ),
6417
- children: /* @__PURE__ */ jsx52(
6599
+ children: /* @__PURE__ */ jsx53(
6418
6600
  SliderPrimitive.Range,
6419
6601
  {
6420
6602
  "data-slot": "slider-range",
@@ -6425,7 +6607,7 @@ function Slider({
6425
6607
  )
6426
6608
  }
6427
6609
  ),
6428
- Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx52(
6610
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx53(
6429
6611
  SliderPrimitive.Thumb,
6430
6612
  {
6431
6613
  "data-slot": "slider-thumb",
@@ -6442,7 +6624,7 @@ function Slider({
6442
6624
  import "react";
6443
6625
 
6444
6626
  // src/components/ui/useMediaQuery.ts
6445
- import { useEffect as useEffect8, useState as useState10 } from "react";
6627
+ import { useEffect as useEffect8, useState as useState11 } from "react";
6446
6628
  function useMediaQuery(query) {
6447
6629
  const getMatches = (query2) => {
6448
6630
  if (typeof window !== "undefined") {
@@ -6450,7 +6632,7 @@ function useMediaQuery(query) {
6450
6632
  }
6451
6633
  return false;
6452
6634
  };
6453
- const [matches, setMatches] = useState10(getMatches(query));
6635
+ const [matches, setMatches] = useState11(getMatches(query));
6454
6636
  function handleChange() {
6455
6637
  setMatches(getMatches(query));
6456
6638
  }
@@ -6474,10 +6656,10 @@ function useMediaQuery(query) {
6474
6656
  }
6475
6657
 
6476
6658
  // src/components/ui/smart-dialog-drawer.tsx
6477
- import { Fragment as Fragment3, jsx as jsx53 } from "react/jsx-runtime";
6659
+ import { Fragment as Fragment3, jsx as jsx54 } from "react/jsx-runtime";
6478
6660
  var SmartDialog = ({ children, ...props }) => {
6479
6661
  const isMobile = useMediaQuery("(max-width: 600px)");
6480
- 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 });
6481
6663
  };
6482
6664
  var SmartDialogContent = ({
6483
6665
  children,
@@ -6487,14 +6669,14 @@ var SmartDialogContent = ({
6487
6669
  ...props
6488
6670
  }) => {
6489
6671
  const isMobile = useMediaQuery("(max-width: 600px)");
6490
- return isMobile ? /* @__PURE__ */ jsx53(
6672
+ return isMobile ? /* @__PURE__ */ jsx54(
6491
6673
  DrawerContent,
6492
6674
  {
6493
6675
  ...props,
6494
6676
  withCloseButton: withCloseButton ?? showCloseButton ?? true,
6495
6677
  children
6496
6678
  }
6497
- ) : /* @__PURE__ */ jsx53(
6679
+ ) : /* @__PURE__ */ jsx54(
6498
6680
  DialogContent,
6499
6681
  {
6500
6682
  ...props,
@@ -6509,47 +6691,63 @@ var SmartDialogDescription = ({
6509
6691
  ...props
6510
6692
  }) => {
6511
6693
  const isMobile = useMediaQuery("(max-width: 600px)");
6512
- 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 });
6513
6695
  };
6514
6696
  var SmartDialogHeader = ({ children, ...props }) => {
6515
6697
  const isMobile = useMediaQuery("(max-width: 600px)");
6516
- 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 });
6517
6699
  };
6518
6700
  var SmartDialogTitle = ({ children, ...props }) => {
6519
6701
  const isMobile = useMediaQuery("(max-width: 600px)");
6520
- 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 });
6521
6703
  };
6522
6704
  var SmartDialogTrigger = ({
6523
6705
  children,
6524
6706
  ...props
6525
6707
  }) => {
6526
6708
  const isMobile = useMediaQuery("(max-width: 600px)");
6527
- 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 });
6528
6710
  };
6529
6711
  var SmartDialogFooter = ({ children, ...props }) => {
6530
6712
  const isMobile = useMediaQuery("(max-width: 600px)");
6531
- 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 });
6532
6714
  };
6533
6715
  var SmartDialogClose = ({ children, ...props }) => {
6534
6716
  const isMobile = useMediaQuery("(max-width: 600px)");
6535
- 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 });
6536
6718
  };
6537
6719
 
6538
6720
  // src/components/ui/sonner.tsx
6721
+ import { CircleCheck, Info, TriangleAlert } from "lucide-react";
6539
6722
  import { useTheme } from "next-themes";
6540
- import { Toaster as Sonner } from "sonner";
6541
- 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 });
6542
6726
  var Toaster = ({ ...props }) => {
6543
6727
  const { theme = "system" } = useTheme();
6544
- return /* @__PURE__ */ jsx54(
6728
+ return /* @__PURE__ */ jsx55(
6545
6729
  Sonner,
6546
6730
  {
6547
6731
  theme,
6548
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
+ },
6549
6749
  style: {
6550
- "--normal-bg": "var(--popover)",
6551
- "--normal-text": "var(--popover-foreground)",
6552
- "--normal-border": "var(--border)"
6750
+ "--width": "436px"
6553
6751
  },
6554
6752
  ...props
6555
6753
  }
@@ -6559,12 +6757,12 @@ var Toaster = ({ ...props }) => {
6559
6757
  // src/components/ui/switch.tsx
6560
6758
  import * as SwitchPrimitive from "@radix-ui/react-switch";
6561
6759
  import "react";
6562
- import { jsx as jsx55 } from "react/jsx-runtime";
6760
+ import { jsx as jsx56 } from "react/jsx-runtime";
6563
6761
  function Switch({
6564
6762
  className,
6565
6763
  ...props
6566
6764
  }) {
6567
- return /* @__PURE__ */ jsx55(
6765
+ return /* @__PURE__ */ jsx56(
6568
6766
  SwitchPrimitive.Root,
6569
6767
  {
6570
6768
  "data-slot": "switch",
@@ -6573,7 +6771,7 @@ function Switch({
6573
6771
  className
6574
6772
  ),
6575
6773
  ...props,
6576
- children: /* @__PURE__ */ jsx55(
6774
+ children: /* @__PURE__ */ jsx56(
6577
6775
  SwitchPrimitive.Thumb,
6578
6776
  {
6579
6777
  "data-slot": "switch-thumb",
@@ -6588,14 +6786,14 @@ function Switch({
6588
6786
 
6589
6787
  // src/components/ui/table.tsx
6590
6788
  import "react";
6591
- import { jsx as jsx56 } from "react/jsx-runtime";
6789
+ import { jsx as jsx57 } from "react/jsx-runtime";
6592
6790
  function Table({ className, ...props }) {
6593
- return /* @__PURE__ */ jsx56(
6791
+ return /* @__PURE__ */ jsx57(
6594
6792
  "div",
6595
6793
  {
6596
6794
  "data-slot": "table-container",
6597
6795
  className: "relative w-full overflow-x-auto",
6598
- children: /* @__PURE__ */ jsx56(
6796
+ children: /* @__PURE__ */ jsx57(
6599
6797
  "table",
6600
6798
  {
6601
6799
  "data-slot": "table",
@@ -6607,7 +6805,7 @@ function Table({ className, ...props }) {
6607
6805
  );
6608
6806
  }
6609
6807
  function TableHeader({ className, ...props }) {
6610
- return /* @__PURE__ */ jsx56(
6808
+ return /* @__PURE__ */ jsx57(
6611
6809
  "thead",
6612
6810
  {
6613
6811
  "data-slot": "table-header",
@@ -6617,7 +6815,7 @@ function TableHeader({ className, ...props }) {
6617
6815
  );
6618
6816
  }
6619
6817
  function TableBody({ className, ...props }) {
6620
- return /* @__PURE__ */ jsx56(
6818
+ return /* @__PURE__ */ jsx57(
6621
6819
  "tbody",
6622
6820
  {
6623
6821
  "data-slot": "table-body",
@@ -6627,7 +6825,7 @@ function TableBody({ className, ...props }) {
6627
6825
  );
6628
6826
  }
6629
6827
  function TableFooter({ className, ...props }) {
6630
- return /* @__PURE__ */ jsx56(
6828
+ return /* @__PURE__ */ jsx57(
6631
6829
  "tfoot",
6632
6830
  {
6633
6831
  "data-slot": "table-footer",
@@ -6640,7 +6838,7 @@ function TableFooter({ className, ...props }) {
6640
6838
  );
6641
6839
  }
6642
6840
  function TableRow({ className, ...props }) {
6643
- return /* @__PURE__ */ jsx56(
6841
+ return /* @__PURE__ */ jsx57(
6644
6842
  "tr",
6645
6843
  {
6646
6844
  "data-slot": "table-row",
@@ -6653,7 +6851,7 @@ function TableRow({ className, ...props }) {
6653
6851
  );
6654
6852
  }
6655
6853
  function TableHead({ className, ...props }) {
6656
- return /* @__PURE__ */ jsx56(
6854
+ return /* @__PURE__ */ jsx57(
6657
6855
  "th",
6658
6856
  {
6659
6857
  "data-slot": "table-head",
@@ -6666,7 +6864,7 @@ function TableHead({ className, ...props }) {
6666
6864
  );
6667
6865
  }
6668
6866
  function TableCell({ className, ...props }) {
6669
- return /* @__PURE__ */ jsx56(
6867
+ return /* @__PURE__ */ jsx57(
6670
6868
  "td",
6671
6869
  {
6672
6870
  "data-slot": "table-cell",
@@ -6682,7 +6880,7 @@ function TableCaption({
6682
6880
  className,
6683
6881
  ...props
6684
6882
  }) {
6685
- return /* @__PURE__ */ jsx56(
6883
+ return /* @__PURE__ */ jsx57(
6686
6884
  "caption",
6687
6885
  {
6688
6886
  "data-slot": "table-caption",
@@ -6694,19 +6892,19 @@ function TableCaption({
6694
6892
 
6695
6893
  // src/components/ui/tabs.tsx
6696
6894
  import * as TabsPrimitive from "@radix-ui/react-tabs";
6697
- import { cva as cva13 } from "class-variance-authority";
6698
- import * as React54 from "react";
6699
- import { jsx as jsx57, jsxs as jsxs32 } from "react/jsx-runtime";
6700
- 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({
6701
6899
  orientation: "horizontal"
6702
6900
  });
6703
6901
  function useTabIndicator(listRef, orientation) {
6704
- const [style, setStyle] = React54.useState({
6902
+ const [style, setStyle] = React55.useState({
6705
6903
  position: "absolute",
6706
6904
  opacity: 0
6707
6905
  });
6708
- const isFirstMeasurement = React54.useRef(true);
6709
- const measure = React54.useCallback(() => {
6906
+ const isFirstMeasurement = React55.useRef(true);
6907
+ const measure = React55.useCallback(() => {
6710
6908
  const list = listRef.current;
6711
6909
  if (!list) return;
6712
6910
  requestAnimationFrame(() => {
@@ -6745,7 +6943,7 @@ function useTabIndicator(listRef, orientation) {
6745
6943
  }
6746
6944
  });
6747
6945
  }, [listRef, orientation]);
6748
- React54.useEffect(() => {
6946
+ React55.useEffect(() => {
6749
6947
  const list = listRef.current;
6750
6948
  if (!list) return;
6751
6949
  measure();
@@ -6774,11 +6972,11 @@ function Tabs({
6774
6972
  orientation = "horizontal",
6775
6973
  ...props
6776
6974
  }) {
6777
- const ctx = React54.useMemo(
6975
+ const ctx = React55.useMemo(
6778
6976
  () => ({ orientation: orientation ?? "horizontal" }),
6779
6977
  [orientation]
6780
6978
  );
6781
- return /* @__PURE__ */ jsx57(TabsContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx57(
6979
+ return /* @__PURE__ */ jsx58(TabsContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx58(
6782
6980
  TabsPrimitive.Root,
6783
6981
  {
6784
6982
  "data-slot": "tabs",
@@ -6795,10 +6993,10 @@ function TabsList({
6795
6993
  className,
6796
6994
  ...props
6797
6995
  }) {
6798
- const listRef = React54.useRef(null);
6799
- const { orientation } = React54.useContext(TabsContext);
6996
+ const listRef = React55.useRef(null);
6997
+ const { orientation } = React55.useContext(TabsContext);
6800
6998
  const { style: indicatorStyle } = useTabIndicator(listRef, orientation);
6801
- return /* @__PURE__ */ jsxs32(
6999
+ return /* @__PURE__ */ jsxs33(
6802
7000
  TabsPrimitive.List,
6803
7001
  {
6804
7002
  ref: listRef,
@@ -6811,12 +7009,12 @@ function TabsList({
6811
7009
  ...props,
6812
7010
  children: [
6813
7011
  props.children,
6814
- /* @__PURE__ */ jsx57("span", { "data-slot": "tabs-indicator", style: indicatorStyle })
7012
+ /* @__PURE__ */ jsx58("span", { "data-slot": "tabs-indicator", style: indicatorStyle })
6815
7013
  ]
6816
7014
  }
6817
7015
  );
6818
7016
  }
6819
- var tabsTriggerVariants = cva13(
7017
+ var tabsTriggerVariants = cva14(
6820
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",
6821
7019
  {
6822
7020
  variants: {
@@ -6845,14 +7043,14 @@ function TabsTrigger({
6845
7043
  children,
6846
7044
  ...props
6847
7045
  }) {
6848
- const { orientation } = React54.useContext(TabsContext);
6849
- return /* @__PURE__ */ jsx57(
7046
+ const { orientation } = React55.useContext(TabsContext);
7047
+ return /* @__PURE__ */ jsx58(
6850
7048
  TabsPrimitive.Trigger,
6851
7049
  {
6852
7050
  "data-slot": "tabs-trigger",
6853
7051
  className: cn(tabsTriggerVariants({ size, orientation }), className),
6854
7052
  ...props,
6855
- children: /* @__PURE__ */ jsx57(
7053
+ children: /* @__PURE__ */ jsx58(
6856
7054
  "span",
6857
7055
  {
6858
7056
  className: cn(
@@ -6869,7 +7067,7 @@ function TabsContent({
6869
7067
  className,
6870
7068
  ...props
6871
7069
  }) {
6872
- return /* @__PURE__ */ jsx57(
7070
+ return /* @__PURE__ */ jsx58(
6873
7071
  TabsPrimitive.Content,
6874
7072
  {
6875
7073
  "data-slot": "tabs-content",
@@ -6883,9 +7081,9 @@ function TabsContent({
6883
7081
  import {
6884
7082
  ThemeProvider as NextThemesProvider
6885
7083
  } from "next-themes";
6886
- import { jsx as jsx58 } from "react/jsx-runtime";
7084
+ import { jsx as jsx59 } from "react/jsx-runtime";
6887
7085
  function ThemeProvider({ children, ...props }) {
6888
- return /* @__PURE__ */ jsx58(
7086
+ return /* @__PURE__ */ jsx59(
6889
7087
  NextThemesProvider,
6890
7088
  {
6891
7089
  attribute: "class",
@@ -6902,29 +7100,29 @@ function ThemeProvider({ children, ...props }) {
6902
7100
  import { Monitor, Moon, Sun } from "lucide-react";
6903
7101
  import { useTheme as useTheme2 } from "next-themes";
6904
7102
  import "react";
6905
- import { jsx as jsx59, jsxs as jsxs33 } from "react/jsx-runtime";
7103
+ import { jsx as jsx60, jsxs as jsxs34 } from "react/jsx-runtime";
6906
7104
  function ThemeToggle({
6907
7105
  className,
6908
7106
  ...props
6909
7107
  }) {
6910
7108
  const { setTheme } = useTheme2();
6911
- return /* @__PURE__ */ jsxs33(DropdownMenu, { children: [
6912
- /* @__PURE__ */ jsx59(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs33(Button, { variant: "outline", size: "icon", className, ...props, children: [
6913
- /* @__PURE__ */ jsx59(Sun, { className: "size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
6914
- /* @__PURE__ */ jsx59(Moon, { className: "absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" }),
6915
- /* @__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" })
6916
7114
  ] }) }),
6917
- /* @__PURE__ */ jsxs33(DropdownMenuContent, { align: "end", children: [
6918
- /* @__PURE__ */ jsxs33(DropdownMenuItem, { onClick: () => setTheme("light"), children: [
6919
- /* @__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" }),
6920
7118
  "Light"
6921
7119
  ] }),
6922
- /* @__PURE__ */ jsxs33(DropdownMenuItem, { onClick: () => setTheme("dark"), children: [
6923
- /* @__PURE__ */ jsx59(Moon, { className: "size-4" }),
7120
+ /* @__PURE__ */ jsxs34(DropdownMenuItem, { onClick: () => setTheme("dark"), children: [
7121
+ /* @__PURE__ */ jsx60(Moon, { className: "size-4" }),
6924
7122
  "Dark"
6925
7123
  ] }),
6926
- /* @__PURE__ */ jsxs33(DropdownMenuItem, { onClick: () => setTheme("system"), children: [
6927
- /* @__PURE__ */ jsx59(Monitor, { className: "size-4" }),
7124
+ /* @__PURE__ */ jsxs34(DropdownMenuItem, { onClick: () => setTheme("system"), children: [
7125
+ /* @__PURE__ */ jsx60(Monitor, { className: "size-4" }),
6928
7126
  "System"
6929
7127
  ] })
6930
7128
  ] })
@@ -6934,8 +7132,8 @@ function ThemeToggle({
6934
7132
  // src/components/ui/time-input.tsx
6935
7133
  import "class-variance-authority";
6936
7134
  import { Clock } from "lucide-react";
6937
- import * as React56 from "react";
6938
- 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";
6939
7137
  var TIME_FORMAT_PLACEHOLDER = {
6940
7138
  "12h": "hh:mm AM/PM",
6941
7139
  "24h": "HH:mm",
@@ -6988,16 +7186,16 @@ function TimeInput({
6988
7186
  formatDisplay
6989
7187
  }) {
6990
7188
  const resolvedPlaceholder = placeholder ?? TIME_FORMAT_PLACEHOLDER[timeFormat];
6991
- const displayValue = React56.useMemo(() => {
7189
+ const displayValue = React57.useMemo(() => {
6992
7190
  if (!time) return "";
6993
7191
  if (formatDisplay) return formatDisplay(time);
6994
7192
  return formatTime(time, timeFormat);
6995
7193
  }, [time, formatDisplay, timeFormat]);
6996
- const [open, setOpen] = React56.useState(false);
6997
- const hoursRef = React56.useRef(null);
6998
- const minutesRef = React56.useRef(null);
6999
- const periodRef = React56.useRef(null);
7000
- 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(() => {
7001
7199
  requestAnimationFrame(() => {
7002
7200
  for (const ref of [hoursRef, minutesRef, periodRef]) {
7003
7201
  const container = ref.current;
@@ -7009,7 +7207,7 @@ function TimeInput({
7009
7207
  }
7010
7208
  });
7011
7209
  }, []);
7012
- React56.useEffect(() => {
7210
+ React57.useEffect(() => {
7013
7211
  if (open) {
7014
7212
  scrollToSelected();
7015
7213
  }
@@ -7045,8 +7243,8 @@ function TimeInput({
7045
7243
  const selectedH12 = time ? getDisplayHour(time.hours, timeFormat) : null;
7046
7244
  const selectedMinute = time?.minutes ?? null;
7047
7245
  const selectedPeriod = time ? getPeriod(time.hours) : null;
7048
- return /* @__PURE__ */ jsx60("div", { className: cn("relative flex gap-2", className), children: /* @__PURE__ */ jsxs34(Popover, { open, onOpenChange: setOpen, children: [
7049
- /* @__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(
7050
7248
  Button,
7051
7249
  {
7052
7250
  type: "button",
@@ -7061,18 +7259,18 @@ function TimeInput({
7061
7259
  disabled: inputDisabled,
7062
7260
  children: [
7063
7261
  displayValue || resolvedPlaceholder,
7064
- 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" })
7065
7263
  ]
7066
7264
  }
7067
7265
  ) }),
7068
- /* @__PURE__ */ jsx60(
7266
+ /* @__PURE__ */ jsx61(
7069
7267
  PopoverContent,
7070
7268
  {
7071
7269
  className: cn("w-auto p-0", popoverContentClassName),
7072
7270
  onOpenAutoFocus: (e) => e.preventDefault(),
7073
7271
  ...popoverContentProps,
7074
- children: /* @__PURE__ */ jsxs34("div", { className: "flex divide-x border border-focus-ring rounded-md", children: [
7075
- /* @__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(
7076
7274
  Button,
7077
7275
  {
7078
7276
  variant: "ghost",
@@ -7087,7 +7285,7 @@ function TimeInput({
7087
7285
  },
7088
7286
  h
7089
7287
  )) }) }),
7090
- /* @__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(
7091
7289
  "div",
7092
7290
  {
7093
7291
  ref: minutesRef,
@@ -7095,7 +7293,7 @@ function TimeInput({
7095
7293
  "flex flex-col p-1",
7096
7294
  minutesList.length <= 12 && "h-full justify-center"
7097
7295
  ),
7098
- children: minutesList.map((m) => /* @__PURE__ */ jsx60(
7296
+ children: minutesList.map((m) => /* @__PURE__ */ jsx61(
7099
7297
  Button,
7100
7298
  {
7101
7299
  variant: "ghost",
@@ -7112,7 +7310,7 @@ function TimeInput({
7112
7310
  ))
7113
7311
  }
7114
7312
  ) }),
7115
- !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(
7116
7314
  Button,
7117
7315
  {
7118
7316
  variant: "ghost",
@@ -7136,9 +7334,9 @@ function TimeInput({
7136
7334
  // src/components/ui/toggle.tsx
7137
7335
  import "react";
7138
7336
  import * as TogglePrimitive from "@radix-ui/react-toggle";
7139
- import { cva as cva14 } from "class-variance-authority";
7140
- import { jsx as jsx61 } from "react/jsx-runtime";
7141
- 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(
7142
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",
7143
7341
  {
7144
7342
  variants: {
@@ -7164,7 +7362,7 @@ function Toggle({
7164
7362
  size,
7165
7363
  ...props
7166
7364
  }) {
7167
- return /* @__PURE__ */ jsx61(
7365
+ return /* @__PURE__ */ jsx62(
7168
7366
  TogglePrimitive.Root,
7169
7367
  {
7170
7368
  "data-slot": "toggle",
@@ -7175,11 +7373,11 @@ function Toggle({
7175
7373
  }
7176
7374
 
7177
7375
  // src/components/ui/toggle-group.tsx
7178
- import * as React58 from "react";
7376
+ import * as React59 from "react";
7179
7377
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
7180
7378
  import "class-variance-authority";
7181
- import { jsx as jsx62 } from "react/jsx-runtime";
7182
- var ToggleGroupContext = React58.createContext({
7379
+ import { jsx as jsx63 } from "react/jsx-runtime";
7380
+ var ToggleGroupContext = React59.createContext({
7183
7381
  size: "default",
7184
7382
  variant: "default"
7185
7383
  });
@@ -7190,7 +7388,7 @@ function ToggleGroup({
7190
7388
  children,
7191
7389
  ...props
7192
7390
  }) {
7193
- return /* @__PURE__ */ jsx62(
7391
+ return /* @__PURE__ */ jsx63(
7194
7392
  ToggleGroupPrimitive.Root,
7195
7393
  {
7196
7394
  "data-slot": "toggle-group",
@@ -7201,7 +7399,7 @@ function ToggleGroup({
7201
7399
  className
7202
7400
  ),
7203
7401
  ...props,
7204
- children: /* @__PURE__ */ jsx62(ToggleGroupContext.Provider, { value: { variant, size }, children })
7402
+ children: /* @__PURE__ */ jsx63(ToggleGroupContext.Provider, { value: { variant, size }, children })
7205
7403
  }
7206
7404
  );
7207
7405
  }
@@ -7212,8 +7410,8 @@ function ToggleGroupItem({
7212
7410
  size,
7213
7411
  ...props
7214
7412
  }) {
7215
- const context = React58.useContext(ToggleGroupContext);
7216
- return /* @__PURE__ */ jsx62(
7413
+ const context = React59.useContext(ToggleGroupContext);
7414
+ return /* @__PURE__ */ jsx63(
7217
7415
  ToggleGroupPrimitive.Item,
7218
7416
  {
7219
7417
  "data-slot": "toggle-group-item",
@@ -7235,10 +7433,10 @@ function ToggleGroupItem({
7235
7433
 
7236
7434
  // src/components/ui/typography.tsx
7237
7435
  import { Slot as Slot7 } from "@radix-ui/react-slot";
7238
- import { cva as cva15 } from "class-variance-authority";
7436
+ import { cva as cva16 } from "class-variance-authority";
7239
7437
  import "react";
7240
- import { jsx as jsx63 } from "react/jsx-runtime";
7241
- var displayTextVariants = cva15(
7438
+ import { jsx as jsx64 } from "react/jsx-runtime";
7439
+ var displayTextVariants = cva16(
7242
7440
  "tracking-normal font-normal font-serif italic text-vibrant-text-display",
7243
7441
  {
7244
7442
  variants: {
@@ -7260,7 +7458,7 @@ function DisplayHeading({
7260
7458
  ...props
7261
7459
  }) {
7262
7460
  const Comp = asChild ? Slot7 : "h1";
7263
- return /* @__PURE__ */ jsx63(
7461
+ return /* @__PURE__ */ jsx64(
7264
7462
  Comp,
7265
7463
  {
7266
7464
  "data-slot": "h1",
@@ -7269,7 +7467,7 @@ function DisplayHeading({
7269
7467
  }
7270
7468
  );
7271
7469
  }
7272
- var bodyTextVariants = cva15("font-sans text-vibrant-text-body", {
7470
+ var bodyTextVariants = cva16("font-sans text-vibrant-text-body", {
7273
7471
  variants: {
7274
7472
  size: {
7275
7473
  lg: "text-lg md:text-xl leading-[26px] md:leading-[28px]",
@@ -7289,7 +7487,7 @@ function Body({
7289
7487
  ...props
7290
7488
  }) {
7291
7489
  const Comp = asChild ? Slot7 : "p";
7292
- return /* @__PURE__ */ jsx63(
7490
+ return /* @__PURE__ */ jsx64(
7293
7491
  Comp,
7294
7492
  {
7295
7493
  "data-slot": "p",
@@ -7304,7 +7502,7 @@ function HeadingXL({
7304
7502
  ...props
7305
7503
  }) {
7306
7504
  const Comp = asChild ? Slot7 : "h1";
7307
- return /* @__PURE__ */ jsx63(
7505
+ return /* @__PURE__ */ jsx64(
7308
7506
  Comp,
7309
7507
  {
7310
7508
  "data-slot": "h1",
@@ -7322,7 +7520,7 @@ function HeadingL({
7322
7520
  ...props
7323
7521
  }) {
7324
7522
  const Comp = asChild ? Slot7 : "h2";
7325
- return /* @__PURE__ */ jsx63(
7523
+ return /* @__PURE__ */ jsx64(
7326
7524
  Comp,
7327
7525
  {
7328
7526
  "data-slot": "h2",
@@ -7340,7 +7538,7 @@ function HeadingM({
7340
7538
  ...props
7341
7539
  }) {
7342
7540
  const Comp = asChild ? Slot7 : "h3";
7343
- return /* @__PURE__ */ jsx63(
7541
+ return /* @__PURE__ */ jsx64(
7344
7542
  Comp,
7345
7543
  {
7346
7544
  "data-slot": "h3",
@@ -7358,7 +7556,7 @@ function HeadingS({
7358
7556
  ...props
7359
7557
  }) {
7360
7558
  const Comp = asChild ? Slot7 : "h4";
7361
- return /* @__PURE__ */ jsx63(
7559
+ return /* @__PURE__ */ jsx64(
7362
7560
  Comp,
7363
7561
  {
7364
7562
  "data-slot": "h4",
@@ -7376,7 +7574,7 @@ function HeadingXS({
7376
7574
  ...props
7377
7575
  }) {
7378
7576
  const Comp = asChild ? Slot7 : "h5";
7379
- return /* @__PURE__ */ jsx63(
7577
+ return /* @__PURE__ */ jsx64(
7380
7578
  Comp,
7381
7579
  {
7382
7580
  "data-slot": "h5",
@@ -7394,7 +7592,7 @@ function HeadingXXS({
7394
7592
  ...props
7395
7593
  }) {
7396
7594
  const Comp = asChild ? Slot7 : "h6";
7397
- return /* @__PURE__ */ jsx63(
7595
+ return /* @__PURE__ */ jsx64(
7398
7596
  Comp,
7399
7597
  {
7400
7598
  "data-slot": "h6",
@@ -7412,7 +7610,7 @@ function HeadingXLMedium({
7412
7610
  ...props
7413
7611
  }) {
7414
7612
  const Comp = asChild ? Slot7 : "h1";
7415
- return /* @__PURE__ */ jsx63(
7613
+ return /* @__PURE__ */ jsx64(
7416
7614
  Comp,
7417
7615
  {
7418
7616
  "data-slot": "h1",
@@ -7430,7 +7628,7 @@ function HeadingLMedium({
7430
7628
  ...props
7431
7629
  }) {
7432
7630
  const Comp = asChild ? Slot7 : "h2";
7433
- return /* @__PURE__ */ jsx63(
7631
+ return /* @__PURE__ */ jsx64(
7434
7632
  Comp,
7435
7633
  {
7436
7634
  "data-slot": "h2",
@@ -7448,7 +7646,7 @@ function HeadingMMedium({
7448
7646
  ...props
7449
7647
  }) {
7450
7648
  const Comp = asChild ? Slot7 : "h3";
7451
- return /* @__PURE__ */ jsx63(
7649
+ return /* @__PURE__ */ jsx64(
7452
7650
  Comp,
7453
7651
  {
7454
7652
  "data-slot": "h3",
@@ -7466,7 +7664,7 @@ function HeadingSMedium({
7466
7664
  ...props
7467
7665
  }) {
7468
7666
  const Comp = asChild ? Slot7 : "h4";
7469
- return /* @__PURE__ */ jsx63(
7667
+ return /* @__PURE__ */ jsx64(
7470
7668
  Comp,
7471
7669
  {
7472
7670
  "data-slot": "h4",
@@ -7484,7 +7682,7 @@ function HeadingXSMedium({
7484
7682
  ...props
7485
7683
  }) {
7486
7684
  const Comp = asChild ? Slot7 : "h5";
7487
- return /* @__PURE__ */ jsx63(
7685
+ return /* @__PURE__ */ jsx64(
7488
7686
  Comp,
7489
7687
  {
7490
7688
  "data-slot": "h5",
@@ -7502,7 +7700,7 @@ function HeadingXXSMedium({
7502
7700
  ...props
7503
7701
  }) {
7504
7702
  const Comp = asChild ? Slot7 : "h6";
7505
- return /* @__PURE__ */ jsx63(
7703
+ return /* @__PURE__ */ jsx64(
7506
7704
  Comp,
7507
7705
  {
7508
7706
  "data-slot": "h6",
@@ -7701,6 +7899,7 @@ export {
7701
7899
  NavigationMenuList,
7702
7900
  NavigationMenuTrigger,
7703
7901
  NavigationMenuViewport,
7902
+ OptionCard,
7704
7903
  Pagination,
7705
7904
  PaginationContent,
7706
7905
  PaginationEllipsis,
@@ -7818,8 +8017,10 @@ export {
7818
8017
  inputVariants,
7819
8018
  labelTextVariants,
7820
8019
  navigationMenuTriggerStyle,
8020
+ optionCardVariants,
7821
8021
  progressBarVariants,
7822
8022
  tabsTriggerVariants,
8023
+ toast,
7823
8024
  toggleVariants,
7824
8025
  useFormField,
7825
8026
  useIsMobile,