@bubo-squared/ui-framework 0.2.13 → 0.2.15

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.cjs CHANGED
@@ -30,23 +30,34 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.ts
31
31
  var index_exports = {};
32
32
  __export(index_exports, {
33
+ Accordion: () => Accordion,
34
+ Autocomplete: () => Autocomplete,
33
35
  Avatar: () => Avatar,
34
36
  Badge: () => Badge,
35
37
  BadgeDigit: () => BadgeDigit,
36
38
  BadgeDot: () => BadgeDot,
37
39
  BadgeStatus: () => BadgeStatus,
38
- Breadcrumb: () => Breadcrumb,
40
+ Breadcrumbs: () => Breadcrumbs,
39
41
  Button: () => Button,
40
42
  ButtonGroup: () => ButtonGroup,
41
43
  Checkbox: () => Checkbox,
42
44
  Divider: () => Divider,
43
- Dropdown: () => Dropdown,
44
45
  Field: () => Field,
45
46
  IconButton: () => IconButton,
46
47
  IconButtonGroup: () => IconButtonGroup,
47
48
  LinkButton: () => LinkButton,
48
49
  Logo: () => Logo,
49
50
  LogoIcon: () => LogoIcon,
51
+ Menu: () => Menu,
52
+ MenuGroup: () => MenuGroup,
53
+ MenuItem: () => MenuItem,
54
+ MenuLabel: () => MenuLabel,
55
+ MenuPortal: () => MenuPortal,
56
+ MenuSeparator: () => MenuSeparator,
57
+ MenuShortcut: () => MenuShortcut,
58
+ MenuSub: () => MenuSub,
59
+ MenuSubContent: () => MenuSubContent,
60
+ MenuSubTrigger: () => MenuSubTrigger,
50
61
  MessageButton: () => MessageButton,
51
62
  PasswordInput: () => PasswordInput,
52
63
  PhoneInput: () => PhoneInput,
@@ -54,12 +65,15 @@ __export(index_exports, {
54
65
  Progress: () => Progress,
55
66
  RadioGroup: () => RadioGroup,
56
67
  SearchInput: () => SearchInput,
68
+ Select: () => Select,
57
69
  Slider: () => Slider,
58
70
  StatusAvatar: () => StatusAvatar,
59
71
  Tag: () => Tag,
60
72
  TextArea: () => TextArea,
61
73
  TextInput: () => TextInput,
62
74
  Toggle: () => Toggle,
75
+ Tooltip: () => Tooltip,
76
+ TooltipProvider: () => TooltipProvider,
63
77
  Typography: () => Typography,
64
78
  WebsiteInput: () => WebsiteInput,
65
79
  cn: () => cn
@@ -444,12 +458,77 @@ var MessageButton = (props) => {
444
458
  };
445
459
  MessageButton.displayName = "MessageButton";
446
460
 
447
- // src/components/Content/Avatar.tsx
461
+ // src/components/Content/Accordion.tsx
448
462
  var React6 = __toESM(require("react"), 1);
449
- var import_react_slot4 = require("@radix-ui/react-slot");
450
- var import_class_variance_authority6 = require("class-variance-authority");
463
+ var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion"), 1);
451
464
  var import_icons = require("@bubo-squared/icons");
452
465
  var import_jsx_runtime8 = require("react/jsx-runtime");
466
+ var Accordion = React6.forwardRef(
467
+ (props, ref) => {
468
+ const {
469
+ title,
470
+ expandIcon,
471
+ children,
472
+ className,
473
+ defaultOpen = false,
474
+ bordered = false,
475
+ ...rootProps
476
+ } = props;
477
+ const {
478
+ value,
479
+ defaultValue,
480
+ onValueChange,
481
+ ...restRootProps
482
+ } = rootProps;
483
+ const resolvedDefaultValue = value === void 0 && defaultValue === void 0 && defaultOpen ? "item" : defaultValue;
484
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
485
+ AccordionPrimitive.Root,
486
+ {
487
+ ref,
488
+ type: "single",
489
+ collapsible: true,
490
+ className: cn("w-full", className),
491
+ value,
492
+ defaultValue: resolvedDefaultValue,
493
+ onValueChange,
494
+ ...restRootProps,
495
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
496
+ AccordionPrimitive.Item,
497
+ {
498
+ value: "item",
499
+ className: cn(bordered ? "border rounded-4" : "border-b", "border-(--border-secondary) px-4"),
500
+ children: [
501
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
502
+ AccordionPrimitive.Trigger,
503
+ {
504
+ className: cn(
505
+ "flex w-full items-center justify-between gap-2 py-3 text-left",
506
+ "paragraph-md text-primary",
507
+ "[&[data-state=open]_.accordion-icon]:rotate-180",
508
+ "disabled:cursor-not-allowed disabled:text-primary-disabled cursor-pointer"
509
+ ),
510
+ children: [
511
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "flex-1", children: title }),
512
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "accordion-icon inline-flex shrink-0 transition-transform duration-200 [&>svg]:size-5", children: expandIcon ?? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons.ChevronDownIcon, {}) })
513
+ ]
514
+ }
515
+ ) }),
516
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(AccordionPrimitive.Content, { className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "pb-3", children }) })
517
+ ]
518
+ }
519
+ )
520
+ }
521
+ );
522
+ }
523
+ );
524
+ Accordion.displayName = "Accordion";
525
+
526
+ // src/components/Content/Avatar.tsx
527
+ var React7 = __toESM(require("react"), 1);
528
+ var import_react_slot4 = require("@radix-ui/react-slot");
529
+ var import_class_variance_authority6 = require("class-variance-authority");
530
+ var import_icons2 = require("@bubo-squared/icons");
531
+ var import_jsx_runtime9 = require("react/jsx-runtime");
453
532
  var avatarVariants = (0, import_class_variance_authority6.cva)(
454
533
  "relative inline-flex items-center justify-center rounded-full border-(--border-secondary) border-1 bg-(--background-primary) text-primary overflow-hidden hover:border-(--focus-secondary) focus-visible:border-(--focus-primary) focus-visible:outline-none",
455
534
  {
@@ -507,7 +586,7 @@ var avatarIconVariants = (0, import_class_variance_authority6.cva)(
507
586
  }
508
587
  }
509
588
  );
510
- var Avatar = React6.forwardRef(
589
+ var Avatar = React7.forwardRef(
511
590
  (props, ref) => {
512
591
  const {
513
592
  asChild = false,
@@ -521,14 +600,14 @@ var Avatar = React6.forwardRef(
521
600
  } = props;
522
601
  const Comp = asChild ? import_react_slot4.Slot : "button";
523
602
  const hasImage = variant === "image" && typeof src === "string" && src.length > 0;
524
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
603
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
525
604
  Comp,
526
605
  {
527
606
  ref,
528
607
  className: cn(avatarVariants({ size }), className),
529
608
  ...rest,
530
609
  children: [
531
- hasImage ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
610
+ hasImage ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
532
611
  "img",
533
612
  {
534
613
  src,
@@ -536,8 +615,8 @@ var Avatar = React6.forwardRef(
536
615
  className: "w-full h-full object-cover"
537
616
  }
538
617
  ) : null,
539
- !hasImage && variant === "initial" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: cn(avatarInitialsVariants({ size }), "relative bottom-px"), children: initials }),
540
- !hasImage && variant === "icon" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: cn(avatarIconVariants({ size })), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons.UserIcon, {}) })
618
+ !hasImage && variant === "initial" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: cn(avatarInitialsVariants({ size }), "relative bottom-px"), children: initials }),
619
+ !hasImage && variant === "icon" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: cn(avatarIconVariants({ size })), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_icons2.UserIcon, {}) })
541
620
  ]
542
621
  }
543
622
  );
@@ -546,8 +625,8 @@ var Avatar = React6.forwardRef(
546
625
  Avatar.displayName = "Avatar";
547
626
 
548
627
  // src/components/Content/Typography.tsx
549
- var React7 = require("react");
550
- var import_jsx_runtime9 = require("react/jsx-runtime");
628
+ var React8 = require("react");
629
+ var import_jsx_runtime10 = require("react/jsx-runtime");
551
630
  var mbCapableBaseClasses = /* @__PURE__ */ new Set([
552
631
  "h1-intro",
553
632
  "h2-intro",
@@ -583,10 +662,10 @@ var Typography = (props) => {
583
662
  const Comp = as ?? "span";
584
663
  const mbClassName = useMargin ? getMbClassName(variant) : null;
585
664
  const weightClassName = weight === "regular" ? null : `${variant}-${weight}`;
586
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
665
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
587
666
  Comp,
588
667
  {
589
- className: cn(variant, weightClassName, mbClassName, className),
668
+ className: cn("text-primary", variant, weightClassName, mbClassName, className),
590
669
  ...rest,
591
670
  children
592
671
  }
@@ -595,10 +674,10 @@ var Typography = (props) => {
595
674
  Typography.displayName = "Typography";
596
675
 
597
676
  // src/components/Content/Badge.tsx
598
- var React8 = __toESM(require("react"), 1);
677
+ var React9 = __toESM(require("react"), 1);
599
678
  var import_react_slot5 = require("@radix-ui/react-slot");
600
679
  var import_class_variance_authority7 = require("class-variance-authority");
601
- var import_jsx_runtime10 = require("react/jsx-runtime");
680
+ var import_jsx_runtime11 = require("react/jsx-runtime");
602
681
  var badgeVariants = (0, import_class_variance_authority7.cva)(
603
682
  "inline-flex items-center justify-center rounded-4 leading-none whitespace-nowrap gap-1 px-1 py-0",
604
683
  {
@@ -628,7 +707,7 @@ var badgeVariants = (0, import_class_variance_authority7.cva)(
628
707
  }
629
708
  }
630
709
  );
631
- var Badge = React8.forwardRef(
710
+ var Badge = React9.forwardRef(
632
711
  (props, ref) => {
633
712
  const {
634
713
  asChild = false,
@@ -640,17 +719,17 @@ var Badge = React8.forwardRef(
640
719
  ...rest
641
720
  } = props;
642
721
  const Comp = asChild ? import_react_slot5.Slot : "div";
643
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
722
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
644
723
  Comp,
645
724
  {
646
725
  ref,
647
726
  className: cn(badgeVariants({ size, variant }), className),
648
727
  ...rest,
649
- children: value ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
650
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "font-normal", children: label }),
651
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "font-normal", children: ":" }),
652
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "font-medium", children: value })
653
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "font-normal", children: label })
728
+ children: value ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
729
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "font-normal", children: label }),
730
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "font-normal", children: ":" }),
731
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "font-medium", children: value })
732
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "font-normal", children: label })
654
733
  }
655
734
  );
656
735
  }
@@ -658,9 +737,9 @@ var Badge = React8.forwardRef(
658
737
  Badge.displayName = "Badge";
659
738
 
660
739
  // src/components/Content/BadgeDigit.tsx
661
- var React9 = __toESM(require("react"), 1);
740
+ var React10 = __toESM(require("react"), 1);
662
741
  var import_class_variance_authority8 = require("class-variance-authority");
663
- var import_jsx_runtime11 = require("react/jsx-runtime");
742
+ var import_jsx_runtime12 = require("react/jsx-runtime");
664
743
  var badgeDigitVariants = (0, import_class_variance_authority8.cva)(
665
744
  "inline-flex items-center justify-center leading-none whitespace-nowrap text-(--color-b-white)",
666
745
  {
@@ -685,7 +764,7 @@ var badgeDigitVariants = (0, import_class_variance_authority8.cva)(
685
764
  }
686
765
  }
687
766
  );
688
- var BadgeDigit = React9.forwardRef(
767
+ var BadgeDigit = React10.forwardRef(
689
768
  (props, ref) => {
690
769
  const {
691
770
  value,
@@ -694,7 +773,7 @@ var BadgeDigit = React9.forwardRef(
694
773
  className,
695
774
  ...rest
696
775
  } = props;
697
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
776
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
698
777
  "div",
699
778
  {
700
779
  ref,
@@ -708,9 +787,9 @@ var BadgeDigit = React9.forwardRef(
708
787
  BadgeDigit.displayName = "BadgeDigit";
709
788
 
710
789
  // src/components/Content/BadgeDot.tsx
711
- var React10 = require("react");
790
+ var React11 = require("react");
712
791
  var import_class_variance_authority9 = require("class-variance-authority");
713
- var import_jsx_runtime12 = require("react/jsx-runtime");
792
+ var import_jsx_runtime13 = require("react/jsx-runtime");
714
793
  var badgeDotVariants = (0, import_class_variance_authority9.cva)("rounded-12 size-3", {
715
794
  variants: {
716
795
  status: {
@@ -726,14 +805,14 @@ var badgeDotVariants = (0, import_class_variance_authority9.cva)("rounded-12 siz
726
805
  }
727
806
  });
728
807
  var BadgeDot = ({ status, className }) => {
729
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: cn(badgeDotVariants({ status }), className) });
808
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: cn(badgeDotVariants({ status }), className) });
730
809
  };
731
810
  BadgeDot.displayName = "BadgeDot";
732
811
 
733
812
  // src/components/Content/BadgeStatus.tsx
734
- var React11 = __toESM(require("react"), 1);
735
- var import_jsx_runtime13 = require("react/jsx-runtime");
736
- var BadgeStatus = React11.forwardRef(
813
+ var React12 = __toESM(require("react"), 1);
814
+ var import_jsx_runtime14 = require("react/jsx-runtime");
815
+ var BadgeStatus = React12.forwardRef(
737
816
  (props, ref) => {
738
817
  const {
739
818
  label,
@@ -744,14 +823,14 @@ var BadgeStatus = React11.forwardRef(
744
823
  } = props;
745
824
  const textClasses = active ? "caption-medium text-primary" : "caption-medium text-primary-disabled";
746
825
  const dotClasses = active ? "bg-(--background-informal)" : "bg-(--background-primary)";
747
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
826
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
748
827
  "div",
749
828
  {
750
829
  ref,
751
830
  className: cn("inline-flex items-center gap-2", className),
752
831
  ...rest,
753
832
  children: [
754
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
833
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
755
834
  "span",
756
835
  {
757
836
  className: cn(
@@ -761,7 +840,7 @@ var BadgeStatus = React11.forwardRef(
761
840
  )
762
841
  }
763
842
  ),
764
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: textClasses, children: label })
843
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: textClasses, children: label })
765
844
  ]
766
845
  }
767
846
  );
@@ -770,9 +849,9 @@ var BadgeStatus = React11.forwardRef(
770
849
  BadgeStatus.displayName = "BadgeStatus";
771
850
 
772
851
  // src/components/Content/Divider.tsx
773
- var React12 = require("react");
774
- var import_icons2 = require("@bubo-squared/icons");
775
- var import_jsx_runtime14 = require("react/jsx-runtime");
852
+ var React13 = require("react");
853
+ var import_icons3 = require("@bubo-squared/icons");
854
+ var import_jsx_runtime15 = require("react/jsx-runtime");
776
855
  var gapBySize = {
777
856
  sm: "gap-2",
778
857
  md: "gap-3",
@@ -807,14 +886,14 @@ var Divider = (props) => {
807
886
  className: _className,
808
887
  ...divProps
809
888
  } = props;
810
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
889
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
811
890
  "div",
812
891
  {
813
892
  className: wrapperClass,
814
893
  role: "separator",
815
894
  "aria-orientation": ariaOrientation,
816
895
  ...divProps,
817
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: lineClass })
896
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: lineClass })
818
897
  }
819
898
  );
820
899
  }
@@ -828,7 +907,7 @@ var Divider = (props) => {
828
907
  ...divProps
829
908
  } = props;
830
909
  const textLabel = label ? label : "OR";
831
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
910
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
832
911
  "div",
833
912
  {
834
913
  className: wrapperClass,
@@ -836,8 +915,8 @@ var Divider = (props) => {
836
915
  "aria-orientation": ariaOrientation,
837
916
  ...divProps,
838
917
  children: [
839
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: lineClass }),
840
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
918
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: lineClass }),
919
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
841
920
  "span",
842
921
  {
843
922
  className: cn(
@@ -847,7 +926,7 @@ var Divider = (props) => {
847
926
  children: textLabel
848
927
  }
849
928
  ),
850
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: lineClass })
929
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: lineClass })
851
930
  ]
852
931
  }
853
932
  );
@@ -864,7 +943,7 @@ var Divider = (props) => {
864
943
  className: _className,
865
944
  ...divProps
866
945
  } = props;
867
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
946
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
868
947
  "div",
869
948
  {
870
949
  className: wrapperClass,
@@ -872,18 +951,18 @@ var Divider = (props) => {
872
951
  "aria-orientation": ariaOrientation,
873
952
  ...divProps,
874
953
  children: [
875
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: lineClass }),
876
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
954
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: lineClass }),
955
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
877
956
  IconButton,
878
957
  {
879
958
  variant: iconButtonVariant ?? "secondary",
880
959
  size: resolvedSize,
881
960
  "aria-label": ariaLabel ?? "More options",
882
- icon: icon ?? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_icons2.TargetIcon, {}),
961
+ icon: icon ?? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_icons3.TargetIcon, {}),
883
962
  onClick: onIconClick
884
963
  }
885
964
  ),
886
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: lineClass })
965
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: lineClass })
887
966
  ]
888
967
  }
889
968
  );
@@ -897,7 +976,7 @@ var Divider = (props) => {
897
976
  className: _className,
898
977
  ...divProps
899
978
  } = props;
900
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
979
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
901
980
  "div",
902
981
  {
903
982
  className: wrapperClass,
@@ -905,8 +984,8 @@ var Divider = (props) => {
905
984
  "aria-orientation": ariaOrientation,
906
985
  ...divProps,
907
986
  children: [
908
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: lineClass }),
909
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
987
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: lineClass }),
988
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
910
989
  IconButtonGroup,
911
990
  {
912
991
  className: resolvedOrientation === "vertical" ? "flex-col" : "flex-row",
@@ -914,7 +993,7 @@ var Divider = (props) => {
914
993
  size: resolvedSize
915
994
  }
916
995
  ),
917
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: lineClass })
996
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: lineClass })
918
997
  ]
919
998
  }
920
999
  );
@@ -930,7 +1009,7 @@ var Divider = (props) => {
930
1009
  className: _className,
931
1010
  ...divProps
932
1011
  } = props;
933
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1012
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
934
1013
  "div",
935
1014
  {
936
1015
  className: wrapperClass,
@@ -938,8 +1017,8 @@ var Divider = (props) => {
938
1017
  "aria-orientation": ariaOrientation,
939
1018
  ...divProps,
940
1019
  children: [
941
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: lineClass }),
942
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1020
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: lineClass }),
1021
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
943
1022
  Button,
944
1023
  {
945
1024
  variant: buttonVariant ?? "secondary",
@@ -948,7 +1027,7 @@ var Divider = (props) => {
948
1027
  children: buttonLabel
949
1028
  }
950
1029
  ),
951
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: lineClass })
1030
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: lineClass })
952
1031
  ]
953
1032
  }
954
1033
  );
@@ -958,11 +1037,11 @@ var Divider = (props) => {
958
1037
  Divider.displayName = "Divider";
959
1038
 
960
1039
  // src/components/Content/Progress.tsx
961
- var React14 = __toESM(require("react"), 1);
1040
+ var React15 = __toESM(require("react"), 1);
962
1041
 
963
1042
  // src/components/Inputs/Field.tsx
964
- var React13 = __toESM(require("react"), 1);
965
- var import_jsx_runtime15 = require("react/jsx-runtime");
1043
+ var React14 = __toESM(require("react"), 1);
1044
+ var import_jsx_runtime16 = require("react/jsx-runtime");
966
1045
  var fieldBase = "flex flex-col gap-2 items-start";
967
1046
  var Field = (props) => {
968
1047
  const {
@@ -975,18 +1054,18 @@ var Field = (props) => {
975
1054
  className,
976
1055
  children
977
1056
  } = props;
978
- const fieldId = React13.useId();
1057
+ const fieldId = React14.useId();
979
1058
  const labelId = label ? `${fieldId}-label` : void 0;
980
1059
  const hintId = hint ? `${fieldId}-hint` : void 0;
981
1060
  const hintColorClass = disabled ? "text-primary-disabled" : status === "success" ? "text-(--color-success)" : status === "error" ? "text-(--color-error)" : "text-(--color-secondary)";
982
1061
  const labelColorClass = disabled ? "text-primary-disabled" : "text-primary";
983
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: cn(fieldBase, className), children: [
984
- label && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex w-full items-center justify-between", children: [
985
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("label", { id: labelId, className: cn("paragraph-sm", labelColorClass), children: label }),
1062
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: cn(fieldBase, className), children: [
1063
+ label && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex w-full items-center justify-between", children: [
1064
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("label", { id: labelId, className: cn("paragraph-sm", labelColorClass), children: label }),
986
1065
  labelRight
987
1066
  ] }),
988
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "relative w-full", children }),
989
- !hideHint && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1067
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "relative w-full", children }),
1068
+ !hideHint && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
990
1069
  "p",
991
1070
  {
992
1071
  id: hint ? hintId : void 0,
@@ -999,13 +1078,13 @@ var Field = (props) => {
999
1078
  Field.displayName = "Field";
1000
1079
 
1001
1080
  // src/components/Content/Progress.tsx
1002
- var import_jsx_runtime16 = require("react/jsx-runtime");
1081
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1003
1082
  var sizeToBarClasses = {
1004
1083
  lg: "h-4 rounded-16",
1005
1084
  md: "h-2 rounded-8",
1006
1085
  sm: "h-1 rounded-4"
1007
1086
  };
1008
- var Progress = React14.forwardRef(
1087
+ var Progress = React15.forwardRef(
1009
1088
  (props, ref) => {
1010
1089
  const {
1011
1090
  value,
@@ -1022,17 +1101,17 @@ var Progress = React14.forwardRef(
1022
1101
  const clamped = Number.isFinite(value) ? Math.min(100, Math.max(0, value)) : 0;
1023
1102
  const percentageLabel = `${Math.round(clamped)}%`;
1024
1103
  const barHeightClasses = sizeToBarClasses[size];
1025
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1104
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1026
1105
  Field,
1027
1106
  {
1028
1107
  label,
1029
- labelRight: showProgressLabel && label ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "footnote text-(--color-secondary)", children: percentageLabel }) : void 0,
1108
+ labelRight: showProgressLabel && label ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "footnote text-(--color-secondary)", children: percentageLabel }) : void 0,
1030
1109
  hint,
1031
1110
  hideHint,
1032
1111
  status,
1033
1112
  disabled,
1034
1113
  className: cn("w-full", className),
1035
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1114
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1036
1115
  "div",
1037
1116
  {
1038
1117
  ref,
@@ -1042,7 +1121,7 @@ var Progress = React14.forwardRef(
1042
1121
  "aria-valuemax": 100,
1043
1122
  "aria-label": label,
1044
1123
  ...rest,
1045
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1124
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1046
1125
  "div",
1047
1126
  {
1048
1127
  className: cn(
@@ -1050,7 +1129,7 @@ var Progress = React14.forwardRef(
1050
1129
  barHeightClasses,
1051
1130
  disabled && "opacity-50"
1052
1131
  ),
1053
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1132
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1054
1133
  "div",
1055
1134
  {
1056
1135
  className: cn(
@@ -1071,10 +1150,10 @@ var Progress = React14.forwardRef(
1071
1150
  Progress.displayName = "Progress";
1072
1151
 
1073
1152
  // src/components/Content/StatusAvatar.tsx
1074
- var React15 = __toESM(require("react"), 1);
1153
+ var React16 = __toESM(require("react"), 1);
1075
1154
  var import_class_variance_authority10 = require("class-variance-authority");
1076
- var import_icons3 = require("@bubo-squared/icons");
1077
- var import_jsx_runtime17 = require("react/jsx-runtime");
1155
+ var import_icons4 = require("@bubo-squared/icons");
1156
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1078
1157
  var iconStatusVariants = (0, import_class_variance_authority10.cva)(
1079
1158
  "inline-flex size-5 items-center justify-center rounded-full border-1 border-(--color-primary-inverse) p-1",
1080
1159
  {
@@ -1099,11 +1178,11 @@ var presenceDotByVariant = {
1099
1178
  away: "bg-(--background-warning) border-1 border-(--color-primary-inverse)",
1100
1179
  busy: "bg-(--background-error) border-1 border-(--color-primary-inverse)"
1101
1180
  };
1102
- var StatusAvatar = React15.forwardRef((props, ref) => {
1181
+ var StatusAvatar = React16.forwardRef((props, ref) => {
1103
1182
  const { variant = "verified", className, ...rest } = props;
1104
1183
  if (variant === "offline" || variant === "online" || variant === "away" || variant === "busy") {
1105
1184
  const dotClasses = presenceDotByVariant[variant];
1106
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1185
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1107
1186
  "div",
1108
1187
  {
1109
1188
  ref,
@@ -1112,23 +1191,23 @@ var StatusAvatar = React15.forwardRef((props, ref) => {
1112
1191
  className
1113
1192
  ),
1114
1193
  ...rest,
1115
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: cn(dotClasses, "size-3.5 rounded-full") })
1194
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: cn(dotClasses, "size-3.5 rounded-full") })
1116
1195
  }
1117
1196
  );
1118
1197
  }
1119
1198
  const iconVariant = variant;
1120
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1199
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1121
1200
  "div",
1122
1201
  {
1123
1202
  ref,
1124
1203
  className: cn(iconStatusVariants({ variant: iconVariant }), className),
1125
1204
  ...rest,
1126
1205
  children: [
1127
- iconVariant === "verified" && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_icons3.CheckIcon, { className: "size-3 text-button-white" }),
1128
- iconVariant === "bookmark" && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_icons3.BookmarkCheckIcon, { className: "size-3 text-button-white" }),
1129
- iconVariant === "favorite" && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_icons3.StarIcon, { className: "size-3 text-button-white" }),
1130
- iconVariant === "add" && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_icons3.PlusIcon, { className: "size-3 text-button-white" }),
1131
- iconVariant === "remove" && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_icons3.CrossIcon, { className: "size-3 text-button-white" })
1206
+ iconVariant === "verified" && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_icons4.CheckIcon, { className: "size-3 text-button-white" }),
1207
+ iconVariant === "bookmark" && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_icons4.BookmarkCheckIcon, { className: "size-3 text-button-white" }),
1208
+ iconVariant === "favorite" && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_icons4.StarIcon, { className: "size-3 text-button-white" }),
1209
+ iconVariant === "add" && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_icons4.PlusIcon, { className: "size-3 text-button-white" }),
1210
+ iconVariant === "remove" && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_icons4.CrossIcon, { className: "size-3 text-button-white" })
1132
1211
  ]
1133
1212
  }
1134
1213
  );
@@ -1136,10 +1215,10 @@ var StatusAvatar = React15.forwardRef((props, ref) => {
1136
1215
  StatusAvatar.displayName = "StatusAvatar";
1137
1216
 
1138
1217
  // src/components/Content/Tag.tsx
1139
- var React16 = __toESM(require("react"), 1);
1218
+ var React17 = __toESM(require("react"), 1);
1140
1219
  var import_react_slot6 = require("@radix-ui/react-slot");
1141
1220
  var import_class_variance_authority11 = require("class-variance-authority");
1142
- var import_jsx_runtime18 = require("react/jsx-runtime");
1221
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1143
1222
  var tagVariants = (0, import_class_variance_authority11.cva)(
1144
1223
  "inline-flex flex-row items-center justify-center rounded-6 gap-2 px-3 overflow-hidden border-1 border-(--border-secondary) bg-(--background-neutral) hover:border-(--border-secondary-hover) focus:border-(--border-brand) focus-ring-primary ",
1145
1224
  {
@@ -1156,7 +1235,7 @@ var tagVariants = (0, import_class_variance_authority11.cva)(
1156
1235
  );
1157
1236
  var disabledTag = "pointer-events-none border-(--border-secondary-disabled) bg-(--background-neutral-disabled) text-primary-disabled";
1158
1237
  var iconClasses = "flex items-center justify-center w-5 h-5 [&>*]:w-5 [&>*]:h-5 shrink-0 text-primary";
1159
- var Tag = React16.forwardRef(
1238
+ var Tag = React17.forwardRef(
1160
1239
  (props, ref) => {
1161
1240
  const {
1162
1241
  size = "sm",
@@ -1168,37 +1247,295 @@ var Tag = React16.forwardRef(
1168
1247
  ...rest
1169
1248
  } = props;
1170
1249
  const Comp = asChild ? import_react_slot6.Slot : "div";
1171
- const leading = props.leadingIcon && React16.isValidElement(props.leadingIcon) ? React16.cloneElement(props.leadingIcon, { disabled, ...props.leadingIcon.props }) : null;
1172
- const trailing = props.trailingIcon && React16.isValidElement(props.trailingIcon) ? React16.cloneElement(props.trailingIcon, { disabled, ...props.trailingIcon.props }) : null;
1173
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1250
+ const leading = props.leadingIcon && React17.isValidElement(props.leadingIcon) ? React17.cloneElement(props.leadingIcon, { disabled, ...props.leadingIcon.props }) : null;
1251
+ const trailing = props.trailingIcon && React17.isValidElement(props.trailingIcon) ? React17.cloneElement(props.trailingIcon, { disabled, ...props.trailingIcon.props }) : null;
1252
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1174
1253
  Comp,
1175
1254
  {
1176
1255
  className: cn(tagVariants({ size }), disabled && disabledTag, className),
1177
1256
  ref,
1178
1257
  ...rest,
1179
1258
  children: [
1180
- leading && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: iconClasses, children: leading }),
1181
- value ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-row gap-1 items-center", children: [
1182
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-primary paragraph-lg mb-0! cursor-default font-normal", children: label }),
1183
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-primary paragraph-lg mb-0! cursor-default font-normal", children: ":" }),
1184
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-primary paragraph-lg-medium mb-0! cursor-default font-medium", children: value })
1185
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-primary paragraph-lg mb-0! cursor-default", children: label }),
1186
- trailing && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: iconClasses, children: trailing })
1259
+ leading && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: iconClasses, children: leading }),
1260
+ value ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex flex-row gap-1 items-center", children: [
1261
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-primary paragraph-lg mb-0! cursor-default font-normal", children: label }),
1262
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-primary paragraph-lg mb-0! cursor-default font-normal", children: ":" }),
1263
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-primary paragraph-lg-medium mb-0! cursor-default font-medium", children: value })
1264
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-primary paragraph-lg mb-0! cursor-default", children: label }),
1265
+ trailing && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: iconClasses, children: trailing })
1187
1266
  ]
1188
1267
  }
1189
1268
  );
1190
1269
  }
1191
1270
  );
1192
1271
 
1272
+ // src/components/Content/Menu.tsx
1273
+ var React19 = require("react");
1274
+
1275
+ // src/components/ui/dropdown-menu.tsx
1276
+ var React18 = __toESM(require("react"), 1);
1277
+ var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
1278
+ var import_icons5 = require("@bubo-squared/icons");
1279
+
1280
+ // src/components/ui/dropdown-styles.ts
1281
+ var import_class_variance_authority12 = require("class-variance-authority");
1282
+ var dropdownSurfaceClass = "z-50 rounded-4 border border-(--border-secondary-hover) bg-(--background-neutral) shadow-card-md";
1283
+ var dropdownScrollClass = "max-h-79 overflow-y-auto dropdown-scrollbar";
1284
+ var dropdownRowVariants = (0, import_class_variance_authority12.cva)(
1285
+ "flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) text-left text-primary cursor-pointer hover:bg-(--background-secondary)",
1286
+ {
1287
+ variants: {
1288
+ size: {
1289
+ sm: "paragraph-sm py-(--space-4)",
1290
+ md: "paragraph-md py-(--space-6)",
1291
+ lg: "paragraph-lg py-(--space-8)",
1292
+ xl: "subtitle py-(--space-10)"
1293
+ },
1294
+ inset: {
1295
+ true: "pl-(--space-16)"
1296
+ }
1297
+ },
1298
+ defaultVariants: {
1299
+ size: "lg"
1300
+ }
1301
+ }
1302
+ );
1303
+
1304
+ // src/components/ui/dropdown-menu.tsx
1305
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1306
+ var DropdownMenuSizeContext = React18.createContext("lg");
1307
+ function useDropdownMenuSize(explicitSize) {
1308
+ const contextSize = React18.useContext(DropdownMenuSizeContext);
1309
+ return explicitSize ?? contextSize;
1310
+ }
1311
+ function DropdownMenu({
1312
+ ...props
1313
+ }) {
1314
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
1315
+ }
1316
+ function DropdownMenuPortal({
1317
+ ...props
1318
+ }) {
1319
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
1320
+ }
1321
+ function DropdownMenuTrigger({
1322
+ ...props
1323
+ }) {
1324
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1325
+ DropdownMenuPrimitive.Trigger,
1326
+ {
1327
+ "data-slot": "dropdown-menu-trigger",
1328
+ ...props
1329
+ }
1330
+ );
1331
+ }
1332
+ function DropdownMenuContent({
1333
+ className,
1334
+ sideOffset = 4,
1335
+ size = "lg",
1336
+ ...props
1337
+ }) {
1338
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropdownMenuSizeContext.Provider, { value: size, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1339
+ DropdownMenuPrimitive.Content,
1340
+ {
1341
+ "data-slot": "dropdown-menu-content",
1342
+ sideOffset,
1343
+ className: cn(
1344
+ dropdownSurfaceClass,
1345
+ dropdownScrollClass,
1346
+ "min-w-37.5 p-0",
1347
+ className
1348
+ ),
1349
+ ...props
1350
+ }
1351
+ ) }) });
1352
+ }
1353
+ function DropdownMenuGroup({
1354
+ ...props
1355
+ }) {
1356
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
1357
+ }
1358
+ function DropdownMenuItem({
1359
+ className,
1360
+ inset,
1361
+ size,
1362
+ variant = "default",
1363
+ ...props
1364
+ }) {
1365
+ const resolvedSize = useDropdownMenuSize(size);
1366
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1367
+ DropdownMenuPrimitive.Item,
1368
+ {
1369
+ "data-slot": "dropdown-menu-item",
1370
+ "data-inset": inset,
1371
+ "data-variant": variant,
1372
+ className: cn(
1373
+ dropdownRowVariants({ size: resolvedSize, inset }),
1374
+ "data-highlighted:bg-(--background-secondary) data-highlighted:outline-none",
1375
+ "data-disabled:pointer-events-none data-disabled:opacity-50 data-disabled:text-primary-disabled",
1376
+ variant === "destructive" ? "text-(--color-error)" : null,
1377
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1378
+ className
1379
+ ),
1380
+ ...props
1381
+ }
1382
+ );
1383
+ }
1384
+ function DropdownMenuLabel({
1385
+ className,
1386
+ inset,
1387
+ size,
1388
+ ...props
1389
+ }) {
1390
+ const resolvedSize = useDropdownMenuSize(size);
1391
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1392
+ DropdownMenuPrimitive.Label,
1393
+ {
1394
+ "data-slot": "dropdown-menu-label",
1395
+ "data-inset": inset,
1396
+ className: cn(
1397
+ dropdownRowVariants({ size: resolvedSize, inset }),
1398
+ "text-secondary cursor-default hover:bg-transparent caption",
1399
+ className
1400
+ ),
1401
+ ...props
1402
+ }
1403
+ );
1404
+ }
1405
+ function DropdownMenuSeparator({
1406
+ className,
1407
+ ...props
1408
+ }) {
1409
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1410
+ DropdownMenuPrimitive.Separator,
1411
+ {
1412
+ "data-slot": "dropdown-menu-separator",
1413
+ className: cn("my-1 h-px bg-(--border-secondary)", className),
1414
+ ...props
1415
+ }
1416
+ );
1417
+ }
1418
+ function DropdownMenuShortcut({
1419
+ className,
1420
+ ...props
1421
+ }) {
1422
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1423
+ "span",
1424
+ {
1425
+ "data-slot": "dropdown-menu-shortcut",
1426
+ className: cn(
1427
+ "ml-auto paragraph-sm text-secondary",
1428
+ className
1429
+ ),
1430
+ ...props
1431
+ }
1432
+ );
1433
+ }
1434
+ function DropdownMenuSub({
1435
+ ...props
1436
+ }) {
1437
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
1438
+ }
1439
+ function DropdownMenuSubTrigger({
1440
+ className,
1441
+ inset,
1442
+ size,
1443
+ children,
1444
+ ...props
1445
+ }) {
1446
+ const resolvedSize = useDropdownMenuSize(size);
1447
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1448
+ DropdownMenuPrimitive.SubTrigger,
1449
+ {
1450
+ "data-slot": "dropdown-menu-sub-trigger",
1451
+ "data-inset": inset,
1452
+ className: cn(
1453
+ dropdownRowVariants({ size: resolvedSize, inset }),
1454
+ "data-highlighted:bg-(--background-secondary) data-highlighted:outline-none",
1455
+ "data-[state=open]:bg-(--background-secondary)",
1456
+ "data-disabled:pointer-events-none data-disabled:opacity-50 data-disabled:text-primary-disabled",
1457
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1458
+ className
1459
+ ),
1460
+ ...props,
1461
+ children: [
1462
+ children,
1463
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons5.ChevronRightIcon, { className: "ml-auto size-4 text-(--icon-primary)" })
1464
+ ]
1465
+ }
1466
+ );
1467
+ }
1468
+ function DropdownMenuSubContent({
1469
+ className,
1470
+ size,
1471
+ ...props
1472
+ }) {
1473
+ const resolvedSize = useDropdownMenuSize(size);
1474
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropdownMenuSizeContext.Provider, { value: resolvedSize, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1475
+ DropdownMenuPrimitive.SubContent,
1476
+ {
1477
+ "data-slot": "dropdown-menu-sub-content",
1478
+ className: cn(
1479
+ dropdownSurfaceClass,
1480
+ dropdownScrollClass,
1481
+ "min-w-37.5 p-0",
1482
+ className
1483
+ ),
1484
+ ...props
1485
+ }
1486
+ ) });
1487
+ }
1488
+
1489
+ // src/components/Content/Menu.tsx
1490
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1491
+ var Menu = (props) => {
1492
+ const {
1493
+ trigger,
1494
+ children,
1495
+ size = "lg",
1496
+ align = "start",
1497
+ side,
1498
+ offset = 4,
1499
+ className,
1500
+ open,
1501
+ onOpenChange,
1502
+ modal
1503
+ } = props;
1504
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(DropdownMenu, { open, onOpenChange, modal, children: [
1505
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DropdownMenuTrigger, { asChild: true, children: trigger }),
1506
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1507
+ DropdownMenuContent,
1508
+ {
1509
+ align,
1510
+ side,
1511
+ sideOffset: offset,
1512
+ size,
1513
+ className: cn(className),
1514
+ children
1515
+ }
1516
+ )
1517
+ ] });
1518
+ };
1519
+ Menu.displayName = "Menu";
1520
+ var MenuGroup = DropdownMenuGroup;
1521
+ var MenuItem = DropdownMenuItem;
1522
+ var MenuLabel = DropdownMenuLabel;
1523
+ var MenuPortal = DropdownMenuPortal;
1524
+ var MenuSeparator = DropdownMenuSeparator;
1525
+ var MenuShortcut = DropdownMenuShortcut;
1526
+ var MenuSub = DropdownMenuSub;
1527
+ var MenuSubContent = DropdownMenuSubContent;
1528
+ var MenuSubTrigger = DropdownMenuSubTrigger;
1529
+
1193
1530
  // src/components/Inputs/Checkbox.tsx
1194
- var React17 = require("react");
1531
+ var React20 = require("react");
1195
1532
  var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
1196
- var import_icons4 = require("@bubo-squared/icons");
1197
- var import_icons5 = require("@bubo-squared/icons");
1198
- var import_jsx_runtime19 = require("react/jsx-runtime");
1533
+ var import_icons6 = require("@bubo-squared/icons");
1534
+ var import_icons7 = require("@bubo-squared/icons");
1535
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1199
1536
  function Checkbox({ label, className, ...props }) {
1200
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("label", { className: "inline-flex items-center gap-(--space-12) cursor-pointer select-none", children: [
1201
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1537
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("label", { className: "inline-flex items-center gap-(--space-12) cursor-pointer select-none", children: [
1538
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1202
1539
  CheckboxPrimitive.Root,
1203
1540
  {
1204
1541
  className: cn(
@@ -1214,35 +1551,41 @@ function Checkbox({ label, className, ...props }) {
1214
1551
  className
1215
1552
  ),
1216
1553
  ...props,
1217
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: [
1218
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_icons4.CheckIcon, { className: "h-5 w-5 hidden group-data-[state=checked]:block" }),
1219
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_icons5.MinusIcon, { className: "h-5 w-5 hidden group-data-[state=indeterminate]:block" })
1554
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: [
1555
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_icons6.CheckIcon, { className: "h-5 w-5 hidden group-data-[state=checked]:block" }),
1556
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_icons7.MinusIcon, { className: "h-5 w-5 hidden group-data-[state=indeterminate]:block" })
1220
1557
  ] })
1221
1558
  }
1222
1559
  ),
1223
- label && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "paragraph-md-medium text-primary", children: label })
1560
+ label && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "paragraph-md-medium text-primary", children: label })
1224
1561
  ] });
1225
1562
  }
1226
1563
 
1227
- // src/components/Inputs/Dropdown.tsx
1228
- var React18 = __toESM(require("react"), 1);
1229
- var import_class_variance_authority12 = require("class-variance-authority");
1230
- var import_icons6 = require("@bubo-squared/icons");
1231
- var import_jsx_runtime20 = require("react/jsx-runtime");
1232
- var dropdownTriggerVariants = (0, import_class_variance_authority12.cva)(
1233
- "group flex w-full items-center justify-between rounded-4 border bg-(--background-primary) px-3 py-2 text-left transition-colors cursor-pointer focus-ring-primary focus:border-(--border-brand) hover:bg-(--background-primary-hover) disabled:bg-(--background-primary) disabled:border-(--border-secondary-disabled) disabled:text-primary-disabled disabled:cursor-default",
1564
+ // src/components/Inputs/Autocomplete.tsx
1565
+ var React23 = __toESM(require("react"), 1);
1566
+ var import_class_variance_authority14 = require("class-variance-authority");
1567
+
1568
+ // src/components/Inputs/InputShell.tsx
1569
+ var React21 = __toESM(require("react"), 1);
1570
+ var import_class_variance_authority13 = require("class-variance-authority");
1571
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1572
+ var inputShellVariants = (0, import_class_variance_authority13.cva)(
1573
+ "group flex w-full items-center rounded-4 border bg-(--background-primary) text-left cursor-text border-(--border-secondary)",
1234
1574
  {
1235
1575
  variants: {
1236
1576
  size: {
1237
- sm: "h-8 py-1",
1238
- md: "h-10 py-2",
1239
- lg: "h-11",
1240
- xl: "h-14"
1577
+ sm: "gap-2 px-2 py-1 h-8",
1578
+ md: "gap-2 px-2 py-2 h-10",
1579
+ lg: "gap-2 px-2 py-2 h-11",
1580
+ xl: "gap-2 px-[10px] py-2 h-14"
1241
1581
  },
1242
1582
  status: {
1243
- default: "border-(--border-secondary)",
1244
- success: "border-(--border-success)",
1245
- error: "border-(--border-error)"
1583
+ default: "input-default",
1584
+ success: "input-success",
1585
+ error: "input-error"
1586
+ },
1587
+ disabled: {
1588
+ true: "bg-(--background-primary-disabled) border-(--border-secondary-disabled) text-primary-disabled cursor-default"
1246
1589
  }
1247
1590
  },
1248
1591
  defaultVariants: {
@@ -1251,16 +1594,362 @@ var dropdownTriggerVariants = (0, import_class_variance_authority12.cva)(
1251
1594
  }
1252
1595
  }
1253
1596
  );
1254
- var dropdownTextVariants = (0, import_class_variance_authority12.cva)("truncate", {
1255
- variants: {
1256
- size: {
1257
- sm: "paragraph-md",
1258
- md: "paragraph-lg",
1259
- lg: "subtitle",
1260
- xl: "h6-title"
1261
- },
1597
+ var InputShell = React21.forwardRef(
1598
+ ({ size, status, disabled, className, ...rest }, ref) => {
1599
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1600
+ "div",
1601
+ {
1602
+ ref,
1603
+ "aria-disabled": disabled || void 0,
1604
+ className: cn(
1605
+ inputShellVariants({ size, status, disabled }),
1606
+ className
1607
+ ),
1608
+ ...rest
1609
+ }
1610
+ );
1611
+ }
1612
+ );
1613
+ InputShell.displayName = "InputShell";
1614
+
1615
+ // src/components/ui/input.tsx
1616
+ var React22 = __toESM(require("react"), 1);
1617
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1618
+ var Input = React22.forwardRef(
1619
+ ({ className, type, variant = "default", ...props }, ref) => {
1620
+ const base = "text-primary placeholder:text-(--color-secondary) disabled:text-primary-disabled disabled:placeholder:text-primary-disabled selection:bg-primary selection:text-primary-foreground file:text-foreground";
1621
+ const defaultStyles = "dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 shadow-xs transition-[color,box-shadow] file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus-visible:border-ring focus-visible:ring-0 focus-visible:shadow-none aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive";
1622
+ const bareStyles = "bg-transparent outline-none w-full";
1623
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1624
+ "input",
1625
+ {
1626
+ ref,
1627
+ type,
1628
+ "data-slot": "input",
1629
+ className: cn(
1630
+ base,
1631
+ variant === "default" ? defaultStyles : bareStyles,
1632
+ className
1633
+ ),
1634
+ ...props
1635
+ }
1636
+ );
1637
+ }
1638
+ );
1639
+ Input.displayName = "Input";
1640
+
1641
+ // src/components/Inputs/Autocomplete.tsx
1642
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1643
+ var inputTextVariants = (0, import_class_variance_authority14.cva)("truncate", {
1644
+ variants: {
1645
+ size: {
1646
+ sm: "paragraph-md",
1647
+ md: "paragraph-lg",
1648
+ lg: "subtitle",
1649
+ xl: "h6-title"
1650
+ }
1651
+ },
1652
+ defaultVariants: {
1653
+ size: "lg"
1654
+ }
1655
+ });
1656
+ var optionVariants = (0, import_class_variance_authority14.cva)(
1657
+ "w-full text-left hover:bg-(--background-secondary)",
1658
+ {
1659
+ variants: {
1660
+ size: {
1661
+ sm: "paragraph-sm py-(--space-4) ",
1662
+ md: "paragraph-md py-(--space-6) ",
1663
+ lg: "paragraph-lg py-(--space-8) ",
1664
+ xl: "subtitle py-(--space-10) "
1665
+ },
1666
+ active: {
1667
+ true: "bg-(--background-secondary)"
1668
+ }
1669
+ },
1670
+ defaultVariants: {
1671
+ size: "lg",
1672
+ active: false
1673
+ }
1674
+ }
1675
+ );
1676
+ var iconWrapperVariants = (0, import_class_variance_authority14.cva)(
1677
+ "flex items-center justify-center shrink-0 text-(--icon-primary)",
1678
+ {
1679
+ variants: {
1680
+ size: {
1681
+ sm: "size-4 [&>svg]:size-4",
1682
+ md: "size-5 [&>svg]:size-5",
1683
+ lg: "size-5 [&>svg]:size-5",
1684
+ xl: "size-6 [&>svg]:size-6"
1685
+ },
1686
+ disabled: {
1687
+ true: "text-(--icon-primary-disabled)"
1688
+ }
1689
+ },
1690
+ defaultVariants: {
1691
+ size: "lg"
1692
+ }
1693
+ }
1694
+ );
1695
+ var Autocomplete = (props) => {
1696
+ const {
1697
+ label,
1698
+ hint,
1699
+ hideHint,
1700
+ status = "default",
1701
+ size = "lg",
1702
+ disabled,
1703
+ className,
1704
+ leadingIcon,
1705
+ trailingIcon,
1706
+ options,
1707
+ loading = false,
1708
+ loadingText = "Loading\u2026",
1709
+ noOptionsText = "No matches",
1710
+ value,
1711
+ defaultValue,
1712
+ onChange,
1713
+ inputValue,
1714
+ defaultInputValue,
1715
+ onInputChange,
1716
+ placeholder = "Search\u2026",
1717
+ onKeyDown,
1718
+ onFocus,
1719
+ onBlur,
1720
+ id,
1721
+ ...inputProps
1722
+ } = props;
1723
+ const isValueControlled = value !== void 0;
1724
+ const [internalValue, setInternalValue] = React23.useState(
1725
+ defaultValue ?? ""
1726
+ );
1727
+ const isInputControlled = inputValue !== void 0;
1728
+ const [internalInputValue, setInternalInputValue] = React23.useState(
1729
+ defaultInputValue ?? ""
1730
+ );
1731
+ const [isFocused, setIsFocused] = React23.useState(false);
1732
+ const [activeIndex, setActiveIndex] = React23.useState(-1);
1733
+ const inputRef = React23.useRef(null);
1734
+ const baseId = React23.useId();
1735
+ const inputId = id ?? baseId;
1736
+ const listboxId = `${inputId}-listbox`;
1737
+ const currentValue = (isValueControlled ? value : internalValue) ?? "";
1738
+ const currentInput = (isInputControlled ? inputValue : internalInputValue) ?? "";
1739
+ React23.useEffect(() => {
1740
+ if (isFocused) return;
1741
+ if (isInputControlled) return;
1742
+ if (!isValueControlled) return;
1743
+ setInternalInputValue(currentValue);
1744
+ }, [currentValue, isFocused, isInputControlled, isValueControlled]);
1745
+ const showDropdown = isFocused && (loading || options.length > 0 || currentInput.trim().length > 0);
1746
+ const setInputText = (next) => {
1747
+ if (!isInputControlled) {
1748
+ setInternalInputValue(next);
1749
+ }
1750
+ onInputChange?.(next);
1751
+ };
1752
+ const commitValue = (next) => {
1753
+ if (!isValueControlled) {
1754
+ setInternalValue(next);
1755
+ }
1756
+ onChange?.(next);
1757
+ setInputText(next);
1758
+ setActiveIndex(-1);
1759
+ };
1760
+ const handleContainerClick = () => {
1761
+ if (disabled) return;
1762
+ inputRef.current?.focus();
1763
+ };
1764
+ const handleInputChange = (event) => {
1765
+ const next = event.target.value;
1766
+ setInputText(next);
1767
+ setActiveIndex(-1);
1768
+ };
1769
+ const handleFocus = (event) => {
1770
+ setIsFocused(true);
1771
+ onFocus?.(event);
1772
+ };
1773
+ const handleBlur = (event) => {
1774
+ setIsFocused(false);
1775
+ setActiveIndex(-1);
1776
+ onBlur?.(event);
1777
+ };
1778
+ const handleKeyDown = (event) => {
1779
+ onKeyDown?.(event);
1780
+ if (event.defaultPrevented) return;
1781
+ if (!showDropdown && (event.key === "ArrowDown" || event.key === "ArrowUp")) {
1782
+ setIsFocused(true);
1783
+ return;
1784
+ }
1785
+ switch (event.key) {
1786
+ case "ArrowDown": {
1787
+ event.preventDefault();
1788
+ setActiveIndex((prev) => {
1789
+ if (options.length === 0) return -1;
1790
+ const next = prev < 0 ? 0 : Math.min(prev + 1, options.length - 1);
1791
+ return next;
1792
+ });
1793
+ break;
1794
+ }
1795
+ case "ArrowUp": {
1796
+ event.preventDefault();
1797
+ setActiveIndex((prev) => {
1798
+ if (options.length === 0) return -1;
1799
+ const next = prev <= 0 ? 0 : prev - 1;
1800
+ return next;
1801
+ });
1802
+ break;
1803
+ }
1804
+ case "Enter": {
1805
+ if (activeIndex >= 0 && activeIndex < options.length) {
1806
+ event.preventDefault();
1807
+ commitValue(options[activeIndex]);
1808
+ setIsFocused(false);
1809
+ }
1810
+ break;
1811
+ }
1812
+ case "Escape": {
1813
+ event.preventDefault();
1814
+ setIsFocused(false);
1815
+ setActiveIndex(-1);
1816
+ break;
1817
+ }
1818
+ default:
1819
+ break;
1820
+ }
1821
+ };
1822
+ const handleOptionMouseDown = (event) => {
1823
+ event.preventDefault();
1824
+ };
1825
+ const handleOptionClick = (option) => {
1826
+ commitValue(option);
1827
+ setIsFocused(false);
1828
+ };
1829
+ const activeDescendantId = activeIndex >= 0 ? `${inputId}-option-${activeIndex}` : void 0;
1830
+ const showLeadingIcon = !!leadingIcon;
1831
+ const showTrailingIcon = !!trailingIcon;
1832
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Field, { label, hint, hideHint, status, disabled, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "relative w-full", children: [
1833
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
1834
+ InputShell,
1835
+ {
1836
+ size,
1837
+ status,
1838
+ disabled,
1839
+ className,
1840
+ onClick: handleContainerClick,
1841
+ children: [
1842
+ showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: cn(iconWrapperVariants({ size, disabled: !!disabled })), children: leadingIcon }),
1843
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1844
+ Input,
1845
+ {
1846
+ ref: inputRef,
1847
+ id: inputId,
1848
+ type: "text",
1849
+ disabled: disabled ?? void 0,
1850
+ placeholder,
1851
+ value: currentInput,
1852
+ onChange: handleInputChange,
1853
+ onFocus: handleFocus,
1854
+ onBlur: handleBlur,
1855
+ onKeyDown: handleKeyDown,
1856
+ role: "combobox",
1857
+ "aria-autocomplete": "list",
1858
+ "aria-controls": listboxId,
1859
+ "aria-expanded": showDropdown,
1860
+ "aria-activedescendant": activeDescendantId,
1861
+ variant: "bare",
1862
+ className: cn(inputTextVariants({ size }), "bg-transparent outline-none w-full"),
1863
+ ...inputProps
1864
+ }
1865
+ ),
1866
+ showTrailingIcon && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: cn(iconWrapperVariants({ size, disabled: !!disabled })), children: trailingIcon })
1867
+ ]
1868
+ }
1869
+ ),
1870
+ showDropdown && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1871
+ "div",
1872
+ {
1873
+ className: cn(
1874
+ "absolute left-0 right-0 mt-1",
1875
+ dropdownSurfaceClass,
1876
+ dropdownScrollClass
1877
+ ),
1878
+ children: loading ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1879
+ "div",
1880
+ {
1881
+ className: cn(optionVariants({ size }), "px-(--space-8) pr-(--space-16) text-secondary"),
1882
+ "aria-live": "polite",
1883
+ children: loadingText
1884
+ }
1885
+ ) : options.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1886
+ "div",
1887
+ {
1888
+ className: cn(optionVariants({ size }), "px-(--space-8) pr-(--space-16) text-secondary"),
1889
+ "aria-live": "polite",
1890
+ children: noOptionsText
1891
+ }
1892
+ ) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("ul", { id: listboxId, role: "listbox", className: "flex flex-col", children: options.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1893
+ "li",
1894
+ {
1895
+ id: `${inputId}-option-${index}`,
1896
+ role: "option",
1897
+ "aria-selected": index === activeIndex,
1898
+ className: cn(
1899
+ optionVariants({ size, active: index === activeIndex }),
1900
+ "px-(--space-8) pr-(--space-16) text-primary cursor-pointer"
1901
+ ),
1902
+ onMouseDown: handleOptionMouseDown,
1903
+ onMouseEnter: () => setActiveIndex(index),
1904
+ onClick: () => handleOptionClick(option),
1905
+ children: option
1906
+ },
1907
+ `${option}-${index}`
1908
+ )) })
1909
+ }
1910
+ )
1911
+ ] }) });
1912
+ };
1913
+ Autocomplete.displayName = "Autocomplete";
1914
+
1915
+ // src/components/Inputs/Select.tsx
1916
+ var React24 = __toESM(require("react"), 1);
1917
+ var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
1918
+ var import_class_variance_authority15 = require("class-variance-authority");
1919
+ var import_icons8 = require("@bubo-squared/icons");
1920
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1921
+ var selectTriggerVariants = (0, import_class_variance_authority15.cva)(
1922
+ "group flex w-full items-center justify-between rounded-4 border bg-(--background-primary) p-2 text-left transition-colors cursor-pointer focus-ring-primary focus:border-(--border-brand) hover:bg-(--background-primary-hover) disabled:bg-(--background-primary) disabled:border-(--border-secondary-disabled) disabled:text-primary-disabled disabled:cursor-default",
1923
+ {
1924
+ variants: {
1925
+ size: {
1926
+ sm: "h-8 py-1",
1927
+ md: "h-10 py-2",
1928
+ lg: "h-11",
1929
+ xl: "h-14"
1930
+ },
1931
+ status: {
1932
+ default: "border-(--border-secondary)",
1933
+ success: "border-(--border-success)",
1934
+ error: "border-(--border-error)"
1935
+ }
1936
+ },
1937
+ defaultVariants: {
1938
+ size: "lg",
1939
+ status: "default"
1940
+ }
1941
+ }
1942
+ );
1943
+ var textVariants = (0, import_class_variance_authority15.cva)("truncate", {
1944
+ variants: {
1945
+ size: {
1946
+ sm: "paragraph-md",
1947
+ md: "paragraph-lg",
1948
+ lg: "subtitle",
1949
+ xl: "h6-title"
1950
+ },
1262
1951
  hasValue: {
1263
- false: "text-(--color-secondary)",
1952
+ false: "text-secondary",
1264
1953
  true: "text-primary"
1265
1954
  },
1266
1955
  disabled: {
@@ -1272,13 +1961,13 @@ var dropdownTextVariants = (0, import_class_variance_authority12.cva)("truncate"
1272
1961
  hasValue: false
1273
1962
  }
1274
1963
  });
1275
- var dropdownIconVariants = (0, import_class_variance_authority12.cva)("flex items-center justify-center shrink-0", {
1964
+ var selectIconVariants = (0, import_class_variance_authority15.cva)("flex items-center justify-center shrink-0", {
1276
1965
  variants: {
1277
1966
  size: {
1278
- sm: "w-4 h-4",
1279
- md: "w-5 h-5",
1280
- lg: "w-5 h-5",
1281
- xl: "w-6 h-6"
1967
+ sm: "size-4",
1968
+ md: "size-5",
1969
+ lg: "size-5",
1970
+ xl: "size-6"
1282
1971
  },
1283
1972
  disabled: {
1284
1973
  false: "text-(--icon-primary)",
@@ -1290,31 +1979,25 @@ var dropdownIconVariants = (0, import_class_variance_authority12.cva)("flex item
1290
1979
  disabled: false
1291
1980
  }
1292
1981
  });
1293
- var dropdownItemVariants = (0, import_class_variance_authority12.cva)("", {
1294
- variants: {
1295
- size: {
1296
- sm: "h-8",
1297
- md: "h-10",
1298
- lg: "h-11",
1299
- xl: "h-14"
1300
- }
1301
- }
1302
- });
1303
- var dropdownButtonVariants = (0, import_class_variance_authority12.cva)("flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) text-left paragraph-lg text-primary hover:bg-(--background-secondary)", {
1304
- variants: {
1305
- size: {
1306
- sm: "paragraph-sm py-(--space-4) ",
1307
- md: "paragraph-md py-(--space-6) ",
1308
- lg: "paragraph-lg py-(--space-8) ",
1309
- xl: "subtitle py-(--space-10) "
1982
+ var selectButtonVariants = (0, import_class_variance_authority15.cva)(
1983
+ "flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) text-left paragraph-lg text-primary hover:bg-(--background-secondary)",
1984
+ {
1985
+ variants: {
1986
+ size: {
1987
+ sm: "paragraph-sm py-(--space-4) ",
1988
+ md: "paragraph-md py-(--space-6) ",
1989
+ lg: "paragraph-lg py-(--space-8) ",
1990
+ xl: "subtitle py-(--space-10) "
1991
+ }
1310
1992
  }
1311
1993
  }
1312
- });
1313
- var Dropdown = (props) => {
1994
+ );
1995
+ var Select = (props) => {
1314
1996
  const {
1315
1997
  label = "Field Label",
1316
1998
  hint = "This is a hint text to help user.",
1317
1999
  hideHint = false,
2000
+ name,
1318
2001
  placeholder = "Placeholder text",
1319
2002
  size = "lg",
1320
2003
  status = "default",
@@ -1325,47 +2008,44 @@ var Dropdown = (props) => {
1325
2008
  onChange,
1326
2009
  className,
1327
2010
  showMenu,
2011
+ required = false,
1328
2012
  ...buttonProps
1329
2013
  } = props;
1330
- const dropdownRef = React18.useRef(null);
1331
2014
  const isControlled = value !== void 0;
1332
- const [internalValue, setInternalValue] = React18.useState(
1333
- defaultValue
2015
+ const controlledValue = value ?? "";
2016
+ const [internalValue, setInternalValue] = React24.useState(
2017
+ defaultValue ?? ""
1334
2018
  );
1335
- const [open, setOpen] = React18.useState(false);
1336
- const currentValue = isControlled ? value : internalValue;
1337
- const selectedOption = options.find((opt) => opt.value === currentValue);
2019
+ const [open, setOpen] = React24.useState(false);
2020
+ const rawValue = isControlled ? controlledValue : internalValue;
2021
+ const selectedOption = options.find((opt) => opt.value === rawValue);
2022
+ const currentValue = selectedOption ? selectedOption.value : "";
1338
2023
  const hasValue = !!selectedOption;
1339
2024
  const isOpen = showMenu ?? open;
1340
- const handleToggle = () => {
1341
- if (disabled) return;
2025
+ const handleOpenChange = (nextOpen) => {
1342
2026
  if (showMenu === void 0) {
1343
- setOpen((prev) => !prev);
2027
+ setOpen(nextOpen);
1344
2028
  }
1345
2029
  };
1346
- const handleSelect = (optionValue) => {
2030
+ const handleValueChange = (nextValue) => {
1347
2031
  if (!isControlled) {
1348
- setInternalValue(optionValue);
2032
+ setInternalValue(nextValue);
1349
2033
  }
1350
- onChange?.(optionValue);
2034
+ onChange?.(nextValue);
1351
2035
  if (showMenu === void 0) {
1352
2036
  setOpen(false);
1353
2037
  }
1354
2038
  };
1355
- React18.useEffect(() => {
1356
- if (showMenu !== void 0) return;
1357
- const handleClickOutside = (event) => {
1358
- if (!dropdownRef.current) return;
1359
- if (!dropdownRef.current.contains(event.target)) {
1360
- setOpen(false);
1361
- }
1362
- };
1363
- document.addEventListener("mousedown", handleClickOutside);
1364
- return () => {
1365
- document.removeEventListener("mousedown", handleClickOutside);
1366
- };
1367
- }, [showMenu]);
1368
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { ref: dropdownRef, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
2039
+ const handleClear = () => {
2040
+ if (!isControlled) {
2041
+ setInternalValue("");
2042
+ }
2043
+ onChange?.("");
2044
+ if (showMenu === void 0) {
2045
+ setOpen(false);
2046
+ }
2047
+ };
2048
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1369
2049
  Field,
1370
2050
  {
1371
2051
  label,
@@ -1373,170 +2053,103 @@ var Dropdown = (props) => {
1373
2053
  hideHint,
1374
2054
  status,
1375
2055
  disabled,
1376
- children: [
1377
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1378
- "button",
1379
- {
1380
- type: "button",
1381
- "aria-haspopup": "listbox",
1382
- "aria-expanded": isOpen,
1383
- disabled,
1384
- className: cn(dropdownTriggerVariants({ size, status }), className),
1385
- onClick: handleToggle,
1386
- "data-open": isOpen || void 0,
1387
- ...buttonProps,
1388
- children: [
1389
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1390
- "span",
1391
- {
1392
- className: cn(
1393
- dropdownTextVariants({
1394
- size,
1395
- hasValue,
1396
- disabled: !!disabled
1397
- })
1398
- ),
1399
- children: hasValue ? selectedOption?.label : placeholder
1400
- }
1401
- ),
1402
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: cn(dropdownIconVariants({ size, disabled: !!disabled })), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons6.ChevronDownIcon, {}) })
1403
- ]
1404
- }
1405
- ),
1406
- isOpen && options.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "absolute z-10 mt-1 w-full min-w-343 rounded-4 border border-(--border-secondary-hover) bg-(--background-neutral) shadow-card-md flex overflow-y-scroll dropdown-scrollbar max-h-79", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("ul", { role: "listbox", className: "flex flex-1 flex-col", children: [
1407
- hasValue && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1408
- "li",
1409
- {
1410
- className: cn(
1411
- "bg-(--background-neutral) border-b border-(--border-secondary)",
1412
- dropdownItemVariants({ size })
1413
- ),
1414
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1415
- "button",
1416
- {
1417
- type: "button",
1418
- className: cn(dropdownButtonVariants({ size }), "text-secondary"),
1419
- role: "option",
1420
- "aria-selected": false,
1421
- onClick: () => handleSelect(""),
1422
- children: "Clear"
1423
- }
1424
- )
1425
- }
1426
- ),
1427
- options.map((opt) => {
1428
- const selected = opt.value === currentValue;
1429
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1430
- "li",
2056
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2057
+ SelectPrimitive.Root,
2058
+ {
2059
+ value: currentValue,
2060
+ onValueChange: handleValueChange,
2061
+ open: isOpen,
2062
+ onOpenChange: handleOpenChange,
2063
+ disabled,
2064
+ name,
2065
+ required,
2066
+ children: [
2067
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SelectPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2068
+ "button",
1431
2069
  {
2070
+ type: "button",
2071
+ "aria-haspopup": "listbox",
2072
+ "aria-expanded": isOpen,
2073
+ disabled,
1432
2074
  className: cn(
1433
- "bg-(--background-neutral) border-b border-(--border-secondary) last:border-b-0 ",
1434
- selected && "bg-(--background-secondary)",
1435
- dropdownItemVariants({ size })
2075
+ selectTriggerVariants({ size, status }),
2076
+ textVariants({
2077
+ size,
2078
+ hasValue,
2079
+ disabled: !!disabled
2080
+ }),
2081
+ hasValue ? "text-primary" : "text-secondary",
2082
+ className
1436
2083
  ),
1437
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1438
- "button",
1439
- {
1440
- type: "button",
1441
- className: dropdownButtonVariants({ size }),
1442
- role: "option",
1443
- "aria-selected": selected,
1444
- onClick: () => handleSelect(opt.value),
1445
- children: opt.label
1446
- }
1447
- )
1448
- },
1449
- opt.value
1450
- );
1451
- })
1452
- ] }) })
1453
- ]
1454
- }
1455
- ) });
1456
- };
1457
- Dropdown.displayName = "Dropdown";
1458
-
1459
- // src/components/Inputs/PasswordInput.tsx
1460
- var React21 = __toESM(require("react"), 1);
1461
- var import_class_variance_authority14 = require("class-variance-authority");
1462
-
1463
- // src/components/ui/input.tsx
1464
- var React19 = __toESM(require("react"), 1);
1465
- var import_jsx_runtime21 = require("react/jsx-runtime");
1466
- var Input = React19.forwardRef(
1467
- ({ className, type, variant = "default", ...props }, ref) => {
1468
- const base = "text-primary placeholder:text-(--color-secondary) disabled:text-primary-disabled disabled:placeholder:text-primary-disabled selection:bg-primary selection:text-primary-foreground file:text-foreground";
1469
- const defaultStyles = "dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 shadow-xs transition-[color,box-shadow] file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus-visible:border-ring focus-visible:ring-0 focus-visible:shadow-none aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive";
1470
- const bareStyles = "bg-transparent outline-none w-full";
1471
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1472
- "input",
1473
- {
1474
- ref,
1475
- type,
1476
- "data-slot": "input",
1477
- className: cn(
1478
- base,
1479
- variant === "default" ? defaultStyles : bareStyles,
1480
- className
1481
- ),
1482
- ...props
1483
- }
1484
- );
1485
- }
1486
- );
1487
- Input.displayName = "Input";
1488
-
1489
- // src/components/Inputs/InputShell.tsx
1490
- var React20 = __toESM(require("react"), 1);
1491
- var import_class_variance_authority13 = require("class-variance-authority");
1492
- var import_jsx_runtime22 = require("react/jsx-runtime");
1493
- var inputShellVariants = (0, import_class_variance_authority13.cva)(
1494
- "group flex w-full items-center rounded-4 border bg-(--background-primary) text-left cursor-text border-(--border-secondary)",
1495
- {
1496
- variants: {
1497
- size: {
1498
- sm: "gap-2 px-2 py-1 h-8",
1499
- md: "gap-2 px-2 py-2 h-10",
1500
- lg: "gap-2 px-2 py-2 h-11",
1501
- xl: "gap-2 px-[10px] py-2 h-14"
1502
- },
1503
- status: {
1504
- default: "input-default",
1505
- success: "input-success",
1506
- error: "input-error"
1507
- },
1508
- disabled: {
1509
- true: "bg-(--background-primary-disabled) border-(--border-secondary-disabled) text-primary-disabled cursor-default"
1510
- }
1511
- },
1512
- defaultVariants: {
1513
- size: "lg",
1514
- status: "default"
2084
+ "data-open": isOpen || void 0,
2085
+ ...buttonProps,
2086
+ children: [
2087
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SelectPrimitive.Value, { placeholder }),
2088
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2089
+ "span",
2090
+ {
2091
+ className: cn(selectIconVariants({ size, disabled: !!disabled })),
2092
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_icons8.ChevronDownIcon, {})
2093
+ }
2094
+ ) })
2095
+ ]
2096
+ }
2097
+ ) }),
2098
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2099
+ SelectPrimitive.Content,
2100
+ {
2101
+ position: "popper",
2102
+ align: "start",
2103
+ sideOffset: 4,
2104
+ className: cn(
2105
+ dropdownSurfaceClass,
2106
+ dropdownScrollClass,
2107
+ "min-w-343"
2108
+ ),
2109
+ style: { minWidth: "var(--radix-select-trigger-width)" },
2110
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SelectPrimitive.Viewport, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex flex-col", children: [
2111
+ hasValue && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: cn("bg-(--background-neutral)"), children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2112
+ "button",
2113
+ {
2114
+ type: "button",
2115
+ className: cn(
2116
+ selectButtonVariants({ size }),
2117
+ "text-secondary"
2118
+ ),
2119
+ onClick: handleClear,
2120
+ children: "Clear"
2121
+ }
2122
+ ) }),
2123
+ options.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2124
+ SelectPrimitive.Item,
2125
+ {
2126
+ value: opt.value,
2127
+ className: cn(
2128
+ "bg-(--background-neutral)",
2129
+ "data-highlighted:bg-(--background-secondary) data-highlighted:outline-none",
2130
+ "data-[state=checked]:bg-(--background-secondary)"
2131
+ ),
2132
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: selectButtonVariants({ size }), children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SelectPrimitive.ItemText, { children: opt.label }) })
2133
+ },
2134
+ opt.value
2135
+ ))
2136
+ ] }) })
2137
+ }
2138
+ ) })
2139
+ ]
2140
+ }
2141
+ )
1515
2142
  }
1516
- }
1517
- );
1518
- var InputShell = React20.forwardRef(
1519
- ({ size, status, disabled, className, ...rest }, ref) => {
1520
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1521
- "div",
1522
- {
1523
- ref,
1524
- "aria-disabled": disabled || void 0,
1525
- className: cn(
1526
- inputShellVariants({ size, status, disabled }),
1527
- className
1528
- ),
1529
- ...rest
1530
- }
1531
- );
1532
- }
1533
- );
1534
- InputShell.displayName = "InputShell";
2143
+ );
2144
+ };
2145
+ Select.displayName = "Select";
1535
2146
 
1536
2147
  // src/components/Inputs/PasswordInput.tsx
1537
- var import_icons7 = require("@bubo-squared/icons");
1538
- var import_jsx_runtime23 = require("react/jsx-runtime");
1539
- var passwordTextVariants = (0, import_class_variance_authority14.cva)("truncate", {
2148
+ var React25 = __toESM(require("react"), 1);
2149
+ var import_class_variance_authority16 = require("class-variance-authority");
2150
+ var import_icons9 = require("@bubo-squared/icons");
2151
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2152
+ var passwordTextVariants = (0, import_class_variance_authority16.cva)("truncate", {
1540
2153
  variants: {
1541
2154
  size: {
1542
2155
  sm: "paragraph-md",
@@ -1554,7 +2167,7 @@ var passwordTextVariants = (0, import_class_variance_authority14.cva)("truncate"
1554
2167
  disabled: false
1555
2168
  }
1556
2169
  });
1557
- var iconWrapperVariants = (0, import_class_variance_authority14.cva)(
2170
+ var iconWrapperVariants2 = (0, import_class_variance_authority16.cva)(
1558
2171
  "flex items-center justify-center shrink-0 text-(--icon-primary)",
1559
2172
  {
1560
2173
  variants: {
@@ -1573,7 +2186,7 @@ var iconWrapperVariants = (0, import_class_variance_authority14.cva)(
1573
2186
  }
1574
2187
  }
1575
2188
  );
1576
- var actionButtonVariants = (0, import_class_variance_authority14.cva)(
2189
+ var actionButtonVariants = (0, import_class_variance_authority16.cva)(
1577
2190
  "flex items-center justify-center shrink-0 cursor-pointer bg-transparent border-0 p-0 text-left paragraph-sm text-(--icon-primary) hover:text-(--icon-primary-hover) focus:outline-none ",
1578
2191
  {
1579
2192
  variants: {
@@ -1610,12 +2223,12 @@ var PasswordInput = (props) => {
1610
2223
  ...inputProps
1611
2224
  } = props;
1612
2225
  const isControlled = value !== void 0;
1613
- const [internalValue, setInternalValue] = React21.useState(
2226
+ const [internalValue, setInternalValue] = React25.useState(
1614
2227
  defaultValue ?? ""
1615
2228
  );
1616
- const [isRevealed, setIsRevealed] = React21.useState(false);
2229
+ const [isRevealed, setIsRevealed] = React25.useState(false);
1617
2230
  const currentValue = (isControlled ? value : internalValue) ?? "";
1618
- const inputRef = React21.useRef(null);
2231
+ const inputRef = React25.useRef(null);
1619
2232
  const showLeadingIcon = !!leadingIcon;
1620
2233
  const handleContainerClick = () => {
1621
2234
  if (disabled) return;
@@ -1627,7 +2240,7 @@ var PasswordInput = (props) => {
1627
2240
  }
1628
2241
  onChange?.(event);
1629
2242
  };
1630
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2243
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1631
2244
  Field,
1632
2245
  {
1633
2246
  label,
@@ -1635,7 +2248,7 @@ var PasswordInput = (props) => {
1635
2248
  hideHint,
1636
2249
  status,
1637
2250
  disabled,
1638
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2251
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1639
2252
  InputShell,
1640
2253
  {
1641
2254
  size,
@@ -1644,16 +2257,16 @@ var PasswordInput = (props) => {
1644
2257
  className,
1645
2258
  onClick: handleContainerClick,
1646
2259
  children: [
1647
- showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2260
+ showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1648
2261
  "span",
1649
2262
  {
1650
2263
  className: cn(
1651
- iconWrapperVariants({ size, disabled: !!disabled })
2264
+ iconWrapperVariants2({ size, disabled: !!disabled })
1652
2265
  ),
1653
2266
  children: leadingIcon
1654
2267
  }
1655
2268
  ),
1656
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2269
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1657
2270
  Input,
1658
2271
  {
1659
2272
  ref: inputRef,
@@ -1668,7 +2281,7 @@ var PasswordInput = (props) => {
1668
2281
  ...inputProps
1669
2282
  }
1670
2283
  ),
1671
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2284
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1672
2285
  "button",
1673
2286
  {
1674
2287
  type: "button",
@@ -1681,9 +2294,9 @@ var PasswordInput = (props) => {
1681
2294
  "aria-label": isRevealed ? "Hide password" : "Show password",
1682
2295
  className: cn(
1683
2296
  "cursor-pointer",
1684
- variant === "text" ? actionButtonVariants({ size, disabled: !!disabled }) : iconWrapperVariants({ size, disabled: !!disabled })
2297
+ variant === "text" ? actionButtonVariants({ size, disabled: !!disabled }) : iconWrapperVariants2({ size, disabled: !!disabled })
1685
2298
  ),
1686
- children: variant === "icon" ? isRevealed ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_icons7.EyeSlashIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_icons7.EyeIcon, {}) : isRevealed ? "Hide" : "Show"
2299
+ children: variant === "icon" ? isRevealed ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_icons9.EyeSlashIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_icons9.EyeIcon, {}) : isRevealed ? "Hide" : "Show"
1687
2300
  }
1688
2301
  )
1689
2302
  ]
@@ -1695,17 +2308,17 @@ var PasswordInput = (props) => {
1695
2308
  PasswordInput.displayName = "PasswordInput";
1696
2309
 
1697
2310
  // src/components/Inputs/PhoneInput.tsx
1698
- var React27 = __toESM(require("react"), 1);
1699
- var import_icons9 = require("@bubo-squared/icons");
2311
+ var React31 = __toESM(require("react"), 1);
2312
+ var import_icons11 = require("@bubo-squared/icons");
1700
2313
  var RPNInput = __toESM(require("react-phone-number-input"), 1);
1701
2314
  var import_flags = __toESM(require("react-phone-number-input/flags"), 1);
1702
2315
 
1703
2316
  // src/components/ui/button.tsx
1704
- var React22 = require("react");
2317
+ var React26 = require("react");
1705
2318
  var import_react_slot7 = require("@radix-ui/react-slot");
1706
- var import_class_variance_authority15 = require("class-variance-authority");
1707
- var import_jsx_runtime24 = require("react/jsx-runtime");
1708
- var buttonVariants2 = (0, import_class_variance_authority15.cva)(
2319
+ var import_class_variance_authority17 = require("class-variance-authority");
2320
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2321
+ var buttonVariants2 = (0, import_class_variance_authority17.cva)(
1709
2322
  "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-0 focus-visible:shadow-none aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
1710
2323
  {
1711
2324
  variants: {
@@ -1740,7 +2353,7 @@ function Button2({
1740
2353
  ...props
1741
2354
  }) {
1742
2355
  const Comp = asChild ? import_react_slot7.Slot : "button";
1743
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2356
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1744
2357
  Comp,
1745
2358
  {
1746
2359
  "data-slot": "button",
@@ -1753,22 +2366,125 @@ function Button2({
1753
2366
  }
1754
2367
 
1755
2368
  // src/components/ui/command.tsx
1756
- var React24 = require("react");
2369
+ var React28 = require("react");
1757
2370
  var import_cmdk = require("cmdk");
1758
- var import_icons8 = require("@bubo-squared/icons");
2371
+ var import_icons10 = require("@bubo-squared/icons");
1759
2372
 
1760
2373
  // src/components/ui/dialog.tsx
1761
- var React23 = require("react");
2374
+ var React27 = require("react");
1762
2375
  var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
1763
- var import_jsx_runtime25 = require("react/jsx-runtime");
2376
+
2377
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/createLucideIcon.js
2378
+ var import_react2 = require("react");
2379
+
2380
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/shared/src/utils.js
2381
+ var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
2382
+ var toCamelCase = (string) => string.replace(
2383
+ /^([A-Z])|[\s-_]+(\w)/g,
2384
+ (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
2385
+ );
2386
+ var toPascalCase = (string) => {
2387
+ const camelCase = toCamelCase(string);
2388
+ return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
2389
+ };
2390
+ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
2391
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
2392
+ }).join(" ").trim();
2393
+ var hasA11yProp = (props) => {
2394
+ for (const prop in props) {
2395
+ if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
2396
+ return true;
2397
+ }
2398
+ }
2399
+ };
2400
+
2401
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/Icon.js
2402
+ var import_react = require("react");
2403
+
2404
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/defaultAttributes.js
2405
+ var defaultAttributes = {
2406
+ xmlns: "http://www.w3.org/2000/svg",
2407
+ width: 24,
2408
+ height: 24,
2409
+ viewBox: "0 0 24 24",
2410
+ fill: "none",
2411
+ stroke: "currentColor",
2412
+ strokeWidth: 2,
2413
+ strokeLinecap: "round",
2414
+ strokeLinejoin: "round"
2415
+ };
2416
+
2417
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/Icon.js
2418
+ var Icon2 = (0, import_react.forwardRef)(
2419
+ ({
2420
+ color = "currentColor",
2421
+ size = 24,
2422
+ strokeWidth = 2,
2423
+ absoluteStrokeWidth,
2424
+ className = "",
2425
+ children,
2426
+ iconNode,
2427
+ ...rest
2428
+ }, ref) => (0, import_react.createElement)(
2429
+ "svg",
2430
+ {
2431
+ ref,
2432
+ ...defaultAttributes,
2433
+ width: size,
2434
+ height: size,
2435
+ stroke: color,
2436
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
2437
+ className: mergeClasses("lucide", className),
2438
+ ...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
2439
+ ...rest
2440
+ },
2441
+ [
2442
+ ...iconNode.map(([tag, attrs]) => (0, import_react.createElement)(tag, attrs)),
2443
+ ...Array.isArray(children) ? children : [children]
2444
+ ]
2445
+ )
2446
+ );
2447
+
2448
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/createLucideIcon.js
2449
+ var createLucideIcon = (iconName, iconNode) => {
2450
+ const Component = (0, import_react2.forwardRef)(
2451
+ ({ className, ...props }, ref) => (0, import_react2.createElement)(Icon2, {
2452
+ ref,
2453
+ iconNode,
2454
+ className: mergeClasses(
2455
+ `lucide-${toKebabCase(toPascalCase(iconName))}`,
2456
+ `lucide-${iconName}`,
2457
+ className
2458
+ ),
2459
+ ...props
2460
+ })
2461
+ );
2462
+ Component.displayName = toPascalCase(iconName);
2463
+ return Component;
2464
+ };
2465
+
2466
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/chevron-right.js
2467
+ var __iconNode = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
2468
+ var ChevronRight = createLucideIcon("chevron-right", __iconNode);
2469
+
2470
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/ellipsis.js
2471
+ var __iconNode2 = [
2472
+ ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
2473
+ ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
2474
+ ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
2475
+ ];
2476
+ var Ellipsis = createLucideIcon("ellipsis", __iconNode2);
2477
+
2478
+ // src/components/ui/dialog.tsx
2479
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1764
2480
 
1765
2481
  // src/components/ui/command.tsx
1766
- var import_jsx_runtime26 = require("react/jsx-runtime");
2482
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1767
2483
  function Command({
1768
2484
  className,
1769
2485
  ...props
1770
2486
  }) {
1771
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2487
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1772
2488
  import_cmdk.Command,
1773
2489
  {
1774
2490
  "data-slot": "command",
@@ -1784,14 +2500,14 @@ function CommandInput({
1784
2500
  className,
1785
2501
  ...props
1786
2502
  }) {
1787
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2503
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
1788
2504
  "div",
1789
2505
  {
1790
2506
  "data-slot": "command-input-wrapper",
1791
2507
  className: "flex h-9 items-center gap-2 border-b px-3",
1792
2508
  children: [
1793
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_icons8.SearchIcon, { className: "size-4 shrink-0 opacity-50 text-(--color-secondary)" }),
1794
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2509
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_icons10.SearchIcon, { className: "size-4 shrink-0 opacity-50 text-(--color-secondary)" }),
2510
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1795
2511
  import_cmdk.Command.Input,
1796
2512
  {
1797
2513
  "data-slot": "command-input",
@@ -1810,7 +2526,7 @@ function CommandList({
1810
2526
  className,
1811
2527
  ...props
1812
2528
  }) {
1813
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2529
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1814
2530
  import_cmdk.Command.List,
1815
2531
  {
1816
2532
  "data-slot": "command-list",
@@ -1825,7 +2541,7 @@ function CommandList({
1825
2541
  function CommandEmpty({
1826
2542
  ...props
1827
2543
  }) {
1828
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2544
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1829
2545
  import_cmdk.Command.Empty,
1830
2546
  {
1831
2547
  "data-slot": "command-empty",
@@ -1838,7 +2554,7 @@ function CommandGroup({
1838
2554
  className,
1839
2555
  ...props
1840
2556
  }) {
1841
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2557
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1842
2558
  import_cmdk.Command.Group,
1843
2559
  {
1844
2560
  "data-slot": "command-group",
@@ -1854,7 +2570,7 @@ function CommandItem({
1854
2570
  className,
1855
2571
  ...props
1856
2572
  }) {
1857
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2573
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1858
2574
  import_cmdk.Command.Item,
1859
2575
  {
1860
2576
  "data-slot": "command-item",
@@ -1868,18 +2584,18 @@ function CommandItem({
1868
2584
  }
1869
2585
 
1870
2586
  // src/components/ui/popover.tsx
1871
- var React25 = require("react");
2587
+ var React29 = require("react");
1872
2588
  var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
1873
- var import_jsx_runtime27 = require("react/jsx-runtime");
2589
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1874
2590
  function Popover({
1875
2591
  ...props
1876
2592
  }) {
1877
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
2593
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
1878
2594
  }
1879
2595
  function PopoverTrigger({
1880
2596
  ...props
1881
2597
  }) {
1882
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
2598
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
1883
2599
  }
1884
2600
  function PopoverContent({
1885
2601
  className,
@@ -1887,7 +2603,7 @@ function PopoverContent({
1887
2603
  sideOffset = 4,
1888
2604
  ...props
1889
2605
  }) {
1890
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2606
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1891
2607
  PopoverPrimitive.Content,
1892
2608
  {
1893
2609
  "data-slot": "popover-content",
@@ -1903,22 +2619,22 @@ function PopoverContent({
1903
2619
  }
1904
2620
 
1905
2621
  // src/components/ui/scroll-area.tsx
1906
- var React26 = require("react");
2622
+ var React30 = require("react");
1907
2623
  var ScrollAreaPrimitive = __toESM(require("@radix-ui/react-scroll-area"), 1);
1908
- var import_jsx_runtime28 = require("react/jsx-runtime");
2624
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1909
2625
  function ScrollArea({
1910
2626
  className,
1911
2627
  children,
1912
2628
  ...props
1913
2629
  }) {
1914
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
2630
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
1915
2631
  ScrollAreaPrimitive.Root,
1916
2632
  {
1917
2633
  "data-slot": "scroll-area",
1918
2634
  className: cn("relative", className),
1919
2635
  ...props,
1920
2636
  children: [
1921
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2637
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1922
2638
  ScrollAreaPrimitive.Viewport,
1923
2639
  {
1924
2640
  "data-slot": "scroll-area-viewport",
@@ -1926,8 +2642,8 @@ function ScrollArea({
1926
2642
  children
1927
2643
  }
1928
2644
  ),
1929
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ScrollBar, {}),
1930
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ScrollAreaPrimitive.Corner, {})
2645
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ScrollBar, {}),
2646
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ScrollAreaPrimitive.Corner, {})
1931
2647
  ]
1932
2648
  }
1933
2649
  );
@@ -1937,7 +2653,7 @@ function ScrollBar({
1937
2653
  orientation = "vertical",
1938
2654
  ...props
1939
2655
  }) {
1940
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2656
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1941
2657
  ScrollAreaPrimitive.ScrollAreaScrollbar,
1942
2658
  {
1943
2659
  "data-slot": "scroll-area-scrollbar",
@@ -1950,7 +2666,7 @@ function ScrollBar({
1950
2666
  className
1951
2667
  ),
1952
2668
  ...props,
1953
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2669
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1954
2670
  ScrollAreaPrimitive.ScrollAreaThumb,
1955
2671
  {
1956
2672
  "data-slot": "scroll-area-thumb",
@@ -1962,10 +2678,10 @@ function ScrollBar({
1962
2678
  }
1963
2679
 
1964
2680
  // src/components/Inputs/PhoneInput.tsx
1965
- var import_class_variance_authority16 = require("class-variance-authority");
1966
- var import_jsx_runtime29 = require("react/jsx-runtime");
2681
+ var import_class_variance_authority18 = require("class-variance-authority");
2682
+ var import_jsx_runtime33 = require("react/jsx-runtime");
1967
2683
  var inputBase = "h-full rounded-4 border-(--border-secondary) bg-(--background-primary) hover:border-(--border-secondary-hover)";
1968
- var sizeBase = (0, import_class_variance_authority16.cva)(
2684
+ var sizeBase = (0, import_class_variance_authority18.cva)(
1969
2685
  "flex w-full",
1970
2686
  {
1971
2687
  variants: {
@@ -1978,7 +2694,7 @@ var sizeBase = (0, import_class_variance_authority16.cva)(
1978
2694
  }
1979
2695
  }
1980
2696
  );
1981
- var inputTextVariants = (0, import_class_variance_authority16.cva)("", {
2697
+ var inputTextVariants2 = (0, import_class_variance_authority18.cva)("", {
1982
2698
  variants: {
1983
2699
  size: {
1984
2700
  sm: "paragraph-md",
@@ -1994,12 +2710,41 @@ var inputTextVariants = (0, import_class_variance_authority16.cva)("", {
1994
2710
  size: "lg"
1995
2711
  }
1996
2712
  });
2713
+ var dropdownWidthVariants = (0, import_class_variance_authority18.cva)("", {
2714
+ variants: {
2715
+ size: {
2716
+ sm: "min-w-70",
2717
+ md: "min-w-72",
2718
+ lg: "min-w-80",
2719
+ xl: "min-w-96"
2720
+ }
2721
+ },
2722
+ defaultVariants: {
2723
+ size: "lg"
2724
+ }
2725
+ });
1997
2726
  var wrapperStatusClass = {
1998
2727
  default: "input-default-nested",
1999
2728
  success: "input-success-nested",
2000
2729
  error: "input-error-nested"
2001
2730
  };
2002
- var PhoneInput = React27.forwardRef(
2731
+ var countryOptionVariants = (0, import_class_variance_authority18.cva)(
2732
+ "gap-2 pl-(--space-8) pr-(--space-16) text-left text-primary cursor-pointer hover:bg-(--background-secondary) data-[selected=true]:bg-(--background-secondary) data-[selected=true]:text-primary",
2733
+ {
2734
+ variants: {
2735
+ size: {
2736
+ sm: "paragraph-sm py-(--space-4)",
2737
+ md: "paragraph-md py-(--space-6)",
2738
+ lg: "paragraph-lg py-(--space-8)",
2739
+ xl: "subtitle py-(--space-10)"
2740
+ }
2741
+ },
2742
+ defaultVariants: {
2743
+ size: "lg"
2744
+ }
2745
+ }
2746
+ );
2747
+ var PhoneInput = React31.forwardRef(
2003
2748
  (props, ref) => {
2004
2749
  const {
2005
2750
  className,
@@ -2014,7 +2759,7 @@ var PhoneInput = React27.forwardRef(
2014
2759
  status = "default",
2015
2760
  ...rest
2016
2761
  } = props;
2017
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2762
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2018
2763
  Field,
2019
2764
  {
2020
2765
  label,
@@ -2023,16 +2768,16 @@ var PhoneInput = React27.forwardRef(
2023
2768
  status,
2024
2769
  disabled,
2025
2770
  className,
2026
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: cn("w-full", wrapperStatusClass[status]), children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2771
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: cn("w-full", wrapperStatusClass[status]), children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2027
2772
  RPNInput.default,
2028
2773
  {
2029
2774
  ref,
2030
2775
  className: cn(
2031
2776
  sizeBase({ size }),
2032
- inputTextVariants({ size, disabled })
2777
+ inputTextVariants2({ size, disabled })
2033
2778
  ),
2034
2779
  flagComponent: FlagComponent,
2035
- countrySelectComponent: CountrySelect,
2780
+ countrySelectComponent: (countrySelectProps) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CountrySelect, { ...countrySelectProps, size }),
2036
2781
  inputComponent: InputComponent,
2037
2782
  smartCaret: false,
2038
2783
  value: value || void 0,
@@ -2049,9 +2794,9 @@ var PhoneInput = React27.forwardRef(
2049
2794
  }
2050
2795
  );
2051
2796
  PhoneInput.displayName = "PhoneInput";
2052
- var InputComponent = React27.forwardRef((props, ref) => {
2797
+ var InputComponent = React31.forwardRef((props, ref) => {
2053
2798
  const { className, ...rest } = props;
2054
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2799
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2055
2800
  Input,
2056
2801
  {
2057
2802
  ref,
@@ -2066,22 +2811,25 @@ var CountrySelect = ({
2066
2811
  disabled,
2067
2812
  value: selectedCountry,
2068
2813
  options: countryList,
2069
- onChange
2814
+ onChange,
2815
+ size = "lg"
2070
2816
  }) => {
2071
- const scrollAreaRef = React27.useRef(null);
2072
- const [searchValue, setSearchValue] = React27.useState("");
2073
- const [isOpen, setIsOpen] = React27.useState(false);
2074
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2817
+ const scrollAreaRef = React31.useRef(null);
2818
+ const [searchValue, setSearchValue] = React31.useState("");
2819
+ const [isOpen, setIsOpen] = React31.useState(false);
2820
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2075
2821
  Popover,
2076
2822
  {
2077
2823
  open: isOpen,
2078
2824
  modal: true,
2079
2825
  onOpenChange: (open) => {
2080
2826
  setIsOpen(open);
2081
- open && setSearchValue("");
2827
+ if (open) {
2828
+ setSearchValue("");
2829
+ }
2082
2830
  },
2083
2831
  children: [
2084
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2832
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2085
2833
  Button2,
2086
2834
  {
2087
2835
  type: "button",
@@ -2089,15 +2837,15 @@ var CountrySelect = ({
2089
2837
  className: cn(inputBase, "flex gap-1 rounded-4 px-3 focus:z-10 mr-(--space-12) text-primary-disabled hover:text-(--color-primary-hover) focus:text-(--color-primary-focus)"),
2090
2838
  disabled,
2091
2839
  children: [
2092
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2840
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2093
2841
  FlagComponent,
2094
2842
  {
2095
2843
  country: selectedCountry,
2096
2844
  countryName: selectedCountry
2097
2845
  }
2098
2846
  ),
2099
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2100
- import_icons9.CodeIcon,
2847
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2848
+ import_icons11.CodeIcon,
2101
2849
  {
2102
2850
  className: cn(
2103
2851
  "-mr-2 size-4 opacity-50 rotate-90",
@@ -2108,13 +2856,17 @@ var CountrySelect = ({
2108
2856
  ]
2109
2857
  }
2110
2858
  ) }),
2111
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2859
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2112
2860
  PopoverContent,
2113
2861
  {
2114
2862
  align: "start",
2115
- className: "p-0 bg-(--background-primary) shadow-card-md rounded-4 border-none outline-1 outline-solid outline-(--border-secondary-hover) **:data-[slot='command-input-wrapper']:border-b-(--border-secondary)",
2116
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Command, { children: [
2117
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2863
+ className: cn(
2864
+ "p-0 **:data-[slot='command-input-wrapper']:border-b-(--border-secondary)",
2865
+ dropdownWidthVariants({ size }),
2866
+ dropdownSurfaceClass
2867
+ ),
2868
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Command, { className: "bg-transparent", children: [
2869
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2118
2870
  CommandInput,
2119
2871
  {
2120
2872
  value: searchValue,
@@ -2134,17 +2886,18 @@ var CountrySelect = ({
2134
2886
  placeholder: "Search country..."
2135
2887
  }
2136
2888
  ),
2137
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CommandList, { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(ScrollArea, { ref: scrollAreaRef, className: "h-72", children: [
2138
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CommandEmpty, { children: "No country found." }),
2139
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CommandGroup, { className: "[&>div>div]:pl-4 [&>div>div]:pr-2 [&>div>div]:py-2 [&>div>div]:border-b [&>div>div]:border-b-(--border-secondary) [&>div>div]:cursor-pointer [&>div>div]:hover:bg-(--background-primary-hover) [&>div>div]:text-primary [&>div>div]:hover:text-primary p-0 pr-4", children: countryList.map(
2140
- ({ value, label }) => value ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2889
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CommandList, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(ScrollArea, { ref: scrollAreaRef, className: "max-h-79", children: [
2890
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CommandEmpty, { children: "No country found." }),
2891
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CommandGroup, { className: "p-0", children: countryList.map(
2892
+ ({ value, label }) => value ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2141
2893
  CountrySelectOption,
2142
2894
  {
2143
2895
  country: value,
2144
2896
  countryName: label,
2145
2897
  selectedCountry,
2146
2898
  onChange,
2147
- onSelectComplete: () => setIsOpen(false)
2899
+ onSelectComplete: () => setIsOpen(false),
2900
+ size
2148
2901
  },
2149
2902
  value
2150
2903
  ) : null
@@ -2163,23 +2916,24 @@ var CountrySelectOption = (props) => {
2163
2916
  countryName,
2164
2917
  selectedCountry,
2165
2918
  onChange,
2166
- onSelectComplete
2919
+ onSelectComplete,
2920
+ size = "lg"
2167
2921
  } = props;
2168
2922
  const handleSelect = () => {
2169
2923
  onChange(country);
2170
2924
  onSelectComplete();
2171
2925
  };
2172
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2926
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2173
2927
  CommandItem,
2174
2928
  {
2175
- className: "gap-2 data-[selected=true]:text-primary",
2929
+ className: cn(countryOptionVariants({ size })),
2176
2930
  onSelect: handleSelect,
2177
2931
  children: [
2178
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(FlagComponent, { country, countryName }),
2179
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "flex-1 text-sm", children: countryName }),
2180
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "text-sm text-foreground/50", children: `+${RPNInput.getCountryCallingCode(country)}` }),
2181
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2182
- import_icons9.CheckIcon,
2932
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(FlagComponent, { country, countryName }),
2933
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "flex-1", children: countryName }),
2934
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-foreground/50", children: `+${RPNInput.getCountryCallingCode(country)}` }),
2935
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2936
+ import_icons11.CheckIcon,
2183
2937
  {
2184
2938
  className: `ml-auto size-4 ${country === selectedCountry ? "opacity-100" : "opacity-0"}`
2185
2939
  }
@@ -2190,14 +2944,13 @@ var CountrySelectOption = (props) => {
2190
2944
  };
2191
2945
  var FlagComponent = ({ country, countryName }) => {
2192
2946
  const Flag = import_flags.default[country];
2193
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "flex h-4 w-6 overflow-hidden rounded-2 bg-foreground/20 [&_svg:not([class*='size-'])]:size-full", children: Flag && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Flag, { title: countryName }) });
2947
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "flex h-4 w-6 overflow-hidden rounded-2 bg-foreground/20 [&_svg:not([class*='size-'])]:size-full", children: Flag && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Flag, { title: countryName }) });
2194
2948
  };
2195
2949
 
2196
2950
  // src/components/Inputs/RadioGroup.tsx
2197
- var React28 = __toESM(require("react"), 1);
2951
+ var React32 = __toESM(require("react"), 1);
2198
2952
  var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
2199
- var import_jsx_runtime30 = require("react/jsx-runtime");
2200
- var wrapperBase = "flex flex-col gap-2 items-start";
2953
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2201
2954
  var RadioGroup = ({
2202
2955
  label,
2203
2956
  hint,
@@ -2211,131 +2964,110 @@ var RadioGroup = ({
2211
2964
  className,
2212
2965
  ...rootProps
2213
2966
  }) => {
2214
- const groupId = React28.useId();
2967
+ const groupId = React32.useId();
2215
2968
  const hintId = hint ? `${groupId}-hint` : void 0;
2216
2969
  const handleValueChange = (next) => {
2217
2970
  onValueChange?.(next);
2218
2971
  };
2219
2972
  const isHorizontal = orientation === "horizontal";
2220
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: wrapperBase, children: [
2221
- label && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2222
- "span",
2223
- {
2224
- className: cn(
2225
- "paragraph-sm text-primary",
2226
- disabled && "text-primary-disabled"
2227
- ),
2228
- children: label
2229
- }
2230
- ),
2231
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2232
- RadioGroupPrimitive.Root,
2233
- {
2234
- ...rootProps,
2235
- value,
2236
- defaultValue,
2237
- onValueChange: handleValueChange,
2238
- "aria-describedby": hintId,
2239
- className: cn(
2240
- "flex",
2241
- isHorizontal ? "flex-row gap-6" : "flex-col gap-2",
2242
- className
2243
- ),
2244
- children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2245
- RadioGroupPrimitive.Item,
2246
- {
2247
- value: option.value,
2248
- disabled: disabled || option.disabled,
2249
- asChild: true,
2250
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2251
- "button",
2252
- {
2253
- type: "button",
2254
- className: cn(
2255
- "group inline-flex items-center gap-2 outline-none",
2256
- "data-[disabled]:pointer-events-none",
2257
- disabled || option.disabled ? "cursor-default" : "cursor-pointer"
2973
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2974
+ Field,
2975
+ {
2976
+ label,
2977
+ hint,
2978
+ hideHint,
2979
+ disabled,
2980
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2981
+ RadioGroupPrimitive.Root,
2982
+ {
2983
+ ...rootProps,
2984
+ value,
2985
+ defaultValue,
2986
+ onValueChange: handleValueChange,
2987
+ disabled,
2988
+ "aria-describedby": hintId,
2989
+ className: cn(
2990
+ "flex",
2991
+ isHorizontal ? "flex-row gap-6" : "flex-col gap-2",
2992
+ className
2993
+ ),
2994
+ children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "relative inline-flex", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
2995
+ RadioGroupPrimitive.Item,
2996
+ {
2997
+ value: option.value,
2998
+ disabled: disabled || option.disabled,
2999
+ className: cn(
3000
+ "group inline-flex items-center gap-2 outline-none",
3001
+ "data-disabled:pointer-events-none",
3002
+ disabled || option.disabled ? "cursor-default" : "cursor-pointer"
3003
+ ),
3004
+ children: [
3005
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3006
+ "span",
3007
+ {
3008
+ className: cn(
3009
+ "flex items-center justify-center shrink-0 h-5 w-5 rounded-full border bg-(--background-primary) transition-all",
3010
+ // 1: enabled, unchecked, unfocused, unhovered
3011
+ "group-data-[state=unchecked]:border-(--border-secondary)",
3012
+ // 2: enabled, checked, unfocused, unhovered
3013
+ "group-data-[state=checked]:border-(--border-brand)",
3014
+ // 3: enabled, unchecked, hovered, unfocused
3015
+ "group-data-[state=unchecked]:group-hover:border-(--border-secondary-hover)",
3016
+ // 4: enabled, checked, hovered, unfocused
3017
+ "group-data-[state=checked]:group-hover:border-(--border-brand-hover)",
3018
+ "group-data-[state=checked]:group-hover:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-secondary)]",
3019
+ // 5: enabled, unchecked, focused (override 1/3)
3020
+ "group-data-[state=unchecked]:group-focus-visible:border-(--border-secondary-hover)",
3021
+ // 6: enabled, checked, focused (override 2/4)
3022
+ "group-data-[state=checked]:group-focus-visible:border-(--border-brand-focus)",
3023
+ "group-data-[state=checked]:group-focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)]",
3024
+ // 7: disabled, unchecked (override everything above)
3025
+ "group-[&[data-disabled][data-state=unchecked]]:border-none",
3026
+ "group-[&[data-disabled][data-state=unchecked]]:bg-(--background-primary-disabled)",
3027
+ // 8: disabled, checked (override everything above)
3028
+ "group-[&[data-disabled][data-state=checked]]:border-(--border-primary-disabled)",
3029
+ "group-[&[data-disabled][data-state=checked]]:bg-(--background-primary-disabled)"
3030
+ ),
3031
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3032
+ "span",
3033
+ {
3034
+ className: cn(
3035
+ "h-4 w-4 rounded-full bg-(--background-brand) scale-0 transition-transform",
3036
+ "group-data-[state=checked]:scale-100",
3037
+ "group-data-[state=checked]:group-hover:bg-(--background-brand-hover)",
3038
+ "group-data-[state=checked]:group-focus-visible:bg-(--background-brand-hover)",
3039
+ "group-[&[data-disabled][data-state=checked]]:bg-(--background-brand-disabled)",
3040
+ "group-[&[data-disabled][data-state=unchecked]]:scale-0"
3041
+ )
3042
+ }
3043
+ )
3044
+ }
2258
3045
  ),
2259
- children: [
2260
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2261
- "span",
2262
- {
2263
- className: cn(
2264
- "flex items-center justify-center shrink-0 h-5 w-5 rounded-full border bg-(--background-primary) transition-all",
2265
- // 1: enabled, unchecked, unfocused, unhovered
2266
- "group-data-[state=unchecked]:border-(--border-secondary)",
2267
- // 2: enabled, checked, unfocused, unhovered
2268
- "group-data-[state=checked]:border-(--border-brand)",
2269
- // 3: enabled, unchecked, hovered, unfocused
2270
- "group-data-[state=unchecked]:group-hover:border-(--border-secondary-hover)",
2271
- // 4: enabled, checked, hovered, unfocused
2272
- "group-data-[state=checked]:group-hover:border-(--border-brand-hover)",
2273
- "group-data-[state=checked]:group-hover:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-secondary)]",
2274
- // 5: enabled, unchecked, focused (override 1/3)
2275
- "group-data-[state=unchecked]:group-focus-visible:border-(--border-secondary-hover)",
2276
- // 6: enabled, checked, focused (override 2/4)
2277
- "group-data-[state=checked]:group-focus-visible:border-(--border-brand-focus)",
2278
- "group-data-[state=checked]:group-focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)]",
2279
- // 7: disabled, unchecked (override everything above)
2280
- "group-[&[data-disabled][data-state=unchecked]]:border-none",
2281
- "group-[&[data-disabled][data-state=unchecked]]:bg-(--background-primary-disabled)",
2282
- // 8: disabled, checked (override everything above)
2283
- "group-[&[data-disabled][data-state=checked]]:border-(--border-primary-disabled)",
2284
- "group-[&[data-disabled][data-state=checked]]:bg-(--background-primary-disabled)"
2285
- ),
2286
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2287
- "span",
2288
- {
2289
- className: cn(
2290
- "h-4 w-4 rounded-full bg-(--background-brand) scale-0 transition-transform",
2291
- "group-data-[state=checked]:scale-100",
2292
- "group-data-[state=checked]:group-hover:bg-(--background-brand-hover)",
2293
- "group-data-[state=checked]:group-focus-visible:bg-(--background-brand-hover)",
2294
- "group-[&[data-disabled][data-state=checked]]:bg-(--background-brand-disabled)",
2295
- "group-[&[data-disabled][data-state=unchecked]]:scale-0"
2296
- )
2297
- }
2298
- )
2299
- }
2300
- ),
2301
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2302
- "span",
2303
- {
2304
- className: cn(
2305
- "paragraph-sm text-primary",
2306
- "group-data-[disabled]:text-primary-disabled whitespace-nowrap"
2307
- ),
2308
- children: option.label
2309
- }
2310
- )
2311
- ]
2312
- }
2313
- )
2314
- },
2315
- option.value
2316
- ))
2317
- }
2318
- ),
2319
- !hideHint && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2320
- "p",
2321
- {
2322
- id: hintId,
2323
- className: cn(
2324
- "caption text-(--color-secondary)",
2325
- disabled && "text-primary-disabled"
2326
- ),
2327
- children: hint ?? "\xA0"
2328
- }
2329
- )
2330
- ] });
3046
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3047
+ "span",
3048
+ {
3049
+ className: cn(
3050
+ "paragraph-sm text-primary",
3051
+ "group-data-disabled:text-primary-disabled whitespace-nowrap"
3052
+ ),
3053
+ children: option.label
3054
+ }
3055
+ )
3056
+ ]
3057
+ }
3058
+ ) }, option.value))
3059
+ }
3060
+ )
3061
+ }
3062
+ );
2331
3063
  };
2332
3064
 
2333
3065
  // src/components/Inputs/SearchInput.tsx
2334
- var React29 = __toESM(require("react"), 1);
2335
- var import_class_variance_authority17 = require("class-variance-authority");
2336
- var import_icons10 = require("@bubo-squared/icons");
2337
- var import_jsx_runtime31 = require("react/jsx-runtime");
2338
- var searchTextVariants = (0, import_class_variance_authority17.cva)("truncate", {
3066
+ var React33 = __toESM(require("react"), 1);
3067
+ var import_class_variance_authority19 = require("class-variance-authority");
3068
+ var import_icons12 = require("@bubo-squared/icons");
3069
+ var import_jsx_runtime35 = require("react/jsx-runtime");
3070
+ var searchTextVariants = (0, import_class_variance_authority19.cva)("truncate", {
2339
3071
  variants: {
2340
3072
  size: {
2341
3073
  sm: "paragraph-md",
@@ -2348,7 +3080,7 @@ var searchTextVariants = (0, import_class_variance_authority17.cva)("truncate",
2348
3080
  size: "lg"
2349
3081
  }
2350
3082
  });
2351
- var iconWrapperVariants2 = (0, import_class_variance_authority17.cva)("flex items-center justify-center shrink-0 text-(--icon-primary)", {
3083
+ var iconWrapperVariants3 = (0, import_class_variance_authority19.cva)("flex items-center justify-center shrink-0 text-(--icon-primary)", {
2352
3084
  variants: {
2353
3085
  size: {
2354
3086
  sm: "size-4 [&>svg]:size-4",
@@ -2375,13 +3107,13 @@ var SearchInput = (props) => {
2375
3107
  trailingIcon,
2376
3108
  ...inputProps
2377
3109
  } = props;
2378
- const inputRef = React29.useRef(null);
3110
+ const inputRef = React33.useRef(null);
2379
3111
  const handleContainerClick = () => {
2380
3112
  if (disabled) return;
2381
3113
  inputRef.current?.focus();
2382
3114
  };
2383
3115
  const showTrailingIcon = !!trailingIcon;
2384
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "flex flex-col gap-2 items-start", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "relative w-full", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
3116
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "flex flex-col gap-2 items-start w-full", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "relative w-full", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
2385
3117
  InputShell,
2386
3118
  {
2387
3119
  size,
@@ -2390,8 +3122,8 @@ var SearchInput = (props) => {
2390
3122
  className,
2391
3123
  onClick: handleContainerClick,
2392
3124
  children: [
2393
- showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: cn(iconWrapperVariants2({ size, disabled: !!disabled })), children: leadingIcon ?? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_icons10.SearchIcon, {}) }),
2394
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3125
+ showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: cn(iconWrapperVariants3({ size, disabled: !!disabled })), children: leadingIcon ?? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_icons12.SearchIcon, {}) }),
3126
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2395
3127
  Input,
2396
3128
  {
2397
3129
  ref: inputRef,
@@ -2405,7 +3137,7 @@ var SearchInput = (props) => {
2405
3137
  ...inputProps
2406
3138
  }
2407
3139
  ),
2408
- showTrailingIcon && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: cn("cursor-pointer", iconWrapperVariants2({ size, disabled: !!disabled })), children: trailingIcon })
3140
+ showTrailingIcon && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: cn("cursor-pointer", iconWrapperVariants3({ size, disabled: !!disabled })), children: trailingIcon })
2409
3141
  ]
2410
3142
  }
2411
3143
  ) }) });
@@ -2413,9 +3145,9 @@ var SearchInput = (props) => {
2413
3145
  SearchInput.displayName = "SearchInput";
2414
3146
 
2415
3147
  // src/components/Inputs/Slider.tsx
2416
- var React30 = __toESM(require("react"), 1);
2417
- var import_jsx_runtime32 = require("react/jsx-runtime");
2418
- var wrapperBase2 = "flex flex-col gap-2 items-start";
3148
+ var React34 = __toESM(require("react"), 1);
3149
+ var import_jsx_runtime36 = require("react/jsx-runtime");
3150
+ var wrapperBase = "flex flex-col gap-2 items-start";
2419
3151
  var isRangeProps = (props) => {
2420
3152
  return Array.isArray(props.value) || Array.isArray(props.defaultValue);
2421
3153
  };
@@ -2425,6 +3157,7 @@ var toArray = (value) => {
2425
3157
  };
2426
3158
  var Slider = (props) => {
2427
3159
  const {
3160
+ name,
2428
3161
  display = "flat",
2429
3162
  tooltipPlacement = "top",
2430
3163
  tooltipFormatter,
@@ -2440,7 +3173,7 @@ var Slider = (props) => {
2440
3173
  const isRange = isRangeProps(props);
2441
3174
  const isControlled = value !== void 0;
2442
3175
  const expectedLength = isRange ? 2 : 1;
2443
- const normalizeArray = React30.useCallback(
3176
+ const normalizeArray = React34.useCallback(
2444
3177
  (arr, fallback) => {
2445
3178
  if (!arr || arr.length === 0) return fallback;
2446
3179
  if (arr.length === expectedLength) return arr;
@@ -2452,16 +3185,16 @@ var Slider = (props) => {
2452
3185
  },
2453
3186
  [expectedLength, max]
2454
3187
  );
2455
- const defaultInternal = React30.useMemo(() => {
3188
+ const defaultInternal = React34.useMemo(() => {
2456
3189
  const defaultValueArray = toArray(defaultValue);
2457
3190
  if (defaultValueArray) return normalizeArray(defaultValueArray, []);
2458
3191
  if (isRange) return [min, Math.min(min + (max - min) / 4, max)];
2459
3192
  return [min + (max - min) / 3];
2460
3193
  }, [defaultValue, min, max, isRange, normalizeArray]);
2461
- const [internalValue, setInternalValue] = React30.useState(
3194
+ const [internalValue, setInternalValue] = React34.useState(
2462
3195
  () => normalizeArray(isControlled ? toArray(value) : defaultInternal, defaultInternal)
2463
3196
  );
2464
- React30.useEffect(() => {
3197
+ React34.useEffect(() => {
2465
3198
  if (isControlled) {
2466
3199
  setInternalValue(
2467
3200
  (current2) => normalizeArray(toArray(value), current2.length ? current2 : defaultInternal)
@@ -2469,32 +3202,15 @@ var Slider = (props) => {
2469
3202
  }
2470
3203
  }, [isControlled, value, normalizeArray, defaultInternal]);
2471
3204
  const current = internalValue;
2472
- const trackRef = React30.useRef(null);
2473
- const [draggingThumbIndex, setDraggingThumbIndex] = React30.useState(null);
2474
- const [hoveredThumbIndex, setHoveredThumbIndex] = React30.useState(null);
2475
- const clamp = (val) => {
3205
+ const trackRef = React34.useRef(null);
3206
+ const [draggingThumbIndex, setDraggingThumbIndex] = React34.useState(null);
3207
+ const [hoveredThumbIndex, setHoveredThumbIndex] = React34.useState(null);
3208
+ const clamp = React34.useCallback((val) => {
2476
3209
  if (val < min) return min;
2477
3210
  if (val > max) return max;
2478
3211
  return val;
2479
- };
2480
- React30.useEffect(() => {
2481
- if (!isControlled) {
2482
- setInternalValue((prev) => {
2483
- const clamped = prev.map((v) => clamp(v));
2484
- if (isRange && clamped.length === 2 && step > 0) {
2485
- return enforceMinGap(clamped, prev);
2486
- }
2487
- return clamped;
2488
- });
2489
- }
2490
- }, [isControlled, min, max, isRange]);
2491
- const snap = (val) => {
2492
- const range = max - min;
2493
- if (range <= 0 || step <= 0) return clamp(val);
2494
- const stepsFromMin = Math.round((val - min) / step);
2495
- return clamp(min + stepsFromMin * step);
2496
- };
2497
- const enforceMinGap = (next, prev) => {
3212
+ }, [min, max]);
3213
+ const enforceMinGap = React34.useCallback((next, prev) => {
2498
3214
  if (!isRange || next.length !== 2 || step <= 0) return next;
2499
3215
  let [low, high] = next;
2500
3216
  const [prevLow, prevHigh] = prev.length === 2 ? prev : next;
@@ -2517,6 +3233,23 @@ var Slider = (props) => {
2517
3233
  }
2518
3234
  }
2519
3235
  return [low, high];
3236
+ }, [isRange, step, clamp]);
3237
+ React34.useEffect(() => {
3238
+ if (!isControlled) {
3239
+ setInternalValue((prev) => {
3240
+ const clamped = prev.map((v) => clamp(v));
3241
+ if (isRange && clamped.length === 2 && step > 0) {
3242
+ return enforceMinGap(clamped, prev);
3243
+ }
3244
+ return clamped;
3245
+ });
3246
+ }
3247
+ }, [isControlled, clamp, enforceMinGap, isRange, step]);
3248
+ const snap = (val) => {
3249
+ const range = max - min;
3250
+ if (range <= 0 || step <= 0) return clamp(val);
3251
+ const stepsFromMin = Math.round((val - min) / step);
3252
+ return clamp(min + stepsFromMin * step);
2520
3253
  };
2521
3254
  const updateValue = (next) => {
2522
3255
  let normalized = normalizeArray(next, current);
@@ -2670,7 +3403,7 @@ var Slider = (props) => {
2670
3403
  const trackHeight = 32;
2671
3404
  const thumbWidth = 18;
2672
3405
  const thumbRadius = thumbWidth / 2;
2673
- const renderTooltipBubble = (key, percent, labelText, isVisible) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3406
+ const renderTooltipBubble = (key, percent, labelText, isVisible) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2674
3407
  "div",
2675
3408
  {
2676
3409
  className: cn(
@@ -2685,12 +3418,12 @@ var Slider = (props) => {
2685
3418
  marginBottom: isTooltipAbove ? 8 : void 0,
2686
3419
  marginTop: isTooltipAbove ? void 0 : 8
2687
3420
  },
2688
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
3421
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
2689
3422
  "div",
2690
3423
  {
2691
3424
  className: cn("relative rounded-4 shadow-card-md px-(--space-8) py-(--space-4) bg-(--background-tooltip)"),
2692
3425
  children: [
2693
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3426
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2694
3427
  "p",
2695
3428
  {
2696
3429
  className: cn(
@@ -2700,7 +3433,7 @@ var Slider = (props) => {
2700
3433
  children: labelText
2701
3434
  }
2702
3435
  ),
2703
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3436
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2704
3437
  "div",
2705
3438
  {
2706
3439
  className: cn(
@@ -2718,7 +3451,7 @@ var Slider = (props) => {
2718
3451
  const renderHandle = (index, percent, ariaValueText) => {
2719
3452
  const val = index === 0 ? primary : secondary;
2720
3453
  const isDragging = draggingThumbIndex === index;
2721
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3454
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2722
3455
  "button",
2723
3456
  {
2724
3457
  type: "button",
@@ -2739,7 +3472,7 @@ var Slider = (props) => {
2739
3472
  style: {
2740
3473
  left: `${percent}%`,
2741
3474
  top: `calc(50% - ${trackHeight / 2}px)`,
2742
- ["--slider-halo-color"]: "color-mix(in srgb, var(--color-brand) 10%, transparent)"
3475
+ "--slider-halo-color": "color-mix(in srgb, var(--color-brand) 10%, transparent)"
2743
3476
  },
2744
3477
  onPointerEnter: () => {
2745
3478
  setHoveredThumbIndex(index);
@@ -2758,76 +3491,97 @@ var Slider = (props) => {
2758
3491
  index
2759
3492
  );
2760
3493
  };
2761
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3494
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
2762
3495
  "div",
2763
3496
  {
2764
- className: wrapperBase2,
3497
+ className: wrapperBase,
2765
3498
  style: { marginInline: `${thumbRadius}px` },
2766
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: cn("w-full flex flex-col gap-1", className), children: [
2767
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "relative w-full", children: [
2768
- showTooltip && primary !== void 0 && renderTooltipBubble(
2769
- "primary",
2770
- primaryPercent,
2771
- formatDisplayValue(primary),
2772
- hoveredThumbIndex === 0 || draggingThumbIndex === 0
2773
- ),
2774
- showTooltip && isRange && secondary !== void 0 && renderTooltipBubble(
2775
- "secondary",
2776
- secondaryPercent,
2777
- formatDisplayValue(secondary),
2778
- hoveredThumbIndex === 1 || draggingThumbIndex === 1
3499
+ children: [
3500
+ name && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
3501
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3502
+ "input",
3503
+ {
3504
+ type: "hidden",
3505
+ name,
3506
+ value: primary === void 0 ? "" : String(primary),
3507
+ disabled
3508
+ }
2779
3509
  ),
2780
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2781
- "div",
3510
+ isRange && secondary !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3511
+ "input",
3512
+ {
3513
+ type: "hidden",
3514
+ name,
3515
+ value: String(secondary),
3516
+ disabled
3517
+ }
3518
+ )
3519
+ ] }),
3520
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: cn("w-full flex flex-col gap-1", className), children: [
3521
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "relative w-full", children: [
3522
+ showTooltip && primary !== void 0 && renderTooltipBubble(
3523
+ "primary",
3524
+ primaryPercent,
3525
+ formatDisplayValue(primary),
3526
+ hoveredThumbIndex === 0 || draggingThumbIndex === 0
3527
+ ),
3528
+ showTooltip && isRange && secondary !== void 0 && renderTooltipBubble(
3529
+ "secondary",
3530
+ secondaryPercent,
3531
+ formatDisplayValue(secondary),
3532
+ hoveredThumbIndex === 1 || draggingThumbIndex === 1
3533
+ ),
3534
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
3535
+ "div",
3536
+ {
3537
+ className: cn(
3538
+ "relative w-full flex items-center rounded-4",
3539
+ disabled ? "bg-(--background-primary-disabled) cursor-default" : "bg-(--background-secondary) cursor-pointer"
3540
+ ),
3541
+ style: { height: `${trackHeight}px` },
3542
+ ref: trackRef,
3543
+ onPointerDown: handleTrackPointerDown,
3544
+ children: [
3545
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3546
+ "div",
3547
+ {
3548
+ className: cn(
3549
+ "absolute h-full rounded-4",
3550
+ disabled ? "bg-(--background-primary-disabled)" : "bg-(--background-secondary)"
3551
+ ),
3552
+ style: {
3553
+ width: `calc(100% + ${thumbWidth}px)`,
3554
+ left: `-${thumbRadius}px`
3555
+ }
3556
+ }
3557
+ ),
3558
+ renderHandle(0, primaryPercent, formatDisplayValue(primary)),
3559
+ isRange && secondary !== void 0 && renderHandle(1, secondaryPercent, formatDisplayValue(secondary))
3560
+ ]
3561
+ }
3562
+ )
3563
+ ] }),
3564
+ showNumeric && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3565
+ "p",
2782
3566
  {
2783
3567
  className: cn(
2784
- "relative w-full flex items-center rounded-4",
2785
- disabled ? "bg-(--background-primary-disabled) cursor-default" : "bg-(--background-secondary) cursor-pointer"
3568
+ "paragraph-sm text-primary",
3569
+ disabled && "text-primary-disabled"
2786
3570
  ),
2787
- style: { height: `${trackHeight}px` },
2788
- ref: trackRef,
2789
- onPointerDown: handleTrackPointerDown,
2790
- children: [
2791
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2792
- "div",
2793
- {
2794
- className: cn(
2795
- "absolute h-full rounded-4",
2796
- disabled ? "bg-(--background-primary-disabled)" : "bg-(--background-secondary)"
2797
- ),
2798
- style: {
2799
- width: `calc(100% + ${thumbWidth}px)`,
2800
- left: `-${thumbRadius}px`
2801
- }
2802
- }
2803
- ),
2804
- renderHandle(0, primaryPercent, formatDisplayValue(primary)),
2805
- isRange && secondary !== void 0 && renderHandle(1, secondaryPercent, formatDisplayValue(secondary))
2806
- ]
3571
+ children: formatNumericLabel()
2807
3572
  }
2808
3573
  )
2809
- ] }),
2810
- showNumeric && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2811
- "p",
2812
- {
2813
- className: cn(
2814
- "paragraph-sm text-primary",
2815
- disabled && "text-primary-disabled"
2816
- ),
2817
- children: formatNumericLabel()
2818
- }
2819
- )
2820
- ] })
3574
+ ] })
3575
+ ]
2821
3576
  }
2822
3577
  );
2823
3578
  };
2824
3579
  Slider.displayName = "Slider";
2825
3580
 
2826
3581
  // src/components/Inputs/TextArea.tsx
2827
- var React31 = __toESM(require("react"), 1);
2828
- var import_icons11 = require("@bubo-squared/icons");
2829
- var import_jsx_runtime33 = require("react/jsx-runtime");
2830
- var wrapperBase3 = "flex flex-col gap-2 items-start w-full";
3582
+ var React35 = __toESM(require("react"), 1);
3583
+ var import_icons13 = require("@bubo-squared/icons");
3584
+ var import_jsx_runtime37 = require("react/jsx-runtime");
2831
3585
  var TextArea = (props) => {
2832
3586
  const {
2833
3587
  label,
@@ -2842,10 +3596,12 @@ var TextArea = (props) => {
2842
3596
  defaultValue,
2843
3597
  onChange,
2844
3598
  rows = 3,
3599
+ id,
3600
+ name,
2845
3601
  ...textareaProps
2846
3602
  } = props;
2847
3603
  const isControlled = value !== void 0;
2848
- const [internalValue, setInternalValue] = React31.useState(
3604
+ const [internalValue, setInternalValue] = React35.useState(
2849
3605
  defaultValue ?? ""
2850
3606
  );
2851
3607
  const currentValue = (isControlled ? value : internalValue) ?? "";
@@ -2853,10 +3609,10 @@ var TextArea = (props) => {
2853
3609
  const currentLength = currentValue.length;
2854
3610
  const effectiveMaxLength = type === "character-limit" ? maxLength ?? 144 : void 0;
2855
3611
  const showCharacterLimit = type === "character-limit" && typeof effectiveMaxLength === "number";
2856
- const textareaRef = React31.useRef(null);
2857
- const containerRef = React31.useRef(null);
2858
- const [height, setHeight] = React31.useState(void 0);
2859
- const [width, setWidth] = React31.useState(void 0);
3612
+ const textareaRef = React35.useRef(null);
3613
+ const containerRef = React35.useRef(null);
3614
+ const [height, setHeight] = React35.useState(void 0);
3615
+ const [width, setWidth] = React35.useState(void 0);
2860
3616
  const minHeight = 80;
2861
3617
  const minWidth = 240;
2862
3618
  const handleContainerClick = () => {
@@ -2869,9 +3625,8 @@ var TextArea = (props) => {
2869
3625
  }
2870
3626
  onChange?.(event);
2871
3627
  };
2872
- const inputId = React31.useId();
2873
- const labelId = `${inputId}-label`;
2874
- const hintId = `${inputId}-hint`;
3628
+ const generatedId = React35.useId();
3629
+ const textareaId = id ?? generatedId;
2875
3630
  const statusBorderClass = {
2876
3631
  default: "",
2877
3632
  success: "border-(--border-success)",
@@ -2882,7 +3637,6 @@ var TextArea = (props) => {
2882
3637
  success: "focus-within:border-(--border-success) focus-within:hover:border-(--border-success) focus-within:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-success)]",
2883
3638
  error: "focus-within:border-(--border-error) focus-within:hover:border-(--border-error) focus-within:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-error)]"
2884
3639
  };
2885
- const hintColorClass = disabled ? "text-primary-disabled" : status === "success" ? "text-(--color-success)" : status === "error" ? "text-(--color-error)" : "text-(--color-secondary)";
2886
3640
  const counterColorClass = disabled ? "text-primary-disabled" : status === "success" ? "text-(--color-success)" : status === "error" ? "text-(--color-error)" : "text-primary";
2887
3641
  const handleResizePointerDown = (event) => {
2888
3642
  if (disabled) return;
@@ -2908,110 +3662,98 @@ var TextArea = (props) => {
2908
3662
  window.addEventListener("pointermove", handlePointerMove);
2909
3663
  window.addEventListener("pointerup", handlePointerUp);
2910
3664
  };
2911
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: wrapperBase3, children: [
2912
- label && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2913
- "label",
2914
- {
2915
- htmlFor: inputId,
2916
- id: labelId,
2917
- className: cn(
2918
- "paragraph-sm",
2919
- disabled ? "text-primary-disabled" : "text-primary"
2920
- ),
2921
- children: label
2922
- }
2923
- ),
2924
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "relative w-full", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2925
- "div",
2926
- {
2927
- className: cn(
2928
- "relative flex w-full rounded-4 border bg-(--background-primary) cursor-text transition-colors",
2929
- "border-(--border-secondary) hover:border-(--border-secondary-hover) hover:bg-(--background-primary-hover)",
2930
- disabled && "bg-(--background-primary-disabled) border-(--border-secondary-disabled) cursor-default",
2931
- statusBorderClass[status],
2932
- !disabled && statusFocusClass[status],
2933
- className
2934
- ),
2935
- ref: containerRef,
2936
- style: {
2937
- ...type === "responsive" && height !== void 0 ? { height } : {},
2938
- ...type === "responsive" && width !== void 0 ? { width } : {}
2939
- },
2940
- onClick: handleContainerClick,
2941
- "aria-disabled": disabled || void 0,
2942
- children: [
2943
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2944
- "textarea",
2945
- {
2946
- id: inputId,
2947
- ref: textareaRef,
2948
- "aria-labelledby": label ? labelId : void 0,
2949
- "aria-describedby": hint ? hintId : void 0,
2950
- disabled: disabled ?? void 0,
2951
- value: isControlled ? value : currentValue,
2952
- defaultValue: isControlled ? void 0 : defaultValue,
2953
- onChange: handleChange,
2954
- rows,
2955
- maxLength: effectiveMaxLength,
2956
- className: cn(
2957
- "paragraph-md bg-transparent outline-none w-full h-full resize-none px-2 py-2 pr-8",
2958
- disabled ? "text-primary-disabled" : hasValue ? "text-primary" : "text-(--color-secondary)",
2959
- showCharacterLimit && "pr-16"
2960
- ),
2961
- ...textareaProps
2962
- }
2963
- ),
2964
- showCharacterLimit && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2965
- "span",
2966
- {
2967
- className: cn(
2968
- "absolute bottom-1 right-1 footnote mb-0!",
2969
- counterColorClass
2970
- ),
2971
- children: [
2972
- currentLength,
2973
- "/",
2974
- effectiveMaxLength
2975
- ]
2976
- }
3665
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3666
+ Field,
3667
+ {
3668
+ className: "w-full",
3669
+ label,
3670
+ hint,
3671
+ hideHint,
3672
+ status,
3673
+ disabled,
3674
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
3675
+ "div",
3676
+ {
3677
+ className: cn(
3678
+ "relative flex w-full rounded-4 border bg-(--background-primary) cursor-text transition-colors",
3679
+ "border-(--border-secondary) hover:border-(--border-secondary-hover) hover:bg-(--background-primary-hover)",
3680
+ disabled && "bg-(--background-primary-disabled) border-(--border-secondary-disabled) cursor-default",
3681
+ statusBorderClass[status],
3682
+ !disabled && statusFocusClass[status],
3683
+ className
2977
3684
  ),
2978
- type === "responsive" && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2979
- "div",
2980
- {
2981
- className: "absolute bottom-1 right-1 h-3 w-3 " + (disabled ? "cursor-auto" : "cursor-nwse-resize"),
2982
- onPointerDown: disabled ? void 0 : handleResizePointerDown,
2983
- children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2984
- "span",
2985
- {
2986
- className: cn(
2987
- "absolute bottom-0 right-0 flex h-4 w-4 items-center justify-center text-(--icon-primary)",
2988
- disabled && "text-(--icon-primary-disabled)"
2989
- ),
2990
- children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_icons11.MaximizeIcon, {})
2991
- }
2992
- )
2993
- }
2994
- )
2995
- ]
2996
- }
2997
- ) }),
2998
- hint && !hideHint && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2999
- "p",
3000
- {
3001
- id: hint ? hintId : void 0,
3002
- className: cn("caption", hint ? hintColorClass : "invisible"),
3003
- children: hint || "\xA0"
3004
- }
3005
- )
3006
- ] });
3685
+ ref: containerRef,
3686
+ style: {
3687
+ ...type === "responsive" && height !== void 0 ? { height } : {},
3688
+ ...type === "responsive" && width !== void 0 ? { width } : {}
3689
+ },
3690
+ onClick: handleContainerClick,
3691
+ "aria-disabled": disabled || void 0,
3692
+ children: [
3693
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3694
+ "textarea",
3695
+ {
3696
+ id: textareaId,
3697
+ name,
3698
+ ref: textareaRef,
3699
+ disabled: disabled ?? void 0,
3700
+ value: isControlled ? value : currentValue,
3701
+ defaultValue: isControlled ? void 0 : defaultValue,
3702
+ onChange: handleChange,
3703
+ rows,
3704
+ maxLength: effectiveMaxLength,
3705
+ className: cn(
3706
+ "paragraph-md bg-transparent outline-none w-full h-full resize-none px-2 py-2 pr-8",
3707
+ disabled ? "text-primary-disabled" : hasValue ? "text-primary" : "text-(--color-secondary)",
3708
+ showCharacterLimit && "pr-16"
3709
+ ),
3710
+ ...textareaProps
3711
+ }
3712
+ ),
3713
+ showCharacterLimit && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
3714
+ "span",
3715
+ {
3716
+ className: cn(
3717
+ "absolute bottom-1 right-1 footnote mb-0!",
3718
+ counterColorClass
3719
+ ),
3720
+ children: [
3721
+ currentLength,
3722
+ "/",
3723
+ effectiveMaxLength
3724
+ ]
3725
+ }
3726
+ ),
3727
+ type === "responsive" && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3728
+ "div",
3729
+ {
3730
+ className: "absolute bottom-1 right-1 h-3 w-3 " + (disabled ? "cursor-auto" : "cursor-nwse-resize"),
3731
+ onPointerDown: disabled ? void 0 : handleResizePointerDown,
3732
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3733
+ "span",
3734
+ {
3735
+ className: cn(
3736
+ "absolute bottom-0 right-0 flex h-4 w-4 items-center justify-center text-(--icon-primary)",
3737
+ disabled && "text-(--icon-primary-disabled)"
3738
+ ),
3739
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_icons13.MaximizeIcon, {})
3740
+ }
3741
+ )
3742
+ }
3743
+ )
3744
+ ]
3745
+ }
3746
+ )
3747
+ }
3748
+ );
3007
3749
  };
3008
3750
  TextArea.displayName = "TextArea";
3009
3751
 
3010
3752
  // src/components/Inputs/TextInput.tsx
3011
- var React32 = __toESM(require("react"), 1);
3012
- var import_class_variance_authority18 = require("class-variance-authority");
3013
- var import_jsx_runtime34 = require("react/jsx-runtime");
3014
- var inputTextVariants2 = (0, import_class_variance_authority18.cva)("truncate", {
3753
+ var React36 = __toESM(require("react"), 1);
3754
+ var import_class_variance_authority20 = require("class-variance-authority");
3755
+ var import_jsx_runtime38 = require("react/jsx-runtime");
3756
+ var inputTextVariants3 = (0, import_class_variance_authority20.cva)("truncate", {
3015
3757
  variants: {
3016
3758
  size: {
3017
3759
  sm: "paragraph-md",
@@ -3024,7 +3766,7 @@ var inputTextVariants2 = (0, import_class_variance_authority18.cva)("truncate",
3024
3766
  size: "lg"
3025
3767
  }
3026
3768
  });
3027
- var iconWrapperVariants3 = (0, import_class_variance_authority18.cva)(
3769
+ var iconWrapperVariants4 = (0, import_class_variance_authority20.cva)(
3028
3770
  "flex items-center justify-center shrink-0 text-(--icon-primary)",
3029
3771
  {
3030
3772
  variants: {
@@ -3061,11 +3803,11 @@ var TextInput = (props) => {
3061
3803
  ...inputProps
3062
3804
  } = props;
3063
3805
  const isControlled = value !== void 0;
3064
- const [internalValue, setInternalValue] = React32.useState(
3806
+ const [internalValue, setInternalValue] = React36.useState(
3065
3807
  defaultValue ?? ""
3066
3808
  );
3067
3809
  const currentValue = (isControlled ? value : internalValue) ?? "";
3068
- const inputRef = React32.useRef(null);
3810
+ const inputRef = React36.useRef(null);
3069
3811
  const handleContainerClick = () => {
3070
3812
  if (disabled) return;
3071
3813
  inputRef.current?.focus();
@@ -3078,7 +3820,7 @@ var TextInput = (props) => {
3078
3820
  };
3079
3821
  const showLeadingIcon = !!leadingIcon;
3080
3822
  const showTrailingIcon = !!trailingIcon;
3081
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3823
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3082
3824
  Field,
3083
3825
  {
3084
3826
  label,
@@ -3086,7 +3828,7 @@ var TextInput = (props) => {
3086
3828
  hideHint,
3087
3829
  status,
3088
3830
  disabled,
3089
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
3831
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
3090
3832
  InputShell,
3091
3833
  {
3092
3834
  size,
@@ -3095,16 +3837,16 @@ var TextInput = (props) => {
3095
3837
  className,
3096
3838
  onClick: handleContainerClick,
3097
3839
  children: [
3098
- showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3840
+ showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3099
3841
  "span",
3100
3842
  {
3101
3843
  className: cn(
3102
- iconWrapperVariants3({ size, disabled })
3844
+ iconWrapperVariants4({ size, disabled })
3103
3845
  ),
3104
3846
  children: leadingIcon
3105
3847
  }
3106
3848
  ),
3107
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3849
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3108
3850
  Input,
3109
3851
  {
3110
3852
  ref: inputRef,
@@ -3116,17 +3858,17 @@ var TextInput = (props) => {
3116
3858
  onChange: handleChange,
3117
3859
  variant: "bare",
3118
3860
  className: cn(
3119
- inputTextVariants2({ size }),
3861
+ inputTextVariants3({ size }),
3120
3862
  "bg-transparent outline-none w-full"
3121
3863
  ),
3122
3864
  ...inputProps
3123
3865
  }
3124
3866
  ),
3125
- showTrailingIcon && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3867
+ showTrailingIcon && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3126
3868
  "span",
3127
3869
  {
3128
3870
  className: cn(
3129
- iconWrapperVariants3({ size, disabled: !!disabled })
3871
+ iconWrapperVariants4({ size, disabled: !!disabled })
3130
3872
  ),
3131
3873
  children: trailingIcon
3132
3874
  }
@@ -3140,11 +3882,11 @@ var TextInput = (props) => {
3140
3882
  TextInput.displayName = "TextInput";
3141
3883
 
3142
3884
  // src/components/Inputs/Toggle.tsx
3143
- var React33 = require("react");
3144
- var import_jsx_runtime35 = require("react/jsx-runtime");
3885
+ var React37 = require("react");
3886
+ var import_jsx_runtime39 = require("react/jsx-runtime");
3145
3887
  var Toggle = (props) => {
3146
3888
  const { label, className, disabled, ...inputProps } = props;
3147
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
3889
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
3148
3890
  "label",
3149
3891
  {
3150
3892
  className: cn(
@@ -3152,8 +3894,8 @@ var Toggle = (props) => {
3152
3894
  disabled ? "cursor-default" : "cursor-pointer"
3153
3895
  ),
3154
3896
  children: [
3155
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { className: "relative inline-flex items-center", children: [
3156
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3897
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("span", { className: "relative inline-flex items-center", children: [
3898
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3157
3899
  "input",
3158
3900
  {
3159
3901
  type: "checkbox",
@@ -3162,7 +3904,7 @@ var Toggle = (props) => {
3162
3904
  ...inputProps
3163
3905
  }
3164
3906
  ),
3165
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3907
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3166
3908
  "span",
3167
3909
  {
3168
3910
  className: cn(
@@ -3202,7 +3944,7 @@ var Toggle = (props) => {
3202
3944
  "peer-disabled:[&>.knob]:peer-checked:bg-(--background-primary-hover)",
3203
3945
  className
3204
3946
  ),
3205
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3947
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3206
3948
  "span",
3207
3949
  {
3208
3950
  className: cn(
@@ -3214,7 +3956,7 @@ var Toggle = (props) => {
3214
3956
  }
3215
3957
  )
3216
3958
  ] }),
3217
- label && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3959
+ label && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3218
3960
  "span",
3219
3961
  {
3220
3962
  className: cn(
@@ -3231,8 +3973,8 @@ var Toggle = (props) => {
3231
3973
  Toggle.displayName = "Toggle";
3232
3974
 
3233
3975
  // src/components/Inputs/WebsiteInput.tsx
3234
- var React34 = require("react");
3235
- var import_jsx_runtime36 = require("react/jsx-runtime");
3976
+ var React38 = require("react");
3977
+ var import_jsx_runtime40 = require("react/jsx-runtime");
3236
3978
  var WebsiteInput = (props) => {
3237
3979
  const {
3238
3980
  hierarchy = "leading",
@@ -3269,15 +4011,15 @@ var WebsiteInput = (props) => {
3269
4011
  size === "xl" ? "[&>svg]:w-6 [&>svg]:h-6" : size === "sm" ? "[&>svg]:w-4 [&>svg]:h-4" : "[&>svg]:w-5 [&>svg]:h-5",
3270
4012
  disabled ? "text-(--icon-primary-disabled)" : "text-(--icon-primary) group-hover:text-(--icon-primary-hover) group-focus-within:text-(--icon-primary-focus)"
3271
4013
  );
3272
- const leadingAddon = /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: baseAddonClass, children: [
3273
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: addonTextClass, children: protocolLabel }),
3274
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: iconWrapperClass, children: icon })
4014
+ const leadingAddon = /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: baseAddonClass, children: [
4015
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: addonTextClass, children: protocolLabel }),
4016
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: iconWrapperClass, children: icon })
3275
4017
  ] });
3276
- const trailingAddon = /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: baseAddonClass, children: [
3277
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: iconWrapperClass, children: icon }),
3278
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: addonTextClass, children: protocolLabel })
4018
+ const trailingAddon = /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: baseAddonClass, children: [
4019
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: iconWrapperClass, children: icon }),
4020
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: addonTextClass, children: protocolLabel })
3279
4021
  ] });
3280
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4022
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3281
4023
  TextInput,
3282
4024
  {
3283
4025
  ...rest,
@@ -3292,9 +4034,9 @@ var WebsiteInput = (props) => {
3292
4034
  WebsiteInput.displayName = "WebsiteInput";
3293
4035
 
3294
4036
  // src/components/Feedback/Popover.tsx
3295
- var React35 = __toESM(require("react"), 1);
4037
+ var React39 = __toESM(require("react"), 1);
3296
4038
  var PopoverPrimitive2 = __toESM(require("@radix-ui/react-popover"), 1);
3297
- var import_jsx_runtime37 = require("react/jsx-runtime");
4039
+ var import_jsx_runtime41 = require("react/jsx-runtime");
3298
4040
  var PopoverArrow = PopoverPrimitive2.Arrow;
3299
4041
  var Popover2 = (props) => {
3300
4042
  const {
@@ -3311,7 +4053,7 @@ var Popover2 = (props) => {
3311
4053
  offset = 10,
3312
4054
  children
3313
4055
  } = props;
3314
- const [open, setOpen] = React35.useState(false);
4056
+ const [open, setOpen] = React39.useState(false);
3315
4057
  const handleCancel = () => {
3316
4058
  onCancel?.();
3317
4059
  setOpen(false);
@@ -3320,9 +4062,9 @@ var Popover2 = (props) => {
3320
4062
  onOk?.();
3321
4063
  setOpen(false);
3322
4064
  };
3323
- const popoverClasses = "group bg-(--background-popover) popover w-80 max-w-[calc(100vw-2rem)] shadow-card-md border-none [&_span]:scale-240 rounded-4";
3324
- const popoverArrowClasses = "relative fill-(--background-popover) transition-[filter,transform] group-data-[side=top]:top-[-2px] group-data-[side=top]:drop-shadow-[0px_2px_1px_var(--color-b-black-12)] group-data-[side=bottom]:drop-shadow-[0px_-1px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] group-data-[side=left]:drop-shadow-[0px_2px_1px_var(--color-b-black-12)] group-data-[side=right]:drop-shadow-[0px_2px_1px_var(--color-b-black-12)]";
3325
- const mapPlacementToSideAndAlign = (placement2) => {
4065
+ const popoverClasses = "group bg-(--background-popover) popover w-80 max-w-[calc(100vw-2rem)] shadow-card-md border-none [&>span]:scale-240 rounded-4";
4066
+ const popoverArrowClasses = "relative fill-(--background-popover) transition-[filter,transform] group-data-[side=top]:top-[-2px] group-data-[side=top]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] group-data-[side=bottom]:drop-shadow-[0px_1px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] group-data-[side=left]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] group-data-[side=right]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)]";
4067
+ const mapPlacementToSideAndAlign2 = (placement2) => {
3326
4068
  switch (placement2) {
3327
4069
  case "top":
3328
4070
  return { side: "top", align: "center" };
@@ -3352,10 +4094,10 @@ var Popover2 = (props) => {
3352
4094
  return { side: "bottom", align: "center" };
3353
4095
  }
3354
4096
  };
3355
- const { side, align } = mapPlacementToSideAndAlign(placement);
3356
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
3357
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(PopoverTrigger, { asChild: true, children }),
3358
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
4097
+ const { side, align } = mapPlacementToSideAndAlign2(placement);
4098
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
4099
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(PopoverTrigger, { asChild: true, children }),
4100
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
3359
4101
  PopoverContent,
3360
4102
  {
3361
4103
  side,
@@ -3363,16 +4105,16 @@ var Popover2 = (props) => {
3363
4105
  sideOffset: offset,
3364
4106
  className: cn(popoverClasses, className),
3365
4107
  children: [
3366
- showArrow && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(PopoverArrow, { className: popoverArrowClasses }),
3367
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "grid gap-4", children: [
3368
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "space-y-2", children: [
3369
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "caption text-secondary", children: strapline }),
3370
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("h4", { className: "subtitle-medium text-primary", children: title }),
3371
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "paragraph-sm text-primary", children: description })
4108
+ showArrow && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(PopoverArrow, { className: popoverArrowClasses }),
4109
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "grid gap-4", children: [
4110
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "space-y-2", children: [
4111
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "caption text-secondary", children: strapline }),
4112
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("h4", { className: "subtitle-medium text-primary", children: title }),
4113
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { className: "paragraph-sm text-primary", children: description })
3372
4114
  ] }),
3373
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex justify-start items-center gap-4 flex-wrap", children: [
3374
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Button, { size: "sm", variant: "secondary", onClick: handleCancel, children: cancelText || "Cancel" }),
3375
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Button, { size: "sm", variant: "primary", onClick: handleOk, children: okText || "Ok" })
4115
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex justify-start items-center gap-4 flex-wrap", children: [
4116
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Button, { size: "sm", variant: "secondary", onClick: handleCancel, children: cancelText || "Cancel" }),
4117
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Button, { size: "sm", variant: "primary", onClick: handleOk, children: okText || "Ok" })
3376
4118
  ] })
3377
4119
  ] })
3378
4120
  ]
@@ -3382,82 +4124,280 @@ var Popover2 = (props) => {
3382
4124
  };
3383
4125
  Popover2.displayName = "Popover";
3384
4126
 
3385
- // src/components/Navigation/Breadcrumb.tsx
3386
- var React36 = __toESM(require("react"), 1);
3387
- var import_react_slot8 = require("@radix-ui/react-slot");
3388
- var import_class_variance_authority19 = require("class-variance-authority");
3389
- var import_icons12 = require("@bubo-squared/icons");
3390
- var import_jsx_runtime38 = require("react/jsx-runtime");
3391
- var breadcrumbBase = "group inline-flex items-center gap-[var(--space-8)] pl-0 pr-[var(--space-8)] py-[6px] rounded-full transition-colors select-none disabled:cursor-default disabled:pointer-events-none";
3392
- var breadcrumbIconVariants = (0, import_class_variance_authority19.cva)(
3393
- "flex shrink-0 items-center justify-center w-5 h-5 *:w-5 *:h-5",
3394
- {
3395
- variants: {
3396
- variant: {
3397
- colored: "text-(--icon-brand) group-hover:text-(--icon-brand-hover) group-focus-visible:text-(--icon-brand-focus) group-disabled:text-(--icon-brand-disabled)",
3398
- flat: "text-(--icon-primary) group-hover:text-(--icon-primary-hover) group-focus-visible:text-(--icon-primary-focus) group-disabled:text-(--icon-primary-disabled)"
3399
- }
3400
- },
3401
- defaultVariants: {
3402
- variant: "flat"
3403
- }
3404
- }
3405
- );
3406
- var breadcrumbTextVariants = (0, import_class_variance_authority19.cva)(
3407
- "font-normal text-[length:var(--font-size-paragraph-lg-18)] leading-[var(--font-line-height-28)] tracking-[var(--font-letter-spacing-02)] whitespace-nowrap",
3408
- {
3409
- variants: {
3410
- variant: {
3411
- colored: "text-(--color-brand) group-hover:text-(--color-brand-hover) group-focus-visible:text-(--color-brand-focus) group-disabled:text-(--color-brand-disabled)",
3412
- flat: "text-primary group-hover:text-(--color-primary-hover) group-focus-visible:text-(--color-primary-focus) group-disabled:text-primary-disabled"
3413
- }
3414
- },
3415
- defaultVariants: {
3416
- variant: "flat"
3417
- }
4127
+ // src/components/Feedback/Tooltip.tsx
4128
+ var React40 = require("react");
4129
+ var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
4130
+ var import_jsx_runtime42 = require("react/jsx-runtime");
4131
+ var TooltipArrow = TooltipPrimitive.Arrow;
4132
+ var mapPlacementToSideAndAlign = (placement) => {
4133
+ switch (placement) {
4134
+ case "top":
4135
+ return { side: "top", align: "center" };
4136
+ case "topLeft":
4137
+ return { side: "top", align: "start" };
4138
+ case "topRight":
4139
+ return { side: "top", align: "end" };
4140
+ case "bottom":
4141
+ return { side: "bottom", align: "center" };
4142
+ case "bottomLeft":
4143
+ return { side: "bottom", align: "start" };
4144
+ case "bottomRight":
4145
+ return { side: "bottom", align: "end" };
4146
+ case "left":
4147
+ return { side: "left", align: "center" };
4148
+ case "leftTop":
4149
+ return { side: "left", align: "start" };
4150
+ case "leftBottom":
4151
+ return { side: "left", align: "end" };
4152
+ case "right":
4153
+ return { side: "right", align: "center" };
4154
+ case "rightTop":
4155
+ return { side: "right", align: "start" };
4156
+ case "rightBottom":
4157
+ return { side: "right", align: "end" };
4158
+ default:
4159
+ return { side: "top", align: "center" };
3418
4160
  }
3419
- );
3420
- var Breadcrumb = React36.forwardRef((props, ref) => {
4161
+ };
4162
+ var Tooltip = (props) => {
3421
4163
  const {
3422
- asChild = false,
3423
- variant = "flat",
3424
- label = "Header",
3425
- showIcon = true,
3426
- showText = true,
3427
- icon,
4164
+ strapline,
4165
+ title,
4166
+ description,
4167
+ showArrow = true,
3428
4168
  className,
4169
+ placement = "top",
4170
+ offset = 10,
4171
+ disableHoverableContent,
4172
+ open,
4173
+ defaultOpen,
4174
+ onOpenChange,
4175
+ children
4176
+ } = props;
4177
+ const { side, align } = mapPlacementToSideAndAlign(placement);
4178
+ const tooltipClasses = "group bg-(--background-popover) max-w-[calc(100vw-2rem)] shadow-card-md border-none rounded-4 p-4 [&>span]:scale-200 data-[state=delayed-open]:animate-in data-[state=instant-open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0 data-[state=instant-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-[state=instant-open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2";
4179
+ const tooltipArrowClasses = "relative fill-(--background-popover) transition-[filter,transform] group-data-[side=top]:top-[-2px] group-data-[side=top]:drop-shadow-[0px_1px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] group-data-[side=bottom]:drop-shadow-[0px_1px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] group-data-[side=left]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] group-data-[side=right]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)]";
4180
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
4181
+ TooltipPrimitive.Root,
4182
+ {
4183
+ open,
4184
+ defaultOpen,
4185
+ onOpenChange,
4186
+ disableHoverableContent,
4187
+ children: [
4188
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(TooltipPrimitive.Trigger, { asChild: true, children }),
4189
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
4190
+ TooltipPrimitive.Content,
4191
+ {
4192
+ side,
4193
+ align,
4194
+ sideOffset: offset,
4195
+ className: cn(tooltipClasses, className),
4196
+ children: [
4197
+ showArrow && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(TooltipArrow, { className: tooltipArrowClasses }),
4198
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "grid gap-2", children: [
4199
+ (strapline ?? "") !== "" && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "caption text-secondary", children: strapline }),
4200
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("h4", { className: "subtitle-medium text-primary", children: title }),
4201
+ (description ?? "") !== "" && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("p", { className: "paragraph-sm text-primary", children: description })
4202
+ ] })
4203
+ ]
4204
+ }
4205
+ ) })
4206
+ ]
4207
+ }
4208
+ );
4209
+ };
4210
+ Tooltip.displayName = "Tooltip";
4211
+
4212
+ // src/components/Feedback/TooltipProvider.tsx
4213
+ var React41 = require("react");
4214
+ var TooltipPrimitive2 = __toESM(require("@radix-ui/react-tooltip"), 1);
4215
+ var import_jsx_runtime43 = require("react/jsx-runtime");
4216
+ var TooltipProvider = (props) => {
4217
+ const {
3429
4218
  children,
3430
- ...rest
4219
+ delayDuration = 200,
4220
+ skipDelayDuration = 300,
4221
+ disableHoverableContent = false
3431
4222
  } = props;
3432
- const Comp = asChild ? import_react_slot8.Slot : "button";
3433
- const content = showText ? children ?? label : null;
3434
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
3435
- Comp,
4223
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
4224
+ TooltipPrimitive2.Provider,
3436
4225
  {
3437
- type: asChild ? void 0 : "button",
3438
- className: cn(breadcrumbBase, className),
3439
- ref,
3440
- ...rest,
4226
+ delayDuration,
4227
+ skipDelayDuration,
4228
+ disableHoverableContent,
4229
+ children
4230
+ }
4231
+ );
4232
+ };
4233
+ TooltipProvider.displayName = "TooltipProvider";
4234
+
4235
+ // src/components/Navigation/Breadcrumbs.tsx
4236
+ var React43 = __toESM(require("react"), 1);
4237
+
4238
+ // src/components/ui/breadcrumb.tsx
4239
+ var React42 = require("react");
4240
+ var import_react_slot8 = require("@radix-ui/react-slot");
4241
+ var import_jsx_runtime44 = require("react/jsx-runtime");
4242
+ var breadcrumbItemClasses = "h6-title inline-flex items-center gap-1.5 text-(--color-secondary) hover:text-(--color-primary-hover) focus-within:text-(--color-secondary-focus) [&_[aria-current=page]]:font-medium [&_[aria-current=page]]:text-primary";
4243
+ var disabledItemClasses = "text-primary-disabled cursor-default pointer-events-none";
4244
+ function Breadcrumb({ ...props }) {
4245
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
4246
+ }
4247
+ function BreadcrumbList({ className, ...props }) {
4248
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4249
+ "ol",
4250
+ {
4251
+ "data-slot": "breadcrumb-list",
4252
+ className: cn(
4253
+ "flex flex-wrap items-center gap-1.5 wrap-break-word sm:gap-2.5",
4254
+ className
4255
+ ),
4256
+ ...props
4257
+ }
4258
+ );
4259
+ }
4260
+ function BreadcrumbItem({ className, disabled, ...props }) {
4261
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4262
+ "li",
4263
+ {
4264
+ "data-slot": "breadcrumb-item",
4265
+ className: cn(breadcrumbItemClasses, disabled && disabledItemClasses, className),
4266
+ style: { marginBottom: "7px" },
4267
+ ...props
4268
+ }
4269
+ );
4270
+ }
4271
+ function BreadcrumbPage({ className, ...props }) {
4272
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4273
+ "span",
4274
+ {
4275
+ "data-slot": "breadcrumb-page",
4276
+ role: "link",
4277
+ "aria-disabled": "true",
4278
+ "aria-current": "page",
4279
+ className: cn(className),
4280
+ ...props
4281
+ }
4282
+ );
4283
+ }
4284
+ function BreadcrumbSeparator({
4285
+ children,
4286
+ className,
4287
+ ...props
4288
+ }) {
4289
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4290
+ "li",
4291
+ {
4292
+ "data-slot": "breadcrumb-separator",
4293
+ role: "presentation",
4294
+ "aria-hidden": "true",
4295
+ className: cn("[&>svg]:size-6 [&>svg]:text-(--color-secondary)", className),
4296
+ ...props,
4297
+ children: children ?? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(ChevronRight, {})
4298
+ }
4299
+ );
4300
+ }
4301
+ function BreadcrumbEllipsis({
4302
+ className,
4303
+ ...props
4304
+ }) {
4305
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
4306
+ "span",
4307
+ {
4308
+ "data-slot": "breadcrumb-ellipsis",
4309
+ role: "presentation",
4310
+ "aria-hidden": "true",
4311
+ className: cn("flex size-9 items-center justify-center", className),
4312
+ ...props,
3441
4313
  children: [
3442
- showIcon && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: cn(breadcrumbIconVariants({ variant })), children: icon ?? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_icons12.ChevronRightIcon, {}) }),
3443
- content && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: cn(breadcrumbTextVariants({ variant })), children: content })
4314
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Ellipsis, { className: "size-4" }),
4315
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "sr-only", children: "More" })
3444
4316
  ]
3445
4317
  }
3446
4318
  );
3447
- });
3448
- Breadcrumb.displayName = "Breadcrumb";
4319
+ }
4320
+
4321
+ // src/components/Navigation/Breadcrumbs.tsx
4322
+ var import_jsx_runtime45 = require("react/jsx-runtime");
4323
+ var breadcrumbSeparatorVariants = "size-5 relative bottom-1 [&>svg]:text-secondary group-disabled:text-secondary";
4324
+ var breadcrumbItemBase = "h6-title text-secondary hover:text-primary-hover";
4325
+ var Breadcrumbs = React43.forwardRef(
4326
+ (props, ref) => {
4327
+ const { separator, ellipsis, children, className, ...rest } = props;
4328
+ const items = React43.Children.toArray(children).filter(Boolean);
4329
+ const shouldCollapse = Boolean(ellipsis) && items.length >= 5;
4330
+ const hiddenItems = shouldCollapse ? items.slice(1, -2) : [];
4331
+ const displayItems = shouldCollapse ? [items[0], "__ELLIPSIS__", items[items.length - 2], items[items.length - 1]] : items;
4332
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Breadcrumb, { ref, className, ...rest, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(BreadcrumbList, { children: displayItems.map((child, index) => {
4333
+ const isEllipsis = child === "__ELLIPSIS__";
4334
+ const key = isEllipsis ? "__ellipsis" : React43.isValidElement(child) && child.key != null ? String(child.key) : String(index);
4335
+ const isLast = index === displayItems.length - 1;
4336
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(React43.Fragment, { children: [
4337
+ isEllipsis ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(BreadcrumbItem, { className: cn(breadcrumbItemBase, props.breadcrumbItemClassName), children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(DropdownMenu, { children: [
4338
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4339
+ "button",
4340
+ {
4341
+ type: "button",
4342
+ className: "inline-flex size-8 items-center justify-center rounded-4 hover:bg-(--background-secondary) focus-ring-primary text-secondary",
4343
+ "aria-label": "Open breadcrumb menu",
4344
+ children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(BreadcrumbEllipsis, {})
4345
+ }
4346
+ ) }),
4347
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4348
+ DropdownMenuContent,
4349
+ {
4350
+ align: "start",
4351
+ className: "bg-(--background-neutral) border-(--border-secondary-hover) shadow-card-md rounded-4",
4352
+ children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(DropdownMenuGroup, { children: hiddenItems.map((hidden, hiddenIndex) => {
4353
+ const hiddenKey = React43.isValidElement(hidden) && hidden.key != null ? String(hidden.key) : `hidden-${hiddenIndex}`;
4354
+ if (React43.isValidElement(hidden)) {
4355
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4356
+ DropdownMenuItem,
4357
+ {
4358
+ asChild: true,
4359
+ className: "cursor-pointer paragraph-md text-primary focus:bg-(--background-secondary)",
4360
+ children: hidden
4361
+ },
4362
+ hiddenKey
4363
+ );
4364
+ }
4365
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4366
+ DropdownMenuItem,
4367
+ {
4368
+ className: "cursor-pointer paragraph-md text-primary focus:bg-(--background-secondary)",
4369
+ children: String(hidden)
4370
+ },
4371
+ hiddenKey
4372
+ );
4373
+ }) })
4374
+ }
4375
+ )
4376
+ ] }) }) : isLast ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(BreadcrumbItem, { className: cn(breadcrumbItemBase, props.breadcrumbItemClassName), children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4377
+ BreadcrumbPage,
4378
+ {
4379
+ className: cn("h6-title-medium cursor-pointer", props.breadcrumbPageClassName),
4380
+ children: child
4381
+ }
4382
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(BreadcrumbItem, { className: cn(breadcrumbItemBase, props.breadcrumbItemClassName), children: child }),
4383
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(BreadcrumbSeparator, { className: cn(breadcrumbSeparatorVariants, props.separatorClassName), children: separator })
4384
+ ] }, key);
4385
+ }) }) });
4386
+ }
4387
+ );
4388
+ Breadcrumbs.displayName = "Breadcrumbs";
3449
4389
 
3450
4390
  // src/components/Logo/LogoIcon.tsx
3451
- var import_class_variance_authority20 = require("class-variance-authority");
3452
- var import_jsx_runtime39 = require("react/jsx-runtime");
3453
- var LogoIconSvg = (props) => /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3454
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M83.7156 3.88535C78.5352 -1.29512 70.136 -1.29512 64.9555 3.88535L43.9999 24.8409L43.9995 24.8405L62.3536 6.48637C52.2379 16.5949 35.8584 16.6179 25.7142 6.55523L23.4434 4.28438C18.2629 -0.896082 9.86373 -0.89608 4.68327 4.28438C-0.497191 9.46484 -0.49719 17.864 4.68327 23.0445L6.88526 25.2465C17.0191 35.3875 17.0168 51.8235 6.87859 61.9618L25.2395 43.6008L25.2398 43.601L3.88534 64.9555C-1.29512 70.136 -1.29511 78.5351 3.88535 83.7156C9.06581 88.8961 17.465 88.8961 22.6455 83.7156L25.6458 80.7151L25.6864 80.6747C35.7981 70.6137 52.1313 70.597 62.2636 80.6248L65.7534 84.1146C70.9339 89.2951 79.3331 89.2951 84.5135 84.1146C89.694 78.9342 89.694 70.535 84.5135 65.3545L62.76 43.601L62.7602 43.6009L81.1144 61.9552C70.9806 51.8142 70.9829 35.3782 81.1211 25.24L83.7156 22.6455C88.8961 17.465 88.8961 9.06581 83.7156 3.88535Z", fill: "#1685FF" }),
3455
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { d: "M44.0667 50.4863C44.1213 50.4317 44.21 50.4317 44.2646 50.4863L48.6465 54.8682C48.6942 54.9158 48.7011 54.9907 48.663 55.0463L44.2812 61.4453C44.2256 61.5265 44.1057 61.5265 44.0501 61.4453L39.6683 55.0463C39.6302 54.9907 39.6371 54.9158 39.6848 54.8682L44.0667 50.4863Z", fill: "white" }),
3456
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M44.107 45.3938C44.0536 45.289 43.9013 45.289 43.8479 45.3938C41.8622 49.293 37.8104 51.9638 33.1347 51.9638C26.4991 51.9638 21.1199 46.5846 21.1199 39.9489C21.1199 33.3133 26.4991 27.9341 33.1347 27.9341C37.8104 27.9341 41.8622 30.6049 43.8479 34.5041C43.9013 34.6089 44.0536 34.6089 44.107 34.5041C46.0926 30.6049 50.1445 27.9341 54.8201 27.9341C61.4558 27.9341 66.835 33.3133 66.835 39.9489C66.835 46.5846 61.4558 51.9638 54.8201 51.9638C50.1445 51.9638 46.0926 49.293 44.107 45.3938Z", fill: "white" }),
3457
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { d: "M60.1113 40.0006C60.1113 43.052 57.6377 45.5256 54.5863 45.5256C51.535 45.5256 49.0614 43.052 49.0614 40.0006C49.0614 36.9493 51.535 34.4757 54.5863 34.4757C57.6377 34.4757 60.1113 36.9493 60.1113 40.0006Z", fill: "#1685FF" }),
3458
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { d: "M38.8954 40.0006C38.8954 43.052 36.4218 45.5256 33.3705 45.5256C30.3192 45.5256 27.8456 43.052 27.8456 40.0006C27.8456 36.9493 30.3192 34.4757 33.3705 34.4757C36.4218 34.4757 38.8954 36.9493 38.8954 40.0006Z", fill: "#1685FF" })
4391
+ var import_class_variance_authority21 = require("class-variance-authority");
4392
+ var import_jsx_runtime46 = require("react/jsx-runtime");
4393
+ var LogoIconSvg = (props) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
4394
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M83.7156 3.88535C78.5352 -1.29512 70.136 -1.29512 64.9555 3.88535L43.9999 24.8409L43.9995 24.8405L62.3536 6.48637C52.2379 16.5949 35.8584 16.6179 25.7142 6.55523L23.4434 4.28438C18.2629 -0.896082 9.86373 -0.89608 4.68327 4.28438C-0.497191 9.46484 -0.49719 17.864 4.68327 23.0445L6.88526 25.2465C17.0191 35.3875 17.0168 51.8235 6.87859 61.9618L25.2395 43.6008L25.2398 43.601L3.88534 64.9555C-1.29512 70.136 -1.29511 78.5351 3.88535 83.7156C9.06581 88.8961 17.465 88.8961 22.6455 83.7156L25.6458 80.7151L25.6864 80.6747C35.7981 70.6137 52.1313 70.597 62.2636 80.6248L65.7534 84.1146C70.9339 89.2951 79.3331 89.2951 84.5135 84.1146C89.694 78.9342 89.694 70.535 84.5135 65.3545L62.76 43.601L62.7602 43.6009L81.1144 61.9552C70.9806 51.8142 70.9829 35.3782 81.1211 25.24L83.7156 22.6455C88.8961 17.465 88.8961 9.06581 83.7156 3.88535Z", fill: "#1685FF" }),
4395
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("path", { d: "M44.0667 50.4863C44.1213 50.4317 44.21 50.4317 44.2646 50.4863L48.6465 54.8682C48.6942 54.9158 48.7011 54.9907 48.663 55.0463L44.2812 61.4453C44.2256 61.5265 44.1057 61.5265 44.0501 61.4453L39.6683 55.0463C39.6302 54.9907 39.6371 54.9158 39.6848 54.8682L44.0667 50.4863Z", fill: "white" }),
4396
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M44.107 45.3938C44.0536 45.289 43.9013 45.289 43.8479 45.3938C41.8622 49.293 37.8104 51.9638 33.1347 51.9638C26.4991 51.9638 21.1199 46.5846 21.1199 39.9489C21.1199 33.3133 26.4991 27.9341 33.1347 27.9341C37.8104 27.9341 41.8622 30.6049 43.8479 34.5041C43.9013 34.6089 44.0536 34.6089 44.107 34.5041C46.0926 30.6049 50.1445 27.9341 54.8201 27.9341C61.4558 27.9341 66.835 33.3133 66.835 39.9489C66.835 46.5846 61.4558 51.9638 54.8201 51.9638C50.1445 51.9638 46.0926 49.293 44.107 45.3938Z", fill: "white" }),
4397
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("path", { d: "M60.1113 40.0006C60.1113 43.052 57.6377 45.5256 54.5863 45.5256C51.535 45.5256 49.0614 43.052 49.0614 40.0006C49.0614 36.9493 51.535 34.4757 54.5863 34.4757C57.6377 34.4757 60.1113 36.9493 60.1113 40.0006Z", fill: "#1685FF" }),
4398
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("path", { d: "M38.8954 40.0006C38.8954 43.052 36.4218 45.5256 33.3705 45.5256C30.3192 45.5256 27.8456 43.052 27.8456 40.0006C27.8456 36.9493 30.3192 34.4757 33.3705 34.4757C36.4218 34.4757 38.8954 36.9493 38.8954 40.0006Z", fill: "#1685FF" })
3459
4399
  ] });
3460
- var logoIconVariants = (0, import_class_variance_authority20.cva)(
4400
+ var logoIconVariants = (0, import_class_variance_authority21.cva)(
3461
4401
  "relative bg-linear-to-t from-gray-800 to-gray-950 overflow-hidden flex justify-center items-center",
3462
4402
  {
3463
4403
  variants: {
@@ -3482,28 +4422,28 @@ var logoIconSizeClass = {
3482
4422
  xl: "size-96"
3483
4423
  };
3484
4424
  var LogoIcon = ({ className, size = "md" }) => {
3485
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: cn(logoIconVariants({ size }), className), children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(LogoIconSvg, { className: logoIconSizeClass[size] }) });
4425
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: cn(logoIconVariants({ size }), className), children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(LogoIconSvg, { className: logoIconSizeClass[size] }) });
3486
4426
  };
3487
4427
 
3488
4428
  // src/components/Logo/Logo.tsx
3489
- var import_class_variance_authority21 = require("class-variance-authority");
3490
- var import_jsx_runtime40 = require("react/jsx-runtime");
3491
- var LogoIconSvg2 = (props) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3492
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M83.7156 3.88535C78.5352 -1.29512 70.136 -1.29512 64.9555 3.88535L43.9999 24.8409L43.9995 24.8405L62.3536 6.48637C52.2379 16.5949 35.8584 16.6179 25.7142 6.55523L23.4434 4.28438C18.2629 -0.896082 9.86373 -0.89608 4.68327 4.28438C-0.497191 9.46484 -0.49719 17.864 4.68327 23.0445L6.88526 25.2465C17.0191 35.3875 17.0168 51.8235 6.87859 61.9618L25.2395 43.6008L25.2398 43.601L3.88534 64.9555C-1.29512 70.136 -1.29511 78.5351 3.88535 83.7156C9.06581 88.8961 17.465 88.8961 22.6455 83.7156L25.6458 80.7151L25.6864 80.6747C35.7981 70.6137 52.1313 70.597 62.2636 80.6248L65.7534 84.1146C70.9339 89.2951 79.3331 89.2951 84.5135 84.1146C89.694 78.9342 89.694 70.535 84.5135 65.3545L62.76 43.601L62.7602 43.6009L81.1144 61.9552C70.9806 51.8142 70.9829 35.3782 81.1211 25.24L83.7156 22.6455C88.8961 17.465 88.8961 9.06581 83.7156 3.88535Z", fill: "#1685FF" }),
3493
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M44.0667 50.4863C44.1213 50.4317 44.21 50.4317 44.2646 50.4863L48.6465 54.8682C48.6942 54.9158 48.7011 54.9907 48.663 55.0463L44.2812 61.4453C44.2256 61.5265 44.1057 61.5265 44.0501 61.4453L39.6683 55.0463C39.6302 54.9907 39.6371 54.9158 39.6848 54.8682L44.0667 50.4863Z", fill: "white" }),
3494
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M44.107 45.3938C44.0536 45.289 43.9013 45.289 43.8479 45.3938C41.8622 49.293 37.8104 51.9638 33.1347 51.9638C26.4991 51.9638 21.1199 46.5846 21.1199 39.9489C21.1199 33.3133 26.4991 27.9341 33.1347 27.9341C37.8104 27.9341 41.8622 30.6049 43.8479 34.5041C43.9013 34.6089 44.0536 34.6089 44.107 34.5041C46.0926 30.6049 50.1445 27.9341 54.8201 27.9341C61.4558 27.9341 66.835 33.3133 66.835 39.9489C66.835 46.5846 61.4558 51.9638 54.8201 51.9638C50.1445 51.9638 46.0926 49.293 44.107 45.3938Z", fill: "white" }),
3495
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M60.1113 40.0006C60.1113 43.052 57.6377 45.5256 54.5863 45.5256C51.535 45.5256 49.0614 43.052 49.0614 40.0006C49.0614 36.9493 51.535 34.4757 54.5863 34.4757C57.6377 34.4757 60.1113 36.9493 60.1113 40.0006Z", fill: "#1685FF" }),
3496
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M38.8954 40.0006C38.8954 43.052 36.4218 45.5256 33.3705 45.5256C30.3192 45.5256 27.8456 43.052 27.8456 40.0006C27.8456 36.9493 30.3192 34.4757 33.3705 34.4757C36.4218 34.4757 38.8954 36.9493 38.8954 40.0006Z", fill: "#1685FF" })
4429
+ var import_class_variance_authority22 = require("class-variance-authority");
4430
+ var import_jsx_runtime47 = require("react/jsx-runtime");
4431
+ var LogoIconSvg2 = (props) => /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
4432
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M83.7156 3.88535C78.5352 -1.29512 70.136 -1.29512 64.9555 3.88535L43.9999 24.8409L43.9995 24.8405L62.3536 6.48637C52.2379 16.5949 35.8584 16.6179 25.7142 6.55523L23.4434 4.28438C18.2629 -0.896082 9.86373 -0.89608 4.68327 4.28438C-0.497191 9.46484 -0.49719 17.864 4.68327 23.0445L6.88526 25.2465C17.0191 35.3875 17.0168 51.8235 6.87859 61.9618L25.2395 43.6008L25.2398 43.601L3.88534 64.9555C-1.29512 70.136 -1.29511 78.5351 3.88535 83.7156C9.06581 88.8961 17.465 88.8961 22.6455 83.7156L25.6458 80.7151L25.6864 80.6747C35.7981 70.6137 52.1313 70.597 62.2636 80.6248L65.7534 84.1146C70.9339 89.2951 79.3331 89.2951 84.5135 84.1146C89.694 78.9342 89.694 70.535 84.5135 65.3545L62.76 43.601L62.7602 43.6009L81.1144 61.9552C70.9806 51.8142 70.9829 35.3782 81.1211 25.24L83.7156 22.6455C88.8961 17.465 88.8961 9.06581 83.7156 3.88535Z", fill: "#1685FF" }),
4433
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "M44.0667 50.4863C44.1213 50.4317 44.21 50.4317 44.2646 50.4863L48.6465 54.8682C48.6942 54.9158 48.7011 54.9907 48.663 55.0463L44.2812 61.4453C44.2256 61.5265 44.1057 61.5265 44.0501 61.4453L39.6683 55.0463C39.6302 54.9907 39.6371 54.9158 39.6848 54.8682L44.0667 50.4863Z", fill: "white" }),
4434
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M44.107 45.3938C44.0536 45.289 43.9013 45.289 43.8479 45.3938C41.8622 49.293 37.8104 51.9638 33.1347 51.9638C26.4991 51.9638 21.1199 46.5846 21.1199 39.9489C21.1199 33.3133 26.4991 27.9341 33.1347 27.9341C37.8104 27.9341 41.8622 30.6049 43.8479 34.5041C43.9013 34.6089 44.0536 34.6089 44.107 34.5041C46.0926 30.6049 50.1445 27.9341 54.8201 27.9341C61.4558 27.9341 66.835 33.3133 66.835 39.9489C66.835 46.5846 61.4558 51.9638 54.8201 51.9638C50.1445 51.9638 46.0926 49.293 44.107 45.3938Z", fill: "white" }),
4435
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "M60.1113 40.0006C60.1113 43.052 57.6377 45.5256 54.5863 45.5256C51.535 45.5256 49.0614 43.052 49.0614 40.0006C49.0614 36.9493 51.535 34.4757 54.5863 34.4757C57.6377 34.4757 60.1113 36.9493 60.1113 40.0006Z", fill: "#1685FF" }),
4436
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "M38.8954 40.0006C38.8954 43.052 36.4218 45.5256 33.3705 45.5256C30.3192 45.5256 27.8456 43.052 27.8456 40.0006C27.8456 36.9493 30.3192 34.4757 33.3705 34.4757C36.4218 34.4757 38.8954 36.9493 38.8954 40.0006Z", fill: "#1685FF" })
3497
4437
  ] });
3498
- var LogoTextSvg = (props) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("svg", { width: "111", height: "32", viewBox: "0 0 111 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3499
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M72.7324 20.9658C72.7324 14.4559 77.4246 9.9751 83.8922 9.9751C90.3598 9.9751 95.052 14.4559 95.052 20.9658C95.052 27.4757 90.3598 31.9565 83.8922 31.9565C77.4246 31.9565 72.7324 27.4757 72.7324 20.9658ZM77.8896 20.9658C77.8896 24.7703 80.3414 27.3489 83.8922 27.3489C87.4431 27.3489 89.8948 24.7703 89.8948 20.9658C89.8948 17.1613 87.4431 14.5827 83.8922 14.5827C80.3414 14.5827 77.8896 17.1613 77.8896 20.9658Z", fill: "currentColor" }),
3500
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M53.4056 31.4503H48.6289V0H53.7861V13.6116C55.1388 11.2866 57.9287 9.89163 61.0991 9.89163C67.0595 9.89163 70.6949 14.5415 70.6949 21.136C70.6949 27.5613 66.7636 31.9998 60.761 31.9998C57.6328 31.9998 54.9697 30.6049 53.7438 28.1954L53.4056 31.4503ZM53.8284 20.9246C53.8284 24.6868 56.1533 27.2654 59.7042 27.2654C63.3395 27.2654 65.4954 24.6445 65.4954 20.9246C65.4954 17.2047 63.3395 14.5415 59.7042 14.5415C56.1533 14.5415 53.8284 17.1624 53.8284 20.9246Z", fill: "currentColor" }),
3501
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M38.9929 10.5681H44.15V31.4504H39.3733L38.9929 28.6605C37.7247 30.6473 35.0193 32 32.2293 32C27.4103 32 24.5781 28.745 24.5781 23.6301V10.5681H29.7353V21.8124C29.7353 25.786 31.2994 27.3923 34.1739 27.3923C37.4288 27.3923 38.9929 25.4901 38.9929 21.5165V10.5681Z", fill: "currentColor" }),
3502
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M4.77673 31.4503H0V0H5.15718V13.6116C6.50988 11.2866 9.29983 9.89163 12.4702 9.89163C18.4306 9.89163 22.066 14.5415 22.066 21.136C22.066 27.5613 18.1347 31.9998 12.132 31.9998C9.00392 31.9998 6.34079 30.6049 5.1149 28.1954L4.77673 31.4503ZM5.19945 20.9246C5.19945 24.6868 7.52441 27.2654 11.0752 27.2654C14.7106 27.2654 16.8665 24.6445 16.8665 20.9246C16.8665 17.2047 14.7106 14.5415 11.0752 14.5415C7.52441 14.5415 5.19945 17.1624 5.19945 20.9246Z", fill: "currentColor" }),
3503
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M103.555 0.5C107.084 0.5 109.944 3.36029 109.944 6.88867C109.944 10.4172 107.084 13.2773 103.555 13.2773C100.027 13.2772 97.1667 10.4171 97.1667 6.88867C97.1669 3.36036 100.027 0.500118 103.555 0.5Z", stroke: "currentColor" }),
3504
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M105.778 9.98355L101.687 10.0001V9.00978L103.578 7.33457C104.19 6.79817 104.445 6.41856 104.445 5.91517C104.445 5.29625 104.159 4.96616 103.647 4.96616C103.113 4.96616 102.803 5.35402 102.803 6.03896H101.556C101.556 4.66908 102.377 3.77783 103.64 3.77783C104.949 3.77783 105.731 4.52879 105.731 5.83265C105.731 6.66613 105.259 7.34282 104.546 7.97825L103.686 8.74571H105.778V9.98355Z", fill: "currentColor" })
4438
+ var LogoTextSvg = (props) => /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("svg", { width: "111", height: "32", viewBox: "0 0 111 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
4439
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "M72.7324 20.9658C72.7324 14.4559 77.4246 9.9751 83.8922 9.9751C90.3598 9.9751 95.052 14.4559 95.052 20.9658C95.052 27.4757 90.3598 31.9565 83.8922 31.9565C77.4246 31.9565 72.7324 27.4757 72.7324 20.9658ZM77.8896 20.9658C77.8896 24.7703 80.3414 27.3489 83.8922 27.3489C87.4431 27.3489 89.8948 24.7703 89.8948 20.9658C89.8948 17.1613 87.4431 14.5827 83.8922 14.5827C80.3414 14.5827 77.8896 17.1613 77.8896 20.9658Z", fill: "currentColor" }),
4440
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "M53.4056 31.4503H48.6289V0H53.7861V13.6116C55.1388 11.2866 57.9287 9.89163 61.0991 9.89163C67.0595 9.89163 70.6949 14.5415 70.6949 21.136C70.6949 27.5613 66.7636 31.9998 60.761 31.9998C57.6328 31.9998 54.9697 30.6049 53.7438 28.1954L53.4056 31.4503ZM53.8284 20.9246C53.8284 24.6868 56.1533 27.2654 59.7042 27.2654C63.3395 27.2654 65.4954 24.6445 65.4954 20.9246C65.4954 17.2047 63.3395 14.5415 59.7042 14.5415C56.1533 14.5415 53.8284 17.1624 53.8284 20.9246Z", fill: "currentColor" }),
4441
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "M38.9929 10.5681H44.15V31.4504H39.3733L38.9929 28.6605C37.7247 30.6473 35.0193 32 32.2293 32C27.4103 32 24.5781 28.745 24.5781 23.6301V10.5681H29.7353V21.8124C29.7353 25.786 31.2994 27.3923 34.1739 27.3923C37.4288 27.3923 38.9929 25.4901 38.9929 21.5165V10.5681Z", fill: "currentColor" }),
4442
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "M4.77673 31.4503H0V0H5.15718V13.6116C6.50988 11.2866 9.29983 9.89163 12.4702 9.89163C18.4306 9.89163 22.066 14.5415 22.066 21.136C22.066 27.5613 18.1347 31.9998 12.132 31.9998C9.00392 31.9998 6.34079 30.6049 5.1149 28.1954L4.77673 31.4503ZM5.19945 20.9246C5.19945 24.6868 7.52441 27.2654 11.0752 27.2654C14.7106 27.2654 16.8665 24.6445 16.8665 20.9246C16.8665 17.2047 14.7106 14.5415 11.0752 14.5415C7.52441 14.5415 5.19945 17.1624 5.19945 20.9246Z", fill: "currentColor" }),
4443
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "M103.555 0.5C107.084 0.5 109.944 3.36029 109.944 6.88867C109.944 10.4172 107.084 13.2773 103.555 13.2773C100.027 13.2772 97.1667 10.4171 97.1667 6.88867C97.1669 3.36036 100.027 0.500118 103.555 0.5Z", stroke: "currentColor" }),
4444
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "M105.778 9.98355L101.687 10.0001V9.00978L103.578 7.33457C104.19 6.79817 104.445 6.41856 104.445 5.91517C104.445 5.29625 104.159 4.96616 103.647 4.96616C103.113 4.96616 102.803 5.35402 102.803 6.03896H101.556C101.556 4.66908 102.377 3.77783 103.64 3.77783C104.949 3.77783 105.731 4.52879 105.731 5.83265C105.731 6.66613 105.259 7.34282 104.546 7.97825L103.686 8.74571H105.778V9.98355Z", fill: "currentColor" })
3505
4445
  ] });
3506
- var logoWrapperVariants = (0, import_class_variance_authority21.cva)("inline-flex", {
4446
+ var logoWrapperVariants = (0, import_class_variance_authority22.cva)("inline-flex", {
3507
4447
  variants: {
3508
4448
  variant: {
3509
4449
  inline: ["w-44", "h-12", "justify-start", "items-center", "gap-4"],
@@ -3515,7 +4455,7 @@ var logoWrapperVariants = (0, import_class_variance_authority21.cva)("inline-fle
3515
4455
  variant: "inline"
3516
4456
  }
3517
4457
  });
3518
- var logoIconSizeVariants = (0, import_class_variance_authority21.cva)("", {
4458
+ var logoIconSizeVariants = (0, import_class_variance_authority22.cva)("", {
3519
4459
  variants: {
3520
4460
  variant: {
3521
4461
  inline: "size-12",
@@ -3527,7 +4467,7 @@ var logoIconSizeVariants = (0, import_class_variance_authority21.cva)("", {
3527
4467
  variant: "inline"
3528
4468
  }
3529
4469
  });
3530
- var logoTextSizeVariants = (0, import_class_variance_authority21.cva)("", {
4470
+ var logoTextSizeVariants = (0, import_class_variance_authority22.cva)("", {
3531
4471
  variants: {
3532
4472
  variant: {
3533
4473
  inline: "h-8 w-27.5",
@@ -3541,30 +4481,41 @@ var logoTextSizeVariants = (0, import_class_variance_authority21.cva)("", {
3541
4481
  });
3542
4482
  var Logo = ({ className, textColor, variant = "inline" }) => {
3543
4483
  const textColorClass = textColor === "light" ? "text-(--color-b-white)" : textColor === "dark" ? "text-(--color-b-black)" : "text-primary";
3544
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: cn(logoWrapperVariants({ variant }), className), children: [
3545
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(LogoIconSvg2, { className: logoIconSizeVariants({ variant }) }),
3546
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(LogoTextSvg, { className: cn(logoTextSizeVariants({ variant }), textColorClass) })
4484
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: cn(logoWrapperVariants({ variant }), className), children: [
4485
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(LogoIconSvg2, { className: logoIconSizeVariants({ variant }) }),
4486
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(LogoTextSvg, { className: cn(logoTextSizeVariants({ variant }), textColorClass) })
3547
4487
  ] });
3548
4488
  };
3549
4489
  // Annotate the CommonJS export names for ESM import in node:
3550
4490
  0 && (module.exports = {
4491
+ Accordion,
4492
+ Autocomplete,
3551
4493
  Avatar,
3552
4494
  Badge,
3553
4495
  BadgeDigit,
3554
4496
  BadgeDot,
3555
4497
  BadgeStatus,
3556
- Breadcrumb,
4498
+ Breadcrumbs,
3557
4499
  Button,
3558
4500
  ButtonGroup,
3559
4501
  Checkbox,
3560
4502
  Divider,
3561
- Dropdown,
3562
4503
  Field,
3563
4504
  IconButton,
3564
4505
  IconButtonGroup,
3565
4506
  LinkButton,
3566
4507
  Logo,
3567
4508
  LogoIcon,
4509
+ Menu,
4510
+ MenuGroup,
4511
+ MenuItem,
4512
+ MenuLabel,
4513
+ MenuPortal,
4514
+ MenuSeparator,
4515
+ MenuShortcut,
4516
+ MenuSub,
4517
+ MenuSubContent,
4518
+ MenuSubTrigger,
3568
4519
  MessageButton,
3569
4520
  PasswordInput,
3570
4521
  PhoneInput,
@@ -3572,14 +4523,33 @@ var Logo = ({ className, textColor, variant = "inline" }) => {
3572
4523
  Progress,
3573
4524
  RadioGroup,
3574
4525
  SearchInput,
4526
+ Select,
3575
4527
  Slider,
3576
4528
  StatusAvatar,
3577
4529
  Tag,
3578
4530
  TextArea,
3579
4531
  TextInput,
3580
4532
  Toggle,
4533
+ Tooltip,
4534
+ TooltipProvider,
3581
4535
  Typography,
3582
4536
  WebsiteInput,
3583
4537
  cn
3584
4538
  });
4539
+ /*! Bundled license information:
4540
+
4541
+ lucide-react/dist/esm/shared/src/utils.js:
4542
+ lucide-react/dist/esm/defaultAttributes.js:
4543
+ lucide-react/dist/esm/Icon.js:
4544
+ lucide-react/dist/esm/createLucideIcon.js:
4545
+ lucide-react/dist/esm/icons/chevron-right.js:
4546
+ lucide-react/dist/esm/icons/ellipsis.js:
4547
+ lucide-react/dist/esm/lucide-react.js:
4548
+ (**
4549
+ * @license lucide-react v0.555.0 - ISC
4550
+ *
4551
+ * This source code is licensed under the ISC license.
4552
+ * See the LICENSE file in the root directory of this source tree.
4553
+ *)
4554
+ */
3585
4555
  //# sourceMappingURL=index.cjs.map