@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 +1853 -883
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +198 -39
- package/dist/index.d.ts +198 -39
- package/dist/index.js +1833 -877
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +5 -1
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
|
-
|
|
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/
|
|
461
|
+
// src/components/Content/Accordion.tsx
|
|
448
462
|
var React6 = __toESM(require("react"), 1);
|
|
449
|
-
var
|
|
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 =
|
|
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,
|
|
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,
|
|
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,
|
|
540
|
-
!hasImage && variant === "icon" && /* @__PURE__ */ (0,
|
|
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
|
|
550
|
-
var
|
|
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,
|
|
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
|
|
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
|
|
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 =
|
|
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,
|
|
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,
|
|
650
|
-
/* @__PURE__ */ (0,
|
|
651
|
-
/* @__PURE__ */ (0,
|
|
652
|
-
/* @__PURE__ */ (0,
|
|
653
|
-
] }) : /* @__PURE__ */ (0,
|
|
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
|
|
740
|
+
var React10 = __toESM(require("react"), 1);
|
|
662
741
|
var import_class_variance_authority8 = require("class-variance-authority");
|
|
663
|
-
var
|
|
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 =
|
|
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,
|
|
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
|
|
790
|
+
var React11 = require("react");
|
|
712
791
|
var import_class_variance_authority9 = require("class-variance-authority");
|
|
713
|
-
var
|
|
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,
|
|
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
|
|
735
|
-
var
|
|
736
|
-
var BadgeStatus =
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
774
|
-
var
|
|
775
|
-
var
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
840
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
876
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
961
|
+
icon: icon ?? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_icons3.TargetIcon, {}),
|
|
883
962
|
onClick: onIconClick
|
|
884
963
|
}
|
|
885
964
|
),
|
|
886
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
909
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
942
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
1040
|
+
var React15 = __toESM(require("react"), 1);
|
|
962
1041
|
|
|
963
1042
|
// src/components/Inputs/Field.tsx
|
|
964
|
-
var
|
|
965
|
-
var
|
|
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 =
|
|
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,
|
|
984
|
-
label && /* @__PURE__ */ (0,
|
|
985
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
989
|
-
!hideHint && /* @__PURE__ */ (0,
|
|
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
|
|
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 =
|
|
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,
|
|
1104
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1026
1105
|
Field,
|
|
1027
1106
|
{
|
|
1028
1107
|
label,
|
|
1029
|
-
labelRight: showProgressLabel && label ? /* @__PURE__ */ (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,
|
|
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,
|
|
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,
|
|
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
|
|
1153
|
+
var React16 = __toESM(require("react"), 1);
|
|
1075
1154
|
var import_class_variance_authority10 = require("class-variance-authority");
|
|
1076
|
-
var
|
|
1077
|
-
var
|
|
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 =
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
1128
|
-
iconVariant === "bookmark" && /* @__PURE__ */ (0,
|
|
1129
|
-
iconVariant === "favorite" && /* @__PURE__ */ (0,
|
|
1130
|
-
iconVariant === "add" && /* @__PURE__ */ (0,
|
|
1131
|
-
iconVariant === "remove" && /* @__PURE__ */ (0,
|
|
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
|
|
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
|
|
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 =
|
|
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 &&
|
|
1172
|
-
const trailing = props.trailingIcon &&
|
|
1173
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
1181
|
-
value ? /* @__PURE__ */ (0,
|
|
1182
|
-
/* @__PURE__ */ (0,
|
|
1183
|
-
/* @__PURE__ */ (0,
|
|
1184
|
-
/* @__PURE__ */ (0,
|
|
1185
|
-
] }) : /* @__PURE__ */ (0,
|
|
1186
|
-
trailing && /* @__PURE__ */ (0,
|
|
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
|
|
1531
|
+
var React20 = require("react");
|
|
1195
1532
|
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
|
|
1196
|
-
var
|
|
1197
|
-
var
|
|
1198
|
-
var
|
|
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,
|
|
1201
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
1218
|
-
/* @__PURE__ */ (0,
|
|
1219
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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/
|
|
1228
|
-
var
|
|
1229
|
-
var
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
var
|
|
1233
|
-
|
|
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: "
|
|
1238
|
-
md: "
|
|
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: "
|
|
1244
|
-
success: "
|
|
1245
|
-
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
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
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-
|
|
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
|
|
1964
|
+
var selectIconVariants = (0, import_class_variance_authority15.cva)("flex items-center justify-center shrink-0", {
|
|
1276
1965
|
variants: {
|
|
1277
1966
|
size: {
|
|
1278
|
-
sm: "
|
|
1279
|
-
md: "
|
|
1280
|
-
lg: "
|
|
1281
|
-
xl: "
|
|
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
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
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
|
|
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
|
|
1333
|
-
|
|
2015
|
+
const controlledValue = value ?? "";
|
|
2016
|
+
const [internalValue, setInternalValue] = React24.useState(
|
|
2017
|
+
defaultValue ?? ""
|
|
1334
2018
|
);
|
|
1335
|
-
const [open, setOpen] =
|
|
1336
|
-
const
|
|
1337
|
-
const selectedOption = options.find((opt) => opt.value ===
|
|
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
|
|
1341
|
-
if (disabled) return;
|
|
2025
|
+
const handleOpenChange = (nextOpen) => {
|
|
1342
2026
|
if (showMenu === void 0) {
|
|
1343
|
-
setOpen(
|
|
2027
|
+
setOpen(nextOpen);
|
|
1344
2028
|
}
|
|
1345
2029
|
};
|
|
1346
|
-
const
|
|
2030
|
+
const handleValueChange = (nextValue) => {
|
|
1347
2031
|
if (!isControlled) {
|
|
1348
|
-
setInternalValue(
|
|
2032
|
+
setInternalValue(nextValue);
|
|
1349
2033
|
}
|
|
1350
|
-
onChange?.(
|
|
2034
|
+
onChange?.(nextValue);
|
|
1351
2035
|
if (showMenu === void 0) {
|
|
1352
2036
|
setOpen(false);
|
|
1353
2037
|
}
|
|
1354
2038
|
};
|
|
1355
|
-
|
|
1356
|
-
if (
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
}
|
|
1363
|
-
|
|
1364
|
-
|
|
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
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
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
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
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
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
)
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
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
|
-
|
|
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
|
|
1538
|
-
var
|
|
1539
|
-
var
|
|
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
|
|
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,
|
|
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] =
|
|
2226
|
+
const [internalValue, setInternalValue] = React25.useState(
|
|
1614
2227
|
defaultValue ?? ""
|
|
1615
2228
|
);
|
|
1616
|
-
const [isRevealed, setIsRevealed] =
|
|
2229
|
+
const [isRevealed, setIsRevealed] = React25.useState(false);
|
|
1617
2230
|
const currentValue = (isControlled ? value : internalValue) ?? "";
|
|
1618
|
-
const inputRef =
|
|
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,
|
|
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,
|
|
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,
|
|
2260
|
+
showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1648
2261
|
"span",
|
|
1649
2262
|
{
|
|
1650
2263
|
className: cn(
|
|
1651
|
-
|
|
2264
|
+
iconWrapperVariants2({ size, disabled: !!disabled })
|
|
1652
2265
|
),
|
|
1653
2266
|
children: leadingIcon
|
|
1654
2267
|
}
|
|
1655
2268
|
),
|
|
1656
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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 }) :
|
|
2297
|
+
variant === "text" ? actionButtonVariants({ size, disabled: !!disabled }) : iconWrapperVariants2({ size, disabled: !!disabled })
|
|
1685
2298
|
),
|
|
1686
|
-
children: variant === "icon" ? isRevealed ? /* @__PURE__ */ (0,
|
|
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
|
|
1699
|
-
var
|
|
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
|
|
2317
|
+
var React26 = require("react");
|
|
1705
2318
|
var import_react_slot7 = require("@radix-ui/react-slot");
|
|
1706
|
-
var
|
|
1707
|
-
var
|
|
1708
|
-
var buttonVariants2 = (0,
|
|
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,
|
|
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
|
|
2369
|
+
var React28 = require("react");
|
|
1757
2370
|
var import_cmdk = require("cmdk");
|
|
1758
|
-
var
|
|
2371
|
+
var import_icons10 = require("@bubo-squared/icons");
|
|
1759
2372
|
|
|
1760
2373
|
// src/components/ui/dialog.tsx
|
|
1761
|
-
var
|
|
2374
|
+
var React27 = require("react");
|
|
1762
2375
|
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
1763
|
-
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
1794
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
2587
|
+
var React29 = require("react");
|
|
1872
2588
|
var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
|
|
1873
|
-
var
|
|
2589
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1874
2590
|
function Popover({
|
|
1875
2591
|
...props
|
|
1876
2592
|
}) {
|
|
1877
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
2622
|
+
var React30 = require("react");
|
|
1907
2623
|
var ScrollAreaPrimitive = __toESM(require("@radix-ui/react-scroll-area"), 1);
|
|
1908
|
-
var
|
|
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,
|
|
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,
|
|
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,
|
|
1930
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
1966
|
-
var
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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 =
|
|
2797
|
+
var InputComponent = React31.forwardRef((props, ref) => {
|
|
2053
2798
|
const { className, ...rest } = props;
|
|
2054
|
-
return /* @__PURE__ */ (0,
|
|
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 =
|
|
2072
|
-
const [searchValue, setSearchValue] =
|
|
2073
|
-
const [isOpen, setIsOpen] =
|
|
2074
|
-
return /* @__PURE__ */ (0,
|
|
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
|
-
|
|
2827
|
+
if (open) {
|
|
2828
|
+
setSearchValue("");
|
|
2829
|
+
}
|
|
2082
2830
|
},
|
|
2083
2831
|
children: [
|
|
2084
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
2100
|
-
|
|
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,
|
|
2859
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2112
2860
|
PopoverContent,
|
|
2113
2861
|
{
|
|
2114
2862
|
align: "start",
|
|
2115
|
-
className:
|
|
2116
|
-
|
|
2117
|
-
|
|
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,
|
|
2138
|
-
/* @__PURE__ */ (0,
|
|
2139
|
-
/* @__PURE__ */ (0,
|
|
2140
|
-
({ value, label }) => value ? /* @__PURE__ */ (0,
|
|
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,
|
|
2926
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
2173
2927
|
CommandItem,
|
|
2174
2928
|
{
|
|
2175
|
-
className:
|
|
2929
|
+
className: cn(countryOptionVariants({ size })),
|
|
2176
2930
|
onSelect: handleSelect,
|
|
2177
2931
|
children: [
|
|
2178
|
-
/* @__PURE__ */ (0,
|
|
2179
|
-
/* @__PURE__ */ (0,
|
|
2180
|
-
/* @__PURE__ */ (0,
|
|
2181
|
-
/* @__PURE__ */ (0,
|
|
2182
|
-
|
|
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,
|
|
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
|
|
2951
|
+
var React32 = __toESM(require("react"), 1);
|
|
2198
2952
|
var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
|
|
2199
|
-
var
|
|
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 =
|
|
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,
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
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
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
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
|
|
2335
|
-
var
|
|
2336
|
-
var
|
|
2337
|
-
var
|
|
2338
|
-
var searchTextVariants = (0,
|
|
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
|
|
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 =
|
|
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,
|
|
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,
|
|
2394
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
2417
|
-
var
|
|
2418
|
-
var
|
|
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 =
|
|
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 =
|
|
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] =
|
|
3194
|
+
const [internalValue, setInternalValue] = React34.useState(
|
|
2462
3195
|
() => normalizeArray(isControlled ? toArray(value) : defaultInternal, defaultInternal)
|
|
2463
3196
|
);
|
|
2464
|
-
|
|
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 =
|
|
2473
|
-
const [draggingThumbIndex, setDraggingThumbIndex] =
|
|
2474
|
-
const [hoveredThumbIndex, setHoveredThumbIndex] =
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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,
|
|
3494
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
2762
3495
|
"div",
|
|
2763
3496
|
{
|
|
2764
|
-
className:
|
|
3497
|
+
className: wrapperBase,
|
|
2765
3498
|
style: { marginInline: `${thumbRadius}px` },
|
|
2766
|
-
children:
|
|
2767
|
-
/* @__PURE__ */ (0,
|
|
2768
|
-
|
|
2769
|
-
"
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
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,
|
|
2781
|
-
"
|
|
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
|
-
"
|
|
2785
|
-
disabled
|
|
3568
|
+
"paragraph-sm text-primary",
|
|
3569
|
+
disabled && "text-primary-disabled"
|
|
2786
3570
|
),
|
|
2787
|
-
|
|
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
|
-
|
|
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
|
|
2828
|
-
var
|
|
2829
|
-
var
|
|
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] =
|
|
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 =
|
|
2857
|
-
const containerRef =
|
|
2858
|
-
const [height, setHeight] =
|
|
2859
|
-
const [width, setWidth] =
|
|
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
|
|
2873
|
-
const
|
|
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,
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
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
|
-
|
|
2979
|
-
|
|
2980
|
-
{
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
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
|
|
3012
|
-
var
|
|
3013
|
-
var
|
|
3014
|
-
var
|
|
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
|
|
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] =
|
|
3806
|
+
const [internalValue, setInternalValue] = React36.useState(
|
|
3065
3807
|
defaultValue ?? ""
|
|
3066
3808
|
);
|
|
3067
3809
|
const currentValue = (isControlled ? value : internalValue) ?? "";
|
|
3068
|
-
const inputRef =
|
|
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,
|
|
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,
|
|
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,
|
|
3840
|
+
showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3099
3841
|
"span",
|
|
3100
3842
|
{
|
|
3101
3843
|
className: cn(
|
|
3102
|
-
|
|
3844
|
+
iconWrapperVariants4({ size, disabled })
|
|
3103
3845
|
),
|
|
3104
3846
|
children: leadingIcon
|
|
3105
3847
|
}
|
|
3106
3848
|
),
|
|
3107
|
-
/* @__PURE__ */ (0,
|
|
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
|
-
|
|
3861
|
+
inputTextVariants3({ size }),
|
|
3120
3862
|
"bg-transparent outline-none w-full"
|
|
3121
3863
|
),
|
|
3122
3864
|
...inputProps
|
|
3123
3865
|
}
|
|
3124
3866
|
),
|
|
3125
|
-
showTrailingIcon && /* @__PURE__ */ (0,
|
|
3867
|
+
showTrailingIcon && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3126
3868
|
"span",
|
|
3127
3869
|
{
|
|
3128
3870
|
className: cn(
|
|
3129
|
-
|
|
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
|
|
3144
|
-
var
|
|
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,
|
|
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,
|
|
3156
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
3235
|
-
var
|
|
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,
|
|
3273
|
-
/* @__PURE__ */ (0,
|
|
3274
|
-
icon != null && /* @__PURE__ */ (0,
|
|
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,
|
|
3277
|
-
icon != null && /* @__PURE__ */ (0,
|
|
3278
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
4037
|
+
var React39 = __toESM(require("react"), 1);
|
|
3296
4038
|
var PopoverPrimitive2 = __toESM(require("@radix-ui/react-popover"), 1);
|
|
3297
|
-
var
|
|
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] =
|
|
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 [
|
|
3324
|
-
const popoverArrowClasses = "relative fill-(--background-popover) transition-[filter,transform] group-data-[side=top]:top-[-2px] group-data-[side=top]:drop-shadow-[
|
|
3325
|
-
const
|
|
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 } =
|
|
3356
|
-
return /* @__PURE__ */ (0,
|
|
3357
|
-
/* @__PURE__ */ (0,
|
|
3358
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
3367
|
-
/* @__PURE__ */ (0,
|
|
3368
|
-
/* @__PURE__ */ (0,
|
|
3369
|
-
/* @__PURE__ */ (0,
|
|
3370
|
-
/* @__PURE__ */ (0,
|
|
3371
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
3374
|
-
/* @__PURE__ */ (0,
|
|
3375
|
-
/* @__PURE__ */ (0,
|
|
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/
|
|
3386
|
-
var
|
|
3387
|
-
var
|
|
3388
|
-
var
|
|
3389
|
-
var
|
|
3390
|
-
var
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
}
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
|
|
3412
|
-
|
|
3413
|
-
}
|
|
3414
|
-
|
|
3415
|
-
|
|
3416
|
-
|
|
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
|
|
4161
|
+
};
|
|
4162
|
+
var Tooltip = (props) => {
|
|
3421
4163
|
const {
|
|
3422
|
-
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
|
|
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
|
-
|
|
4219
|
+
delayDuration = 200,
|
|
4220
|
+
skipDelayDuration = 300,
|
|
4221
|
+
disableHoverableContent = false
|
|
3431
4222
|
} = props;
|
|
3432
|
-
|
|
3433
|
-
|
|
3434
|
-
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
|
|
3435
|
-
Comp,
|
|
4223
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
4224
|
+
TooltipPrimitive2.Provider,
|
|
3436
4225
|
{
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
|
|
3440
|
-
|
|
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
|
-
|
|
3443
|
-
|
|
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
|
-
|
|
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
|
|
3452
|
-
var
|
|
3453
|
-
var LogoIconSvg = (props) => /* @__PURE__ */ (0,
|
|
3454
|
-
/* @__PURE__ */ (0,
|
|
3455
|
-
/* @__PURE__ */ (0,
|
|
3456
|
-
/* @__PURE__ */ (0,
|
|
3457
|
-
/* @__PURE__ */ (0,
|
|
3458
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
3490
|
-
var
|
|
3491
|
-
var LogoIconSvg2 = (props) => /* @__PURE__ */ (0,
|
|
3492
|
-
/* @__PURE__ */ (0,
|
|
3493
|
-
/* @__PURE__ */ (0,
|
|
3494
|
-
/* @__PURE__ */ (0,
|
|
3495
|
-
/* @__PURE__ */ (0,
|
|
3496
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
3499
|
-
/* @__PURE__ */ (0,
|
|
3500
|
-
/* @__PURE__ */ (0,
|
|
3501
|
-
/* @__PURE__ */ (0,
|
|
3502
|
-
/* @__PURE__ */ (0,
|
|
3503
|
-
/* @__PURE__ */ (0,
|
|
3504
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
3545
|
-
/* @__PURE__ */ (0,
|
|
3546
|
-
/* @__PURE__ */ (0,
|
|
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
|
-
|
|
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
|