@codapet/design-system 0.7.0 → 0.7.2

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