@bubo-squared/ui-framework 0.2.11 → 0.2.13

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
@@ -890,56 +890,112 @@ var Divider = (props) => {
890
890
  Divider.displayName = "Divider";
891
891
 
892
892
  // src/components/Content/Progress.tsx
893
+ import * as React14 from "react";
894
+
895
+ // src/components/Inputs/Field.tsx
893
896
  import * as React13 from "react";
894
897
  import { jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
898
+ var fieldBase = "flex flex-col gap-2 items-start";
899
+ var Field = (props) => {
900
+ const {
901
+ label,
902
+ labelRight = false,
903
+ hint,
904
+ hideHint,
905
+ status = "default",
906
+ disabled,
907
+ className,
908
+ children
909
+ } = props;
910
+ const fieldId = React13.useId();
911
+ const labelId = label ? `${fieldId}-label` : void 0;
912
+ const hintId = hint ? `${fieldId}-hint` : void 0;
913
+ const hintColorClass = disabled ? "text-primary-disabled" : status === "success" ? "text-(--color-success)" : status === "error" ? "text-(--color-error)" : "text-(--color-secondary)";
914
+ const labelColorClass = disabled ? "text-primary-disabled" : "text-primary";
915
+ return /* @__PURE__ */ jsxs8("div", { className: cn(fieldBase, className), children: [
916
+ label && /* @__PURE__ */ jsxs8("div", { className: "flex w-full items-center justify-between", children: [
917
+ /* @__PURE__ */ jsx15("label", { id: labelId, className: cn("paragraph-sm", labelColorClass), children: label }),
918
+ labelRight
919
+ ] }),
920
+ /* @__PURE__ */ jsx15("div", { className: "relative w-full", children }),
921
+ !hideHint && /* @__PURE__ */ jsx15(
922
+ "p",
923
+ {
924
+ id: hint ? hintId : void 0,
925
+ className: cn("caption", hint ? hintColorClass : "invisible"),
926
+ children: hint || "\xA0"
927
+ }
928
+ )
929
+ ] });
930
+ };
931
+ Field.displayName = "Field";
932
+
933
+ // src/components/Content/Progress.tsx
934
+ import { jsx as jsx16 } from "react/jsx-runtime";
895
935
  var sizeToBarClasses = {
896
936
  lg: "h-4 rounded-16",
897
937
  md: "h-2 rounded-8",
898
938
  sm: "h-1 rounded-4"
899
939
  };
900
- var Progress = React13.forwardRef(
940
+ var Progress = React14.forwardRef(
901
941
  (props, ref) => {
902
942
  const {
903
943
  value,
904
944
  label,
905
945
  hint,
906
- showLabel = true,
907
- showHint = !!hint,
946
+ showProgressLabel = true,
947
+ hideHint,
908
948
  size = "lg",
949
+ status = "default",
950
+ disabled,
909
951
  className,
910
952
  ...rest
911
953
  } = props;
912
954
  const clamped = Number.isFinite(value) ? Math.min(100, Math.max(0, value)) : 0;
913
955
  const percentageLabel = `${Math.round(clamped)}%`;
914
956
  const barHeightClasses = sizeToBarClasses[size];
915
- return /* @__PURE__ */ jsxs8(
916
- "div",
957
+ return /* @__PURE__ */ jsx16(
958
+ Field,
917
959
  {
918
- ref,
919
- className: cn("flex flex-col gap-2 items-start w-full", className),
920
- role: "progressbar",
921
- "aria-valuenow": clamped,
922
- "aria-valuemin": 0,
923
- "aria-valuemax": 100,
924
- "aria-label": label,
925
- ...rest,
926
- children: [
927
- showLabel && label && /* @__PURE__ */ jsxs8("div", { className: "flex w-full items-center justify-between", children: [
928
- /* @__PURE__ */ jsx15("span", { className: "paragraph-sm-bold text-primary", children: label }),
929
- /* @__PURE__ */ jsx15("span", { className: "footnote text-(--color-secondary)", children: percentageLabel })
930
- ] }),
931
- /* @__PURE__ */ jsx15("div", { className: cn("w-full bg-(--chart-mono) overflow-hidden", barHeightClasses), children: /* @__PURE__ */ jsx15(
932
- "div",
933
- {
934
- className: cn(
935
- "bg-(--chart-brand) h-full",
936
- size === "lg" ? "rounded-4" : size === "md" ? "rounded-2" : "rounded-[1px]"
937
- ),
938
- style: { width: `${clamped}%` }
939
- }
940
- ) }),
941
- showHint && hint && /* @__PURE__ */ jsx15("p", { className: "caption text-(--color-secondary)", children: hint })
942
- ]
960
+ label,
961
+ labelRight: showProgressLabel && label ? /* @__PURE__ */ jsx16("span", { className: "footnote text-(--color-secondary)", children: percentageLabel }) : void 0,
962
+ hint,
963
+ hideHint,
964
+ status,
965
+ disabled,
966
+ className: cn("w-full", className),
967
+ children: /* @__PURE__ */ jsx16(
968
+ "div",
969
+ {
970
+ ref,
971
+ role: "progressbar",
972
+ "aria-valuenow": clamped,
973
+ "aria-valuemin": 0,
974
+ "aria-valuemax": 100,
975
+ "aria-label": label,
976
+ ...rest,
977
+ children: /* @__PURE__ */ jsx16(
978
+ "div",
979
+ {
980
+ className: cn(
981
+ "w-full bg-(--chart-mono) overflow-hidden",
982
+ barHeightClasses,
983
+ disabled && "opacity-50"
984
+ ),
985
+ children: /* @__PURE__ */ jsx16(
986
+ "div",
987
+ {
988
+ className: cn(
989
+ "bg-(--chart-brand) h-full",
990
+ size === "lg" ? "rounded-4" : size === "md" ? "rounded-2" : "rounded-[1px]"
991
+ ),
992
+ style: { width: `${clamped}%` }
993
+ }
994
+ )
995
+ }
996
+ )
997
+ }
998
+ )
943
999
  }
944
1000
  );
945
1001
  }
@@ -947,7 +1003,7 @@ var Progress = React13.forwardRef(
947
1003
  Progress.displayName = "Progress";
948
1004
 
949
1005
  // src/components/Content/StatusAvatar.tsx
950
- import * as React14 from "react";
1006
+ import * as React15 from "react";
951
1007
  import { cva as cva10 } from "class-variance-authority";
952
1008
  import {
953
1009
  BookmarkCheckIcon,
@@ -956,7 +1012,7 @@ import {
956
1012
  PlusIcon,
957
1013
  StarIcon
958
1014
  } from "@bubo-squared/icons";
959
- import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
1015
+ import { jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
960
1016
  var iconStatusVariants = cva10(
961
1017
  "inline-flex size-5 items-center justify-center rounded-full border-1 border-(--color-primary-inverse) p-1",
962
1018
  {
@@ -981,11 +1037,11 @@ var presenceDotByVariant = {
981
1037
  away: "bg-(--background-warning) border-1 border-(--color-primary-inverse)",
982
1038
  busy: "bg-(--background-error) border-1 border-(--color-primary-inverse)"
983
1039
  };
984
- var StatusAvatar = React14.forwardRef((props, ref) => {
1040
+ var StatusAvatar = React15.forwardRef((props, ref) => {
985
1041
  const { variant = "verified", className, ...rest } = props;
986
1042
  if (variant === "offline" || variant === "online" || variant === "away" || variant === "busy") {
987
1043
  const dotClasses = presenceDotByVariant[variant];
988
- return /* @__PURE__ */ jsx16(
1044
+ return /* @__PURE__ */ jsx17(
989
1045
  "div",
990
1046
  {
991
1047
  ref,
@@ -994,7 +1050,7 @@ var StatusAvatar = React14.forwardRef((props, ref) => {
994
1050
  className
995
1051
  ),
996
1052
  ...rest,
997
- children: /* @__PURE__ */ jsx16("div", { className: cn(dotClasses, "size-3.5 rounded-full") })
1053
+ children: /* @__PURE__ */ jsx17("div", { className: cn(dotClasses, "size-3.5 rounded-full") })
998
1054
  }
999
1055
  );
1000
1056
  }
@@ -1006,11 +1062,11 @@ var StatusAvatar = React14.forwardRef((props, ref) => {
1006
1062
  className: cn(iconStatusVariants({ variant: iconVariant }), className),
1007
1063
  ...rest,
1008
1064
  children: [
1009
- iconVariant === "verified" && /* @__PURE__ */ jsx16(CheckIcon, { className: "size-3 text-button-white" }),
1010
- iconVariant === "bookmark" && /* @__PURE__ */ jsx16(BookmarkCheckIcon, { className: "size-3 text-button-white" }),
1011
- iconVariant === "favorite" && /* @__PURE__ */ jsx16(StarIcon, { className: "size-3 text-button-white" }),
1012
- iconVariant === "add" && /* @__PURE__ */ jsx16(PlusIcon, { className: "size-3 text-button-white" }),
1013
- iconVariant === "remove" && /* @__PURE__ */ jsx16(CrossIcon, { className: "size-3 text-button-white" })
1065
+ iconVariant === "verified" && /* @__PURE__ */ jsx17(CheckIcon, { className: "size-3 text-button-white" }),
1066
+ iconVariant === "bookmark" && /* @__PURE__ */ jsx17(BookmarkCheckIcon, { className: "size-3 text-button-white" }),
1067
+ iconVariant === "favorite" && /* @__PURE__ */ jsx17(StarIcon, { className: "size-3 text-button-white" }),
1068
+ iconVariant === "add" && /* @__PURE__ */ jsx17(PlusIcon, { className: "size-3 text-button-white" }),
1069
+ iconVariant === "remove" && /* @__PURE__ */ jsx17(CrossIcon, { className: "size-3 text-button-white" })
1014
1070
  ]
1015
1071
  }
1016
1072
  );
@@ -1018,10 +1074,10 @@ var StatusAvatar = React14.forwardRef((props, ref) => {
1018
1074
  StatusAvatar.displayName = "StatusAvatar";
1019
1075
 
1020
1076
  // src/components/Content/Tag.tsx
1021
- import * as React15 from "react";
1077
+ import * as React16 from "react";
1022
1078
  import { Slot as Slot6 } from "@radix-ui/react-slot";
1023
1079
  import { cva as cva11 } from "class-variance-authority";
1024
- import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
1080
+ import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
1025
1081
  var tagVariants = cva11(
1026
1082
  "inline-flex flex-row items-center justify-center rounded-6 gap-2 px-3 overflow-hidden border-1 border-(--border-secondary) bg-(--background-neutral) hover:border-(--border-secondary-hover) focus:border-(--border-brand) focus-ring-primary ",
1027
1083
  {
@@ -1038,7 +1094,7 @@ var tagVariants = cva11(
1038
1094
  );
1039
1095
  var disabledTag = "pointer-events-none border-(--border-secondary-disabled) bg-(--background-neutral-disabled) text-primary-disabled";
1040
1096
  var iconClasses = "flex items-center justify-center w-5 h-5 [&>*]:w-5 [&>*]:h-5 shrink-0 text-primary";
1041
- var Tag = React15.forwardRef(
1097
+ var Tag = React16.forwardRef(
1042
1098
  (props, ref) => {
1043
1099
  const {
1044
1100
  size = "sm",
@@ -1050,8 +1106,8 @@ var Tag = React15.forwardRef(
1050
1106
  ...rest
1051
1107
  } = props;
1052
1108
  const Comp = asChild ? Slot6 : "div";
1053
- const leading = props.leadingIcon && React15.isValidElement(props.leadingIcon) ? React15.cloneElement(props.leadingIcon, { disabled, ...props.leadingIcon.props }) : null;
1054
- const trailing = props.trailingIcon && React15.isValidElement(props.trailingIcon) ? React15.cloneElement(props.trailingIcon, { disabled, ...props.trailingIcon.props }) : null;
1109
+ const leading = props.leadingIcon && React16.isValidElement(props.leadingIcon) ? React16.cloneElement(props.leadingIcon, { disabled, ...props.leadingIcon.props }) : null;
1110
+ const trailing = props.trailingIcon && React16.isValidElement(props.trailingIcon) ? React16.cloneElement(props.trailingIcon, { disabled, ...props.trailingIcon.props }) : null;
1055
1111
  return /* @__PURE__ */ jsxs10(
1056
1112
  Comp,
1057
1113
  {
@@ -1059,13 +1115,13 @@ var Tag = React15.forwardRef(
1059
1115
  ref,
1060
1116
  ...rest,
1061
1117
  children: [
1062
- leading && /* @__PURE__ */ jsx17("div", { className: iconClasses, children: leading }),
1118
+ leading && /* @__PURE__ */ jsx18("div", { className: iconClasses, children: leading }),
1063
1119
  value ? /* @__PURE__ */ jsxs10("div", { className: "flex flex-row gap-1 items-center", children: [
1064
- /* @__PURE__ */ jsx17("span", { className: "text-primary paragraph-lg mb-0! cursor-default font-normal", children: label }),
1065
- /* @__PURE__ */ jsx17("span", { className: "text-primary paragraph-lg mb-0! cursor-default font-normal", children: ":" }),
1066
- /* @__PURE__ */ jsx17("span", { className: "text-primary paragraph-lg-medium mb-0! cursor-default font-medium", children: value })
1067
- ] }) : /* @__PURE__ */ jsx17("span", { className: "text-primary paragraph-lg mb-0! cursor-default", children: label }),
1068
- trailing && /* @__PURE__ */ jsx17("div", { className: iconClasses, children: trailing })
1120
+ /* @__PURE__ */ jsx18("span", { className: "text-primary paragraph-lg mb-0! cursor-default font-normal", children: label }),
1121
+ /* @__PURE__ */ jsx18("span", { className: "text-primary paragraph-lg mb-0! cursor-default font-normal", children: ":" }),
1122
+ /* @__PURE__ */ jsx18("span", { className: "text-primary paragraph-lg-medium mb-0! cursor-default font-medium", children: value })
1123
+ ] }) : /* @__PURE__ */ jsx18("span", { className: "text-primary paragraph-lg mb-0! cursor-default", children: label }),
1124
+ trailing && /* @__PURE__ */ jsx18("div", { className: iconClasses, children: trailing })
1069
1125
  ]
1070
1126
  }
1071
1127
  );
@@ -1077,10 +1133,10 @@ import "react";
1077
1133
  import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
1078
1134
  import { CheckIcon as CheckIcon2 } from "@bubo-squared/icons";
1079
1135
  import { MinusIcon } from "@bubo-squared/icons";
1080
- import { jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
1136
+ import { jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
1081
1137
  function Checkbox({ label, className, ...props }) {
1082
1138
  return /* @__PURE__ */ jsxs11("label", { className: "inline-flex items-center gap-(--space-12) cursor-pointer select-none", children: [
1083
- /* @__PURE__ */ jsx18(
1139
+ /* @__PURE__ */ jsx19(
1084
1140
  CheckboxPrimitive.Root,
1085
1141
  {
1086
1142
  className: cn(
@@ -1097,21 +1153,20 @@ function Checkbox({ label, className, ...props }) {
1097
1153
  ),
1098
1154
  ...props,
1099
1155
  children: /* @__PURE__ */ jsxs11(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: [
1100
- /* @__PURE__ */ jsx18(CheckIcon2, { className: "h-5 w-5 hidden group-data-[state=checked]:block" }),
1101
- /* @__PURE__ */ jsx18(MinusIcon, { className: "h-5 w-5 hidden group-data-[state=indeterminate]:block" })
1156
+ /* @__PURE__ */ jsx19(CheckIcon2, { className: "h-5 w-5 hidden group-data-[state=checked]:block" }),
1157
+ /* @__PURE__ */ jsx19(MinusIcon, { className: "h-5 w-5 hidden group-data-[state=indeterminate]:block" })
1102
1158
  ] })
1103
1159
  }
1104
1160
  ),
1105
- label && /* @__PURE__ */ jsx18("span", { className: "paragraph-md-medium text-primary", children: label })
1161
+ label && /* @__PURE__ */ jsx19("span", { className: "paragraph-md-medium text-primary", children: label })
1106
1162
  ] });
1107
1163
  }
1108
1164
 
1109
1165
  // src/components/Inputs/Dropdown.tsx
1110
- import * as React17 from "react";
1166
+ import * as React18 from "react";
1111
1167
  import { cva as cva12 } from "class-variance-authority";
1112
1168
  import { ChevronDownIcon } from "@bubo-squared/icons";
1113
- import { jsx as jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
1114
- var dropdownWrapperBase = "flex flex-col gap-2 items-start";
1169
+ import { jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
1115
1170
  var dropdownTriggerVariants = cva12(
1116
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",
1117
1172
  {
@@ -1173,10 +1228,29 @@ var dropdownIconVariants = cva12("flex items-center justify-center shrink-0", {
1173
1228
  disabled: false
1174
1229
  }
1175
1230
  });
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) "
1248
+ }
1249
+ }
1250
+ });
1176
1251
  var Dropdown = (props) => {
1177
1252
  const {
1178
1253
  label = "Field Label",
1179
- showLabel = true,
1180
1254
  hint = "This is a hint text to help user.",
1181
1255
  hideHint = false,
1182
1256
  placeholder = "Placeholder text",
@@ -1191,12 +1265,12 @@ var Dropdown = (props) => {
1191
1265
  showMenu,
1192
1266
  ...buttonProps
1193
1267
  } = props;
1194
- const dropdownRef = React17.useRef(null);
1268
+ const dropdownRef = React18.useRef(null);
1195
1269
  const isControlled = value !== void 0;
1196
- const [internalValue, setInternalValue] = React17.useState(
1270
+ const [internalValue, setInternalValue] = React18.useState(
1197
1271
  defaultValue
1198
1272
  );
1199
- const [open, setOpen] = React17.useState(false);
1273
+ const [open, setOpen] = React18.useState(false);
1200
1274
  const currentValue = isControlled ? value : internalValue;
1201
1275
  const selectedOption = options.find((opt) => opt.value === currentValue);
1202
1276
  const hasValue = !!selectedOption;
@@ -1216,10 +1290,7 @@ var Dropdown = (props) => {
1216
1290
  setOpen(false);
1217
1291
  }
1218
1292
  };
1219
- const triggerId = React17.useId();
1220
- const labelId = `${triggerId}-label`;
1221
- const hintId = `${triggerId}-hint`;
1222
- React17.useEffect(() => {
1293
+ React18.useEffect(() => {
1223
1294
  if (showMenu !== void 0) return;
1224
1295
  const handleClickOutside = (event) => {
1225
1296
  if (!dropdownRef.current) return;
@@ -1232,144 +1303,97 @@ var Dropdown = (props) => {
1232
1303
  document.removeEventListener("mousedown", handleClickOutside);
1233
1304
  };
1234
1305
  }, [showMenu]);
1235
- return /* @__PURE__ */ jsxs12("div", { ref: dropdownRef, className: dropdownWrapperBase, children: [
1236
- showLabel && /* @__PURE__ */ jsx19(
1237
- "label",
1238
- {
1239
- htmlFor: triggerId,
1240
- id: labelId,
1241
- className: cn(
1242
- "paragraph-sm",
1243
- disabled ? "text-primary-disabled" : "text-primary"
1306
+ return /* @__PURE__ */ jsx20("div", { ref: dropdownRef, children: /* @__PURE__ */ jsxs12(
1307
+ Field,
1308
+ {
1309
+ label,
1310
+ hint,
1311
+ hideHint,
1312
+ status,
1313
+ 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
+ }
1244
1343
  ),
1245
- children: label
1246
- }
1247
- ),
1248
- /* @__PURE__ */ jsxs12("div", { className: "relative w-full", children: [
1249
- /* @__PURE__ */ jsxs12(
1250
- "button",
1251
- {
1252
- type: "button",
1253
- id: triggerId,
1254
- "aria-haspopup": "listbox",
1255
- "aria-expanded": isOpen,
1256
- "aria-labelledby": showLabel ? labelId : void 0,
1257
- "aria-describedby": !hideHint ? hintId : void 0,
1258
- disabled,
1259
- className: cn(
1260
- dropdownTriggerVariants({ size, status }),
1261
- className
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
+ }
1262
1364
  ),
1263
- onClick: handleToggle,
1264
- "data-open": isOpen || void 0,
1265
- ...buttonProps,
1266
- children: [
1267
- /* @__PURE__ */ jsx19(
1268
- "span",
1365
+ options.map((opt) => {
1366
+ const selected = opt.value === currentValue;
1367
+ return /* @__PURE__ */ jsx20(
1368
+ "li",
1269
1369
  {
1270
1370
  className: cn(
1271
- dropdownTextVariants({
1272
- size,
1273
- hasValue,
1274
- disabled: !!disabled
1275
- })
1371
+ "bg-(--background-neutral) border-b border-(--border-secondary) last:border-b-0 ",
1372
+ selected && "bg-(--background-secondary)",
1373
+ dropdownItemVariants({ size })
1276
1374
  ),
1277
- children: hasValue ? selectedOption?.label : placeholder
1278
- }
1279
- ),
1280
- /* @__PURE__ */ jsx19(
1281
- "span",
1282
- {
1283
- className: cn(
1284
- dropdownIconVariants({ size, disabled: !!disabled })
1285
- ),
1286
- children: /* @__PURE__ */ jsx19(ChevronDownIcon, {})
1287
- }
1288
- )
1289
- ]
1290
- }
1291
- ),
1292
- isOpen && options.length > 0 && /* @__PURE__ */ jsx19("div", { className: "absolute z-10 mt-1 w-full min-w-343 rounded-4 border border-(--border-primary-hover) bg-(--background-neutral) shadow-card-md flex overflow-y-scroll dropdown-scrollbar max-h-79", children: /* @__PURE__ */ jsx19("ul", { role: "listbox", className: "flex flex-1 flex-col", children: options.map((opt) => {
1293
- const selected = opt.value === currentValue;
1294
- return /* @__PURE__ */ jsx19(
1295
- "li",
1296
- {
1297
- className: cn(
1298
- "bg-(--background-neutral) border-b border-(--border-secondary) last:border-b-0",
1299
- selected && "bg-(--background-secondary)"
1300
- ),
1301
- children: /* @__PURE__ */ jsx19(
1302
- "button",
1303
- {
1304
- type: "button",
1305
- className: "flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) py-(--space-8) text-left paragraph-lg text-primary hover:bg-(--background-secondary)",
1306
- role: "option",
1307
- "aria-selected": selected,
1308
- onClick: () => handleSelect(opt.value),
1309
- children: opt.label
1310
- }
1311
- )
1312
- },
1313
- opt.value
1314
- );
1315
- }) }) })
1316
- ] }),
1317
- !hideHint && /* @__PURE__ */ jsx19(
1318
- "p",
1319
- {
1320
- id: hintId,
1321
- className: cn(
1322
- "caption",
1323
- disabled ? "text-primary-disabled" : "text-(--color-secondary)"
1324
- ),
1325
- children: hint
1326
- }
1327
- )
1328
- ] });
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
+ ]
1392
+ }
1393
+ ) });
1329
1394
  };
1330
1395
  Dropdown.displayName = "Dropdown";
1331
1396
 
1332
- // src/components/Inputs/Field.tsx
1333
- import * as React18 from "react";
1334
- import { jsx as jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
1335
- var fieldBase = "flex flex-col gap-2 items-start";
1336
- var Field = (props) => {
1337
- const {
1338
- label,
1339
- hint,
1340
- hideHint,
1341
- status = "default",
1342
- disabled,
1343
- className,
1344
- children
1345
- } = props;
1346
- const fieldId = React18.useId();
1347
- const labelId = label ? `${fieldId}-label` : void 0;
1348
- const hintId = hint ? `${fieldId}-hint` : void 0;
1349
- const hintColorClass = disabled ? "text-primary-disabled" : status === "success" ? "text-(--color-success)" : status === "error" ? "text-(--color-error)" : "text-(--color-secondary)";
1350
- const labelColorClass = disabled ? "text-primary-disabled" : "text-primary";
1351
- return /* @__PURE__ */ jsxs13("div", { className: cn(fieldBase, className), children: [
1352
- label && /* @__PURE__ */ jsx20(
1353
- "label",
1354
- {
1355
- id: labelId,
1356
- className: cn("paragraph-sm", labelColorClass),
1357
- children: label
1358
- }
1359
- ),
1360
- /* @__PURE__ */ jsx20("div", { className: "relative w-full", children }),
1361
- !hideHint && /* @__PURE__ */ jsx20(
1362
- "p",
1363
- {
1364
- id: hint ? hintId : void 0,
1365
- className: cn("caption", hint ? hintColorClass : "invisible"),
1366
- children: hint || "\xA0"
1367
- }
1368
- )
1369
- ] });
1370
- };
1371
- Field.displayName = "Field";
1372
-
1373
1397
  // src/components/Inputs/PasswordInput.tsx
1374
1398
  import * as React21 from "react";
1375
1399
  import { cva as cva14 } from "class-variance-authority";
@@ -1448,7 +1472,8 @@ var InputShell = React20.forwardRef(
1448
1472
  InputShell.displayName = "InputShell";
1449
1473
 
1450
1474
  // src/components/Inputs/PasswordInput.tsx
1451
- import { jsx as jsx23, jsxs as jsxs14 } from "react/jsx-runtime";
1475
+ import { EyeIcon, EyeSlashIcon } from "@bubo-squared/icons";
1476
+ import { jsx as jsx23, jsxs as jsxs13 } from "react/jsx-runtime";
1452
1477
  var passwordTextVariants = cva14("truncate", {
1453
1478
  variants: {
1454
1479
  size: {
@@ -1513,13 +1538,10 @@ var PasswordInput = (props) => {
1513
1538
  placeholder = "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
1514
1539
  size = "lg",
1515
1540
  status = "default",
1516
- variant = "icons",
1541
+ variant = "icon",
1517
1542
  disabled,
1518
1543
  className,
1519
1544
  leadingIcon,
1520
- trailingIcon,
1521
- actionLabel = "Action",
1522
- onActionClick,
1523
1545
  value,
1524
1546
  defaultValue,
1525
1547
  onChange,
@@ -1529,8 +1551,10 @@ var PasswordInput = (props) => {
1529
1551
  const [internalValue, setInternalValue] = React21.useState(
1530
1552
  defaultValue ?? ""
1531
1553
  );
1554
+ const [isRevealed, setIsRevealed] = React21.useState(false);
1532
1555
  const currentValue = (isControlled ? value : internalValue) ?? "";
1533
1556
  const inputRef = React21.useRef(null);
1557
+ const showLeadingIcon = !!leadingIcon;
1534
1558
  const handleContainerClick = () => {
1535
1559
  if (disabled) return;
1536
1560
  inputRef.current?.focus();
@@ -1541,9 +1565,6 @@ var PasswordInput = (props) => {
1541
1565
  }
1542
1566
  onChange?.(event);
1543
1567
  };
1544
- const showLeadingIcon = variant === "icons" && !!leadingIcon;
1545
- const showTrailingIcon = variant === "icons" && !!trailingIcon;
1546
- const showAction = variant === "action" && !!actionLabel;
1547
1568
  return /* @__PURE__ */ jsx23(
1548
1569
  Field,
1549
1570
  {
@@ -1552,7 +1573,7 @@ var PasswordInput = (props) => {
1552
1573
  hideHint,
1553
1574
  status,
1554
1575
  disabled,
1555
- children: /* @__PURE__ */ jsxs14(
1576
+ children: /* @__PURE__ */ jsxs13(
1556
1577
  InputShell,
1557
1578
  {
1558
1579
  size,
@@ -1574,37 +1595,33 @@ var PasswordInput = (props) => {
1574
1595
  Input,
1575
1596
  {
1576
1597
  ref: inputRef,
1577
- type: "password",
1598
+ type: isRevealed ? "text" : "password",
1578
1599
  disabled: disabled ?? void 0,
1579
1600
  placeholder,
1580
1601
  value: isControlled ? value : currentValue,
1581
1602
  defaultValue: isControlled ? void 0 : defaultValue,
1582
1603
  onChange: handleChange,
1583
1604
  variant: "bare",
1584
- className: cn(
1585
- passwordTextVariants({ size, disabled: !!disabled })
1586
- ),
1605
+ className: cn(passwordTextVariants({ size, disabled: !!disabled })),
1587
1606
  ...inputProps
1588
1607
  }
1589
1608
  ),
1590
- showTrailingIcon && /* @__PURE__ */ jsx23(
1591
- "span",
1592
- {
1593
- className: cn(
1594
- iconWrapperVariants({ size, disabled: !!disabled })
1595
- ),
1596
- children: trailingIcon
1597
- }
1598
- ),
1599
- showAction && /* @__PURE__ */ jsx23(
1609
+ /* @__PURE__ */ jsx23(
1600
1610
  "button",
1601
1611
  {
1602
1612
  type: "button",
1613
+ disabled: !!disabled,
1614
+ onClick: () => {
1615
+ if (disabled) return;
1616
+ setIsRevealed((prev) => !prev);
1617
+ inputRef.current?.focus();
1618
+ },
1619
+ "aria-label": isRevealed ? "Hide password" : "Show password",
1603
1620
  className: cn(
1604
- actionButtonVariants({ size, disabled: !!disabled })
1621
+ "cursor-pointer",
1622
+ variant === "text" ? actionButtonVariants({ size, disabled: !!disabled }) : iconWrapperVariants({ size, disabled: !!disabled })
1605
1623
  ),
1606
- onClick: disabled ? void 0 : onActionClick,
1607
- children: actionLabel
1624
+ children: variant === "icon" ? isRevealed ? /* @__PURE__ */ jsx23(EyeSlashIcon, {}) : /* @__PURE__ */ jsx23(EyeIcon, {}) : isRevealed ? "Hide" : "Show"
1608
1625
  }
1609
1626
  )
1610
1627
  ]
@@ -1681,10 +1698,10 @@ import { SearchIcon } from "@bubo-squared/icons";
1681
1698
  // src/components/ui/dialog.tsx
1682
1699
  import "react";
1683
1700
  import * as DialogPrimitive from "@radix-ui/react-dialog";
1684
- import { jsx as jsx25, jsxs as jsxs15 } from "react/jsx-runtime";
1701
+ import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
1685
1702
 
1686
1703
  // src/components/ui/command.tsx
1687
- import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
1704
+ import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
1688
1705
  function Command({
1689
1706
  className,
1690
1707
  ...props
@@ -1705,7 +1722,7 @@ function CommandInput({
1705
1722
  className,
1706
1723
  ...props
1707
1724
  }) {
1708
- return /* @__PURE__ */ jsxs16(
1725
+ return /* @__PURE__ */ jsxs15(
1709
1726
  "div",
1710
1727
  {
1711
1728
  "data-slot": "command-input-wrapper",
@@ -1826,13 +1843,13 @@ function PopoverContent({
1826
1843
  // src/components/ui/scroll-area.tsx
1827
1844
  import "react";
1828
1845
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
1829
- import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
1846
+ import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
1830
1847
  function ScrollArea({
1831
1848
  className,
1832
1849
  children,
1833
1850
  ...props
1834
1851
  }) {
1835
- return /* @__PURE__ */ jsxs17(
1852
+ return /* @__PURE__ */ jsxs16(
1836
1853
  ScrollAreaPrimitive.Root,
1837
1854
  {
1838
1855
  "data-slot": "scroll-area",
@@ -1884,7 +1901,7 @@ function ScrollBar({
1884
1901
 
1885
1902
  // src/components/Inputs/PhoneInput.tsx
1886
1903
  import { cva as cva16 } from "class-variance-authority";
1887
- import { jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
1904
+ import { jsx as jsx29, jsxs as jsxs17 } from "react/jsx-runtime";
1888
1905
  var inputBase = "h-full rounded-4 border-(--border-secondary) bg-(--background-primary) hover:border-(--border-secondary-hover)";
1889
1906
  var sizeBase = cva16(
1890
1907
  "flex w-full",
@@ -1992,7 +2009,7 @@ var CountrySelect = ({
1992
2009
  const scrollAreaRef = React27.useRef(null);
1993
2010
  const [searchValue, setSearchValue] = React27.useState("");
1994
2011
  const [isOpen, setIsOpen] = React27.useState(false);
1995
- return /* @__PURE__ */ jsxs18(
2012
+ return /* @__PURE__ */ jsxs17(
1996
2013
  Popover,
1997
2014
  {
1998
2015
  open: isOpen,
@@ -2002,7 +2019,7 @@ var CountrySelect = ({
2002
2019
  open && setSearchValue("");
2003
2020
  },
2004
2021
  children: [
2005
- /* @__PURE__ */ jsx29(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs18(
2022
+ /* @__PURE__ */ jsx29(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs17(
2006
2023
  Button2,
2007
2024
  {
2008
2025
  type: "button",
@@ -2034,7 +2051,7 @@ var CountrySelect = ({
2034
2051
  {
2035
2052
  align: "start",
2036
2053
  className: "p-0 bg-(--background-primary) shadow-card-md rounded-4 border-none outline-1 outline-solid outline-(--border-secondary-hover) **:data-[slot='command-input-wrapper']:border-b-(--border-secondary)",
2037
- children: /* @__PURE__ */ jsxs18(Command, { children: [
2054
+ children: /* @__PURE__ */ jsxs17(Command, { children: [
2038
2055
  /* @__PURE__ */ jsx29(
2039
2056
  CommandInput,
2040
2057
  {
@@ -2055,7 +2072,7 @@ var CountrySelect = ({
2055
2072
  placeholder: "Search country..."
2056
2073
  }
2057
2074
  ),
2058
- /* @__PURE__ */ jsx29(CommandList, { children: /* @__PURE__ */ jsxs18(ScrollArea, { ref: scrollAreaRef, className: "h-72", children: [
2075
+ /* @__PURE__ */ jsx29(CommandList, { children: /* @__PURE__ */ jsxs17(ScrollArea, { ref: scrollAreaRef, className: "h-72", children: [
2059
2076
  /* @__PURE__ */ jsx29(CommandEmpty, { children: "No country found." }),
2060
2077
  /* @__PURE__ */ jsx29(CommandGroup, { className: "[&>div>div]:pl-4 [&>div>div]:pr-2 [&>div>div]:py-2 [&>div>div]:border-b [&>div>div]:border-b-(--border-secondary) [&>div>div]:cursor-pointer [&>div>div]:hover:bg-(--background-primary-hover) [&>div>div]:text-primary [&>div>div]:hover:text-primary p-0 pr-4", children: countryList.map(
2061
2078
  ({ value, label }) => value ? /* @__PURE__ */ jsx29(
@@ -2090,7 +2107,7 @@ var CountrySelectOption = (props) => {
2090
2107
  onChange(country);
2091
2108
  onSelectComplete();
2092
2109
  };
2093
- return /* @__PURE__ */ jsxs18(
2110
+ return /* @__PURE__ */ jsxs17(
2094
2111
  CommandItem,
2095
2112
  {
2096
2113
  className: "gap-2 data-[selected=true]:text-primary",
@@ -2117,7 +2134,7 @@ var FlagComponent = ({ country, countryName }) => {
2117
2134
  // src/components/Inputs/RadioGroup.tsx
2118
2135
  import * as React28 from "react";
2119
2136
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
2120
- import { jsx as jsx30, jsxs as jsxs19 } from "react/jsx-runtime";
2137
+ import { jsx as jsx30, jsxs as jsxs18 } from "react/jsx-runtime";
2121
2138
  var wrapperBase = "flex flex-col gap-2 items-start";
2122
2139
  var RadioGroup = ({
2123
2140
  label,
@@ -2138,7 +2155,7 @@ var RadioGroup = ({
2138
2155
  onValueChange?.(next);
2139
2156
  };
2140
2157
  const isHorizontal = orientation === "horizontal";
2141
- return /* @__PURE__ */ jsxs19("div", { className: wrapperBase, children: [
2158
+ return /* @__PURE__ */ jsxs18("div", { className: wrapperBase, children: [
2142
2159
  label && /* @__PURE__ */ jsx30(
2143
2160
  "span",
2144
2161
  {
@@ -2168,7 +2185,7 @@ var RadioGroup = ({
2168
2185
  value: option.value,
2169
2186
  disabled: disabled || option.disabled,
2170
2187
  asChild: true,
2171
- children: /* @__PURE__ */ jsxs19(
2188
+ children: /* @__PURE__ */ jsxs18(
2172
2189
  "button",
2173
2190
  {
2174
2191
  type: "button",
@@ -2255,7 +2272,7 @@ var RadioGroup = ({
2255
2272
  import * as React29 from "react";
2256
2273
  import { cva as cva17 } from "class-variance-authority";
2257
2274
  import { SearchIcon as SearchIcon2 } from "@bubo-squared/icons";
2258
- import { jsx as jsx31, jsxs as jsxs20 } from "react/jsx-runtime";
2275
+ import { jsx as jsx31, jsxs as jsxs19 } from "react/jsx-runtime";
2259
2276
  var searchTextVariants = cva17("truncate", {
2260
2277
  variants: {
2261
2278
  size: {
@@ -2302,7 +2319,7 @@ var SearchInput = (props) => {
2302
2319
  inputRef.current?.focus();
2303
2320
  };
2304
2321
  const showTrailingIcon = !!trailingIcon;
2305
- return /* @__PURE__ */ jsx31("div", { className: "flex flex-col gap-2 items-start", children: /* @__PURE__ */ jsx31("div", { className: "relative w-full", children: /* @__PURE__ */ jsxs20(
2322
+ return /* @__PURE__ */ jsx31("div", { className: "flex flex-col gap-2 items-start", children: /* @__PURE__ */ jsx31("div", { className: "relative w-full", children: /* @__PURE__ */ jsxs19(
2306
2323
  InputShell,
2307
2324
  {
2308
2325
  size,
@@ -2335,7 +2352,7 @@ SearchInput.displayName = "SearchInput";
2335
2352
 
2336
2353
  // src/components/Inputs/Slider.tsx
2337
2354
  import * as React30 from "react";
2338
- import { jsx as jsx32, jsxs as jsxs21 } from "react/jsx-runtime";
2355
+ import { jsx as jsx32, jsxs as jsxs20 } from "react/jsx-runtime";
2339
2356
  var wrapperBase2 = "flex flex-col gap-2 items-start";
2340
2357
  var isRangeProps = (props) => {
2341
2358
  return Array.isArray(props.value) || Array.isArray(props.defaultValue);
@@ -2606,7 +2623,7 @@ var Slider = (props) => {
2606
2623
  marginBottom: isTooltipAbove ? 8 : void 0,
2607
2624
  marginTop: isTooltipAbove ? void 0 : 8
2608
2625
  },
2609
- children: /* @__PURE__ */ jsxs21(
2626
+ children: /* @__PURE__ */ jsxs20(
2610
2627
  "div",
2611
2628
  {
2612
2629
  className: cn("relative rounded-4 shadow-card-md px-(--space-8) py-(--space-4) bg-(--background-tooltip)"),
@@ -2684,8 +2701,8 @@ var Slider = (props) => {
2684
2701
  {
2685
2702
  className: wrapperBase2,
2686
2703
  style: { marginInline: `${thumbRadius}px` },
2687
- children: /* @__PURE__ */ jsxs21("div", { className: cn("w-full flex flex-col gap-1", className), children: [
2688
- /* @__PURE__ */ jsxs21("div", { className: "relative w-full", children: [
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: [
2689
2706
  showTooltip && primary !== void 0 && renderTooltipBubble(
2690
2707
  "primary",
2691
2708
  primaryPercent,
@@ -2698,7 +2715,7 @@ var Slider = (props) => {
2698
2715
  formatDisplayValue(secondary),
2699
2716
  hoveredThumbIndex === 1 || draggingThumbIndex === 1
2700
2717
  ),
2701
- /* @__PURE__ */ jsxs21(
2718
+ /* @__PURE__ */ jsxs20(
2702
2719
  "div",
2703
2720
  {
2704
2721
  className: cn(
@@ -2747,7 +2764,7 @@ Slider.displayName = "Slider";
2747
2764
  // src/components/Inputs/TextArea.tsx
2748
2765
  import * as React31 from "react";
2749
2766
  import { MaximizeIcon } from "@bubo-squared/icons";
2750
- import { jsx as jsx33, jsxs as jsxs22 } from "react/jsx-runtime";
2767
+ import { jsx as jsx33, jsxs as jsxs21 } from "react/jsx-runtime";
2751
2768
  var wrapperBase3 = "flex flex-col gap-2 items-start w-full";
2752
2769
  var TextArea = (props) => {
2753
2770
  const {
@@ -2829,7 +2846,7 @@ var TextArea = (props) => {
2829
2846
  window.addEventListener("pointermove", handlePointerMove);
2830
2847
  window.addEventListener("pointerup", handlePointerUp);
2831
2848
  };
2832
- return /* @__PURE__ */ jsxs22("div", { className: wrapperBase3, children: [
2849
+ return /* @__PURE__ */ jsxs21("div", { className: wrapperBase3, children: [
2833
2850
  label && /* @__PURE__ */ jsx33(
2834
2851
  "label",
2835
2852
  {
@@ -2842,7 +2859,7 @@ var TextArea = (props) => {
2842
2859
  children: label
2843
2860
  }
2844
2861
  ),
2845
- /* @__PURE__ */ jsx33("div", { className: "relative w-full", children: /* @__PURE__ */ jsxs22(
2862
+ /* @__PURE__ */ jsx33("div", { className: "relative w-full", children: /* @__PURE__ */ jsxs21(
2846
2863
  "div",
2847
2864
  {
2848
2865
  className: cn(
@@ -2882,7 +2899,7 @@ var TextArea = (props) => {
2882
2899
  ...textareaProps
2883
2900
  }
2884
2901
  ),
2885
- showCharacterLimit && /* @__PURE__ */ jsxs22(
2902
+ showCharacterLimit && /* @__PURE__ */ jsxs21(
2886
2903
  "span",
2887
2904
  {
2888
2905
  className: cn(
@@ -2931,7 +2948,7 @@ TextArea.displayName = "TextArea";
2931
2948
  // src/components/Inputs/TextInput.tsx
2932
2949
  import * as React32 from "react";
2933
2950
  import { cva as cva18 } from "class-variance-authority";
2934
- import { jsx as jsx34, jsxs as jsxs23 } from "react/jsx-runtime";
2951
+ import { jsx as jsx34, jsxs as jsxs22 } from "react/jsx-runtime";
2935
2952
  var inputTextVariants2 = cva18("truncate", {
2936
2953
  variants: {
2937
2954
  size: {
@@ -3007,7 +3024,7 @@ var TextInput = (props) => {
3007
3024
  hideHint,
3008
3025
  status,
3009
3026
  disabled,
3010
- children: /* @__PURE__ */ jsxs23(
3027
+ children: /* @__PURE__ */ jsxs22(
3011
3028
  InputShell,
3012
3029
  {
3013
3030
  size,
@@ -3062,10 +3079,10 @@ TextInput.displayName = "TextInput";
3062
3079
 
3063
3080
  // src/components/Inputs/Toggle.tsx
3064
3081
  import "react";
3065
- import { jsx as jsx35, jsxs as jsxs24 } from "react/jsx-runtime";
3082
+ import { jsx as jsx35, jsxs as jsxs23 } from "react/jsx-runtime";
3066
3083
  var Toggle = (props) => {
3067
3084
  const { label, className, disabled, ...inputProps } = props;
3068
- return /* @__PURE__ */ jsxs24(
3085
+ return /* @__PURE__ */ jsxs23(
3069
3086
  "label",
3070
3087
  {
3071
3088
  className: cn(
@@ -3073,7 +3090,7 @@ var Toggle = (props) => {
3073
3090
  disabled ? "cursor-default" : "cursor-pointer"
3074
3091
  ),
3075
3092
  children: [
3076
- /* @__PURE__ */ jsxs24("span", { className: "relative inline-flex items-center", children: [
3093
+ /* @__PURE__ */ jsxs23("span", { className: "relative inline-flex items-center", children: [
3077
3094
  /* @__PURE__ */ jsx35(
3078
3095
  "input",
3079
3096
  {
@@ -3153,7 +3170,7 @@ Toggle.displayName = "Toggle";
3153
3170
 
3154
3171
  // src/components/Inputs/WebsiteInput.tsx
3155
3172
  import "react";
3156
- import { jsx as jsx36, jsxs as jsxs25 } from "react/jsx-runtime";
3173
+ import { jsx as jsx36, jsxs as jsxs24 } from "react/jsx-runtime";
3157
3174
  var WebsiteInput = (props) => {
3158
3175
  const {
3159
3176
  hierarchy = "leading",
@@ -3190,11 +3207,11 @@ var WebsiteInput = (props) => {
3190
3207
  size === "xl" ? "[&>svg]:w-6 [&>svg]:h-6" : size === "sm" ? "[&>svg]:w-4 [&>svg]:h-4" : "[&>svg]:w-5 [&>svg]:h-5",
3191
3208
  disabled ? "text-(--icon-primary-disabled)" : "text-(--icon-primary) group-hover:text-(--icon-primary-hover) group-focus-within:text-(--icon-primary-focus)"
3192
3209
  );
3193
- const leadingAddon = /* @__PURE__ */ jsxs25("div", { className: baseAddonClass, children: [
3210
+ const leadingAddon = /* @__PURE__ */ jsxs24("div", { className: baseAddonClass, children: [
3194
3211
  /* @__PURE__ */ jsx36("div", { className: addonTextClass, children: protocolLabel }),
3195
3212
  icon != null && /* @__PURE__ */ jsx36("span", { className: iconWrapperClass, children: icon })
3196
3213
  ] });
3197
- const trailingAddon = /* @__PURE__ */ jsxs25("div", { className: baseAddonClass, children: [
3214
+ const trailingAddon = /* @__PURE__ */ jsxs24("div", { className: baseAddonClass, children: [
3198
3215
  icon != null && /* @__PURE__ */ jsx36("span", { className: iconWrapperClass, children: icon }),
3199
3216
  /* @__PURE__ */ jsx36("div", { className: addonTextClass, children: protocolLabel })
3200
3217
  ] });
@@ -3215,7 +3232,7 @@ WebsiteInput.displayName = "WebsiteInput";
3215
3232
  // src/components/Feedback/Popover.tsx
3216
3233
  import * as React35 from "react";
3217
3234
  import * as PopoverPrimitive2 from "@radix-ui/react-popover";
3218
- import { jsx as jsx37, jsxs as jsxs26 } from "react/jsx-runtime";
3235
+ import { jsx as jsx37, jsxs as jsxs25 } from "react/jsx-runtime";
3219
3236
  var PopoverArrow = PopoverPrimitive2.Arrow;
3220
3237
  var Popover2 = (props) => {
3221
3238
  const {
@@ -3274,9 +3291,9 @@ var Popover2 = (props) => {
3274
3291
  }
3275
3292
  };
3276
3293
  const { side, align } = mapPlacementToSideAndAlign(placement);
3277
- return /* @__PURE__ */ jsxs26(Popover, { open, onOpenChange: setOpen, children: [
3294
+ return /* @__PURE__ */ jsxs25(Popover, { open, onOpenChange: setOpen, children: [
3278
3295
  /* @__PURE__ */ jsx37(PopoverTrigger, { asChild: true, children }),
3279
- /* @__PURE__ */ jsxs26(
3296
+ /* @__PURE__ */ jsxs25(
3280
3297
  PopoverContent,
3281
3298
  {
3282
3299
  side,
@@ -3285,13 +3302,13 @@ var Popover2 = (props) => {
3285
3302
  className: cn(popoverClasses, className),
3286
3303
  children: [
3287
3304
  showArrow && /* @__PURE__ */ jsx37(PopoverArrow, { className: popoverArrowClasses }),
3288
- /* @__PURE__ */ jsxs26("div", { className: "grid gap-4", children: [
3289
- /* @__PURE__ */ jsxs26("div", { className: "space-y-2", children: [
3305
+ /* @__PURE__ */ jsxs25("div", { className: "grid gap-4", children: [
3306
+ /* @__PURE__ */ jsxs25("div", { className: "space-y-2", children: [
3290
3307
  /* @__PURE__ */ jsx37("span", { className: "caption text-secondary", children: strapline }),
3291
3308
  /* @__PURE__ */ jsx37("h4", { className: "subtitle-medium text-primary", children: title }),
3292
3309
  /* @__PURE__ */ jsx37("p", { className: "paragraph-sm text-primary", children: description })
3293
3310
  ] }),
3294
- /* @__PURE__ */ jsxs26("div", { className: "flex justify-start items-center gap-4 flex-wrap", children: [
3311
+ /* @__PURE__ */ jsxs25("div", { className: "flex justify-start items-center gap-4 flex-wrap", children: [
3295
3312
  /* @__PURE__ */ jsx37(Button, { size: "sm", variant: "secondary", onClick: handleCancel, children: cancelText || "Cancel" }),
3296
3313
  /* @__PURE__ */ jsx37(Button, { size: "sm", variant: "primary", onClick: handleOk, children: okText || "Ok" })
3297
3314
  ] })
@@ -3308,7 +3325,7 @@ import * as React36 from "react";
3308
3325
  import { Slot as Slot8 } from "@radix-ui/react-slot";
3309
3326
  import { cva as cva19 } from "class-variance-authority";
3310
3327
  import { ChevronRightIcon } from "@bubo-squared/icons";
3311
- import { jsx as jsx38, jsxs as jsxs27 } from "react/jsx-runtime";
3328
+ import { jsx as jsx38, jsxs as jsxs26 } from "react/jsx-runtime";
3312
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";
3313
3330
  var breadcrumbIconVariants = cva19(
3314
3331
  "flex shrink-0 items-center justify-center w-5 h-5 *:w-5 *:h-5",
@@ -3352,7 +3369,7 @@ var Breadcrumb = React36.forwardRef((props, ref) => {
3352
3369
  } = props;
3353
3370
  const Comp = asChild ? Slot8 : "button";
3354
3371
  const content = showText ? children ?? label : null;
3355
- return /* @__PURE__ */ jsxs27(
3372
+ return /* @__PURE__ */ jsxs26(
3356
3373
  Comp,
3357
3374
  {
3358
3375
  type: asChild ? void 0 : "button",
@@ -3370,8 +3387,8 @@ Breadcrumb.displayName = "Breadcrumb";
3370
3387
 
3371
3388
  // src/components/Logo/LogoIcon.tsx
3372
3389
  import { cva as cva20 } from "class-variance-authority";
3373
- import { jsx as jsx39, jsxs as jsxs28 } from "react/jsx-runtime";
3374
- var LogoIconSvg = (props) => /* @__PURE__ */ jsxs28("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
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: [
3375
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" }),
3376
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" }),
3377
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" }),
@@ -3408,15 +3425,15 @@ var LogoIcon = ({ className, size = "md" }) => {
3408
3425
 
3409
3426
  // src/components/Logo/Logo.tsx
3410
3427
  import { cva as cva21 } from "class-variance-authority";
3411
- import { jsx as jsx40, jsxs as jsxs29 } from "react/jsx-runtime";
3412
- var LogoIconSvg2 = (props) => /* @__PURE__ */ jsxs29("svg", { width: "89", height: "88", viewBox: "0 0 89 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
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: [
3413
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" }),
3414
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" }),
3415
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" }),
3416
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" }),
3417
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" })
3418
3435
  ] });
3419
- var LogoTextSvg = (props) => /* @__PURE__ */ jsxs29("svg", { width: "111", height: "32", viewBox: "0 0 111 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
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: [
3420
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" }),
3421
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" }),
3422
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" }),
@@ -3462,7 +3479,7 @@ var logoTextSizeVariants = cva21("", {
3462
3479
  });
3463
3480
  var Logo = ({ className, textColor, variant = "inline" }) => {
3464
3481
  const textColorClass = textColor === "light" ? "text-(--color-b-white)" : textColor === "dark" ? "text-(--color-b-black)" : "text-primary";
3465
- return /* @__PURE__ */ jsxs29("div", { className: cn(logoWrapperVariants({ variant }), className), children: [
3482
+ return /* @__PURE__ */ jsxs28("div", { className: cn(logoWrapperVariants({ variant }), className), children: [
3466
3483
  /* @__PURE__ */ jsx40(LogoIconSvg2, { className: logoIconSizeVariants({ variant }) }),
3467
3484
  /* @__PURE__ */ jsx40(LogoTextSvg, { className: cn(logoTextSizeVariants({ variant }), textColorClass) })
3468
3485
  ] });