@luxfi/ui 7.4.0 → 7.4.3

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 (131) hide show
  1. package/dist/avatar.cjs +7 -6
  2. package/dist/avatar.js +7 -5
  3. package/dist/badge.cjs +33 -35
  4. package/dist/badge.js +33 -35
  5. package/dist/bank.d.cts +3 -3
  6. package/dist/bank.d.ts +3 -3
  7. package/dist/checkbox.cjs +4 -4
  8. package/dist/checkbox.d.cts +3 -2
  9. package/dist/checkbox.d.ts +3 -2
  10. package/dist/checkbox.js +5 -4
  11. package/dist/chrome.cjs +960 -0
  12. package/dist/chrome.d.cts +93 -0
  13. package/dist/chrome.d.ts +93 -0
  14. package/dist/chrome.js +931 -0
  15. package/dist/drawer.cjs +86 -20
  16. package/dist/drawer.js +85 -19
  17. package/dist/expiration-selector.cjs +3 -2
  18. package/dist/expiration-selector.js +3 -2
  19. package/dist/greeks-display.cjs +6 -6
  20. package/dist/greeks-display.js +6 -6
  21. package/dist/gui.cjs +13 -0
  22. package/dist/gui.d.cts +2 -0
  23. package/dist/gui.d.ts +2 -0
  24. package/dist/gui.js +2 -0
  25. package/dist/heading.cjs +4 -2
  26. package/dist/heading.js +4 -2
  27. package/dist/iam.cjs +216 -0
  28. package/dist/iam.d.cts +65 -0
  29. package/dist/iam.d.ts +65 -0
  30. package/dist/iam.js +211 -0
  31. package/dist/icons.cjs +13 -0
  32. package/dist/icons.d.cts +1 -0
  33. package/dist/icons.d.ts +1 -0
  34. package/dist/icons.js +2 -0
  35. package/dist/identity.cjs +430 -0
  36. package/dist/identity.d.cts +64 -0
  37. package/dist/identity.d.ts +64 -0
  38. package/dist/identity.js +408 -0
  39. package/dist/index.cjs +1610 -836
  40. package/dist/index.d.cts +7 -3
  41. package/dist/index.d.ts +7 -3
  42. package/dist/index.js +1587 -831
  43. package/dist/input.cjs +3 -1
  44. package/dist/input.d.cts +3 -5
  45. package/dist/input.d.ts +3 -5
  46. package/dist/input.js +3 -1
  47. package/dist/lux.config.cjs +23 -2
  48. package/dist/lux.config.d.cts +28 -10
  49. package/dist/lux.config.d.ts +28 -10
  50. package/dist/lux.config.js +23 -2
  51. package/dist/menu.cjs +4 -4
  52. package/dist/menu.js +4 -4
  53. package/dist/next.cjs +132 -0
  54. package/dist/next.d.cts +32 -0
  55. package/dist/next.d.ts +32 -0
  56. package/dist/next.js +129 -0
  57. package/dist/option-chain.cjs +1 -1
  58. package/dist/option-chain.js +1 -1
  59. package/dist/option-position.cjs +2 -1
  60. package/dist/option-position.js +2 -1
  61. package/dist/pnl-diagram.cjs +8 -6
  62. package/dist/pnl-diagram.js +8 -6
  63. package/dist/progress.cjs +7 -6
  64. package/dist/progress.js +7 -5
  65. package/dist/provider.cjs +146 -4
  66. package/dist/provider.d.cts +15 -3
  67. package/dist/provider.d.ts +15 -3
  68. package/dist/provider.js +146 -5
  69. package/dist/radio.cjs +9 -7
  70. package/dist/radio.js +10 -7
  71. package/dist/separator.cjs +3 -1
  72. package/dist/separator.js +3 -1
  73. package/dist/slider.cjs +28 -16
  74. package/dist/slider.js +28 -15
  75. package/dist/strategy-builder.cjs +2 -1
  76. package/dist/strategy-builder.js +2 -1
  77. package/dist/switch.cjs +11 -12
  78. package/dist/switch.js +12 -12
  79. package/dist/tag.cjs +34 -36
  80. package/dist/tag.js +33 -35
  81. package/dist/textarea.cjs +3 -1
  82. package/dist/textarea.js +3 -1
  83. package/dist/tooltip.cjs +28 -30
  84. package/dist/tooltip.js +27 -29
  85. package/dist/use-narrow.cjs +46 -0
  86. package/dist/use-narrow.d.cts +12 -0
  87. package/dist/use-narrow.d.ts +12 -0
  88. package/dist/use-narrow.js +20 -0
  89. package/dist/vite.cjs +109 -0
  90. package/dist/vite.d.cts +29 -0
  91. package/dist/vite.d.ts +29 -0
  92. package/dist/vite.js +107 -0
  93. package/dist/white-label.cjs +142 -0
  94. package/dist/white-label.d.cts +59 -0
  95. package/dist/white-label.d.ts +59 -0
  96. package/dist/white-label.js +134 -0
  97. package/package.json +85 -19
  98. package/src/avatar.tsx +22 -16
  99. package/src/checkbox.tsx +15 -10
  100. package/src/chrome.tsx +459 -0
  101. package/src/drawer.tsx +83 -10
  102. package/src/engine.ts +130 -0
  103. package/src/expiration-selector.tsx +3 -2
  104. package/src/greeks-display.tsx +9 -6
  105. package/src/gui.ts +17 -0
  106. package/src/heading.tsx +12 -8
  107. package/src/iam.ts +170 -0
  108. package/src/icons.ts +18 -0
  109. package/src/identity.tsx +318 -0
  110. package/src/index.ts +44 -1
  111. package/src/input.tsx +13 -9
  112. package/src/lux.config.ts +16 -15
  113. package/src/menu.tsx +4 -4
  114. package/src/next.ts +89 -0
  115. package/src/option-chain.tsx +1 -1
  116. package/src/option-position.tsx +2 -1
  117. package/src/pnl-diagram.tsx +11 -6
  118. package/src/progress.tsx +15 -8
  119. package/src/provider.tsx +48 -7
  120. package/src/radio.tsx +15 -11
  121. package/src/separator.tsx +8 -3
  122. package/src/slider.tsx +35 -19
  123. package/src/strategy-builder.tsx +3 -2
  124. package/src/switch.tsx +17 -16
  125. package/src/textarea.tsx +8 -4
  126. package/src/tooltip.tsx +15 -24
  127. package/src/use-narrow.ts +40 -0
  128. package/src/vite.ts +80 -0
  129. package/src/white-label.ts +254 -0
  130. package/tokens.css +613 -319
  131. package/src/tokens.css +0 -438
package/dist/drawer.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
+ var gui = require('@hanzo/gui');
4
5
  var RadixDialog = require('@radix-ui/react-dialog');
5
- var React2 = require('react');
6
+ var React3 = require('react');
6
7
  var clsx = require('clsx');
7
8
  var tailwindMerge = require('tailwind-merge');
8
- var gui = require('@hanzo/gui');
9
9
  var jsxRuntime = require('react/jsx-runtime');
10
10
 
11
11
  function _interopNamespace(e) {
@@ -27,9 +27,22 @@ function _interopNamespace(e) {
27
27
  }
28
28
 
29
29
  var RadixDialog__namespace = /*#__PURE__*/_interopNamespace(RadixDialog);
30
- var React2__namespace = /*#__PURE__*/_interopNamespace(React2);
30
+ var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
31
31
 
32
32
  // src/drawer.tsx
33
+ var NARROW_PX = 640;
34
+ function useBelow(px) {
35
+ const [below, setBelow] = React3__namespace.useState(false);
36
+ React3__namespace.useEffect(() => {
37
+ const mql = window.matchMedia(`(max-width: ${px - 1}px)`);
38
+ const apply = () => setBelow(mql.matches);
39
+ apply();
40
+ mql.addEventListener("change", apply);
41
+ return () => mql.removeEventListener("change", apply);
42
+ }, [px]);
43
+ return below;
44
+ }
45
+ var useIsNarrow = () => useBelow(NARROW_PX);
33
46
  function cn(...inputs) {
34
47
  return tailwindMerge.twMerge(clsx.clsx(inputs));
35
48
  }
@@ -68,7 +81,7 @@ var CLOSE_BUTTON_CLASSES = [
68
81
  "hover:text-[var(--hover-color,currentColor)]",
69
82
  "disabled:opacity-40"
70
83
  ].join(" ");
71
- var CloseButton = React2__namespace.forwardRef(function CloseButton2(props, ref) {
84
+ var CloseButton = React3__namespace.forwardRef(function CloseButton2(props, ref) {
72
85
  const { variant: _variant, size: _size, className, children, ...rest } = props;
73
86
  return /* @__PURE__ */ jsxRuntime.jsx(
74
87
  CloseButtonFrame,
@@ -95,8 +108,14 @@ var CloseButton = React2__namespace.forwardRef(function CloseButton2(props, ref)
95
108
  }
96
109
  );
97
110
  });
98
- var DrawerPlacementContext = React2__namespace.createContext("right");
99
- var DrawerSizeContext = React2__namespace.createContext("md");
111
+ var DrawerPlacementContext = React3__namespace.createContext("right");
112
+ var DrawerSizeContext = React3__namespace.createContext("md");
113
+ var DrawerStateContext = React3__namespace.createContext({
114
+ open: false,
115
+ setOpen: () => {
116
+ },
117
+ modal: true
118
+ });
100
119
  var DrawerRoot = (props) => {
101
120
  const {
102
121
  children,
@@ -107,19 +126,26 @@ var DrawerRoot = (props) => {
107
126
  modal = true,
108
127
  size = "md"
109
128
  } = props;
110
- const handleOpenChange = React2__namespace.useCallback((nextOpen) => {
129
+ const [uncontrolled, setUncontrolled] = React3__namespace.useState(defaultOpen ?? false);
130
+ const isControlled = open !== void 0;
131
+ const isOpen = isControlled ? open : uncontrolled;
132
+ const setOpen = React3__namespace.useCallback((nextOpen) => {
133
+ if (!isControlled) setUncontrolled(nextOpen);
111
134
  onOpenChange?.({ open: nextOpen });
112
- }, [onOpenChange]);
113
- return /* @__PURE__ */ jsxRuntime.jsx(DrawerPlacementContext.Provider, { value: placement, children: /* @__PURE__ */ jsxRuntime.jsx(DrawerSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsxRuntime.jsx(
135
+ }, [isControlled, onOpenChange]);
136
+ const state = React3__namespace.useMemo(
137
+ () => ({ open: isOpen, setOpen, modal }),
138
+ [isOpen, setOpen, modal]
139
+ );
140
+ return /* @__PURE__ */ jsxRuntime.jsx(DrawerPlacementContext.Provider, { value: placement, children: /* @__PURE__ */ jsxRuntime.jsx(DrawerSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsxRuntime.jsx(DrawerStateContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(
114
141
  RadixDialog__namespace.Root,
115
142
  {
116
- open,
117
- defaultOpen,
118
- onOpenChange: handleOpenChange,
143
+ open: isOpen,
144
+ onOpenChange: setOpen,
119
145
  modal,
120
146
  children
121
147
  }
122
- ) }) });
148
+ ) }) }) });
123
149
  };
124
150
  var PLACEMENT_CLASSES = {
125
151
  right: [
@@ -149,11 +175,51 @@ var SIZE_CLASSES = {
149
175
  top: { xs: "h-40", sm: "h-60", md: "h-80", lg: "h-96", xl: "h-[480px]", full: "h-screen" },
150
176
  bottom: { xs: "h-40", sm: "h-60", md: "h-80", lg: "h-96", xl: "h-[480px]", full: "h-screen" }
151
177
  };
152
- var DrawerContent = React2__namespace.forwardRef(
178
+ var DrawerContent = React3__namespace.forwardRef(
153
179
  function DrawerContent2(props, ref) {
154
180
  const { children, portalled = true, portalRef, offset: _offset, backdrop = true, className, ...rest } = props;
155
- const placement = React2__namespace.useContext(DrawerPlacementContext);
156
- const size = React2__namespace.useContext(DrawerSizeContext);
181
+ const placement = React3__namespace.useContext(DrawerPlacementContext);
182
+ const size = React3__namespace.useContext(DrawerSizeContext);
183
+ const { open, setOpen, modal } = React3__namespace.useContext(DrawerStateContext);
184
+ const isNarrow = useIsNarrow();
185
+ if (isNarrow) {
186
+ return /* @__PURE__ */ jsxRuntime.jsxs(
187
+ gui.Sheet,
188
+ {
189
+ open,
190
+ onOpenChange: setOpen,
191
+ modal,
192
+ dismissOnSnapToBottom: true,
193
+ snapPointsMode: "percent",
194
+ snapPoints: [88],
195
+ transition: "medium",
196
+ children: [
197
+ backdrop && /* @__PURE__ */ jsxRuntime.jsx(
198
+ gui.Sheet.Overlay,
199
+ {
200
+ transition: "lazy",
201
+ enterStyle: { opacity: 0 },
202
+ exitStyle: { opacity: 0 },
203
+ className: "bg-black/50"
204
+ }
205
+ ),
206
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Sheet.Handle, {}),
207
+ /* @__PURE__ */ jsxRuntime.jsx(
208
+ gui.Sheet.Frame,
209
+ {
210
+ unstyled: true,
211
+ className: cn(
212
+ "flex flex-col rounded-t-2xl bg-[var(--color-drawer-bg)] shadow-[var(--shadow-drawer)]",
213
+ className
214
+ ),
215
+ ...rest,
216
+ children
217
+ }
218
+ )
219
+ ]
220
+ }
221
+ );
222
+ }
157
223
  const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
158
224
  backdrop && /* @__PURE__ */ jsxRuntime.jsx(
159
225
  RadixDialog__namespace.Overlay,
@@ -186,7 +252,7 @@ var DrawerContent = React2__namespace.forwardRef(
186
252
  return content;
187
253
  }
188
254
  );
189
- var DrawerCloseTrigger = React2__namespace.forwardRef(function DrawerCloseTrigger2(props, ref) {
255
+ var DrawerCloseTrigger = React3__namespace.forwardRef(function DrawerCloseTrigger2(props, ref) {
190
256
  return /* @__PURE__ */ jsxRuntime.jsx(RadixDialog__namespace.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
191
257
  CloseButton,
192
258
  {
@@ -200,17 +266,17 @@ var DrawerTrigger = (props) => {
200
266
  const { asChild = true, ...rest } = props;
201
267
  return /* @__PURE__ */ jsxRuntime.jsx(RadixDialog__namespace.Trigger, { asChild, ...rest });
202
268
  };
203
- var DrawerHeader = React2__namespace.forwardRef(
269
+ var DrawerHeader = React3__namespace.forwardRef(
204
270
  function DrawerHeader2({ className, ...props }, ref) {
205
271
  return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("flex flex-col gap-1.5 p-6 pb-0", className), ...props });
206
272
  }
207
273
  );
208
- var DrawerBody = React2__namespace.forwardRef(
274
+ var DrawerBody = React3__namespace.forwardRef(
209
275
  function DrawerBody2({ className, ...props }, ref) {
210
276
  return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("flex-1 overflow-auto p-6", className), ...props });
211
277
  }
212
278
  );
213
- var DrawerFooter = React2__namespace.forwardRef(
279
+ var DrawerFooter = React3__namespace.forwardRef(
214
280
  function DrawerFooter2({ className, ...props }, ref) {
215
281
  return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("flex items-center justify-end gap-2 p-6 pt-0", className), ...props });
216
282
  }
package/dist/drawer.js CHANGED
@@ -1,12 +1,25 @@
1
1
  "use client";
2
+ import { styled, View, Sheet } from '@hanzo/gui';
2
3
  import * as RadixDialog from '@radix-ui/react-dialog';
3
- import * as React2 from 'react';
4
+ import * as React3 from 'react';
4
5
  import { clsx } from 'clsx';
5
6
  import { twMerge } from 'tailwind-merge';
6
- import { styled, View } from '@hanzo/gui';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
8
 
9
9
  // src/drawer.tsx
10
+ var NARROW_PX = 640;
11
+ function useBelow(px) {
12
+ const [below, setBelow] = React3.useState(false);
13
+ React3.useEffect(() => {
14
+ const mql = window.matchMedia(`(max-width: ${px - 1}px)`);
15
+ const apply = () => setBelow(mql.matches);
16
+ apply();
17
+ mql.addEventListener("change", apply);
18
+ return () => mql.removeEventListener("change", apply);
19
+ }, [px]);
20
+ return below;
21
+ }
22
+ var useIsNarrow = () => useBelow(NARROW_PX);
10
23
  function cn(...inputs) {
11
24
  return twMerge(clsx(inputs));
12
25
  }
@@ -45,7 +58,7 @@ var CLOSE_BUTTON_CLASSES = [
45
58
  "hover:text-[var(--hover-color,currentColor)]",
46
59
  "disabled:opacity-40"
47
60
  ].join(" ");
48
- var CloseButton = React2.forwardRef(function CloseButton2(props, ref) {
61
+ var CloseButton = React3.forwardRef(function CloseButton2(props, ref) {
49
62
  const { variant: _variant, size: _size, className, children, ...rest } = props;
50
63
  return /* @__PURE__ */ jsx(
51
64
  CloseButtonFrame,
@@ -72,8 +85,14 @@ var CloseButton = React2.forwardRef(function CloseButton2(props, ref) {
72
85
  }
73
86
  );
74
87
  });
75
- var DrawerPlacementContext = React2.createContext("right");
76
- var DrawerSizeContext = React2.createContext("md");
88
+ var DrawerPlacementContext = React3.createContext("right");
89
+ var DrawerSizeContext = React3.createContext("md");
90
+ var DrawerStateContext = React3.createContext({
91
+ open: false,
92
+ setOpen: () => {
93
+ },
94
+ modal: true
95
+ });
77
96
  var DrawerRoot = (props) => {
78
97
  const {
79
98
  children,
@@ -84,19 +103,26 @@ var DrawerRoot = (props) => {
84
103
  modal = true,
85
104
  size = "md"
86
105
  } = props;
87
- const handleOpenChange = React2.useCallback((nextOpen) => {
106
+ const [uncontrolled, setUncontrolled] = React3.useState(defaultOpen ?? false);
107
+ const isControlled = open !== void 0;
108
+ const isOpen = isControlled ? open : uncontrolled;
109
+ const setOpen = React3.useCallback((nextOpen) => {
110
+ if (!isControlled) setUncontrolled(nextOpen);
88
111
  onOpenChange?.({ open: nextOpen });
89
- }, [onOpenChange]);
90
- return /* @__PURE__ */ jsx(DrawerPlacementContext.Provider, { value: placement, children: /* @__PURE__ */ jsx(DrawerSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx(
112
+ }, [isControlled, onOpenChange]);
113
+ const state = React3.useMemo(
114
+ () => ({ open: isOpen, setOpen, modal }),
115
+ [isOpen, setOpen, modal]
116
+ );
117
+ return /* @__PURE__ */ jsx(DrawerPlacementContext.Provider, { value: placement, children: /* @__PURE__ */ jsx(DrawerSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx(DrawerStateContext.Provider, { value: state, children: /* @__PURE__ */ jsx(
91
118
  RadixDialog.Root,
92
119
  {
93
- open,
94
- defaultOpen,
95
- onOpenChange: handleOpenChange,
120
+ open: isOpen,
121
+ onOpenChange: setOpen,
96
122
  modal,
97
123
  children
98
124
  }
99
- ) }) });
125
+ ) }) }) });
100
126
  };
101
127
  var PLACEMENT_CLASSES = {
102
128
  right: [
@@ -126,11 +152,51 @@ var SIZE_CLASSES = {
126
152
  top: { xs: "h-40", sm: "h-60", md: "h-80", lg: "h-96", xl: "h-[480px]", full: "h-screen" },
127
153
  bottom: { xs: "h-40", sm: "h-60", md: "h-80", lg: "h-96", xl: "h-[480px]", full: "h-screen" }
128
154
  };
129
- var DrawerContent = React2.forwardRef(
155
+ var DrawerContent = React3.forwardRef(
130
156
  function DrawerContent2(props, ref) {
131
157
  const { children, portalled = true, portalRef, offset: _offset, backdrop = true, className, ...rest } = props;
132
- const placement = React2.useContext(DrawerPlacementContext);
133
- const size = React2.useContext(DrawerSizeContext);
158
+ const placement = React3.useContext(DrawerPlacementContext);
159
+ const size = React3.useContext(DrawerSizeContext);
160
+ const { open, setOpen, modal } = React3.useContext(DrawerStateContext);
161
+ const isNarrow = useIsNarrow();
162
+ if (isNarrow) {
163
+ return /* @__PURE__ */ jsxs(
164
+ Sheet,
165
+ {
166
+ open,
167
+ onOpenChange: setOpen,
168
+ modal,
169
+ dismissOnSnapToBottom: true,
170
+ snapPointsMode: "percent",
171
+ snapPoints: [88],
172
+ transition: "medium",
173
+ children: [
174
+ backdrop && /* @__PURE__ */ jsx(
175
+ Sheet.Overlay,
176
+ {
177
+ transition: "lazy",
178
+ enterStyle: { opacity: 0 },
179
+ exitStyle: { opacity: 0 },
180
+ className: "bg-black/50"
181
+ }
182
+ ),
183
+ /* @__PURE__ */ jsx(Sheet.Handle, {}),
184
+ /* @__PURE__ */ jsx(
185
+ Sheet.Frame,
186
+ {
187
+ unstyled: true,
188
+ className: cn(
189
+ "flex flex-col rounded-t-2xl bg-[var(--color-drawer-bg)] shadow-[var(--shadow-drawer)]",
190
+ className
191
+ ),
192
+ ...rest,
193
+ children
194
+ }
195
+ )
196
+ ]
197
+ }
198
+ );
199
+ }
134
200
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [
135
201
  backdrop && /* @__PURE__ */ jsx(
136
202
  RadixDialog.Overlay,
@@ -163,7 +229,7 @@ var DrawerContent = React2.forwardRef(
163
229
  return content;
164
230
  }
165
231
  );
166
- var DrawerCloseTrigger = React2.forwardRef(function DrawerCloseTrigger2(props, ref) {
232
+ var DrawerCloseTrigger = React3.forwardRef(function DrawerCloseTrigger2(props, ref) {
167
233
  return /* @__PURE__ */ jsx(RadixDialog.Close, { asChild: true, children: /* @__PURE__ */ jsx(
168
234
  CloseButton,
169
235
  {
@@ -177,17 +243,17 @@ var DrawerTrigger = (props) => {
177
243
  const { asChild = true, ...rest } = props;
178
244
  return /* @__PURE__ */ jsx(RadixDialog.Trigger, { asChild, ...rest });
179
245
  };
180
- var DrawerHeader = React2.forwardRef(
246
+ var DrawerHeader = React3.forwardRef(
181
247
  function DrawerHeader2({ className, ...props }, ref) {
182
248
  return /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col gap-1.5 p-6 pb-0", className), ...props });
183
249
  }
184
250
  );
185
- var DrawerBody = React2.forwardRef(
251
+ var DrawerBody = React3.forwardRef(
186
252
  function DrawerBody2({ className, ...props }, ref) {
187
253
  return /* @__PURE__ */ jsx("div", { ref, className: cn("flex-1 overflow-auto p-6", className), ...props });
188
254
  }
189
255
  );
190
- var DrawerFooter = React2.forwardRef(
256
+ var DrawerFooter = React3.forwardRef(
191
257
  function DrawerFooter2({ className, ...props }, ref) {
192
258
  return /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center justify-end gap-2 p-6 pt-0", className), ...props });
193
259
  }
@@ -54,8 +54,9 @@ function ExpirationPill({ exp, isSelected, onClick }) {
54
54
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium whitespace-nowrap", children: formatExpDate(exp.date) }),
55
55
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn(
56
56
  "font-mono tabular-nums text-[10px]",
57
- isSelected ? "text-blue-400/70" : "text-zinc-600",
58
- exp.dte <= 7 && !isSelected && "text-amber-600"
57
+ isSelected ? "text-[var(--foreground)]" : "text-[var(--muted-foreground)]",
58
+ // Near expiry is a notice, and a notice in Lux is the loudest neutral.
59
+ exp.dte <= 7 && !isSelected && "text-[var(--color-status-warn)]"
59
60
  ), children: [
60
61
  exp.dte,
61
62
  "d"
@@ -32,8 +32,9 @@ function ExpirationPill({ exp, isSelected, onClick }) {
32
32
  /* @__PURE__ */ jsx("span", { className: "font-medium whitespace-nowrap", children: formatExpDate(exp.date) }),
33
33
  /* @__PURE__ */ jsxs("span", { className: cn(
34
34
  "font-mono tabular-nums text-[10px]",
35
- isSelected ? "text-blue-400/70" : "text-zinc-600",
36
- exp.dte <= 7 && !isSelected && "text-amber-600"
35
+ isSelected ? "text-[var(--foreground)]" : "text-[var(--muted-foreground)]",
36
+ // Near expiry is a notice, and a notice in Lux is the loudest neutral.
37
+ exp.dte <= 7 && !isSelected && "text-[var(--color-status-warn)]"
37
38
  ), children: [
38
39
  exp.dte,
39
40
  "d"
@@ -30,12 +30,12 @@ function cn(...inputs) {
30
30
  return tailwindMerge.twMerge(clsx.clsx(inputs));
31
31
  }
32
32
  var GREEKS = [
33
- { key: "delta", label: "Delta", symbol: "\u0394", color: "text-blue-400", barColor: "bg-blue-500", decimals: 4, maxMagnitude: 1 },
34
- { key: "gamma", label: "Gamma", symbol: "\u0393", color: "text-purple-400", barColor: "bg-purple-500", decimals: 4, maxMagnitude: 0.1 },
35
- { key: "theta", label: "Theta", symbol: "\u0398", color: "text-red-400", barColor: "bg-red-500", decimals: 4, maxMagnitude: 1 },
36
- { key: "vega", label: "Vega", symbol: "\u03BD", color: "text-emerald-400", barColor: "bg-emerald-500", decimals: 4, maxMagnitude: 1 },
37
- { key: "rho", label: "Rho", symbol: "\u03C1", color: "text-orange-400", barColor: "bg-orange-500", decimals: 4, maxMagnitude: 1 },
38
- { key: "iv", label: "IV", symbol: "\u03C3", color: "text-amber-400", barColor: "bg-amber-500", decimals: 1, maxMagnitude: 100 }
33
+ { key: "delta", label: "Delta", symbol: "\u0394", color: "text-[var(--foreground)]", barColor: "bg-[var(--foreground)]", decimals: 4, maxMagnitude: 1 },
34
+ { key: "gamma", label: "Gamma", symbol: "\u0393", color: "text-[var(--chart-1)]", barColor: "bg-[var(--chart-1)]", decimals: 4, maxMagnitude: 0.1 },
35
+ { key: "theta", label: "Theta", symbol: "\u0398", color: "text-[var(--chart-4)]", barColor: "bg-[var(--chart-4)]", decimals: 4, maxMagnitude: 1 },
36
+ { key: "vega", label: "Vega", symbol: "\u03BD", color: "text-[var(--chart-2)]", barColor: "bg-[var(--chart-2)]", decimals: 4, maxMagnitude: 1 },
37
+ { key: "rho", label: "Rho", symbol: "\u03C1", color: "text-[var(--chart-3)]", barColor: "bg-[var(--chart-3)]", decimals: 4, maxMagnitude: 1 },
38
+ { key: "iv", label: "IV", symbol: "\u03C3", color: "text-[var(--chart-5)]", barColor: "bg-[var(--chart-5)]", decimals: 1, maxMagnitude: 100 }
39
39
  ];
40
40
  function GreekItem({ def, value, compact }) {
41
41
  const magnitude = Math.min(Math.abs(value) / def.maxMagnitude, 1);
@@ -8,12 +8,12 @@ function cn(...inputs) {
8
8
  return twMerge(clsx(inputs));
9
9
  }
10
10
  var GREEKS = [
11
- { key: "delta", label: "Delta", symbol: "\u0394", color: "text-blue-400", barColor: "bg-blue-500", decimals: 4, maxMagnitude: 1 },
12
- { key: "gamma", label: "Gamma", symbol: "\u0393", color: "text-purple-400", barColor: "bg-purple-500", decimals: 4, maxMagnitude: 0.1 },
13
- { key: "theta", label: "Theta", symbol: "\u0398", color: "text-red-400", barColor: "bg-red-500", decimals: 4, maxMagnitude: 1 },
14
- { key: "vega", label: "Vega", symbol: "\u03BD", color: "text-emerald-400", barColor: "bg-emerald-500", decimals: 4, maxMagnitude: 1 },
15
- { key: "rho", label: "Rho", symbol: "\u03C1", color: "text-orange-400", barColor: "bg-orange-500", decimals: 4, maxMagnitude: 1 },
16
- { key: "iv", label: "IV", symbol: "\u03C3", color: "text-amber-400", barColor: "bg-amber-500", decimals: 1, maxMagnitude: 100 }
11
+ { key: "delta", label: "Delta", symbol: "\u0394", color: "text-[var(--foreground)]", barColor: "bg-[var(--foreground)]", decimals: 4, maxMagnitude: 1 },
12
+ { key: "gamma", label: "Gamma", symbol: "\u0393", color: "text-[var(--chart-1)]", barColor: "bg-[var(--chart-1)]", decimals: 4, maxMagnitude: 0.1 },
13
+ { key: "theta", label: "Theta", symbol: "\u0398", color: "text-[var(--chart-4)]", barColor: "bg-[var(--chart-4)]", decimals: 4, maxMagnitude: 1 },
14
+ { key: "vega", label: "Vega", symbol: "\u03BD", color: "text-[var(--chart-2)]", barColor: "bg-[var(--chart-2)]", decimals: 4, maxMagnitude: 1 },
15
+ { key: "rho", label: "Rho", symbol: "\u03C1", color: "text-[var(--chart-3)]", barColor: "bg-[var(--chart-3)]", decimals: 4, maxMagnitude: 1 },
16
+ { key: "iv", label: "IV", symbol: "\u03C3", color: "text-[var(--chart-5)]", barColor: "bg-[var(--chart-5)]", decimals: 1, maxMagnitude: 100 }
17
17
  ];
18
18
  function GreekItem({ def, value, compact }) {
19
19
  const magnitude = Math.min(Math.abs(value) / def.maxMagnitude, 1);
package/dist/gui.cjs ADDED
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var gui = require('@hanzo/gui');
5
+
6
+
7
+
8
+ Object.keys(gui).forEach(function (k) {
9
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
10
+ enumerable: true,
11
+ get: function () { return gui[k]; }
12
+ });
13
+ });
package/dist/gui.d.cts ADDED
@@ -0,0 +1,2 @@
1
+ export * from '@hanzo/gui';
2
+ import 'lucide-react';
package/dist/gui.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from '@hanzo/gui';
2
+ import 'lucide-react';
package/dist/gui.js ADDED
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export * from '@hanzo/gui';
package/dist/heading.cjs CHANGED
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
+ var gui = require('@hanzo/gui');
4
5
  var React = require('react');
5
6
  var clsx = require('clsx');
6
7
  var tailwindMerge = require('tailwind-merge');
@@ -14,7 +15,7 @@ var React__default = /*#__PURE__*/_interopDefault(React);
14
15
  function cn(...inputs) {
15
16
  return tailwindMerge.twMerge(clsx.clsx(inputs));
16
17
  }
17
- var LEVEL_TAG = { "1": "h1", "2": "h2", "3": "h3" };
18
+ var LEVEL_TAG = { "1": gui.H1, "2": gui.H2, "3": gui.H3 };
18
19
  var LEVEL_CLASSES = {
19
20
  "1": "text-[18px] leading-[24px] font-medium lg:text-[32px] lg:leading-[40px] lg:tracking-[-0.5px]",
20
21
  "2": "text-[16px] leading-[24px] font-medium lg:text-[24px] lg:leading-[32px]",
@@ -23,13 +24,14 @@ var LEVEL_CLASSES = {
23
24
  var BASE_CLASSES = "font-heading text-heading";
24
25
  var Heading = React__default.default.forwardRef(
25
26
  function Heading2({ level, className, mb, size: _size, style: styleProp, ...rest }, ref) {
26
- const Tag = level ? LEVEL_TAG[level] : "h2";
27
+ const Tag = level ? LEVEL_TAG[level] : gui.H2;
27
28
  const levelClasses = level ? LEVEL_CLASSES[level] : void 0;
28
29
  const mergedStyle = mb !== void 0 ? { ...styleProp, marginBottom: typeof mb === "number" ? `${mb * 4}px` : mb } : styleProp;
29
30
  return /* @__PURE__ */ jsxRuntime.jsx(
30
31
  Tag,
31
32
  {
32
33
  ref,
34
+ unstyled: true,
33
35
  className: cn(BASE_CLASSES, levelClasses, className),
34
36
  style: mergedStyle,
35
37
  ...rest
package/dist/heading.js CHANGED
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ import { H3, H2, H1 } from '@hanzo/gui';
2
3
  import React from 'react';
3
4
  import { clsx } from 'clsx';
4
5
  import { twMerge } from 'tailwind-merge';
@@ -8,7 +9,7 @@ import { jsx } from 'react/jsx-runtime';
8
9
  function cn(...inputs) {
9
10
  return twMerge(clsx(inputs));
10
11
  }
11
- var LEVEL_TAG = { "1": "h1", "2": "h2", "3": "h3" };
12
+ var LEVEL_TAG = { "1": H1, "2": H2, "3": H3 };
12
13
  var LEVEL_CLASSES = {
13
14
  "1": "text-[18px] leading-[24px] font-medium lg:text-[32px] lg:leading-[40px] lg:tracking-[-0.5px]",
14
15
  "2": "text-[16px] leading-[24px] font-medium lg:text-[24px] lg:leading-[32px]",
@@ -17,13 +18,14 @@ var LEVEL_CLASSES = {
17
18
  var BASE_CLASSES = "font-heading text-heading";
18
19
  var Heading = React.forwardRef(
19
20
  function Heading2({ level, className, mb, size: _size, style: styleProp, ...rest }, ref) {
20
- const Tag = level ? LEVEL_TAG[level] : "h2";
21
+ const Tag = level ? LEVEL_TAG[level] : H2;
21
22
  const levelClasses = level ? LEVEL_CLASSES[level] : void 0;
22
23
  const mergedStyle = mb !== void 0 ? { ...styleProp, marginBottom: typeof mb === "number" ? `${mb * 4}px` : mb } : styleProp;
23
24
  return /* @__PURE__ */ jsx(
24
25
  Tag,
25
26
  {
26
27
  ref,
28
+ unstyled: true,
27
29
  className: cn(BASE_CLASSES, levelClasses, className),
28
30
  style: mergedStyle,
29
31
  ...rest