@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.
- package/dist/alert.cjs +162 -285
- package/dist/alert.js +162 -285
- 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/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 +604 -700
- package/dist/index.d.cts +0 -3
- package/dist/index.d.ts +0 -3
- package/dist/index.js +604 -698
- 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 +184 -306
- package/dist/tag.js +184 -305
- 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 -7
- 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/popover.tsx +30 -44
- package/src/skeleton.tsx +96 -144
- package/src/tooltip.tsx +54 -47
package/dist/link.js
CHANGED
|
@@ -9,272 +9,137 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
9
9
|
function cn(...inputs) {
|
|
10
10
|
return twMerge(clsx(inputs));
|
|
11
11
|
}
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
var SHIM_PROPS = [
|
|
13
|
+
"w",
|
|
14
|
+
"h",
|
|
15
|
+
"minW",
|
|
16
|
+
"maxW",
|
|
17
|
+
"display",
|
|
18
|
+
"flexGrow",
|
|
19
|
+
"flexShrink",
|
|
20
|
+
"flexBasis",
|
|
21
|
+
"fontWeight",
|
|
22
|
+
"textStyle",
|
|
23
|
+
"borderRadius",
|
|
24
|
+
"alignSelf",
|
|
25
|
+
"alignItems",
|
|
26
|
+
"justifyContent",
|
|
27
|
+
"color",
|
|
28
|
+
"mt",
|
|
29
|
+
"mb",
|
|
30
|
+
"ml",
|
|
31
|
+
"mr",
|
|
32
|
+
"height",
|
|
33
|
+
"overflow",
|
|
34
|
+
"whiteSpace",
|
|
35
|
+
"textOverflow",
|
|
36
|
+
"textTransform",
|
|
37
|
+
"gap",
|
|
38
|
+
"gridTemplateColumns",
|
|
39
|
+
"minWidth",
|
|
40
|
+
"boxSize",
|
|
41
|
+
"py",
|
|
42
|
+
"px",
|
|
43
|
+
"p",
|
|
44
|
+
"hideBelow",
|
|
45
|
+
"fontSize",
|
|
46
|
+
"flexWrap",
|
|
47
|
+
"wordBreak",
|
|
48
|
+
"lineHeight",
|
|
49
|
+
"marginRight",
|
|
50
|
+
"position",
|
|
51
|
+
"background"
|
|
52
|
+
];
|
|
53
|
+
var S = 4;
|
|
54
|
+
function dim(v) {
|
|
55
|
+
if (v == null) return void 0;
|
|
56
|
+
if (typeof v === "number") return `${v * S}px`;
|
|
57
|
+
if (typeof v === "string") return v;
|
|
58
|
+
if (typeof v === "object") {
|
|
59
|
+
const o = v;
|
|
60
|
+
return o.base ?? o.lg ?? o.xl ?? Object.values(o)[0];
|
|
61
|
+
}
|
|
62
|
+
return void 0;
|
|
17
63
|
}
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
64
|
+
function sp(v) {
|
|
65
|
+
if (v === void 0) return void 0;
|
|
66
|
+
return typeof v === "number" ? `${v * S}px` : v;
|
|
67
|
+
}
|
|
68
|
+
function shimToStyle(props) {
|
|
69
|
+
const s = {};
|
|
70
|
+
if (props.w !== void 0) s.width = dim(props.w);
|
|
71
|
+
if (props.h !== void 0) s.height = dim(props.h);
|
|
72
|
+
if (props.minW !== void 0) s.minWidth = dim(props.minW);
|
|
73
|
+
if (props.maxW !== void 0) s.maxWidth = dim(props.maxW);
|
|
74
|
+
if (props.display !== void 0) s.display = props.display;
|
|
75
|
+
if (props.flexGrow !== void 0) s.flexGrow = props.flexGrow;
|
|
76
|
+
if (props.flexShrink !== void 0) s.flexShrink = props.flexShrink;
|
|
77
|
+
if (props.flexBasis !== void 0) s.flexBasis = props.flexBasis;
|
|
78
|
+
if (props.fontWeight !== void 0) s.fontWeight = props.fontWeight;
|
|
79
|
+
if (props.borderRadius !== void 0) s.borderRadius = props.borderRadius;
|
|
80
|
+
if (props.alignSelf !== void 0) s.alignSelf = props.alignSelf;
|
|
81
|
+
if (props.alignItems !== void 0) s.alignItems = props.alignItems;
|
|
82
|
+
if (props.justifyContent !== void 0) s.justifyContent = props.justifyContent;
|
|
83
|
+
if (props.color !== void 0) s.color = props.color;
|
|
84
|
+
if (props.mt !== void 0) s.marginTop = sp(props.mt);
|
|
85
|
+
if (props.mb !== void 0) s.marginBottom = sp(props.mb);
|
|
86
|
+
if (props.ml !== void 0) s.marginLeft = sp(props.ml);
|
|
87
|
+
if (props.mr !== void 0) s.marginRight = sp(props.mr);
|
|
88
|
+
if (props.height !== void 0) s.height = props.height;
|
|
89
|
+
if (props.overflow !== void 0) s.overflow = props.overflow;
|
|
90
|
+
if (props.whiteSpace !== void 0) s.whiteSpace = props.whiteSpace;
|
|
91
|
+
if (props.textOverflow !== void 0) s.textOverflow = props.textOverflow;
|
|
92
|
+
if (props.textTransform !== void 0) s.textTransform = props.textTransform;
|
|
93
|
+
if (props.gap !== void 0) s.gap = sp(props.gap);
|
|
94
|
+
if (props.gridTemplateColumns !== void 0) s.gridTemplateColumns = props.gridTemplateColumns;
|
|
95
|
+
if (props.minWidth !== void 0) s.minWidth = props.minWidth;
|
|
96
|
+
if (props.boxSize !== void 0) {
|
|
97
|
+
const v = typeof props.boxSize === "number" ? `${props.boxSize * S}px` : props.boxSize;
|
|
98
|
+
s.width = v;
|
|
99
|
+
s.height = v;
|
|
30
100
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const v = resolveDimension(value);
|
|
36
|
-
if (v) style.width = v;
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
case "h": {
|
|
40
|
-
const v = resolveDimension(value);
|
|
41
|
-
if (v) style.height = v;
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
case "minW": {
|
|
45
|
-
const v = resolveDimension(value);
|
|
46
|
-
if (v) style.minWidth = v;
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
case "maxW": {
|
|
50
|
-
const v = resolveDimension(value);
|
|
51
|
-
if (v) style.maxWidth = v;
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
case "height":
|
|
55
|
-
style.height = value;
|
|
56
|
-
break;
|
|
57
|
-
case "display":
|
|
58
|
-
style.display = value;
|
|
59
|
-
break;
|
|
60
|
-
case "flexGrow":
|
|
61
|
-
style.flexGrow = value;
|
|
62
|
-
break;
|
|
63
|
-
case "flexShrink":
|
|
64
|
-
style.flexShrink = value;
|
|
65
|
-
break;
|
|
66
|
-
case "flexBasis":
|
|
67
|
-
style.flexBasis = value;
|
|
68
|
-
break;
|
|
69
|
-
case "fontWeight":
|
|
70
|
-
style.fontWeight = value;
|
|
71
|
-
break;
|
|
72
|
-
case "borderRadius":
|
|
73
|
-
style.borderRadius = value;
|
|
74
|
-
break;
|
|
75
|
-
case "alignSelf":
|
|
76
|
-
style.alignSelf = value;
|
|
77
|
-
break;
|
|
78
|
-
case "alignItems":
|
|
79
|
-
style.alignItems = value;
|
|
80
|
-
break;
|
|
81
|
-
case "justifyContent":
|
|
82
|
-
style.justifyContent = value;
|
|
83
|
-
break;
|
|
84
|
-
case "color":
|
|
85
|
-
style.color = value;
|
|
86
|
-
break;
|
|
87
|
-
case "mt":
|
|
88
|
-
style.marginTop = toStylePx(value);
|
|
89
|
-
break;
|
|
90
|
-
case "mb":
|
|
91
|
-
style.marginBottom = toStylePx(value);
|
|
92
|
-
break;
|
|
93
|
-
case "ml":
|
|
94
|
-
style.marginLeft = toStylePx(value);
|
|
95
|
-
break;
|
|
96
|
-
case "mr":
|
|
97
|
-
style.marginRight = toStylePx(value);
|
|
98
|
-
break;
|
|
99
|
-
case "overflow":
|
|
100
|
-
style.overflow = value;
|
|
101
|
-
break;
|
|
102
|
-
case "whiteSpace":
|
|
103
|
-
style.whiteSpace = value;
|
|
104
|
-
break;
|
|
105
|
-
case "textOverflow":
|
|
106
|
-
style.textOverflow = value;
|
|
107
|
-
break;
|
|
108
|
-
case "textTransform":
|
|
109
|
-
style.textTransform = value;
|
|
110
|
-
break;
|
|
111
|
-
case "gap":
|
|
112
|
-
style.gap = typeof value === "number" ? `${value * SPACING_SCALE}px` : value;
|
|
113
|
-
break;
|
|
114
|
-
case "gridTemplateColumns":
|
|
115
|
-
style.gridTemplateColumns = value;
|
|
116
|
-
break;
|
|
117
|
-
case "minWidth":
|
|
118
|
-
style.minWidth = value;
|
|
119
|
-
break;
|
|
120
|
-
case "boxSize": {
|
|
121
|
-
const s = typeof value === "number" ? `${value * SPACING_SCALE}px` : value;
|
|
122
|
-
style.width = s;
|
|
123
|
-
style.height = s;
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
case "py": {
|
|
127
|
-
const v = toStylePx(value);
|
|
128
|
-
style.paddingTop = v;
|
|
129
|
-
style.paddingBottom = v;
|
|
130
|
-
break;
|
|
131
|
-
}
|
|
132
|
-
case "px": {
|
|
133
|
-
const v = toStylePx(value);
|
|
134
|
-
style.paddingLeft = v;
|
|
135
|
-
style.paddingRight = v;
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
case "p": {
|
|
139
|
-
const v = toStylePx(value);
|
|
140
|
-
style.padding = v;
|
|
141
|
-
break;
|
|
142
|
-
}
|
|
143
|
-
case "hideBelow":
|
|
144
|
-
break;
|
|
145
|
-
// handled via className
|
|
146
|
-
case "textStyle":
|
|
147
|
-
break;
|
|
148
|
-
// drop textStyle, not directly applicable
|
|
149
|
-
case "fontSize":
|
|
150
|
-
style.fontSize = value;
|
|
151
|
-
break;
|
|
152
|
-
case "flexWrap":
|
|
153
|
-
style.flexWrap = value;
|
|
154
|
-
break;
|
|
155
|
-
case "wordBreak":
|
|
156
|
-
style.wordBreak = value;
|
|
157
|
-
break;
|
|
158
|
-
case "lineHeight":
|
|
159
|
-
style.lineHeight = value;
|
|
160
|
-
break;
|
|
161
|
-
case "marginRight":
|
|
162
|
-
style.marginRight = value;
|
|
163
|
-
break;
|
|
164
|
-
case "position":
|
|
165
|
-
style.position = value;
|
|
166
|
-
break;
|
|
167
|
-
case "background":
|
|
168
|
-
style.background = value;
|
|
169
|
-
break;
|
|
170
|
-
default:
|
|
171
|
-
rest[key] = value;
|
|
172
|
-
break;
|
|
173
|
-
}
|
|
101
|
+
if (props.py !== void 0) {
|
|
102
|
+
const v = sp(props.py);
|
|
103
|
+
s.paddingTop = v;
|
|
104
|
+
s.paddingBottom = v;
|
|
174
105
|
}
|
|
175
|
-
|
|
106
|
+
if (props.px !== void 0) {
|
|
107
|
+
const v = sp(props.px);
|
|
108
|
+
s.paddingLeft = v;
|
|
109
|
+
s.paddingRight = v;
|
|
110
|
+
}
|
|
111
|
+
if (props.p !== void 0) s.padding = sp(props.p);
|
|
112
|
+
if (props.fontSize !== void 0) s.fontSize = props.fontSize;
|
|
113
|
+
if (props.flexWrap !== void 0) s.flexWrap = props.flexWrap;
|
|
114
|
+
if (props.wordBreak !== void 0) s.wordBreak = props.wordBreak;
|
|
115
|
+
if (props.lineHeight !== void 0) s.lineHeight = props.lineHeight;
|
|
116
|
+
if (props.marginRight !== void 0) s.marginRight = props.marginRight;
|
|
117
|
+
if (props.position !== void 0) s.position = props.position;
|
|
118
|
+
if (props.background !== void 0) s.background = props.background;
|
|
119
|
+
return s;
|
|
120
|
+
}
|
|
121
|
+
function stripShims(props) {
|
|
122
|
+
const out = { ...props };
|
|
123
|
+
for (const k of SHIM_PROPS) delete out[k];
|
|
124
|
+
return out;
|
|
176
125
|
}
|
|
126
|
+
var SKELETON_CLASSES = [
|
|
127
|
+
"animate-skeleton-shimmer rounded-sm",
|
|
128
|
+
"bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
|
|
129
|
+
"bg-[length:200%_100%]"
|
|
130
|
+
].join(" ");
|
|
131
|
+
var HIDE_BELOW_MAP = { lg: "lg:hidden", md: "md:hidden", sm: "sm:hidden" };
|
|
177
132
|
var Skeleton = React.forwardRef(
|
|
178
133
|
function Skeleton2(props, ref) {
|
|
179
|
-
const {
|
|
180
|
-
|
|
181
|
-
asChild,
|
|
182
|
-
className,
|
|
183
|
-
children,
|
|
184
|
-
style: styleProp,
|
|
185
|
-
// Destructure style-prop shims so they don't leak into DOM
|
|
186
|
-
w: _w,
|
|
187
|
-
h: _h,
|
|
188
|
-
minW: _minW,
|
|
189
|
-
maxW: _maxW,
|
|
190
|
-
display: _display,
|
|
191
|
-
flexGrow: _flexGrow,
|
|
192
|
-
flexShrink: _flexShrink,
|
|
193
|
-
flexBasis: _flexBasis,
|
|
194
|
-
fontWeight: _fontWeight,
|
|
195
|
-
textStyle: _textStyle,
|
|
196
|
-
borderRadius: _borderRadius,
|
|
197
|
-
alignSelf: _alignSelf,
|
|
198
|
-
alignItems: _alignItems,
|
|
199
|
-
justifyContent: _justifyContent,
|
|
200
|
-
color: _color,
|
|
201
|
-
mt: _mt,
|
|
202
|
-
mb: _mb,
|
|
203
|
-
ml: _ml,
|
|
204
|
-
mr: _mr,
|
|
205
|
-
height: _height,
|
|
206
|
-
overflow: _overflow,
|
|
207
|
-
whiteSpace: _whiteSpace,
|
|
208
|
-
textOverflow: _textOverflow,
|
|
209
|
-
textTransform: _textTransform,
|
|
210
|
-
gap: _gap,
|
|
211
|
-
gridTemplateColumns: _gridTemplateColumns,
|
|
212
|
-
minWidth: _minWidth,
|
|
213
|
-
boxSize: _boxSize,
|
|
214
|
-
py: _py,
|
|
215
|
-
px: _px,
|
|
216
|
-
p: _p,
|
|
217
|
-
hideBelow: _hideBelow,
|
|
218
|
-
fontSize: _fontSize,
|
|
219
|
-
flexWrap: _flexWrap,
|
|
220
|
-
wordBreak: _wordBreak,
|
|
221
|
-
lineHeight: _lineHeight,
|
|
222
|
-
marginRight: _marginRight,
|
|
223
|
-
position: _position,
|
|
224
|
-
background: _background,
|
|
225
|
-
as: Component = "div",
|
|
226
|
-
...htmlRest
|
|
227
|
-
} = props;
|
|
228
|
-
const { style: shimStyle } = extractSkeletonStyleProps({
|
|
229
|
-
w: _w,
|
|
230
|
-
h: _h,
|
|
231
|
-
minW: _minW,
|
|
232
|
-
maxW: _maxW,
|
|
233
|
-
display: _display,
|
|
234
|
-
flexGrow: _flexGrow,
|
|
235
|
-
flexShrink: _flexShrink,
|
|
236
|
-
flexBasis: _flexBasis,
|
|
237
|
-
fontWeight: _fontWeight,
|
|
238
|
-
textStyle: _textStyle,
|
|
239
|
-
borderRadius: _borderRadius,
|
|
240
|
-
alignSelf: _alignSelf,
|
|
241
|
-
alignItems: _alignItems,
|
|
242
|
-
justifyContent: _justifyContent,
|
|
243
|
-
color: _color,
|
|
244
|
-
mt: _mt,
|
|
245
|
-
mb: _mb,
|
|
246
|
-
ml: _ml,
|
|
247
|
-
mr: _mr,
|
|
248
|
-
height: _height,
|
|
249
|
-
overflow: _overflow,
|
|
250
|
-
whiteSpace: _whiteSpace,
|
|
251
|
-
textOverflow: _textOverflow,
|
|
252
|
-
textTransform: _textTransform,
|
|
253
|
-
gap: _gap,
|
|
254
|
-
gridTemplateColumns: _gridTemplateColumns,
|
|
255
|
-
minWidth: _minWidth,
|
|
256
|
-
boxSize: _boxSize,
|
|
257
|
-
py: _py,
|
|
258
|
-
px: _px,
|
|
259
|
-
p: _p,
|
|
260
|
-
hideBelow: _hideBelow,
|
|
261
|
-
fontSize: _fontSize,
|
|
262
|
-
flexWrap: _flexWrap,
|
|
263
|
-
wordBreak: _wordBreak,
|
|
264
|
-
lineHeight: _lineHeight,
|
|
265
|
-
marginRight: _marginRight,
|
|
266
|
-
position: _position,
|
|
267
|
-
background: _background
|
|
268
|
-
});
|
|
134
|
+
const { loading = false, asChild, className, children, style: styleProp, as: Component = "div", ...allRest } = props;
|
|
135
|
+
const shimStyle = shimToStyle(props);
|
|
269
136
|
const mergedStyle = Object.keys(shimStyle).length > 0 || styleProp ? { ...shimStyle, ...styleProp } : void 0;
|
|
270
|
-
const
|
|
271
|
-
const
|
|
272
|
-
const
|
|
137
|
+
const hideBelowClass = props.hideBelow ? HIDE_BELOW_MAP[props.hideBelow] : void 0;
|
|
138
|
+
const cls = hideBelowClass ? cn(className, hideBelowClass) : className;
|
|
139
|
+
const htmlRest = stripShims(allRest);
|
|
273
140
|
if (!loading) {
|
|
274
|
-
if (asChild && React.isValidElement(children))
|
|
275
|
-
|
|
276
|
-
}
|
|
277
|
-
return /* @__PURE__ */ jsx(Component, { ref, className: finalClassName, style: mergedStyle, ...htmlRest, children });
|
|
141
|
+
if (asChild && React.isValidElement(children)) return children;
|
|
142
|
+
return /* @__PURE__ */ jsx(Component, { ref, className: cls, style: mergedStyle, ...htmlRest, children });
|
|
278
143
|
}
|
|
279
144
|
if (asChild && React.isValidElement(children)) {
|
|
280
145
|
return /* @__PURE__ */ jsx(
|
|
@@ -282,13 +147,7 @@ var Skeleton = React.forwardRef(
|
|
|
282
147
|
{
|
|
283
148
|
ref,
|
|
284
149
|
"data-loading": true,
|
|
285
|
-
className: cn(
|
|
286
|
-
"animate-skeleton-shimmer rounded-sm",
|
|
287
|
-
"bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
|
|
288
|
-
"bg-[length:200%_100%]",
|
|
289
|
-
"text-transparent [&_*]:invisible",
|
|
290
|
-
finalClassName
|
|
291
|
-
),
|
|
150
|
+
className: cn(SKELETON_CLASSES, "text-transparent [&_*]:invisible", cls),
|
|
292
151
|
style: mergedStyle,
|
|
293
152
|
...htmlRest,
|
|
294
153
|
children
|
|
@@ -300,13 +159,7 @@ var Skeleton = React.forwardRef(
|
|
|
300
159
|
{
|
|
301
160
|
ref,
|
|
302
161
|
"data-loading": true,
|
|
303
|
-
className: cn(
|
|
304
|
-
"animate-skeleton-shimmer rounded-sm",
|
|
305
|
-
"bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
|
|
306
|
-
"bg-[length:200%_100%]",
|
|
307
|
-
children ? "text-transparent [&_*]:invisible" : "min-h-5",
|
|
308
|
-
finalClassName
|
|
309
|
-
),
|
|
162
|
+
className: cn(SKELETON_CLASSES, children ? "text-transparent [&_*]:invisible" : "min-h-5", cls),
|
|
310
163
|
style: mergedStyle,
|
|
311
164
|
...htmlRest,
|
|
312
165
|
children
|
package/dist/popover.cjs
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var popover = require('@hanzogui/popover');
|
|
5
5
|
var React2 = require('react');
|
|
6
6
|
var clsx = require('clsx');
|
|
7
7
|
var tailwindMerge = require('tailwind-merge');
|
|
8
|
+
var core = require('@hanzogui/core');
|
|
8
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
10
|
|
|
10
11
|
function _interopNamespace(e) {
|
|
@@ -25,7 +26,6 @@ function _interopNamespace(e) {
|
|
|
25
26
|
return Object.freeze(n);
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
var RadixPopover__namespace = /*#__PURE__*/_interopNamespace(RadixPopover);
|
|
29
29
|
var React2__namespace = /*#__PURE__*/_interopNamespace(React2);
|
|
30
30
|
|
|
31
31
|
// src/popover.tsx
|
|
@@ -33,24 +33,47 @@ function cn(...inputs) {
|
|
|
33
33
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
34
34
|
}
|
|
35
35
|
var CLOSE_ICON_PATH = "M9.44 8.035a.791.791 0 0 0 1.12 0l3.802-3.803a.791.791 0 0 1 1.119 0l.287.287a.79.79 0 0 1 0 1.119L11.965 9.44a.79.79 0 0 0 0 1.118l3.803 3.803a.791.791 0 0 1 0 1.119l-.287.287a.791.791 0 0 1-1.119 0l-3.803-3.803a.79.79 0 0 0-1.118 0l-3.803 3.803a.79.79 0 0 1-1.119 0l-.287-.287a.791.791 0 0 1 0-1.119l3.803-3.803a.791.791 0 0 0 0-1.118L4.232 5.638a.791.791 0 0 1 0-1.119l.287-.287a.791.791 0 0 1 1.119 0L9.44 8.035Z";
|
|
36
|
+
var CloseButtonFrame = core.styled(core.View, {
|
|
37
|
+
name: "LuxCloseButton",
|
|
38
|
+
render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", "aria-label": "Close" }),
|
|
39
|
+
role: "button",
|
|
40
|
+
cursor: "pointer",
|
|
41
|
+
display: "inline-flex",
|
|
42
|
+
alignItems: "center",
|
|
43
|
+
justifyContent: "center",
|
|
44
|
+
width: 20,
|
|
45
|
+
height: 20,
|
|
46
|
+
minWidth: 0,
|
|
47
|
+
flexShrink: 1,
|
|
48
|
+
padding: 0,
|
|
49
|
+
borderRadius: 4,
|
|
50
|
+
borderWidth: 0,
|
|
51
|
+
overflow: "hidden",
|
|
52
|
+
backgroundColor: "transparent",
|
|
53
|
+
hoverStyle: {
|
|
54
|
+
backgroundColor: "transparent"
|
|
55
|
+
},
|
|
56
|
+
variants: {
|
|
57
|
+
disabled: {
|
|
58
|
+
true: {
|
|
59
|
+
opacity: 0.4,
|
|
60
|
+
pointerEvents: "none"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
var CLOSE_BUTTON_CLASSES = [
|
|
66
|
+
"text-[var(--closeButton-fg,currentColor)]",
|
|
67
|
+
"hover:text-[var(--hover-color,currentColor)]",
|
|
68
|
+
"disabled:opacity-40"
|
|
69
|
+
].join(" ");
|
|
36
70
|
var CloseButton = React2__namespace.forwardRef(function CloseButton2(props, ref) {
|
|
37
71
|
const { variant: _variant, size: _size, className, children, ...rest } = props;
|
|
38
72
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39
|
-
|
|
73
|
+
CloseButtonFrame,
|
|
40
74
|
{
|
|
41
|
-
type: "button",
|
|
42
|
-
"aria-label": "Close",
|
|
43
75
|
ref,
|
|
44
|
-
className:
|
|
45
|
-
"inline-flex items-center justify-center",
|
|
46
|
-
"size-5 min-w-0 shrink-0 p-0",
|
|
47
|
-
"rounded-sm border-0 overflow-hidden",
|
|
48
|
-
"bg-transparent text-[var(--closeButton-fg,currentColor)]",
|
|
49
|
-
"hover:bg-transparent hover:text-[var(--hover-color,currentColor)]",
|
|
50
|
-
"disabled:opacity-40",
|
|
51
|
-
"cursor-pointer",
|
|
52
|
-
className
|
|
53
|
-
),
|
|
76
|
+
className: [CLOSE_BUTTON_CLASSES, className].filter(Boolean).join(" "),
|
|
54
77
|
...rest,
|
|
55
78
|
children: children ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
56
79
|
"svg",
|
|
@@ -104,8 +127,7 @@ var PopoverRoot = (props) => {
|
|
|
104
127
|
positioning,
|
|
105
128
|
autoFocus = false,
|
|
106
129
|
closeOnInteractOutside = true,
|
|
107
|
-
|
|
108
|
-
// lazyMount and unmountOnExit are handled via forceMount on Portal/Content
|
|
130
|
+
// lazyMount and unmountOnExit are handled via keepChildrenMounted
|
|
109
131
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
110
132
|
lazyMount: _lazyMount,
|
|
111
133
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -141,23 +163,27 @@ var PopoverRoot = (props) => {
|
|
|
141
163
|
const handleOpenChange = React2__namespace.useCallback((isOpen) => {
|
|
142
164
|
onOpenChange?.({ open: isOpen });
|
|
143
165
|
}, [onOpenChange]);
|
|
166
|
+
const placement = mergedPositioning.placement ?? "bottom-start";
|
|
167
|
+
const offset = mergedPositioning.offset?.mainAxis ?? 4;
|
|
144
168
|
return /* @__PURE__ */ jsxRuntime.jsx(PositioningContext.Provider, { value: positioningValue, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
145
|
-
|
|
169
|
+
popover.Popover,
|
|
146
170
|
{
|
|
147
171
|
open,
|
|
148
172
|
defaultOpen,
|
|
149
173
|
onOpenChange: handleOpenChange,
|
|
150
|
-
|
|
174
|
+
placement,
|
|
175
|
+
offset,
|
|
176
|
+
disableFocus: !autoFocus,
|
|
151
177
|
children
|
|
152
178
|
}
|
|
153
179
|
) });
|
|
154
180
|
};
|
|
155
181
|
var PopoverTrigger = React2__namespace.forwardRef(function PopoverTrigger2(props, ref) {
|
|
156
182
|
const { asChild = true, ...rest } = props;
|
|
157
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
183
|
+
return /* @__PURE__ */ jsxRuntime.jsx(popover.Popover.Trigger, { asChild: asChild ? "except-style" : void 0, ref, ...rest });
|
|
158
184
|
});
|
|
159
185
|
var PopoverContent = React2__namespace.forwardRef(function PopoverContent2(props, ref) {
|
|
160
|
-
const { portalled = true, portalRef, className, w, minW, maxW, paddingTop, style: styleProp, ...rest } = props;
|
|
186
|
+
const { portalled = true, portalRef: _portalRef, className, w, minW, maxW, paddingTop, style: styleProp, ...rest } = props;
|
|
161
187
|
const resolvedW = typeof w === "object" ? w.base ?? w.lg : w;
|
|
162
188
|
const contentStyle = {
|
|
163
189
|
...styleProp,
|
|
@@ -166,20 +192,11 @@ var PopoverContent = React2__namespace.forwardRef(function PopoverContent2(props
|
|
|
166
192
|
...maxW ? { maxWidth: maxW } : {},
|
|
167
193
|
...paddingTop !== void 0 ? { paddingTop: typeof paddingTop === "number" ? `${paddingTop * 4}px` : paddingTop } : {}
|
|
168
194
|
};
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
const preventInteract = React2__namespace.useCallback((e) => e.preventDefault(), []);
|
|
172
|
-
const content = /* @__PURE__ */ jsxRuntime.jsx(
|
|
173
|
-
RadixPopover__namespace.Content,
|
|
195
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
196
|
+
popover.Popover.Content,
|
|
174
197
|
{
|
|
175
198
|
ref,
|
|
176
|
-
|
|
177
|
-
align: positioning.align,
|
|
178
|
-
sideOffset: positioning.sideOffset,
|
|
179
|
-
alignOffset: positioning.alignOffset,
|
|
180
|
-
collisionPadding: positioning.collisionPadding,
|
|
181
|
-
onOpenAutoFocus: positioning.autoFocus ? void 0 : preventFocus,
|
|
182
|
-
onInteractOutside: positioning.closeOnInteractOutside ? void 0 : preventInteract,
|
|
199
|
+
unstyled: true,
|
|
183
200
|
className: cn(
|
|
184
201
|
"z-50 rounded-lg border border-[var(--color-popover-border,var(--color-border-divider))]",
|
|
185
202
|
"bg-[var(--color-popover-bg,var(--color-dialog-bg))]",
|
|
@@ -195,17 +212,14 @@ var PopoverContent = React2__namespace.forwardRef(function PopoverContent2(props
|
|
|
195
212
|
...rest
|
|
196
213
|
}
|
|
197
214
|
);
|
|
198
|
-
if (!portalled) {
|
|
199
|
-
return content;
|
|
200
|
-
}
|
|
201
|
-
return /* @__PURE__ */ jsxRuntime.jsx(RadixPopover__namespace.Portal, { container: portalRef?.current ?? void 0, children: content });
|
|
202
215
|
});
|
|
203
216
|
var PopoverArrow = React2__namespace.forwardRef(function PopoverArrow2(props, ref) {
|
|
204
217
|
const { className, ...rest } = props;
|
|
205
218
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
206
|
-
|
|
219
|
+
popover.Popover.Arrow,
|
|
207
220
|
{
|
|
208
221
|
ref,
|
|
222
|
+
unstyled: true,
|
|
209
223
|
className: cn("fill-[var(--color-popover-bg,var(--color-dialog-bg))]", className),
|
|
210
224
|
...rest
|
|
211
225
|
}
|
|
@@ -214,8 +228,9 @@ var PopoverArrow = React2__namespace.forwardRef(function PopoverArrow2(props, re
|
|
|
214
228
|
var PopoverCloseTrigger = React2__namespace.forwardRef(function PopoverCloseTrigger2(props, ref) {
|
|
215
229
|
const { className, ...rest } = props;
|
|
216
230
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
217
|
-
|
|
231
|
+
popover.Popover.Close,
|
|
218
232
|
{
|
|
233
|
+
unstyled: true,
|
|
219
234
|
className: cn("absolute top-1 right-1", className),
|
|
220
235
|
...rest,
|
|
221
236
|
asChild: true,
|
|
@@ -229,7 +244,7 @@ var PopoverCloseTriggerWrapper = React2__namespace.forwardRef(function PopoverCl
|
|
|
229
244
|
if (disabled) {
|
|
230
245
|
return children;
|
|
231
246
|
}
|
|
232
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
247
|
+
return /* @__PURE__ */ jsxRuntime.jsx(popover.Popover.Close, { ref, ...rest, asChild: true, children });
|
|
233
248
|
});
|
|
234
249
|
var PopoverBody = React2__namespace.forwardRef(function PopoverBody2(props, ref) {
|
|
235
250
|
const {
|