@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.
- package/dist/alert.cjs +184 -335
- package/dist/alert.js +184 -335
- package/dist/badge.cjs +162 -321
- package/dist/badge.d.cts +3 -7
- package/dist/badge.d.ts +3 -7
- package/dist/badge.js +162 -320
- package/dist/bank.d.cts +1 -1
- package/dist/bank.d.ts +1 -1
- package/dist/button.cjs +373 -484
- package/dist/button.d.cts +10 -7
- package/dist/button.d.ts +10 -7
- package/dist/button.js +373 -484
- package/dist/close-button.cjs +37 -18
- package/dist/close-button.d.cts +1 -1
- package/dist/close-button.d.ts +1 -1
- package/dist/close-button.js +37 -18
- package/dist/collapsible.cjs +125 -272
- package/dist/collapsible.js +125 -272
- package/dist/dialog.cjs +60 -44
- package/dist/dialog.d.cts +7 -8
- package/dist/dialog.d.ts +7 -8
- package/dist/dialog.js +60 -43
- package/dist/drawer.cjs +37 -13
- package/dist/drawer.js +37 -13
- package/dist/heading.cjs +3 -8
- package/dist/heading.js +3 -8
- package/dist/icon-button.cjs +213 -337
- package/dist/icon-button.d.cts +4 -4
- package/dist/icon-button.d.ts +4 -4
- package/dist/icon-button.js +213 -338
- package/dist/image.cjs +125 -272
- package/dist/image.js +125 -272
- package/dist/index.cjs +695 -858
- package/dist/index.d.cts +0 -3
- package/dist/index.d.ts +0 -3
- package/dist/index.js +695 -856
- package/dist/input.cjs +25 -36
- package/dist/input.js +25 -36
- package/dist/link.cjs +125 -272
- package/dist/link.js +125 -272
- package/dist/popover.cjs +55 -40
- package/dist/popover.js +55 -39
- package/dist/select.cjs +125 -272
- package/dist/select.js +125 -272
- package/dist/skeleton.cjs +125 -272
- package/dist/skeleton.js +125 -272
- package/dist/table.cjs +127 -274
- package/dist/table.js +127 -274
- package/dist/tag.cjs +199 -341
- package/dist/tag.js +199 -340
- package/dist/textarea.cjs +25 -36
- package/dist/textarea.js +25 -36
- package/dist/tooltip.cjs +22 -21
- package/dist/tooltip.d.cts +2 -3
- package/dist/tooltip.d.ts +2 -3
- package/dist/tooltip.js +22 -20
- package/package.json +9 -8
- package/src/alert.tsx +23 -51
- package/src/badge.tsx +20 -31
- package/src/button.tsx +304 -238
- package/src/close-button.tsx +48 -22
- package/src/dialog.tsx +37 -47
- package/src/heading.tsx +8 -19
- package/src/icon-button.tsx +129 -104
- package/src/input.tsx +27 -36
- package/src/popover.tsx +30 -44
- package/src/skeleton.tsx +96 -144
- package/src/tag.tsx +17 -35
- package/src/textarea.tsx +27 -36
- package/src/tooltip.tsx +54 -47
package/dist/icon-button.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var core = require('@hanzogui/core');
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var clsx = require('clsx');
|
|
7
7
|
var tailwindMerge = require('tailwind-merge');
|
|
@@ -31,272 +31,137 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
31
31
|
function cn(...inputs) {
|
|
32
32
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
33
33
|
}
|
|
34
|
-
var
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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;
|
|
127
|
+
}
|
|
128
|
+
if (props.px !== void 0) {
|
|
129
|
+
const v = sp(props.px);
|
|
130
|
+
s.paddingLeft = v;
|
|
131
|
+
s.paddingRight = v;
|
|
196
132
|
}
|
|
197
|
-
|
|
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;
|
|
198
142
|
}
|
|
143
|
+
function stripShims(props) {
|
|
144
|
+
const out = { ...props };
|
|
145
|
+
for (const k of SHIM_PROPS) delete out[k];
|
|
146
|
+
return out;
|
|
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 = React__namespace.forwardRef(
|
|
200
155
|
function Skeleton2(props, ref) {
|
|
201
|
-
const {
|
|
202
|
-
|
|
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
|
|
293
|
-
const
|
|
294
|
-
const
|
|
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 && React__namespace.isValidElement(children))
|
|
297
|
-
|
|
298
|
-
}
|
|
299
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: finalClassName, style: mergedStyle, ...htmlRest, children });
|
|
163
|
+
if (asChild && React__namespace.isValidElement(children)) return children;
|
|
164
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: cls, style: mergedStyle, ...htmlRest, children });
|
|
300
165
|
}
|
|
301
166
|
if (asChild && React__namespace.isValidElement(children)) {
|
|
302
167
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -304,13 +169,7 @@ var Skeleton = React__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 = React__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
|
|
@@ -365,64 +218,77 @@ React__namespace.forwardRef(
|
|
|
365
218
|
)) });
|
|
366
219
|
}
|
|
367
220
|
);
|
|
368
|
-
var
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
],
|
|
387
|
-
icon_background: [
|
|
388
|
-
"bg-[var(--color-button-icon-background-bg)] text-icon-secondary border-none",
|
|
389
|
-
"hover:text-hover",
|
|
390
|
-
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
|
|
391
|
-
"data-[selected]:hover:text-hover",
|
|
392
|
-
"data-[expanded]:text-hover"
|
|
393
|
-
],
|
|
394
|
-
link: [
|
|
395
|
-
"bg-transparent text-link-primary border-none font-normal px-0 h-auto",
|
|
396
|
-
"hover:bg-transparent hover:text-link-primary-hover",
|
|
397
|
-
"disabled:text-text-secondary"
|
|
398
|
-
],
|
|
399
|
-
dropdown: [
|
|
400
|
-
"border-2 border-solid bg-transparent",
|
|
401
|
-
"text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
|
|
402
|
-
"hover:bg-transparent hover:text-hover hover:border-hover",
|
|
403
|
-
"data-[expanded]:bg-transparent data-[expanded]:text-hover data-[expanded]:border-hover",
|
|
404
|
-
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent",
|
|
405
|
-
"data-[selected]:hover:text-hover"
|
|
406
|
-
],
|
|
407
|
-
pagination: [
|
|
408
|
-
"border-2 border-solid bg-transparent",
|
|
409
|
-
"text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
|
|
410
|
-
"hover:bg-transparent hover:text-hover hover:border-hover",
|
|
411
|
-
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent"
|
|
412
|
-
]
|
|
413
|
-
},
|
|
414
|
-
size: {
|
|
415
|
-
"2xs": "size-5 rounded-sm [&_svg]:size-5",
|
|
416
|
-
"2xs_alt": "size-5 rounded-sm [&_svg]:size-3",
|
|
417
|
-
md: "size-8 rounded-[var(--radius-base,8px)] [&_svg]:size-5"
|
|
418
|
-
}
|
|
221
|
+
var IconButtonFrame = core.styled(core.View, {
|
|
222
|
+
name: "LuxIconButton",
|
|
223
|
+
render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" }),
|
|
224
|
+
role: "button",
|
|
225
|
+
cursor: "pointer",
|
|
226
|
+
display: "inline-flex",
|
|
227
|
+
alignItems: "center",
|
|
228
|
+
justifyContent: "center",
|
|
229
|
+
padding: 0,
|
|
230
|
+
minWidth: "auto",
|
|
231
|
+
flexShrink: 1,
|
|
232
|
+
backgroundColor: "transparent",
|
|
233
|
+
borderWidth: 0,
|
|
234
|
+
variants: {
|
|
235
|
+
size: {
|
|
236
|
+
"2xs": { width: 20, height: 20, borderRadius: 4 },
|
|
237
|
+
"2xs_alt": { width: 20, height: 20, borderRadius: 4 },
|
|
238
|
+
md: { width: 32, height: 32, borderRadius: "var(--radius-base, 8px)" }
|
|
419
239
|
},
|
|
420
|
-
|
|
421
|
-
|
|
240
|
+
disabled: {
|
|
241
|
+
true: {
|
|
242
|
+
opacity: 0.4,
|
|
243
|
+
cursor: "not-allowed",
|
|
244
|
+
pointerEvents: "none"
|
|
245
|
+
}
|
|
422
246
|
}
|
|
423
247
|
}
|
|
424
|
-
);
|
|
425
|
-
var
|
|
248
|
+
});
|
|
249
|
+
var VARIANT_CLASSES = {
|
|
250
|
+
plain: "bg-transparent text-inherit border-none hover:bg-transparent",
|
|
251
|
+
icon_secondary: [
|
|
252
|
+
"bg-transparent text-icon-secondary border-none",
|
|
253
|
+
"hover:text-hover",
|
|
254
|
+
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
|
|
255
|
+
"data-[selected]:hover:text-hover",
|
|
256
|
+
"data-[expanded]:text-hover"
|
|
257
|
+
].join(" "),
|
|
258
|
+
icon_background: [
|
|
259
|
+
"bg-[var(--color-button-icon-background-bg)] text-icon-secondary border-none",
|
|
260
|
+
"hover:text-hover",
|
|
261
|
+
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
|
|
262
|
+
"data-[selected]:hover:text-hover",
|
|
263
|
+
"data-[expanded]:text-hover"
|
|
264
|
+
].join(" "),
|
|
265
|
+
link: [
|
|
266
|
+
"bg-transparent text-link-primary border-none font-normal px-0 h-auto",
|
|
267
|
+
"hover:bg-transparent hover:text-link-primary-hover",
|
|
268
|
+
"disabled:text-text-secondary"
|
|
269
|
+
].join(" "),
|
|
270
|
+
dropdown: [
|
|
271
|
+
"border-2 border-solid bg-transparent",
|
|
272
|
+
"text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
|
|
273
|
+
"hover:bg-transparent hover:text-hover hover:border-hover",
|
|
274
|
+
"data-[expanded]:bg-transparent data-[expanded]:text-hover data-[expanded]:border-hover",
|
|
275
|
+
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent",
|
|
276
|
+
"data-[selected]:hover:text-hover"
|
|
277
|
+
].join(" "),
|
|
278
|
+
pagination: [
|
|
279
|
+
"border-2 border-solid bg-transparent",
|
|
280
|
+
"text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
|
|
281
|
+
"hover:bg-transparent hover:text-hover hover:border-hover",
|
|
282
|
+
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent"
|
|
283
|
+
].join(" ")
|
|
284
|
+
};
|
|
285
|
+
var ICON_SIZE_CLASSES = {
|
|
286
|
+
"2xs": "[&_svg]:size-5",
|
|
287
|
+
"2xs_alt": "[&_svg]:size-3",
|
|
288
|
+
md: "[&_svg]:size-5"
|
|
289
|
+
};
|
|
290
|
+
var SP = 4;
|
|
291
|
+
var IconButton = React__namespace.forwardRef(
|
|
426
292
|
function IconButton2(props, ref) {
|
|
427
293
|
const {
|
|
428
294
|
size,
|
|
@@ -435,7 +301,7 @@ var IconButton = React__namespace.default.forwardRef(
|
|
|
435
301
|
disabled,
|
|
436
302
|
className,
|
|
437
303
|
children,
|
|
438
|
-
as:
|
|
304
|
+
as: _as,
|
|
439
305
|
style: styleProp,
|
|
440
306
|
// Strip Chakra style props
|
|
441
307
|
boxSize: _boxSize,
|
|
@@ -448,7 +314,6 @@ var IconButton = React__namespace.default.forwardRef(
|
|
|
448
314
|
_expanded,
|
|
449
315
|
...rest
|
|
450
316
|
} = props;
|
|
451
|
-
const SP = 4;
|
|
452
317
|
const shimStyle = { ...styleProp };
|
|
453
318
|
if (_boxSize !== void 0) {
|
|
454
319
|
const bs = typeof _boxSize === "number" ? `${_boxSize * SP}px` : _boxSize;
|
|
@@ -464,21 +329,32 @@ var IconButton = React__namespace.default.forwardRef(
|
|
|
464
329
|
if (_borderRadius) shimStyle.borderRadius = _borderRadius;
|
|
465
330
|
if (_ml !== void 0) shimStyle.marginLeft = typeof _ml === "number" ? `${_ml * SP}px` : _ml;
|
|
466
331
|
if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * SP}px` : _mr;
|
|
467
|
-
const
|
|
332
|
+
const mergedStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
|
|
333
|
+
const variantClass = VARIANT_CLASSES[variant] ?? VARIANT_CLASSES.plain;
|
|
334
|
+
const iconSizeClass = size ? ICON_SIZE_CLASSES[size] ?? "" : "";
|
|
335
|
+
const combinedClassName = [variantClass, iconSizeClass, className].filter(Boolean).join(" ");
|
|
468
336
|
const button = /* @__PURE__ */ jsxRuntime.jsx(
|
|
469
|
-
|
|
337
|
+
IconButtonFrame,
|
|
470
338
|
{
|
|
471
339
|
ref,
|
|
472
|
-
|
|
473
|
-
disabled: !loadingSkeleton && (loading || disabled),
|
|
474
|
-
|
|
475
|
-
|
|
340
|
+
size,
|
|
341
|
+
disabled: !loadingSkeleton && (loading || disabled) || void 0,
|
|
342
|
+
render: _as ? React__namespace.createElement(_as) : void 0,
|
|
343
|
+
className: combinedClassName,
|
|
344
|
+
style: mergedStyle,
|
|
476
345
|
...expanded ? { "data-expanded": true } : {},
|
|
477
346
|
...selected ? { "data-selected": true } : {},
|
|
478
347
|
...highlighted ? { "data-highlighted": true } : {},
|
|
479
348
|
...loadingSkeleton ? { "data-loading-skeleton": true } : {},
|
|
480
349
|
...rest,
|
|
481
|
-
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
350
|
+
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
351
|
+
"span",
|
|
352
|
+
{
|
|
353
|
+
className: "inline-block size-5 animate-spin rounded-full border-2 border-current border-b-transparent border-l-transparent",
|
|
354
|
+
role: "status",
|
|
355
|
+
"aria-label": "Loading"
|
|
356
|
+
}
|
|
357
|
+
) : children
|
|
482
358
|
}
|
|
483
359
|
);
|
|
484
360
|
if (loadingSkeleton) {
|
package/dist/icon-button.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
|
|
3
3
|
type Variant = 'plain' | 'icon_secondary' | 'icon_background' | 'link' | 'dropdown' | 'pagination';
|
|
4
4
|
type Size = '2xs' | '2xs_alt' | 'md';
|
|
5
|
-
interface IconButtonProps extends
|
|
5
|
+
interface IconButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'size'> {
|
|
6
6
|
/** Visual variant */
|
|
7
7
|
variant?: Variant;
|
|
8
8
|
/** Icon-button size */
|
|
@@ -18,7 +18,7 @@ interface IconButtonProps extends React__default.ButtonHTMLAttributes<HTMLButton
|
|
|
18
18
|
/** Maps to data-highlighted */
|
|
19
19
|
highlighted?: boolean;
|
|
20
20
|
/** Polymorphic element type (e.g. "div") */
|
|
21
|
-
as?:
|
|
21
|
+
as?: React.ElementType;
|
|
22
22
|
boxSize?: number | string;
|
|
23
23
|
color?: string;
|
|
24
24
|
px?: string | number;
|
|
@@ -28,6 +28,6 @@ interface IconButtonProps extends React__default.ButtonHTMLAttributes<HTMLButton
|
|
|
28
28
|
_hover?: Record<string, string>;
|
|
29
29
|
_expanded?: Record<string, string>;
|
|
30
30
|
}
|
|
31
|
-
declare const IconButton:
|
|
31
|
+
declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
32
32
|
|
|
33
33
|
export { IconButton, type IconButtonProps };
|
package/dist/icon-button.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
|
|
3
3
|
type Variant = 'plain' | 'icon_secondary' | 'icon_background' | 'link' | 'dropdown' | 'pagination';
|
|
4
4
|
type Size = '2xs' | '2xs_alt' | 'md';
|
|
5
|
-
interface IconButtonProps extends
|
|
5
|
+
interface IconButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'size'> {
|
|
6
6
|
/** Visual variant */
|
|
7
7
|
variant?: Variant;
|
|
8
8
|
/** Icon-button size */
|
|
@@ -18,7 +18,7 @@ interface IconButtonProps extends React__default.ButtonHTMLAttributes<HTMLButton
|
|
|
18
18
|
/** Maps to data-highlighted */
|
|
19
19
|
highlighted?: boolean;
|
|
20
20
|
/** Polymorphic element type (e.g. "div") */
|
|
21
|
-
as?:
|
|
21
|
+
as?: React.ElementType;
|
|
22
22
|
boxSize?: number | string;
|
|
23
23
|
color?: string;
|
|
24
24
|
px?: string | number;
|
|
@@ -28,6 +28,6 @@ interface IconButtonProps extends React__default.ButtonHTMLAttributes<HTMLButton
|
|
|
28
28
|
_hover?: Record<string, string>;
|
|
29
29
|
_expanded?: Record<string, string>;
|
|
30
30
|
}
|
|
31
|
-
declare const IconButton:
|
|
31
|
+
declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
32
32
|
|
|
33
33
|
export { IconButton, type IconButtonProps };
|