@luxfi/ui 7.1.0 → 7.3.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 (113) hide show
  1. package/dist/alert.cjs +22 -50
  2. package/dist/alert.js +22 -50
  3. package/dist/index.cjs +123 -179
  4. package/dist/index.js +123 -179
  5. package/dist/input.cjs +25 -36
  6. package/dist/input.js +25 -36
  7. package/dist/provider.cjs +35 -55
  8. package/dist/provider.js +16 -35
  9. package/dist/tag.cjs +15 -35
  10. package/dist/tag.js +15 -35
  11. package/dist/textarea.cjs +25 -36
  12. package/dist/textarea.js +25 -36
  13. package/package.json +6 -7
  14. package/src/alert.tsx +23 -51
  15. package/src/index.ts +1 -0
  16. package/src/input.tsx +27 -36
  17. package/src/provider.tsx +28 -6
  18. package/src/tag.tsx +17 -35
  19. package/src/textarea.tsx +27 -36
  20. package/dist/accordion.d.cts +0 -74
  21. package/dist/accordion.d.ts +0 -74
  22. package/dist/alert.d.cts +0 -30
  23. package/dist/alert.d.ts +0 -30
  24. package/dist/avatar.d.cts +0 -25
  25. package/dist/avatar.d.ts +0 -25
  26. package/dist/badge.d.cts +0 -19
  27. package/dist/badge.d.ts +0 -19
  28. package/dist/bank.d.cts +0 -76
  29. package/dist/bank.d.ts +0 -76
  30. package/dist/button.d.cts +0 -55
  31. package/dist/button.d.ts +0 -55
  32. package/dist/checkbox.d.cts +0 -31
  33. package/dist/checkbox.d.ts +0 -31
  34. package/dist/close-button.d.cts +0 -9
  35. package/dist/close-button.d.ts +0 -9
  36. package/dist/collapsible.d.cts +0 -23
  37. package/dist/collapsible.d.ts +0 -23
  38. package/dist/color-mode.d.cts +0 -25
  39. package/dist/color-mode.d.ts +0 -25
  40. package/dist/dialog.d.cts +0 -65
  41. package/dist/dialog.d.ts +0 -65
  42. package/dist/drawer.d.cts +0 -36
  43. package/dist/drawer.d.ts +0 -36
  44. package/dist/empty-state.d.cts +0 -13
  45. package/dist/empty-state.d.ts +0 -13
  46. package/dist/expiration-selector.d.cts +0 -16
  47. package/dist/expiration-selector.d.ts +0 -16
  48. package/dist/field.d.cts +0 -24
  49. package/dist/field.d.ts +0 -24
  50. package/dist/greeks-display.d.cts +0 -14
  51. package/dist/greeks-display.d.ts +0 -14
  52. package/dist/heading.d.cts +0 -10
  53. package/dist/heading.d.ts +0 -10
  54. package/dist/icon-button.d.cts +0 -33
  55. package/dist/icon-button.d.ts +0 -33
  56. package/dist/image.d.cts +0 -57
  57. package/dist/image.d.ts +0 -57
  58. package/dist/index.d.cts +0 -55
  59. package/dist/index.d.ts +0 -55
  60. package/dist/input-group.d.cts +0 -17
  61. package/dist/input-group.d.ts +0 -17
  62. package/dist/input.d.cts +0 -11
  63. package/dist/input.d.ts +0 -11
  64. package/dist/link.d.cts +0 -37
  65. package/dist/link.d.ts +0 -37
  66. package/dist/menu.d.cts +0 -84
  67. package/dist/menu.d.ts +0 -84
  68. package/dist/option-chain.d.cts +0 -37
  69. package/dist/option-chain.d.ts +0 -37
  70. package/dist/option-position.d.cts +0 -29
  71. package/dist/option-position.d.ts +0 -29
  72. package/dist/pin-input.d.cts +0 -25
  73. package/dist/pin-input.d.ts +0 -25
  74. package/dist/pnl-diagram.d.cts +0 -11
  75. package/dist/pnl-diagram.d.ts +0 -11
  76. package/dist/popover.d.cts +0 -73
  77. package/dist/popover.d.ts +0 -73
  78. package/dist/progress-circle.d.cts +0 -47
  79. package/dist/progress-circle.d.ts +0 -47
  80. package/dist/progress.d.cts +0 -28
  81. package/dist/progress.d.ts +0 -28
  82. package/dist/provider.d.cts +0 -7
  83. package/dist/provider.d.ts +0 -7
  84. package/dist/radio.d.cts +0 -53
  85. package/dist/radio.d.ts +0 -53
  86. package/dist/rating.d.cts +0 -14
  87. package/dist/rating.d.ts +0 -14
  88. package/dist/select.d.cts +0 -130
  89. package/dist/select.d.ts +0 -130
  90. package/dist/separator.d.cts +0 -13
  91. package/dist/separator.d.ts +0 -13
  92. package/dist/skeleton.d.cts +0 -60
  93. package/dist/skeleton.d.ts +0 -60
  94. package/dist/slider.d.cts +0 -24
  95. package/dist/slider.d.ts +0 -24
  96. package/dist/strategy-builder.d.cts +0 -26
  97. package/dist/strategy-builder.d.ts +0 -26
  98. package/dist/switch.d.cts +0 -27
  99. package/dist/switch.d.ts +0 -27
  100. package/dist/table.d.cts +0 -107
  101. package/dist/table.d.ts +0 -107
  102. package/dist/tabs.d.cts +0 -78
  103. package/dist/tabs.d.ts +0 -78
  104. package/dist/tag.d.cts +0 -21
  105. package/dist/tag.d.ts +0 -21
  106. package/dist/textarea.d.cts +0 -11
  107. package/dist/textarea.d.ts +0 -11
  108. package/dist/toaster.d.cts +0 -29
  109. package/dist/toaster.d.ts +0 -29
  110. package/dist/tooltip.d.cts +0 -38
  111. package/dist/tooltip.d.ts +0 -38
  112. package/dist/utils.d.cts +0 -5
  113. package/dist/utils.d.ts +0 -5
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use client";
2
+ import { styled, View, Text, createGui } from '@hanzogui/core';
3
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
4
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
5
  import { clsx } from 'clsx';
3
6
  import { twMerge } from 'tailwind-merge';
4
7
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
5
8
  import * as React29 from 'react';
6
9
  import React29__default from 'react';
7
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
- import { cva } from 'class-variance-authority';
9
- import { styled, View, Text } from '@hanzogui/core';
10
10
  import * as RadixAvatar from '@radix-ui/react-avatar';
11
11
  import { TooltipGroup, Tooltip as Tooltip$1 } from '@hanzogui/tooltip';
12
12
  import { useClickAway, useDebounce } from '@uidotdev/usehooks';
@@ -27,7 +27,20 @@ import * as RadixSwitch from '@radix-ui/react-switch';
27
27
  import * as RadixTabs from '@radix-ui/react-tabs';
28
28
  import { toast, Toaster as Toaster$1 } from 'sonner';
29
29
 
30
- // src/utils.ts
30
+ // src/provider.tsx
31
+ var _guiInitialized = false;
32
+ function ensureGui() {
33
+ if (_guiInitialized) return;
34
+ createGui({ settings: { autocompleteSpecificTokens: "except-special" } });
35
+ _guiInitialized = true;
36
+ }
37
+ ensureGui();
38
+ var defaultQueryClient = new QueryClient({
39
+ defaultOptions: { queries: { refetchOnWindowFocus: false, retry: 1, staleTime: 3e4 } }
40
+ });
41
+ var AppProvider = ({ children, queryClient }) => {
42
+ return /* @__PURE__ */ jsx(QueryClientProvider, { client: queryClient ?? defaultQueryClient, children });
43
+ };
31
44
  function cn(...inputs) {
32
45
  return twMerge(clsx(inputs));
33
46
  }
@@ -454,52 +467,22 @@ var SkeletonText = React29.forwardRef(
454
467
  }
455
468
  );
456
469
  var IndicatorIcon2 = ({ className }) => /* @__PURE__ */ jsx("svg", { className, viewBox: "0 0 20 20", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm.75-11.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM9.25 10a.75.75 0 011.5 0v3a.75.75 0 01-1.5 0v-3z" }) });
457
- var alertRoot = cva(
458
- // base
459
- "w-full flex items-start relative rounded text-[var(--color-alert-fg)]",
460
- {
461
- variants: {
462
- status: {
463
- info: "bg-[var(--color-alert-bg-info)]",
464
- warning: "bg-[var(--color-alert-bg-warning)]",
465
- warning_table: "bg-[var(--color-alert-bg-warning-table)]",
466
- success: "bg-[var(--color-alert-bg-success)]",
467
- error: "bg-[var(--color-alert-bg-error)]"
468
- },
469
- size: {
470
- sm: "gap-2 px-2 py-2 text-xs",
471
- md: "gap-2 px-3 py-2 text-base"
472
- }
473
- },
474
- defaultVariants: {
475
- status: "info",
476
- size: "md"
477
- }
478
- }
479
- );
480
- var alertContent = cva("flex flex-1", {
481
- variants: {
482
- inline: {
483
- "true": "inline-flex flex-row items-center",
484
- "false": "flex flex-col"
485
- }
486
- },
487
- defaultVariants: {
488
- inline: true
489
- }
490
- });
491
- var INDICATOR_BASE = "inline-flex items-center justify-center shrink-0 w-5 h-5 text-[var(--color-alert-fg)] [&>svg]:w-full [&>svg]:h-full";
492
- var indicatorVariants = cva(INDICATOR_BASE, {
493
- variants: {
494
- size: {
495
- sm: "w-5 h-5 my-0",
496
- md: "w-5 h-5 my-[2px]"
497
- }
498
- },
499
- defaultVariants: {
500
- size: "md"
501
- }
502
- });
470
+ var ALERT_BASE = "w-full flex items-start relative rounded text-[var(--color-alert-fg)]";
471
+ var STATUS_CLASSES = {
472
+ info: "bg-[var(--color-alert-bg-info)]",
473
+ warning: "bg-[var(--color-alert-bg-warning)]",
474
+ warning_table: "bg-[var(--color-alert-bg-warning-table)]",
475
+ success: "bg-[var(--color-alert-bg-success)]",
476
+ error: "bg-[var(--color-alert-bg-error)]"
477
+ };
478
+ var SIZE_CLASSES = {
479
+ sm: "gap-2 px-2 py-2 text-xs",
480
+ md: "gap-2 px-3 py-2 text-base"
481
+ };
482
+ var INDICATOR_SIZE_CLASSES = {
483
+ sm: "w-5 h-5 my-0",
484
+ md: "w-5 h-5 my-[2px]"
485
+ };
503
486
  var Alert = React29.forwardRef(
504
487
  function Alert2(props, ref) {
505
488
  const {
@@ -535,7 +518,10 @@ var Alert = React29.forwardRef(
535
518
  if (!showIcon && icon === void 0) {
536
519
  return null;
537
520
  }
538
- return /* @__PURE__ */ jsx("span", { className: indicatorVariants({ size: resolvedSize }), children: icon || defaultIcon });
521
+ return /* @__PURE__ */ jsx("span", { className: cn(
522
+ "inline-flex items-center justify-center shrink-0 text-[var(--color-alert-fg)] [&>svg]:w-full [&>svg]:h-full",
523
+ INDICATOR_SIZE_CLASSES[resolvedSize]
524
+ ), children: icon || defaultIcon });
539
525
  })();
540
526
  const handleClose = React29.useCallback(() => {
541
527
  setIsOpen(false);
@@ -568,12 +554,12 @@ var Alert = React29.forwardRef(
568
554
  "div",
569
555
  {
570
556
  ref,
571
- className: cn(alertRoot({ status, size: resolvedSize }), className),
557
+ className: cn(ALERT_BASE, STATUS_CLASSES[status], SIZE_CLASSES[resolvedSize], className),
572
558
  style: alertStyle,
573
559
  ...alertRest,
574
560
  children: [
575
561
  iconElement,
576
- children ? /* @__PURE__ */ jsxs("div", { className: alertContent({ inline }), children: [
562
+ children ? /* @__PURE__ */ jsxs("div", { className: cn("flex flex-1", inline ? "inline-flex flex-row items-center" : "flex flex-col"), children: [
577
563
  title && /* @__PURE__ */ jsx("div", { className: "font-semibold", children: title }),
578
564
  /* @__PURE__ */ jsx(
579
565
  "div",
@@ -598,7 +584,7 @@ var Alert = React29.forwardRef(
598
584
  ) });
599
585
  }
600
586
  );
601
- var SIZE_CLASSES = {
587
+ var SIZE_CLASSES2 = {
602
588
  xs: "h-6 w-6 text-[10px]",
603
589
  sm: "h-8 w-8 text-xs",
604
590
  md: "h-10 w-10 text-sm",
@@ -643,7 +629,7 @@ var Avatar = React29.forwardRef(
643
629
  ref,
644
630
  className: cn(
645
631
  "relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full align-middle",
646
- SIZE_CLASSES[size],
632
+ SIZE_CLASSES2[size],
647
633
  VARIANT_CLASSES[variant],
648
634
  !isBorderless && "ring-2 ring-white dark:ring-gray-900",
649
635
  className
@@ -851,7 +837,7 @@ function TruncatedTextTooltip({ label, children }) {
851
837
  return /* @__PURE__ */ jsx(Tooltip, { content: label, positioning: { placement: "top" }, children });
852
838
  }
853
839
  var BASE_CLASSES = "inline-flex items-center rounded-sm gap-1 font-medium w-fit max-w-full whitespace-nowrap select-text";
854
- var SIZE_CLASSES2 = {
840
+ var SIZE_CLASSES3 = {
855
841
  sm: "text-xs p-1 h-[18px] min-h-[18px]",
856
842
  md: "text-sm px-1 py-0.5 min-h-6",
857
843
  lg: "text-sm px-2 py-1 min-h-7 font-semibold"
@@ -921,7 +907,7 @@ var Badge = React29__default.forwardRef(
921
907
  ref,
922
908
  className: cn(
923
909
  BASE_CLASSES,
924
- SIZE_CLASSES2[size],
910
+ SIZE_CLASSES3[size],
925
911
  COLOR_PALETTE_CLASSES[colorPalette],
926
912
  className
927
913
  ),
@@ -1221,7 +1207,7 @@ var Button = React29.forwardRef(
1221
1207
  return button;
1222
1208
  }
1223
1209
  );
1224
- var SIZE_CLASSES3 = {
1210
+ var SIZE_CLASSES4 = {
1225
1211
  "2xs": "px-2 h-5 min-w-5 text-xs rounded-sm gap-1",
1226
1212
  xs: "px-2 h-6 min-w-6 text-sm rounded-sm gap-1",
1227
1213
  sm: "px-3 h-8 min-w-8 text-sm rounded-md gap-1",
@@ -1230,7 +1216,7 @@ var SIZE_CLASSES3 = {
1230
1216
  function buttonVariants(opts) {
1231
1217
  const v = opts?.variant ?? "solid";
1232
1218
  const s = opts?.size ?? "md";
1233
- return [BASE_CLASSES2, VARIANT_CLASSES2[v] ?? "", SIZE_CLASSES3[s] ?? ""].filter(Boolean).join(" ");
1219
+ return [BASE_CLASSES2, VARIANT_CLASSES2[v] ?? "", SIZE_CLASSES4[s] ?? ""].filter(Boolean).join(" ");
1234
1220
  }
1235
1221
  var ButtonGroup = React29.forwardRef(
1236
1222
  function ButtonGroup2(props, ref) {
@@ -1347,7 +1333,7 @@ var CheckboxGroupBase = React29.forwardRef(
1347
1333
  }
1348
1334
  );
1349
1335
  var CheckboxGroup2 = CheckboxGroupBase;
1350
- var SIZE_CLASSES4 = {
1336
+ var SIZE_CLASSES5 = {
1351
1337
  sm: {
1352
1338
  root: "gap-1.5",
1353
1339
  control: "h-3.5 w-3.5 rounded-sm",
@@ -1457,7 +1443,7 @@ var CheckboxBase = React29.forwardRef(
1457
1443
  },
1458
1444
  [readOnly, isControlled, isInGroup, group, value, onCheckedChange, onChange]
1459
1445
  );
1460
- const sizeClasses2 = SIZE_CLASSES4[size];
1446
+ const sizeClasses2 = SIZE_CLASSES5[size];
1461
1447
  return /* @__PURE__ */ jsxs(
1462
1448
  "label",
1463
1449
  {
@@ -2153,7 +2139,7 @@ var PLACEMENT_CLASSES = {
2153
2139
  "data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom"
2154
2140
  ].join(" ")
2155
2141
  };
2156
- var SIZE_CLASSES5 = {
2142
+ var SIZE_CLASSES6 = {
2157
2143
  right: { xs: "w-60", sm: "w-80", md: "w-96", lg: "w-[480px]", xl: "w-[640px]", full: "w-screen" },
2158
2144
  left: { xs: "w-60", sm: "w-80", md: "w-96", lg: "w-[480px]", xl: "w-[640px]", full: "w-screen" },
2159
2145
  top: { xs: "h-40", sm: "h-60", md: "h-80", lg: "h-96", xl: "h-[480px]", full: "h-screen" },
@@ -2182,7 +2168,7 @@ var DrawerContent = React29.forwardRef(
2182
2168
  className: cn(
2183
2169
  "fixed z-50 flex flex-col bg-[var(--color-drawer-bg)] shadow-[var(--shadow-drawer)] duration-300",
2184
2170
  PLACEMENT_CLASSES[placement] ?? PLACEMENT_CLASSES.right,
2185
- SIZE_CLASSES5[placement]?.[size] ?? SIZE_CLASSES5.right?.md,
2171
+ SIZE_CLASSES6[placement]?.[size] ?? SIZE_CLASSES6.right?.md,
2186
2172
  className
2187
2173
  ),
2188
2174
  ...rest,
@@ -2806,46 +2792,36 @@ var Image2 = React29__default.forwardRef(
2806
2792
  ] });
2807
2793
  }
2808
2794
  );
2809
- var inputVariants = cva(
2810
- [
2811
- "w-full appearance-none outline-none transition-colors",
2812
- "bg-[var(--color-input-bg)] text-[var(--color-input-fg)] border-[var(--color-input-border)]",
2813
- "placeholder:text-[var(--color-input-placeholder,theme(colors.gray.400))]",
2814
- "hover:border-[var(--color-input-border-hover,theme(colors.gray.400))]",
2815
- "focus:border-[var(--color-input-border-focus,theme(colors.blue.500))]",
2816
- "focus:placeholder:text-[var(--color-input-placeholder-focus,theme(colors.gray.300))]",
2817
- "disabled:opacity-40 disabled:cursor-not-allowed",
2818
- "read-only:opacity-70",
2819
- "data-[invalid]:border-[var(--color-input-border-invalid,theme(colors.red.500))]"
2820
- ].join(" "),
2821
- {
2822
- variants: {
2823
- size: {
2824
- xs: "h-6 px-2 text-xs rounded",
2825
- sm: "h-8 px-3 text-sm rounded-md",
2826
- md: "h-10 px-4 text-base rounded-md",
2827
- lg: "h-12 px-4 text-lg rounded-lg",
2828
- "2xl": "h-14 px-4 text-xl rounded-lg"
2829
- },
2830
- variant: {
2831
- outline: "border border-solid",
2832
- filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
2833
- unstyled: "border-0 bg-transparent p-0 h-auto"
2834
- }
2835
- },
2836
- defaultVariants: {
2837
- size: "md",
2838
- variant: "outline"
2839
- }
2840
- }
2841
- );
2795
+ var INPUT_BASE = [
2796
+ "w-full appearance-none outline-none transition-colors",
2797
+ "bg-[var(--color-input-bg)] text-[var(--color-input-fg)] border-[var(--color-input-border)]",
2798
+ "placeholder:text-[var(--color-input-placeholder,theme(colors.gray.400))]",
2799
+ "hover:border-[var(--color-input-border-hover,theme(colors.gray.400))]",
2800
+ "focus:border-[var(--color-input-border-focus,theme(colors.blue.500))]",
2801
+ "focus:placeholder:text-[var(--color-input-placeholder-focus,theme(colors.gray.300))]",
2802
+ "disabled:opacity-40 disabled:cursor-not-allowed",
2803
+ "read-only:opacity-70",
2804
+ "data-[invalid]:border-[var(--color-input-border-invalid,theme(colors.red.500))]"
2805
+ ].join(" ");
2806
+ var INPUT_SIZE_CLASSES = {
2807
+ xs: "h-6 px-2 text-xs rounded",
2808
+ sm: "h-8 px-3 text-sm rounded-md",
2809
+ md: "h-10 px-4 text-base rounded-md",
2810
+ lg: "h-12 px-4 text-lg rounded-lg",
2811
+ "2xl": "h-14 px-4 text-xl rounded-lg"
2812
+ };
2813
+ var INPUT_VARIANT_CLASSES = {
2814
+ outline: "border border-solid",
2815
+ filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
2816
+ unstyled: "border-0 bg-transparent p-0 h-auto"
2817
+ };
2842
2818
  var Input = React29__default.forwardRef(
2843
- ({ size, variant, className, ...rest }, ref) => {
2819
+ ({ size = "md", variant = "outline", className, ...rest }, ref) => {
2844
2820
  return /* @__PURE__ */ jsx(
2845
2821
  "input",
2846
2822
  {
2847
2823
  ref,
2848
- className: cn(inputVariants({ size, variant }), className),
2824
+ className: cn(INPUT_BASE, INPUT_SIZE_CLASSES[size], INPUT_VARIANT_CLASSES[variant], className),
2849
2825
  ...rest
2850
2826
  }
2851
2827
  );
@@ -3228,7 +3204,7 @@ var MenuTriggerItem = React29.forwardRef(function MenuTriggerItem2(props, ref) {
3228
3204
  }
3229
3205
  ) });
3230
3206
  });
3231
- var INPUT_BASE = [
3207
+ var INPUT_BASE2 = [
3232
3208
  "w-10 h-10",
3233
3209
  "text-center text-sm font-medium",
3234
3210
  "border-2 rounded-md",
@@ -3359,7 +3335,7 @@ var PinInput = React29.forwardRef(
3359
3335
  "aria-invalid": invalid || void 0,
3360
3336
  value: values[index] || "",
3361
3337
  className: cn(
3362
- INPUT_BASE,
3338
+ INPUT_BASE2,
3363
3339
  values[index] && INPUT_FILLED,
3364
3340
  invalid && INPUT_INVALID,
3365
3341
  attached && index > 0 && "-ml-0.5"
@@ -3610,7 +3586,7 @@ var PopoverDescription = React29.forwardRef(function PopoverDescription2(props,
3610
3586
  }
3611
3587
  );
3612
3588
  });
3613
- var SIZE_CLASSES6 = {
3589
+ var SIZE_CLASSES7 = {
3614
3590
  sm: "h-1",
3615
3591
  md: "h-2",
3616
3592
  lg: "h-3",
@@ -3668,7 +3644,7 @@ var Progress = React29.forwardRef(
3668
3644
  className: cn(
3669
3645
  "w-full overflow-hidden rounded-full",
3670
3646
  "bg-[var(--color-progress-track)]",
3671
- SIZE_CLASSES6[size],
3647
+ SIZE_CLASSES7[size],
3672
3648
  trackProps?.className
3673
3649
  ),
3674
3650
  style: trackStyle,
@@ -3807,7 +3783,7 @@ var ProgressCircleValueText = React29.forwardRef(function ProgressCircleValueTex
3807
3783
  }
3808
3784
  );
3809
3785
  });
3810
- var SIZE_CLASSES7 = {
3786
+ var SIZE_CLASSES8 = {
3811
3787
  xs: {
3812
3788
  root: "gap-1.5",
3813
3789
  control: "h-3 w-3",
@@ -3888,7 +3864,7 @@ var RadioBase = React29.forwardRef(
3888
3864
  function Radio(props, ref) {
3889
3865
  const { children, inputProps, rootRef, value, disabled, className, ...rest } = props;
3890
3866
  const size = React29.useContext(RadioSizeContext);
3891
- const sizeClasses2 = SIZE_CLASSES7[size];
3867
+ const sizeClasses2 = SIZE_CLASSES8[size];
3892
3868
  return /* @__PURE__ */ jsxs(
3893
3869
  "label",
3894
3870
  {
@@ -4546,7 +4522,7 @@ function SliderMarks(props) {
4546
4522
  }
4547
4523
  var NOOP3 = () => {
4548
4524
  };
4549
- var SIZE_CLASSES8 = {
4525
+ var SIZE_CLASSES9 = {
4550
4526
  sm: {
4551
4527
  root: "h-4 w-7",
4552
4528
  thumb: "h-3 w-3 data-[state=checked]:translate-x-3",
@@ -4596,7 +4572,7 @@ var SwitchBase = React29.forwardRef(
4596
4572
  },
4597
4573
  [isControlled, onCheckedChange]
4598
4574
  );
4599
- const sizeClasses2 = SIZE_CLASSES8[size];
4575
+ const sizeClasses2 = SIZE_CLASSES9[size];
4600
4576
  const isRtl = direction === "rtl";
4601
4577
  return /* @__PURE__ */ jsxs(
4602
4578
  "label",
@@ -5281,39 +5257,18 @@ var nbsp = String.fromCharCode(160);
5281
5257
  function TruncatedTextTooltip2({ label, children }) {
5282
5258
  return /* @__PURE__ */ jsx(Tooltip, { content: label, positioning: { placement: "top" }, children });
5283
5259
  }
5284
- var tagVariants = cva(
5285
- [
5286
- "inline-flex items-center align-top max-w-full select-text rounded-sm",
5287
- "focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-500"
5288
- ].join(" "),
5289
- {
5290
- variants: {
5291
- variant: {
5292
- subtle: "bg-[var(--color-tag-subtle-bg)] text-[var(--color-tag-subtle-fg)]",
5293
- clickable: [
5294
- "cursor-pointer",
5295
- "bg-[var(--color-tag-clickable-bg)] text-[var(--color-tag-clickable-fg)]",
5296
- "hover:opacity-76"
5297
- ].join(" "),
5298
- filter: "bg-[var(--color-tag-filter-bg)]",
5299
- select: [
5300
- "cursor-pointer",
5301
- "bg-[var(--color-tag-select-bg)] text-[var(--color-tag-select-fg)]",
5302
- "hover:text-[var(--color-hover)] hover:opacity-76"
5303
- ].join(" ")
5304
- },
5305
- size: {
5306
- sm: "px-1 py-0.5 min-h-5 gap-1 text-xs",
5307
- md: "px-1 py-0.5 min-h-6 gap-1 text-sm",
5308
- lg: "px-1.5 py-1.5 min-h-8 min-w-8 gap-1 text-sm"
5309
- }
5310
- },
5311
- defaultVariants: {
5312
- variant: "subtle",
5313
- size: "md"
5314
- }
5315
- }
5316
- );
5260
+ var TAG_BASE = "inline-flex items-center align-top max-w-full select-text rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-500";
5261
+ var TAG_VARIANT_CLASSES = {
5262
+ subtle: "bg-[var(--color-tag-subtle-bg)] text-[var(--color-tag-subtle-fg)]",
5263
+ clickable: "cursor-pointer bg-[var(--color-tag-clickable-bg)] text-[var(--color-tag-clickable-fg)] hover:opacity-76",
5264
+ filter: "bg-[var(--color-tag-filter-bg)]",
5265
+ select: "cursor-pointer bg-[var(--color-tag-select-bg)] text-[var(--color-tag-select-fg)] hover:text-[var(--color-hover)] hover:opacity-76"
5266
+ };
5267
+ var TAG_SIZE_CLASSES = {
5268
+ sm: "px-1 py-0.5 min-h-5 gap-1 text-xs",
5269
+ md: "px-1 py-0.5 min-h-6 gap-1 text-sm",
5270
+ lg: "px-1.5 py-1.5 min-h-8 min-w-8 gap-1 text-sm"
5271
+ };
5317
5272
  var TAG_SELECTED_CLASSES = [
5318
5273
  "bg-[var(--color-tag-select-selected-bg)]",
5319
5274
  "text-[var(--color-tag-select-selected-fg)]",
@@ -5355,7 +5310,9 @@ var Tag = React29.forwardRef(
5355
5310
  {
5356
5311
  ref,
5357
5312
  className: cn(
5358
- tagVariants({ variant, size }),
5313
+ TAG_BASE,
5314
+ TAG_VARIANT_CLASSES[variant ?? "subtle"],
5315
+ TAG_SIZE_CLASSES[size ?? "md"],
5359
5316
  selected && !loading && TAG_SELECTED_CLASSES,
5360
5317
  disabled && TAG_DISABLED_CLASSES,
5361
5318
  className
@@ -5383,46 +5340,36 @@ var Tag = React29.forwardRef(
5383
5340
  ) });
5384
5341
  }
5385
5342
  );
5386
- var textareaVariants = cva(
5387
- [
5388
- "w-full appearance-none outline-none transition-colors resize-y",
5389
- "bg-[var(--color-input-bg)] text-[var(--color-input-fg)] border-[var(--color-input-border)]",
5390
- "placeholder:text-[var(--color-input-placeholder,theme(colors.gray.400))]",
5391
- "hover:border-[var(--color-input-border-hover,theme(colors.gray.400))]",
5392
- "focus:border-[var(--color-input-border-focus,theme(colors.blue.500))]",
5393
- "focus:placeholder:text-[var(--color-input-placeholder-focus,theme(colors.gray.300))]",
5394
- "disabled:opacity-40 disabled:cursor-not-allowed",
5395
- "read-only:opacity-70",
5396
- "data-[invalid]:border-[var(--color-input-border-invalid,theme(colors.red.500))]"
5397
- ].join(" "),
5398
- {
5399
- variants: {
5400
- size: {
5401
- xs: "px-2 py-1 text-xs rounded",
5402
- sm: "px-3 py-2 text-sm rounded-md",
5403
- md: "px-4 py-2 text-base rounded-md",
5404
- lg: "px-4 py-3 text-lg rounded-lg",
5405
- "2xl": "px-4 py-3 text-xl rounded-lg"
5406
- },
5407
- variant: {
5408
- outline: "border border-solid",
5409
- filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
5410
- unstyled: "border-0 bg-transparent p-0"
5411
- }
5412
- },
5413
- defaultVariants: {
5414
- size: "md",
5415
- variant: "outline"
5416
- }
5417
- }
5418
- );
5343
+ var TEXTAREA_BASE = [
5344
+ "w-full appearance-none outline-none transition-colors resize-y",
5345
+ "bg-[var(--color-input-bg)] text-[var(--color-input-fg)] border-[var(--color-input-border)]",
5346
+ "placeholder:text-[var(--color-input-placeholder,theme(colors.gray.400))]",
5347
+ "hover:border-[var(--color-input-border-hover,theme(colors.gray.400))]",
5348
+ "focus:border-[var(--color-input-border-focus,theme(colors.blue.500))]",
5349
+ "focus:placeholder:text-[var(--color-input-placeholder-focus,theme(colors.gray.300))]",
5350
+ "disabled:opacity-40 disabled:cursor-not-allowed",
5351
+ "read-only:opacity-70",
5352
+ "data-[invalid]:border-[var(--color-input-border-invalid,theme(colors.red.500))]"
5353
+ ].join(" ");
5354
+ var TEXTAREA_SIZE_CLASSES = {
5355
+ xs: "px-2 py-1 text-xs rounded",
5356
+ sm: "px-3 py-2 text-sm rounded-md",
5357
+ md: "px-4 py-2 text-base rounded-md",
5358
+ lg: "px-4 py-3 text-lg rounded-lg",
5359
+ "2xl": "px-4 py-3 text-xl rounded-lg"
5360
+ };
5361
+ var TEXTAREA_VARIANT_CLASSES = {
5362
+ outline: "border border-solid",
5363
+ filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
5364
+ unstyled: "border-0 bg-transparent p-0"
5365
+ };
5419
5366
  var Textarea = React29__default.forwardRef(
5420
- ({ size, variant, className, ...rest }, ref) => {
5367
+ ({ size = "md", variant = "outline", className, ...rest }, ref) => {
5421
5368
  return /* @__PURE__ */ jsx(
5422
5369
  "textarea",
5423
5370
  {
5424
5371
  ref,
5425
- className: cn(textareaVariants({ size, variant }), className),
5372
+ className: cn(TEXTAREA_BASE, TEXTAREA_SIZE_CLASSES[size], TEXTAREA_VARIANT_CLASSES[variant], className),
5426
5373
  ...rest
5427
5374
  }
5428
5375
  );
@@ -5519,9 +5466,6 @@ var Toaster = () => {
5519
5466
  }
5520
5467
  );
5521
5468
  };
5522
- function Provider(props) {
5523
- return /* @__PURE__ */ jsx(ColorModeProvider, { ...props });
5524
- }
5525
5469
  function fmt(n, decimals = 2) {
5526
5470
  if (n === void 0 || n === null) return "-";
5527
5471
  return n.toFixed(decimals);
@@ -7040,4 +6984,4 @@ var BankPage = styled(View, {
7040
6984
  padding: 16
7041
6985
  });
7042
6986
 
7043
- export { AccordionItem, AccordionItemContent, AccordionItemTrigger, AccordionRoot, Alert, Avatar, AvatarGroup, Badge, BankAlert, BankAlertText, BankButton, BankButtonText, BankCard, BankDivider, BankField, BankHeading, BankInput, BankPage, BankPinBox, BankText, Button, ButtonGroup, ButtonGroupRadio, Checkbox2 as Checkbox, CheckboxGroup2 as CheckboxGroup, CloseButton, CollapsibleDetails, CollapsibleList, ColorModeProvider, DialogActionTrigger, DialogBackdrop, DialogBody, DialogCloseTrigger, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger, DrawerActionTrigger, DrawerBody, DrawerCloseTrigger, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerRoot, DrawerTitle, DrawerTrigger, EmptyState, ExpirationSelector, Field, GreeksDisplay, Heading, IconButton, Image2 as Image, Input, InputGroup, Link, LinkBox, LinkExternalIcon, LinkOverlay, MenuArrow, MenuCheckboxItem, MenuContent, MenuItem, MenuItemGroup, MenuItemText, MenuRadioItem, MenuRadioItemGroup, MenuRoot, MenuSeparator, MenuTrigger, MenuTriggerItem, OptionChain, OptionPositionCard, PinInput, PnlDiagram, PopoverArrow, PopoverBody, PopoverCloseTrigger, PopoverCloseTriggerWrapper, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverRoot, PopoverTitle, PopoverTrigger, Progress, ProgressCircleRing, ProgressCircleRoot, ProgressCircleValueText, Provider, Radio2 as Radio, RadioGroup3 as RadioGroup, Rating, Select, SelectAsync, SelectClearTrigger, SelectContent, SelectControl, SelectItem, SelectItemGroup, SelectItemText, SelectLabel, SelectRoot, SelectValueText, Separator2 as Separator, Skeleton, SkeletonCircle, SkeletonText, Slider, StrategyBuilder, Switch2 as Switch, TableBody, TableCaption, TableCell, TableColumnHeader, TableColumnHeaderSortable, TableFooter, TableHeader, TableHeaderSticky, TableRoot, TableRow, TableScrollWrapper, TabsContent, TabsCounter, TabsList, TabsRoot, TabsTrigger, Tag, Textarea, Toaster, Tooltip, bankColors, buttonVariants, cn, createListCollection, toaster, useAccordion, useColorMode, useColorModeValue };
6987
+ export { AccordionItem, AccordionItemContent, AccordionItemTrigger, AccordionRoot, Alert, AppProvider, Avatar, AvatarGroup, Badge, BankAlert, BankAlertText, BankButton, BankButtonText, BankCard, BankDivider, BankField, BankHeading, BankInput, BankPage, BankPinBox, BankText, Button, ButtonGroup, ButtonGroupRadio, Checkbox2 as Checkbox, CheckboxGroup2 as CheckboxGroup, CloseButton, CollapsibleDetails, CollapsibleList, ColorModeProvider, DialogActionTrigger, DialogBackdrop, DialogBody, DialogCloseTrigger, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger, DrawerActionTrigger, DrawerBody, DrawerCloseTrigger, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerRoot, DrawerTitle, DrawerTrigger, EmptyState, ExpirationSelector, Field, GreeksDisplay, Heading, IconButton, Image2 as Image, Input, InputGroup, Link, LinkBox, LinkExternalIcon, LinkOverlay, MenuArrow, MenuCheckboxItem, MenuContent, MenuItem, MenuItemGroup, MenuItemText, MenuRadioItem, MenuRadioItemGroup, MenuRoot, MenuSeparator, MenuTrigger, MenuTriggerItem, OptionChain, OptionPositionCard, PinInput, PnlDiagram, PopoverArrow, PopoverBody, PopoverCloseTrigger, PopoverCloseTriggerWrapper, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverRoot, PopoverTitle, PopoverTrigger, Progress, ProgressCircleRing, ProgressCircleRoot, ProgressCircleValueText, Radio2 as Radio, RadioGroup3 as RadioGroup, Rating, Select, SelectAsync, SelectClearTrigger, SelectContent, SelectControl, SelectItem, SelectItemGroup, SelectItemText, SelectLabel, SelectRoot, SelectValueText, Separator2 as Separator, Skeleton, SkeletonCircle, SkeletonText, Slider, StrategyBuilder, Switch2 as Switch, TableBody, TableCaption, TableCell, TableColumnHeader, TableColumnHeaderSortable, TableFooter, TableHeader, TableHeaderSticky, TableRoot, TableRow, TableScrollWrapper, TabsContent, TabsCounter, TabsList, TabsRoot, TabsTrigger, Tag, Textarea, Toaster, Tooltip, bankColors, buttonVariants, cn, createListCollection, toaster, useAccordion, useColorMode, useColorModeValue };
package/dist/input.cjs CHANGED
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var classVarianceAuthority = require('class-variance-authority');
5
4
  var React = require('react');
6
5
  var clsx = require('clsx');
7
6
  var tailwindMerge = require('tailwind-merge');
@@ -15,46 +14,36 @@ var React__default = /*#__PURE__*/_interopDefault(React);
15
14
  function cn(...inputs) {
16
15
  return tailwindMerge.twMerge(clsx.clsx(inputs));
17
16
  }
18
- var inputVariants = classVarianceAuthority.cva(
19
- [
20
- "w-full appearance-none outline-none transition-colors",
21
- "bg-[var(--color-input-bg)] text-[var(--color-input-fg)] border-[var(--color-input-border)]",
22
- "placeholder:text-[var(--color-input-placeholder,theme(colors.gray.400))]",
23
- "hover:border-[var(--color-input-border-hover,theme(colors.gray.400))]",
24
- "focus:border-[var(--color-input-border-focus,theme(colors.blue.500))]",
25
- "focus:placeholder:text-[var(--color-input-placeholder-focus,theme(colors.gray.300))]",
26
- "disabled:opacity-40 disabled:cursor-not-allowed",
27
- "read-only:opacity-70",
28
- "data-[invalid]:border-[var(--color-input-border-invalid,theme(colors.red.500))]"
29
- ].join(" "),
30
- {
31
- variants: {
32
- size: {
33
- xs: "h-6 px-2 text-xs rounded",
34
- sm: "h-8 px-3 text-sm rounded-md",
35
- md: "h-10 px-4 text-base rounded-md",
36
- lg: "h-12 px-4 text-lg rounded-lg",
37
- "2xl": "h-14 px-4 text-xl rounded-lg"
38
- },
39
- variant: {
40
- outline: "border border-solid",
41
- filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
42
- unstyled: "border-0 bg-transparent p-0 h-auto"
43
- }
44
- },
45
- defaultVariants: {
46
- size: "md",
47
- variant: "outline"
48
- }
49
- }
50
- );
17
+ var INPUT_BASE = [
18
+ "w-full appearance-none outline-none transition-colors",
19
+ "bg-[var(--color-input-bg)] text-[var(--color-input-fg)] border-[var(--color-input-border)]",
20
+ "placeholder:text-[var(--color-input-placeholder,theme(colors.gray.400))]",
21
+ "hover:border-[var(--color-input-border-hover,theme(colors.gray.400))]",
22
+ "focus:border-[var(--color-input-border-focus,theme(colors.blue.500))]",
23
+ "focus:placeholder:text-[var(--color-input-placeholder-focus,theme(colors.gray.300))]",
24
+ "disabled:opacity-40 disabled:cursor-not-allowed",
25
+ "read-only:opacity-70",
26
+ "data-[invalid]:border-[var(--color-input-border-invalid,theme(colors.red.500))]"
27
+ ].join(" ");
28
+ var INPUT_SIZE_CLASSES = {
29
+ xs: "h-6 px-2 text-xs rounded",
30
+ sm: "h-8 px-3 text-sm rounded-md",
31
+ md: "h-10 px-4 text-base rounded-md",
32
+ lg: "h-12 px-4 text-lg rounded-lg",
33
+ "2xl": "h-14 px-4 text-xl rounded-lg"
34
+ };
35
+ var INPUT_VARIANT_CLASSES = {
36
+ outline: "border border-solid",
37
+ filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
38
+ unstyled: "border-0 bg-transparent p-0 h-auto"
39
+ };
51
40
  var Input = React__default.default.forwardRef(
52
- ({ size, variant, className, ...rest }, ref) => {
41
+ ({ size = "md", variant = "outline", className, ...rest }, ref) => {
53
42
  return /* @__PURE__ */ jsxRuntime.jsx(
54
43
  "input",
55
44
  {
56
45
  ref,
57
- className: cn(inputVariants({ size, variant }), className),
46
+ className: cn(INPUT_BASE, INPUT_SIZE_CLASSES[size], INPUT_VARIANT_CLASSES[variant], className),
58
47
  ...rest
59
48
  }
60
49
  );