@bubo-squared/ui-framework 0.1.95 → 0.1.97

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
@@ -656,7 +656,6 @@ BadgeStatus.displayName = "BadgeStatus";
656
656
  import "react";
657
657
  import { TargetIcon } from "@bubo-squared/icons";
658
658
  import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
659
- var lineClassBase = "flex-1 bg-(--border-secondary) h-px";
660
659
  var gapBySize = {
661
660
  sm: "gap-2",
662
661
  md: "gap-3",
@@ -672,50 +671,74 @@ var textClassBySize = {
672
671
  var Divider = (props) => {
673
672
  const resolvedType = props.type ?? "default";
674
673
  const resolvedSize = props.size ?? "sm";
674
+ const resolvedOrientation = props.orientation ?? "horizontal";
675
+ const ariaOrientation = resolvedOrientation === "vertical" ? "vertical" : "horizontal";
675
676
  const showCenter = resolvedType !== "default";
676
- const lineClass = lineClassBase;
677
+ const lineClass = resolvedOrientation === "vertical" ? "flex-1 bg-(--border-secondary) w-px" : "flex-1 bg-(--border-secondary) h-px";
677
678
  const wrapperClass = cn(
678
- "flex w-full items-center",
679
+ "flex items-center",
680
+ resolvedOrientation === "vertical" ? "h-full flex-col" : "w-full",
679
681
  showCenter ? gapBySize[resolvedSize] : "gap-0",
680
682
  props.className
681
683
  );
682
684
  if (props.type === void 0 || props.type === "default") {
683
685
  const {
684
686
  type: _type,
687
+ orientation: _orientation,
685
688
  size: _size,
686
689
  label: _label,
687
690
  className: _className,
688
691
  ...divProps
689
692
  } = props;
690
- return /* @__PURE__ */ jsx13("div", { className: wrapperClass, ...divProps, children: /* @__PURE__ */ jsx13("div", { className: lineClass }) });
693
+ return /* @__PURE__ */ jsx13(
694
+ "div",
695
+ {
696
+ className: wrapperClass,
697
+ role: "separator",
698
+ "aria-orientation": ariaOrientation,
699
+ ...divProps,
700
+ children: /* @__PURE__ */ jsx13("div", { className: lineClass })
701
+ }
702
+ );
691
703
  }
692
704
  if (props.type === "text") {
693
705
  const {
694
706
  type: _type,
707
+ orientation: _orientation,
695
708
  size: _size,
696
709
  label,
697
710
  className: _className,
698
711
  ...divProps
699
712
  } = props;
700
713
  const textLabel = label ? label : "OR";
701
- return /* @__PURE__ */ jsxs7("div", { className: wrapperClass, ...divProps, children: [
702
- /* @__PURE__ */ jsx13("div", { className: lineClass }),
703
- /* @__PURE__ */ jsx13(
704
- "span",
705
- {
706
- className: cn(
707
- textClassBySize[resolvedSize],
708
- "text-(--color-secondary)"
714
+ return /* @__PURE__ */ jsxs7(
715
+ "div",
716
+ {
717
+ className: wrapperClass,
718
+ role: "separator",
719
+ "aria-orientation": ariaOrientation,
720
+ ...divProps,
721
+ children: [
722
+ /* @__PURE__ */ jsx13("div", { className: lineClass }),
723
+ /* @__PURE__ */ jsx13(
724
+ "span",
725
+ {
726
+ className: cn(
727
+ textClassBySize[resolvedSize],
728
+ "text-(--color-secondary)"
729
+ ),
730
+ children: textLabel
731
+ }
709
732
  ),
710
- children: textLabel
711
- }
712
- ),
713
- /* @__PURE__ */ jsx13("div", { className: lineClass })
714
- ] });
733
+ /* @__PURE__ */ jsx13("div", { className: lineClass })
734
+ ]
735
+ }
736
+ );
715
737
  }
716
738
  if (props.type === "iconButton") {
717
739
  const {
718
740
  type: _type,
741
+ orientation: _orientation,
719
742
  size: _size,
720
743
  icon,
721
744
  iconButtonVariant,
@@ -724,38 +747,65 @@ var Divider = (props) => {
724
747
  className: _className,
725
748
  ...divProps
726
749
  } = props;
727
- return /* @__PURE__ */ jsxs7("div", { className: wrapperClass, ...divProps, children: [
728
- /* @__PURE__ */ jsx13("div", { className: lineClass }),
729
- /* @__PURE__ */ jsx13(
730
- IconButton,
731
- {
732
- variant: iconButtonVariant ?? "secondary",
733
- size: resolvedSize,
734
- "aria-label": ariaLabel ?? "More options",
735
- icon: icon ?? /* @__PURE__ */ jsx13(TargetIcon, {}),
736
- onClick: onIconClick
737
- }
738
- ),
739
- /* @__PURE__ */ jsx13("div", { className: lineClass })
740
- ] });
750
+ return /* @__PURE__ */ jsxs7(
751
+ "div",
752
+ {
753
+ className: wrapperClass,
754
+ role: "separator",
755
+ "aria-orientation": ariaOrientation,
756
+ ...divProps,
757
+ children: [
758
+ /* @__PURE__ */ jsx13("div", { className: lineClass }),
759
+ /* @__PURE__ */ jsx13(
760
+ IconButton,
761
+ {
762
+ variant: iconButtonVariant ?? "secondary",
763
+ size: resolvedSize,
764
+ "aria-label": ariaLabel ?? "More options",
765
+ icon: icon ?? /* @__PURE__ */ jsx13(TargetIcon, {}),
766
+ onClick: onIconClick
767
+ }
768
+ ),
769
+ /* @__PURE__ */ jsx13("div", { className: lineClass })
770
+ ]
771
+ }
772
+ );
741
773
  }
742
774
  if (props.type === "iconButtonGroup") {
743
775
  const {
744
776
  type: _type,
777
+ orientation: _orientation,
745
778
  size: _size,
746
779
  iconGroupItems,
747
780
  className: _className,
748
781
  ...divProps
749
782
  } = props;
750
- return /* @__PURE__ */ jsxs7("div", { className: wrapperClass, ...divProps, children: [
751
- /* @__PURE__ */ jsx13("div", { className: lineClass }),
752
- /* @__PURE__ */ jsx13(IconButtonGroup, { items: iconGroupItems, size: resolvedSize }),
753
- /* @__PURE__ */ jsx13("div", { className: lineClass })
754
- ] });
783
+ return /* @__PURE__ */ jsxs7(
784
+ "div",
785
+ {
786
+ className: wrapperClass,
787
+ role: "separator",
788
+ "aria-orientation": ariaOrientation,
789
+ ...divProps,
790
+ children: [
791
+ /* @__PURE__ */ jsx13("div", { className: lineClass }),
792
+ /* @__PURE__ */ jsx13(
793
+ IconButtonGroup,
794
+ {
795
+ className: resolvedOrientation === "vertical" ? "flex-col" : "flex-row",
796
+ items: iconGroupItems,
797
+ size: resolvedSize
798
+ }
799
+ ),
800
+ /* @__PURE__ */ jsx13("div", { className: lineClass })
801
+ ]
802
+ }
803
+ );
755
804
  }
756
805
  if (props.type === "button") {
757
806
  const {
758
807
  type: _type,
808
+ orientation: _orientation,
759
809
  size: _size,
760
810
  buttonLabel,
761
811
  onButtonClick,
@@ -763,19 +813,28 @@ var Divider = (props) => {
763
813
  className: _className,
764
814
  ...divProps
765
815
  } = props;
766
- return /* @__PURE__ */ jsxs7("div", { className: wrapperClass, ...divProps, children: [
767
- /* @__PURE__ */ jsx13("div", { className: lineClass }),
768
- /* @__PURE__ */ jsx13(
769
- Button,
770
- {
771
- variant: buttonVariant ?? "secondary",
772
- size: resolvedSize,
773
- onClick: onButtonClick,
774
- children: buttonLabel
775
- }
776
- ),
777
- /* @__PURE__ */ jsx13("div", { className: lineClass })
778
- ] });
816
+ return /* @__PURE__ */ jsxs7(
817
+ "div",
818
+ {
819
+ className: wrapperClass,
820
+ role: "separator",
821
+ "aria-orientation": ariaOrientation,
822
+ ...divProps,
823
+ children: [
824
+ /* @__PURE__ */ jsx13("div", { className: lineClass }),
825
+ /* @__PURE__ */ jsx13(
826
+ Button,
827
+ {
828
+ variant: buttonVariant ?? "secondary",
829
+ size: resolvedSize,
830
+ onClick: onButtonClick,
831
+ children: buttonLabel
832
+ }
833
+ ),
834
+ /* @__PURE__ */ jsx13("div", { className: lineClass })
835
+ ]
836
+ }
837
+ );
779
838
  }
780
839
  return null;
781
840
  };
@@ -1009,8 +1068,10 @@ var dropdownTriggerVariants = cva12(
1009
1068
  {
1010
1069
  variants: {
1011
1070
  size: {
1012
- large: "h-11",
1013
- "extra-large": "h-14"
1071
+ sm: "h-8 py-1",
1072
+ md: "h-10 py-2",
1073
+ lg: "h-11",
1074
+ xl: "h-14"
1014
1075
  },
1015
1076
  status: {
1016
1077
  default: "border-(--border-secondary)",
@@ -1019,7 +1080,7 @@ var dropdownTriggerVariants = cva12(
1019
1080
  }
1020
1081
  },
1021
1082
  defaultVariants: {
1022
- size: "large",
1083
+ size: "lg",
1023
1084
  status: "default"
1024
1085
  }
1025
1086
  }
@@ -1027,8 +1088,10 @@ var dropdownTriggerVariants = cva12(
1027
1088
  var dropdownTextVariants = cva12("truncate", {
1028
1089
  variants: {
1029
1090
  size: {
1030
- large: "subtitle",
1031
- "extra-large": "h6-title"
1091
+ sm: "paragraph-m",
1092
+ md: "paragraph-l",
1093
+ lg: "subtitle",
1094
+ xl: "h6-title"
1032
1095
  },
1033
1096
  hasValue: {
1034
1097
  false: "text-(--color-secondary)",
@@ -1039,15 +1102,17 @@ var dropdownTextVariants = cva12("truncate", {
1039
1102
  }
1040
1103
  },
1041
1104
  defaultVariants: {
1042
- size: "large",
1105
+ size: "lg",
1043
1106
  hasValue: false
1044
1107
  }
1045
1108
  });
1046
1109
  var dropdownIconVariants = cva12("flex items-center justify-center shrink-0", {
1047
1110
  variants: {
1048
1111
  size: {
1049
- large: "w-5 h-5",
1050
- "extra-large": "w-6 h-6"
1112
+ sm: "w-4 h-4",
1113
+ md: "w-5 h-5",
1114
+ lg: "w-5 h-5",
1115
+ xl: "w-6 h-6"
1051
1116
  },
1052
1117
  disabled: {
1053
1118
  false: "text-(--icon-primary)",
@@ -1055,7 +1120,7 @@ var dropdownIconVariants = cva12("flex items-center justify-center shrink-0", {
1055
1120
  }
1056
1121
  },
1057
1122
  defaultVariants: {
1058
- size: "large",
1123
+ size: "lg",
1059
1124
  disabled: false
1060
1125
  }
1061
1126
  });
@@ -1066,7 +1131,7 @@ var Dropdown = (props) => {
1066
1131
  hint = "This is a hint text to help user.",
1067
1132
  hideHint = false,
1068
1133
  placeholder = "Placeholder text",
1069
- size = "large",
1134
+ size = "lg",
1070
1135
  status = "default",
1071
1136
  disabled,
1072
1137
  options,
@@ -1295,8 +1360,10 @@ var inputShellVariants = cva13(
1295
1360
  {
1296
1361
  variants: {
1297
1362
  size: {
1298
- large: "gap-2 px-2 py-2 h-11",
1299
- "extra-large": "gap-2 px-[10px] py-2 h-14"
1363
+ sm: "gap-2 px-2 py-1 h-8",
1364
+ md: "gap-2 px-2 py-2 h-10",
1365
+ lg: "gap-2 px-2 py-2 h-11",
1366
+ xl: "gap-2 px-[10px] py-2 h-14"
1300
1367
  },
1301
1368
  status: {
1302
1369
  default: "input-default",
@@ -1308,7 +1375,7 @@ var inputShellVariants = cva13(
1308
1375
  }
1309
1376
  },
1310
1377
  defaultVariants: {
1311
- size: "large",
1378
+ size: "lg",
1312
1379
  status: "default"
1313
1380
  }
1314
1381
  }
@@ -1336,8 +1403,10 @@ import { jsx as jsx22, jsxs as jsxs14 } from "react/jsx-runtime";
1336
1403
  var passwordTextVariants = cva14("truncate", {
1337
1404
  variants: {
1338
1405
  size: {
1339
- large: "subtitle",
1340
- "extra-large": "h6-title"
1406
+ sm: "paragraph-m",
1407
+ md: "paragraph-l",
1408
+ lg: "subtitle",
1409
+ xl: "h6-title"
1341
1410
  },
1342
1411
  disabled: {
1343
1412
  true: "text-primary-disabled",
@@ -1345,7 +1414,7 @@ var passwordTextVariants = cva14("truncate", {
1345
1414
  }
1346
1415
  },
1347
1416
  defaultVariants: {
1348
- size: "large",
1417
+ size: "lg",
1349
1418
  disabled: false
1350
1419
  }
1351
1420
  });
@@ -1354,15 +1423,17 @@ var iconWrapperVariants = cva14(
1354
1423
  {
1355
1424
  variants: {
1356
1425
  size: {
1357
- large: "size-5 [&>svg]:size-5",
1358
- "extra-large": "size-6 [&>svg]:size-6"
1426
+ sm: "size-4 [&>svg]:size-4",
1427
+ md: "size-5 [&>svg]:size-5",
1428
+ lg: "size-5 [&>svg]:size-5",
1429
+ xl: "size-6 [&>svg]:size-6"
1359
1430
  },
1360
1431
  disabled: {
1361
1432
  true: "text-(--icon-primary-disabled)"
1362
1433
  }
1363
1434
  },
1364
1435
  defaultVariants: {
1365
- size: "large"
1436
+ size: "lg"
1366
1437
  }
1367
1438
  }
1368
1439
  );
@@ -1371,15 +1442,17 @@ var actionButtonVariants = cva14(
1371
1442
  {
1372
1443
  variants: {
1373
1444
  size: {
1374
- large: "paragraph-s",
1375
- "extra-large": "paragraph-m"
1445
+ sm: "paragraph-s",
1446
+ md: "paragraph-s",
1447
+ lg: "paragraph-s",
1448
+ xl: "paragraph-m"
1376
1449
  },
1377
1450
  disabled: {
1378
1451
  true: "cursor-default text-primary-disabled hover:text-primary-disabled"
1379
1452
  }
1380
1453
  },
1381
1454
  defaultVariants: {
1382
- size: "large"
1455
+ size: "lg"
1383
1456
  }
1384
1457
  }
1385
1458
  );
@@ -1389,7 +1462,7 @@ var PasswordInput = (props) => {
1389
1462
  hint,
1390
1463
  hideHint,
1391
1464
  placeholder = "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
1392
- size = "large",
1465
+ size = "lg",
1393
1466
  status = "default",
1394
1467
  variant = "icons",
1395
1468
  disabled,
@@ -1769,8 +1842,10 @@ var sizeBase = cva16(
1769
1842
  {
1770
1843
  variants: {
1771
1844
  size: {
1772
- large: "h-11 [&_button]:gap-2",
1773
- "extra-large": "h-14 [&_button]:gap-3"
1845
+ sm: "h-8 [&_button]:gap-2",
1846
+ md: "h-10 [&_button]:gap-2",
1847
+ lg: "h-11 [&_button]:gap-2",
1848
+ xl: "h-14 [&_button]:gap-3"
1774
1849
  }
1775
1850
  }
1776
1851
  }
@@ -1778,15 +1853,17 @@ var sizeBase = cva16(
1778
1853
  var inputTextVariants = cva16("", {
1779
1854
  variants: {
1780
1855
  size: {
1781
- large: "subtitle",
1782
- "extra-large": "h6-title"
1856
+ sm: "paragraph-m",
1857
+ md: "paragraph-l",
1858
+ lg: "subtitle",
1859
+ xl: "h6-title"
1783
1860
  },
1784
1861
  disabled: {
1785
1862
  true: "text-primary-disabled border-(--border-secondary-disabled)"
1786
1863
  }
1787
1864
  },
1788
1865
  defaultVariants: {
1789
- size: "large"
1866
+ size: "lg"
1790
1867
  }
1791
1868
  });
1792
1869
  var wrapperStatusClass = {
@@ -1804,7 +1881,7 @@ var PhoneInput = React26.forwardRef(
1804
1881
  hint,
1805
1882
  hideHint,
1806
1883
  placeholder,
1807
- size = "large",
1884
+ size = "lg",
1808
1885
  disabled = false,
1809
1886
  status = "default",
1810
1887
  ...rest
@@ -2133,32 +2210,36 @@ import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
2133
2210
  var searchTextVariants = cva17("truncate", {
2134
2211
  variants: {
2135
2212
  size: {
2136
- large: "subtitle",
2137
- "extra-large": "h6-title"
2213
+ sm: "paragraph-m",
2214
+ md: "paragraph-l",
2215
+ lg: "subtitle",
2216
+ xl: "h6-title"
2138
2217
  }
2139
2218
  },
2140
2219
  defaultVariants: {
2141
- size: "large"
2220
+ size: "lg"
2142
2221
  }
2143
2222
  });
2144
2223
  var iconWrapperVariants2 = cva17("flex items-center justify-center shrink-0 text-(--icon-primary)", {
2145
2224
  variants: {
2146
2225
  size: {
2147
- large: "size-5 [&>svg]:size-5",
2148
- "extra-large": "size-6 [&>svg]:size-6"
2226
+ sm: "size-4 [&>svg]:size-4",
2227
+ md: "size-5 [&>svg]:size-5",
2228
+ lg: "size-5 [&>svg]:size-5",
2229
+ xl: "size-6 [&>svg]:size-6"
2149
2230
  },
2150
2231
  disabled: {
2151
2232
  true: "text-(--icon-primary-disabled)"
2152
2233
  }
2153
2234
  },
2154
2235
  defaultVariants: {
2155
- size: "large"
2236
+ size: "lg"
2156
2237
  }
2157
2238
  });
2158
2239
  var SearchInput = (props) => {
2159
2240
  const {
2160
2241
  placeholder = "Search...",
2161
- size = "large",
2242
+ size = "lg",
2162
2243
  disabled,
2163
2244
  className,
2164
2245
  leadingIcon,
@@ -2761,12 +2842,14 @@ import { jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
2761
2842
  var inputTextVariants2 = cva18("truncate", {
2762
2843
  variants: {
2763
2844
  size: {
2764
- large: "subtitle",
2765
- "extra-large": "h6-title"
2845
+ sm: "paragraph-m",
2846
+ md: "paragraph-l",
2847
+ lg: "subtitle",
2848
+ xl: "h6-title"
2766
2849
  }
2767
2850
  },
2768
2851
  defaultVariants: {
2769
- size: "large"
2852
+ size: "lg"
2770
2853
  }
2771
2854
  });
2772
2855
  var iconWrapperVariants3 = cva18(
@@ -2774,15 +2857,17 @@ var iconWrapperVariants3 = cva18(
2774
2857
  {
2775
2858
  variants: {
2776
2859
  size: {
2777
- large: "size-5 [&>svg]:size-5",
2778
- "extra-large": "size-6 [&>svg]:size-6"
2860
+ sm: "size-4 [&>svg]:size-4",
2861
+ md: "size-5 [&>svg]:size-5",
2862
+ lg: "size-5 [&>svg]:size-5",
2863
+ xl: "size-6 [&>svg]:size-6"
2779
2864
  },
2780
2865
  disabled: {
2781
2866
  true: "text-(--icon-primary-disabled)"
2782
2867
  }
2783
2868
  },
2784
2869
  defaultVariants: {
2785
- size: "large"
2870
+ size: "lg"
2786
2871
  }
2787
2872
  }
2788
2873
  );
@@ -2792,7 +2877,7 @@ var TextInput = (props) => {
2792
2877
  hint,
2793
2878
  hideHint,
2794
2879
  placeholder = "Placeholder text",
2795
- size = "large",
2880
+ size = "lg",
2796
2881
  status = "default",
2797
2882
  disabled = false,
2798
2883
  className,
@@ -2981,21 +3066,22 @@ var WebsiteInput = (props) => {
2981
3066
  hierarchy = "leading",
2982
3067
  protocolLabel = "http://",
2983
3068
  icon,
2984
- size = "large",
3069
+ size = "lg",
2985
3070
  disabled,
2986
3071
  className,
2987
3072
  ...rest
2988
3073
  } = props;
2989
3074
  const isLeading = hierarchy === "leading";
3075
+ const spanHeightClass = size === "xl" ? "[&>span]:h-14!" : size === "lg" ? "[&>span]:h-11!" : size === "md" ? "[&>span]:h-10!" : "[&>span]:h-8!";
2990
3076
  const baseClass = cn(
2991
3077
  "[&>span]:w-[unset] hover:bg-[unset]",
2992
3078
  !disabled && "[&:not(:focus-within):hover]:shadow-[0_0_0_var(--focus-ring-spread)_var(--background-secondary-hover)]",
2993
3079
  disabled && "bg-[unset] hover:shadow-none hover:border-(--border-secondary-disabled) border-(--border-secondary-disabled)",
2994
- size === "extra-large" ? "[&>span]:h-14!" : "[&>span]:h-11!"
3080
+ spanHeightClass
2995
3081
  );
2996
3082
  const addonTextClass = cn(
2997
3083
  "flex mb-0!",
2998
- size === "extra-large" ? "paragraph-m" : "paragraph-s",
3084
+ size === "xl" ? "paragraph-m" : size === "sm" ? "paragraph-m" : "paragraph-s",
2999
3085
  disabled ? "text-primary-disabled" : "text-primary group-hover:text-(--color-primary-hover) group-focus-within:text-(--color-primary-focus)"
3000
3086
  );
3001
3087
  const baseAddonClass = cn(
@@ -3008,7 +3094,7 @@ var WebsiteInput = (props) => {
3008
3094
  );
3009
3095
  const iconWrapperClass = cn(
3010
3096
  "flex items-center justify-center shrink-0",
3011
- size === "extra-large" ? "[&>svg]:w-6 [&>svg]:h-6" : "[&>svg]:w-5 [&>svg]:h-5",
3097
+ size === "xl" ? "[&>svg]:w-6 [&>svg]:h-6" : size === "sm" ? "[&>svg]:w-4 [&>svg]:h-4" : "[&>svg]:w-5 [&>svg]:h-5",
3012
3098
  disabled ? "text-(--icon-primary-disabled)" : "text-(--icon-primary) group-hover:text-(--icon-primary-hover) group-focus-within:text-(--icon-primary-focus)"
3013
3099
  );
3014
3100
  const leadingAddon = /* @__PURE__ */ jsxs25("div", { className: baseAddonClass, children: [