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