@bubo-squared/ui-framework 0.1.96 → 0.1.98

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
@@ -1068,8 +1068,10 @@ var dropdownTriggerVariants = cva12(
1068
1068
  {
1069
1069
  variants: {
1070
1070
  size: {
1071
- large: "h-11",
1072
- "extra-large": "h-14"
1071
+ sm: "h-8 py-1",
1072
+ md: "h-10 py-2",
1073
+ lg: "h-11",
1074
+ xl: "h-14"
1073
1075
  },
1074
1076
  status: {
1075
1077
  default: "border-(--border-secondary)",
@@ -1078,7 +1080,7 @@ var dropdownTriggerVariants = cva12(
1078
1080
  }
1079
1081
  },
1080
1082
  defaultVariants: {
1081
- size: "large",
1083
+ size: "lg",
1082
1084
  status: "default"
1083
1085
  }
1084
1086
  }
@@ -1086,8 +1088,10 @@ var dropdownTriggerVariants = cva12(
1086
1088
  var dropdownTextVariants = cva12("truncate", {
1087
1089
  variants: {
1088
1090
  size: {
1089
- large: "subtitle",
1090
- "extra-large": "h6-title"
1091
+ sm: "paragraph-m",
1092
+ md: "paragraph-l",
1093
+ lg: "subtitle",
1094
+ xl: "h6-title"
1091
1095
  },
1092
1096
  hasValue: {
1093
1097
  false: "text-(--color-secondary)",
@@ -1098,15 +1102,17 @@ var dropdownTextVariants = cva12("truncate", {
1098
1102
  }
1099
1103
  },
1100
1104
  defaultVariants: {
1101
- size: "large",
1105
+ size: "lg",
1102
1106
  hasValue: false
1103
1107
  }
1104
1108
  });
1105
1109
  var dropdownIconVariants = cva12("flex items-center justify-center shrink-0", {
1106
1110
  variants: {
1107
1111
  size: {
1108
- large: "w-5 h-5",
1109
- "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"
1110
1116
  },
1111
1117
  disabled: {
1112
1118
  false: "text-(--icon-primary)",
@@ -1114,7 +1120,7 @@ var dropdownIconVariants = cva12("flex items-center justify-center shrink-0", {
1114
1120
  }
1115
1121
  },
1116
1122
  defaultVariants: {
1117
- size: "large",
1123
+ size: "lg",
1118
1124
  disabled: false
1119
1125
  }
1120
1126
  });
@@ -1125,7 +1131,7 @@ var Dropdown = (props) => {
1125
1131
  hint = "This is a hint text to help user.",
1126
1132
  hideHint = false,
1127
1133
  placeholder = "Placeholder text",
1128
- size = "large",
1134
+ size = "lg",
1129
1135
  status = "default",
1130
1136
  disabled,
1131
1137
  options,
@@ -1354,8 +1360,10 @@ var inputShellVariants = cva13(
1354
1360
  {
1355
1361
  variants: {
1356
1362
  size: {
1357
- large: "gap-2 px-2 py-2 h-11",
1358
- "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"
1359
1367
  },
1360
1368
  status: {
1361
1369
  default: "input-default",
@@ -1367,7 +1375,7 @@ var inputShellVariants = cva13(
1367
1375
  }
1368
1376
  },
1369
1377
  defaultVariants: {
1370
- size: "large",
1378
+ size: "lg",
1371
1379
  status: "default"
1372
1380
  }
1373
1381
  }
@@ -1395,8 +1403,10 @@ import { jsx as jsx22, jsxs as jsxs14 } from "react/jsx-runtime";
1395
1403
  var passwordTextVariants = cva14("truncate", {
1396
1404
  variants: {
1397
1405
  size: {
1398
- large: "subtitle",
1399
- "extra-large": "h6-title"
1406
+ sm: "paragraph-m",
1407
+ md: "paragraph-l",
1408
+ lg: "subtitle",
1409
+ xl: "h6-title"
1400
1410
  },
1401
1411
  disabled: {
1402
1412
  true: "text-primary-disabled",
@@ -1404,7 +1414,7 @@ var passwordTextVariants = cva14("truncate", {
1404
1414
  }
1405
1415
  },
1406
1416
  defaultVariants: {
1407
- size: "large",
1417
+ size: "lg",
1408
1418
  disabled: false
1409
1419
  }
1410
1420
  });
@@ -1413,15 +1423,17 @@ var iconWrapperVariants = cva14(
1413
1423
  {
1414
1424
  variants: {
1415
1425
  size: {
1416
- large: "size-5 [&>svg]:size-5",
1417
- "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"
1418
1430
  },
1419
1431
  disabled: {
1420
1432
  true: "text-(--icon-primary-disabled)"
1421
1433
  }
1422
1434
  },
1423
1435
  defaultVariants: {
1424
- size: "large"
1436
+ size: "lg"
1425
1437
  }
1426
1438
  }
1427
1439
  );
@@ -1430,15 +1442,17 @@ var actionButtonVariants = cva14(
1430
1442
  {
1431
1443
  variants: {
1432
1444
  size: {
1433
- large: "paragraph-s",
1434
- "extra-large": "paragraph-m"
1445
+ sm: "paragraph-s",
1446
+ md: "paragraph-s",
1447
+ lg: "paragraph-s",
1448
+ xl: "paragraph-m"
1435
1449
  },
1436
1450
  disabled: {
1437
1451
  true: "cursor-default text-primary-disabled hover:text-primary-disabled"
1438
1452
  }
1439
1453
  },
1440
1454
  defaultVariants: {
1441
- size: "large"
1455
+ size: "lg"
1442
1456
  }
1443
1457
  }
1444
1458
  );
@@ -1448,7 +1462,7 @@ var PasswordInput = (props) => {
1448
1462
  hint,
1449
1463
  hideHint,
1450
1464
  placeholder = "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
1451
- size = "large",
1465
+ size = "lg",
1452
1466
  status = "default",
1453
1467
  variant = "icons",
1454
1468
  disabled,
@@ -1828,8 +1842,10 @@ var sizeBase = cva16(
1828
1842
  {
1829
1843
  variants: {
1830
1844
  size: {
1831
- large: "h-11 [&_button]:gap-2",
1832
- "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"
1833
1849
  }
1834
1850
  }
1835
1851
  }
@@ -1837,15 +1853,17 @@ var sizeBase = cva16(
1837
1853
  var inputTextVariants = cva16("", {
1838
1854
  variants: {
1839
1855
  size: {
1840
- large: "subtitle",
1841
- "extra-large": "h6-title"
1856
+ sm: "paragraph-m",
1857
+ md: "paragraph-l",
1858
+ lg: "subtitle",
1859
+ xl: "h6-title"
1842
1860
  },
1843
1861
  disabled: {
1844
1862
  true: "text-primary-disabled border-(--border-secondary-disabled)"
1845
1863
  }
1846
1864
  },
1847
1865
  defaultVariants: {
1848
- size: "large"
1866
+ size: "lg"
1849
1867
  }
1850
1868
  });
1851
1869
  var wrapperStatusClass = {
@@ -1863,7 +1881,7 @@ var PhoneInput = React26.forwardRef(
1863
1881
  hint,
1864
1882
  hideHint,
1865
1883
  placeholder,
1866
- size = "large",
1884
+ size = "lg",
1867
1885
  disabled = false,
1868
1886
  status = "default",
1869
1887
  ...rest
@@ -2192,32 +2210,36 @@ import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
2192
2210
  var searchTextVariants = cva17("truncate", {
2193
2211
  variants: {
2194
2212
  size: {
2195
- large: "subtitle",
2196
- "extra-large": "h6-title"
2213
+ sm: "paragraph-m",
2214
+ md: "paragraph-l",
2215
+ lg: "subtitle",
2216
+ xl: "h6-title"
2197
2217
  }
2198
2218
  },
2199
2219
  defaultVariants: {
2200
- size: "large"
2220
+ size: "lg"
2201
2221
  }
2202
2222
  });
2203
2223
  var iconWrapperVariants2 = cva17("flex items-center justify-center shrink-0 text-(--icon-primary)", {
2204
2224
  variants: {
2205
2225
  size: {
2206
- large: "size-5 [&>svg]:size-5",
2207
- "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"
2208
2230
  },
2209
2231
  disabled: {
2210
2232
  true: "text-(--icon-primary-disabled)"
2211
2233
  }
2212
2234
  },
2213
2235
  defaultVariants: {
2214
- size: "large"
2236
+ size: "lg"
2215
2237
  }
2216
2238
  });
2217
2239
  var SearchInput = (props) => {
2218
2240
  const {
2219
2241
  placeholder = "Search...",
2220
- size = "large",
2242
+ size = "lg",
2221
2243
  disabled,
2222
2244
  className,
2223
2245
  leadingIcon,
@@ -2266,10 +2288,16 @@ SearchInput.displayName = "SearchInput";
2266
2288
  import * as React29 from "react";
2267
2289
  import { jsx as jsx31, jsxs as jsxs21 } from "react/jsx-runtime";
2268
2290
  var wrapperBase2 = "flex flex-col gap-2 items-start";
2291
+ var isRangeProps = (props) => {
2292
+ return Array.isArray(props.value) || Array.isArray(props.defaultValue);
2293
+ };
2294
+ var toArray = (value) => {
2295
+ if (value === void 0) return void 0;
2296
+ return Array.isArray(value) ? value : [value];
2297
+ };
2269
2298
  var Slider = (props) => {
2270
2299
  const {
2271
2300
  display = "flat",
2272
- type = "single",
2273
2301
  tooltipPlacement = "top",
2274
2302
  tooltipFormatter,
2275
2303
  showPercentage = true,
@@ -2279,11 +2307,11 @@ var Slider = (props) => {
2279
2307
  disabled = false,
2280
2308
  value,
2281
2309
  defaultValue,
2282
- onValueChange,
2283
2310
  className
2284
2311
  } = props;
2312
+ const isRange = isRangeProps(props);
2285
2313
  const isControlled = value !== void 0;
2286
- const expectedLength = type === "multi" ? 2 : 1;
2314
+ const expectedLength = isRange ? 2 : 1;
2287
2315
  const normalizeArray = React29.useCallback(
2288
2316
  (arr, fallback) => {
2289
2317
  if (!arr || arr.length === 0) return fallback;
@@ -2297,22 +2325,25 @@ var Slider = (props) => {
2297
2325
  [expectedLength, max]
2298
2326
  );
2299
2327
  const defaultInternal = React29.useMemo(() => {
2300
- if (defaultValue) return normalizeArray(defaultValue, []);
2301
- if (type === "multi") return [min, Math.min(min + (max - min) / 4, max)];
2328
+ const defaultValueArray = toArray(defaultValue);
2329
+ if (defaultValueArray) return normalizeArray(defaultValueArray, []);
2330
+ if (isRange) return [min, Math.min(min + (max - min) / 4, max)];
2302
2331
  return [min + (max - min) / 3];
2303
- }, [defaultValue, min, max, type, normalizeArray]);
2332
+ }, [defaultValue, min, max, isRange, normalizeArray]);
2304
2333
  const [internalValue, setInternalValue] = React29.useState(
2305
- () => normalizeArray(isControlled ? value : defaultInternal, defaultInternal)
2334
+ () => normalizeArray(isControlled ? toArray(value) : defaultInternal, defaultInternal)
2306
2335
  );
2307
2336
  React29.useEffect(() => {
2308
2337
  if (isControlled) {
2309
2338
  setInternalValue(
2310
- (current2) => normalizeArray(value, current2.length ? current2 : defaultInternal)
2339
+ (current2) => normalizeArray(toArray(value), current2.length ? current2 : defaultInternal)
2311
2340
  );
2312
2341
  }
2313
2342
  }, [isControlled, value, normalizeArray, defaultInternal]);
2314
2343
  const current = internalValue;
2315
2344
  const trackRef = React29.useRef(null);
2345
+ const [draggingThumbIndex, setDraggingThumbIndex] = React29.useState(null);
2346
+ const [hoveredThumbIndex, setHoveredThumbIndex] = React29.useState(null);
2316
2347
  const clamp = (val) => {
2317
2348
  if (val < min) return min;
2318
2349
  if (val > max) return max;
@@ -2322,13 +2353,13 @@ var Slider = (props) => {
2322
2353
  if (!isControlled) {
2323
2354
  setInternalValue((prev) => {
2324
2355
  const clamped = prev.map((v) => clamp(v));
2325
- if (type === "multi" && clamped.length === 2 && step > 0) {
2356
+ if (isRange && clamped.length === 2 && step > 0) {
2326
2357
  return enforceMinGap(clamped, prev);
2327
2358
  }
2328
2359
  return clamped;
2329
2360
  });
2330
2361
  }
2331
- }, [isControlled, min, max]);
2362
+ }, [isControlled, min, max, isRange]);
2332
2363
  const snap = (val) => {
2333
2364
  const range = max - min;
2334
2365
  if (range <= 0 || step <= 0) return clamp(val);
@@ -2336,7 +2367,7 @@ var Slider = (props) => {
2336
2367
  return clamp(min + stepsFromMin * step);
2337
2368
  };
2338
2369
  const enforceMinGap = (next, prev) => {
2339
- if (type !== "multi" || next.length !== 2 || step <= 0) return next;
2370
+ if (!isRange || next.length !== 2 || step <= 0) return next;
2340
2371
  let [low, high] = next;
2341
2372
  const [prevLow, prevHigh] = prev.length === 2 ? prev : next;
2342
2373
  if (low > high) {
@@ -2361,13 +2392,17 @@ var Slider = (props) => {
2361
2392
  };
2362
2393
  const updateValue = (next) => {
2363
2394
  let normalized = normalizeArray(next, current);
2364
- if (type === "multi" && normalized.length === 2) {
2395
+ if (isRange && normalized.length === 2) {
2365
2396
  normalized = enforceMinGap(normalized, current);
2366
2397
  }
2367
2398
  if (!isControlled) {
2368
2399
  setInternalValue(normalized);
2369
2400
  }
2370
- onValueChange?.(normalized);
2401
+ if (isRangeProps(props)) {
2402
+ props.onValueChange?.([normalized[0] ?? min, normalized[1] ?? max]);
2403
+ } else {
2404
+ props.onValueChange?.(normalized[0] ?? min);
2405
+ }
2371
2406
  };
2372
2407
  const getSnappedValueFromClientX = (clientX, track) => {
2373
2408
  const rect = track.getBoundingClientRect();
@@ -2380,10 +2415,11 @@ var Slider = (props) => {
2380
2415
  if (disabled) return;
2381
2416
  const track = trackRef.current;
2382
2417
  if (!track) return;
2418
+ setDraggingThumbIndex(thumbIndex);
2383
2419
  const handlePointerMove = (event) => {
2384
2420
  if (disabled) return;
2385
2421
  const snapped = getSnappedValueFromClientX(event.clientX, track);
2386
- if (type === "multi" && current.length === 2) {
2422
+ if (isRange && current.length === 2) {
2387
2423
  const [a, b] = current;
2388
2424
  if (thumbIndex === 0) {
2389
2425
  updateValue([snapped, b]);
@@ -2397,9 +2433,11 @@ var Slider = (props) => {
2397
2433
  const handlePointerUp = () => {
2398
2434
  window.removeEventListener("pointermove", handlePointerMove);
2399
2435
  window.removeEventListener("pointerup", handlePointerUp);
2436
+ window.removeEventListener("pointercancel", handlePointerUp);
2437
+ setDraggingThumbIndex(null);
2400
2438
  };
2401
2439
  const initialSnapped = getSnappedValueFromClientX(clientX, track);
2402
- if (type === "multi" && current.length === 2) {
2440
+ if (isRange && current.length === 2) {
2403
2441
  const [a, b] = current;
2404
2442
  if (thumbIndex === 0) {
2405
2443
  updateValue([initialSnapped, b]);
@@ -2411,6 +2449,7 @@ var Slider = (props) => {
2411
2449
  }
2412
2450
  window.addEventListener("pointermove", handlePointerMove);
2413
2451
  window.addEventListener("pointerup", handlePointerUp);
2452
+ window.addEventListener("pointercancel", handlePointerUp);
2414
2453
  };
2415
2454
  const handleTrackPointerDown = (event) => {
2416
2455
  if (disabled) return;
@@ -2419,7 +2458,7 @@ var Slider = (props) => {
2419
2458
  if (!track) return;
2420
2459
  const snapped = getSnappedValueFromClientX(event.clientX, track);
2421
2460
  let thumbIndex = 0;
2422
- if (type === "multi" && current.length === 2) {
2461
+ if (isRange && current.length === 2) {
2423
2462
  const [a, b] = current;
2424
2463
  const distToA = Math.abs(snapped - a);
2425
2464
  const distToB = Math.abs(snapped - b);
@@ -2457,7 +2496,7 @@ var Slider = (props) => {
2457
2496
  event.preventDefault();
2458
2497
  }
2459
2498
  };
2460
- const [primary, secondary] = type === "multi" && current.length === 2 ? [current[0], current[1]] : [current[0], void 0];
2499
+ const [primary, secondary] = isRange && current.length === 2 ? [current[0], current[1]] : [current[0], void 0];
2461
2500
  const valueToPercent = (val) => {
2462
2501
  if (val === void 0) return 0;
2463
2502
  if (max === min) return 0;
@@ -2490,7 +2529,7 @@ var Slider = (props) => {
2490
2529
  return formatNumber(value2);
2491
2530
  };
2492
2531
  const formatNumericLabel = () => {
2493
- if (type === "multi" && secondary !== void 0) {
2532
+ if (isRange && secondary !== void 0) {
2494
2533
  if (!tooltipFormatter && showPercentage && display === "numeric") {
2495
2534
  const first = formatNumber(valueToPercent(primary));
2496
2535
  const second = formatNumber(valueToPercent(secondary));
@@ -2503,10 +2542,14 @@ var Slider = (props) => {
2503
2542
  const trackHeight = 32;
2504
2543
  const thumbWidth = 18;
2505
2544
  const thumbRadius = thumbWidth / 2;
2506
- const renderTooltipBubble = (key, percent, labelText) => /* @__PURE__ */ jsx31(
2545
+ const renderTooltipBubble = (key, percent, labelText, isVisible) => /* @__PURE__ */ jsx31(
2507
2546
  "div",
2508
2547
  {
2509
- className: "absolute -translate-x-1/2 flex flex-col items-center",
2548
+ className: cn(
2549
+ "absolute -translate-x-1/2 flex flex-col items-center",
2550
+ "transition-[opacity,transform] duration-150",
2551
+ isVisible ? "opacity-100 scale-100 pointer-events-auto" : "opacity-0 scale-95 pointer-events-none"
2552
+ ),
2510
2553
  style: {
2511
2554
  left: `${percent}%`,
2512
2555
  bottom: isTooltipAbove ? "100%" : void 0,
@@ -2517,17 +2560,14 @@ var Slider = (props) => {
2517
2560
  children: /* @__PURE__ */ jsxs21(
2518
2561
  "div",
2519
2562
  {
2520
- className: cn(
2521
- "relative rounded-4 shadow-card-md px-(--space-8) py-(--space-4)",
2522
- disabled ? "bg-(--background-primary-disabled)" : "bg-(--background-neutral)"
2523
- ),
2563
+ className: cn("relative rounded-4 shadow-card-md px-(--space-8) py-(--space-4) bg-(--background-tooltip)"),
2524
2564
  children: [
2525
2565
  /* @__PURE__ */ jsx31(
2526
2566
  "p",
2527
2567
  {
2528
2568
  className: cn(
2529
2569
  "paragraph-s",
2530
- disabled ? "text-primary-disabled" : "text-primary"
2570
+ disabled ? "text-secondary" : "text-primary"
2531
2571
  ),
2532
2572
  children: labelText
2533
2573
  }
@@ -2536,8 +2576,7 @@ var Slider = (props) => {
2536
2576
  "div",
2537
2577
  {
2538
2578
  className: cn(
2539
- "absolute left-1/2 -translate-x-1/2 w-2 h-2 rotate-45",
2540
- disabled ? "bg-(--background-primary-disabled)" : "bg-(--background-neutral)",
2579
+ "absolute left-1/2 -translate-x-1/2 w-2 h-2 rotate-45 bg-(--background-tooltip)",
2541
2580
  isTooltipAbove ? "-bottom-1" : "-top-1"
2542
2581
  )
2543
2582
  }
@@ -2550,6 +2589,7 @@ var Slider = (props) => {
2550
2589
  );
2551
2590
  const renderHandle = (index, percent, ariaValueText) => {
2552
2591
  const val = index === 0 ? primary : secondary;
2592
+ const isDragging = draggingThumbIndex === index;
2553
2593
  return /* @__PURE__ */ jsx31(
2554
2594
  "button",
2555
2595
  {
@@ -2563,12 +2603,21 @@ var Slider = (props) => {
2563
2603
  tabIndex: disabled ? -1 : 0,
2564
2604
  className: cn(
2565
2605
  "absolute -translate-x-1/2 flex items-center justify-center",
2566
- "h-8 w-[18px] rounded-4",
2606
+ "h-8 w-4.5 rounded-4",
2607
+ "transition-shadow duration-150",
2608
+ !disabled && (isDragging ? "shadow-[0_0_0_12px_var(--slider-halo-color)]" : "hover:shadow-[0_0_0_8px_var(--slider-halo-color)]"),
2567
2609
  disabled ? "bg-(--icon-primary-disabled) cursor-default" : "bg-(--icon-primary-hover) outline-none focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)] cursor-pointer"
2568
2610
  ),
2569
2611
  style: {
2570
2612
  left: `${percent}%`,
2571
- top: `calc(50% - ${trackHeight / 2}px)`
2613
+ top: `calc(50% - ${trackHeight / 2}px)`,
2614
+ ["--slider-halo-color"]: "color-mix(in srgb, var(--color-brand) 10%, transparent)"
2615
+ },
2616
+ onPointerEnter: () => {
2617
+ setHoveredThumbIndex(index);
2618
+ },
2619
+ onPointerLeave: () => {
2620
+ setHoveredThumbIndex((prev) => prev === index ? null : prev);
2572
2621
  },
2573
2622
  onPointerDown: (event) => {
2574
2623
  if (disabled) return;
@@ -2583,8 +2632,18 @@ var Slider = (props) => {
2583
2632
  };
2584
2633
  return /* @__PURE__ */ jsx31("div", { className: wrapperBase2, children: /* @__PURE__ */ jsxs21("div", { className: cn("w-full flex flex-col gap-1", className), children: [
2585
2634
  /* @__PURE__ */ jsxs21("div", { className: "relative w-full", children: [
2586
- showTooltip && primary !== void 0 && renderTooltipBubble("primary", primaryPercent, formatDisplayValue(primary)),
2587
- showTooltip && type === "multi" && secondary !== void 0 && renderTooltipBubble("secondary", secondaryPercent, formatDisplayValue(secondary)),
2635
+ showTooltip && primary !== void 0 && renderTooltipBubble(
2636
+ "primary",
2637
+ primaryPercent,
2638
+ formatDisplayValue(primary),
2639
+ hoveredThumbIndex === 0 || draggingThumbIndex === 0
2640
+ ),
2641
+ showTooltip && isRange && secondary !== void 0 && renderTooltipBubble(
2642
+ "secondary",
2643
+ secondaryPercent,
2644
+ formatDisplayValue(secondary),
2645
+ hoveredThumbIndex === 1 || draggingThumbIndex === 1
2646
+ ),
2588
2647
  /* @__PURE__ */ jsxs21(
2589
2648
  "div",
2590
2649
  {
@@ -2610,7 +2669,7 @@ var Slider = (props) => {
2610
2669
  }
2611
2670
  ),
2612
2671
  renderHandle(0, primaryPercent, formatDisplayValue(primary)),
2613
- type === "multi" && secondary !== void 0 && renderHandle(1, secondaryPercent, formatDisplayValue(secondary))
2672
+ isRange && secondary !== void 0 && renderHandle(1, secondaryPercent, formatDisplayValue(secondary))
2614
2673
  ]
2615
2674
  }
2616
2675
  )
@@ -2820,12 +2879,14 @@ import { jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
2820
2879
  var inputTextVariants2 = cva18("truncate", {
2821
2880
  variants: {
2822
2881
  size: {
2823
- large: "subtitle",
2824
- "extra-large": "h6-title"
2882
+ sm: "paragraph-m",
2883
+ md: "paragraph-l",
2884
+ lg: "subtitle",
2885
+ xl: "h6-title"
2825
2886
  }
2826
2887
  },
2827
2888
  defaultVariants: {
2828
- size: "large"
2889
+ size: "lg"
2829
2890
  }
2830
2891
  });
2831
2892
  var iconWrapperVariants3 = cva18(
@@ -2833,15 +2894,17 @@ var iconWrapperVariants3 = cva18(
2833
2894
  {
2834
2895
  variants: {
2835
2896
  size: {
2836
- large: "size-5 [&>svg]:size-5",
2837
- "extra-large": "size-6 [&>svg]:size-6"
2897
+ sm: "size-4 [&>svg]:size-4",
2898
+ md: "size-5 [&>svg]:size-5",
2899
+ lg: "size-5 [&>svg]:size-5",
2900
+ xl: "size-6 [&>svg]:size-6"
2838
2901
  },
2839
2902
  disabled: {
2840
2903
  true: "text-(--icon-primary-disabled)"
2841
2904
  }
2842
2905
  },
2843
2906
  defaultVariants: {
2844
- size: "large"
2907
+ size: "lg"
2845
2908
  }
2846
2909
  }
2847
2910
  );
@@ -2851,7 +2914,7 @@ var TextInput = (props) => {
2851
2914
  hint,
2852
2915
  hideHint,
2853
2916
  placeholder = "Placeholder text",
2854
- size = "large",
2917
+ size = "lg",
2855
2918
  status = "default",
2856
2919
  disabled = false,
2857
2920
  className,
@@ -3040,21 +3103,22 @@ var WebsiteInput = (props) => {
3040
3103
  hierarchy = "leading",
3041
3104
  protocolLabel = "http://",
3042
3105
  icon,
3043
- size = "large",
3106
+ size = "lg",
3044
3107
  disabled,
3045
3108
  className,
3046
3109
  ...rest
3047
3110
  } = props;
3048
3111
  const isLeading = hierarchy === "leading";
3112
+ const spanHeightClass = size === "xl" ? "[&>span]:h-14!" : size === "lg" ? "[&>span]:h-11!" : size === "md" ? "[&>span]:h-10!" : "[&>span]:h-8!";
3049
3113
  const baseClass = cn(
3050
3114
  "[&>span]:w-[unset] hover:bg-[unset]",
3051
3115
  !disabled && "[&:not(:focus-within):hover]:shadow-[0_0_0_var(--focus-ring-spread)_var(--background-secondary-hover)]",
3052
3116
  disabled && "bg-[unset] hover:shadow-none hover:border-(--border-secondary-disabled) border-(--border-secondary-disabled)",
3053
- size === "extra-large" ? "[&>span]:h-14!" : "[&>span]:h-11!"
3117
+ spanHeightClass
3054
3118
  );
3055
3119
  const addonTextClass = cn(
3056
3120
  "flex mb-0!",
3057
- size === "extra-large" ? "paragraph-m" : "paragraph-s",
3121
+ size === "xl" ? "paragraph-m" : size === "sm" ? "paragraph-m" : "paragraph-s",
3058
3122
  disabled ? "text-primary-disabled" : "text-primary group-hover:text-(--color-primary-hover) group-focus-within:text-(--color-primary-focus)"
3059
3123
  );
3060
3124
  const baseAddonClass = cn(
@@ -3067,7 +3131,7 @@ var WebsiteInput = (props) => {
3067
3131
  );
3068
3132
  const iconWrapperClass = cn(
3069
3133
  "flex items-center justify-center shrink-0",
3070
- size === "extra-large" ? "[&>svg]:w-6 [&>svg]:h-6" : "[&>svg]:w-5 [&>svg]:h-5",
3134
+ size === "xl" ? "[&>svg]:w-6 [&>svg]:h-6" : size === "sm" ? "[&>svg]:w-4 [&>svg]:h-4" : "[&>svg]:w-5 [&>svg]:h-5",
3071
3135
  disabled ? "text-(--icon-primary-disabled)" : "text-(--icon-primary) group-hover:text-(--icon-primary-hover) group-focus-within:text-(--icon-primary-focus)"
3072
3136
  );
3073
3137
  const leadingAddon = /* @__PURE__ */ jsxs25("div", { className: baseAddonClass, children: [