@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.js CHANGED
@@ -518,7 +518,7 @@ var Typography = (props) => {
518
518
  return /* @__PURE__ */ jsx9(
519
519
  Comp,
520
520
  {
521
- className: cn(variant, weightClassName, mbClassName, className),
521
+ className: cn("text-primary", variant, weightClassName, mbClassName, className),
522
522
  ...rest,
523
523
  children
524
524
  }
@@ -1162,13 +1162,14 @@ function Checkbox({ label, className, ...props }) {
1162
1162
  ] });
1163
1163
  }
1164
1164
 
1165
- // src/components/Inputs/Dropdown.tsx
1165
+ // src/components/Inputs/Select.tsx
1166
1166
  import * as React18 from "react";
1167
+ import * as SelectPrimitive from "@radix-ui/react-select";
1167
1168
  import { cva as cva12 } from "class-variance-authority";
1168
1169
  import { ChevronDownIcon } from "@bubo-squared/icons";
1169
1170
  import { jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
1170
- var dropdownTriggerVariants = cva12(
1171
- "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",
1171
+ var selectTriggerVariants = cva12(
1172
+ "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",
1172
1173
  {
1173
1174
  variants: {
1174
1175
  size: {
@@ -1189,7 +1190,7 @@ var dropdownTriggerVariants = cva12(
1189
1190
  }
1190
1191
  }
1191
1192
  );
1192
- var dropdownTextVariants = cva12("truncate", {
1193
+ var textVariants = cva12("truncate", {
1193
1194
  variants: {
1194
1195
  size: {
1195
1196
  sm: "paragraph-md",
@@ -1198,7 +1199,7 @@ var dropdownTextVariants = cva12("truncate", {
1198
1199
  xl: "h6-title"
1199
1200
  },
1200
1201
  hasValue: {
1201
- false: "text-(--color-secondary)",
1202
+ false: "text-secondary",
1202
1203
  true: "text-primary"
1203
1204
  },
1204
1205
  disabled: {
@@ -1210,13 +1211,13 @@ var dropdownTextVariants = cva12("truncate", {
1210
1211
  hasValue: false
1211
1212
  }
1212
1213
  });
1213
- var dropdownIconVariants = cva12("flex items-center justify-center shrink-0", {
1214
+ var selectIconVariants = cva12("flex items-center justify-center shrink-0", {
1214
1215
  variants: {
1215
1216
  size: {
1216
- sm: "w-4 h-4",
1217
- md: "w-5 h-5",
1218
- lg: "w-5 h-5",
1219
- xl: "w-6 h-6"
1217
+ sm: "size-4",
1218
+ md: "size-5",
1219
+ lg: "size-5",
1220
+ xl: "size-6"
1220
1221
  },
1221
1222
  disabled: {
1222
1223
  false: "text-(--icon-primary)",
@@ -1228,31 +1229,25 @@ var dropdownIconVariants = cva12("flex items-center justify-center shrink-0", {
1228
1229
  disabled: false
1229
1230
  }
1230
1231
  });
1231
- var dropdownItemVariants = cva12("", {
1232
- variants: {
1233
- size: {
1234
- sm: "h-8",
1235
- md: "h-10",
1236
- lg: "h-11",
1237
- xl: "h-14"
1238
- }
1239
- }
1240
- });
1241
- var dropdownButtonVariants = cva12("flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) text-left paragraph-lg text-primary hover:bg-(--background-secondary)", {
1242
- variants: {
1243
- size: {
1244
- sm: "paragraph-sm py-(--space-4) ",
1245
- md: "paragraph-md py-(--space-6) ",
1246
- lg: "paragraph-lg py-(--space-8) ",
1247
- xl: "subtitle py-(--space-10) "
1232
+ var selectButtonVariants = cva12(
1233
+ "flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) text-left paragraph-lg text-primary hover:bg-(--background-secondary)",
1234
+ {
1235
+ variants: {
1236
+ size: {
1237
+ sm: "paragraph-sm py-(--space-4) ",
1238
+ md: "paragraph-md py-(--space-6) ",
1239
+ lg: "paragraph-lg py-(--space-8) ",
1240
+ xl: "subtitle py-(--space-10) "
1241
+ }
1248
1242
  }
1249
1243
  }
1250
- });
1251
- var Dropdown = (props) => {
1244
+ );
1245
+ var Select = (props) => {
1252
1246
  const {
1253
1247
  label = "Field Label",
1254
1248
  hint = "This is a hint text to help user.",
1255
1249
  hideHint = false,
1250
+ name,
1256
1251
  placeholder = "Placeholder text",
1257
1252
  size = "lg",
1258
1253
  status = "default",
@@ -1263,47 +1258,44 @@ var Dropdown = (props) => {
1263
1258
  onChange,
1264
1259
  className,
1265
1260
  showMenu,
1261
+ required = false,
1266
1262
  ...buttonProps
1267
1263
  } = props;
1268
- const dropdownRef = React18.useRef(null);
1269
1264
  const isControlled = value !== void 0;
1265
+ const controlledValue = value ?? "";
1270
1266
  const [internalValue, setInternalValue] = React18.useState(
1271
- defaultValue
1267
+ defaultValue ?? ""
1272
1268
  );
1273
1269
  const [open, setOpen] = React18.useState(false);
1274
- const currentValue = isControlled ? value : internalValue;
1275
- const selectedOption = options.find((opt) => opt.value === currentValue);
1270
+ const rawValue = isControlled ? controlledValue : internalValue;
1271
+ const selectedOption = options.find((opt) => opt.value === rawValue);
1272
+ const currentValue = selectedOption ? selectedOption.value : "";
1276
1273
  const hasValue = !!selectedOption;
1277
1274
  const isOpen = showMenu ?? open;
1278
- const handleToggle = () => {
1279
- if (disabled) return;
1275
+ const handleOpenChange = (nextOpen) => {
1280
1276
  if (showMenu === void 0) {
1281
- setOpen((prev) => !prev);
1277
+ setOpen(nextOpen);
1282
1278
  }
1283
1279
  };
1284
- const handleSelect = (optionValue) => {
1280
+ const handleValueChange = (nextValue) => {
1285
1281
  if (!isControlled) {
1286
- setInternalValue(optionValue);
1282
+ setInternalValue(nextValue);
1287
1283
  }
1288
- onChange?.(optionValue);
1284
+ onChange?.(nextValue);
1289
1285
  if (showMenu === void 0) {
1290
1286
  setOpen(false);
1291
1287
  }
1292
1288
  };
1293
- React18.useEffect(() => {
1294
- if (showMenu !== void 0) return;
1295
- const handleClickOutside = (event) => {
1296
- if (!dropdownRef.current) return;
1297
- if (!dropdownRef.current.contains(event.target)) {
1298
- setOpen(false);
1299
- }
1300
- };
1301
- document.addEventListener("mousedown", handleClickOutside);
1302
- return () => {
1303
- document.removeEventListener("mousedown", handleClickOutside);
1304
- };
1305
- }, [showMenu]);
1306
- return /* @__PURE__ */ jsx20("div", { ref: dropdownRef, children: /* @__PURE__ */ jsxs12(
1289
+ const handleClear = () => {
1290
+ if (!isControlled) {
1291
+ setInternalValue("");
1292
+ }
1293
+ onChange?.("");
1294
+ if (showMenu === void 0) {
1295
+ setOpen(false);
1296
+ }
1297
+ };
1298
+ return /* @__PURE__ */ jsx20(
1307
1299
  Field,
1308
1300
  {
1309
1301
  label,
@@ -1311,88 +1303,95 @@ var Dropdown = (props) => {
1311
1303
  hideHint,
1312
1304
  status,
1313
1305
  disabled,
1314
- children: [
1315
- /* @__PURE__ */ jsxs12(
1316
- "button",
1317
- {
1318
- type: "button",
1319
- "aria-haspopup": "listbox",
1320
- "aria-expanded": isOpen,
1321
- disabled,
1322
- className: cn(dropdownTriggerVariants({ size, status }), className),
1323
- onClick: handleToggle,
1324
- "data-open": isOpen || void 0,
1325
- ...buttonProps,
1326
- children: [
1327
- /* @__PURE__ */ jsx20(
1328
- "span",
1329
- {
1330
- className: cn(
1331
- dropdownTextVariants({
1332
- size,
1333
- hasValue,
1334
- disabled: !!disabled
1335
- })
1336
- ),
1337
- children: hasValue ? selectedOption?.label : placeholder
1338
- }
1339
- ),
1340
- /* @__PURE__ */ jsx20("span", { className: cn(dropdownIconVariants({ size, disabled: !!disabled })), children: /* @__PURE__ */ jsx20(ChevronDownIcon, {}) })
1341
- ]
1342
- }
1343
- ),
1344
- isOpen && options.length > 0 && /* @__PURE__ */ jsx20("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__ */ jsxs12("ul", { role: "listbox", className: "flex flex-1 flex-col", children: [
1345
- hasValue && /* @__PURE__ */ jsx20(
1346
- "li",
1347
- {
1348
- className: cn(
1349
- "bg-(--background-neutral) border-b border-(--border-secondary)",
1350
- dropdownItemVariants({ size })
1351
- ),
1352
- children: /* @__PURE__ */ jsx20(
1353
- "button",
1354
- {
1355
- type: "button",
1356
- className: cn(dropdownButtonVariants({ size }), "text-secondary"),
1357
- role: "option",
1358
- "aria-selected": false,
1359
- onClick: () => handleSelect(""),
1360
- children: "Clear"
1361
- }
1362
- )
1363
- }
1364
- ),
1365
- options.map((opt) => {
1366
- const selected = opt.value === currentValue;
1367
- return /* @__PURE__ */ jsx20(
1368
- "li",
1306
+ children: /* @__PURE__ */ jsxs12(
1307
+ SelectPrimitive.Root,
1308
+ {
1309
+ value: currentValue,
1310
+ onValueChange: handleValueChange,
1311
+ open: isOpen,
1312
+ onOpenChange: handleOpenChange,
1313
+ disabled,
1314
+ name,
1315
+ required,
1316
+ children: [
1317
+ /* @__PURE__ */ jsx20(SelectPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs12(
1318
+ "button",
1369
1319
  {
1320
+ type: "button",
1321
+ "aria-haspopup": "listbox",
1322
+ "aria-expanded": isOpen,
1323
+ disabled,
1370
1324
  className: cn(
1371
- "bg-(--background-neutral) border-b border-(--border-secondary) last:border-b-0 ",
1372
- selected && "bg-(--background-secondary)",
1373
- dropdownItemVariants({ size })
1325
+ selectTriggerVariants({ size, status }),
1326
+ textVariants({
1327
+ size,
1328
+ hasValue,
1329
+ disabled: !!disabled
1330
+ }),
1331
+ hasValue ? "text-primary" : "text-secondary",
1332
+ className
1374
1333
  ),
1375
- children: /* @__PURE__ */ jsx20(
1376
- "button",
1377
- {
1378
- type: "button",
1379
- className: dropdownButtonVariants({ size }),
1380
- role: "option",
1381
- "aria-selected": selected,
1382
- onClick: () => handleSelect(opt.value),
1383
- children: opt.label
1384
- }
1385
- )
1386
- },
1387
- opt.value
1388
- );
1389
- })
1390
- ] }) })
1391
- ]
1334
+ "data-open": isOpen || void 0,
1335
+ ...buttonProps,
1336
+ children: [
1337
+ /* @__PURE__ */ jsx20(SelectPrimitive.Value, { placeholder }),
1338
+ /* @__PURE__ */ jsx20(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx20(
1339
+ "span",
1340
+ {
1341
+ className: cn(selectIconVariants({ size, disabled: !!disabled })),
1342
+ children: /* @__PURE__ */ jsx20(ChevronDownIcon, {})
1343
+ }
1344
+ ) })
1345
+ ]
1346
+ }
1347
+ ) }),
1348
+ /* @__PURE__ */ jsx20(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx20(
1349
+ SelectPrimitive.Content,
1350
+ {
1351
+ position: "popper",
1352
+ align: "start",
1353
+ sideOffset: 4,
1354
+ className: cn(
1355
+ "z-50 rounded-4 border border-(--border-secondary-hover) bg-(--background-neutral) shadow-card-md overflow-y-scroll dropdown-scrollbar max-h-79",
1356
+ "min-w-343"
1357
+ ),
1358
+ style: { minWidth: "var(--radix-select-trigger-width)" },
1359
+ children: /* @__PURE__ */ jsx20(SelectPrimitive.Viewport, { children: /* @__PURE__ */ jsxs12("div", { className: "flex flex-col", children: [
1360
+ hasValue && /* @__PURE__ */ jsx20("div", { className: cn("bg-(--background-neutral) border-b border-(--border-secondary)"), children: /* @__PURE__ */ jsx20(
1361
+ "button",
1362
+ {
1363
+ type: "button",
1364
+ className: cn(
1365
+ selectButtonVariants({ size }),
1366
+ "text-secondary"
1367
+ ),
1368
+ onClick: handleClear,
1369
+ children: "Clear"
1370
+ }
1371
+ ) }),
1372
+ options.map((opt) => /* @__PURE__ */ jsx20(
1373
+ SelectPrimitive.Item,
1374
+ {
1375
+ value: opt.value,
1376
+ className: cn(
1377
+ "bg-(--background-neutral) border-b border-(--border-secondary) last:border-b-0",
1378
+ "data-highlighted:bg-(--background-secondary) data-highlighted:border-(--border-secondary-hover) data-highlighted:outline-none",
1379
+ "data-[state=checked]:bg-(--background-secondary)"
1380
+ ),
1381
+ children: /* @__PURE__ */ jsx20("div", { className: selectButtonVariants({ size }), children: /* @__PURE__ */ jsx20(SelectPrimitive.ItemText, { children: opt.label }) })
1382
+ },
1383
+ opt.value
1384
+ ))
1385
+ ] }) })
1386
+ }
1387
+ ) })
1388
+ ]
1389
+ }
1390
+ )
1392
1391
  }
1393
- ) });
1392
+ );
1394
1393
  };
1395
- Dropdown.displayName = "Dropdown";
1394
+ Select.displayName = "Select";
1396
1395
 
1397
1396
  // src/components/Inputs/PasswordInput.tsx
1398
1397
  import * as React21 from "react";
@@ -1698,6 +1697,109 @@ import { SearchIcon } from "@bubo-squared/icons";
1698
1697
  // src/components/ui/dialog.tsx
1699
1698
  import "react";
1700
1699
  import * as DialogPrimitive from "@radix-ui/react-dialog";
1700
+
1701
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/createLucideIcon.js
1702
+ import { forwardRef as forwardRef14, createElement as createElement2 } from "react";
1703
+
1704
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/shared/src/utils.js
1705
+ var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
1706
+ var toCamelCase = (string) => string.replace(
1707
+ /^([A-Z])|[\s-_]+(\w)/g,
1708
+ (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
1709
+ );
1710
+ var toPascalCase = (string) => {
1711
+ const camelCase = toCamelCase(string);
1712
+ return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
1713
+ };
1714
+ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
1715
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
1716
+ }).join(" ").trim();
1717
+ var hasA11yProp = (props) => {
1718
+ for (const prop in props) {
1719
+ if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
1720
+ return true;
1721
+ }
1722
+ }
1723
+ };
1724
+
1725
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/Icon.js
1726
+ import { forwardRef as forwardRef13, createElement } from "react";
1727
+
1728
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/defaultAttributes.js
1729
+ var defaultAttributes = {
1730
+ xmlns: "http://www.w3.org/2000/svg",
1731
+ width: 24,
1732
+ height: 24,
1733
+ viewBox: "0 0 24 24",
1734
+ fill: "none",
1735
+ stroke: "currentColor",
1736
+ strokeWidth: 2,
1737
+ strokeLinecap: "round",
1738
+ strokeLinejoin: "round"
1739
+ };
1740
+
1741
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/Icon.js
1742
+ var Icon2 = forwardRef13(
1743
+ ({
1744
+ color = "currentColor",
1745
+ size = 24,
1746
+ strokeWidth = 2,
1747
+ absoluteStrokeWidth,
1748
+ className = "",
1749
+ children,
1750
+ iconNode,
1751
+ ...rest
1752
+ }, ref) => createElement(
1753
+ "svg",
1754
+ {
1755
+ ref,
1756
+ ...defaultAttributes,
1757
+ width: size,
1758
+ height: size,
1759
+ stroke: color,
1760
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
1761
+ className: mergeClasses("lucide", className),
1762
+ ...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
1763
+ ...rest
1764
+ },
1765
+ [
1766
+ ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
1767
+ ...Array.isArray(children) ? children : [children]
1768
+ ]
1769
+ )
1770
+ );
1771
+
1772
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/createLucideIcon.js
1773
+ var createLucideIcon = (iconName, iconNode) => {
1774
+ const Component = forwardRef14(
1775
+ ({ className, ...props }, ref) => createElement2(Icon2, {
1776
+ ref,
1777
+ iconNode,
1778
+ className: mergeClasses(
1779
+ `lucide-${toKebabCase(toPascalCase(iconName))}`,
1780
+ `lucide-${iconName}`,
1781
+ className
1782
+ ),
1783
+ ...props
1784
+ })
1785
+ );
1786
+ Component.displayName = toPascalCase(iconName);
1787
+ return Component;
1788
+ };
1789
+
1790
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/chevron-right.js
1791
+ var __iconNode = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
1792
+ var ChevronRight = createLucideIcon("chevron-right", __iconNode);
1793
+
1794
+ // ../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/ellipsis.js
1795
+ var __iconNode2 = [
1796
+ ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
1797
+ ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
1798
+ ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
1799
+ ];
1800
+ var Ellipsis = createLucideIcon("ellipsis", __iconNode2);
1801
+
1802
+ // src/components/ui/dialog.tsx
1701
1803
  import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
1702
1804
 
1703
1805
  // src/components/ui/command.tsx
@@ -2016,7 +2118,9 @@ var CountrySelect = ({
2016
2118
  modal: true,
2017
2119
  onOpenChange: (open) => {
2018
2120
  setIsOpen(open);
2019
- open && setSearchValue("");
2121
+ if (open) {
2122
+ setSearchValue("");
2123
+ }
2020
2124
  },
2021
2125
  children: [
2022
2126
  /* @__PURE__ */ jsx29(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs17(
@@ -2135,7 +2239,6 @@ var FlagComponent = ({ country, countryName }) => {
2135
2239
  import * as React28 from "react";
2136
2240
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
2137
2241
  import { jsx as jsx30, jsxs as jsxs18 } from "react/jsx-runtime";
2138
- var wrapperBase = "flex flex-col gap-2 items-start";
2139
2242
  var RadioGroup = ({
2140
2243
  label,
2141
2244
  hint,
@@ -2155,117 +2258,96 @@ var RadioGroup = ({
2155
2258
  onValueChange?.(next);
2156
2259
  };
2157
2260
  const isHorizontal = orientation === "horizontal";
2158
- return /* @__PURE__ */ jsxs18("div", { className: wrapperBase, children: [
2159
- label && /* @__PURE__ */ jsx30(
2160
- "span",
2161
- {
2162
- className: cn(
2163
- "paragraph-sm text-primary",
2164
- disabled && "text-primary-disabled"
2165
- ),
2166
- children: label
2167
- }
2168
- ),
2169
- /* @__PURE__ */ jsx30(
2170
- RadioGroupPrimitive.Root,
2171
- {
2172
- ...rootProps,
2173
- value,
2174
- defaultValue,
2175
- onValueChange: handleValueChange,
2176
- "aria-describedby": hintId,
2177
- className: cn(
2178
- "flex",
2179
- isHorizontal ? "flex-row gap-6" : "flex-col gap-2",
2180
- className
2181
- ),
2182
- children: options.map((option) => /* @__PURE__ */ jsx30(
2183
- RadioGroupPrimitive.Item,
2184
- {
2185
- value: option.value,
2186
- disabled: disabled || option.disabled,
2187
- asChild: true,
2188
- children: /* @__PURE__ */ jsxs18(
2189
- "button",
2190
- {
2191
- type: "button",
2192
- className: cn(
2193
- "group inline-flex items-center gap-2 outline-none",
2194
- "data-[disabled]:pointer-events-none",
2195
- disabled || option.disabled ? "cursor-default" : "cursor-pointer"
2261
+ return /* @__PURE__ */ jsx30(
2262
+ Field,
2263
+ {
2264
+ label,
2265
+ hint,
2266
+ hideHint,
2267
+ disabled,
2268
+ children: /* @__PURE__ */ jsx30(
2269
+ RadioGroupPrimitive.Root,
2270
+ {
2271
+ ...rootProps,
2272
+ value,
2273
+ defaultValue,
2274
+ onValueChange: handleValueChange,
2275
+ disabled,
2276
+ "aria-describedby": hintId,
2277
+ className: cn(
2278
+ "flex",
2279
+ isHorizontal ? "flex-row gap-6" : "flex-col gap-2",
2280
+ className
2281
+ ),
2282
+ children: options.map((option) => /* @__PURE__ */ jsx30("div", { className: "relative inline-flex", children: /* @__PURE__ */ jsxs18(
2283
+ RadioGroupPrimitive.Item,
2284
+ {
2285
+ value: option.value,
2286
+ disabled: disabled || option.disabled,
2287
+ className: cn(
2288
+ "group inline-flex items-center gap-2 outline-none",
2289
+ "data-disabled:pointer-events-none",
2290
+ disabled || option.disabled ? "cursor-default" : "cursor-pointer"
2291
+ ),
2292
+ children: [
2293
+ /* @__PURE__ */ jsx30(
2294
+ "span",
2295
+ {
2296
+ className: cn(
2297
+ "flex items-center justify-center shrink-0 h-5 w-5 rounded-full border bg-(--background-primary) transition-all",
2298
+ // 1: enabled, unchecked, unfocused, unhovered
2299
+ "group-data-[state=unchecked]:border-(--border-secondary)",
2300
+ // 2: enabled, checked, unfocused, unhovered
2301
+ "group-data-[state=checked]:border-(--border-brand)",
2302
+ // 3: enabled, unchecked, hovered, unfocused
2303
+ "group-data-[state=unchecked]:group-hover:border-(--border-secondary-hover)",
2304
+ // 4: enabled, checked, hovered, unfocused
2305
+ "group-data-[state=checked]:group-hover:border-(--border-brand-hover)",
2306
+ "group-data-[state=checked]:group-hover:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-secondary)]",
2307
+ // 5: enabled, unchecked, focused (override 1/3)
2308
+ "group-data-[state=unchecked]:group-focus-visible:border-(--border-secondary-hover)",
2309
+ // 6: enabled, checked, focused (override 2/4)
2310
+ "group-data-[state=checked]:group-focus-visible:border-(--border-brand-focus)",
2311
+ "group-data-[state=checked]:group-focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)]",
2312
+ // 7: disabled, unchecked (override everything above)
2313
+ "group-[&[data-disabled][data-state=unchecked]]:border-none",
2314
+ "group-[&[data-disabled][data-state=unchecked]]:bg-(--background-primary-disabled)",
2315
+ // 8: disabled, checked (override everything above)
2316
+ "group-[&[data-disabled][data-state=checked]]:border-(--border-primary-disabled)",
2317
+ "group-[&[data-disabled][data-state=checked]]:bg-(--background-primary-disabled)"
2318
+ ),
2319
+ children: /* @__PURE__ */ jsx30(
2320
+ "span",
2321
+ {
2322
+ className: cn(
2323
+ "h-4 w-4 rounded-full bg-(--background-brand) scale-0 transition-transform",
2324
+ "group-data-[state=checked]:scale-100",
2325
+ "group-data-[state=checked]:group-hover:bg-(--background-brand-hover)",
2326
+ "group-data-[state=checked]:group-focus-visible:bg-(--background-brand-hover)",
2327
+ "group-[&[data-disabled][data-state=checked]]:bg-(--background-brand-disabled)",
2328
+ "group-[&[data-disabled][data-state=unchecked]]:scale-0"
2329
+ )
2330
+ }
2331
+ )
2332
+ }
2196
2333
  ),
2197
- children: [
2198
- /* @__PURE__ */ jsx30(
2199
- "span",
2200
- {
2201
- className: cn(
2202
- "flex items-center justify-center shrink-0 h-5 w-5 rounded-full border bg-(--background-primary) transition-all",
2203
- // 1: enabled, unchecked, unfocused, unhovered
2204
- "group-data-[state=unchecked]:border-(--border-secondary)",
2205
- // 2: enabled, checked, unfocused, unhovered
2206
- "group-data-[state=checked]:border-(--border-brand)",
2207
- // 3: enabled, unchecked, hovered, unfocused
2208
- "group-data-[state=unchecked]:group-hover:border-(--border-secondary-hover)",
2209
- // 4: enabled, checked, hovered, unfocused
2210
- "group-data-[state=checked]:group-hover:border-(--border-brand-hover)",
2211
- "group-data-[state=checked]:group-hover:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-secondary)]",
2212
- // 5: enabled, unchecked, focused (override 1/3)
2213
- "group-data-[state=unchecked]:group-focus-visible:border-(--border-secondary-hover)",
2214
- // 6: enabled, checked, focused (override 2/4)
2215
- "group-data-[state=checked]:group-focus-visible:border-(--border-brand-focus)",
2216
- "group-data-[state=checked]:group-focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)]",
2217
- // 7: disabled, unchecked (override everything above)
2218
- "group-[&[data-disabled][data-state=unchecked]]:border-none",
2219
- "group-[&[data-disabled][data-state=unchecked]]:bg-(--background-primary-disabled)",
2220
- // 8: disabled, checked (override everything above)
2221
- "group-[&[data-disabled][data-state=checked]]:border-(--border-primary-disabled)",
2222
- "group-[&[data-disabled][data-state=checked]]:bg-(--background-primary-disabled)"
2223
- ),
2224
- children: /* @__PURE__ */ jsx30(
2225
- "span",
2226
- {
2227
- className: cn(
2228
- "h-4 w-4 rounded-full bg-(--background-brand) scale-0 transition-transform",
2229
- "group-data-[state=checked]:scale-100",
2230
- "group-data-[state=checked]:group-hover:bg-(--background-brand-hover)",
2231
- "group-data-[state=checked]:group-focus-visible:bg-(--background-brand-hover)",
2232
- "group-[&[data-disabled][data-state=checked]]:bg-(--background-brand-disabled)",
2233
- "group-[&[data-disabled][data-state=unchecked]]:scale-0"
2234
- )
2235
- }
2236
- )
2237
- }
2238
- ),
2239
- /* @__PURE__ */ jsx30(
2240
- "span",
2241
- {
2242
- className: cn(
2243
- "paragraph-sm text-primary",
2244
- "group-data-[disabled]:text-primary-disabled whitespace-nowrap"
2245
- ),
2246
- children: option.label
2247
- }
2248
- )
2249
- ]
2250
- }
2251
- )
2252
- },
2253
- option.value
2254
- ))
2255
- }
2256
- ),
2257
- !hideHint && /* @__PURE__ */ jsx30(
2258
- "p",
2259
- {
2260
- id: hintId,
2261
- className: cn(
2262
- "caption text-(--color-secondary)",
2263
- disabled && "text-primary-disabled"
2264
- ),
2265
- children: hint ?? "\xA0"
2266
- }
2267
- )
2268
- ] });
2334
+ /* @__PURE__ */ jsx30(
2335
+ "span",
2336
+ {
2337
+ className: cn(
2338
+ "paragraph-sm text-primary",
2339
+ "group-data-disabled:text-primary-disabled whitespace-nowrap"
2340
+ ),
2341
+ children: option.label
2342
+ }
2343
+ )
2344
+ ]
2345
+ }
2346
+ ) }, option.value))
2347
+ }
2348
+ )
2349
+ }
2350
+ );
2269
2351
  };
2270
2352
 
2271
2353
  // src/components/Inputs/SearchInput.tsx
@@ -2319,7 +2401,7 @@ var SearchInput = (props) => {
2319
2401
  inputRef.current?.focus();
2320
2402
  };
2321
2403
  const showTrailingIcon = !!trailingIcon;
2322
- return /* @__PURE__ */ jsx31("div", { className: "flex flex-col gap-2 items-start", children: /* @__PURE__ */ jsx31("div", { className: "relative w-full", children: /* @__PURE__ */ jsxs19(
2404
+ return /* @__PURE__ */ jsx31("div", { className: "flex flex-col gap-2 items-start w-full", children: /* @__PURE__ */ jsx31("div", { className: "relative w-full", children: /* @__PURE__ */ jsxs19(
2323
2405
  InputShell,
2324
2406
  {
2325
2407
  size,
@@ -2352,8 +2434,8 @@ SearchInput.displayName = "SearchInput";
2352
2434
 
2353
2435
  // src/components/Inputs/Slider.tsx
2354
2436
  import * as React30 from "react";
2355
- import { jsx as jsx32, jsxs as jsxs20 } from "react/jsx-runtime";
2356
- var wrapperBase2 = "flex flex-col gap-2 items-start";
2437
+ import { Fragment as Fragment2, jsx as jsx32, jsxs as jsxs20 } from "react/jsx-runtime";
2438
+ var wrapperBase = "flex flex-col gap-2 items-start";
2357
2439
  var isRangeProps = (props) => {
2358
2440
  return Array.isArray(props.value) || Array.isArray(props.defaultValue);
2359
2441
  };
@@ -2363,6 +2445,7 @@ var toArray = (value) => {
2363
2445
  };
2364
2446
  var Slider = (props) => {
2365
2447
  const {
2448
+ name,
2366
2449
  display = "flat",
2367
2450
  tooltipPlacement = "top",
2368
2451
  tooltipFormatter,
@@ -2410,29 +2493,12 @@ var Slider = (props) => {
2410
2493
  const trackRef = React30.useRef(null);
2411
2494
  const [draggingThumbIndex, setDraggingThumbIndex] = React30.useState(null);
2412
2495
  const [hoveredThumbIndex, setHoveredThumbIndex] = React30.useState(null);
2413
- const clamp = (val) => {
2496
+ const clamp = React30.useCallback((val) => {
2414
2497
  if (val < min) return min;
2415
2498
  if (val > max) return max;
2416
2499
  return val;
2417
- };
2418
- React30.useEffect(() => {
2419
- if (!isControlled) {
2420
- setInternalValue((prev) => {
2421
- const clamped = prev.map((v) => clamp(v));
2422
- if (isRange && clamped.length === 2 && step > 0) {
2423
- return enforceMinGap(clamped, prev);
2424
- }
2425
- return clamped;
2426
- });
2427
- }
2428
- }, [isControlled, min, max, isRange]);
2429
- const snap = (val) => {
2430
- const range = max - min;
2431
- if (range <= 0 || step <= 0) return clamp(val);
2432
- const stepsFromMin = Math.round((val - min) / step);
2433
- return clamp(min + stepsFromMin * step);
2434
- };
2435
- const enforceMinGap = (next, prev) => {
2500
+ }, [min, max]);
2501
+ const enforceMinGap = React30.useCallback((next, prev) => {
2436
2502
  if (!isRange || next.length !== 2 || step <= 0) return next;
2437
2503
  let [low, high] = next;
2438
2504
  const [prevLow, prevHigh] = prev.length === 2 ? prev : next;
@@ -2455,6 +2521,23 @@ var Slider = (props) => {
2455
2521
  }
2456
2522
  }
2457
2523
  return [low, high];
2524
+ }, [isRange, step, clamp]);
2525
+ React30.useEffect(() => {
2526
+ if (!isControlled) {
2527
+ setInternalValue((prev) => {
2528
+ const clamped = prev.map((v) => clamp(v));
2529
+ if (isRange && clamped.length === 2 && step > 0) {
2530
+ return enforceMinGap(clamped, prev);
2531
+ }
2532
+ return clamped;
2533
+ });
2534
+ }
2535
+ }, [isControlled, clamp, enforceMinGap, isRange, step]);
2536
+ const snap = (val) => {
2537
+ const range = max - min;
2538
+ if (range <= 0 || step <= 0) return clamp(val);
2539
+ const stepsFromMin = Math.round((val - min) / step);
2540
+ return clamp(min + stepsFromMin * step);
2458
2541
  };
2459
2542
  const updateValue = (next) => {
2460
2543
  let normalized = normalizeArray(next, current);
@@ -2677,7 +2760,7 @@ var Slider = (props) => {
2677
2760
  style: {
2678
2761
  left: `${percent}%`,
2679
2762
  top: `calc(50% - ${trackHeight / 2}px)`,
2680
- ["--slider-halo-color"]: "color-mix(in srgb, var(--color-brand) 10%, transparent)"
2763
+ "--slider-halo-color": "color-mix(in srgb, var(--color-brand) 10%, transparent)"
2681
2764
  },
2682
2765
  onPointerEnter: () => {
2683
2766
  setHoveredThumbIndex(index);
@@ -2696,66 +2779,88 @@ var Slider = (props) => {
2696
2779
  index
2697
2780
  );
2698
2781
  };
2699
- return /* @__PURE__ */ jsx32(
2782
+ return /* @__PURE__ */ jsxs20(
2700
2783
  "div",
2701
2784
  {
2702
- className: wrapperBase2,
2785
+ className: wrapperBase,
2703
2786
  style: { marginInline: `${thumbRadius}px` },
2704
- children: /* @__PURE__ */ jsxs20("div", { className: cn("w-full flex flex-col gap-1", className), children: [
2705
- /* @__PURE__ */ jsxs20("div", { className: "relative w-full", children: [
2706
- showTooltip && primary !== void 0 && renderTooltipBubble(
2707
- "primary",
2708
- primaryPercent,
2709
- formatDisplayValue(primary),
2710
- hoveredThumbIndex === 0 || draggingThumbIndex === 0
2711
- ),
2712
- showTooltip && isRange && secondary !== void 0 && renderTooltipBubble(
2713
- "secondary",
2714
- secondaryPercent,
2715
- formatDisplayValue(secondary),
2716
- hoveredThumbIndex === 1 || draggingThumbIndex === 1
2787
+ children: [
2788
+ name && /* @__PURE__ */ jsxs20(Fragment2, { children: [
2789
+ /* @__PURE__ */ jsx32(
2790
+ "input",
2791
+ {
2792
+ type: "hidden",
2793
+ name,
2794
+ value: primary === void 0 ? "" : String(primary),
2795
+ disabled
2796
+ }
2717
2797
  ),
2718
- /* @__PURE__ */ jsxs20(
2719
- "div",
2798
+ isRange && secondary !== void 0 && /* @__PURE__ */ jsx32(
2799
+ "input",
2720
2800
  {
2721
- className: cn(
2722
- "relative w-full flex items-center rounded-4",
2723
- disabled ? "bg-(--background-primary-disabled) cursor-default" : "bg-(--background-secondary) cursor-pointer"
2724
- ),
2725
- style: { height: `${trackHeight}px` },
2726
- ref: trackRef,
2727
- onPointerDown: handleTrackPointerDown,
2728
- children: [
2729
- /* @__PURE__ */ jsx32(
2730
- "div",
2731
- {
2732
- className: cn(
2733
- "absolute h-full rounded-4",
2734
- disabled ? "bg-(--background-primary-disabled)" : "bg-(--background-secondary)"
2735
- ),
2736
- style: {
2737
- width: `calc(100% + ${thumbWidth}px)`,
2738
- left: `-${thumbRadius}px`
2739
- }
2740
- }
2741
- ),
2742
- renderHandle(0, primaryPercent, formatDisplayValue(primary)),
2743
- isRange && secondary !== void 0 && renderHandle(1, secondaryPercent, formatDisplayValue(secondary))
2744
- ]
2801
+ type: "hidden",
2802
+ name,
2803
+ value: String(secondary),
2804
+ disabled
2745
2805
  }
2746
2806
  )
2747
2807
  ] }),
2748
- showNumeric && /* @__PURE__ */ jsx32(
2749
- "p",
2750
- {
2751
- className: cn(
2752
- "paragraph-sm text-primary",
2753
- disabled && "text-primary-disabled"
2808
+ /* @__PURE__ */ jsxs20("div", { className: cn("w-full flex flex-col gap-1", className), children: [
2809
+ /* @__PURE__ */ jsxs20("div", { className: "relative w-full", children: [
2810
+ showTooltip && primary !== void 0 && renderTooltipBubble(
2811
+ "primary",
2812
+ primaryPercent,
2813
+ formatDisplayValue(primary),
2814
+ hoveredThumbIndex === 0 || draggingThumbIndex === 0
2754
2815
  ),
2755
- children: formatNumericLabel()
2756
- }
2757
- )
2758
- ] })
2816
+ showTooltip && isRange && secondary !== void 0 && renderTooltipBubble(
2817
+ "secondary",
2818
+ secondaryPercent,
2819
+ formatDisplayValue(secondary),
2820
+ hoveredThumbIndex === 1 || draggingThumbIndex === 1
2821
+ ),
2822
+ /* @__PURE__ */ jsxs20(
2823
+ "div",
2824
+ {
2825
+ className: cn(
2826
+ "relative w-full flex items-center rounded-4",
2827
+ disabled ? "bg-(--background-primary-disabled) cursor-default" : "bg-(--background-secondary) cursor-pointer"
2828
+ ),
2829
+ style: { height: `${trackHeight}px` },
2830
+ ref: trackRef,
2831
+ onPointerDown: handleTrackPointerDown,
2832
+ children: [
2833
+ /* @__PURE__ */ jsx32(
2834
+ "div",
2835
+ {
2836
+ className: cn(
2837
+ "absolute h-full rounded-4",
2838
+ disabled ? "bg-(--background-primary-disabled)" : "bg-(--background-secondary)"
2839
+ ),
2840
+ style: {
2841
+ width: `calc(100% + ${thumbWidth}px)`,
2842
+ left: `-${thumbRadius}px`
2843
+ }
2844
+ }
2845
+ ),
2846
+ renderHandle(0, primaryPercent, formatDisplayValue(primary)),
2847
+ isRange && secondary !== void 0 && renderHandle(1, secondaryPercent, formatDisplayValue(secondary))
2848
+ ]
2849
+ }
2850
+ )
2851
+ ] }),
2852
+ showNumeric && /* @__PURE__ */ jsx32(
2853
+ "p",
2854
+ {
2855
+ className: cn(
2856
+ "paragraph-sm text-primary",
2857
+ disabled && "text-primary-disabled"
2858
+ ),
2859
+ children: formatNumericLabel()
2860
+ }
2861
+ )
2862
+ ] })
2863
+ ]
2759
2864
  }
2760
2865
  );
2761
2866
  };
@@ -2765,7 +2870,6 @@ Slider.displayName = "Slider";
2765
2870
  import * as React31 from "react";
2766
2871
  import { MaximizeIcon } from "@bubo-squared/icons";
2767
2872
  import { jsx as jsx33, jsxs as jsxs21 } from "react/jsx-runtime";
2768
- var wrapperBase3 = "flex flex-col gap-2 items-start w-full";
2769
2873
  var TextArea = (props) => {
2770
2874
  const {
2771
2875
  label,
@@ -2780,6 +2884,8 @@ var TextArea = (props) => {
2780
2884
  defaultValue,
2781
2885
  onChange,
2782
2886
  rows = 3,
2887
+ id,
2888
+ name,
2783
2889
  ...textareaProps
2784
2890
  } = props;
2785
2891
  const isControlled = value !== void 0;
@@ -2807,9 +2913,8 @@ var TextArea = (props) => {
2807
2913
  }
2808
2914
  onChange?.(event);
2809
2915
  };
2810
- const inputId = React31.useId();
2811
- const labelId = `${inputId}-label`;
2812
- const hintId = `${inputId}-hint`;
2916
+ const generatedId = React31.useId();
2917
+ const textareaId = id ?? generatedId;
2813
2918
  const statusBorderClass = {
2814
2919
  default: "",
2815
2920
  success: "border-(--border-success)",
@@ -2820,7 +2925,6 @@ var TextArea = (props) => {
2820
2925
  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)]",
2821
2926
  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)]"
2822
2927
  };
2823
- const hintColorClass = disabled ? "text-primary-disabled" : status === "success" ? "text-(--color-success)" : status === "error" ? "text-(--color-error)" : "text-(--color-secondary)";
2824
2928
  const counterColorClass = disabled ? "text-primary-disabled" : status === "success" ? "text-(--color-success)" : status === "error" ? "text-(--color-error)" : "text-primary";
2825
2929
  const handleResizePointerDown = (event) => {
2826
2930
  if (disabled) return;
@@ -2846,102 +2950,90 @@ var TextArea = (props) => {
2846
2950
  window.addEventListener("pointermove", handlePointerMove);
2847
2951
  window.addEventListener("pointerup", handlePointerUp);
2848
2952
  };
2849
- return /* @__PURE__ */ jsxs21("div", { className: wrapperBase3, children: [
2850
- label && /* @__PURE__ */ jsx33(
2851
- "label",
2852
- {
2853
- htmlFor: inputId,
2854
- id: labelId,
2855
- className: cn(
2856
- "paragraph-sm",
2857
- disabled ? "text-primary-disabled" : "text-primary"
2858
- ),
2859
- children: label
2860
- }
2861
- ),
2862
- /* @__PURE__ */ jsx33("div", { className: "relative w-full", children: /* @__PURE__ */ jsxs21(
2863
- "div",
2864
- {
2865
- className: cn(
2866
- "relative flex w-full rounded-4 border bg-(--background-primary) cursor-text transition-colors",
2867
- "border-(--border-secondary) hover:border-(--border-secondary-hover) hover:bg-(--background-primary-hover)",
2868
- disabled && "bg-(--background-primary-disabled) border-(--border-secondary-disabled) cursor-default",
2869
- statusBorderClass[status],
2870
- !disabled && statusFocusClass[status],
2871
- className
2872
- ),
2873
- ref: containerRef,
2874
- style: {
2875
- ...type === "responsive" && height !== void 0 ? { height } : {},
2876
- ...type === "responsive" && width !== void 0 ? { width } : {}
2877
- },
2878
- onClick: handleContainerClick,
2879
- "aria-disabled": disabled || void 0,
2880
- children: [
2881
- /* @__PURE__ */ jsx33(
2882
- "textarea",
2883
- {
2884
- id: inputId,
2885
- ref: textareaRef,
2886
- "aria-labelledby": label ? labelId : void 0,
2887
- "aria-describedby": hint ? hintId : void 0,
2888
- disabled: disabled ?? void 0,
2889
- value: isControlled ? value : currentValue,
2890
- defaultValue: isControlled ? void 0 : defaultValue,
2891
- onChange: handleChange,
2892
- rows,
2893
- maxLength: effectiveMaxLength,
2894
- className: cn(
2895
- "paragraph-md bg-transparent outline-none w-full h-full resize-none px-2 py-2 pr-8",
2896
- disabled ? "text-primary-disabled" : hasValue ? "text-primary" : "text-(--color-secondary)",
2897
- showCharacterLimit && "pr-16"
2898
- ),
2899
- ...textareaProps
2900
- }
2901
- ),
2902
- showCharacterLimit && /* @__PURE__ */ jsxs21(
2903
- "span",
2904
- {
2905
- className: cn(
2906
- "absolute bottom-1 right-1 footnote mb-0!",
2907
- counterColorClass
2908
- ),
2909
- children: [
2910
- currentLength,
2911
- "/",
2912
- effectiveMaxLength
2913
- ]
2914
- }
2953
+ return /* @__PURE__ */ jsx33(
2954
+ Field,
2955
+ {
2956
+ className: "w-full",
2957
+ label,
2958
+ hint,
2959
+ hideHint,
2960
+ status,
2961
+ disabled,
2962
+ children: /* @__PURE__ */ jsxs21(
2963
+ "div",
2964
+ {
2965
+ className: cn(
2966
+ "relative flex w-full rounded-4 border bg-(--background-primary) cursor-text transition-colors",
2967
+ "border-(--border-secondary) hover:border-(--border-secondary-hover) hover:bg-(--background-primary-hover)",
2968
+ disabled && "bg-(--background-primary-disabled) border-(--border-secondary-disabled) cursor-default",
2969
+ statusBorderClass[status],
2970
+ !disabled && statusFocusClass[status],
2971
+ className
2915
2972
  ),
2916
- type === "responsive" && /* @__PURE__ */ jsx33(
2917
- "div",
2918
- {
2919
- className: "absolute bottom-1 right-1 h-3 w-3 " + (disabled ? "cursor-auto" : "cursor-nwse-resize"),
2920
- onPointerDown: disabled ? void 0 : handleResizePointerDown,
2921
- children: /* @__PURE__ */ jsx33(
2922
- "span",
2923
- {
2924
- className: cn(
2925
- "absolute bottom-0 right-0 flex h-4 w-4 items-center justify-center text-(--icon-primary)",
2926
- disabled && "text-(--icon-primary-disabled)"
2927
- ),
2928
- children: /* @__PURE__ */ jsx33(MaximizeIcon, {})
2929
- }
2930
- )
2931
- }
2932
- )
2933
- ]
2934
- }
2935
- ) }),
2936
- hint && !hideHint && /* @__PURE__ */ jsx33(
2937
- "p",
2938
- {
2939
- id: hint ? hintId : void 0,
2940
- className: cn("caption", hint ? hintColorClass : "invisible"),
2941
- children: hint || "\xA0"
2942
- }
2943
- )
2944
- ] });
2973
+ ref: containerRef,
2974
+ style: {
2975
+ ...type === "responsive" && height !== void 0 ? { height } : {},
2976
+ ...type === "responsive" && width !== void 0 ? { width } : {}
2977
+ },
2978
+ onClick: handleContainerClick,
2979
+ "aria-disabled": disabled || void 0,
2980
+ children: [
2981
+ /* @__PURE__ */ jsx33(
2982
+ "textarea",
2983
+ {
2984
+ id: textareaId,
2985
+ name,
2986
+ ref: textareaRef,
2987
+ disabled: disabled ?? void 0,
2988
+ value: isControlled ? value : currentValue,
2989
+ defaultValue: isControlled ? void 0 : defaultValue,
2990
+ onChange: handleChange,
2991
+ rows,
2992
+ maxLength: effectiveMaxLength,
2993
+ className: cn(
2994
+ "paragraph-md bg-transparent outline-none w-full h-full resize-none px-2 py-2 pr-8",
2995
+ disabled ? "text-primary-disabled" : hasValue ? "text-primary" : "text-(--color-secondary)",
2996
+ showCharacterLimit && "pr-16"
2997
+ ),
2998
+ ...textareaProps
2999
+ }
3000
+ ),
3001
+ showCharacterLimit && /* @__PURE__ */ jsxs21(
3002
+ "span",
3003
+ {
3004
+ className: cn(
3005
+ "absolute bottom-1 right-1 footnote mb-0!",
3006
+ counterColorClass
3007
+ ),
3008
+ children: [
3009
+ currentLength,
3010
+ "/",
3011
+ effectiveMaxLength
3012
+ ]
3013
+ }
3014
+ ),
3015
+ type === "responsive" && /* @__PURE__ */ jsx33(
3016
+ "div",
3017
+ {
3018
+ className: "absolute bottom-1 right-1 h-3 w-3 " + (disabled ? "cursor-auto" : "cursor-nwse-resize"),
3019
+ onPointerDown: disabled ? void 0 : handleResizePointerDown,
3020
+ children: /* @__PURE__ */ jsx33(
3021
+ "span",
3022
+ {
3023
+ className: cn(
3024
+ "absolute bottom-0 right-0 flex h-4 w-4 items-center justify-center text-(--icon-primary)",
3025
+ disabled && "text-(--icon-primary-disabled)"
3026
+ ),
3027
+ children: /* @__PURE__ */ jsx33(MaximizeIcon, {})
3028
+ }
3029
+ )
3030
+ }
3031
+ )
3032
+ ]
3033
+ }
3034
+ )
3035
+ }
3036
+ );
2945
3037
  };
2946
3038
  TextArea.displayName = "TextArea";
2947
3039
 
@@ -3258,9 +3350,9 @@ var Popover2 = (props) => {
3258
3350
  onOk?.();
3259
3351
  setOpen(false);
3260
3352
  };
3261
- const popoverClasses = "group bg-(--background-popover) popover w-80 max-w-[calc(100vw-2rem)] shadow-card-md border-none [&_span]:scale-240 rounded-4";
3262
- 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)]";
3263
- const mapPlacementToSideAndAlign = (placement2) => {
3353
+ const popoverClasses = "group bg-(--background-popover) popover w-80 max-w-[calc(100vw-2rem)] shadow-card-md border-none [&>span]:scale-240 rounded-4";
3354
+ 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)]";
3355
+ const mapPlacementToSideAndAlign2 = (placement2) => {
3264
3356
  switch (placement2) {
3265
3357
  case "top":
3266
3358
  return { side: "top", align: "center" };
@@ -3290,7 +3382,7 @@ var Popover2 = (props) => {
3290
3382
  return { side: "bottom", align: "center" };
3291
3383
  }
3292
3384
  };
3293
- const { side, align } = mapPlacementToSideAndAlign(placement);
3385
+ const { side, align } = mapPlacementToSideAndAlign2(placement);
3294
3386
  return /* @__PURE__ */ jsxs25(Popover, { open, onOpenChange: setOpen, children: [
3295
3387
  /* @__PURE__ */ jsx37(PopoverTrigger, { asChild: true, children }),
3296
3388
  /* @__PURE__ */ jsxs25(
@@ -3320,82 +3412,344 @@ var Popover2 = (props) => {
3320
3412
  };
3321
3413
  Popover2.displayName = "Popover";
3322
3414
 
3323
- // src/components/Navigation/Breadcrumb.tsx
3324
- import * as React36 from "react";
3325
- import { Slot as Slot8 } from "@radix-ui/react-slot";
3326
- import { cva as cva19 } from "class-variance-authority";
3327
- import { ChevronRightIcon } from "@bubo-squared/icons";
3415
+ // src/components/Feedback/Tooltip.tsx
3416
+ import "react";
3417
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
3328
3418
  import { jsx as jsx38, jsxs as jsxs26 } from "react/jsx-runtime";
3329
- 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";
3330
- var breadcrumbIconVariants = cva19(
3331
- "flex shrink-0 items-center justify-center w-5 h-5 *:w-5 *:h-5",
3332
- {
3333
- variants: {
3334
- variant: {
3335
- colored: "text-(--icon-brand) group-hover:text-(--icon-brand-hover) group-focus-visible:text-(--icon-brand-focus) group-disabled:text-(--icon-brand-disabled)",
3336
- flat: "text-(--icon-primary) group-hover:text-(--icon-primary-hover) group-focus-visible:text-(--icon-primary-focus) group-disabled:text-(--icon-primary-disabled)"
3337
- }
3338
- },
3339
- defaultVariants: {
3340
- variant: "flat"
3341
- }
3419
+ var TooltipArrow = TooltipPrimitive.Arrow;
3420
+ var mapPlacementToSideAndAlign = (placement) => {
3421
+ switch (placement) {
3422
+ case "top":
3423
+ return { side: "top", align: "center" };
3424
+ case "topLeft":
3425
+ return { side: "top", align: "start" };
3426
+ case "topRight":
3427
+ return { side: "top", align: "end" };
3428
+ case "bottom":
3429
+ return { side: "bottom", align: "center" };
3430
+ case "bottomLeft":
3431
+ return { side: "bottom", align: "start" };
3432
+ case "bottomRight":
3433
+ return { side: "bottom", align: "end" };
3434
+ case "left":
3435
+ return { side: "left", align: "center" };
3436
+ case "leftTop":
3437
+ return { side: "left", align: "start" };
3438
+ case "leftBottom":
3439
+ return { side: "left", align: "end" };
3440
+ case "right":
3441
+ return { side: "right", align: "center" };
3442
+ case "rightTop":
3443
+ return { side: "right", align: "start" };
3444
+ case "rightBottom":
3445
+ return { side: "right", align: "end" };
3446
+ default:
3447
+ return { side: "top", align: "center" };
3342
3448
  }
3343
- );
3344
- var breadcrumbTextVariants = cva19(
3345
- "font-normal text-[length:var(--font-size-paragraph-lg-18)] leading-[var(--font-line-height-28)] tracking-[var(--font-letter-spacing-02)] whitespace-nowrap",
3346
- {
3347
- variants: {
3348
- variant: {
3349
- colored: "text-(--color-brand) group-hover:text-(--color-brand-hover) group-focus-visible:text-(--color-brand-focus) group-disabled:text-(--color-brand-disabled)",
3350
- flat: "text-primary group-hover:text-(--color-primary-hover) group-focus-visible:text-(--color-primary-focus) group-disabled:text-primary-disabled"
3351
- }
3352
- },
3353
- defaultVariants: {
3354
- variant: "flat"
3355
- }
3356
- }
3357
- );
3358
- var Breadcrumb = React36.forwardRef((props, ref) => {
3449
+ };
3450
+ var Tooltip = (props) => {
3359
3451
  const {
3360
- asChild = false,
3361
- variant = "flat",
3362
- label = "Header",
3363
- showIcon = true,
3364
- showText = true,
3365
- icon,
3452
+ strapline,
3453
+ title,
3454
+ description,
3455
+ showArrow = true,
3366
3456
  className,
3367
- children,
3368
- ...rest
3457
+ placement = "top",
3458
+ offset = 10,
3459
+ disableHoverableContent,
3460
+ open,
3461
+ defaultOpen,
3462
+ onOpenChange,
3463
+ children
3369
3464
  } = props;
3370
- const Comp = asChild ? Slot8 : "button";
3371
- const content = showText ? children ?? label : null;
3465
+ const { side, align } = mapPlacementToSideAndAlign(placement);
3466
+ 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";
3467
+ 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)]";
3372
3468
  return /* @__PURE__ */ jsxs26(
3373
- Comp,
3469
+ TooltipPrimitive.Root,
3374
3470
  {
3375
- type: asChild ? void 0 : "button",
3376
- className: cn(breadcrumbBase, className),
3377
- ref,
3378
- ...rest,
3471
+ open,
3472
+ defaultOpen,
3473
+ onOpenChange,
3474
+ disableHoverableContent,
3379
3475
  children: [
3380
- showIcon && /* @__PURE__ */ jsx38("span", { className: cn(breadcrumbIconVariants({ variant })), children: icon ?? /* @__PURE__ */ jsx38(ChevronRightIcon, {}) }),
3381
- content && /* @__PURE__ */ jsx38("span", { className: cn(breadcrumbTextVariants({ variant })), children: content })
3476
+ /* @__PURE__ */ jsx38(TooltipPrimitive.Trigger, { asChild: true, children }),
3477
+ /* @__PURE__ */ jsx38(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs26(
3478
+ TooltipPrimitive.Content,
3479
+ {
3480
+ side,
3481
+ align,
3482
+ sideOffset: offset,
3483
+ className: cn(tooltipClasses, className),
3484
+ children: [
3485
+ showArrow && /* @__PURE__ */ jsx38(TooltipArrow, { className: tooltipArrowClasses }),
3486
+ /* @__PURE__ */ jsxs26("div", { className: "grid gap-2", children: [
3487
+ (strapline ?? "") !== "" && /* @__PURE__ */ jsx38("span", { className: "caption text-secondary", children: strapline }),
3488
+ /* @__PURE__ */ jsx38("h4", { className: "subtitle-medium text-primary", children: title }),
3489
+ (description ?? "") !== "" && /* @__PURE__ */ jsx38("p", { className: "paragraph-sm text-primary", children: description })
3490
+ ] })
3491
+ ]
3492
+ }
3493
+ ) })
3382
3494
  ]
3383
3495
  }
3384
3496
  );
3385
- });
3386
- Breadcrumb.displayName = "Breadcrumb";
3497
+ };
3498
+ Tooltip.displayName = "Tooltip";
3499
+
3500
+ // src/components/Feedback/TooltipProvider.tsx
3501
+ import "react";
3502
+ import * as TooltipPrimitive2 from "@radix-ui/react-tooltip";
3503
+ import { jsx as jsx39 } from "react/jsx-runtime";
3504
+ var TooltipProvider = (props) => {
3505
+ const {
3506
+ children,
3507
+ delayDuration = 200,
3508
+ skipDelayDuration = 300,
3509
+ disableHoverableContent = false
3510
+ } = props;
3511
+ return /* @__PURE__ */ jsx39(
3512
+ TooltipPrimitive2.Provider,
3513
+ {
3514
+ delayDuration,
3515
+ skipDelayDuration,
3516
+ disableHoverableContent,
3517
+ children
3518
+ }
3519
+ );
3520
+ };
3521
+ TooltipProvider.displayName = "TooltipProvider";
3522
+
3523
+ // src/components/Navigation/Breadcrumbs.tsx
3524
+ import * as React40 from "react";
3525
+
3526
+ // src/components/ui/breadcrumb.tsx
3527
+ import "react";
3528
+ import { Slot as Slot8 } from "@radix-ui/react-slot";
3529
+ import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
3530
+ 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";
3531
+ var disabledItemClasses = "text-primary-disabled cursor-default pointer-events-none";
3532
+ function Breadcrumb({ ...props }) {
3533
+ return /* @__PURE__ */ jsx40("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
3534
+ }
3535
+ function BreadcrumbList({ className, ...props }) {
3536
+ return /* @__PURE__ */ jsx40(
3537
+ "ol",
3538
+ {
3539
+ "data-slot": "breadcrumb-list",
3540
+ className: cn(
3541
+ "flex flex-wrap items-center gap-1.5 wrap-break-word sm:gap-2.5",
3542
+ className
3543
+ ),
3544
+ ...props
3545
+ }
3546
+ );
3547
+ }
3548
+ function BreadcrumbItem({ className, disabled, ...props }) {
3549
+ return /* @__PURE__ */ jsx40(
3550
+ "li",
3551
+ {
3552
+ "data-slot": "breadcrumb-item",
3553
+ className: cn(breadcrumbItemClasses, disabled && disabledItemClasses, className),
3554
+ style: { marginBottom: "7px" },
3555
+ ...props
3556
+ }
3557
+ );
3558
+ }
3559
+ function BreadcrumbPage({ className, ...props }) {
3560
+ return /* @__PURE__ */ jsx40(
3561
+ "span",
3562
+ {
3563
+ "data-slot": "breadcrumb-page",
3564
+ role: "link",
3565
+ "aria-disabled": "true",
3566
+ "aria-current": "page",
3567
+ className: cn(className),
3568
+ ...props
3569
+ }
3570
+ );
3571
+ }
3572
+ function BreadcrumbSeparator({
3573
+ children,
3574
+ className,
3575
+ ...props
3576
+ }) {
3577
+ return /* @__PURE__ */ jsx40(
3578
+ "li",
3579
+ {
3580
+ "data-slot": "breadcrumb-separator",
3581
+ role: "presentation",
3582
+ "aria-hidden": "true",
3583
+ className: cn("[&>svg]:size-6 [&>svg]:text-(--color-secondary)", className),
3584
+ ...props,
3585
+ children: children ?? /* @__PURE__ */ jsx40(ChevronRight, {})
3586
+ }
3587
+ );
3588
+ }
3589
+ function BreadcrumbEllipsis({
3590
+ className,
3591
+ ...props
3592
+ }) {
3593
+ return /* @__PURE__ */ jsxs27(
3594
+ "span",
3595
+ {
3596
+ "data-slot": "breadcrumb-ellipsis",
3597
+ role: "presentation",
3598
+ "aria-hidden": "true",
3599
+ className: cn("flex size-9 items-center justify-center", className),
3600
+ ...props,
3601
+ children: [
3602
+ /* @__PURE__ */ jsx40(Ellipsis, { className: "size-4" }),
3603
+ /* @__PURE__ */ jsx40("span", { className: "sr-only", children: "More" })
3604
+ ]
3605
+ }
3606
+ );
3607
+ }
3608
+
3609
+ // src/components/ui/dropdown-menu.tsx
3610
+ import "react";
3611
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
3612
+ import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
3613
+ function DropdownMenu({
3614
+ ...props
3615
+ }) {
3616
+ return /* @__PURE__ */ jsx41(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
3617
+ }
3618
+ function DropdownMenuTrigger({
3619
+ ...props
3620
+ }) {
3621
+ return /* @__PURE__ */ jsx41(
3622
+ DropdownMenuPrimitive.Trigger,
3623
+ {
3624
+ "data-slot": "dropdown-menu-trigger",
3625
+ ...props
3626
+ }
3627
+ );
3628
+ }
3629
+ function DropdownMenuContent({
3630
+ className,
3631
+ sideOffset = 4,
3632
+ ...props
3633
+ }) {
3634
+ return /* @__PURE__ */ jsx41(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx41(
3635
+ DropdownMenuPrimitive.Content,
3636
+ {
3637
+ "data-slot": "dropdown-menu-content",
3638
+ sideOffset,
3639
+ className: cn(
3640
+ "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",
3641
+ className
3642
+ ),
3643
+ ...props
3644
+ }
3645
+ ) });
3646
+ }
3647
+ function DropdownMenuGroup({
3648
+ ...props
3649
+ }) {
3650
+ return /* @__PURE__ */ jsx41(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
3651
+ }
3652
+ function DropdownMenuItem({
3653
+ className,
3654
+ inset,
3655
+ variant = "default",
3656
+ ...props
3657
+ }) {
3658
+ return /* @__PURE__ */ jsx41(
3659
+ DropdownMenuPrimitive.Item,
3660
+ {
3661
+ "data-slot": "dropdown-menu-item",
3662
+ "data-inset": inset,
3663
+ "data-variant": variant,
3664
+ className: cn(
3665
+ "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",
3666
+ className
3667
+ ),
3668
+ ...props
3669
+ }
3670
+ );
3671
+ }
3672
+
3673
+ // src/components/Navigation/Breadcrumbs.tsx
3674
+ import { jsx as jsx42, jsxs as jsxs29 } from "react/jsx-runtime";
3675
+ var breadcrumbSeparatorVariants = "size-5 relative bottom-1 [&>svg]:text-secondary group-disabled:text-secondary";
3676
+ var breadcrumbItemBase = "h6-title text-secondary hover:text-primary-hover";
3677
+ var Breadcrumbs = React40.forwardRef(
3678
+ (props, ref) => {
3679
+ const { separator, ellipsis, children, className, ...rest } = props;
3680
+ const items = React40.Children.toArray(children).filter(Boolean);
3681
+ const shouldCollapse = Boolean(ellipsis) && items.length >= 5;
3682
+ const hiddenItems = shouldCollapse ? items.slice(1, -2) : [];
3683
+ const displayItems = shouldCollapse ? [items[0], "__ELLIPSIS__", items[items.length - 2], items[items.length - 1]] : items;
3684
+ return /* @__PURE__ */ jsx42(Breadcrumb, { ref, className, ...rest, children: /* @__PURE__ */ jsx42(BreadcrumbList, { children: displayItems.map((child, index) => {
3685
+ const isEllipsis = child === "__ELLIPSIS__";
3686
+ const key = isEllipsis ? "__ellipsis" : React40.isValidElement(child) && child.key != null ? String(child.key) : String(index);
3687
+ const isLast = index === displayItems.length - 1;
3688
+ return /* @__PURE__ */ jsxs29(React40.Fragment, { children: [
3689
+ isEllipsis ? /* @__PURE__ */ jsx42(BreadcrumbItem, { className: cn(breadcrumbItemBase, props.breadcrumbItemClassName), children: /* @__PURE__ */ jsxs29(DropdownMenu, { children: [
3690
+ /* @__PURE__ */ jsx42(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx42(
3691
+ "button",
3692
+ {
3693
+ type: "button",
3694
+ className: "inline-flex size-8 items-center justify-center rounded-4 hover:bg-(--background-secondary) focus-ring-primary text-secondary",
3695
+ "aria-label": "Open breadcrumb menu",
3696
+ children: /* @__PURE__ */ jsx42(BreadcrumbEllipsis, {})
3697
+ }
3698
+ ) }),
3699
+ /* @__PURE__ */ jsx42(
3700
+ DropdownMenuContent,
3701
+ {
3702
+ align: "start",
3703
+ className: "bg-(--background-neutral) border-(--border-secondary-hover) shadow-card-md rounded-4",
3704
+ children: /* @__PURE__ */ jsx42(DropdownMenuGroup, { children: hiddenItems.map((hidden, hiddenIndex) => {
3705
+ const hiddenKey = React40.isValidElement(hidden) && hidden.key != null ? String(hidden.key) : `hidden-${hiddenIndex}`;
3706
+ if (React40.isValidElement(hidden)) {
3707
+ return /* @__PURE__ */ jsx42(
3708
+ DropdownMenuItem,
3709
+ {
3710
+ asChild: true,
3711
+ className: "cursor-pointer paragraph-md text-primary focus:bg-(--background-secondary)",
3712
+ children: hidden
3713
+ },
3714
+ hiddenKey
3715
+ );
3716
+ }
3717
+ return /* @__PURE__ */ jsx42(
3718
+ DropdownMenuItem,
3719
+ {
3720
+ className: "cursor-pointer paragraph-md text-primary focus:bg-(--background-secondary)",
3721
+ children: String(hidden)
3722
+ },
3723
+ hiddenKey
3724
+ );
3725
+ }) })
3726
+ }
3727
+ )
3728
+ ] }) }) : isLast ? /* @__PURE__ */ jsx42(BreadcrumbItem, { className: cn(breadcrumbItemBase, props.breadcrumbItemClassName), children: /* @__PURE__ */ jsx42(
3729
+ BreadcrumbPage,
3730
+ {
3731
+ className: cn("h6-title-medium cursor-pointer", props.breadcrumbPageClassName),
3732
+ children: child
3733
+ }
3734
+ ) }) : /* @__PURE__ */ jsx42(BreadcrumbItem, { className: cn(breadcrumbItemBase, props.breadcrumbItemClassName), children: child }),
3735
+ !isLast && /* @__PURE__ */ jsx42(BreadcrumbSeparator, { className: cn(breadcrumbSeparatorVariants, props.separatorClassName), children: separator })
3736
+ ] }, key);
3737
+ }) }) });
3738
+ }
3739
+ );
3740
+ Breadcrumbs.displayName = "Breadcrumbs";
3387
3741
 
3388
3742
  // src/components/Logo/LogoIcon.tsx
3389
- import { cva as cva20 } from "class-variance-authority";
3390
- import { jsx as jsx39, jsxs as jsxs27 } from "react/jsx-runtime";
3391
- var LogoIconSvg = (props) => /* @__PURE__ */ jsxs27("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3392
- /* @__PURE__ */ jsx39("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" }),
3393
- /* @__PURE__ */ jsx39("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" }),
3394
- /* @__PURE__ */ jsx39("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" }),
3395
- /* @__PURE__ */ jsx39("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" }),
3396
- /* @__PURE__ */ jsx39("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" })
3743
+ import { cva as cva19 } from "class-variance-authority";
3744
+ import { jsx as jsx43, jsxs as jsxs30 } from "react/jsx-runtime";
3745
+ var LogoIconSvg = (props) => /* @__PURE__ */ jsxs30("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3746
+ /* @__PURE__ */ jsx43("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" }),
3747
+ /* @__PURE__ */ jsx43("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" }),
3748
+ /* @__PURE__ */ jsx43("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" }),
3749
+ /* @__PURE__ */ jsx43("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" }),
3750
+ /* @__PURE__ */ jsx43("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" })
3397
3751
  ] });
3398
- var logoIconVariants = cva20(
3752
+ var logoIconVariants = cva19(
3399
3753
  "relative bg-linear-to-t from-gray-800 to-gray-950 overflow-hidden flex justify-center items-center",
3400
3754
  {
3401
3755
  variants: {
@@ -3420,28 +3774,28 @@ var logoIconSizeClass = {
3420
3774
  xl: "size-96"
3421
3775
  };
3422
3776
  var LogoIcon = ({ className, size = "md" }) => {
3423
- return /* @__PURE__ */ jsx39("div", { className: cn(logoIconVariants({ size }), className), children: /* @__PURE__ */ jsx39(LogoIconSvg, { className: logoIconSizeClass[size] }) });
3777
+ return /* @__PURE__ */ jsx43("div", { className: cn(logoIconVariants({ size }), className), children: /* @__PURE__ */ jsx43(LogoIconSvg, { className: logoIconSizeClass[size] }) });
3424
3778
  };
3425
3779
 
3426
3780
  // src/components/Logo/Logo.tsx
3427
- import { cva as cva21 } from "class-variance-authority";
3428
- import { jsx as jsx40, jsxs as jsxs28 } from "react/jsx-runtime";
3429
- var LogoIconSvg2 = (props) => /* @__PURE__ */ jsxs28("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3430
- /* @__PURE__ */ jsx40("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" }),
3431
- /* @__PURE__ */ jsx40("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" }),
3432
- /* @__PURE__ */ jsx40("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" }),
3433
- /* @__PURE__ */ jsx40("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" }),
3434
- /* @__PURE__ */ jsx40("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" })
3781
+ import { cva as cva20 } from "class-variance-authority";
3782
+ import { jsx as jsx44, jsxs as jsxs31 } from "react/jsx-runtime";
3783
+ var LogoIconSvg2 = (props) => /* @__PURE__ */ jsxs31("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3784
+ /* @__PURE__ */ jsx44("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" }),
3785
+ /* @__PURE__ */ jsx44("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" }),
3786
+ /* @__PURE__ */ jsx44("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" }),
3787
+ /* @__PURE__ */ jsx44("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" }),
3788
+ /* @__PURE__ */ jsx44("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" })
3435
3789
  ] });
3436
- var LogoTextSvg = (props) => /* @__PURE__ */ jsxs28("svg", { width: "111", height: "32", viewBox: "0 0 111 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3437
- /* @__PURE__ */ jsx40("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" }),
3438
- /* @__PURE__ */ jsx40("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" }),
3439
- /* @__PURE__ */ jsx40("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" }),
3440
- /* @__PURE__ */ jsx40("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" }),
3441
- /* @__PURE__ */ jsx40("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" }),
3442
- /* @__PURE__ */ jsx40("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" })
3790
+ var LogoTextSvg = (props) => /* @__PURE__ */ jsxs31("svg", { width: "111", height: "32", viewBox: "0 0 111 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3791
+ /* @__PURE__ */ jsx44("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" }),
3792
+ /* @__PURE__ */ jsx44("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" }),
3793
+ /* @__PURE__ */ jsx44("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" }),
3794
+ /* @__PURE__ */ jsx44("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" }),
3795
+ /* @__PURE__ */ jsx44("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" }),
3796
+ /* @__PURE__ */ jsx44("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" })
3443
3797
  ] });
3444
- var logoWrapperVariants = cva21("inline-flex", {
3798
+ var logoWrapperVariants = cva20("inline-flex", {
3445
3799
  variants: {
3446
3800
  variant: {
3447
3801
  inline: ["w-44", "h-12", "justify-start", "items-center", "gap-4"],
@@ -3453,7 +3807,7 @@ var logoWrapperVariants = cva21("inline-flex", {
3453
3807
  variant: "inline"
3454
3808
  }
3455
3809
  });
3456
- var logoIconSizeVariants = cva21("", {
3810
+ var logoIconSizeVariants = cva20("", {
3457
3811
  variants: {
3458
3812
  variant: {
3459
3813
  inline: "size-12",
@@ -3465,7 +3819,7 @@ var logoIconSizeVariants = cva21("", {
3465
3819
  variant: "inline"
3466
3820
  }
3467
3821
  });
3468
- var logoTextSizeVariants = cva21("", {
3822
+ var logoTextSizeVariants = cva20("", {
3469
3823
  variants: {
3470
3824
  variant: {
3471
3825
  inline: "h-8 w-27.5",
@@ -3479,9 +3833,9 @@ var logoTextSizeVariants = cva21("", {
3479
3833
  });
3480
3834
  var Logo = ({ className, textColor, variant = "inline" }) => {
3481
3835
  const textColorClass = textColor === "light" ? "text-(--color-b-white)" : textColor === "dark" ? "text-(--color-b-black)" : "text-primary";
3482
- return /* @__PURE__ */ jsxs28("div", { className: cn(logoWrapperVariants({ variant }), className), children: [
3483
- /* @__PURE__ */ jsx40(LogoIconSvg2, { className: logoIconSizeVariants({ variant }) }),
3484
- /* @__PURE__ */ jsx40(LogoTextSvg, { className: cn(logoTextSizeVariants({ variant }), textColorClass) })
3836
+ return /* @__PURE__ */ jsxs31("div", { className: cn(logoWrapperVariants({ variant }), className), children: [
3837
+ /* @__PURE__ */ jsx44(LogoIconSvg2, { className: logoIconSizeVariants({ variant }) }),
3838
+ /* @__PURE__ */ jsx44(LogoTextSvg, { className: cn(logoTextSizeVariants({ variant }), textColorClass) })
3485
3839
  ] });
3486
3840
  };
3487
3841
  export {
@@ -3490,12 +3844,11 @@ export {
3490
3844
  BadgeDigit,
3491
3845
  BadgeDot,
3492
3846
  BadgeStatus,
3493
- Breadcrumb,
3847
+ Breadcrumbs,
3494
3848
  Button,
3495
3849
  ButtonGroup,
3496
3850
  Checkbox,
3497
3851
  Divider,
3498
- Dropdown,
3499
3852
  Field,
3500
3853
  IconButton,
3501
3854
  IconButtonGroup,
@@ -3509,14 +3862,33 @@ export {
3509
3862
  Progress,
3510
3863
  RadioGroup,
3511
3864
  SearchInput,
3865
+ Select,
3512
3866
  Slider,
3513
3867
  StatusAvatar,
3514
3868
  Tag,
3515
3869
  TextArea,
3516
3870
  TextInput,
3517
3871
  Toggle,
3872
+ Tooltip,
3873
+ TooltipProvider,
3518
3874
  Typography,
3519
3875
  WebsiteInput,
3520
3876
  cn
3521
3877
  };
3878
+ /*! Bundled license information:
3879
+
3880
+ lucide-react/dist/esm/shared/src/utils.js:
3881
+ lucide-react/dist/esm/defaultAttributes.js:
3882
+ lucide-react/dist/esm/Icon.js:
3883
+ lucide-react/dist/esm/createLucideIcon.js:
3884
+ lucide-react/dist/esm/icons/chevron-right.js:
3885
+ lucide-react/dist/esm/icons/ellipsis.js:
3886
+ lucide-react/dist/esm/lucide-react.js:
3887
+ (**
3888
+ * @license lucide-react v0.555.0 - ISC
3889
+ *
3890
+ * This source code is licensed under the ISC license.
3891
+ * See the LICENSE file in the root directory of this source tree.
3892
+ *)
3893
+ */
3522
3894
  //# sourceMappingURL=index.js.map