@bubo-squared/ui-framework 0.2.13 → 0.2.14

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,12 +35,11 @@ __export(index_exports, {
35
35
  BadgeDigit: () => BadgeDigit,
36
36
  BadgeDot: () => BadgeDot,
37
37
  BadgeStatus: () => BadgeStatus,
38
- Breadcrumb: () => Breadcrumb,
38
+ Breadcrumbs: () => Breadcrumbs,
39
39
  Button: () => Button,
40
40
  ButtonGroup: () => ButtonGroup,
41
41
  Checkbox: () => Checkbox,
42
42
  Divider: () => Divider,
43
- Dropdown: () => Dropdown,
44
43
  Field: () => Field,
45
44
  IconButton: () => IconButton,
46
45
  IconButtonGroup: () => IconButtonGroup,
@@ -54,12 +53,15 @@ __export(index_exports, {
54
53
  Progress: () => Progress,
55
54
  RadioGroup: () => RadioGroup,
56
55
  SearchInput: () => SearchInput,
56
+ Select: () => Select,
57
57
  Slider: () => Slider,
58
58
  StatusAvatar: () => StatusAvatar,
59
59
  Tag: () => Tag,
60
60
  TextArea: () => TextArea,
61
61
  TextInput: () => TextInput,
62
62
  Toggle: () => Toggle,
63
+ Tooltip: () => Tooltip,
64
+ TooltipProvider: () => TooltipProvider,
63
65
  Typography: () => Typography,
64
66
  WebsiteInput: () => WebsiteInput,
65
67
  cn: () => cn
@@ -586,7 +588,7 @@ var Typography = (props) => {
586
588
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
587
589
  Comp,
588
590
  {
589
- className: cn(variant, weightClassName, mbClassName, className),
591
+ className: cn("text-primary", variant, weightClassName, mbClassName, className),
590
592
  ...rest,
591
593
  children
592
594
  }
@@ -1224,13 +1226,14 @@ function Checkbox({ label, className, ...props }) {
1224
1226
  ] });
1225
1227
  }
1226
1228
 
1227
- // src/components/Inputs/Dropdown.tsx
1229
+ // src/components/Inputs/Select.tsx
1228
1230
  var React18 = __toESM(require("react"), 1);
1231
+ var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
1229
1232
  var import_class_variance_authority12 = require("class-variance-authority");
1230
1233
  var import_icons6 = require("@bubo-squared/icons");
1231
1234
  var import_jsx_runtime20 = require("react/jsx-runtime");
1232
- var dropdownTriggerVariants = (0, import_class_variance_authority12.cva)(
1233
- "group flex w-full items-center justify-between rounded-4 border bg-(--background-primary) px-3 py-2 text-left transition-colors cursor-pointer focus-ring-primary focus:border-(--border-brand) hover:bg-(--background-primary-hover) disabled:bg-(--background-primary) disabled:border-(--border-secondary-disabled) disabled:text-primary-disabled disabled:cursor-default",
1235
+ var selectTriggerVariants = (0, import_class_variance_authority12.cva)(
1236
+ "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",
1234
1237
  {
1235
1238
  variants: {
1236
1239
  size: {
@@ -1251,7 +1254,7 @@ var dropdownTriggerVariants = (0, import_class_variance_authority12.cva)(
1251
1254
  }
1252
1255
  }
1253
1256
  );
1254
- var dropdownTextVariants = (0, import_class_variance_authority12.cva)("truncate", {
1257
+ var textVariants = (0, import_class_variance_authority12.cva)("truncate", {
1255
1258
  variants: {
1256
1259
  size: {
1257
1260
  sm: "paragraph-md",
@@ -1260,7 +1263,7 @@ var dropdownTextVariants = (0, import_class_variance_authority12.cva)("truncate"
1260
1263
  xl: "h6-title"
1261
1264
  },
1262
1265
  hasValue: {
1263
- false: "text-(--color-secondary)",
1266
+ false: "text-secondary",
1264
1267
  true: "text-primary"
1265
1268
  },
1266
1269
  disabled: {
@@ -1272,13 +1275,13 @@ var dropdownTextVariants = (0, import_class_variance_authority12.cva)("truncate"
1272
1275
  hasValue: false
1273
1276
  }
1274
1277
  });
1275
- var dropdownIconVariants = (0, import_class_variance_authority12.cva)("flex items-center justify-center shrink-0", {
1278
+ var selectIconVariants = (0, import_class_variance_authority12.cva)("flex items-center justify-center shrink-0", {
1276
1279
  variants: {
1277
1280
  size: {
1278
- sm: "w-4 h-4",
1279
- md: "w-5 h-5",
1280
- lg: "w-5 h-5",
1281
- xl: "w-6 h-6"
1281
+ sm: "size-4",
1282
+ md: "size-5",
1283
+ lg: "size-5",
1284
+ xl: "size-6"
1282
1285
  },
1283
1286
  disabled: {
1284
1287
  false: "text-(--icon-primary)",
@@ -1290,31 +1293,25 @@ var dropdownIconVariants = (0, import_class_variance_authority12.cva)("flex item
1290
1293
  disabled: false
1291
1294
  }
1292
1295
  });
1293
- var dropdownItemVariants = (0, import_class_variance_authority12.cva)("", {
1294
- variants: {
1295
- size: {
1296
- sm: "h-8",
1297
- md: "h-10",
1298
- lg: "h-11",
1299
- xl: "h-14"
1300
- }
1301
- }
1302
- });
1303
- var dropdownButtonVariants = (0, import_class_variance_authority12.cva)("flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) text-left paragraph-lg text-primary hover:bg-(--background-secondary)", {
1304
- variants: {
1305
- size: {
1306
- sm: "paragraph-sm py-(--space-4) ",
1307
- md: "paragraph-md py-(--space-6) ",
1308
- lg: "paragraph-lg py-(--space-8) ",
1309
- xl: "subtitle py-(--space-10) "
1296
+ var selectButtonVariants = (0, import_class_variance_authority12.cva)(
1297
+ "flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) text-left paragraph-lg text-primary hover:bg-(--background-secondary)",
1298
+ {
1299
+ variants: {
1300
+ size: {
1301
+ sm: "paragraph-sm py-(--space-4) ",
1302
+ md: "paragraph-md py-(--space-6) ",
1303
+ lg: "paragraph-lg py-(--space-8) ",
1304
+ xl: "subtitle py-(--space-10) "
1305
+ }
1310
1306
  }
1311
1307
  }
1312
- });
1313
- var Dropdown = (props) => {
1308
+ );
1309
+ var Select = (props) => {
1314
1310
  const {
1315
1311
  label = "Field Label",
1316
1312
  hint = "This is a hint text to help user.",
1317
1313
  hideHint = false,
1314
+ name,
1318
1315
  placeholder = "Placeholder text",
1319
1316
  size = "lg",
1320
1317
  status = "default",
@@ -1325,47 +1322,44 @@ var Dropdown = (props) => {
1325
1322
  onChange,
1326
1323
  className,
1327
1324
  showMenu,
1325
+ required = false,
1328
1326
  ...buttonProps
1329
1327
  } = props;
1330
- const dropdownRef = React18.useRef(null);
1331
1328
  const isControlled = value !== void 0;
1329
+ const controlledValue = value ?? "";
1332
1330
  const [internalValue, setInternalValue] = React18.useState(
1333
- defaultValue
1331
+ defaultValue ?? ""
1334
1332
  );
1335
1333
  const [open, setOpen] = React18.useState(false);
1336
- const currentValue = isControlled ? value : internalValue;
1337
- const selectedOption = options.find((opt) => opt.value === currentValue);
1334
+ const rawValue = isControlled ? controlledValue : internalValue;
1335
+ const selectedOption = options.find((opt) => opt.value === rawValue);
1336
+ const currentValue = selectedOption ? selectedOption.value : "";
1338
1337
  const hasValue = !!selectedOption;
1339
1338
  const isOpen = showMenu ?? open;
1340
- const handleToggle = () => {
1341
- if (disabled) return;
1339
+ const handleOpenChange = (nextOpen) => {
1342
1340
  if (showMenu === void 0) {
1343
- setOpen((prev) => !prev);
1341
+ setOpen(nextOpen);
1344
1342
  }
1345
1343
  };
1346
- const handleSelect = (optionValue) => {
1344
+ const handleValueChange = (nextValue) => {
1347
1345
  if (!isControlled) {
1348
- setInternalValue(optionValue);
1346
+ setInternalValue(nextValue);
1349
1347
  }
1350
- onChange?.(optionValue);
1348
+ onChange?.(nextValue);
1351
1349
  if (showMenu === void 0) {
1352
1350
  setOpen(false);
1353
1351
  }
1354
1352
  };
1355
- React18.useEffect(() => {
1356
- if (showMenu !== void 0) return;
1357
- const handleClickOutside = (event) => {
1358
- if (!dropdownRef.current) return;
1359
- if (!dropdownRef.current.contains(event.target)) {
1360
- setOpen(false);
1361
- }
1362
- };
1363
- document.addEventListener("mousedown", handleClickOutside);
1364
- return () => {
1365
- document.removeEventListener("mousedown", handleClickOutside);
1366
- };
1367
- }, [showMenu]);
1368
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { ref: dropdownRef, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1353
+ const handleClear = () => {
1354
+ if (!isControlled) {
1355
+ setInternalValue("");
1356
+ }
1357
+ onChange?.("");
1358
+ if (showMenu === void 0) {
1359
+ setOpen(false);
1360
+ }
1361
+ };
1362
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1369
1363
  Field,
1370
1364
  {
1371
1365
  label,
@@ -1373,88 +1367,95 @@ var Dropdown = (props) => {
1373
1367
  hideHint,
1374
1368
  status,
1375
1369
  disabled,
1376
- children: [
1377
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1378
- "button",
1379
- {
1380
- type: "button",
1381
- "aria-haspopup": "listbox",
1382
- "aria-expanded": isOpen,
1383
- disabled,
1384
- className: cn(dropdownTriggerVariants({ size, status }), className),
1385
- onClick: handleToggle,
1386
- "data-open": isOpen || void 0,
1387
- ...buttonProps,
1388
- children: [
1389
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1390
- "span",
1391
- {
1392
- className: cn(
1393
- dropdownTextVariants({
1394
- size,
1395
- hasValue,
1396
- disabled: !!disabled
1397
- })
1398
- ),
1399
- children: hasValue ? selectedOption?.label : placeholder
1400
- }
1401
- ),
1402
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: cn(dropdownIconVariants({ size, disabled: !!disabled })), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons6.ChevronDownIcon, {}) })
1403
- ]
1404
- }
1405
- ),
1406
- isOpen && options.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "absolute z-10 mt-1 w-full min-w-343 rounded-4 border border-(--border-secondary-hover) bg-(--background-neutral) shadow-card-md flex overflow-y-scroll dropdown-scrollbar max-h-79", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("ul", { role: "listbox", className: "flex flex-1 flex-col", children: [
1407
- hasValue && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1408
- "li",
1409
- {
1410
- className: cn(
1411
- "bg-(--background-neutral) border-b border-(--border-secondary)",
1412
- dropdownItemVariants({ size })
1413
- ),
1414
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1415
- "button",
1416
- {
1417
- type: "button",
1418
- className: cn(dropdownButtonVariants({ size }), "text-secondary"),
1419
- role: "option",
1420
- "aria-selected": false,
1421
- onClick: () => handleSelect(""),
1422
- children: "Clear"
1423
- }
1424
- )
1425
- }
1426
- ),
1427
- options.map((opt) => {
1428
- const selected = opt.value === currentValue;
1429
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1430
- "li",
1370
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1371
+ SelectPrimitive.Root,
1372
+ {
1373
+ value: currentValue,
1374
+ onValueChange: handleValueChange,
1375
+ open: isOpen,
1376
+ onOpenChange: handleOpenChange,
1377
+ disabled,
1378
+ name,
1379
+ required,
1380
+ children: [
1381
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1382
+ "button",
1431
1383
  {
1384
+ type: "button",
1385
+ "aria-haspopup": "listbox",
1386
+ "aria-expanded": isOpen,
1387
+ disabled,
1432
1388
  className: cn(
1433
- "bg-(--background-neutral) border-b border-(--border-secondary) last:border-b-0 ",
1434
- selected && "bg-(--background-secondary)",
1435
- dropdownItemVariants({ size })
1389
+ selectTriggerVariants({ size, status }),
1390
+ textVariants({
1391
+ size,
1392
+ hasValue,
1393
+ disabled: !!disabled
1394
+ }),
1395
+ hasValue ? "text-primary" : "text-secondary",
1396
+ className
1436
1397
  ),
1437
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1438
- "button",
1439
- {
1440
- type: "button",
1441
- className: dropdownButtonVariants({ size }),
1442
- role: "option",
1443
- "aria-selected": selected,
1444
- onClick: () => handleSelect(opt.value),
1445
- children: opt.label
1446
- }
1447
- )
1448
- },
1449
- opt.value
1450
- );
1451
- })
1452
- ] }) })
1453
- ]
1398
+ "data-open": isOpen || void 0,
1399
+ ...buttonProps,
1400
+ children: [
1401
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectPrimitive.Value, { placeholder }),
1402
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1403
+ "span",
1404
+ {
1405
+ className: cn(selectIconVariants({ size, disabled: !!disabled })),
1406
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons6.ChevronDownIcon, {})
1407
+ }
1408
+ ) })
1409
+ ]
1410
+ }
1411
+ ) }),
1412
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1413
+ SelectPrimitive.Content,
1414
+ {
1415
+ position: "popper",
1416
+ align: "start",
1417
+ sideOffset: 4,
1418
+ className: cn(
1419
+ "z-50 rounded-4 border border-(--border-secondary-hover) bg-(--background-neutral) shadow-card-md overflow-y-scroll dropdown-scrollbar max-h-79",
1420
+ "min-w-343"
1421
+ ),
1422
+ style: { minWidth: "var(--radix-select-trigger-width)" },
1423
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectPrimitive.Viewport, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex flex-col", children: [
1424
+ hasValue && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: cn("bg-(--background-neutral) border-b border-(--border-secondary)"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1425
+ "button",
1426
+ {
1427
+ type: "button",
1428
+ className: cn(
1429
+ selectButtonVariants({ size }),
1430
+ "text-secondary"
1431
+ ),
1432
+ onClick: handleClear,
1433
+ children: "Clear"
1434
+ }
1435
+ ) }),
1436
+ options.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1437
+ SelectPrimitive.Item,
1438
+ {
1439
+ value: opt.value,
1440
+ className: cn(
1441
+ "bg-(--background-neutral) border-b border-(--border-secondary) last:border-b-0",
1442
+ "data-highlighted:bg-(--background-secondary) data-highlighted:border-(--border-secondary-hover) data-highlighted:outline-none",
1443
+ "data-[state=checked]:bg-(--background-secondary)"
1444
+ ),
1445
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: selectButtonVariants({ size }), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectPrimitive.ItemText, { children: opt.label }) })
1446
+ },
1447
+ opt.value
1448
+ ))
1449
+ ] }) })
1450
+ }
1451
+ ) })
1452
+ ]
1453
+ }
1454
+ )
1454
1455
  }
1455
- ) });
1456
+ );
1456
1457
  };
1457
- Dropdown.displayName = "Dropdown";
1458
+ Select.displayName = "Select";
1458
1459
 
1459
1460
  // src/components/Inputs/PasswordInput.tsx
1460
1461
  var React21 = __toESM(require("react"), 1);
@@ -1760,6 +1761,109 @@ var import_icons8 = require("@bubo-squared/icons");
1760
1761
  // src/components/ui/dialog.tsx
1761
1762
  var React23 = require("react");
1762
1763
  var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
1764
+
1765
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/createLucideIcon.js
1766
+ var import_react2 = require("react");
1767
+
1768
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/shared/src/utils.js
1769
+ var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
1770
+ var toCamelCase = (string) => string.replace(
1771
+ /^([A-Z])|[\s-_]+(\w)/g,
1772
+ (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
1773
+ );
1774
+ var toPascalCase = (string) => {
1775
+ const camelCase = toCamelCase(string);
1776
+ return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
1777
+ };
1778
+ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
1779
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
1780
+ }).join(" ").trim();
1781
+ var hasA11yProp = (props) => {
1782
+ for (const prop in props) {
1783
+ if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
1784
+ return true;
1785
+ }
1786
+ }
1787
+ };
1788
+
1789
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/Icon.js
1790
+ var import_react = require("react");
1791
+
1792
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/defaultAttributes.js
1793
+ var defaultAttributes = {
1794
+ xmlns: "http://www.w3.org/2000/svg",
1795
+ width: 24,
1796
+ height: 24,
1797
+ viewBox: "0 0 24 24",
1798
+ fill: "none",
1799
+ stroke: "currentColor",
1800
+ strokeWidth: 2,
1801
+ strokeLinecap: "round",
1802
+ strokeLinejoin: "round"
1803
+ };
1804
+
1805
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/Icon.js
1806
+ var Icon2 = (0, import_react.forwardRef)(
1807
+ ({
1808
+ color = "currentColor",
1809
+ size = 24,
1810
+ strokeWidth = 2,
1811
+ absoluteStrokeWidth,
1812
+ className = "",
1813
+ children,
1814
+ iconNode,
1815
+ ...rest
1816
+ }, ref) => (0, import_react.createElement)(
1817
+ "svg",
1818
+ {
1819
+ ref,
1820
+ ...defaultAttributes,
1821
+ width: size,
1822
+ height: size,
1823
+ stroke: color,
1824
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
1825
+ className: mergeClasses("lucide", className),
1826
+ ...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
1827
+ ...rest
1828
+ },
1829
+ [
1830
+ ...iconNode.map(([tag, attrs]) => (0, import_react.createElement)(tag, attrs)),
1831
+ ...Array.isArray(children) ? children : [children]
1832
+ ]
1833
+ )
1834
+ );
1835
+
1836
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/createLucideIcon.js
1837
+ var createLucideIcon = (iconName, iconNode) => {
1838
+ const Component = (0, import_react2.forwardRef)(
1839
+ ({ className, ...props }, ref) => (0, import_react2.createElement)(Icon2, {
1840
+ ref,
1841
+ iconNode,
1842
+ className: mergeClasses(
1843
+ `lucide-${toKebabCase(toPascalCase(iconName))}`,
1844
+ `lucide-${iconName}`,
1845
+ className
1846
+ ),
1847
+ ...props
1848
+ })
1849
+ );
1850
+ Component.displayName = toPascalCase(iconName);
1851
+ return Component;
1852
+ };
1853
+
1854
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/chevron-right.js
1855
+ var __iconNode = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
1856
+ var ChevronRight = createLucideIcon("chevron-right", __iconNode);
1857
+
1858
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/ellipsis.js
1859
+ var __iconNode2 = [
1860
+ ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
1861
+ ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
1862
+ ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
1863
+ ];
1864
+ var Ellipsis = createLucideIcon("ellipsis", __iconNode2);
1865
+
1866
+ // src/components/ui/dialog.tsx
1763
1867
  var import_jsx_runtime25 = require("react/jsx-runtime");
1764
1868
 
1765
1869
  // src/components/ui/command.tsx
@@ -2078,7 +2182,9 @@ var CountrySelect = ({
2078
2182
  modal: true,
2079
2183
  onOpenChange: (open) => {
2080
2184
  setIsOpen(open);
2081
- open && setSearchValue("");
2185
+ if (open) {
2186
+ setSearchValue("");
2187
+ }
2082
2188
  },
2083
2189
  children: [
2084
2190
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
@@ -2197,7 +2303,6 @@ var FlagComponent = ({ country, countryName }) => {
2197
2303
  var React28 = __toESM(require("react"), 1);
2198
2304
  var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
2199
2305
  var import_jsx_runtime30 = require("react/jsx-runtime");
2200
- var wrapperBase = "flex flex-col gap-2 items-start";
2201
2306
  var RadioGroup = ({
2202
2307
  label,
2203
2308
  hint,
@@ -2217,117 +2322,96 @@ var RadioGroup = ({
2217
2322
  onValueChange?.(next);
2218
2323
  };
2219
2324
  const isHorizontal = orientation === "horizontal";
2220
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: wrapperBase, children: [
2221
- label && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2222
- "span",
2223
- {
2224
- className: cn(
2225
- "paragraph-sm text-primary",
2226
- disabled && "text-primary-disabled"
2227
- ),
2228
- children: label
2229
- }
2230
- ),
2231
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2232
- RadioGroupPrimitive.Root,
2233
- {
2234
- ...rootProps,
2235
- value,
2236
- defaultValue,
2237
- onValueChange: handleValueChange,
2238
- "aria-describedby": hintId,
2239
- className: cn(
2240
- "flex",
2241
- isHorizontal ? "flex-row gap-6" : "flex-col gap-2",
2242
- className
2243
- ),
2244
- children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2245
- RadioGroupPrimitive.Item,
2246
- {
2247
- value: option.value,
2248
- disabled: disabled || option.disabled,
2249
- asChild: true,
2250
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2251
- "button",
2252
- {
2253
- type: "button",
2254
- className: cn(
2255
- "group inline-flex items-center gap-2 outline-none",
2256
- "data-[disabled]:pointer-events-none",
2257
- disabled || option.disabled ? "cursor-default" : "cursor-pointer"
2325
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2326
+ Field,
2327
+ {
2328
+ label,
2329
+ hint,
2330
+ hideHint,
2331
+ disabled,
2332
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2333
+ RadioGroupPrimitive.Root,
2334
+ {
2335
+ ...rootProps,
2336
+ value,
2337
+ defaultValue,
2338
+ onValueChange: handleValueChange,
2339
+ disabled,
2340
+ "aria-describedby": hintId,
2341
+ className: cn(
2342
+ "flex",
2343
+ isHorizontal ? "flex-row gap-6" : "flex-col gap-2",
2344
+ className
2345
+ ),
2346
+ children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "relative inline-flex", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2347
+ RadioGroupPrimitive.Item,
2348
+ {
2349
+ value: option.value,
2350
+ disabled: disabled || option.disabled,
2351
+ className: cn(
2352
+ "group inline-flex items-center gap-2 outline-none",
2353
+ "data-disabled:pointer-events-none",
2354
+ disabled || option.disabled ? "cursor-default" : "cursor-pointer"
2355
+ ),
2356
+ children: [
2357
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2358
+ "span",
2359
+ {
2360
+ className: cn(
2361
+ "flex items-center justify-center shrink-0 h-5 w-5 rounded-full border bg-(--background-primary) transition-all",
2362
+ // 1: enabled, unchecked, unfocused, unhovered
2363
+ "group-data-[state=unchecked]:border-(--border-secondary)",
2364
+ // 2: enabled, checked, unfocused, unhovered
2365
+ "group-data-[state=checked]:border-(--border-brand)",
2366
+ // 3: enabled, unchecked, hovered, unfocused
2367
+ "group-data-[state=unchecked]:group-hover:border-(--border-secondary-hover)",
2368
+ // 4: enabled, checked, hovered, unfocused
2369
+ "group-data-[state=checked]:group-hover:border-(--border-brand-hover)",
2370
+ "group-data-[state=checked]:group-hover:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-secondary)]",
2371
+ // 5: enabled, unchecked, focused (override 1/3)
2372
+ "group-data-[state=unchecked]:group-focus-visible:border-(--border-secondary-hover)",
2373
+ // 6: enabled, checked, focused (override 2/4)
2374
+ "group-data-[state=checked]:group-focus-visible:border-(--border-brand-focus)",
2375
+ "group-data-[state=checked]:group-focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)]",
2376
+ // 7: disabled, unchecked (override everything above)
2377
+ "group-[&[data-disabled][data-state=unchecked]]:border-none",
2378
+ "group-[&[data-disabled][data-state=unchecked]]:bg-(--background-primary-disabled)",
2379
+ // 8: disabled, checked (override everything above)
2380
+ "group-[&[data-disabled][data-state=checked]]:border-(--border-primary-disabled)",
2381
+ "group-[&[data-disabled][data-state=checked]]:bg-(--background-primary-disabled)"
2382
+ ),
2383
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2384
+ "span",
2385
+ {
2386
+ className: cn(
2387
+ "h-4 w-4 rounded-full bg-(--background-brand) scale-0 transition-transform",
2388
+ "group-data-[state=checked]:scale-100",
2389
+ "group-data-[state=checked]:group-hover:bg-(--background-brand-hover)",
2390
+ "group-data-[state=checked]:group-focus-visible:bg-(--background-brand-hover)",
2391
+ "group-[&[data-disabled][data-state=checked]]:bg-(--background-brand-disabled)",
2392
+ "group-[&[data-disabled][data-state=unchecked]]:scale-0"
2393
+ )
2394
+ }
2395
+ )
2396
+ }
2258
2397
  ),
2259
- children: [
2260
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2261
- "span",
2262
- {
2263
- className: cn(
2264
- "flex items-center justify-center shrink-0 h-5 w-5 rounded-full border bg-(--background-primary) transition-all",
2265
- // 1: enabled, unchecked, unfocused, unhovered
2266
- "group-data-[state=unchecked]:border-(--border-secondary)",
2267
- // 2: enabled, checked, unfocused, unhovered
2268
- "group-data-[state=checked]:border-(--border-brand)",
2269
- // 3: enabled, unchecked, hovered, unfocused
2270
- "group-data-[state=unchecked]:group-hover:border-(--border-secondary-hover)",
2271
- // 4: enabled, checked, hovered, unfocused
2272
- "group-data-[state=checked]:group-hover:border-(--border-brand-hover)",
2273
- "group-data-[state=checked]:group-hover:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-secondary)]",
2274
- // 5: enabled, unchecked, focused (override 1/3)
2275
- "group-data-[state=unchecked]:group-focus-visible:border-(--border-secondary-hover)",
2276
- // 6: enabled, checked, focused (override 2/4)
2277
- "group-data-[state=checked]:group-focus-visible:border-(--border-brand-focus)",
2278
- "group-data-[state=checked]:group-focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)]",
2279
- // 7: disabled, unchecked (override everything above)
2280
- "group-[&[data-disabled][data-state=unchecked]]:border-none",
2281
- "group-[&[data-disabled][data-state=unchecked]]:bg-(--background-primary-disabled)",
2282
- // 8: disabled, checked (override everything above)
2283
- "group-[&[data-disabled][data-state=checked]]:border-(--border-primary-disabled)",
2284
- "group-[&[data-disabled][data-state=checked]]:bg-(--background-primary-disabled)"
2285
- ),
2286
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2287
- "span",
2288
- {
2289
- className: cn(
2290
- "h-4 w-4 rounded-full bg-(--background-brand) scale-0 transition-transform",
2291
- "group-data-[state=checked]:scale-100",
2292
- "group-data-[state=checked]:group-hover:bg-(--background-brand-hover)",
2293
- "group-data-[state=checked]:group-focus-visible:bg-(--background-brand-hover)",
2294
- "group-[&[data-disabled][data-state=checked]]:bg-(--background-brand-disabled)",
2295
- "group-[&[data-disabled][data-state=unchecked]]:scale-0"
2296
- )
2297
- }
2298
- )
2299
- }
2300
- ),
2301
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2302
- "span",
2303
- {
2304
- className: cn(
2305
- "paragraph-sm text-primary",
2306
- "group-data-[disabled]:text-primary-disabled whitespace-nowrap"
2307
- ),
2308
- children: option.label
2309
- }
2310
- )
2311
- ]
2312
- }
2313
- )
2314
- },
2315
- option.value
2316
- ))
2317
- }
2318
- ),
2319
- !hideHint && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2320
- "p",
2321
- {
2322
- id: hintId,
2323
- className: cn(
2324
- "caption text-(--color-secondary)",
2325
- disabled && "text-primary-disabled"
2326
- ),
2327
- children: hint ?? "\xA0"
2328
- }
2329
- )
2330
- ] });
2398
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2399
+ "span",
2400
+ {
2401
+ className: cn(
2402
+ "paragraph-sm text-primary",
2403
+ "group-data-disabled:text-primary-disabled whitespace-nowrap"
2404
+ ),
2405
+ children: option.label
2406
+ }
2407
+ )
2408
+ ]
2409
+ }
2410
+ ) }, option.value))
2411
+ }
2412
+ )
2413
+ }
2414
+ );
2331
2415
  };
2332
2416
 
2333
2417
  // src/components/Inputs/SearchInput.tsx
@@ -2381,7 +2465,7 @@ var SearchInput = (props) => {
2381
2465
  inputRef.current?.focus();
2382
2466
  };
2383
2467
  const showTrailingIcon = !!trailingIcon;
2384
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "flex flex-col gap-2 items-start", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "relative w-full", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2468
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "flex flex-col gap-2 items-start w-full", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "relative w-full", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2385
2469
  InputShell,
2386
2470
  {
2387
2471
  size,
@@ -2415,7 +2499,7 @@ SearchInput.displayName = "SearchInput";
2415
2499
  // src/components/Inputs/Slider.tsx
2416
2500
  var React30 = __toESM(require("react"), 1);
2417
2501
  var import_jsx_runtime32 = require("react/jsx-runtime");
2418
- var wrapperBase2 = "flex flex-col gap-2 items-start";
2502
+ var wrapperBase = "flex flex-col gap-2 items-start";
2419
2503
  var isRangeProps = (props) => {
2420
2504
  return Array.isArray(props.value) || Array.isArray(props.defaultValue);
2421
2505
  };
@@ -2425,6 +2509,7 @@ var toArray = (value) => {
2425
2509
  };
2426
2510
  var Slider = (props) => {
2427
2511
  const {
2512
+ name,
2428
2513
  display = "flat",
2429
2514
  tooltipPlacement = "top",
2430
2515
  tooltipFormatter,
@@ -2472,29 +2557,12 @@ var Slider = (props) => {
2472
2557
  const trackRef = React30.useRef(null);
2473
2558
  const [draggingThumbIndex, setDraggingThumbIndex] = React30.useState(null);
2474
2559
  const [hoveredThumbIndex, setHoveredThumbIndex] = React30.useState(null);
2475
- const clamp = (val) => {
2560
+ const clamp = React30.useCallback((val) => {
2476
2561
  if (val < min) return min;
2477
2562
  if (val > max) return max;
2478
2563
  return val;
2479
- };
2480
- React30.useEffect(() => {
2481
- if (!isControlled) {
2482
- setInternalValue((prev) => {
2483
- const clamped = prev.map((v) => clamp(v));
2484
- if (isRange && clamped.length === 2 && step > 0) {
2485
- return enforceMinGap(clamped, prev);
2486
- }
2487
- return clamped;
2488
- });
2489
- }
2490
- }, [isControlled, min, max, isRange]);
2491
- const snap = (val) => {
2492
- const range = max - min;
2493
- if (range <= 0 || step <= 0) return clamp(val);
2494
- const stepsFromMin = Math.round((val - min) / step);
2495
- return clamp(min + stepsFromMin * step);
2496
- };
2497
- const enforceMinGap = (next, prev) => {
2564
+ }, [min, max]);
2565
+ const enforceMinGap = React30.useCallback((next, prev) => {
2498
2566
  if (!isRange || next.length !== 2 || step <= 0) return next;
2499
2567
  let [low, high] = next;
2500
2568
  const [prevLow, prevHigh] = prev.length === 2 ? prev : next;
@@ -2517,6 +2585,23 @@ var Slider = (props) => {
2517
2585
  }
2518
2586
  }
2519
2587
  return [low, high];
2588
+ }, [isRange, step, clamp]);
2589
+ React30.useEffect(() => {
2590
+ if (!isControlled) {
2591
+ setInternalValue((prev) => {
2592
+ const clamped = prev.map((v) => clamp(v));
2593
+ if (isRange && clamped.length === 2 && step > 0) {
2594
+ return enforceMinGap(clamped, prev);
2595
+ }
2596
+ return clamped;
2597
+ });
2598
+ }
2599
+ }, [isControlled, clamp, enforceMinGap, isRange, step]);
2600
+ const snap = (val) => {
2601
+ const range = max - min;
2602
+ if (range <= 0 || step <= 0) return clamp(val);
2603
+ const stepsFromMin = Math.round((val - min) / step);
2604
+ return clamp(min + stepsFromMin * step);
2520
2605
  };
2521
2606
  const updateValue = (next) => {
2522
2607
  let normalized = normalizeArray(next, current);
@@ -2739,7 +2824,7 @@ var Slider = (props) => {
2739
2824
  style: {
2740
2825
  left: `${percent}%`,
2741
2826
  top: `calc(50% - ${trackHeight / 2}px)`,
2742
- ["--slider-halo-color"]: "color-mix(in srgb, var(--color-brand) 10%, transparent)"
2827
+ "--slider-halo-color": "color-mix(in srgb, var(--color-brand) 10%, transparent)"
2743
2828
  },
2744
2829
  onPointerEnter: () => {
2745
2830
  setHoveredThumbIndex(index);
@@ -2758,66 +2843,88 @@ var Slider = (props) => {
2758
2843
  index
2759
2844
  );
2760
2845
  };
2761
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2846
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2762
2847
  "div",
2763
2848
  {
2764
- className: wrapperBase2,
2849
+ className: wrapperBase,
2765
2850
  style: { marginInline: `${thumbRadius}px` },
2766
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: cn("w-full flex flex-col gap-1", className), children: [
2767
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "relative w-full", children: [
2768
- showTooltip && primary !== void 0 && renderTooltipBubble(
2769
- "primary",
2770
- primaryPercent,
2771
- formatDisplayValue(primary),
2772
- hoveredThumbIndex === 0 || draggingThumbIndex === 0
2773
- ),
2774
- showTooltip && isRange && secondary !== void 0 && renderTooltipBubble(
2775
- "secondary",
2776
- secondaryPercent,
2777
- formatDisplayValue(secondary),
2778
- hoveredThumbIndex === 1 || draggingThumbIndex === 1
2851
+ children: [
2852
+ name && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
2853
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2854
+ "input",
2855
+ {
2856
+ type: "hidden",
2857
+ name,
2858
+ value: primary === void 0 ? "" : String(primary),
2859
+ disabled
2860
+ }
2779
2861
  ),
2780
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2781
- "div",
2862
+ isRange && secondary !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2863
+ "input",
2782
2864
  {
2783
- className: cn(
2784
- "relative w-full flex items-center rounded-4",
2785
- disabled ? "bg-(--background-primary-disabled) cursor-default" : "bg-(--background-secondary) cursor-pointer"
2786
- ),
2787
- style: { height: `${trackHeight}px` },
2788
- ref: trackRef,
2789
- onPointerDown: handleTrackPointerDown,
2790
- children: [
2791
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2792
- "div",
2793
- {
2794
- className: cn(
2795
- "absolute h-full rounded-4",
2796
- disabled ? "bg-(--background-primary-disabled)" : "bg-(--background-secondary)"
2797
- ),
2798
- style: {
2799
- width: `calc(100% + ${thumbWidth}px)`,
2800
- left: `-${thumbRadius}px`
2801
- }
2802
- }
2803
- ),
2804
- renderHandle(0, primaryPercent, formatDisplayValue(primary)),
2805
- isRange && secondary !== void 0 && renderHandle(1, secondaryPercent, formatDisplayValue(secondary))
2806
- ]
2865
+ type: "hidden",
2866
+ name,
2867
+ value: String(secondary),
2868
+ disabled
2807
2869
  }
2808
2870
  )
2809
2871
  ] }),
2810
- showNumeric && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2811
- "p",
2812
- {
2813
- className: cn(
2814
- "paragraph-sm text-primary",
2815
- disabled && "text-primary-disabled"
2872
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: cn("w-full flex flex-col gap-1", className), children: [
2873
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "relative w-full", children: [
2874
+ showTooltip && primary !== void 0 && renderTooltipBubble(
2875
+ "primary",
2876
+ primaryPercent,
2877
+ formatDisplayValue(primary),
2878
+ hoveredThumbIndex === 0 || draggingThumbIndex === 0
2816
2879
  ),
2817
- children: formatNumericLabel()
2818
- }
2819
- )
2820
- ] })
2880
+ showTooltip && isRange && secondary !== void 0 && renderTooltipBubble(
2881
+ "secondary",
2882
+ secondaryPercent,
2883
+ formatDisplayValue(secondary),
2884
+ hoveredThumbIndex === 1 || draggingThumbIndex === 1
2885
+ ),
2886
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2887
+ "div",
2888
+ {
2889
+ className: cn(
2890
+ "relative w-full flex items-center rounded-4",
2891
+ disabled ? "bg-(--background-primary-disabled) cursor-default" : "bg-(--background-secondary) cursor-pointer"
2892
+ ),
2893
+ style: { height: `${trackHeight}px` },
2894
+ ref: trackRef,
2895
+ onPointerDown: handleTrackPointerDown,
2896
+ children: [
2897
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2898
+ "div",
2899
+ {
2900
+ className: cn(
2901
+ "absolute h-full rounded-4",
2902
+ disabled ? "bg-(--background-primary-disabled)" : "bg-(--background-secondary)"
2903
+ ),
2904
+ style: {
2905
+ width: `calc(100% + ${thumbWidth}px)`,
2906
+ left: `-${thumbRadius}px`
2907
+ }
2908
+ }
2909
+ ),
2910
+ renderHandle(0, primaryPercent, formatDisplayValue(primary)),
2911
+ isRange && secondary !== void 0 && renderHandle(1, secondaryPercent, formatDisplayValue(secondary))
2912
+ ]
2913
+ }
2914
+ )
2915
+ ] }),
2916
+ showNumeric && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2917
+ "p",
2918
+ {
2919
+ className: cn(
2920
+ "paragraph-sm text-primary",
2921
+ disabled && "text-primary-disabled"
2922
+ ),
2923
+ children: formatNumericLabel()
2924
+ }
2925
+ )
2926
+ ] })
2927
+ ]
2821
2928
  }
2822
2929
  );
2823
2930
  };
@@ -2827,7 +2934,6 @@ Slider.displayName = "Slider";
2827
2934
  var React31 = __toESM(require("react"), 1);
2828
2935
  var import_icons11 = require("@bubo-squared/icons");
2829
2936
  var import_jsx_runtime33 = require("react/jsx-runtime");
2830
- var wrapperBase3 = "flex flex-col gap-2 items-start w-full";
2831
2937
  var TextArea = (props) => {
2832
2938
  const {
2833
2939
  label,
@@ -2842,6 +2948,8 @@ var TextArea = (props) => {
2842
2948
  defaultValue,
2843
2949
  onChange,
2844
2950
  rows = 3,
2951
+ id,
2952
+ name,
2845
2953
  ...textareaProps
2846
2954
  } = props;
2847
2955
  const isControlled = value !== void 0;
@@ -2869,9 +2977,8 @@ var TextArea = (props) => {
2869
2977
  }
2870
2978
  onChange?.(event);
2871
2979
  };
2872
- const inputId = React31.useId();
2873
- const labelId = `${inputId}-label`;
2874
- const hintId = `${inputId}-hint`;
2980
+ const generatedId = React31.useId();
2981
+ const textareaId = id ?? generatedId;
2875
2982
  const statusBorderClass = {
2876
2983
  default: "",
2877
2984
  success: "border-(--border-success)",
@@ -2882,7 +2989,6 @@ var TextArea = (props) => {
2882
2989
  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
2990
  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
2991
  };
2885
- const hintColorClass = disabled ? "text-primary-disabled" : status === "success" ? "text-(--color-success)" : status === "error" ? "text-(--color-error)" : "text-(--color-secondary)";
2886
2992
  const counterColorClass = disabled ? "text-primary-disabled" : status === "success" ? "text-(--color-success)" : status === "error" ? "text-(--color-error)" : "text-primary";
2887
2993
  const handleResizePointerDown = (event) => {
2888
2994
  if (disabled) return;
@@ -2908,102 +3014,90 @@ var TextArea = (props) => {
2908
3014
  window.addEventListener("pointermove", handlePointerMove);
2909
3015
  window.addEventListener("pointerup", handlePointerUp);
2910
3016
  };
2911
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: wrapperBase3, children: [
2912
- label && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2913
- "label",
2914
- {
2915
- htmlFor: inputId,
2916
- id: labelId,
2917
- className: cn(
2918
- "paragraph-sm",
2919
- disabled ? "text-primary-disabled" : "text-primary"
2920
- ),
2921
- children: label
2922
- }
2923
- ),
2924
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "relative w-full", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2925
- "div",
2926
- {
2927
- className: cn(
2928
- "relative flex w-full rounded-4 border bg-(--background-primary) cursor-text transition-colors",
2929
- "border-(--border-secondary) hover:border-(--border-secondary-hover) hover:bg-(--background-primary-hover)",
2930
- disabled && "bg-(--background-primary-disabled) border-(--border-secondary-disabled) cursor-default",
2931
- statusBorderClass[status],
2932
- !disabled && statusFocusClass[status],
2933
- className
2934
- ),
2935
- ref: containerRef,
2936
- style: {
2937
- ...type === "responsive" && height !== void 0 ? { height } : {},
2938
- ...type === "responsive" && width !== void 0 ? { width } : {}
2939
- },
2940
- onClick: handleContainerClick,
2941
- "aria-disabled": disabled || void 0,
2942
- children: [
2943
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2944
- "textarea",
2945
- {
2946
- id: inputId,
2947
- ref: textareaRef,
2948
- "aria-labelledby": label ? labelId : void 0,
2949
- "aria-describedby": hint ? hintId : void 0,
2950
- disabled: disabled ?? void 0,
2951
- value: isControlled ? value : currentValue,
2952
- defaultValue: isControlled ? void 0 : defaultValue,
2953
- onChange: handleChange,
2954
- rows,
2955
- maxLength: effectiveMaxLength,
2956
- className: cn(
2957
- "paragraph-md bg-transparent outline-none w-full h-full resize-none px-2 py-2 pr-8",
2958
- disabled ? "text-primary-disabled" : hasValue ? "text-primary" : "text-(--color-secondary)",
2959
- showCharacterLimit && "pr-16"
2960
- ),
2961
- ...textareaProps
2962
- }
2963
- ),
2964
- showCharacterLimit && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2965
- "span",
2966
- {
2967
- className: cn(
2968
- "absolute bottom-1 right-1 footnote mb-0!",
2969
- counterColorClass
2970
- ),
2971
- children: [
2972
- currentLength,
2973
- "/",
2974
- effectiveMaxLength
2975
- ]
2976
- }
3017
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3018
+ Field,
3019
+ {
3020
+ className: "w-full",
3021
+ label,
3022
+ hint,
3023
+ hideHint,
3024
+ status,
3025
+ disabled,
3026
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
3027
+ "div",
3028
+ {
3029
+ className: cn(
3030
+ "relative flex w-full rounded-4 border bg-(--background-primary) cursor-text transition-colors",
3031
+ "border-(--border-secondary) hover:border-(--border-secondary-hover) hover:bg-(--background-primary-hover)",
3032
+ disabled && "bg-(--background-primary-disabled) border-(--border-secondary-disabled) cursor-default",
3033
+ statusBorderClass[status],
3034
+ !disabled && statusFocusClass[status],
3035
+ className
2977
3036
  ),
2978
- type === "responsive" && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2979
- "div",
2980
- {
2981
- className: "absolute bottom-1 right-1 h-3 w-3 " + (disabled ? "cursor-auto" : "cursor-nwse-resize"),
2982
- onPointerDown: disabled ? void 0 : handleResizePointerDown,
2983
- children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2984
- "span",
2985
- {
2986
- className: cn(
2987
- "absolute bottom-0 right-0 flex h-4 w-4 items-center justify-center text-(--icon-primary)",
2988
- disabled && "text-(--icon-primary-disabled)"
2989
- ),
2990
- children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_icons11.MaximizeIcon, {})
2991
- }
2992
- )
2993
- }
2994
- )
2995
- ]
2996
- }
2997
- ) }),
2998
- hint && !hideHint && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2999
- "p",
3000
- {
3001
- id: hint ? hintId : void 0,
3002
- className: cn("caption", hint ? hintColorClass : "invisible"),
3003
- children: hint || "\xA0"
3004
- }
3005
- )
3006
- ] });
3037
+ ref: containerRef,
3038
+ style: {
3039
+ ...type === "responsive" && height !== void 0 ? { height } : {},
3040
+ ...type === "responsive" && width !== void 0 ? { width } : {}
3041
+ },
3042
+ onClick: handleContainerClick,
3043
+ "aria-disabled": disabled || void 0,
3044
+ children: [
3045
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3046
+ "textarea",
3047
+ {
3048
+ id: textareaId,
3049
+ name,
3050
+ ref: textareaRef,
3051
+ disabled: disabled ?? void 0,
3052
+ value: isControlled ? value : currentValue,
3053
+ defaultValue: isControlled ? void 0 : defaultValue,
3054
+ onChange: handleChange,
3055
+ rows,
3056
+ maxLength: effectiveMaxLength,
3057
+ className: cn(
3058
+ "paragraph-md bg-transparent outline-none w-full h-full resize-none px-2 py-2 pr-8",
3059
+ disabled ? "text-primary-disabled" : hasValue ? "text-primary" : "text-(--color-secondary)",
3060
+ showCharacterLimit && "pr-16"
3061
+ ),
3062
+ ...textareaProps
3063
+ }
3064
+ ),
3065
+ showCharacterLimit && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
3066
+ "span",
3067
+ {
3068
+ className: cn(
3069
+ "absolute bottom-1 right-1 footnote mb-0!",
3070
+ counterColorClass
3071
+ ),
3072
+ children: [
3073
+ currentLength,
3074
+ "/",
3075
+ effectiveMaxLength
3076
+ ]
3077
+ }
3078
+ ),
3079
+ type === "responsive" && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3080
+ "div",
3081
+ {
3082
+ className: "absolute bottom-1 right-1 h-3 w-3 " + (disabled ? "cursor-auto" : "cursor-nwse-resize"),
3083
+ onPointerDown: disabled ? void 0 : handleResizePointerDown,
3084
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3085
+ "span",
3086
+ {
3087
+ className: cn(
3088
+ "absolute bottom-0 right-0 flex h-4 w-4 items-center justify-center text-(--icon-primary)",
3089
+ disabled && "text-(--icon-primary-disabled)"
3090
+ ),
3091
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_icons11.MaximizeIcon, {})
3092
+ }
3093
+ )
3094
+ }
3095
+ )
3096
+ ]
3097
+ }
3098
+ )
3099
+ }
3100
+ );
3007
3101
  };
3008
3102
  TextArea.displayName = "TextArea";
3009
3103
 
@@ -3320,9 +3414,9 @@ var Popover2 = (props) => {
3320
3414
  onOk?.();
3321
3415
  setOpen(false);
3322
3416
  };
3323
- const popoverClasses = "group bg-(--background-popover) popover w-80 max-w-[calc(100vw-2rem)] shadow-card-md border-none [&_span]:scale-240 rounded-4";
3324
- const popoverArrowClasses = "relative fill-(--background-popover) transition-[filter,transform] group-data-[side=top]:top-[-2px] group-data-[side=top]:drop-shadow-[0px_2px_1px_var(--color-b-black-12)] group-data-[side=bottom]:drop-shadow-[0px_-1px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] group-data-[side=left]:drop-shadow-[0px_2px_1px_var(--color-b-black-12)] group-data-[side=right]:drop-shadow-[0px_2px_1px_var(--color-b-black-12)]";
3325
- const mapPlacementToSideAndAlign = (placement2) => {
3417
+ const popoverClasses = "group bg-(--background-popover) popover w-80 max-w-[calc(100vw-2rem)] shadow-card-md border-none [&>span]:scale-240 rounded-4";
3418
+ 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)]";
3419
+ const mapPlacementToSideAndAlign2 = (placement2) => {
3326
3420
  switch (placement2) {
3327
3421
  case "top":
3328
3422
  return { side: "top", align: "center" };
@@ -3352,7 +3446,7 @@ var Popover2 = (props) => {
3352
3446
  return { side: "bottom", align: "center" };
3353
3447
  }
3354
3448
  };
3355
- const { side, align } = mapPlacementToSideAndAlign(placement);
3449
+ const { side, align } = mapPlacementToSideAndAlign2(placement);
3356
3450
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
3357
3451
  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(PopoverTrigger, { asChild: true, children }),
3358
3452
  /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
@@ -3382,82 +3476,344 @@ var Popover2 = (props) => {
3382
3476
  };
3383
3477
  Popover2.displayName = "Popover";
3384
3478
 
3385
- // src/components/Navigation/Breadcrumb.tsx
3386
- var React36 = __toESM(require("react"), 1);
3387
- var import_react_slot8 = require("@radix-ui/react-slot");
3388
- var import_class_variance_authority19 = require("class-variance-authority");
3389
- var import_icons12 = require("@bubo-squared/icons");
3479
+ // src/components/Feedback/Tooltip.tsx
3480
+ var React36 = require("react");
3481
+ var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
3390
3482
  var import_jsx_runtime38 = require("react/jsx-runtime");
3391
- var breadcrumbBase = "group inline-flex items-center gap-[var(--space-8)] pl-0 pr-[var(--space-8)] py-[6px] rounded-full transition-colors select-none disabled:cursor-default disabled:pointer-events-none";
3392
- var breadcrumbIconVariants = (0, import_class_variance_authority19.cva)(
3393
- "flex shrink-0 items-center justify-center w-5 h-5 *:w-5 *:h-5",
3394
- {
3395
- variants: {
3396
- variant: {
3397
- colored: "text-(--icon-brand) group-hover:text-(--icon-brand-hover) group-focus-visible:text-(--icon-brand-focus) group-disabled:text-(--icon-brand-disabled)",
3398
- flat: "text-(--icon-primary) group-hover:text-(--icon-primary-hover) group-focus-visible:text-(--icon-primary-focus) group-disabled:text-(--icon-primary-disabled)"
3399
- }
3400
- },
3401
- defaultVariants: {
3402
- variant: "flat"
3403
- }
3483
+ var TooltipArrow = TooltipPrimitive.Arrow;
3484
+ var mapPlacementToSideAndAlign = (placement) => {
3485
+ switch (placement) {
3486
+ case "top":
3487
+ return { side: "top", align: "center" };
3488
+ case "topLeft":
3489
+ return { side: "top", align: "start" };
3490
+ case "topRight":
3491
+ return { side: "top", align: "end" };
3492
+ case "bottom":
3493
+ return { side: "bottom", align: "center" };
3494
+ case "bottomLeft":
3495
+ return { side: "bottom", align: "start" };
3496
+ case "bottomRight":
3497
+ return { side: "bottom", align: "end" };
3498
+ case "left":
3499
+ return { side: "left", align: "center" };
3500
+ case "leftTop":
3501
+ return { side: "left", align: "start" };
3502
+ case "leftBottom":
3503
+ return { side: "left", align: "end" };
3504
+ case "right":
3505
+ return { side: "right", align: "center" };
3506
+ case "rightTop":
3507
+ return { side: "right", align: "start" };
3508
+ case "rightBottom":
3509
+ return { side: "right", align: "end" };
3510
+ default:
3511
+ return { side: "top", align: "center" };
3404
3512
  }
3405
- );
3406
- var breadcrumbTextVariants = (0, import_class_variance_authority19.cva)(
3407
- "font-normal text-[length:var(--font-size-paragraph-lg-18)] leading-[var(--font-line-height-28)] tracking-[var(--font-letter-spacing-02)] whitespace-nowrap",
3408
- {
3409
- variants: {
3410
- variant: {
3411
- colored: "text-(--color-brand) group-hover:text-(--color-brand-hover) group-focus-visible:text-(--color-brand-focus) group-disabled:text-(--color-brand-disabled)",
3412
- flat: "text-primary group-hover:text-(--color-primary-hover) group-focus-visible:text-(--color-primary-focus) group-disabled:text-primary-disabled"
3413
- }
3414
- },
3415
- defaultVariants: {
3416
- variant: "flat"
3417
- }
3418
- }
3419
- );
3420
- var Breadcrumb = React36.forwardRef((props, ref) => {
3513
+ };
3514
+ var Tooltip = (props) => {
3421
3515
  const {
3422
- asChild = false,
3423
- variant = "flat",
3424
- label = "Header",
3425
- showIcon = true,
3426
- showText = true,
3427
- icon,
3516
+ strapline,
3517
+ title,
3518
+ description,
3519
+ showArrow = true,
3428
3520
  className,
3429
- children,
3430
- ...rest
3521
+ placement = "top",
3522
+ offset = 10,
3523
+ disableHoverableContent,
3524
+ open,
3525
+ defaultOpen,
3526
+ onOpenChange,
3527
+ children
3431
3528
  } = props;
3432
- const Comp = asChild ? import_react_slot8.Slot : "button";
3433
- const content = showText ? children ?? label : null;
3529
+ const { side, align } = mapPlacementToSideAndAlign(placement);
3530
+ 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";
3531
+ 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)]";
3434
3532
  return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
3435
- Comp,
3533
+ TooltipPrimitive.Root,
3436
3534
  {
3437
- type: asChild ? void 0 : "button",
3438
- className: cn(breadcrumbBase, className),
3439
- ref,
3440
- ...rest,
3535
+ open,
3536
+ defaultOpen,
3537
+ onOpenChange,
3538
+ disableHoverableContent,
3441
3539
  children: [
3442
- showIcon && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: cn(breadcrumbIconVariants({ variant })), children: icon ?? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_icons12.ChevronRightIcon, {}) }),
3443
- content && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: cn(breadcrumbTextVariants({ variant })), children: content })
3540
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TooltipPrimitive.Trigger, { asChild: true, children }),
3541
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
3542
+ TooltipPrimitive.Content,
3543
+ {
3544
+ side,
3545
+ align,
3546
+ sideOffset: offset,
3547
+ className: cn(tooltipClasses, className),
3548
+ children: [
3549
+ showArrow && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TooltipArrow, { className: tooltipArrowClasses }),
3550
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "grid gap-2", children: [
3551
+ (strapline ?? "") !== "" && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "caption text-secondary", children: strapline }),
3552
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("h4", { className: "subtitle-medium text-primary", children: title }),
3553
+ (description ?? "") !== "" && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "paragraph-sm text-primary", children: description })
3554
+ ] })
3555
+ ]
3556
+ }
3557
+ ) })
3444
3558
  ]
3445
3559
  }
3446
3560
  );
3447
- });
3448
- Breadcrumb.displayName = "Breadcrumb";
3561
+ };
3562
+ Tooltip.displayName = "Tooltip";
3449
3563
 
3450
- // src/components/Logo/LogoIcon.tsx
3451
- var import_class_variance_authority20 = require("class-variance-authority");
3564
+ // src/components/Feedback/TooltipProvider.tsx
3565
+ var React37 = require("react");
3566
+ var TooltipPrimitive2 = __toESM(require("@radix-ui/react-tooltip"), 1);
3452
3567
  var import_jsx_runtime39 = require("react/jsx-runtime");
3453
- var LogoIconSvg = (props) => /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3454
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M83.7156 3.88535C78.5352 -1.29512 70.136 -1.29512 64.9555 3.88535L43.9999 24.8409L43.9995 24.8405L62.3536 6.48637C52.2379 16.5949 35.8584 16.6179 25.7142 6.55523L23.4434 4.28438C18.2629 -0.896082 9.86373 -0.89608 4.68327 4.28438C-0.497191 9.46484 -0.49719 17.864 4.68327 23.0445L6.88526 25.2465C17.0191 35.3875 17.0168 51.8235 6.87859 61.9618L25.2395 43.6008L25.2398 43.601L3.88534 64.9555C-1.29512 70.136 -1.29511 78.5351 3.88535 83.7156C9.06581 88.8961 17.465 88.8961 22.6455 83.7156L25.6458 80.7151L25.6864 80.6747C35.7981 70.6137 52.1313 70.597 62.2636 80.6248L65.7534 84.1146C70.9339 89.2951 79.3331 89.2951 84.5135 84.1146C89.694 78.9342 89.694 70.535 84.5135 65.3545L62.76 43.601L62.7602 43.6009L81.1144 61.9552C70.9806 51.8142 70.9829 35.3782 81.1211 25.24L83.7156 22.6455C88.8961 17.465 88.8961 9.06581 83.7156 3.88535Z", fill: "#1685FF" }),
3455
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { d: "M44.0667 50.4863C44.1213 50.4317 44.21 50.4317 44.2646 50.4863L48.6465 54.8682C48.6942 54.9158 48.7011 54.9907 48.663 55.0463L44.2812 61.4453C44.2256 61.5265 44.1057 61.5265 44.0501 61.4453L39.6683 55.0463C39.6302 54.9907 39.6371 54.9158 39.6848 54.8682L44.0667 50.4863Z", fill: "white" }),
3456
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M44.107 45.3938C44.0536 45.289 43.9013 45.289 43.8479 45.3938C41.8622 49.293 37.8104 51.9638 33.1347 51.9638C26.4991 51.9638 21.1199 46.5846 21.1199 39.9489C21.1199 33.3133 26.4991 27.9341 33.1347 27.9341C37.8104 27.9341 41.8622 30.6049 43.8479 34.5041C43.9013 34.6089 44.0536 34.6089 44.107 34.5041C46.0926 30.6049 50.1445 27.9341 54.8201 27.9341C61.4558 27.9341 66.835 33.3133 66.835 39.9489C66.835 46.5846 61.4558 51.9638 54.8201 51.9638C50.1445 51.9638 46.0926 49.293 44.107 45.3938Z", fill: "white" }),
3457
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { d: "M60.1113 40.0006C60.1113 43.052 57.6377 45.5256 54.5863 45.5256C51.535 45.5256 49.0614 43.052 49.0614 40.0006C49.0614 36.9493 51.535 34.4757 54.5863 34.4757C57.6377 34.4757 60.1113 36.9493 60.1113 40.0006Z", fill: "#1685FF" }),
3458
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { d: "M38.8954 40.0006C38.8954 43.052 36.4218 45.5256 33.3705 45.5256C30.3192 45.5256 27.8456 43.052 27.8456 40.0006C27.8456 36.9493 30.3192 34.4757 33.3705 34.4757C36.4218 34.4757 38.8954 36.9493 38.8954 40.0006Z", fill: "#1685FF" })
3568
+ var TooltipProvider = (props) => {
3569
+ const {
3570
+ children,
3571
+ delayDuration = 200,
3572
+ skipDelayDuration = 300,
3573
+ disableHoverableContent = false
3574
+ } = props;
3575
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3576
+ TooltipPrimitive2.Provider,
3577
+ {
3578
+ delayDuration,
3579
+ skipDelayDuration,
3580
+ disableHoverableContent,
3581
+ children
3582
+ }
3583
+ );
3584
+ };
3585
+ TooltipProvider.displayName = "TooltipProvider";
3586
+
3587
+ // src/components/Navigation/Breadcrumbs.tsx
3588
+ var React40 = __toESM(require("react"), 1);
3589
+
3590
+ // src/components/ui/breadcrumb.tsx
3591
+ var React38 = require("react");
3592
+ var import_react_slot8 = require("@radix-ui/react-slot");
3593
+ var import_jsx_runtime40 = require("react/jsx-runtime");
3594
+ 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";
3595
+ var disabledItemClasses = "text-primary-disabled cursor-default pointer-events-none";
3596
+ function Breadcrumb({ ...props }) {
3597
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
3598
+ }
3599
+ function BreadcrumbList({ className, ...props }) {
3600
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3601
+ "ol",
3602
+ {
3603
+ "data-slot": "breadcrumb-list",
3604
+ className: cn(
3605
+ "flex flex-wrap items-center gap-1.5 wrap-break-word sm:gap-2.5",
3606
+ className
3607
+ ),
3608
+ ...props
3609
+ }
3610
+ );
3611
+ }
3612
+ function BreadcrumbItem({ className, disabled, ...props }) {
3613
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3614
+ "li",
3615
+ {
3616
+ "data-slot": "breadcrumb-item",
3617
+ className: cn(breadcrumbItemClasses, disabled && disabledItemClasses, className),
3618
+ style: { marginBottom: "7px" },
3619
+ ...props
3620
+ }
3621
+ );
3622
+ }
3623
+ function BreadcrumbPage({ className, ...props }) {
3624
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3625
+ "span",
3626
+ {
3627
+ "data-slot": "breadcrumb-page",
3628
+ role: "link",
3629
+ "aria-disabled": "true",
3630
+ "aria-current": "page",
3631
+ className: cn(className),
3632
+ ...props
3633
+ }
3634
+ );
3635
+ }
3636
+ function BreadcrumbSeparator({
3637
+ children,
3638
+ className,
3639
+ ...props
3640
+ }) {
3641
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3642
+ "li",
3643
+ {
3644
+ "data-slot": "breadcrumb-separator",
3645
+ role: "presentation",
3646
+ "aria-hidden": "true",
3647
+ className: cn("[&>svg]:size-6 [&>svg]:text-(--color-secondary)", className),
3648
+ ...props,
3649
+ children: children ?? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(ChevronRight, {})
3650
+ }
3651
+ );
3652
+ }
3653
+ function BreadcrumbEllipsis({
3654
+ className,
3655
+ ...props
3656
+ }) {
3657
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
3658
+ "span",
3659
+ {
3660
+ "data-slot": "breadcrumb-ellipsis",
3661
+ role: "presentation",
3662
+ "aria-hidden": "true",
3663
+ className: cn("flex size-9 items-center justify-center", className),
3664
+ ...props,
3665
+ children: [
3666
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Ellipsis, { className: "size-4" }),
3667
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "sr-only", children: "More" })
3668
+ ]
3669
+ }
3670
+ );
3671
+ }
3672
+
3673
+ // src/components/ui/dropdown-menu.tsx
3674
+ var React39 = require("react");
3675
+ var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
3676
+ var import_jsx_runtime41 = require("react/jsx-runtime");
3677
+ function DropdownMenu({
3678
+ ...props
3679
+ }) {
3680
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
3681
+ }
3682
+ function DropdownMenuTrigger({
3683
+ ...props
3684
+ }) {
3685
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3686
+ DropdownMenuPrimitive.Trigger,
3687
+ {
3688
+ "data-slot": "dropdown-menu-trigger",
3689
+ ...props
3690
+ }
3691
+ );
3692
+ }
3693
+ function DropdownMenuContent({
3694
+ className,
3695
+ sideOffset = 4,
3696
+ ...props
3697
+ }) {
3698
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3699
+ DropdownMenuPrimitive.Content,
3700
+ {
3701
+ "data-slot": "dropdown-menu-content",
3702
+ sideOffset,
3703
+ className: cn(
3704
+ "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 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
3705
+ className
3706
+ ),
3707
+ ...props
3708
+ }
3709
+ ) });
3710
+ }
3711
+ function DropdownMenuGroup({
3712
+ ...props
3713
+ }) {
3714
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
3715
+ }
3716
+ function DropdownMenuItem({
3717
+ className,
3718
+ inset,
3719
+ variant = "default",
3720
+ ...props
3721
+ }) {
3722
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3723
+ DropdownMenuPrimitive.Item,
3724
+ {
3725
+ "data-slot": "dropdown-menu-item",
3726
+ "data-inset": inset,
3727
+ "data-variant": variant,
3728
+ className: cn(
3729
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_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:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3730
+ className
3731
+ ),
3732
+ ...props
3733
+ }
3734
+ );
3735
+ }
3736
+
3737
+ // src/components/Navigation/Breadcrumbs.tsx
3738
+ var import_jsx_runtime42 = require("react/jsx-runtime");
3739
+ var breadcrumbSeparatorVariants = "size-5 relative bottom-1 [&>svg]:text-secondary group-disabled:text-secondary";
3740
+ var breadcrumbItemBase = "h6-title text-secondary hover:text-primary-hover";
3741
+ var Breadcrumbs = React40.forwardRef(
3742
+ (props, ref) => {
3743
+ const { separator, ellipsis, children, className, ...rest } = props;
3744
+ const items = React40.Children.toArray(children).filter(Boolean);
3745
+ const shouldCollapse = Boolean(ellipsis) && items.length >= 5;
3746
+ const hiddenItems = shouldCollapse ? items.slice(1, -2) : [];
3747
+ const displayItems = shouldCollapse ? [items[0], "__ELLIPSIS__", items[items.length - 2], items[items.length - 1]] : items;
3748
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Breadcrumb, { ref, className, ...rest, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(BreadcrumbList, { children: displayItems.map((child, index) => {
3749
+ const isEllipsis = child === "__ELLIPSIS__";
3750
+ const key = isEllipsis ? "__ellipsis" : React40.isValidElement(child) && child.key != null ? String(child.key) : String(index);
3751
+ const isLast = index === displayItems.length - 1;
3752
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(React40.Fragment, { children: [
3753
+ isEllipsis ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(BreadcrumbItem, { className: cn(breadcrumbItemBase, props.breadcrumbItemClassName), children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(DropdownMenu, { children: [
3754
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3755
+ "button",
3756
+ {
3757
+ type: "button",
3758
+ className: "inline-flex size-8 items-center justify-center rounded-4 hover:bg-(--background-secondary) focus-ring-primary text-secondary",
3759
+ "aria-label": "Open breadcrumb menu",
3760
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(BreadcrumbEllipsis, {})
3761
+ }
3762
+ ) }),
3763
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3764
+ DropdownMenuContent,
3765
+ {
3766
+ align: "start",
3767
+ className: "bg-(--background-neutral) border-(--border-secondary-hover) shadow-card-md rounded-4",
3768
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(DropdownMenuGroup, { children: hiddenItems.map((hidden, hiddenIndex) => {
3769
+ const hiddenKey = React40.isValidElement(hidden) && hidden.key != null ? String(hidden.key) : `hidden-${hiddenIndex}`;
3770
+ if (React40.isValidElement(hidden)) {
3771
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3772
+ DropdownMenuItem,
3773
+ {
3774
+ asChild: true,
3775
+ className: "cursor-pointer paragraph-md text-primary focus:bg-(--background-secondary)",
3776
+ children: hidden
3777
+ },
3778
+ hiddenKey
3779
+ );
3780
+ }
3781
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3782
+ DropdownMenuItem,
3783
+ {
3784
+ className: "cursor-pointer paragraph-md text-primary focus:bg-(--background-secondary)",
3785
+ children: String(hidden)
3786
+ },
3787
+ hiddenKey
3788
+ );
3789
+ }) })
3790
+ }
3791
+ )
3792
+ ] }) }) : isLast ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(BreadcrumbItem, { className: cn(breadcrumbItemBase, props.breadcrumbItemClassName), children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3793
+ BreadcrumbPage,
3794
+ {
3795
+ className: cn("h6-title-medium cursor-pointer", props.breadcrumbPageClassName),
3796
+ children: child
3797
+ }
3798
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(BreadcrumbItem, { className: cn(breadcrumbItemBase, props.breadcrumbItemClassName), children: child }),
3799
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(BreadcrumbSeparator, { className: cn(breadcrumbSeparatorVariants, props.separatorClassName), children: separator })
3800
+ ] }, key);
3801
+ }) }) });
3802
+ }
3803
+ );
3804
+ Breadcrumbs.displayName = "Breadcrumbs";
3805
+
3806
+ // src/components/Logo/LogoIcon.tsx
3807
+ var import_class_variance_authority19 = require("class-variance-authority");
3808
+ var import_jsx_runtime43 = require("react/jsx-runtime");
3809
+ var LogoIconSvg = (props) => /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3810
+ /* @__PURE__ */ (0, import_jsx_runtime43.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" }),
3811
+ /* @__PURE__ */ (0, import_jsx_runtime43.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" }),
3812
+ /* @__PURE__ */ (0, import_jsx_runtime43.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" }),
3813
+ /* @__PURE__ */ (0, import_jsx_runtime43.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" }),
3814
+ /* @__PURE__ */ (0, import_jsx_runtime43.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
3815
  ] });
3460
- var logoIconVariants = (0, import_class_variance_authority20.cva)(
3816
+ var logoIconVariants = (0, import_class_variance_authority19.cva)(
3461
3817
  "relative bg-linear-to-t from-gray-800 to-gray-950 overflow-hidden flex justify-center items-center",
3462
3818
  {
3463
3819
  variants: {
@@ -3482,28 +3838,28 @@ var logoIconSizeClass = {
3482
3838
  xl: "size-96"
3483
3839
  };
3484
3840
  var LogoIcon = ({ className, size = "md" }) => {
3485
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: cn(logoIconVariants({ size }), className), children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(LogoIconSvg, { className: logoIconSizeClass[size] }) });
3841
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: cn(logoIconVariants({ size }), className), children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(LogoIconSvg, { className: logoIconSizeClass[size] }) });
3486
3842
  };
3487
3843
 
3488
3844
  // src/components/Logo/Logo.tsx
3489
- var import_class_variance_authority21 = require("class-variance-authority");
3490
- var import_jsx_runtime40 = require("react/jsx-runtime");
3491
- var LogoIconSvg2 = (props) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3492
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M83.7156 3.88535C78.5352 -1.29512 70.136 -1.29512 64.9555 3.88535L43.9999 24.8409L43.9995 24.8405L62.3536 6.48637C52.2379 16.5949 35.8584 16.6179 25.7142 6.55523L23.4434 4.28438C18.2629 -0.896082 9.86373 -0.89608 4.68327 4.28438C-0.497191 9.46484 -0.49719 17.864 4.68327 23.0445L6.88526 25.2465C17.0191 35.3875 17.0168 51.8235 6.87859 61.9618L25.2395 43.6008L25.2398 43.601L3.88534 64.9555C-1.29512 70.136 -1.29511 78.5351 3.88535 83.7156C9.06581 88.8961 17.465 88.8961 22.6455 83.7156L25.6458 80.7151L25.6864 80.6747C35.7981 70.6137 52.1313 70.597 62.2636 80.6248L65.7534 84.1146C70.9339 89.2951 79.3331 89.2951 84.5135 84.1146C89.694 78.9342 89.694 70.535 84.5135 65.3545L62.76 43.601L62.7602 43.6009L81.1144 61.9552C70.9806 51.8142 70.9829 35.3782 81.1211 25.24L83.7156 22.6455C88.8961 17.465 88.8961 9.06581 83.7156 3.88535Z", fill: "#1685FF" }),
3493
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M44.0667 50.4863C44.1213 50.4317 44.21 50.4317 44.2646 50.4863L48.6465 54.8682C48.6942 54.9158 48.7011 54.9907 48.663 55.0463L44.2812 61.4453C44.2256 61.5265 44.1057 61.5265 44.0501 61.4453L39.6683 55.0463C39.6302 54.9907 39.6371 54.9158 39.6848 54.8682L44.0667 50.4863Z", fill: "white" }),
3494
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M44.107 45.3938C44.0536 45.289 43.9013 45.289 43.8479 45.3938C41.8622 49.293 37.8104 51.9638 33.1347 51.9638C26.4991 51.9638 21.1199 46.5846 21.1199 39.9489C21.1199 33.3133 26.4991 27.9341 33.1347 27.9341C37.8104 27.9341 41.8622 30.6049 43.8479 34.5041C43.9013 34.6089 44.0536 34.6089 44.107 34.5041C46.0926 30.6049 50.1445 27.9341 54.8201 27.9341C61.4558 27.9341 66.835 33.3133 66.835 39.9489C66.835 46.5846 61.4558 51.9638 54.8201 51.9638C50.1445 51.9638 46.0926 49.293 44.107 45.3938Z", fill: "white" }),
3495
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M60.1113 40.0006C60.1113 43.052 57.6377 45.5256 54.5863 45.5256C51.535 45.5256 49.0614 43.052 49.0614 40.0006C49.0614 36.9493 51.535 34.4757 54.5863 34.4757C57.6377 34.4757 60.1113 36.9493 60.1113 40.0006Z", fill: "#1685FF" }),
3496
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M38.8954 40.0006C38.8954 43.052 36.4218 45.5256 33.3705 45.5256C30.3192 45.5256 27.8456 43.052 27.8456 40.0006C27.8456 36.9493 30.3192 34.4757 33.3705 34.4757C36.4218 34.4757 38.8954 36.9493 38.8954 40.0006Z", fill: "#1685FF" })
3845
+ var import_class_variance_authority20 = require("class-variance-authority");
3846
+ var import_jsx_runtime44 = require("react/jsx-runtime");
3847
+ var LogoIconSvg2 = (props) => /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3848
+ /* @__PURE__ */ (0, import_jsx_runtime44.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" }),
3849
+ /* @__PURE__ */ (0, import_jsx_runtime44.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" }),
3850
+ /* @__PURE__ */ (0, import_jsx_runtime44.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" }),
3851
+ /* @__PURE__ */ (0, import_jsx_runtime44.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" }),
3852
+ /* @__PURE__ */ (0, import_jsx_runtime44.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
3853
  ] });
3498
- var LogoTextSvg = (props) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("svg", { width: "111", height: "32", viewBox: "0 0 111 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3499
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M72.7324 20.9658C72.7324 14.4559 77.4246 9.9751 83.8922 9.9751C90.3598 9.9751 95.052 14.4559 95.052 20.9658C95.052 27.4757 90.3598 31.9565 83.8922 31.9565C77.4246 31.9565 72.7324 27.4757 72.7324 20.9658ZM77.8896 20.9658C77.8896 24.7703 80.3414 27.3489 83.8922 27.3489C87.4431 27.3489 89.8948 24.7703 89.8948 20.9658C89.8948 17.1613 87.4431 14.5827 83.8922 14.5827C80.3414 14.5827 77.8896 17.1613 77.8896 20.9658Z", fill: "currentColor" }),
3500
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M53.4056 31.4503H48.6289V0H53.7861V13.6116C55.1388 11.2866 57.9287 9.89163 61.0991 9.89163C67.0595 9.89163 70.6949 14.5415 70.6949 21.136C70.6949 27.5613 66.7636 31.9998 60.761 31.9998C57.6328 31.9998 54.9697 30.6049 53.7438 28.1954L53.4056 31.4503ZM53.8284 20.9246C53.8284 24.6868 56.1533 27.2654 59.7042 27.2654C63.3395 27.2654 65.4954 24.6445 65.4954 20.9246C65.4954 17.2047 63.3395 14.5415 59.7042 14.5415C56.1533 14.5415 53.8284 17.1624 53.8284 20.9246Z", fill: "currentColor" }),
3501
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M38.9929 10.5681H44.15V31.4504H39.3733L38.9929 28.6605C37.7247 30.6473 35.0193 32 32.2293 32C27.4103 32 24.5781 28.745 24.5781 23.6301V10.5681H29.7353V21.8124C29.7353 25.786 31.2994 27.3923 34.1739 27.3923C37.4288 27.3923 38.9929 25.4901 38.9929 21.5165V10.5681Z", fill: "currentColor" }),
3502
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M4.77673 31.4503H0V0H5.15718V13.6116C6.50988 11.2866 9.29983 9.89163 12.4702 9.89163C18.4306 9.89163 22.066 14.5415 22.066 21.136C22.066 27.5613 18.1347 31.9998 12.132 31.9998C9.00392 31.9998 6.34079 30.6049 5.1149 28.1954L4.77673 31.4503ZM5.19945 20.9246C5.19945 24.6868 7.52441 27.2654 11.0752 27.2654C14.7106 27.2654 16.8665 24.6445 16.8665 20.9246C16.8665 17.2047 14.7106 14.5415 11.0752 14.5415C7.52441 14.5415 5.19945 17.1624 5.19945 20.9246Z", fill: "currentColor" }),
3503
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M103.555 0.5C107.084 0.5 109.944 3.36029 109.944 6.88867C109.944 10.4172 107.084 13.2773 103.555 13.2773C100.027 13.2772 97.1667 10.4171 97.1667 6.88867C97.1669 3.36036 100.027 0.500118 103.555 0.5Z", stroke: "currentColor" }),
3504
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { d: "M105.778 9.98355L101.687 10.0001V9.00978L103.578 7.33457C104.19 6.79817 104.445 6.41856 104.445 5.91517C104.445 5.29625 104.159 4.96616 103.647 4.96616C103.113 4.96616 102.803 5.35402 102.803 6.03896H101.556C101.556 4.66908 102.377 3.77783 103.64 3.77783C104.949 3.77783 105.731 4.52879 105.731 5.83265C105.731 6.66613 105.259 7.34282 104.546 7.97825L103.686 8.74571H105.778V9.98355Z", fill: "currentColor" })
3854
+ var LogoTextSvg = (props) => /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("svg", { width: "111", height: "32", viewBox: "0 0 111 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3855
+ /* @__PURE__ */ (0, import_jsx_runtime44.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" }),
3856
+ /* @__PURE__ */ (0, import_jsx_runtime44.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" }),
3857
+ /* @__PURE__ */ (0, import_jsx_runtime44.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" }),
3858
+ /* @__PURE__ */ (0, import_jsx_runtime44.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" }),
3859
+ /* @__PURE__ */ (0, import_jsx_runtime44.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" }),
3860
+ /* @__PURE__ */ (0, import_jsx_runtime44.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
3861
  ] });
3506
- var logoWrapperVariants = (0, import_class_variance_authority21.cva)("inline-flex", {
3862
+ var logoWrapperVariants = (0, import_class_variance_authority20.cva)("inline-flex", {
3507
3863
  variants: {
3508
3864
  variant: {
3509
3865
  inline: ["w-44", "h-12", "justify-start", "items-center", "gap-4"],
@@ -3515,7 +3871,7 @@ var logoWrapperVariants = (0, import_class_variance_authority21.cva)("inline-fle
3515
3871
  variant: "inline"
3516
3872
  }
3517
3873
  });
3518
- var logoIconSizeVariants = (0, import_class_variance_authority21.cva)("", {
3874
+ var logoIconSizeVariants = (0, import_class_variance_authority20.cva)("", {
3519
3875
  variants: {
3520
3876
  variant: {
3521
3877
  inline: "size-12",
@@ -3527,7 +3883,7 @@ var logoIconSizeVariants = (0, import_class_variance_authority21.cva)("", {
3527
3883
  variant: "inline"
3528
3884
  }
3529
3885
  });
3530
- var logoTextSizeVariants = (0, import_class_variance_authority21.cva)("", {
3886
+ var logoTextSizeVariants = (0, import_class_variance_authority20.cva)("", {
3531
3887
  variants: {
3532
3888
  variant: {
3533
3889
  inline: "h-8 w-27.5",
@@ -3541,9 +3897,9 @@ var logoTextSizeVariants = (0, import_class_variance_authority21.cva)("", {
3541
3897
  });
3542
3898
  var Logo = ({ className, textColor, variant = "inline" }) => {
3543
3899
  const textColorClass = textColor === "light" ? "text-(--color-b-white)" : textColor === "dark" ? "text-(--color-b-black)" : "text-primary";
3544
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: cn(logoWrapperVariants({ variant }), className), children: [
3545
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(LogoIconSvg2, { className: logoIconSizeVariants({ variant }) }),
3546
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(LogoTextSvg, { className: cn(logoTextSizeVariants({ variant }), textColorClass) })
3900
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: cn(logoWrapperVariants({ variant }), className), children: [
3901
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(LogoIconSvg2, { className: logoIconSizeVariants({ variant }) }),
3902
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(LogoTextSvg, { className: cn(logoTextSizeVariants({ variant }), textColorClass) })
3547
3903
  ] });
3548
3904
  };
3549
3905
  // Annotate the CommonJS export names for ESM import in node:
@@ -3553,12 +3909,11 @@ var Logo = ({ className, textColor, variant = "inline" }) => {
3553
3909
  BadgeDigit,
3554
3910
  BadgeDot,
3555
3911
  BadgeStatus,
3556
- Breadcrumb,
3912
+ Breadcrumbs,
3557
3913
  Button,
3558
3914
  ButtonGroup,
3559
3915
  Checkbox,
3560
3916
  Divider,
3561
- Dropdown,
3562
3917
  Field,
3563
3918
  IconButton,
3564
3919
  IconButtonGroup,
@@ -3572,14 +3927,33 @@ var Logo = ({ className, textColor, variant = "inline" }) => {
3572
3927
  Progress,
3573
3928
  RadioGroup,
3574
3929
  SearchInput,
3930
+ Select,
3575
3931
  Slider,
3576
3932
  StatusAvatar,
3577
3933
  Tag,
3578
3934
  TextArea,
3579
3935
  TextInput,
3580
3936
  Toggle,
3937
+ Tooltip,
3938
+ TooltipProvider,
3581
3939
  Typography,
3582
3940
  WebsiteInput,
3583
3941
  cn
3584
3942
  });
3943
+ /*! Bundled license information:
3944
+
3945
+ lucide-react/dist/esm/shared/src/utils.js:
3946
+ lucide-react/dist/esm/defaultAttributes.js:
3947
+ lucide-react/dist/esm/Icon.js:
3948
+ lucide-react/dist/esm/createLucideIcon.js:
3949
+ lucide-react/dist/esm/icons/chevron-right.js:
3950
+ lucide-react/dist/esm/icons/ellipsis.js:
3951
+ lucide-react/dist/esm/lucide-react.js:
3952
+ (**
3953
+ * @license lucide-react v0.555.0 - ISC
3954
+ *
3955
+ * This source code is licensed under the ISC license.
3956
+ * See the LICENSE file in the root directory of this source tree.
3957
+ *)
3958
+ */
3585
3959
  //# sourceMappingURL=index.cjs.map