@luxfi/ui 7.0.0 → 7.2.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 (70) hide show
  1. package/dist/alert.cjs +184 -335
  2. package/dist/alert.js +184 -335
  3. package/dist/badge.cjs +162 -321
  4. package/dist/badge.d.cts +3 -7
  5. package/dist/badge.d.ts +3 -7
  6. package/dist/badge.js +162 -320
  7. package/dist/bank.d.cts +1 -1
  8. package/dist/bank.d.ts +1 -1
  9. package/dist/button.cjs +373 -484
  10. package/dist/button.d.cts +10 -7
  11. package/dist/button.d.ts +10 -7
  12. package/dist/button.js +373 -484
  13. package/dist/close-button.cjs +37 -18
  14. package/dist/close-button.d.cts +1 -1
  15. package/dist/close-button.d.ts +1 -1
  16. package/dist/close-button.js +37 -18
  17. package/dist/collapsible.cjs +125 -272
  18. package/dist/collapsible.js +125 -272
  19. package/dist/dialog.cjs +60 -44
  20. package/dist/dialog.d.cts +7 -8
  21. package/dist/dialog.d.ts +7 -8
  22. package/dist/dialog.js +60 -43
  23. package/dist/drawer.cjs +37 -13
  24. package/dist/drawer.js +37 -13
  25. package/dist/heading.cjs +3 -8
  26. package/dist/heading.js +3 -8
  27. package/dist/icon-button.cjs +213 -337
  28. package/dist/icon-button.d.cts +4 -4
  29. package/dist/icon-button.d.ts +4 -4
  30. package/dist/icon-button.js +213 -338
  31. package/dist/image.cjs +125 -272
  32. package/dist/image.js +125 -272
  33. package/dist/index.cjs +695 -858
  34. package/dist/index.d.cts +0 -3
  35. package/dist/index.d.ts +0 -3
  36. package/dist/index.js +695 -856
  37. package/dist/input.cjs +25 -36
  38. package/dist/input.js +25 -36
  39. package/dist/link.cjs +125 -272
  40. package/dist/link.js +125 -272
  41. package/dist/popover.cjs +55 -40
  42. package/dist/popover.js +55 -39
  43. package/dist/select.cjs +125 -272
  44. package/dist/select.js +125 -272
  45. package/dist/skeleton.cjs +125 -272
  46. package/dist/skeleton.js +125 -272
  47. package/dist/table.cjs +127 -274
  48. package/dist/table.js +127 -274
  49. package/dist/tag.cjs +199 -341
  50. package/dist/tag.js +199 -340
  51. package/dist/textarea.cjs +25 -36
  52. package/dist/textarea.js +25 -36
  53. package/dist/tooltip.cjs +22 -21
  54. package/dist/tooltip.d.cts +2 -3
  55. package/dist/tooltip.d.ts +2 -3
  56. package/dist/tooltip.js +22 -20
  57. package/package.json +9 -8
  58. package/src/alert.tsx +23 -51
  59. package/src/badge.tsx +20 -31
  60. package/src/button.tsx +304 -238
  61. package/src/close-button.tsx +48 -22
  62. package/src/dialog.tsx +37 -47
  63. package/src/heading.tsx +8 -19
  64. package/src/icon-button.tsx +129 -104
  65. package/src/input.tsx +27 -36
  66. package/src/popover.tsx +30 -44
  67. package/src/skeleton.tsx +96 -144
  68. package/src/tag.tsx +17 -35
  69. package/src/textarea.tsx +27 -36
  70. package/src/tooltip.tsx +54 -47
package/dist/skeleton.cjs CHANGED
@@ -30,272 +30,137 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
30
  function cn(...inputs) {
31
31
  return tailwindMerge.twMerge(clsx.clsx(inputs));
32
32
  }
33
- var SPACING_SCALE = 4;
34
- function toStylePx(value) {
35
- if (value === void 0) return void 0;
36
- if (typeof value === "string") return value;
37
- return `${value * SPACING_SCALE}px`;
33
+ var SHIM_PROPS = [
34
+ "w",
35
+ "h",
36
+ "minW",
37
+ "maxW",
38
+ "display",
39
+ "flexGrow",
40
+ "flexShrink",
41
+ "flexBasis",
42
+ "fontWeight",
43
+ "textStyle",
44
+ "borderRadius",
45
+ "alignSelf",
46
+ "alignItems",
47
+ "justifyContent",
48
+ "color",
49
+ "mt",
50
+ "mb",
51
+ "ml",
52
+ "mr",
53
+ "height",
54
+ "overflow",
55
+ "whiteSpace",
56
+ "textOverflow",
57
+ "textTransform",
58
+ "gap",
59
+ "gridTemplateColumns",
60
+ "minWidth",
61
+ "boxSize",
62
+ "py",
63
+ "px",
64
+ "p",
65
+ "hideBelow",
66
+ "fontSize",
67
+ "flexWrap",
68
+ "wordBreak",
69
+ "lineHeight",
70
+ "marginRight",
71
+ "position",
72
+ "background"
73
+ ];
74
+ var S = 4;
75
+ function dim(v) {
76
+ if (v == null) return void 0;
77
+ if (typeof v === "number") return `${v * S}px`;
78
+ if (typeof v === "string") return v;
79
+ if (typeof v === "object") {
80
+ const o = v;
81
+ return o.base ?? o.lg ?? o.xl ?? Object.values(o)[0];
82
+ }
83
+ return void 0;
38
84
  }
39
- function extractSkeletonStyleProps(props) {
40
- const style = {};
41
- const rest = {};
42
- function resolveDimension(value) {
43
- if (value === void 0 || value === null) return void 0;
44
- if (typeof value === "number") return `${value * SPACING_SCALE}px`;
45
- if (typeof value === "string") return value;
46
- if (typeof value === "object") {
47
- const obj = value;
48
- return obj.base ?? obj.lg ?? obj.xl ?? Object.values(obj)[0];
49
- }
50
- return void 0;
85
+ function sp(v) {
86
+ if (v === void 0) return void 0;
87
+ return typeof v === "number" ? `${v * S}px` : v;
88
+ }
89
+ function shimToStyle(props) {
90
+ const s = {};
91
+ if (props.w !== void 0) s.width = dim(props.w);
92
+ if (props.h !== void 0) s.height = dim(props.h);
93
+ if (props.minW !== void 0) s.minWidth = dim(props.minW);
94
+ if (props.maxW !== void 0) s.maxWidth = dim(props.maxW);
95
+ if (props.display !== void 0) s.display = props.display;
96
+ if (props.flexGrow !== void 0) s.flexGrow = props.flexGrow;
97
+ if (props.flexShrink !== void 0) s.flexShrink = props.flexShrink;
98
+ if (props.flexBasis !== void 0) s.flexBasis = props.flexBasis;
99
+ if (props.fontWeight !== void 0) s.fontWeight = props.fontWeight;
100
+ if (props.borderRadius !== void 0) s.borderRadius = props.borderRadius;
101
+ if (props.alignSelf !== void 0) s.alignSelf = props.alignSelf;
102
+ if (props.alignItems !== void 0) s.alignItems = props.alignItems;
103
+ if (props.justifyContent !== void 0) s.justifyContent = props.justifyContent;
104
+ if (props.color !== void 0) s.color = props.color;
105
+ if (props.mt !== void 0) s.marginTop = sp(props.mt);
106
+ if (props.mb !== void 0) s.marginBottom = sp(props.mb);
107
+ if (props.ml !== void 0) s.marginLeft = sp(props.ml);
108
+ if (props.mr !== void 0) s.marginRight = sp(props.mr);
109
+ if (props.height !== void 0) s.height = props.height;
110
+ if (props.overflow !== void 0) s.overflow = props.overflow;
111
+ if (props.whiteSpace !== void 0) s.whiteSpace = props.whiteSpace;
112
+ if (props.textOverflow !== void 0) s.textOverflow = props.textOverflow;
113
+ if (props.textTransform !== void 0) s.textTransform = props.textTransform;
114
+ if (props.gap !== void 0) s.gap = sp(props.gap);
115
+ if (props.gridTemplateColumns !== void 0) s.gridTemplateColumns = props.gridTemplateColumns;
116
+ if (props.minWidth !== void 0) s.minWidth = props.minWidth;
117
+ if (props.boxSize !== void 0) {
118
+ const v = typeof props.boxSize === "number" ? `${props.boxSize * S}px` : props.boxSize;
119
+ s.width = v;
120
+ s.height = v;
51
121
  }
52
- for (const [key, value] of Object.entries(props)) {
53
- if (value === void 0) continue;
54
- switch (key) {
55
- case "w": {
56
- const v = resolveDimension(value);
57
- if (v) style.width = v;
58
- break;
59
- }
60
- case "h": {
61
- const v = resolveDimension(value);
62
- if (v) style.height = v;
63
- break;
64
- }
65
- case "minW": {
66
- const v = resolveDimension(value);
67
- if (v) style.minWidth = v;
68
- break;
69
- }
70
- case "maxW": {
71
- const v = resolveDimension(value);
72
- if (v) style.maxWidth = v;
73
- break;
74
- }
75
- case "height":
76
- style.height = value;
77
- break;
78
- case "display":
79
- style.display = value;
80
- break;
81
- case "flexGrow":
82
- style.flexGrow = value;
83
- break;
84
- case "flexShrink":
85
- style.flexShrink = value;
86
- break;
87
- case "flexBasis":
88
- style.flexBasis = value;
89
- break;
90
- case "fontWeight":
91
- style.fontWeight = value;
92
- break;
93
- case "borderRadius":
94
- style.borderRadius = value;
95
- break;
96
- case "alignSelf":
97
- style.alignSelf = value;
98
- break;
99
- case "alignItems":
100
- style.alignItems = value;
101
- break;
102
- case "justifyContent":
103
- style.justifyContent = value;
104
- break;
105
- case "color":
106
- style.color = value;
107
- break;
108
- case "mt":
109
- style.marginTop = toStylePx(value);
110
- break;
111
- case "mb":
112
- style.marginBottom = toStylePx(value);
113
- break;
114
- case "ml":
115
- style.marginLeft = toStylePx(value);
116
- break;
117
- case "mr":
118
- style.marginRight = toStylePx(value);
119
- break;
120
- case "overflow":
121
- style.overflow = value;
122
- break;
123
- case "whiteSpace":
124
- style.whiteSpace = value;
125
- break;
126
- case "textOverflow":
127
- style.textOverflow = value;
128
- break;
129
- case "textTransform":
130
- style.textTransform = value;
131
- break;
132
- case "gap":
133
- style.gap = typeof value === "number" ? `${value * SPACING_SCALE}px` : value;
134
- break;
135
- case "gridTemplateColumns":
136
- style.gridTemplateColumns = value;
137
- break;
138
- case "minWidth":
139
- style.minWidth = value;
140
- break;
141
- case "boxSize": {
142
- const s = typeof value === "number" ? `${value * SPACING_SCALE}px` : value;
143
- style.width = s;
144
- style.height = s;
145
- break;
146
- }
147
- case "py": {
148
- const v = toStylePx(value);
149
- style.paddingTop = v;
150
- style.paddingBottom = v;
151
- break;
152
- }
153
- case "px": {
154
- const v = toStylePx(value);
155
- style.paddingLeft = v;
156
- style.paddingRight = v;
157
- break;
158
- }
159
- case "p": {
160
- const v = toStylePx(value);
161
- style.padding = v;
162
- break;
163
- }
164
- case "hideBelow":
165
- break;
166
- // handled via className
167
- case "textStyle":
168
- break;
169
- // drop textStyle, not directly applicable
170
- case "fontSize":
171
- style.fontSize = value;
172
- break;
173
- case "flexWrap":
174
- style.flexWrap = value;
175
- break;
176
- case "wordBreak":
177
- style.wordBreak = value;
178
- break;
179
- case "lineHeight":
180
- style.lineHeight = value;
181
- break;
182
- case "marginRight":
183
- style.marginRight = value;
184
- break;
185
- case "position":
186
- style.position = value;
187
- break;
188
- case "background":
189
- style.background = value;
190
- break;
191
- default:
192
- rest[key] = value;
193
- break;
194
- }
122
+ if (props.py !== void 0) {
123
+ const v = sp(props.py);
124
+ s.paddingTop = v;
125
+ s.paddingBottom = v;
195
126
  }
196
- return { style, rest };
127
+ if (props.px !== void 0) {
128
+ const v = sp(props.px);
129
+ s.paddingLeft = v;
130
+ s.paddingRight = v;
131
+ }
132
+ if (props.p !== void 0) s.padding = sp(props.p);
133
+ if (props.fontSize !== void 0) s.fontSize = props.fontSize;
134
+ if (props.flexWrap !== void 0) s.flexWrap = props.flexWrap;
135
+ if (props.wordBreak !== void 0) s.wordBreak = props.wordBreak;
136
+ if (props.lineHeight !== void 0) s.lineHeight = props.lineHeight;
137
+ if (props.marginRight !== void 0) s.marginRight = props.marginRight;
138
+ if (props.position !== void 0) s.position = props.position;
139
+ if (props.background !== void 0) s.background = props.background;
140
+ return s;
141
+ }
142
+ function stripShims(props) {
143
+ const out = { ...props };
144
+ for (const k of SHIM_PROPS) delete out[k];
145
+ return out;
197
146
  }
147
+ var SKELETON_CLASSES = [
148
+ "animate-skeleton-shimmer rounded-sm",
149
+ "bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
150
+ "bg-[length:200%_100%]"
151
+ ].join(" ");
152
+ var HIDE_BELOW_MAP = { lg: "lg:hidden", md: "md:hidden", sm: "sm:hidden" };
198
153
  var Skeleton = React__namespace.forwardRef(
199
154
  function Skeleton2(props, ref) {
200
- const {
201
- loading = false,
202
- asChild,
203
- className,
204
- children,
205
- style: styleProp,
206
- // Destructure style-prop shims so they don't leak into DOM
207
- w: _w,
208
- h: _h,
209
- minW: _minW,
210
- maxW: _maxW,
211
- display: _display,
212
- flexGrow: _flexGrow,
213
- flexShrink: _flexShrink,
214
- flexBasis: _flexBasis,
215
- fontWeight: _fontWeight,
216
- textStyle: _textStyle,
217
- borderRadius: _borderRadius,
218
- alignSelf: _alignSelf,
219
- alignItems: _alignItems,
220
- justifyContent: _justifyContent,
221
- color: _color,
222
- mt: _mt,
223
- mb: _mb,
224
- ml: _ml,
225
- mr: _mr,
226
- height: _height,
227
- overflow: _overflow,
228
- whiteSpace: _whiteSpace,
229
- textOverflow: _textOverflow,
230
- textTransform: _textTransform,
231
- gap: _gap,
232
- gridTemplateColumns: _gridTemplateColumns,
233
- minWidth: _minWidth,
234
- boxSize: _boxSize,
235
- py: _py,
236
- px: _px,
237
- p: _p,
238
- hideBelow: _hideBelow,
239
- fontSize: _fontSize,
240
- flexWrap: _flexWrap,
241
- wordBreak: _wordBreak,
242
- lineHeight: _lineHeight,
243
- marginRight: _marginRight,
244
- position: _position,
245
- background: _background,
246
- as: Component = "div",
247
- ...htmlRest
248
- } = props;
249
- const { style: shimStyle } = extractSkeletonStyleProps({
250
- w: _w,
251
- h: _h,
252
- minW: _minW,
253
- maxW: _maxW,
254
- display: _display,
255
- flexGrow: _flexGrow,
256
- flexShrink: _flexShrink,
257
- flexBasis: _flexBasis,
258
- fontWeight: _fontWeight,
259
- textStyle: _textStyle,
260
- borderRadius: _borderRadius,
261
- alignSelf: _alignSelf,
262
- alignItems: _alignItems,
263
- justifyContent: _justifyContent,
264
- color: _color,
265
- mt: _mt,
266
- mb: _mb,
267
- ml: _ml,
268
- mr: _mr,
269
- height: _height,
270
- overflow: _overflow,
271
- whiteSpace: _whiteSpace,
272
- textOverflow: _textOverflow,
273
- textTransform: _textTransform,
274
- gap: _gap,
275
- gridTemplateColumns: _gridTemplateColumns,
276
- minWidth: _minWidth,
277
- boxSize: _boxSize,
278
- py: _py,
279
- px: _px,
280
- p: _p,
281
- hideBelow: _hideBelow,
282
- fontSize: _fontSize,
283
- flexWrap: _flexWrap,
284
- wordBreak: _wordBreak,
285
- lineHeight: _lineHeight,
286
- marginRight: _marginRight,
287
- position: _position,
288
- background: _background
289
- });
155
+ const { loading = false, asChild, className, children, style: styleProp, as: Component = "div", ...allRest } = props;
156
+ const shimStyle = shimToStyle(props);
290
157
  const mergedStyle = Object.keys(shimStyle).length > 0 || styleProp ? { ...shimStyle, ...styleProp } : void 0;
291
- const HIDE_BELOW_MAP = { lg: "lg:hidden", md: "md:hidden", sm: "sm:hidden" };
292
- const hideBelowClass = _hideBelow ? HIDE_BELOW_MAP[_hideBelow] : void 0;
293
- const finalClassName = hideBelowClass ? cn(className, hideBelowClass) : className;
158
+ const hideBelowClass = props.hideBelow ? HIDE_BELOW_MAP[props.hideBelow] : void 0;
159
+ const cls = hideBelowClass ? cn(className, hideBelowClass) : className;
160
+ const htmlRest = stripShims(allRest);
294
161
  if (!loading) {
295
- if (asChild && React__namespace.isValidElement(children)) {
296
- return children;
297
- }
298
- return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: finalClassName, style: mergedStyle, ...htmlRest, children });
162
+ if (asChild && React__namespace.isValidElement(children)) return children;
163
+ return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: cls, style: mergedStyle, ...htmlRest, children });
299
164
  }
300
165
  if (asChild && React__namespace.isValidElement(children)) {
301
166
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -303,13 +168,7 @@ var Skeleton = React__namespace.forwardRef(
303
168
  {
304
169
  ref,
305
170
  "data-loading": true,
306
- className: cn(
307
- "animate-skeleton-shimmer rounded-sm",
308
- "bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
309
- "bg-[length:200%_100%]",
310
- "text-transparent [&_*]:invisible",
311
- finalClassName
312
- ),
171
+ className: cn(SKELETON_CLASSES, "text-transparent [&_*]:invisible", cls),
313
172
  style: mergedStyle,
314
173
  ...htmlRest,
315
174
  children
@@ -321,13 +180,7 @@ var Skeleton = React__namespace.forwardRef(
321
180
  {
322
181
  ref,
323
182
  "data-loading": true,
324
- className: cn(
325
- "animate-skeleton-shimmer rounded-sm",
326
- "bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
327
- "bg-[length:200%_100%]",
328
- children ? "text-transparent [&_*]:invisible" : "min-h-5",
329
- finalClassName
330
- ),
183
+ className: cn(SKELETON_CLASSES, children ? "text-transparent [&_*]:invisible" : "min-h-5", cls),
331
184
  style: mergedStyle,
332
185
  ...htmlRest,
333
186
  children