@luxfi/ui 7.4.15 → 8.0.0

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.
Files changed (228) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/accordion.d.ts +10 -12
  3. package/dist/accordion.d.ts.map +1 -0
  4. package/dist/alert.cjs +7 -11
  5. package/dist/alert.d.ts +4 -5
  6. package/dist/alert.d.ts.map +1 -0
  7. package/dist/alert.js +1 -5
  8. package/dist/auth.d.ts +11 -13
  9. package/dist/auth.d.ts.map +1 -0
  10. package/dist/avatar.d.ts +5 -6
  11. package/dist/avatar.d.ts.map +1 -0
  12. package/dist/badge.cjs +7 -11
  13. package/dist/badge.d.ts +7 -8
  14. package/dist/badge.d.ts.map +1 -0
  15. package/dist/badge.js +1 -5
  16. package/dist/bank.d.ts +38 -43
  17. package/dist/bank.d.ts.map +1 -0
  18. package/dist/button.cjs +7 -11
  19. package/dist/button.d.ts +8 -9
  20. package/dist/button.d.ts.map +1 -0
  21. package/dist/button.js +1 -5
  22. package/dist/checkbox.d.ts +6 -7
  23. package/dist/checkbox.d.ts.map +1 -0
  24. package/dist/chrome.cjs +4 -8
  25. package/dist/chrome.d.ts +15 -19
  26. package/dist/chrome.d.ts.map +1 -0
  27. package/dist/chrome.js +1 -5
  28. package/dist/close-button.d.ts +3 -5
  29. package/dist/close-button.d.ts.map +1 -0
  30. package/dist/collapsible.cjs +19 -23
  31. package/dist/collapsible.d.ts +11 -13
  32. package/dist/collapsible.d.ts.map +1 -0
  33. package/dist/collapsible.js +1 -5
  34. package/dist/color-mode.d.ts +7 -9
  35. package/dist/color-mode.d.ts.map +1 -0
  36. package/dist/dialog.cjs +7 -11
  37. package/dist/dialog.d.ts +50 -54
  38. package/dist/dialog.d.ts.map +1 -0
  39. package/dist/dialog.js +1 -5
  40. package/dist/drawer.d.ts +33 -38
  41. package/dist/drawer.d.ts.map +1 -0
  42. package/dist/empty-state.d.ts +4 -6
  43. package/dist/empty-state.d.ts.map +1 -0
  44. package/dist/engine.d.ts +35 -0
  45. package/dist/engine.d.ts.map +1 -0
  46. package/dist/expiration-selector.d.ts +4 -6
  47. package/dist/expiration-selector.d.ts.map +1 -0
  48. package/dist/field.d.ts +5 -7
  49. package/dist/field.d.ts.map +1 -0
  50. package/dist/greeks-display.d.ts +3 -5
  51. package/dist/greeks-display.d.ts.map +1 -0
  52. package/dist/gui.d.ts +1 -1
  53. package/dist/gui.d.ts.map +1 -0
  54. package/dist/heading.d.ts +4 -6
  55. package/dist/heading.d.ts.map +1 -0
  56. package/dist/iam.d.ts +10 -12
  57. package/dist/iam.d.ts.map +1 -0
  58. package/dist/icon-button.cjs +7 -11
  59. package/dist/icon-button.d.ts +4 -5
  60. package/dist/icon-button.d.ts.map +1 -0
  61. package/dist/icon-button.js +1 -5
  62. package/dist/icons.d.ts +1 -0
  63. package/dist/icons.d.ts.map +1 -0
  64. package/dist/identity.d.ts +9 -11
  65. package/dist/identity.d.ts.map +1 -0
  66. package/dist/image.cjs +8 -12
  67. package/dist/image.d.ts +10 -11
  68. package/dist/image.d.ts.map +1 -0
  69. package/dist/image.js +1 -5
  70. package/dist/index.cjs +65 -66
  71. package/dist/index.d.ts +86 -60
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +6 -9
  74. package/dist/ink.d.ts +14 -0
  75. package/dist/ink.d.ts.map +1 -0
  76. package/dist/input-group.d.ts +4 -6
  77. package/dist/input-group.d.ts.map +1 -0
  78. package/dist/input.d.ts +8 -9
  79. package/dist/input.d.ts.map +1 -0
  80. package/dist/link.cjs +19 -23
  81. package/dist/link.d.ts +9 -11
  82. package/dist/link.d.ts.map +1 -0
  83. package/dist/link.js +1 -5
  84. package/dist/lux.config.d.ts +521 -524
  85. package/dist/lux.config.d.ts.map +1 -0
  86. package/dist/menu.d.ts +30 -31
  87. package/dist/menu.d.ts.map +1 -0
  88. package/dist/next.d.ts +5 -7
  89. package/dist/next.d.ts.map +1 -0
  90. package/dist/option-chain.d.ts +6 -8
  91. package/dist/option-chain.d.ts.map +1 -0
  92. package/dist/option-position.d.ts +4 -6
  93. package/dist/option-position.d.ts.map +1 -0
  94. package/dist/pin-input.cjs +1 -1
  95. package/dist/pin-input.d.ts +3 -5
  96. package/dist/pin-input.d.ts.map +1 -0
  97. package/dist/pin-input.js +1 -1
  98. package/dist/pnl-diagram.d.ts +5 -6
  99. package/dist/pnl-diagram.d.ts.map +1 -0
  100. package/dist/popover.cjs +9 -13
  101. package/dist/popover.d.ts +24 -25
  102. package/dist/popover.d.ts.map +1 -0
  103. package/dist/popover.js +1 -5
  104. package/dist/progress-circle.cjs +2 -6
  105. package/dist/progress-circle.d.ts +8 -9
  106. package/dist/progress-circle.d.ts.map +1 -0
  107. package/dist/progress-circle.js +1 -5
  108. package/dist/progress.d.ts +3 -4
  109. package/dist/progress.d.ts.map +1 -0
  110. package/dist/provider.d.ts +8 -10
  111. package/dist/provider.d.ts.map +1 -0
  112. package/dist/radio.d.ts +6 -7
  113. package/dist/radio.d.ts.map +1 -0
  114. package/dist/rating.d.ts +3 -5
  115. package/dist/rating.d.ts.map +1 -0
  116. package/dist/select.cjs +16 -20
  117. package/dist/select.d.ts +38 -41
  118. package/dist/select.d.ts.map +1 -0
  119. package/dist/select.js +1 -5
  120. package/dist/separator.d.ts +5 -6
  121. package/dist/separator.d.ts.map +1 -0
  122. package/dist/skeleton.cjs +7 -11
  123. package/dist/skeleton.d.ts +9 -12
  124. package/dist/skeleton.d.ts.map +1 -0
  125. package/dist/skeleton.js +1 -5
  126. package/dist/slider.cjs +1 -1
  127. package/dist/slider.d.ts +3 -5
  128. package/dist/slider.d.ts.map +1 -0
  129. package/dist/slider.js +1 -1
  130. package/dist/strategy-builder.d.ts +6 -8
  131. package/dist/strategy-builder.d.ts.map +1 -0
  132. package/dist/switch.cjs +1 -1
  133. package/dist/switch.d.ts +3 -5
  134. package/dist/switch.d.ts.map +1 -0
  135. package/dist/switch.js +1 -1
  136. package/dist/table.cjs +30 -34
  137. package/dist/table.d.ts +23 -25
  138. package/dist/table.d.ts.map +1 -0
  139. package/dist/table.js +1 -5
  140. package/dist/tabs.d.ts +12 -13
  141. package/dist/tabs.d.ts.map +1 -0
  142. package/dist/tag.cjs +7 -11
  143. package/dist/tag.d.ts +4 -5
  144. package/dist/tag.d.ts.map +1 -0
  145. package/dist/tag.js +1 -5
  146. package/dist/textarea.d.ts +5 -6
  147. package/dist/textarea.d.ts.map +1 -0
  148. package/dist/toaster.d.ts +4 -5
  149. package/dist/toaster.d.ts.map +1 -0
  150. package/dist/tooltip.d.ts +3 -5
  151. package/dist/tooltip.d.ts.map +1 -0
  152. package/dist/use-narrow.d.ts +6 -7
  153. package/dist/use-narrow.d.ts.map +1 -0
  154. package/dist/utils/cn.d.ts +2 -0
  155. package/dist/utils/cn.d.ts.map +1 -0
  156. package/dist/utils.cjs +6 -7
  157. package/dist/utils.d.ts +13 -5
  158. package/dist/utils.d.ts.map +1 -0
  159. package/dist/utils.js +1 -9
  160. package/dist/vite.d.ts +3 -3
  161. package/dist/vite.d.ts.map +1 -0
  162. package/dist/white-label.d.ts +12 -12
  163. package/dist/white-label.d.ts.map +1 -0
  164. package/package.json +19 -17
  165. package/src/pin-input.tsx +1 -1
  166. package/src/slider.tsx +1 -1
  167. package/src/switch.tsx +1 -1
  168. package/src/utils/cn.ts +3 -7
  169. package/src/utils.ts +12 -6
  170. package/tokens.css +11 -0
  171. package/dist/accordion.d.cts +0 -41
  172. package/dist/alert.d.cts +0 -30
  173. package/dist/auth.d.cts +0 -80
  174. package/dist/avatar.d.cts +0 -25
  175. package/dist/badge.d.cts +0 -19
  176. package/dist/bank.d.cts +0 -83
  177. package/dist/button.d.cts +0 -51
  178. package/dist/checkbox.d.cts +0 -32
  179. package/dist/chrome.d.cts +0 -93
  180. package/dist/close-button.d.cts +0 -9
  181. package/dist/collapsible.d.cts +0 -24
  182. package/dist/color-mode.d.cts +0 -25
  183. package/dist/dialog.d.cts +0 -118
  184. package/dist/drawer.d.cts +0 -69
  185. package/dist/empty-state.d.cts +0 -13
  186. package/dist/expiration-selector.d.cts +0 -16
  187. package/dist/field.d.cts +0 -23
  188. package/dist/greeks-display.d.cts +0 -14
  189. package/dist/gui.d.cts +0 -2
  190. package/dist/heading.d.cts +0 -8
  191. package/dist/iam.d.cts +0 -65
  192. package/dist/icon-button.d.cts +0 -37
  193. package/dist/icons.d.cts +0 -1
  194. package/dist/identity.d.cts +0 -64
  195. package/dist/image.d.cts +0 -57
  196. package/dist/index.d.cts +0 -60
  197. package/dist/input-group.d.cts +0 -17
  198. package/dist/input.d.cts +0 -37
  199. package/dist/link.d.cts +0 -37
  200. package/dist/lux.config.d.cts +0 -981
  201. package/dist/menu.d.cts +0 -68
  202. package/dist/next.d.cts +0 -32
  203. package/dist/option-chain.d.cts +0 -37
  204. package/dist/option-position.d.cts +0 -29
  205. package/dist/pin-input.d.cts +0 -25
  206. package/dist/pnl-diagram.d.cts +0 -11
  207. package/dist/popover.d.cts +0 -73
  208. package/dist/progress-circle.d.cts +0 -47
  209. package/dist/progress.d.cts +0 -28
  210. package/dist/provider.d.cts +0 -25
  211. package/dist/radio.d.cts +0 -53
  212. package/dist/rating.d.cts +0 -14
  213. package/dist/select.d.cts +0 -161
  214. package/dist/separator.d.cts +0 -13
  215. package/dist/skeleton.d.cts +0 -76
  216. package/dist/slider.d.cts +0 -24
  217. package/dist/strategy-builder.d.cts +0 -26
  218. package/dist/switch.d.cts +0 -27
  219. package/dist/table.d.cts +0 -107
  220. package/dist/tabs.d.cts +0 -34
  221. package/dist/tag.d.cts +0 -21
  222. package/dist/textarea.d.cts +0 -13
  223. package/dist/toaster.d.cts +0 -28
  224. package/dist/tooltip.d.cts +0 -38
  225. package/dist/use-narrow.d.cts +0 -12
  226. package/dist/utils.d.cts +0 -5
  227. package/dist/vite.d.cts +0 -29
  228. package/dist/white-label.d.cts +0 -59
package/dist/index.cjs CHANGED
@@ -8,8 +8,7 @@ var guiConfig = require('@hanzo/ui/gui-config');
8
8
  var v5 = require('@hanzogui/config/v5');
9
9
  var v5Css = require('@hanzogui/config/v5-css');
10
10
  var jsxRuntime = require('react/jsx-runtime');
11
- var clsx = require('clsx');
12
- var tailwindMerge = require('tailwind-merge');
11
+ var ui = require('@hanzo/ui');
13
12
  var lucideReact = require('lucide-react');
14
13
  var usehooks = require('@uidotdev/usehooks');
15
14
  var esToolkit = require('es-toolkit');
@@ -245,9 +244,6 @@ var AppProvider = ({
245
244
  const theme = defaultTheme ?? whiteLabel.theme;
246
245
  return /* @__PURE__ */ jsxRuntime.jsx(WhiteLabelContext.Provider, { value: whiteLabel, children: /* @__PURE__ */ jsxRuntime.jsx(gui.GuiProvider, { config: lux_config_default, defaultTheme: theme, children: /* @__PURE__ */ jsxRuntime.jsx(reactQuery.QueryClientProvider, { client: queryClient ?? defaultQueryClient, children }) }) });
247
246
  };
248
- function cn(...inputs) {
249
- return tailwindMerge.twMerge(clsx.clsx(inputs));
250
- }
251
247
  var NARROW_PX = 640;
252
248
  var TOUCH_PX = 1024;
253
249
  function useBelow(px) {
@@ -932,7 +928,7 @@ var Row = ({ item, onDone, menu }) => {
932
928
  item.hint ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs opacity-60", children: item.hint }) : null,
933
929
  item.selected ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { "aria-hidden": "true", className: "h-4 w-4 shrink-0" }) : null
934
930
  ] });
935
- const className = cn(
931
+ const className = ui.cn(
936
932
  "flex w-full cursor-pointer select-none items-center gap-2.5 rounded-md px-2 py-2 text-left text-sm",
937
933
  "hover:bg-[rgba(127,127,127,0.14)]",
938
934
  item.danger && "text-[var(--color-text-error,#e5484d)]"
@@ -985,7 +981,7 @@ var Switcher = ({
985
981
  "aria-label": title,
986
982
  "aria-haspopup": "menu",
987
983
  "aria-expanded": open,
988
- className: cn(
984
+ className: ui.cn(
989
985
  "flex max-w-[14rem] items-center gap-2 rounded-md px-2 py-1.5 text-sm font-medium",
990
986
  "hover:bg-[rgba(127,127,127,0.14)]"
991
987
  ),
@@ -1159,7 +1155,7 @@ var AppNav = ({
1159
1155
  {
1160
1156
  href: l.href,
1161
1157
  "aria-current": l.active ? "page" : void 0,
1162
- className: cn(
1158
+ className: ui.cn(
1163
1159
  "rounded-md px-3 py-1.5 text-sm font-medium",
1164
1160
  l.active ? "bg-[rgba(127,127,127,0.14)]" : "opacity-75 hover:opacity-100"
1165
1161
  ),
@@ -1410,7 +1406,7 @@ var Skeleton = React32__namespace.forwardRef(
1410
1406
  const shimStyle = shimToStyle(props);
1411
1407
  const mergedStyle = Object.keys(shimStyle).length > 0 || styleProp ? { ...shimStyle, ...styleProp } : void 0;
1412
1408
  const hideBelowClass = props.hideBelow ? HIDE_BELOW_MAP[props.hideBelow] : void 0;
1413
- const cls = hideBelowClass ? cn(className, hideBelowClass) : className;
1409
+ const cls = hideBelowClass ? ui.cn(className, hideBelowClass) : className;
1414
1410
  const htmlRest = stripShims(allRest);
1415
1411
  if (!loading) {
1416
1412
  if (asChild && React32__namespace.isValidElement(children)) return children;
@@ -1422,7 +1418,7 @@ var Skeleton = React32__namespace.forwardRef(
1422
1418
  {
1423
1419
  ref,
1424
1420
  "data-loading": true,
1425
- className: cn(SKELETON_CLASSES, "[&_*]:invisible", cls),
1421
+ className: ui.cn(SKELETON_CLASSES, "[&_*]:invisible", cls),
1426
1422
  style: mergedStyle,
1427
1423
  ...htmlRest,
1428
1424
  children
@@ -1434,7 +1430,7 @@ var Skeleton = React32__namespace.forwardRef(
1434
1430
  {
1435
1431
  ref,
1436
1432
  "data-loading": true,
1437
- className: cn(SKELETON_CLASSES, children ? "[&_*]:invisible" : "min-h-5", cls),
1433
+ className: ui.cn(SKELETON_CLASSES, children ? "[&_*]:invisible" : "min-h-5", cls),
1438
1434
  style: mergedStyle,
1439
1435
  ...htmlRest,
1440
1436
  children
@@ -1451,7 +1447,7 @@ var SkeletonCircle = React32__namespace.forwardRef(
1451
1447
  {
1452
1448
  ref,
1453
1449
  loading,
1454
- className: cn("rounded-full shrink-0", className),
1450
+ className: ui.cn("rounded-full shrink-0", className),
1455
1451
  style: { width: dimension, height: dimension, ...rest.style },
1456
1452
  ...rest
1457
1453
  }
@@ -1461,11 +1457,11 @@ var SkeletonCircle = React32__namespace.forwardRef(
1461
1457
  var SkeletonText = React32__namespace.forwardRef(
1462
1458
  function SkeletonText2(props, ref) {
1463
1459
  const { noOfLines = 3, loading = true, className, ...rest } = props;
1464
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("flex w-full flex-col gap-2", className), ...rest, children: Array.from({ length: noOfLines }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
1460
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: ui.cn("flex w-full flex-col gap-2", className), ...rest, children: Array.from({ length: noOfLines }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
1465
1461
  Skeleton,
1466
1462
  {
1467
1463
  loading,
1468
- className: cn("h-4", index === noOfLines - 1 && "max-w-[80%]")
1464
+ className: ui.cn("h-4", index === noOfLines - 1 && "max-w-[80%]")
1469
1465
  },
1470
1466
  index
1471
1467
  )) });
@@ -2520,40 +2516,40 @@ function stripUtmParams(url) {
2520
2516
  }
2521
2517
  }
2522
2518
  var VARIANT_CLASSES2 = {
2523
- primary: cn(
2519
+ primary: ui.cn(
2524
2520
  "text-[var(--color-link-primary)]",
2525
2521
  "hover:no-underline hover:text-[var(--color-link-primary-hover)]",
2526
2522
  "data-[hover]:no-underline data-[hover]:text-[var(--color-link-primary-hover)]"
2527
2523
  ),
2528
- secondary: cn(
2524
+ secondary: ui.cn(
2529
2525
  "text-[var(--color-link-secondary)]",
2530
2526
  "hover:no-underline hover:text-[var(--color-hover)]",
2531
2527
  "data-[hover]:no-underline data-[hover]:text-[var(--color-hover)]"
2532
2528
  ),
2533
- subtle: cn(
2529
+ subtle: ui.cn(
2534
2530
  "text-[var(--color-link-subtle)]",
2535
2531
  "hover:text-[var(--color-link-subtle-hover)] hover:underline hover:decoration-[var(--color-link-subtle-hover)]",
2536
2532
  "data-[hover]:text-[var(--color-link-subtle-hover)] data-[hover]:underline data-[hover]:decoration-[var(--color-link-subtle-hover)]"
2537
2533
  ),
2538
- underlaid: cn(
2534
+ underlaid: ui.cn(
2539
2535
  "text-[var(--color-link-primary)] bg-[var(--color-link-underlaid-bg)]",
2540
2536
  "px-2 py-1.5 rounded-md text-sm",
2541
2537
  "hover:text-[var(--color-link-primary-hover)] hover:no-underline",
2542
2538
  "data-[hover]:text-[var(--color-link-primary-hover)] data-[hover]:no-underline"
2543
2539
  ),
2544
- menu: cn(
2540
+ menu: ui.cn(
2545
2541
  "text-[var(--color-link-menu)]",
2546
2542
  "hover:text-[var(--color-hover)] hover:no-underline",
2547
2543
  "data-[hover]:text-[var(--color-hover)] data-[hover]:no-underline"
2548
2544
  ),
2549
- navigation: cn(
2545
+ navigation: ui.cn(
2550
2546
  "text-[var(--color-link-nav-fg)] bg-transparent",
2551
2547
  "hover:text-[var(--color-link-nav-fg-hover)] hover:no-underline",
2552
2548
  "data-[hover]:text-[var(--color-link-nav-fg-hover)] data-[hover]:no-underline",
2553
2549
  "data-[selected]:text-[var(--color-link-nav-fg-selected)] data-[selected]:bg-[var(--color-link-nav-bg-selected)]",
2554
2550
  "data-[active]:text-[var(--color-link-nav-fg-active)]"
2555
2551
  ),
2556
- plain: cn(
2552
+ plain: ui.cn(
2557
2553
  "text-inherit",
2558
2554
  "hover:no-underline",
2559
2555
  "data-[hover]:no-underline"
@@ -2563,7 +2559,7 @@ var BASE_CLASSES2 = "inline-flex items-center gap-0 cursor-pointer data-[disable
2563
2559
  var LinkExternalIcon = ({ color }) => /* @__PURE__ */ jsxRuntime.jsx(
2564
2560
  ArrowIcon,
2565
2561
  {
2566
- className: cn(
2562
+ className: ui.cn(
2567
2563
  "size-3 align-middle shrink-0",
2568
2564
  "group-hover:text-inherit"
2569
2565
  ),
@@ -2628,7 +2624,7 @@ var Link = React32__namespace.default.forwardRef(
2628
2624
  if (_minW !== void 0) shimStyle.minWidth = typeof _minW === "number" ? `${_minW * SPACING}px` : _minW;
2629
2625
  if (_justifyContent) shimStyle.justifyContent = _justifyContent;
2630
2626
  if (_position) shimStyle.position = _position;
2631
- const linkClasses = cn(BASE_CLASSES2, VARIANT_CLASSES2[variant], className);
2627
+ const linkClasses = ui.cn(BASE_CLASSES2, VARIANT_CLASSES2[variant], className);
2632
2628
  const linkStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
2633
2629
  if (external) {
2634
2630
  const processedHref = typeof href === "string" ? stripUtmParams(href) : href;
@@ -2636,7 +2632,7 @@ var Link = React32__namespace.default.forwardRef(
2636
2632
  "a",
2637
2633
  {
2638
2634
  href: processedHref,
2639
- className: cn("group", linkClasses),
2635
+ className: ui.cn("group", linkClasses),
2640
2636
  style: linkStyle,
2641
2637
  target: "_blank",
2642
2638
  rel: "noopener noreferrer",
@@ -2680,7 +2676,7 @@ var LinkBox = React32__namespace.default.forwardRef(
2680
2676
  "div",
2681
2677
  {
2682
2678
  ref,
2683
- className: cn("relative", className),
2679
+ className: ui.cn("relative", className),
2684
2680
  ...rest
2685
2681
  }
2686
2682
  );
@@ -2716,7 +2712,7 @@ var LinkOverlay = React32__namespace.default.forwardRef(
2716
2712
  position: _p2,
2717
2713
  ...rest
2718
2714
  } = props;
2719
- const overlayClasses = cn(
2715
+ const overlayClasses = ui.cn(
2720
2716
  BASE_CLASSES2,
2721
2717
  VARIANT_CLASSES2[variant],
2722
2718
  // Static positioning with a ::before pseudo-element that covers the LinkBox
@@ -3005,7 +3001,7 @@ var DialogContent = React32__namespace.forwardRef(function DialogContent2(props,
3005
3001
  /* @__PURE__ */ jsxRuntime.jsx(
3006
3002
  "div",
3007
3003
  {
3008
- className: cn(
3004
+ className: ui.cn(
3009
3005
  "fixed inset-0 z-[1400] flex w-screen h-dvh",
3010
3006
  "items-start lg:items-center justify-center",
3011
3007
  "overflow-hidden"
@@ -3015,7 +3011,7 @@ var DialogContent = React32__namespace.forwardRef(function DialogContent2(props,
3015
3011
  {
3016
3012
  ref,
3017
3013
  unstyled: true,
3018
- className: cn(
3014
+ className: ui.cn(
3019
3015
  // Base content styles
3020
3016
  "relative flex flex-col w-full p-6 outline-none text-base",
3021
3017
  "bg-dialog-bg text-dialog-fg shadow-lg rounded-xl",
@@ -3046,7 +3042,7 @@ var DialogHeader = React32__namespace.forwardRef(function DialogHeader2(props, r
3046
3042
  "div",
3047
3043
  {
3048
3044
  ref,
3049
- className: cn(
3045
+ className: ui.cn(
3050
3046
  "flex-none p-0 mb-2 flex items-center gap-x-2 min-h-[40px]",
3051
3047
  className
3052
3048
  ),
@@ -3057,7 +3053,7 @@ var DialogHeader = React32__namespace.forwardRef(function DialogHeader2(props, r
3057
3053
  gui.Dialog.Title,
3058
3054
  {
3059
3055
  unstyled: true,
3060
- className: cn(
3056
+ className: ui.cn(
3061
3057
  "text-base lg:text-lg font-medium",
3062
3058
  "whitespace-nowrap overflow-hidden text-ellipsis"
3063
3059
  ),
@@ -3080,7 +3076,7 @@ var DialogBody = React32__namespace.forwardRef(function DialogBody2({ className,
3080
3076
  "div",
3081
3077
  {
3082
3078
  ref,
3083
- className: cn("flex-1 p-0 overflow-auto", className),
3079
+ className: ui.cn("flex-1 p-0 overflow-auto", className),
3084
3080
  style: Object.keys(bodyStyle).length > 0 ? bodyStyle : void 0,
3085
3081
  ...props
3086
3082
  }
@@ -3091,7 +3087,7 @@ var DialogFooter = React32__namespace.forwardRef(function DialogFooter2({ classN
3091
3087
  "div",
3092
3088
  {
3093
3089
  ref,
3094
- className: cn("flex items-center justify-start gap-6 p-0 mt-6", className),
3090
+ className: ui.cn("flex items-center justify-start gap-6 p-0 mt-6", className),
3095
3091
  ...props
3096
3092
  }
3097
3093
  );
@@ -3640,7 +3636,7 @@ var Image = React32__namespace.default.forwardRef(
3640
3636
  alt: alt || "",
3641
3637
  onError: handleLoadError,
3642
3638
  onLoad: handleLoadSuccess,
3643
- className: cn(className),
3639
+ className: ui.cn(className),
3644
3640
  style: mergedStyle,
3645
3641
  ...extraProps
3646
3642
  }
@@ -3843,7 +3839,7 @@ var BOX = {
3843
3839
  hoverStyle: { borderColor: "var(--color-input-border-hover)" },
3844
3840
  focusStyle: {
3845
3841
  borderColor: "var(--color-input-border-focus)",
3846
- boxShadow: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)"
3842
+ boxShadow: "var(--shadow-md)"
3847
3843
  },
3848
3844
  disabledStyle: { opacity: 0.4 }
3849
3845
  };
@@ -4083,7 +4079,7 @@ var PopoverContent = React32__namespace.forwardRef(function PopoverContent2(prop
4083
4079
  {
4084
4080
  ref,
4085
4081
  unstyled: true,
4086
- className: cn(
4082
+ className: ui.cn(
4087
4083
  "z-50 rounded-lg border border-[var(--color-popover-border,var(--color-border-divider))]",
4088
4084
  "bg-[var(--color-popover-bg,var(--color-dialog-bg))]",
4089
4085
  "shadow-[var(--shadow-popover)]",
@@ -4106,7 +4102,7 @@ var PopoverArrow = React32__namespace.forwardRef(function PopoverArrow2(props, r
4106
4102
  {
4107
4103
  ref,
4108
4104
  unstyled: true,
4109
- className: cn("fill-[var(--color-popover-bg,var(--color-dialog-bg))]", className),
4105
+ className: ui.cn("fill-[var(--color-popover-bg,var(--color-dialog-bg))]", className),
4110
4106
  ...rest
4111
4107
  }
4112
4108
  );
@@ -4117,7 +4113,7 @@ var PopoverCloseTrigger = React32__namespace.forwardRef(function PopoverCloseTri
4117
4113
  gui.Popover.Close,
4118
4114
  {
4119
4115
  unstyled: true,
4120
- className: cn("absolute top-1 right-1", className),
4116
+ className: ui.cn("absolute top-1 right-1", className),
4121
4117
  ...rest,
4122
4118
  asChild: true,
4123
4119
  ref,
@@ -4164,7 +4160,7 @@ var PopoverBody = React32__namespace.forwardRef(function PopoverBody2(props, ref
4164
4160
  "div",
4165
4161
  {
4166
4162
  ref,
4167
- className: cn("p-4", className),
4163
+ className: ui.cn("p-4", className),
4168
4164
  style: Object.keys(bodyStyle).length > 0 ? bodyStyle : void 0,
4169
4165
  ...rest
4170
4166
  }
@@ -4176,7 +4172,7 @@ var PopoverHeader = React32__namespace.forwardRef(function PopoverHeader2(props,
4176
4172
  "div",
4177
4173
  {
4178
4174
  ref,
4179
- className: cn("px-4 pt-4 pb-0 font-semibold", className),
4175
+ className: ui.cn("px-4 pt-4 pb-0 font-semibold", className),
4180
4176
  ...rest
4181
4177
  }
4182
4178
  );
@@ -4187,7 +4183,7 @@ var PopoverFooter = React32__namespace.forwardRef(function PopoverFooter2(props,
4187
4183
  "div",
4188
4184
  {
4189
4185
  ref,
4190
- className: cn("px-4 pb-4 pt-0", className),
4186
+ className: ui.cn("px-4 pb-4 pt-0", className),
4191
4187
  ...rest
4192
4188
  }
4193
4189
  );
@@ -4198,7 +4194,7 @@ var PopoverTitle = React32__namespace.forwardRef(function PopoverTitle2(props, r
4198
4194
  "h3",
4199
4195
  {
4200
4196
  ref,
4201
- className: cn("text-base font-semibold", className),
4197
+ className: ui.cn("text-base font-semibold", className),
4202
4198
  ...rest
4203
4199
  }
4204
4200
  );
@@ -4209,7 +4205,7 @@ var PopoverDescription = React32__namespace.forwardRef(function PopoverDescripti
4209
4205
  "p",
4210
4206
  {
4211
4207
  ref,
4212
- className: cn("text-sm", className),
4208
+ className: ui.cn("text-sm", className),
4213
4209
  ...rest
4214
4210
  }
4215
4211
  );
@@ -4351,7 +4347,7 @@ var ProgressCircleRing = React32__namespace.forwardRef(function ProgressCircleRi
4351
4347
  width: size,
4352
4348
  height: size,
4353
4349
  viewBox: `0 0 ${size} ${size}`,
4354
- className: value === null ? cn("lux-spin", className) : className,
4350
+ className: value === null ? ui.cn("lux-spin", className) : className,
4355
4351
  ...rest,
4356
4352
  children: [
4357
4353
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4601,7 +4597,7 @@ function FilterInput({ placeholder, initialValue = "", onChange }) {
4601
4597
  placeholder,
4602
4598
  value,
4603
4599
  onChange: handleChange,
4604
- className: cn(
4600
+ className: ui.cn(
4605
4601
  "w-full px-3 py-2 text-sm outline-none",
4606
4602
  "bg-transparent border-b border-[var(--color-border-divider)]",
4607
4603
  "placeholder:text-[var(--color-input-placeholder)]"
@@ -4714,7 +4710,7 @@ var SelectRoot = React32__namespace.forwardRef(
4714
4710
  "div",
4715
4711
  {
4716
4712
  ref,
4717
- className: cn("relative inline-flex", className),
4713
+ className: ui.cn("relative inline-flex", className),
4718
4714
  style: inlineStyle,
4719
4715
  "data-invalid": invalid || void 0,
4720
4716
  "data-disabled": disabled || void 0,
@@ -4739,7 +4735,7 @@ var SelectControl = React32__namespace.forwardRef(
4739
4735
  ref,
4740
4736
  asChild,
4741
4737
  unstyled: true,
4742
- className: cn(
4738
+ className: ui.cn(
4743
4739
  "group peer inline-flex items-center gap-2 cursor-pointer",
4744
4740
  "rounded-lg text-sm transition-colors outline-none",
4745
4741
  "border border-[var(--color-input-border)] bg-[var(--color-input-bg)] text-[var(--color-input-fg)]",
@@ -4778,7 +4774,7 @@ var SelectClearTrigger = React32__namespace.forwardRef(
4778
4774
  ref,
4779
4775
  type: "button",
4780
4776
  onClick: handleClick,
4781
- className: cn("pointer-events-auto", className),
4777
+ className: ui.cn("pointer-events-auto", className),
4782
4778
  "aria-label": "Clear selection",
4783
4779
  ...rest,
4784
4780
  children: /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "h-5 w-5", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M18 6L6 18M6 6l12 12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
@@ -4797,7 +4793,7 @@ var SelectContent = React32__namespace.forwardRef(
4797
4793
  /* @__PURE__ */ jsxRuntime.jsx(gui.Select.Content, { ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
4798
4794
  gui.Select.Viewport,
4799
4795
  {
4800
- className: cn(
4796
+ className: ui.cn(
4801
4797
  "min-w-[8rem] overflow-hidden rounded-lg p-1",
4802
4798
  "bg-[var(--color-popover-bg)] shadow-[var(--shadow-popover)]",
4803
4799
  "border border-[var(--color-border-divider)]",
@@ -4824,7 +4820,7 @@ var SelectItem = React32__namespace.forwardRef(
4824
4820
  ref,
4825
4821
  index: index ?? 0,
4826
4822
  value: item.value,
4827
- className: cn(
4823
+ className: ui.cn(
4828
4824
  "relative flex cursor-pointer select-none items-center gap-2",
4829
4825
  "rounded-md px-3 py-2 text-sm outline-none",
4830
4826
  "text-[var(--color-text-primary)]",
@@ -4858,7 +4854,7 @@ var SelectValueText = React32__namespace.forwardRef(
4858
4854
  const label = size === "lg" ? /* @__PURE__ */ jsxRuntime.jsx(
4859
4855
  "span",
4860
4856
  {
4861
- className: cn(
4857
+ className: ui.cn(
4862
4858
  "text-xs block",
4863
4859
  invalid ? "text-[var(--color-text-error)]" : "text-[var(--color-input-placeholder)]"
4864
4860
  ),
@@ -4892,7 +4888,7 @@ var SelectValueText = React32__namespace.forwardRef(
4892
4888
  {
4893
4889
  ref,
4894
4890
  placeholder: placeholderText,
4895
- className: cn("flex flex-col justify-center min-w-0 truncate", className),
4891
+ className: ui.cn("flex flex-col justify-center min-w-0 truncate", className),
4896
4892
  ...rest,
4897
4893
  children: content
4898
4894
  }
@@ -4902,7 +4898,7 @@ var SelectValueText = React32__namespace.forwardRef(
4902
4898
  var SelectItemGroup = React32__namespace.forwardRef(
4903
4899
  function SelectItemGroup2(props, ref) {
4904
4900
  const { children, label, className, ...rest } = props;
4905
- return /* @__PURE__ */ jsxRuntime.jsxs(gui.Select.Group, { ref, className: cn("py-1", className), ...rest, children: [
4901
+ return /* @__PURE__ */ jsxRuntime.jsxs(gui.Select.Group, { ref, className: ui.cn("py-1", className), ...rest, children: [
4906
4902
  /* @__PURE__ */ jsxRuntime.jsx(gui.Select.Label, { className: "px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)]", children: label }),
4907
4903
  children
4908
4904
  ] });
@@ -5091,7 +5087,7 @@ var Slider = React32__namespace.forwardRef(
5091
5087
  borderWidth: 2,
5092
5088
  borderColor: ACTIVE,
5093
5089
  backgroundColor: WHITE,
5094
- boxShadow: "0 1px 2px 0 rgba(0,0,0,0.05)",
5090
+ boxShadow: "var(--shadow-sm)",
5095
5091
  transition: "quick",
5096
5092
  hoverStyle: { borderColor: ACTIVE_HOVER },
5097
5093
  focusStyle: { outlineWidth: 2, outlineStyle: "solid", outlineColor: ACTIVE, outlineOffset: 2 },
@@ -5216,7 +5212,7 @@ var SwitchBase = React32__namespace.forwardRef(
5216
5212
  height: s.thumb,
5217
5213
  borderRadius: 9999,
5218
5214
  backgroundColor: WHITE2,
5219
- boxShadow: "0 1px 2px 0 rgba(0,0,0,0.05)",
5215
+ boxShadow: "var(--shadow-sm)",
5220
5216
  children: thumbLabel && /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { width: "100%", height: "100%", textAlign: "center", fontSize: 8, children: checkedState ? thumbLabel.on : thumbLabel.off })
5221
5217
  }
5222
5218
  )
@@ -5437,7 +5433,7 @@ var TableRoot = React32__namespace.forwardRef(
5437
5433
  "table",
5438
5434
  {
5439
5435
  ref,
5440
- className: cn("w-full border-collapse text-sm", className),
5436
+ className: ui.cn("w-full border-collapse text-sm", className),
5441
5437
  style: merged,
5442
5438
  ...rest,
5443
5439
  children
@@ -5454,7 +5450,7 @@ var TableHeader = React32__namespace.forwardRef(
5454
5450
  "thead",
5455
5451
  {
5456
5452
  ref,
5457
- className: cn("", className),
5453
+ className: ui.cn("", className),
5458
5454
  style: merged,
5459
5455
  ...rest,
5460
5456
  children
@@ -5471,7 +5467,7 @@ var TableBody = React32__namespace.forwardRef(
5471
5467
  "tbody",
5472
5468
  {
5473
5469
  ref,
5474
- className: cn("", className),
5470
+ className: ui.cn("", className),
5475
5471
  style: merged,
5476
5472
  ...rest,
5477
5473
  children
@@ -5488,7 +5484,7 @@ var TableRow = React32__namespace.forwardRef(
5488
5484
  "tr",
5489
5485
  {
5490
5486
  ref,
5491
- className: cn("", className),
5487
+ className: ui.cn("", className),
5492
5488
  style: merged,
5493
5489
  ...rest,
5494
5490
  children
@@ -5509,7 +5505,7 @@ var TableCell = React32__namespace.forwardRef(
5509
5505
  "td",
5510
5506
  {
5511
5507
  ref,
5512
- className: cn("px-3 py-2.5 align-top text-sm", className),
5508
+ className: ui.cn("px-3 py-2.5 align-top text-sm", className),
5513
5509
  style: merged,
5514
5510
  ...rest,
5515
5511
  children
@@ -5530,7 +5526,7 @@ var TableColumnHeader = React32__namespace.forwardRef(
5530
5526
  "th",
5531
5527
  {
5532
5528
  ref,
5533
- className: cn(
5529
+ className: ui.cn(
5534
5530
  "px-3 py-2 text-xs font-semibold uppercase tracking-wider",
5535
5531
  "bg-[var(--color-table-header-bg)] text-[var(--color-table-header-fg)]",
5536
5532
  className
@@ -5554,7 +5550,7 @@ var TableColumnHeaderSortable = (props) => {
5554
5550
  isActive && /* @__PURE__ */ jsxRuntime.jsx(
5555
5551
  "span",
5556
5552
  {
5557
- className: cn(
5553
+ className: ui.cn(
5558
5554
  "absolute top-0 inline-flex h-full w-4 items-center",
5559
5555
  indicatorPosition === "left" ? "-left-5" : "-right-5",
5560
5556
  isAsc ? "-rotate-90" : "rotate-90"
@@ -5590,7 +5586,7 @@ var TableHeaderSticky = (props) => {
5590
5586
  TableHeader,
5591
5587
  {
5592
5588
  ref,
5593
- className: cn("sticky z-[1] bg-white dark:bg-black", className),
5589
+ className: ui.cn("sticky z-[1] bg-white dark:bg-black", className),
5594
5590
  style: {
5595
5591
  top: top ? `${top}px` : 0,
5596
5592
  boxShadow: isStuck ? ACTION_BAR_SHADOW : "none",
@@ -5610,7 +5606,7 @@ var TableCaption = React32__namespace.forwardRef(
5610
5606
  "caption",
5611
5607
  {
5612
5608
  ref,
5613
- className: cn("px-3 py-2 text-sm text-[var(--color-table-header-fg)]", className),
5609
+ className: ui.cn("px-3 py-2 text-sm text-[var(--color-table-header-fg)]", className),
5614
5610
  style: merged,
5615
5611
  ...rest,
5616
5612
  children
@@ -5627,7 +5623,7 @@ var TableFooter = React32__namespace.forwardRef(
5627
5623
  "tfoot",
5628
5624
  {
5629
5625
  ref,
5630
- className: cn("", className),
5626
+ className: ui.cn("", className),
5631
5627
  style: merged,
5632
5628
  ...rest,
5633
5629
  children
@@ -5642,7 +5638,7 @@ var TableScrollWrapper = React32__namespace.forwardRef(
5642
5638
  "div",
5643
5639
  {
5644
5640
  ref,
5645
- className: cn("w-full overflow-x-auto", className),
5641
+ className: ui.cn("w-full overflow-x-auto", className),
5646
5642
  ...rest,
5647
5643
  children
5648
5644
  }
@@ -7660,6 +7656,10 @@ var BankPage = gui.styled(gui.View, {
7660
7656
  padding: 16
7661
7657
  });
7662
7658
 
7659
+ Object.defineProperty(exports, "cn", {
7660
+ enumerable: true,
7661
+ get: function () { return ui.cn; }
7662
+ });
7663
7663
  exports.AccordionItem = AccordionItem;
7664
7664
  exports.AccordionItemContent = AccordionItemContent;
7665
7665
  exports.AccordionItemTrigger = AccordionItemTrigger;
@@ -7812,7 +7812,6 @@ exports.Toaster = Toaster;
7812
7812
  exports.Tooltip = Tooltip;
7813
7813
  exports.UserMenu = UserMenu;
7814
7814
  exports.bankColors = bankColors;
7815
- exports.cn = cn;
7816
7815
  exports.config = config;
7817
7816
  exports.createListCollection = createListCollection;
7818
7817
  exports.currentHost = currentHost;