@bubo-squared/ui-framework 0.1.5 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -35,24 +35,22 @@ __export(index_exports, {
35
35
  BadgeDigit: () => BadgeDigit,
36
36
  BadgeDot: () => BadgeDot,
37
37
  BadgeStatus: () => BadgeStatus,
38
+ Breadcrumb: () => Breadcrumb,
38
39
  Button: () => Button,
39
40
  ButtonGroup: () => ButtonGroup,
40
41
  Checkbox: () => Checkbox,
41
42
  Divider: () => Divider,
42
43
  Dropdown: () => Dropdown,
44
+ Field: () => Field,
43
45
  IconButton: () => IconButton,
44
46
  IconButtonGroup: () => IconButtonGroup,
45
47
  LinkButton: () => LinkButton,
46
- LogoIconExtraLarge: () => LogoIconExtraLarge_default,
47
- LogoIconExtraSmall: () => LogoIconExtraSmall_default,
48
- LogoIconLarge: () => LogoIconLarge_default,
49
- LogoIconMedium: () => LogoIconMedium_default,
50
- LogoIconSmall: () => LogoIconSmall_default,
51
- LogoInline: () => LogoInline_default,
52
- LogoInlineSmall: () => LogoInlineSmall_default,
53
- LogoMultiline: () => LogoMultiline_default,
48
+ Logo: () => Logo,
49
+ LogoIcon: () => LogoIcon,
54
50
  MessageButton: () => MessageButton,
55
51
  PasswordInput: () => PasswordInput,
52
+ PhoneInput: () => PhoneInput,
53
+ Popover: () => Popover2,
56
54
  Progress: () => Progress,
57
55
  RadioGroup: () => RadioGroup,
58
56
  SearchInput: () => SearchInput,
@@ -171,7 +169,7 @@ Button.displayName = "Button";
171
169
  var import_class_variance_authority2 = require("class-variance-authority");
172
170
  var import_jsx_runtime3 = require("react/jsx-runtime");
173
171
  var buttonGroupVariants = (0, import_class_variance_authority2.cva)(
174
- "flex items-center justify-center gap-4 pt-4 w-80 min-w-80",
172
+ "flex items-center justify-center gap-4 pt-4 w-[320px] min-w-[320px]",
175
173
  {
176
174
  variants: {
177
175
  variant: {
@@ -1162,7 +1160,7 @@ var Dropdown = (props) => {
1162
1160
  ]
1163
1161
  }
1164
1162
  ),
1165
- isOpen && options.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "absolute z-10 mt-1 w-full min-w-343 rounded-4 border border-(--border-primary-hover) bg-(--background-neutral) shadow-card-md flex overflow-y-scroll dropdown-scrollbar max-h-[316px]", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("ul", { role: "listbox", className: "flex flex-1 flex-col", children: options.map((opt) => {
1163
+ isOpen && options.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "absolute z-10 mt-1 w-full min-w-343 rounded-4 border border-(--border-primary-hover) bg-(--background-neutral) shadow-card-md flex overflow-y-scroll dropdown-scrollbar max-h-79", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("ul", { role: "listbox", className: "flex flex-1 flex-col", children: options.map((opt) => {
1166
1164
  const selected = opt.value === currentValue;
1167
1165
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1168
1166
  "li",
@@ -1204,39 +1202,9 @@ var Dropdown = (props) => {
1204
1202
  };
1205
1203
  Dropdown.displayName = "Dropdown";
1206
1204
 
1207
- // src/components/Inputs/PasswordInput.tsx
1208
- var React20 = __toESM(require("react"), 1);
1209
- var import_class_variance_authority14 = require("class-variance-authority");
1210
-
1211
- // src/components/ui/input.tsx
1205
+ // src/components/Inputs/Field.tsx
1212
1206
  var React17 = __toESM(require("react"), 1);
1213
1207
  var import_jsx_runtime19 = require("react/jsx-runtime");
1214
- var Input = React17.forwardRef(
1215
- ({ className, type, variant = "default", ...props }, ref) => {
1216
- const base = "text-(--text-primary) placeholder:text-(--text-secondary) disabled:text-(--text-primary-disabled) disabled:placeholder:text-(--text-primary-disabled) selection:bg-primary selection:text-primary-foreground file:text-foreground";
1217
- 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";
1218
- const bareStyles = "bg-transparent outline-none w-full";
1219
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1220
- "input",
1221
- {
1222
- ref,
1223
- type,
1224
- "data-slot": "input",
1225
- className: cn(
1226
- base,
1227
- variant === "default" ? defaultStyles : bareStyles,
1228
- className
1229
- ),
1230
- ...props
1231
- }
1232
- );
1233
- }
1234
- );
1235
- Input.displayName = "Input";
1236
-
1237
- // src/components/Inputs/Field.tsx
1238
- var React18 = __toESM(require("react"), 1);
1239
- var import_jsx_runtime20 = require("react/jsx-runtime");
1240
1208
  var fieldBase = "flex flex-col gap-2 items-start min-w-[343px]";
1241
1209
  var Field = (props) => {
1242
1210
  const {
@@ -1247,13 +1215,13 @@ var Field = (props) => {
1247
1215
  className,
1248
1216
  children
1249
1217
  } = props;
1250
- const fieldId = React18.useId();
1218
+ const fieldId = React17.useId();
1251
1219
  const labelId = label ? `${fieldId}-label` : void 0;
1252
1220
  const hintId = hint ? `${fieldId}-hint` : void 0;
1253
1221
  const hintColorClass = disabled ? "text-(--text-primary-disabled)" : status === "success" ? "text-(--text-success)" : status === "error" ? "text-(--text-error)" : "text-(--text-secondary)";
1254
1222
  const labelColorClass = disabled ? "text-(--text-primary-disabled)" : "text-(--text-primary)";
1255
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: cn(fieldBase, className), children: [
1256
- label && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1223
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: cn(fieldBase, className), children: [
1224
+ label && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1257
1225
  "label",
1258
1226
  {
1259
1227
  id: labelId,
@@ -1262,8 +1230,8 @@ var Field = (props) => {
1262
1230
  children: label
1263
1231
  }
1264
1232
  ),
1265
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "relative w-full", children }),
1266
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1233
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "relative w-full", children }),
1234
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1267
1235
  "p",
1268
1236
  {
1269
1237
  id: hint ? hintId : void 0,
@@ -1276,6 +1244,36 @@ var Field = (props) => {
1276
1244
  };
1277
1245
  Field.displayName = "Field";
1278
1246
 
1247
+ // src/components/Inputs/PasswordInput.tsx
1248
+ var React20 = __toESM(require("react"), 1);
1249
+ var import_class_variance_authority14 = require("class-variance-authority");
1250
+
1251
+ // src/components/ui/input.tsx
1252
+ var React18 = __toESM(require("react"), 1);
1253
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1254
+ var Input = React18.forwardRef(
1255
+ ({ className, type, variant = "default", ...props }, ref) => {
1256
+ const base = "text-(--text-primary) placeholder:text-(--text-secondary) disabled:text-(--text-primary-disabled) disabled:placeholder:text-(--text-primary-disabled) selection:bg-primary selection:text-primary-foreground file:text-foreground";
1257
+ 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";
1258
+ const bareStyles = "bg-transparent outline-none w-full";
1259
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1260
+ "input",
1261
+ {
1262
+ ref,
1263
+ type,
1264
+ "data-slot": "input",
1265
+ className: cn(
1266
+ base,
1267
+ variant === "default" ? defaultStyles : bareStyles,
1268
+ className
1269
+ ),
1270
+ ...props
1271
+ }
1272
+ );
1273
+ }
1274
+ );
1275
+ Input.displayName = "Input";
1276
+
1279
1277
  // src/components/Inputs/InputShell.tsx
1280
1278
  var React19 = __toESM(require("react"), 1);
1281
1279
  var import_class_variance_authority13 = require("class-variance-authority");
@@ -1483,10 +1481,497 @@ var PasswordInput = (props) => {
1483
1481
  };
1484
1482
  PasswordInput.displayName = "PasswordInput";
1485
1483
 
1484
+ // src/components/Inputs/PhoneInput.tsx
1485
+ var React26 = __toESM(require("react"), 1);
1486
+ var import_icons8 = require("@bubo-squared/icons");
1487
+ var RPNInput = __toESM(require("react-phone-number-input"), 1);
1488
+ var import_flags = __toESM(require("react-phone-number-input/flags"), 1);
1489
+
1490
+ // src/components/ui/button.tsx
1491
+ var React21 = require("react");
1492
+ var import_react_slot7 = require("@radix-ui/react-slot");
1493
+ var import_class_variance_authority15 = require("class-variance-authority");
1494
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1495
+ var buttonVariants2 = (0, import_class_variance_authority15.cva)(
1496
+ "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",
1497
+ {
1498
+ variants: {
1499
+ variant: {
1500
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
1501
+ destructive: "bg-destructive text-white hover:bg-destructive/90 dark:bg-destructive/60",
1502
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
1503
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
1504
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
1505
+ link: "text-primary underline-offset-4 hover:underline"
1506
+ },
1507
+ size: {
1508
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
1509
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
1510
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
1511
+ icon: "size-9",
1512
+ "icon-sm": "size-8",
1513
+ "icon-lg": "size-10"
1514
+ }
1515
+ },
1516
+ defaultVariants: {
1517
+ variant: "default",
1518
+ size: "default"
1519
+ }
1520
+ }
1521
+ );
1522
+ function Button2({
1523
+ className,
1524
+ variant = "default",
1525
+ size = "default",
1526
+ asChild = false,
1527
+ ...props
1528
+ }) {
1529
+ const Comp = asChild ? import_react_slot7.Slot : "button";
1530
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1531
+ Comp,
1532
+ {
1533
+ "data-slot": "button",
1534
+ "data-variant": variant,
1535
+ "data-size": size,
1536
+ className: cn(buttonVariants2({ variant, size, className })),
1537
+ ...props
1538
+ }
1539
+ );
1540
+ }
1541
+
1542
+ // src/components/ui/command.tsx
1543
+ var React23 = require("react");
1544
+ var import_cmdk = require("cmdk");
1545
+ var import_icons7 = require("@bubo-squared/icons");
1546
+
1547
+ // src/components/ui/dialog.tsx
1548
+ var React22 = require("react");
1549
+ var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
1550
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1551
+
1552
+ // src/components/ui/command.tsx
1553
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1554
+ function Command({
1555
+ className,
1556
+ ...props
1557
+ }) {
1558
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1559
+ import_cmdk.Command,
1560
+ {
1561
+ "data-slot": "command",
1562
+ className: cn(
1563
+ "bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",
1564
+ className
1565
+ ),
1566
+ ...props
1567
+ }
1568
+ );
1569
+ }
1570
+ function CommandInput({
1571
+ className,
1572
+ ...props
1573
+ }) {
1574
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
1575
+ "div",
1576
+ {
1577
+ "data-slot": "command-input-wrapper",
1578
+ className: "flex h-9 items-center gap-2 border-b px-3",
1579
+ children: [
1580
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_icons7.SearchIcon, { className: "size-4 shrink-0 opacity-50 text-(--text-secondary)" }),
1581
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1582
+ import_cmdk.Command.Input,
1583
+ {
1584
+ "data-slot": "command-input",
1585
+ className: cn(
1586
+ "placeholder:text-(--text-secondary) text-(--text-primary) flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
1587
+ className
1588
+ ),
1589
+ ...props
1590
+ }
1591
+ )
1592
+ ]
1593
+ }
1594
+ );
1595
+ }
1596
+ function CommandList({
1597
+ className,
1598
+ ...props
1599
+ }) {
1600
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1601
+ import_cmdk.Command.List,
1602
+ {
1603
+ "data-slot": "command-list",
1604
+ className: cn(
1605
+ "max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",
1606
+ className
1607
+ ),
1608
+ ...props
1609
+ }
1610
+ );
1611
+ }
1612
+ function CommandEmpty({
1613
+ ...props
1614
+ }) {
1615
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1616
+ import_cmdk.Command.Empty,
1617
+ {
1618
+ "data-slot": "command-empty",
1619
+ className: "py-6 text-center text-sm",
1620
+ ...props
1621
+ }
1622
+ );
1623
+ }
1624
+ function CommandGroup({
1625
+ className,
1626
+ ...props
1627
+ }) {
1628
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1629
+ import_cmdk.Command.Group,
1630
+ {
1631
+ "data-slot": "command-group",
1632
+ className: cn(
1633
+ "text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",
1634
+ className
1635
+ ),
1636
+ ...props
1637
+ }
1638
+ );
1639
+ }
1640
+ function CommandItem({
1641
+ className,
1642
+ ...props
1643
+ }) {
1644
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1645
+ import_cmdk.Command.Item,
1646
+ {
1647
+ "data-slot": "command-item",
1648
+ className: cn(
1649
+ "data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1650
+ className
1651
+ ),
1652
+ ...props
1653
+ }
1654
+ );
1655
+ }
1656
+
1657
+ // src/components/ui/popover.tsx
1658
+ var React24 = require("react");
1659
+ var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
1660
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1661
+ function Popover({
1662
+ ...props
1663
+ }) {
1664
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
1665
+ }
1666
+ function PopoverTrigger({
1667
+ ...props
1668
+ }) {
1669
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
1670
+ }
1671
+ function PopoverContent({
1672
+ className,
1673
+ align = "center",
1674
+ sideOffset = 4,
1675
+ ...props
1676
+ }) {
1677
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1678
+ PopoverPrimitive.Content,
1679
+ {
1680
+ "data-slot": "popover-content",
1681
+ align,
1682
+ sideOffset,
1683
+ className: cn(
1684
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
1685
+ className
1686
+ ),
1687
+ ...props
1688
+ }
1689
+ ) });
1690
+ }
1691
+
1692
+ // src/components/ui/scroll-area.tsx
1693
+ var React25 = require("react");
1694
+ var ScrollAreaPrimitive = __toESM(require("@radix-ui/react-scroll-area"), 1);
1695
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1696
+ function ScrollArea({
1697
+ className,
1698
+ children,
1699
+ ...props
1700
+ }) {
1701
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1702
+ ScrollAreaPrimitive.Root,
1703
+ {
1704
+ "data-slot": "scroll-area",
1705
+ className: cn("relative", className),
1706
+ ...props,
1707
+ children: [
1708
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1709
+ ScrollAreaPrimitive.Viewport,
1710
+ {
1711
+ "data-slot": "scroll-area-viewport",
1712
+ className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
1713
+ children
1714
+ }
1715
+ ),
1716
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(ScrollBar, {}),
1717
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(ScrollAreaPrimitive.Corner, {})
1718
+ ]
1719
+ }
1720
+ );
1721
+ }
1722
+ function ScrollBar({
1723
+ className,
1724
+ orientation = "vertical",
1725
+ ...props
1726
+ }) {
1727
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1728
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
1729
+ {
1730
+ "data-slot": "scroll-area-scrollbar",
1731
+ orientation,
1732
+ className: cn(
1733
+ // Base scrollbar track styling
1734
+ "flex touch-none transition-colors select-none ml-1 pt-1 pb-1",
1735
+ orientation === "vertical" && "h-full w-4",
1736
+ orientation === "horizontal" && "h-4 flex-col",
1737
+ className
1738
+ ),
1739
+ ...props,
1740
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1741
+ ScrollAreaPrimitive.ScrollAreaThumb,
1742
+ {
1743
+ "data-slot": "scroll-area-thumb",
1744
+ className: "bg-(--background-secondary) relative flex-1 rounded mr-1 w-full ml-1"
1745
+ }
1746
+ )
1747
+ }
1748
+ );
1749
+ }
1750
+
1751
+ // src/components/Inputs/PhoneInput.tsx
1752
+ var import_class_variance_authority16 = require("class-variance-authority");
1753
+ var import_jsx_runtime28 = require("react/jsx-runtime");
1754
+ var inputBase = "h-full rounded-4 border-(--border-secondary) bg-(--background-primary) hover:border-(--border-secondary-hover)";
1755
+ var sizeBase = (0, import_class_variance_authority16.cva)(
1756
+ "flex w-full",
1757
+ {
1758
+ variants: {
1759
+ size: {
1760
+ large: "h-11 [&_button]:gap-2",
1761
+ "extra-large": "h-14 [&_button]:gap-3"
1762
+ }
1763
+ }
1764
+ }
1765
+ );
1766
+ var inputTextVariants = (0, import_class_variance_authority16.cva)("", {
1767
+ variants: {
1768
+ size: {
1769
+ large: "subtitle",
1770
+ "extra-large": "h6-title"
1771
+ },
1772
+ disabled: {
1773
+ true: "text-(--text-primary-disabled) border-(--border-secondary-disabled)"
1774
+ }
1775
+ },
1776
+ defaultVariants: {
1777
+ size: "large"
1778
+ }
1779
+ });
1780
+ var wrapperStatusClass = {
1781
+ default: "input-default-nested",
1782
+ success: "input-success-nested",
1783
+ error: "input-error-nested"
1784
+ };
1785
+ var PhoneInput = React26.forwardRef(
1786
+ (props, ref) => {
1787
+ const {
1788
+ className,
1789
+ onChange,
1790
+ value,
1791
+ label,
1792
+ hint,
1793
+ placeholder,
1794
+ size = "large",
1795
+ disabled = false,
1796
+ status = "default",
1797
+ ...rest
1798
+ } = props;
1799
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1800
+ Field,
1801
+ {
1802
+ label,
1803
+ hint,
1804
+ status,
1805
+ disabled,
1806
+ className,
1807
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: cn("w-full", wrapperStatusClass[status]), children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1808
+ RPNInput.default,
1809
+ {
1810
+ ref,
1811
+ className: cn(
1812
+ sizeBase({ size }),
1813
+ inputTextVariants({ size, disabled })
1814
+ ),
1815
+ style: { marginBottom: 0 },
1816
+ flagComponent: FlagComponent,
1817
+ countrySelectComponent: CountrySelect,
1818
+ inputComponent: InputComponent,
1819
+ smartCaret: false,
1820
+ value: value || void 0,
1821
+ international: true,
1822
+ countryCallingCodeEditable: false,
1823
+ onChange: (value2) => onChange?.(value2 || ""),
1824
+ placeholder,
1825
+ disabled,
1826
+ ...rest
1827
+ }
1828
+ ) })
1829
+ }
1830
+ );
1831
+ }
1832
+ );
1833
+ PhoneInput.displayName = "PhoneInput";
1834
+ var InputComponent = React26.forwardRef((props, ref) => {
1835
+ const { className, ...rest } = props;
1836
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1837
+ Input,
1838
+ {
1839
+ ref,
1840
+ placeholder: rest.placeholder,
1841
+ className: cn(inputBase, className),
1842
+ ...rest
1843
+ }
1844
+ );
1845
+ });
1846
+ InputComponent.displayName = "InputComponent";
1847
+ var CountrySelect = ({
1848
+ disabled,
1849
+ value: selectedCountry,
1850
+ options: countryList,
1851
+ onChange
1852
+ }) => {
1853
+ const scrollAreaRef = React26.useRef(null);
1854
+ const [searchValue, setSearchValue] = React26.useState("");
1855
+ const [isOpen, setIsOpen] = React26.useState(false);
1856
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
1857
+ Popover,
1858
+ {
1859
+ open: isOpen,
1860
+ modal: true,
1861
+ onOpenChange: (open) => {
1862
+ setIsOpen(open);
1863
+ open && setSearchValue("");
1864
+ },
1865
+ children: [
1866
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
1867
+ Button2,
1868
+ {
1869
+ type: "button",
1870
+ variant: "outline",
1871
+ className: cn(inputBase, "flex gap-1 rounded-4 px-3 focus:z-10 mr-(--space-12) text-(--text-primary-disabled) hover:text-(--text-primary-hover) focus:text-(--text-primary-focus)"),
1872
+ disabled,
1873
+ children: [
1874
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1875
+ FlagComponent,
1876
+ {
1877
+ country: selectedCountry,
1878
+ countryName: selectedCountry
1879
+ }
1880
+ ),
1881
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1882
+ import_icons8.CodeIcon,
1883
+ {
1884
+ className: cn(
1885
+ "-mr-2 size-4 opacity-50 rotate-90",
1886
+ disabled ? "hidden" : "opacity-100"
1887
+ )
1888
+ }
1889
+ )
1890
+ ]
1891
+ }
1892
+ ) }),
1893
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(PopoverContent, { className: "w-[300px] p-0 relative left-4.5 bg-(--background-primary) shadow-card-md rounded-4 border-none outline-1 outline-solid outline-(--border-primary-hover) **:data-[slot='command-input-wrapper']:border-b-(--border-secondary)", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Command, { children: [
1894
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1895
+ CommandInput,
1896
+ {
1897
+ value: searchValue,
1898
+ onValueChange: (value) => {
1899
+ setSearchValue(value);
1900
+ setTimeout(() => {
1901
+ if (scrollAreaRef.current) {
1902
+ const viewportElement = scrollAreaRef.current.querySelector(
1903
+ "[data-radix-scroll-area-viewport]"
1904
+ );
1905
+ if (viewportElement) {
1906
+ viewportElement.scrollTop = 0;
1907
+ }
1908
+ }
1909
+ }, 0);
1910
+ },
1911
+ placeholder: "Search country..."
1912
+ }
1913
+ ),
1914
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(CommandList, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(ScrollArea, { ref: scrollAreaRef, className: "h-72", children: [
1915
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(CommandEmpty, { children: "No country found." }),
1916
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(CommandGroup, { className: "[&>div>div]:pl-4 [&>div>div]:pr-2 [&>div>div]:py-2 [&>div>div]:border-b [&>div>div]:border-b-(--border-secondary) [&>div>div]:cursor-pointer [&>div>div]:hover:bg-(--background-primary-hover) [&>div>div]:text-(--text-primary) [&>div>div]:hover:text-(--text-primary) p-0 pr-4", children: countryList.map(
1917
+ ({ value, label }) => value ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1918
+ CountrySelectOption,
1919
+ {
1920
+ country: value,
1921
+ countryName: label,
1922
+ selectedCountry,
1923
+ onChange,
1924
+ onSelectComplete: () => setIsOpen(false)
1925
+ },
1926
+ value
1927
+ ) : null
1928
+ ) })
1929
+ ] }) })
1930
+ ] }) })
1931
+ ]
1932
+ }
1933
+ );
1934
+ };
1935
+ var CountrySelectOption = (props) => {
1936
+ const {
1937
+ country,
1938
+ countryName,
1939
+ selectedCountry,
1940
+ onChange,
1941
+ onSelectComplete
1942
+ } = props;
1943
+ const handleSelect = () => {
1944
+ onChange(country);
1945
+ onSelectComplete();
1946
+ };
1947
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
1948
+ CommandItem,
1949
+ {
1950
+ className: "gap-2 data-[selected=true]:text-(--text-primary)",
1951
+ onSelect: handleSelect,
1952
+ children: [
1953
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(FlagComponent, { country, countryName }),
1954
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "flex-1 text-sm", children: countryName }),
1955
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-sm text-foreground/50", children: `+${RPNInput.getCountryCallingCode(country)}` }),
1956
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1957
+ import_icons8.CheckIcon,
1958
+ {
1959
+ className: `ml-auto size-4 ${country === selectedCountry ? "opacity-100" : "opacity-0"}`
1960
+ }
1961
+ )
1962
+ ]
1963
+ }
1964
+ );
1965
+ };
1966
+ var FlagComponent = ({ country, countryName }) => {
1967
+ const Flag = import_flags.default[country];
1968
+ return /* @__PURE__ */ (0, import_jsx_runtime28.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_runtime28.jsx)(Flag, { title: countryName }) });
1969
+ };
1970
+
1486
1971
  // src/components/Inputs/RadioGroup.tsx
1487
- var React21 = __toESM(require("react"), 1);
1972
+ var React27 = __toESM(require("react"), 1);
1488
1973
  var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
1489
- var import_jsx_runtime23 = require("react/jsx-runtime");
1974
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1490
1975
  var wrapperBase = "flex flex-col gap-2 items-start min-w-[343px]";
1491
1976
  var RadioGroup = ({
1492
1977
  label,
@@ -1500,14 +1985,14 @@ var RadioGroup = ({
1500
1985
  className,
1501
1986
  ...rootProps
1502
1987
  }) => {
1503
- const groupId = React21.useId();
1988
+ const groupId = React27.useId();
1504
1989
  const hintId = hint ? `${groupId}-hint` : void 0;
1505
1990
  const handleValueChange = (next) => {
1506
1991
  onValueChange?.(next);
1507
1992
  };
1508
1993
  const isHorizontal = orientation === "horizontal";
1509
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: wrapperBase, children: [
1510
- label && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1994
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: wrapperBase, children: [
1995
+ label && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1511
1996
  "span",
1512
1997
  {
1513
1998
  className: cn(
@@ -1518,7 +2003,7 @@ var RadioGroup = ({
1518
2003
  children: label
1519
2004
  }
1520
2005
  ),
1521
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2006
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1522
2007
  RadioGroupPrimitive.Root,
1523
2008
  {
1524
2009
  ...rootProps,
@@ -1531,13 +2016,13 @@ var RadioGroup = ({
1531
2016
  isHorizontal ? "flex-row gap-6" : "flex-col gap-2",
1532
2017
  className
1533
2018
  ),
1534
- children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2019
+ children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1535
2020
  RadioGroupPrimitive.Item,
1536
2021
  {
1537
2022
  value: option.value,
1538
2023
  disabled: disabled || option.disabled,
1539
2024
  asChild: true,
1540
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2025
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
1541
2026
  "button",
1542
2027
  {
1543
2028
  type: "button",
@@ -1547,7 +2032,7 @@ var RadioGroup = ({
1547
2032
  disabled || option.disabled ? "cursor-default" : "cursor-pointer"
1548
2033
  ),
1549
2034
  children: [
1550
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2035
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1551
2036
  "span",
1552
2037
  {
1553
2038
  className: cn(
@@ -1573,7 +2058,7 @@ var RadioGroup = ({
1573
2058
  "group-[&[data-disabled][data-state=checked]]:border-(--border-primary-disabled)",
1574
2059
  "group-[&[data-disabled][data-state=checked]]:bg-(--background-primary-disabled)"
1575
2060
  ),
1576
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2061
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1577
2062
  "span",
1578
2063
  {
1579
2064
  className: cn(
@@ -1588,7 +2073,7 @@ var RadioGroup = ({
1588
2073
  )
1589
2074
  }
1590
2075
  ),
1591
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2076
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1592
2077
  "span",
1593
2078
  {
1594
2079
  className: cn(
@@ -1607,7 +2092,7 @@ var RadioGroup = ({
1607
2092
  ))
1608
2093
  }
1609
2094
  ),
1610
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2095
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1611
2096
  "p",
1612
2097
  {
1613
2098
  id: hintId,
@@ -1623,11 +2108,11 @@ var RadioGroup = ({
1623
2108
  };
1624
2109
 
1625
2110
  // src/components/Inputs/SearchInput.tsx
1626
- var React22 = __toESM(require("react"), 1);
1627
- var import_class_variance_authority15 = require("class-variance-authority");
1628
- var import_icons7 = require("@bubo-squared/icons");
1629
- var import_jsx_runtime24 = require("react/jsx-runtime");
1630
- var searchTextVariants = (0, import_class_variance_authority15.cva)("truncate", {
2111
+ var React28 = __toESM(require("react"), 1);
2112
+ var import_class_variance_authority17 = require("class-variance-authority");
2113
+ var import_icons9 = require("@bubo-squared/icons");
2114
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2115
+ var searchTextVariants = (0, import_class_variance_authority17.cva)("truncate", {
1631
2116
  variants: {
1632
2117
  size: {
1633
2118
  large: "subtitle",
@@ -1638,7 +2123,7 @@ var searchTextVariants = (0, import_class_variance_authority15.cva)("truncate",
1638
2123
  size: "large"
1639
2124
  }
1640
2125
  });
1641
- var iconWrapperVariants2 = (0, import_class_variance_authority15.cva)("flex items-center justify-center shrink-0 text-(--icon-primary)", {
2126
+ var iconWrapperVariants2 = (0, import_class_variance_authority17.cva)("flex items-center justify-center shrink-0 text-(--icon-primary)", {
1642
2127
  variants: {
1643
2128
  size: {
1644
2129
  large: "size-5 [&>svg]:size-5",
@@ -1662,12 +2147,12 @@ var SearchInput = (props) => {
1662
2147
  showLeadingIcon = true,
1663
2148
  ...inputProps
1664
2149
  } = props;
1665
- const inputRef = React22.useRef(null);
2150
+ const inputRef = React28.useRef(null);
1666
2151
  const handleContainerClick = () => {
1667
2152
  if (disabled) return;
1668
2153
  inputRef.current?.focus();
1669
2154
  };
1670
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex flex-col gap-2 items-start min-w-[343px]", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "relative w-full", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2155
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "flex flex-col gap-2 items-start min-w-[343px]", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "relative w-full", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
1671
2156
  InputShell,
1672
2157
  {
1673
2158
  size,
@@ -1676,8 +2161,8 @@ var SearchInput = (props) => {
1676
2161
  className,
1677
2162
  onClick: handleContainerClick,
1678
2163
  children: [
1679
- showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: cn(iconWrapperVariants2({ size, disabled: !!disabled })), children: leadingIcon ?? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_icons7.SearchIcon, {}) }),
1680
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2164
+ showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: cn(iconWrapperVariants2({ size, disabled: !!disabled })), children: leadingIcon ?? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_icons9.SearchIcon, {}) }),
2165
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1681
2166
  Input,
1682
2167
  {
1683
2168
  ref: inputRef,
@@ -1699,8 +2184,8 @@ var SearchInput = (props) => {
1699
2184
  SearchInput.displayName = "SearchInput";
1700
2185
 
1701
2186
  // src/components/Inputs/Slider.tsx
1702
- var React23 = __toESM(require("react"), 1);
1703
- var import_jsx_runtime25 = require("react/jsx-runtime");
2187
+ var React29 = __toESM(require("react"), 1);
2188
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1704
2189
  var wrapperBase2 = "flex flex-col gap-2 items-start min-w-[343px]";
1705
2190
  var Slider = (props) => {
1706
2191
  const {
@@ -1720,7 +2205,7 @@ var Slider = (props) => {
1720
2205
  } = props;
1721
2206
  const isControlled = value !== void 0;
1722
2207
  const expectedLength = type === "multi" ? 2 : 1;
1723
- const normalizeArray = React23.useCallback(
2208
+ const normalizeArray = React29.useCallback(
1724
2209
  (arr, fallback) => {
1725
2210
  if (!arr || arr.length === 0) return fallback;
1726
2211
  if (arr.length === expectedLength) return arr;
@@ -1732,15 +2217,15 @@ var Slider = (props) => {
1732
2217
  },
1733
2218
  [expectedLength, max]
1734
2219
  );
1735
- const defaultInternal = React23.useMemo(() => {
2220
+ const defaultInternal = React29.useMemo(() => {
1736
2221
  if (defaultValue) return normalizeArray(defaultValue, []);
1737
2222
  if (type === "multi") return [min, Math.min(min + (max - min) / 4, max)];
1738
2223
  return [min + (max - min) / 3];
1739
2224
  }, [defaultValue, min, max, type, normalizeArray]);
1740
- const [internalValue, setInternalValue] = React23.useState(
2225
+ const [internalValue, setInternalValue] = React29.useState(
1741
2226
  () => normalizeArray(isControlled ? value : defaultInternal, defaultInternal)
1742
2227
  );
1743
- React23.useEffect(() => {
2228
+ React29.useEffect(() => {
1744
2229
  if (isControlled) {
1745
2230
  setInternalValue(
1746
2231
  (current2) => normalizeArray(value, current2.length ? current2 : defaultInternal)
@@ -1748,13 +2233,13 @@ var Slider = (props) => {
1748
2233
  }
1749
2234
  }, [isControlled, value, normalizeArray, defaultInternal]);
1750
2235
  const current = internalValue;
1751
- const trackRef = React23.useRef(null);
2236
+ const trackRef = React29.useRef(null);
1752
2237
  const clamp = (val) => {
1753
2238
  if (val < min) return min;
1754
2239
  if (val > max) return max;
1755
2240
  return val;
1756
2241
  };
1757
- React23.useEffect(() => {
2242
+ React29.useEffect(() => {
1758
2243
  if (!isControlled) {
1759
2244
  setInternalValue((prev) => {
1760
2245
  const clamped = prev.map((v) => clamp(v));
@@ -1939,7 +2424,7 @@ var Slider = (props) => {
1939
2424
  const trackHeight = 32;
1940
2425
  const thumbWidth = 18;
1941
2426
  const thumbRadius = thumbWidth / 2;
1942
- const renderTooltipBubble = (key, percent, labelText) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2427
+ const renderTooltipBubble = (key, percent, labelText) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1943
2428
  "div",
1944
2429
  {
1945
2430
  className: "absolute -translate-x-1/2 flex flex-col items-center",
@@ -1950,7 +2435,7 @@ var Slider = (props) => {
1950
2435
  marginBottom: isTooltipAbove ? 8 : void 0,
1951
2436
  marginTop: isTooltipAbove ? void 0 : 8
1952
2437
  },
1953
- children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
2438
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
1954
2439
  "div",
1955
2440
  {
1956
2441
  className: cn(
@@ -1959,7 +2444,7 @@ var Slider = (props) => {
1959
2444
  ),
1960
2445
  style: { marginBottom: 0 },
1961
2446
  children: [
1962
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2447
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1963
2448
  "p",
1964
2449
  {
1965
2450
  className: cn(
@@ -1970,7 +2455,7 @@ var Slider = (props) => {
1970
2455
  children: labelText
1971
2456
  }
1972
2457
  ),
1973
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2458
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1974
2459
  "div",
1975
2460
  {
1976
2461
  className: cn(
@@ -1988,7 +2473,7 @@ var Slider = (props) => {
1988
2473
  );
1989
2474
  const renderHandle = (index, percent, ariaValueText) => {
1990
2475
  const val = index === 0 ? primary : secondary;
1991
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2476
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1992
2477
  "button",
1993
2478
  {
1994
2479
  type: "button",
@@ -2019,11 +2504,11 @@ var Slider = (props) => {
2019
2504
  index
2020
2505
  );
2021
2506
  };
2022
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: wrapperBase2, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: cn("w-[354px] flex flex-col gap-1", className), children: [
2023
- /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "relative w-full", children: [
2507
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: wrapperBase2, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: cn("w-[354px] flex flex-col gap-1", className), children: [
2508
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "relative w-full", children: [
2024
2509
  showTooltip && primary !== void 0 && renderTooltipBubble("primary", primaryPercent, formatDisplayValue(primary)),
2025
2510
  showTooltip && type === "multi" && secondary !== void 0 && renderTooltipBubble("secondary", secondaryPercent, formatDisplayValue(secondary)),
2026
- /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
2511
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2027
2512
  "div",
2028
2513
  {
2029
2514
  className: cn(
@@ -2034,7 +2519,7 @@ var Slider = (props) => {
2034
2519
  ref: trackRef,
2035
2520
  onPointerDown: handleTrackPointerDown,
2036
2521
  children: [
2037
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2522
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2038
2523
  "div",
2039
2524
  {
2040
2525
  className: cn(
@@ -2053,7 +2538,7 @@ var Slider = (props) => {
2053
2538
  }
2054
2539
  )
2055
2540
  ] }),
2056
- showNumeric && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2541
+ showNumeric && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2057
2542
  "p",
2058
2543
  {
2059
2544
  className: cn(
@@ -2069,9 +2554,9 @@ var Slider = (props) => {
2069
2554
  Slider.displayName = "Slider";
2070
2555
 
2071
2556
  // src/components/Inputs/TextArea.tsx
2072
- var React24 = __toESM(require("react"), 1);
2073
- var import_icons8 = require("@bubo-squared/icons");
2074
- var import_jsx_runtime26 = require("react/jsx-runtime");
2557
+ var React30 = __toESM(require("react"), 1);
2558
+ var import_icons10 = require("@bubo-squared/icons");
2559
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2075
2560
  var wrapperBase3 = "flex flex-col gap-2 items-start min-w-[343px]";
2076
2561
  var TextArea = (props) => {
2077
2562
  const {
@@ -2089,7 +2574,7 @@ var TextArea = (props) => {
2089
2574
  ...textareaProps
2090
2575
  } = props;
2091
2576
  const isControlled = value !== void 0;
2092
- const [internalValue, setInternalValue] = React24.useState(
2577
+ const [internalValue, setInternalValue] = React30.useState(
2093
2578
  defaultValue ?? ""
2094
2579
  );
2095
2580
  const currentValue = (isControlled ? value : internalValue) ?? "";
@@ -2097,10 +2582,10 @@ var TextArea = (props) => {
2097
2582
  const currentLength = currentValue.length;
2098
2583
  const effectiveMaxLength = type === "character-limit" ? maxLength ?? 144 : void 0;
2099
2584
  const showCharacterLimit = type === "character-limit" && typeof effectiveMaxLength === "number";
2100
- const textareaRef = React24.useRef(null);
2101
- const containerRef = React24.useRef(null);
2102
- const [height, setHeight] = React24.useState(void 0);
2103
- const [width, setWidth] = React24.useState(void 0);
2585
+ const textareaRef = React30.useRef(null);
2586
+ const containerRef = React30.useRef(null);
2587
+ const [height, setHeight] = React30.useState(void 0);
2588
+ const [width, setWidth] = React30.useState(void 0);
2104
2589
  const minHeight = 80;
2105
2590
  const minWidth = 240;
2106
2591
  const handleContainerClick = () => {
@@ -2113,7 +2598,7 @@ var TextArea = (props) => {
2113
2598
  }
2114
2599
  onChange?.(event);
2115
2600
  };
2116
- const inputId = React24.useId();
2601
+ const inputId = React30.useId();
2117
2602
  const labelId = `${inputId}-label`;
2118
2603
  const hintId = `${inputId}-hint`;
2119
2604
  const statusBorderClass = {
@@ -2152,8 +2637,8 @@ var TextArea = (props) => {
2152
2637
  window.addEventListener("pointermove", handlePointerMove);
2153
2638
  window.addEventListener("pointerup", handlePointerUp);
2154
2639
  };
2155
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: wrapperBase3, children: [
2156
- label && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2640
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: wrapperBase3, children: [
2641
+ label && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2157
2642
  "label",
2158
2643
  {
2159
2644
  htmlFor: inputId,
@@ -2166,7 +2651,7 @@ var TextArea = (props) => {
2166
2651
  children: label
2167
2652
  }
2168
2653
  ),
2169
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "relative w-full", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2654
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "relative w-full", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2170
2655
  "div",
2171
2656
  {
2172
2657
  className: cn(
@@ -2185,7 +2670,7 @@ var TextArea = (props) => {
2185
2670
  onClick: handleContainerClick,
2186
2671
  "aria-disabled": disabled || void 0,
2187
2672
  children: [
2188
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2673
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2189
2674
  "textarea",
2190
2675
  {
2191
2676
  id: inputId,
@@ -2207,7 +2692,7 @@ var TextArea = (props) => {
2207
2692
  ...textareaProps
2208
2693
  }
2209
2694
  ),
2210
- showCharacterLimit && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2695
+ showCharacterLimit && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2211
2696
  "span",
2212
2697
  {
2213
2698
  className: cn(
@@ -2221,19 +2706,19 @@ var TextArea = (props) => {
2221
2706
  ]
2222
2707
  }
2223
2708
  ),
2224
- type === "responsive" && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2709
+ type === "responsive" && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2225
2710
  "div",
2226
2711
  {
2227
2712
  className: "absolute bottom-1 right-1 h-3 w-3 " + (disabled ? "cursor-auto" : "cursor-nwse-resize"),
2228
2713
  onPointerDown: disabled ? void 0 : handleResizePointerDown,
2229
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2714
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2230
2715
  "span",
2231
2716
  {
2232
2717
  className: cn(
2233
2718
  "absolute bottom-0 right-0 flex h-4 w-4 items-center justify-center text-(--icon-primary)",
2234
2719
  disabled && "text-(--icon-primary-disabled)"
2235
2720
  ),
2236
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_icons8.MaximizeIcon, {})
2721
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_icons10.MaximizeIcon, {})
2237
2722
  }
2238
2723
  )
2239
2724
  }
@@ -2241,7 +2726,7 @@ var TextArea = (props) => {
2241
2726
  ]
2242
2727
  }
2243
2728
  ) }),
2244
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2729
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2245
2730
  "p",
2246
2731
  {
2247
2732
  id: hint ? hintId : void 0,
@@ -2255,10 +2740,10 @@ var TextArea = (props) => {
2255
2740
  TextArea.displayName = "TextArea";
2256
2741
 
2257
2742
  // src/components/Inputs/TextInput.tsx
2258
- var React25 = __toESM(require("react"), 1);
2259
- var import_class_variance_authority16 = require("class-variance-authority");
2260
- var import_jsx_runtime27 = require("react/jsx-runtime");
2261
- var inputTextVariants = (0, import_class_variance_authority16.cva)("truncate", {
2743
+ var React31 = __toESM(require("react"), 1);
2744
+ var import_class_variance_authority18 = require("class-variance-authority");
2745
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2746
+ var inputTextVariants2 = (0, import_class_variance_authority18.cva)("truncate", {
2262
2747
  variants: {
2263
2748
  size: {
2264
2749
  large: "subtitle",
@@ -2269,7 +2754,7 @@ var inputTextVariants = (0, import_class_variance_authority16.cva)("truncate", {
2269
2754
  size: "large"
2270
2755
  }
2271
2756
  });
2272
- var iconWrapperVariants3 = (0, import_class_variance_authority16.cva)(
2757
+ var iconWrapperVariants3 = (0, import_class_variance_authority18.cva)(
2273
2758
  "flex items-center justify-center shrink-0 text-(--icon-primary)",
2274
2759
  {
2275
2760
  variants: {
@@ -2303,11 +2788,11 @@ var TextInput = (props) => {
2303
2788
  ...inputProps
2304
2789
  } = props;
2305
2790
  const isControlled = value !== void 0;
2306
- const [internalValue, setInternalValue] = React25.useState(
2791
+ const [internalValue, setInternalValue] = React31.useState(
2307
2792
  defaultValue ?? ""
2308
2793
  );
2309
2794
  const currentValue = (isControlled ? value : internalValue) ?? "";
2310
- const inputRef = React25.useRef(null);
2795
+ const inputRef = React31.useRef(null);
2311
2796
  const handleContainerClick = () => {
2312
2797
  if (disabled) return;
2313
2798
  inputRef.current?.focus();
@@ -2320,14 +2805,14 @@ var TextInput = (props) => {
2320
2805
  };
2321
2806
  const showLeadingIcon = !!leadingIcon;
2322
2807
  const showTrailingIcon = !!trailingIcon;
2323
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2808
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2324
2809
  Field,
2325
2810
  {
2326
2811
  label,
2327
2812
  hint,
2328
2813
  status,
2329
2814
  disabled,
2330
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
2815
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2331
2816
  InputShell,
2332
2817
  {
2333
2818
  size,
@@ -2336,7 +2821,7 @@ var TextInput = (props) => {
2336
2821
  className,
2337
2822
  onClick: handleContainerClick,
2338
2823
  children: [
2339
- showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2824
+ showLeadingIcon && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2340
2825
  "span",
2341
2826
  {
2342
2827
  className: cn(
@@ -2345,7 +2830,7 @@ var TextInput = (props) => {
2345
2830
  children: leadingIcon
2346
2831
  }
2347
2832
  ),
2348
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2833
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2349
2834
  Input,
2350
2835
  {
2351
2836
  ref: inputRef,
@@ -2357,14 +2842,14 @@ var TextInput = (props) => {
2357
2842
  onChange: handleChange,
2358
2843
  variant: "bare",
2359
2844
  className: cn(
2360
- inputTextVariants({ size }),
2845
+ inputTextVariants2({ size }),
2361
2846
  "bg-transparent outline-none w-full"
2362
2847
  ),
2363
2848
  style: { marginBottom: 0 },
2364
2849
  ...inputProps
2365
2850
  }
2366
2851
  ),
2367
- showTrailingIcon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2852
+ showTrailingIcon && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2368
2853
  "span",
2369
2854
  {
2370
2855
  className: cn(
@@ -2382,11 +2867,11 @@ var TextInput = (props) => {
2382
2867
  TextInput.displayName = "TextInput";
2383
2868
 
2384
2869
  // src/components/Inputs/Toggle.tsx
2385
- var React26 = require("react");
2386
- var import_jsx_runtime28 = require("react/jsx-runtime");
2870
+ var React32 = require("react");
2871
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2387
2872
  var Toggle = (props) => {
2388
2873
  const { label, className, disabled, ...inputProps } = props;
2389
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
2874
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
2390
2875
  "label",
2391
2876
  {
2392
2877
  className: cn(
@@ -2394,8 +2879,8 @@ var Toggle = (props) => {
2394
2879
  disabled ? "cursor-default" : "cursor-pointer"
2395
2880
  ),
2396
2881
  children: [
2397
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: "relative inline-flex items-center", children: [
2398
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2882
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("span", { className: "relative inline-flex items-center", children: [
2883
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2399
2884
  "input",
2400
2885
  {
2401
2886
  type: "checkbox",
@@ -2404,7 +2889,7 @@ var Toggle = (props) => {
2404
2889
  ...inputProps
2405
2890
  }
2406
2891
  ),
2407
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2892
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2408
2893
  "span",
2409
2894
  {
2410
2895
  className: cn(
@@ -2444,7 +2929,7 @@ var Toggle = (props) => {
2444
2929
  "peer-disabled:[&>.knob]:peer-checked:bg-(--background-primary-hover)",
2445
2930
  className
2446
2931
  ),
2447
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2932
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2448
2933
  "span",
2449
2934
  {
2450
2935
  className: cn(
@@ -2456,7 +2941,7 @@ var Toggle = (props) => {
2456
2941
  }
2457
2942
  )
2458
2943
  ] }),
2459
- label && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2944
+ label && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2460
2945
  "span",
2461
2946
  {
2462
2947
  className: cn(
@@ -2474,8 +2959,8 @@ var Toggle = (props) => {
2474
2959
  Toggle.displayName = "Toggle";
2475
2960
 
2476
2961
  // src/components/Inputs/WebsiteInput.tsx
2477
- var React27 = require("react");
2478
- var import_jsx_runtime29 = require("react/jsx-runtime");
2962
+ var React33 = require("react");
2963
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2479
2964
  var WebsiteInput = (props) => {
2480
2965
  const {
2481
2966
  hierarchy = "prefix",
@@ -2511,15 +2996,15 @@ var WebsiteInput = (props) => {
2511
2996
  size === "extra-large" ? "[&>svg]:w-6 [&>svg]:h-6" : "[&>svg]:w-5 [&>svg]:h-5",
2512
2997
  disabled ? "text-(--icon-primary-disabled)" : "text-(--icon-primary) group-hover:text-(--icon-primary-hover) group-focus-within:text-(--icon-primary-focus)"
2513
2998
  );
2514
- const prefixAddon = /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: baseAddonClass, children: [
2515
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: addonTextClass, children: protocolLabel }),
2516
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: iconWrapperClass, children: icon })
2999
+ const prefixAddon = /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: baseAddonClass, children: [
3000
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: addonTextClass, children: protocolLabel }),
3001
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: iconWrapperClass, children: icon })
2517
3002
  ] });
2518
- const suffixAddon = /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: baseAddonClass, children: [
2519
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: iconWrapperClass, children: icon }),
2520
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: addonTextClass, children: protocolLabel })
3003
+ const suffixAddon = /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: baseAddonClass, children: [
3004
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: iconWrapperClass, children: icon }),
3005
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: addonTextClass, children: protocolLabel })
2521
3006
  ] });
2522
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
3007
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2523
3008
  TextInput,
2524
3009
  {
2525
3010
  ...rest,
@@ -2533,78 +3018,266 @@ var WebsiteInput = (props) => {
2533
3018
  };
2534
3019
  WebsiteInput.displayName = "WebsiteInput";
2535
3020
 
2536
- // src/components/Logo/LogoIconExtraLarge.tsx
2537
- var import_icons9 = require("@bubo-squared/icons");
2538
- var import_jsx_runtime30 = require("react/jsx-runtime");
2539
- var LogoIconExtraLarge = () => {
2540
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "w-lg h-[512px] relative bg-linear-to-t from-gray-800 to-gray-950 rounded-80 overflow-hidden flex justify-center items-center", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_icons9.LogoIconLIcon, { className: "size-96" }) });
2541
- };
2542
- var LogoIconExtraLarge_default = LogoIconExtraLarge;
2543
-
2544
- // src/components/Logo/LogoIconExtraSmall.tsx
2545
- var import_icons10 = require("@bubo-squared/icons");
2546
- var import_jsx_runtime31 = require("react/jsx-runtime");
2547
- var LogoIconExtraSmall = () => {
2548
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "size-8 relative bg-linear-to-t from-gray-800 to-gray-950 rounded-[5px] overflow-hidden flex justify-center items-center", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_icons10.LogoIconMIcon, { className: "size-6" }) });
3021
+ // src/components/Feedback/Popover.tsx
3022
+ var React34 = __toESM(require("react"), 1);
3023
+ var PopoverPrimitive2 = __toESM(require("@radix-ui/react-popover"), 1);
3024
+ var import_jsx_runtime36 = require("react/jsx-runtime");
3025
+ var PopoverArrow = PopoverPrimitive2.Arrow;
3026
+ var Popover2 = (props) => {
3027
+ const {
3028
+ strapline,
3029
+ title,
3030
+ description,
3031
+ onOk,
3032
+ okText,
3033
+ onCancel,
3034
+ cancelText,
3035
+ showArrow = true,
3036
+ className,
3037
+ placement = "bottom",
3038
+ offset = 10,
3039
+ children
3040
+ } = props;
3041
+ const [open, setOpen] = React34.useState(false);
3042
+ const handleCancel = () => {
3043
+ onCancel?.();
3044
+ setOpen(false);
3045
+ };
3046
+ const handleOk = () => {
3047
+ onOk?.();
3048
+ setOpen(false);
3049
+ };
3050
+ const popoverClasses = "bg-(--background-popover) fill-(--background-popover) popover w-80 shadow-card-md border-none [&_span]:scale-240 rounded-4";
3051
+ const mapPlacementToSideAndAlign = (placement2) => {
3052
+ switch (placement2) {
3053
+ case "top":
3054
+ return { side: "top", align: "center" };
3055
+ case "topLeft":
3056
+ return { side: "top", align: "start" };
3057
+ case "topRight":
3058
+ return { side: "top", align: "end" };
3059
+ case "bottom":
3060
+ return { side: "bottom", align: "center" };
3061
+ case "bottomLeft":
3062
+ return { side: "bottom", align: "start" };
3063
+ case "bottomRight":
3064
+ return { side: "bottom", align: "end" };
3065
+ case "left":
3066
+ return { side: "left", align: "center" };
3067
+ case "leftTop":
3068
+ return { side: "left", align: "start" };
3069
+ case "leftBottom":
3070
+ return { side: "left", align: "end" };
3071
+ case "right":
3072
+ return { side: "right", align: "center" };
3073
+ case "rightTop":
3074
+ return { side: "right", align: "start" };
3075
+ case "rightBottom":
3076
+ return { side: "right", align: "end" };
3077
+ default:
3078
+ return { side: "bottom", align: "center" };
3079
+ }
3080
+ };
3081
+ const arrowShadowClass = (side2) => {
3082
+ switch (side2) {
3083
+ case "top":
3084
+ return "drop-shadow(0px 2px 1px var(--color-b-black-12))";
3085
+ case "bottom":
3086
+ return "drop-shadow(0px -1px 1px color-mix(in srgb, var(--color-b-black-10) 66%, transparent))";
3087
+ case "left":
3088
+ case "right":
3089
+ return "drop-shadow(0px 2px 1px var(--color-b-black-12))";
3090
+ default:
3091
+ return "";
3092
+ }
3093
+ };
3094
+ const { side, align } = mapPlacementToSideAndAlign(placement);
3095
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
3096
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(PopoverTrigger, { asChild: true, children }),
3097
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
3098
+ PopoverContent,
3099
+ {
3100
+ side,
3101
+ align,
3102
+ sideOffset: offset,
3103
+ className: cn(popoverClasses, side === "top" ? "[&_span]:bottom-1! " : "", className),
3104
+ children: [
3105
+ showArrow && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3106
+ PopoverArrow,
3107
+ {
3108
+ style: { filter: arrowShadowClass(side) }
3109
+ }
3110
+ ),
3111
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "grid gap-4", children: [
3112
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "space-y-2", children: [
3113
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "caption text-secondary", style: { marginBottom: 0 }, children: strapline }),
3114
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("h4", { className: "subtitle-medium text-primary", style: { marginBottom: 0 }, children: title }),
3115
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "paragraph-s text-primary", style: { marginBottom: 0 }, children: description })
3116
+ ] }),
3117
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex justify-start items-center gap-4", children: [
3118
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Button, { size: "sm", variant: "secondary", onClick: handleCancel, children: cancelText || "Cancel" }),
3119
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Button, { size: "sm", variant: "primary", onClick: handleOk, children: okText || "Ok" })
3120
+ ] })
3121
+ ] })
3122
+ ]
3123
+ }
3124
+ )
3125
+ ] });
2549
3126
  };
2550
- var LogoIconExtraSmall_default = LogoIconExtraSmall;
3127
+ Popover2.displayName = "Popover";
2551
3128
 
2552
- // src/components/Logo/LogoIconLarge.tsx
3129
+ // src/components/Navigation/Breadcrumb.tsx
3130
+ var React35 = __toESM(require("react"), 1);
3131
+ var import_react_slot8 = require("@radix-ui/react-slot");
3132
+ var import_class_variance_authority19 = require("class-variance-authority");
2553
3133
  var import_icons11 = require("@bubo-squared/icons");
2554
- var import_jsx_runtime32 = require("react/jsx-runtime");
2555
- var LogoIconLarge = () => {
2556
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "size-64 relative bg-linear-to-t from-gray-800 to-gray-950 rounded-40 overflow-hidden flex justify-center items-center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_icons11.LogoIconMIcon, { className: "size-44" }) });
2557
- };
2558
- var LogoIconLarge_default = LogoIconLarge;
3134
+ var import_jsx_runtime37 = require("react/jsx-runtime");
3135
+ var breadcrumbBase = "group inline-flex items-center gap-[var(--space-8)] pl-0 pr-[var(--space-8)] py-[6px] rounded-full transition-colors select-none disabled:cursor-default disabled:pointer-events-none";
3136
+ var breadcrumbIconVariants = (0, import_class_variance_authority19.cva)(
3137
+ "flex shrink-0 items-center justify-center w-5 h-5 *:w-5 *:h-5",
3138
+ {
3139
+ variants: {
3140
+ variant: {
3141
+ colored: "text-(--icon-brand) group-hover:text-(--icon-brand-hover) group-focus-visible:text-(--icon-brand-focus) group-disabled:text-(--icon-brand-disabled)",
3142
+ flat: "text-(--icon-primary) group-hover:text-(--icon-primary-hover) group-focus-visible:text-(--icon-primary-focus) group-disabled:text-(--icon-primary-disabled)"
3143
+ }
3144
+ },
3145
+ defaultVariants: {
3146
+ variant: "flat"
3147
+ }
3148
+ }
3149
+ );
3150
+ var breadcrumbTextVariants = (0, import_class_variance_authority19.cva)(
3151
+ "font-normal text-[length:var(--font-size-paragraph-l-18)] leading-[var(--font-line-height-28)] tracking-[var(--font-letter-spacing-02)] whitespace-nowrap",
3152
+ {
3153
+ variants: {
3154
+ variant: {
3155
+ colored: "text-(--text-brand) group-hover:text-(--text-brand-hover) group-focus-visible:text-(--text-brand-focus) group-disabled:text-(--text-brand-disabled)",
3156
+ flat: "text-(--text-primary) group-hover:text-(--text-primary-hover) group-focus-visible:text-(--text-primary-focus) group-disabled:text-(--text-primary-disabled)"
3157
+ }
3158
+ },
3159
+ defaultVariants: {
3160
+ variant: "flat"
3161
+ }
3162
+ }
3163
+ );
3164
+ var Breadcrumb = React35.forwardRef((props, ref) => {
3165
+ const {
3166
+ asChild = false,
3167
+ variant = "flat",
3168
+ label = "Header",
3169
+ showIcon = true,
3170
+ showText = true,
3171
+ icon,
3172
+ className,
3173
+ children,
3174
+ ...rest
3175
+ } = props;
3176
+ const Comp = asChild ? import_react_slot8.Slot : "button";
3177
+ const content = showText ? children ?? label : null;
3178
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
3179
+ Comp,
3180
+ {
3181
+ type: asChild ? void 0 : "button",
3182
+ className: cn(breadcrumbBase, className),
3183
+ ref,
3184
+ ...rest,
3185
+ children: [
3186
+ showIcon && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: cn(breadcrumbIconVariants({ variant })), children: icon ?? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_icons11.ChevronRightIcon, {}) }),
3187
+ content && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: cn(breadcrumbTextVariants({ variant })), children: content })
3188
+ ]
3189
+ }
3190
+ );
3191
+ });
3192
+ Breadcrumb.displayName = "Breadcrumb";
2559
3193
 
2560
- // src/components/Logo/LogoIconMedium.tsx
2561
- var import_icons12 = require("@bubo-squared/icons");
2562
- var import_jsx_runtime33 = require("react/jsx-runtime");
2563
- var LogoIconMedium = () => {
2564
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "size-32 relative bg-linear-to-t from-gray-800 to-gray-950 rounded-20 overflow-hidden flex justify-center items-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_icons12.LogoIconMIcon, { className: "size-24" }) });
2565
- };
2566
- var LogoIconMedium_default = LogoIconMedium;
3194
+ // src/components/Logo/LogoIcon.tsx
3195
+ var import_class_variance_authority20 = require("class-variance-authority");
2567
3196
 
2568
- // src/components/Logo/LogoIconSmall.tsx
2569
- var import_icons13 = require("@bubo-squared/icons");
2570
- var import_jsx_runtime34 = require("react/jsx-runtime");
2571
- var LogoIconSmall = () => {
2572
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "size-14 relative bg-linear-to-t from-gray-800 to-gray-950 rounded-8 overflow-hidden flex justify-center items-center", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_icons13.LogoIconMIcon, { className: "size-10" }) });
2573
- };
2574
- var LogoIconSmall_default = LogoIconSmall;
3197
+ // src/components/Logo/assets/logo-icon.svg?react
3198
+ var logo_icon_default = "./logo-icon-575VOQEY.svg?react";
2575
3199
 
2576
- // src/components/Logo/LogoInline.tsx
2577
- var import_icons14 = require("@bubo-squared/icons");
2578
- var import_jsx_runtime35 = require("react/jsx-runtime");
2579
- var LogoInline = () => {
2580
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "w-44 h-12 inline-flex justify-start items-center gap-4", children: [
2581
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_icons14.LogoIconMIcon, { className: "size-12" }),
2582
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_icons14.LogoTextMIcon, { className: "h-8 w-[110px] text-(--text-primary)" })
2583
- ] });
3200
+ // src/components/Logo/LogoIcon.tsx
3201
+ var import_jsx_runtime38 = require("react/jsx-runtime");
3202
+ var logoIconVariants = (0, import_class_variance_authority20.cva)(
3203
+ "relative bg-linear-to-t from-gray-800 to-gray-950 overflow-hidden flex justify-center items-center",
3204
+ {
3205
+ variants: {
3206
+ size: {
3207
+ xs: ["size-8", "rounded-[5px]"],
3208
+ sm: ["size-14", "rounded-8"],
3209
+ md: ["size-32", "rounded-20"],
3210
+ lg: ["size-64", "rounded-40"],
3211
+ xl: ["size-128", "rounded-80"]
3212
+ }
3213
+ },
3214
+ defaultVariants: {
3215
+ size: "md"
3216
+ }
3217
+ }
3218
+ );
3219
+ var logoIconSizeClass = {
3220
+ xs: "size-6",
3221
+ sm: "size-10",
3222
+ md: "size-24",
3223
+ lg: "size-44",
3224
+ xl: "size-96"
2584
3225
  };
2585
- var LogoInline_default = LogoInline;
2586
-
2587
- // src/components/Logo/LogoInlineSmall.tsx
2588
- var import_icons15 = require("@bubo-squared/icons");
2589
- var import_jsx_runtime36 = require("react/jsx-runtime");
2590
- var LogoInline2 = () => {
2591
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "w-32 h-9 inline-flex justify-start items-center gap-3", children: [
2592
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_icons15.LogoIconMIcon, { className: "size-9" }),
2593
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_icons15.LogoTextMIcon, { className: "h-6 w-[83px] text-(--text-primary)" })
2594
- ] });
3226
+ var LogoIcon = ({ className, size = "md" }) => {
3227
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: cn(logoIconVariants({ size }), className), children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(logo_icon_default, { className: logoIconSizeClass[size] }) });
2595
3228
  };
2596
- var LogoInlineSmall_default = LogoInline2;
2597
3229
 
2598
- // src/components/Logo/LogoMultiline.tsx
2599
- var import_icons16 = require("@bubo-squared/icons");
2600
- var import_jsx_runtime37 = require("react/jsx-runtime");
2601
- var LogoMultiline = () => {
2602
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "w-36 inline-flex flex-col justify-start items-start gap-2", children: [
2603
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_icons16.LogoIconMIcon, { className: "size-12" }),
2604
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_icons16.LogoTextMIcon, { className: "h-8 w-[111px] text-(--text-primary)" })
3230
+ // src/components/Logo/Logo.tsx
3231
+ var import_class_variance_authority21 = require("class-variance-authority");
3232
+
3233
+ // src/components/Logo/assets/logo-text.svg?react
3234
+ var logo_text_default = "./logo-text-IUSWKNLN.svg?react";
3235
+
3236
+ // src/components/Logo/Logo.tsx
3237
+ var import_jsx_runtime39 = require("react/jsx-runtime");
3238
+ var logoWrapperVariants = (0, import_class_variance_authority21.cva)("inline-flex", {
3239
+ variants: {
3240
+ variant: {
3241
+ inline: ["w-44", "h-12", "justify-start", "items-center", "gap-4"],
3242
+ inlineSmall: ["w-32", "h-9", "justify-start", "items-center", "gap-3"],
3243
+ multiline: ["w-36", "flex-col", "justify-start", "items-start", "gap-2"]
3244
+ }
3245
+ },
3246
+ defaultVariants: {
3247
+ variant: "inline"
3248
+ }
3249
+ });
3250
+ var logoIconSizeVariants = (0, import_class_variance_authority21.cva)("", {
3251
+ variants: {
3252
+ variant: {
3253
+ inline: "size-12",
3254
+ inlineSmall: "size-9",
3255
+ multiline: "size-12"
3256
+ }
3257
+ },
3258
+ defaultVariants: {
3259
+ variant: "inline"
3260
+ }
3261
+ });
3262
+ var logoTextSizeVariants = (0, import_class_variance_authority21.cva)("", {
3263
+ variants: {
3264
+ variant: {
3265
+ inline: "h-8 w-27.5",
3266
+ inlineSmall: "h-6 w-20.75",
3267
+ multiline: "h-8 w-27.75"
3268
+ }
3269
+ },
3270
+ defaultVariants: {
3271
+ variant: "inline"
3272
+ }
3273
+ });
3274
+ var Logo = ({ className, textColor, variant = "inline" }) => {
3275
+ const textColorClass = textColor === "light" ? "text-(--color-b-white)" : textColor === "dark" ? "text-(--color-b-black)" : "text-(--text-primary)";
3276
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: cn(logoWrapperVariants({ variant }), className), children: [
3277
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(logo_icon_default, { className: logoIconSizeVariants({ variant }) }),
3278
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(logo_text_default, { className: cn(logoTextSizeVariants({ variant }), textColorClass) })
2605
3279
  ] });
2606
3280
  };
2607
- var LogoMultiline_default = LogoMultiline;
2608
3281
  // Annotate the CommonJS export names for ESM import in node:
2609
3282
  0 && (module.exports = {
2610
3283
  Avatar,
@@ -2612,24 +3285,22 @@ var LogoMultiline_default = LogoMultiline;
2612
3285
  BadgeDigit,
2613
3286
  BadgeDot,
2614
3287
  BadgeStatus,
3288
+ Breadcrumb,
2615
3289
  Button,
2616
3290
  ButtonGroup,
2617
3291
  Checkbox,
2618
3292
  Divider,
2619
3293
  Dropdown,
3294
+ Field,
2620
3295
  IconButton,
2621
3296
  IconButtonGroup,
2622
3297
  LinkButton,
2623
- LogoIconExtraLarge,
2624
- LogoIconExtraSmall,
2625
- LogoIconLarge,
2626
- LogoIconMedium,
2627
- LogoIconSmall,
2628
- LogoInline,
2629
- LogoInlineSmall,
2630
- LogoMultiline,
3298
+ Logo,
3299
+ LogoIcon,
2631
3300
  MessageButton,
2632
3301
  PasswordInput,
3302
+ PhoneInput,
3303
+ Popover,
2633
3304
  Progress,
2634
3305
  RadioGroup,
2635
3306
  SearchInput,