@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/index.js
CHANGED
|
@@ -6,18 +6,19 @@ import * as React29 from 'react';
|
|
|
6
6
|
import React29__default from 'react';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
import { cva } from 'class-variance-authority';
|
|
9
|
+
import { styled, View, Text } from '@hanzogui/core';
|
|
9
10
|
import * as RadixAvatar from '@radix-ui/react-avatar';
|
|
10
|
-
import
|
|
11
|
+
import { TooltipGroup, Tooltip as Tooltip$1 } from '@hanzogui/tooltip';
|
|
11
12
|
import { useClickAway, useDebounce } from '@uidotdev/usehooks';
|
|
12
|
-
import { Slot } from '@radix-ui/react-slot';
|
|
13
13
|
import * as RadixCheckbox from '@radix-ui/react-checkbox';
|
|
14
14
|
import * as Collapsible from '@radix-ui/react-collapsible';
|
|
15
|
+
import { Dialog } from '@hanzogui/dialog';
|
|
15
16
|
import * as RadixDialog from '@radix-ui/react-dialog';
|
|
16
17
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
17
18
|
import { debounce, throttle } from 'es-toolkit';
|
|
18
19
|
import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
|
|
19
20
|
import { LuCheck, LuChevronRight } from 'react-icons/lu';
|
|
20
|
-
import
|
|
21
|
+
import { Popover } from '@hanzogui/popover';
|
|
21
22
|
import * as RadixProgress from '@radix-ui/react-progress';
|
|
22
23
|
import * as RadixRadioGroup from '@radix-ui/react-radio-group';
|
|
23
24
|
import * as RadixSelect from '@radix-ui/react-select';
|
|
@@ -25,7 +26,6 @@ import * as RadixSlider from '@radix-ui/react-slider';
|
|
|
25
26
|
import * as RadixSwitch from '@radix-ui/react-switch';
|
|
26
27
|
import * as RadixTabs from '@radix-ui/react-tabs';
|
|
27
28
|
import { toast, Toaster as Toaster$1 } from 'sonner';
|
|
28
|
-
import { styled, View, Text } from '@hanzogui/core';
|
|
29
29
|
|
|
30
30
|
// src/utils.ts
|
|
31
31
|
function cn(...inputs) {
|
|
@@ -205,24 +205,47 @@ function useAccordion(items) {
|
|
|
205
205
|
}, [value, onValueChange, scrollToItemFromUrl]);
|
|
206
206
|
}
|
|
207
207
|
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";
|
|
208
|
+
var CloseButtonFrame = styled(View, {
|
|
209
|
+
name: "LuxCloseButton",
|
|
210
|
+
render: /* @__PURE__ */ jsx("button", { type: "button", "aria-label": "Close" }),
|
|
211
|
+
role: "button",
|
|
212
|
+
cursor: "pointer",
|
|
213
|
+
display: "inline-flex",
|
|
214
|
+
alignItems: "center",
|
|
215
|
+
justifyContent: "center",
|
|
216
|
+
width: 20,
|
|
217
|
+
height: 20,
|
|
218
|
+
minWidth: 0,
|
|
219
|
+
flexShrink: 1,
|
|
220
|
+
padding: 0,
|
|
221
|
+
borderRadius: 4,
|
|
222
|
+
borderWidth: 0,
|
|
223
|
+
overflow: "hidden",
|
|
224
|
+
backgroundColor: "transparent",
|
|
225
|
+
hoverStyle: {
|
|
226
|
+
backgroundColor: "transparent"
|
|
227
|
+
},
|
|
228
|
+
variants: {
|
|
229
|
+
disabled: {
|
|
230
|
+
true: {
|
|
231
|
+
opacity: 0.4,
|
|
232
|
+
pointerEvents: "none"
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
var CLOSE_BUTTON_CLASSES = [
|
|
238
|
+
"text-[var(--closeButton-fg,currentColor)]",
|
|
239
|
+
"hover:text-[var(--hover-color,currentColor)]",
|
|
240
|
+
"disabled:opacity-40"
|
|
241
|
+
].join(" ");
|
|
208
242
|
var CloseButton = React29.forwardRef(function CloseButton2(props, ref) {
|
|
209
243
|
const { variant: _variant, size: _size, className, children, ...rest } = props;
|
|
210
244
|
return /* @__PURE__ */ jsx(
|
|
211
|
-
|
|
245
|
+
CloseButtonFrame,
|
|
212
246
|
{
|
|
213
|
-
type: "button",
|
|
214
|
-
"aria-label": "Close",
|
|
215
247
|
ref,
|
|
216
|
-
className:
|
|
217
|
-
"inline-flex items-center justify-center",
|
|
218
|
-
"size-5 min-w-0 shrink-0 p-0",
|
|
219
|
-
"rounded-sm border-0 overflow-hidden",
|
|
220
|
-
"bg-transparent text-[var(--closeButton-fg,currentColor)]",
|
|
221
|
-
"hover:bg-transparent hover:text-[var(--hover-color,currentColor)]",
|
|
222
|
-
"disabled:opacity-40",
|
|
223
|
-
"cursor-pointer",
|
|
224
|
-
className
|
|
225
|
-
),
|
|
248
|
+
className: [CLOSE_BUTTON_CLASSES, className].filter(Boolean).join(" "),
|
|
226
249
|
...rest,
|
|
227
250
|
children: children ?? /* @__PURE__ */ jsx(
|
|
228
251
|
"svg",
|
|
@@ -243,272 +266,137 @@ var CloseButton = React29.forwardRef(function CloseButton2(props, ref) {
|
|
|
243
266
|
}
|
|
244
267
|
);
|
|
245
268
|
});
|
|
246
|
-
var
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
269
|
+
var SHIM_PROPS = [
|
|
270
|
+
"w",
|
|
271
|
+
"h",
|
|
272
|
+
"minW",
|
|
273
|
+
"maxW",
|
|
274
|
+
"display",
|
|
275
|
+
"flexGrow",
|
|
276
|
+
"flexShrink",
|
|
277
|
+
"flexBasis",
|
|
278
|
+
"fontWeight",
|
|
279
|
+
"textStyle",
|
|
280
|
+
"borderRadius",
|
|
281
|
+
"alignSelf",
|
|
282
|
+
"alignItems",
|
|
283
|
+
"justifyContent",
|
|
284
|
+
"color",
|
|
285
|
+
"mt",
|
|
286
|
+
"mb",
|
|
287
|
+
"ml",
|
|
288
|
+
"mr",
|
|
289
|
+
"height",
|
|
290
|
+
"overflow",
|
|
291
|
+
"whiteSpace",
|
|
292
|
+
"textOverflow",
|
|
293
|
+
"textTransform",
|
|
294
|
+
"gap",
|
|
295
|
+
"gridTemplateColumns",
|
|
296
|
+
"minWidth",
|
|
297
|
+
"boxSize",
|
|
298
|
+
"py",
|
|
299
|
+
"px",
|
|
300
|
+
"p",
|
|
301
|
+
"hideBelow",
|
|
302
|
+
"fontSize",
|
|
303
|
+
"flexWrap",
|
|
304
|
+
"wordBreak",
|
|
305
|
+
"lineHeight",
|
|
306
|
+
"marginRight",
|
|
307
|
+
"position",
|
|
308
|
+
"background"
|
|
309
|
+
];
|
|
310
|
+
var S = 4;
|
|
311
|
+
function dim(v) {
|
|
312
|
+
if (v == null) return void 0;
|
|
313
|
+
if (typeof v === "number") return `${v * S}px`;
|
|
314
|
+
if (typeof v === "string") return v;
|
|
315
|
+
if (typeof v === "object") {
|
|
316
|
+
const o = v;
|
|
317
|
+
return o.base ?? o.lg ?? o.xl ?? Object.values(o)[0];
|
|
318
|
+
}
|
|
319
|
+
return void 0;
|
|
251
320
|
}
|
|
252
|
-
function
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
321
|
+
function sp(v) {
|
|
322
|
+
if (v === void 0) return void 0;
|
|
323
|
+
return typeof v === "number" ? `${v * S}px` : v;
|
|
324
|
+
}
|
|
325
|
+
function shimToStyle(props) {
|
|
326
|
+
const s = {};
|
|
327
|
+
if (props.w !== void 0) s.width = dim(props.w);
|
|
328
|
+
if (props.h !== void 0) s.height = dim(props.h);
|
|
329
|
+
if (props.minW !== void 0) s.minWidth = dim(props.minW);
|
|
330
|
+
if (props.maxW !== void 0) s.maxWidth = dim(props.maxW);
|
|
331
|
+
if (props.display !== void 0) s.display = props.display;
|
|
332
|
+
if (props.flexGrow !== void 0) s.flexGrow = props.flexGrow;
|
|
333
|
+
if (props.flexShrink !== void 0) s.flexShrink = props.flexShrink;
|
|
334
|
+
if (props.flexBasis !== void 0) s.flexBasis = props.flexBasis;
|
|
335
|
+
if (props.fontWeight !== void 0) s.fontWeight = props.fontWeight;
|
|
336
|
+
if (props.borderRadius !== void 0) s.borderRadius = props.borderRadius;
|
|
337
|
+
if (props.alignSelf !== void 0) s.alignSelf = props.alignSelf;
|
|
338
|
+
if (props.alignItems !== void 0) s.alignItems = props.alignItems;
|
|
339
|
+
if (props.justifyContent !== void 0) s.justifyContent = props.justifyContent;
|
|
340
|
+
if (props.color !== void 0) s.color = props.color;
|
|
341
|
+
if (props.mt !== void 0) s.marginTop = sp(props.mt);
|
|
342
|
+
if (props.mb !== void 0) s.marginBottom = sp(props.mb);
|
|
343
|
+
if (props.ml !== void 0) s.marginLeft = sp(props.ml);
|
|
344
|
+
if (props.mr !== void 0) s.marginRight = sp(props.mr);
|
|
345
|
+
if (props.height !== void 0) s.height = props.height;
|
|
346
|
+
if (props.overflow !== void 0) s.overflow = props.overflow;
|
|
347
|
+
if (props.whiteSpace !== void 0) s.whiteSpace = props.whiteSpace;
|
|
348
|
+
if (props.textOverflow !== void 0) s.textOverflow = props.textOverflow;
|
|
349
|
+
if (props.textTransform !== void 0) s.textTransform = props.textTransform;
|
|
350
|
+
if (props.gap !== void 0) s.gap = sp(props.gap);
|
|
351
|
+
if (props.gridTemplateColumns !== void 0) s.gridTemplateColumns = props.gridTemplateColumns;
|
|
352
|
+
if (props.minWidth !== void 0) s.minWidth = props.minWidth;
|
|
353
|
+
if (props.boxSize !== void 0) {
|
|
354
|
+
const v = typeof props.boxSize === "number" ? `${props.boxSize * S}px` : props.boxSize;
|
|
355
|
+
s.width = v;
|
|
356
|
+
s.height = v;
|
|
264
357
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
const v = resolveDimension(value);
|
|
270
|
-
if (v) style.width = v;
|
|
271
|
-
break;
|
|
272
|
-
}
|
|
273
|
-
case "h": {
|
|
274
|
-
const v = resolveDimension(value);
|
|
275
|
-
if (v) style.height = v;
|
|
276
|
-
break;
|
|
277
|
-
}
|
|
278
|
-
case "minW": {
|
|
279
|
-
const v = resolveDimension(value);
|
|
280
|
-
if (v) style.minWidth = v;
|
|
281
|
-
break;
|
|
282
|
-
}
|
|
283
|
-
case "maxW": {
|
|
284
|
-
const v = resolveDimension(value);
|
|
285
|
-
if (v) style.maxWidth = v;
|
|
286
|
-
break;
|
|
287
|
-
}
|
|
288
|
-
case "height":
|
|
289
|
-
style.height = value;
|
|
290
|
-
break;
|
|
291
|
-
case "display":
|
|
292
|
-
style.display = value;
|
|
293
|
-
break;
|
|
294
|
-
case "flexGrow":
|
|
295
|
-
style.flexGrow = value;
|
|
296
|
-
break;
|
|
297
|
-
case "flexShrink":
|
|
298
|
-
style.flexShrink = value;
|
|
299
|
-
break;
|
|
300
|
-
case "flexBasis":
|
|
301
|
-
style.flexBasis = value;
|
|
302
|
-
break;
|
|
303
|
-
case "fontWeight":
|
|
304
|
-
style.fontWeight = value;
|
|
305
|
-
break;
|
|
306
|
-
case "borderRadius":
|
|
307
|
-
style.borderRadius = value;
|
|
308
|
-
break;
|
|
309
|
-
case "alignSelf":
|
|
310
|
-
style.alignSelf = value;
|
|
311
|
-
break;
|
|
312
|
-
case "alignItems":
|
|
313
|
-
style.alignItems = value;
|
|
314
|
-
break;
|
|
315
|
-
case "justifyContent":
|
|
316
|
-
style.justifyContent = value;
|
|
317
|
-
break;
|
|
318
|
-
case "color":
|
|
319
|
-
style.color = value;
|
|
320
|
-
break;
|
|
321
|
-
case "mt":
|
|
322
|
-
style.marginTop = toStylePx(value);
|
|
323
|
-
break;
|
|
324
|
-
case "mb":
|
|
325
|
-
style.marginBottom = toStylePx(value);
|
|
326
|
-
break;
|
|
327
|
-
case "ml":
|
|
328
|
-
style.marginLeft = toStylePx(value);
|
|
329
|
-
break;
|
|
330
|
-
case "mr":
|
|
331
|
-
style.marginRight = toStylePx(value);
|
|
332
|
-
break;
|
|
333
|
-
case "overflow":
|
|
334
|
-
style.overflow = value;
|
|
335
|
-
break;
|
|
336
|
-
case "whiteSpace":
|
|
337
|
-
style.whiteSpace = value;
|
|
338
|
-
break;
|
|
339
|
-
case "textOverflow":
|
|
340
|
-
style.textOverflow = value;
|
|
341
|
-
break;
|
|
342
|
-
case "textTransform":
|
|
343
|
-
style.textTransform = value;
|
|
344
|
-
break;
|
|
345
|
-
case "gap":
|
|
346
|
-
style.gap = typeof value === "number" ? `${value * SPACING_SCALE}px` : value;
|
|
347
|
-
break;
|
|
348
|
-
case "gridTemplateColumns":
|
|
349
|
-
style.gridTemplateColumns = value;
|
|
350
|
-
break;
|
|
351
|
-
case "minWidth":
|
|
352
|
-
style.minWidth = value;
|
|
353
|
-
break;
|
|
354
|
-
case "boxSize": {
|
|
355
|
-
const s = typeof value === "number" ? `${value * SPACING_SCALE}px` : value;
|
|
356
|
-
style.width = s;
|
|
357
|
-
style.height = s;
|
|
358
|
-
break;
|
|
359
|
-
}
|
|
360
|
-
case "py": {
|
|
361
|
-
const v = toStylePx(value);
|
|
362
|
-
style.paddingTop = v;
|
|
363
|
-
style.paddingBottom = v;
|
|
364
|
-
break;
|
|
365
|
-
}
|
|
366
|
-
case "px": {
|
|
367
|
-
const v = toStylePx(value);
|
|
368
|
-
style.paddingLeft = v;
|
|
369
|
-
style.paddingRight = v;
|
|
370
|
-
break;
|
|
371
|
-
}
|
|
372
|
-
case "p": {
|
|
373
|
-
const v = toStylePx(value);
|
|
374
|
-
style.padding = v;
|
|
375
|
-
break;
|
|
376
|
-
}
|
|
377
|
-
case "hideBelow":
|
|
378
|
-
break;
|
|
379
|
-
// handled via className
|
|
380
|
-
case "textStyle":
|
|
381
|
-
break;
|
|
382
|
-
// drop textStyle, not directly applicable
|
|
383
|
-
case "fontSize":
|
|
384
|
-
style.fontSize = value;
|
|
385
|
-
break;
|
|
386
|
-
case "flexWrap":
|
|
387
|
-
style.flexWrap = value;
|
|
388
|
-
break;
|
|
389
|
-
case "wordBreak":
|
|
390
|
-
style.wordBreak = value;
|
|
391
|
-
break;
|
|
392
|
-
case "lineHeight":
|
|
393
|
-
style.lineHeight = value;
|
|
394
|
-
break;
|
|
395
|
-
case "marginRight":
|
|
396
|
-
style.marginRight = value;
|
|
397
|
-
break;
|
|
398
|
-
case "position":
|
|
399
|
-
style.position = value;
|
|
400
|
-
break;
|
|
401
|
-
case "background":
|
|
402
|
-
style.background = value;
|
|
403
|
-
break;
|
|
404
|
-
default:
|
|
405
|
-
rest[key] = value;
|
|
406
|
-
break;
|
|
407
|
-
}
|
|
358
|
+
if (props.py !== void 0) {
|
|
359
|
+
const v = sp(props.py);
|
|
360
|
+
s.paddingTop = v;
|
|
361
|
+
s.paddingBottom = v;
|
|
408
362
|
}
|
|
409
|
-
|
|
363
|
+
if (props.px !== void 0) {
|
|
364
|
+
const v = sp(props.px);
|
|
365
|
+
s.paddingLeft = v;
|
|
366
|
+
s.paddingRight = v;
|
|
367
|
+
}
|
|
368
|
+
if (props.p !== void 0) s.padding = sp(props.p);
|
|
369
|
+
if (props.fontSize !== void 0) s.fontSize = props.fontSize;
|
|
370
|
+
if (props.flexWrap !== void 0) s.flexWrap = props.flexWrap;
|
|
371
|
+
if (props.wordBreak !== void 0) s.wordBreak = props.wordBreak;
|
|
372
|
+
if (props.lineHeight !== void 0) s.lineHeight = props.lineHeight;
|
|
373
|
+
if (props.marginRight !== void 0) s.marginRight = props.marginRight;
|
|
374
|
+
if (props.position !== void 0) s.position = props.position;
|
|
375
|
+
if (props.background !== void 0) s.background = props.background;
|
|
376
|
+
return s;
|
|
410
377
|
}
|
|
378
|
+
function stripShims(props) {
|
|
379
|
+
const out = { ...props };
|
|
380
|
+
for (const k of SHIM_PROPS) delete out[k];
|
|
381
|
+
return out;
|
|
382
|
+
}
|
|
383
|
+
var SKELETON_CLASSES = [
|
|
384
|
+
"animate-skeleton-shimmer rounded-sm",
|
|
385
|
+
"bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
|
|
386
|
+
"bg-[length:200%_100%]"
|
|
387
|
+
].join(" ");
|
|
388
|
+
var HIDE_BELOW_MAP = { lg: "lg:hidden", md: "md:hidden", sm: "sm:hidden" };
|
|
411
389
|
var Skeleton = React29.forwardRef(
|
|
412
390
|
function Skeleton2(props, ref) {
|
|
413
|
-
const {
|
|
414
|
-
|
|
415
|
-
asChild,
|
|
416
|
-
className,
|
|
417
|
-
children,
|
|
418
|
-
style: styleProp,
|
|
419
|
-
// Destructure style-prop shims so they don't leak into DOM
|
|
420
|
-
w: _w,
|
|
421
|
-
h: _h,
|
|
422
|
-
minW: _minW,
|
|
423
|
-
maxW: _maxW,
|
|
424
|
-
display: _display,
|
|
425
|
-
flexGrow: _flexGrow,
|
|
426
|
-
flexShrink: _flexShrink,
|
|
427
|
-
flexBasis: _flexBasis,
|
|
428
|
-
fontWeight: _fontWeight,
|
|
429
|
-
textStyle: _textStyle,
|
|
430
|
-
borderRadius: _borderRadius,
|
|
431
|
-
alignSelf: _alignSelf,
|
|
432
|
-
alignItems: _alignItems,
|
|
433
|
-
justifyContent: _justifyContent,
|
|
434
|
-
color: _color,
|
|
435
|
-
mt: _mt,
|
|
436
|
-
mb: _mb,
|
|
437
|
-
ml: _ml,
|
|
438
|
-
mr: _mr,
|
|
439
|
-
height: _height,
|
|
440
|
-
overflow: _overflow,
|
|
441
|
-
whiteSpace: _whiteSpace,
|
|
442
|
-
textOverflow: _textOverflow,
|
|
443
|
-
textTransform: _textTransform,
|
|
444
|
-
gap: _gap,
|
|
445
|
-
gridTemplateColumns: _gridTemplateColumns,
|
|
446
|
-
minWidth: _minWidth,
|
|
447
|
-
boxSize: _boxSize,
|
|
448
|
-
py: _py,
|
|
449
|
-
px: _px,
|
|
450
|
-
p: _p,
|
|
451
|
-
hideBelow: _hideBelow,
|
|
452
|
-
fontSize: _fontSize,
|
|
453
|
-
flexWrap: _flexWrap,
|
|
454
|
-
wordBreak: _wordBreak,
|
|
455
|
-
lineHeight: _lineHeight,
|
|
456
|
-
marginRight: _marginRight,
|
|
457
|
-
position: _position,
|
|
458
|
-
background: _background,
|
|
459
|
-
as: Component = "div",
|
|
460
|
-
...htmlRest
|
|
461
|
-
} = props;
|
|
462
|
-
const { style: shimStyle } = extractSkeletonStyleProps({
|
|
463
|
-
w: _w,
|
|
464
|
-
h: _h,
|
|
465
|
-
minW: _minW,
|
|
466
|
-
maxW: _maxW,
|
|
467
|
-
display: _display,
|
|
468
|
-
flexGrow: _flexGrow,
|
|
469
|
-
flexShrink: _flexShrink,
|
|
470
|
-
flexBasis: _flexBasis,
|
|
471
|
-
fontWeight: _fontWeight,
|
|
472
|
-
textStyle: _textStyle,
|
|
473
|
-
borderRadius: _borderRadius,
|
|
474
|
-
alignSelf: _alignSelf,
|
|
475
|
-
alignItems: _alignItems,
|
|
476
|
-
justifyContent: _justifyContent,
|
|
477
|
-
color: _color,
|
|
478
|
-
mt: _mt,
|
|
479
|
-
mb: _mb,
|
|
480
|
-
ml: _ml,
|
|
481
|
-
mr: _mr,
|
|
482
|
-
height: _height,
|
|
483
|
-
overflow: _overflow,
|
|
484
|
-
whiteSpace: _whiteSpace,
|
|
485
|
-
textOverflow: _textOverflow,
|
|
486
|
-
textTransform: _textTransform,
|
|
487
|
-
gap: _gap,
|
|
488
|
-
gridTemplateColumns: _gridTemplateColumns,
|
|
489
|
-
minWidth: _minWidth,
|
|
490
|
-
boxSize: _boxSize,
|
|
491
|
-
py: _py,
|
|
492
|
-
px: _px,
|
|
493
|
-
p: _p,
|
|
494
|
-
hideBelow: _hideBelow,
|
|
495
|
-
fontSize: _fontSize,
|
|
496
|
-
flexWrap: _flexWrap,
|
|
497
|
-
wordBreak: _wordBreak,
|
|
498
|
-
lineHeight: _lineHeight,
|
|
499
|
-
marginRight: _marginRight,
|
|
500
|
-
position: _position,
|
|
501
|
-
background: _background
|
|
502
|
-
});
|
|
391
|
+
const { loading = false, asChild, className, children, style: styleProp, as: Component = "div", ...allRest } = props;
|
|
392
|
+
const shimStyle = shimToStyle(props);
|
|
503
393
|
const mergedStyle = Object.keys(shimStyle).length > 0 || styleProp ? { ...shimStyle, ...styleProp } : void 0;
|
|
504
|
-
const
|
|
505
|
-
const
|
|
506
|
-
const
|
|
394
|
+
const hideBelowClass = props.hideBelow ? HIDE_BELOW_MAP[props.hideBelow] : void 0;
|
|
395
|
+
const cls = hideBelowClass ? cn(className, hideBelowClass) : className;
|
|
396
|
+
const htmlRest = stripShims(allRest);
|
|
507
397
|
if (!loading) {
|
|
508
|
-
if (asChild && React29.isValidElement(children))
|
|
509
|
-
|
|
510
|
-
}
|
|
511
|
-
return /* @__PURE__ */ jsx(Component, { ref, className: finalClassName, style: mergedStyle, ...htmlRest, children });
|
|
398
|
+
if (asChild && React29.isValidElement(children)) return children;
|
|
399
|
+
return /* @__PURE__ */ jsx(Component, { ref, className: cls, style: mergedStyle, ...htmlRest, children });
|
|
512
400
|
}
|
|
513
401
|
if (asChild && React29.isValidElement(children)) {
|
|
514
402
|
return /* @__PURE__ */ jsx(
|
|
@@ -516,13 +404,7 @@ var Skeleton = React29.forwardRef(
|
|
|
516
404
|
{
|
|
517
405
|
ref,
|
|
518
406
|
"data-loading": true,
|
|
519
|
-
className: cn(
|
|
520
|
-
"animate-skeleton-shimmer rounded-sm",
|
|
521
|
-
"bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
|
|
522
|
-
"bg-[length:200%_100%]",
|
|
523
|
-
"text-transparent [&_*]:invisible",
|
|
524
|
-
finalClassName
|
|
525
|
-
),
|
|
407
|
+
className: cn(SKELETON_CLASSES, "text-transparent [&_*]:invisible", cls),
|
|
526
408
|
style: mergedStyle,
|
|
527
409
|
...htmlRest,
|
|
528
410
|
children
|
|
@@ -534,13 +416,7 @@ var Skeleton = React29.forwardRef(
|
|
|
534
416
|
{
|
|
535
417
|
ref,
|
|
536
418
|
"data-loading": true,
|
|
537
|
-
className: cn(
|
|
538
|
-
"animate-skeleton-shimmer rounded-sm",
|
|
539
|
-
"bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
|
|
540
|
-
"bg-[length:200%_100%]",
|
|
541
|
-
children ? "text-transparent [&_*]:invisible" : "min-h-5",
|
|
542
|
-
finalClassName
|
|
543
|
-
),
|
|
419
|
+
className: cn(SKELETON_CLASSES, children ? "text-transparent [&_*]:invisible" : "min-h-5", cls),
|
|
544
420
|
style: mergedStyle,
|
|
545
421
|
...htmlRest,
|
|
546
422
|
children
|
|
@@ -850,6 +726,10 @@ function useIsMobile() {
|
|
|
850
726
|
}, []);
|
|
851
727
|
return isMobile;
|
|
852
728
|
}
|
|
729
|
+
function mapPlacement(p) {
|
|
730
|
+
if (!p) return void 0;
|
|
731
|
+
return p;
|
|
732
|
+
}
|
|
853
733
|
var Tooltip = React29.forwardRef(
|
|
854
734
|
function Tooltip2(props, ref) {
|
|
855
735
|
const {
|
|
@@ -860,10 +740,8 @@ var Tooltip = React29.forwardRef(
|
|
|
860
740
|
children,
|
|
861
741
|
disabled,
|
|
862
742
|
disableOnMobile,
|
|
863
|
-
portalled = true,
|
|
864
743
|
content,
|
|
865
744
|
contentProps,
|
|
866
|
-
portalRef,
|
|
867
745
|
defaultOpen = false,
|
|
868
746
|
triggerProps,
|
|
869
747
|
closeDelay = 100,
|
|
@@ -911,36 +789,34 @@ var Tooltip = React29.forwardRef(
|
|
|
911
789
|
if (disabled || disableOnMobile && isMobile) return children;
|
|
912
790
|
const defaultShowArrow = variant === "popover" ? false : true;
|
|
913
791
|
const showArrow = showArrowProp !== void 0 ? showArrowProp : defaultShowArrow;
|
|
914
|
-
const placement = positioning?.placement ?? "top";
|
|
915
|
-
const side = placement.split("-")[0];
|
|
916
|
-
const align = placement.includes("-") ? placement.split("-")[1] : void 0;
|
|
917
|
-
const sideOffset = positioning?.offset?.mainAxis ?? 4;
|
|
918
792
|
const isPopover = variant === "popover";
|
|
919
|
-
|
|
920
|
-
|
|
793
|
+
const placement = mapPlacement(positioning?.placement) ?? "top";
|
|
794
|
+
const offset = positioning?.offset?.mainAxis ?? 4;
|
|
795
|
+
return /* @__PURE__ */ jsx(TooltipGroup, { delay: openDelay, children: /* @__PURE__ */ jsxs(
|
|
796
|
+
Tooltip$1,
|
|
921
797
|
{
|
|
922
798
|
open,
|
|
923
799
|
onOpenChange: handleOpenChange,
|
|
924
|
-
|
|
800
|
+
delay: { open: openDelay, close: closeDelay },
|
|
801
|
+
placement,
|
|
802
|
+
offset,
|
|
803
|
+
unstyled: true,
|
|
925
804
|
children: [
|
|
926
805
|
/* @__PURE__ */ jsx(
|
|
927
|
-
|
|
806
|
+
Tooltip$1.Trigger,
|
|
928
807
|
{
|
|
929
808
|
ref: open ? triggerRef : void 0,
|
|
930
809
|
asChild: true,
|
|
931
|
-
|
|
810
|
+
...isMobile ? { onPress: handleTriggerClick } : {},
|
|
932
811
|
...triggerProps,
|
|
933
812
|
children
|
|
934
813
|
}
|
|
935
814
|
),
|
|
936
|
-
/* @__PURE__ */
|
|
937
|
-
|
|
815
|
+
/* @__PURE__ */ jsxs(
|
|
816
|
+
Tooltip$1.Content,
|
|
938
817
|
{
|
|
939
818
|
ref,
|
|
940
|
-
|
|
941
|
-
align,
|
|
942
|
-
sideOffset,
|
|
943
|
-
onClick: interactive ? handleContentClick : void 0,
|
|
819
|
+
unstyled: true,
|
|
944
820
|
className: cn(
|
|
945
821
|
"z-[9999] overflow-hidden rounded-lg px-3 py-2 text-sm",
|
|
946
822
|
"animate-in fade-in-0 zoom-in-95",
|
|
@@ -949,12 +825,14 @@ var Tooltip = React29.forwardRef(
|
|
|
949
825
|
!isPopover && "bg-[var(--color-tooltip-bg)] text-[var(--color-tooltip-fg)] max-w-xs",
|
|
950
826
|
contentProps?.className
|
|
951
827
|
),
|
|
828
|
+
onClick: interactive ? handleContentClick : void 0,
|
|
952
829
|
...selected ? { "data-selected": true } : {},
|
|
953
830
|
...contentProps,
|
|
954
831
|
children: [
|
|
955
832
|
showArrow && /* @__PURE__ */ jsx(
|
|
956
|
-
|
|
833
|
+
Tooltip$1.Arrow,
|
|
957
834
|
{
|
|
835
|
+
unstyled: true,
|
|
958
836
|
className: cn(
|
|
959
837
|
isPopover ? "fill-[var(--color-popover-bg)]" : "fill-[var(--color-tooltip-bg)]"
|
|
960
838
|
)
|
|
@@ -963,7 +841,7 @@ var Tooltip = React29.forwardRef(
|
|
|
963
841
|
content
|
|
964
842
|
]
|
|
965
843
|
}
|
|
966
|
-
)
|
|
844
|
+
)
|
|
967
845
|
]
|
|
968
846
|
}
|
|
969
847
|
) });
|
|
@@ -972,26 +850,12 @@ var Tooltip = React29.forwardRef(
|
|
|
972
850
|
function TruncatedTextTooltip({ label, children }) {
|
|
973
851
|
return /* @__PURE__ */ jsx(Tooltip, { content: label, positioning: { placement: "top" }, children });
|
|
974
852
|
}
|
|
975
|
-
var
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
solid: ""
|
|
982
|
-
},
|
|
983
|
-
size: {
|
|
984
|
-
sm: "text-xs p-1 h-[18px] min-h-[18px]",
|
|
985
|
-
md: "text-sm px-1 py-0.5 min-h-6",
|
|
986
|
-
lg: "text-sm px-2 py-1 min-h-7 font-semibold"
|
|
987
|
-
}
|
|
988
|
-
},
|
|
989
|
-
defaultVariants: {
|
|
990
|
-
variant: "subtle",
|
|
991
|
-
size: "md"
|
|
992
|
-
}
|
|
993
|
-
}
|
|
994
|
-
);
|
|
853
|
+
var BASE_CLASSES = "inline-flex items-center rounded-sm gap-1 font-medium w-fit max-w-full whitespace-nowrap select-text";
|
|
854
|
+
var SIZE_CLASSES2 = {
|
|
855
|
+
sm: "text-xs p-1 h-[18px] min-h-[18px]",
|
|
856
|
+
md: "text-sm px-1 py-0.5 min-h-6",
|
|
857
|
+
lg: "text-sm px-2 py-1 min-h-7 font-semibold"
|
|
858
|
+
};
|
|
995
859
|
var COLOR_PALETTE_CLASSES = {
|
|
996
860
|
gray: "bg-badge-gray-bg text-badge-gray-fg",
|
|
997
861
|
green: "bg-badge-green-bg text-badge-green-fg",
|
|
@@ -1016,6 +880,7 @@ var COLOR_PALETTE_CLASSES = {
|
|
|
1016
880
|
bright_purple: "bg-badge-bright-purple-bg text-badge-bright-purple-fg",
|
|
1017
881
|
bright_pink: "bg-badge-bright-pink-bg text-badge-bright-pink-fg"
|
|
1018
882
|
};
|
|
883
|
+
var S2 = 4;
|
|
1019
884
|
var Badge = React29__default.forwardRef(
|
|
1020
885
|
function Badge2(props, ref) {
|
|
1021
886
|
const {
|
|
@@ -1024,8 +889,8 @@ var Badge = React29__default.forwardRef(
|
|
|
1024
889
|
children,
|
|
1025
890
|
truncated = false,
|
|
1026
891
|
endElement,
|
|
1027
|
-
variant,
|
|
1028
|
-
size,
|
|
892
|
+
variant: _variant,
|
|
893
|
+
size = "md",
|
|
1029
894
|
colorPalette = "gray",
|
|
1030
895
|
className,
|
|
1031
896
|
flexShrink: _flexShrink,
|
|
@@ -1037,16 +902,16 @@ var Badge = React29__default.forwardRef(
|
|
|
1037
902
|
} = props;
|
|
1038
903
|
const shimStyle = { ...styleProp };
|
|
1039
904
|
if (_flexShrink !== void 0) shimStyle.flexShrink = _flexShrink;
|
|
1040
|
-
if (_gap !== void 0) shimStyle.gap = typeof _gap === "number" ? `${_gap *
|
|
905
|
+
if (_gap !== void 0) shimStyle.gap = typeof _gap === "number" ? `${_gap * S2}px` : _gap;
|
|
1041
906
|
if (_ml !== void 0) {
|
|
1042
907
|
if (typeof _ml === "object") {
|
|
1043
908
|
const obj = _ml;
|
|
1044
|
-
shimStyle.marginLeft = `${(obj.base ?? obj.lg ?? 0) *
|
|
909
|
+
shimStyle.marginLeft = `${(obj.base ?? obj.lg ?? 0) * S2}px`;
|
|
1045
910
|
} else {
|
|
1046
|
-
shimStyle.marginLeft = typeof _ml === "number" ? `${_ml *
|
|
911
|
+
shimStyle.marginLeft = typeof _ml === "number" ? `${_ml * S2}px` : _ml;
|
|
1047
912
|
}
|
|
1048
913
|
}
|
|
1049
|
-
if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr *
|
|
914
|
+
if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * S2}px` : _mr;
|
|
1050
915
|
const badgeStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
|
|
1051
916
|
const child = children ? /* @__PURE__ */ jsx("span", { className: "overflow-hidden text-ellipsis", children }) : null;
|
|
1052
917
|
const childrenElement = truncated ? /* @__PURE__ */ jsx(TruncatedTextTooltip, { label: children, children: child }) : child;
|
|
@@ -1055,7 +920,8 @@ var Badge = React29__default.forwardRef(
|
|
|
1055
920
|
{
|
|
1056
921
|
ref,
|
|
1057
922
|
className: cn(
|
|
1058
|
-
|
|
923
|
+
BASE_CLASSES,
|
|
924
|
+
SIZE_CLASSES2[size],
|
|
1059
925
|
COLOR_PALETTE_CLASSES[colorPalette],
|
|
1060
926
|
className
|
|
1061
927
|
),
|
|
@@ -1074,171 +940,202 @@ var Badge = React29__default.forwardRef(
|
|
|
1074
940
|
return badgeElement;
|
|
1075
941
|
}
|
|
1076
942
|
);
|
|
1077
|
-
var
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
variant: {
|
|
1089
|
-
// --- Solid ---
|
|
1090
|
-
solid: [
|
|
1091
|
-
"bg-[var(--color-button-solid-bg)] text-[var(--color-button-solid-text)]",
|
|
1092
|
-
"hover:bg-[var(--color-hover)]",
|
|
1093
|
-
"data-[expanded]:bg-[var(--color-hover)]"
|
|
1094
|
-
],
|
|
1095
|
-
// --- Solid Danger ---
|
|
1096
|
-
solid_danger: [
|
|
1097
|
-
"bg-red-600 text-[var(--color-button-solid-text)]",
|
|
1098
|
-
"hover:bg-red-500",
|
|
1099
|
-
"data-[expanded]:bg-red-500"
|
|
1100
|
-
],
|
|
1101
|
-
// --- Outline ---
|
|
1102
|
-
outline: [
|
|
1103
|
-
"border-2 border-solid bg-transparent",
|
|
1104
|
-
"text-[var(--color-button-outline-fg)] border-[var(--color-button-outline-fg)]",
|
|
1105
|
-
"hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]"
|
|
1106
|
-
],
|
|
1107
|
-
// --- Outline Danger ---
|
|
1108
|
-
outline_danger: [
|
|
1109
|
-
"border-2 border-solid bg-transparent",
|
|
1110
|
-
"text-red-600 border-red-600",
|
|
1111
|
-
"hover:bg-transparent hover:text-red-500 hover:border-red-500"
|
|
1112
|
-
],
|
|
1113
|
-
// --- Dropdown ---
|
|
1114
|
-
dropdown: [
|
|
1115
|
-
"border-2 border-solid bg-transparent",
|
|
1116
|
-
"text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
|
|
1117
|
-
"hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
|
|
1118
|
-
"data-[expanded]:bg-transparent data-[expanded]:text-[var(--color-hover)] data-[expanded]:border-[var(--color-hover)]",
|
|
1119
|
-
"data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
|
|
1120
|
-
"data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
|
|
1121
|
-
"data-[selected]:hover:text-[var(--color-hover)] data-[selected]:hover:border-transparent",
|
|
1122
|
-
"data-[selected]:data-[expanded]:text-[var(--color-hover)]"
|
|
1123
|
-
],
|
|
1124
|
-
// --- Header ---
|
|
1125
|
-
header: [
|
|
1126
|
-
"bg-transparent border-2 border-solid",
|
|
1127
|
-
"text-[var(--color-button-header-fg)] border-[var(--color-button-header-border)]",
|
|
1128
|
-
"hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
|
|
1129
|
-
// selected
|
|
1130
|
-
"data-[selected]:bg-[var(--color-button-header-bg-selected)]",
|
|
1131
|
-
"data-[selected]:text-[var(--color-button-header-fg-selected)] data-[selected]:border-transparent data-[selected]:border-0",
|
|
1132
|
-
"data-[selected]:hover:bg-[var(--color-button-header-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
|
|
1133
|
-
"data-[selected]:data-[expanded]:text-[var(--color-hover)]",
|
|
1134
|
-
// selected + highlighted
|
|
1135
|
-
"data-[selected]:data-[highlighted]:bg-[var(--color-button-header-bg-highlighted)]",
|
|
1136
|
-
"data-[selected]:data-[highlighted]:text-[var(--color-button-header-fg-highlighted)]",
|
|
1137
|
-
"data-[selected]:data-[highlighted]:border-transparent data-[selected]:data-[highlighted]:border-0",
|
|
1138
|
-
"data-[selected]:data-[highlighted]:hover:bg-[var(--color-button-header-bg-highlighted)]",
|
|
1139
|
-
"data-[selected]:data-[highlighted]:hover:text-[var(--color-hover)]",
|
|
1140
|
-
"data-[selected]:data-[highlighted]:data-[expanded]:text-[var(--color-hover)]"
|
|
1141
|
-
],
|
|
1142
|
-
// --- Hero ---
|
|
1143
|
-
hero: [
|
|
1144
|
-
"bg-[var(--color-button-hero-bg)] text-[var(--color-button-hero-fg)]",
|
|
1145
|
-
"hover:bg-[var(--color-button-hero-bg-hover)] hover:text-[var(--color-button-hero-fg-hover)]",
|
|
1146
|
-
"data-[selected]:bg-[var(--color-button-hero-bg-selected)] data-[selected]:text-[var(--color-button-hero-fg-selected)]",
|
|
1147
|
-
"data-[selected]:hover:bg-[var(--color-button-hero-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
|
|
1148
|
-
"data-[selected]:data-[expanded]:text-[var(--color-hover)]"
|
|
1149
|
-
],
|
|
1150
|
-
// --- Segmented ---
|
|
1151
|
-
segmented: [
|
|
1152
|
-
"bg-transparent border-2 border-solid rounded-none",
|
|
1153
|
-
"text-[var(--color-button-segmented-fg)] border-[var(--color-selected-control-bg)]",
|
|
1154
|
-
"hover:text-[var(--color-hover)]",
|
|
1155
|
-
// selected
|
|
1156
|
-
"data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
|
|
1157
|
-
"data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-selected-control-text)]",
|
|
1158
|
-
// border collapse: hide right border except when selected; first/last get rounded
|
|
1159
|
-
"[&:not(:last-child)]:border-r-0 data-[selected]:[&:not(:last-child)]:border-r-2",
|
|
1160
|
-
"data-[selected]+*:border-l-0",
|
|
1161
|
-
"first:rounded-l-md last:rounded-r-md"
|
|
1162
|
-
],
|
|
1163
|
-
// --- Plain ---
|
|
1164
|
-
plain: [
|
|
1165
|
-
"bg-transparent text-inherit border-none",
|
|
1166
|
-
"hover:bg-transparent"
|
|
1167
|
-
],
|
|
1168
|
-
// --- Subtle ---
|
|
1169
|
-
subtle: [
|
|
1170
|
-
"bg-[var(--color-button-subtle-bg)] text-[var(--color-button-subtle-fg)]",
|
|
1171
|
-
"hover:bg-[var(--color-button-subtle-bg)] hover:text-[var(--color-hover)]",
|
|
1172
|
-
"disabled:bg-[var(--color-button-subtle-bg)] disabled:text-[var(--color-button-subtle-fg)]"
|
|
1173
|
-
],
|
|
1174
|
-
// --- Link ---
|
|
1175
|
-
link: [
|
|
1176
|
-
"bg-transparent text-[var(--color-link-primary)] border-none font-normal",
|
|
1177
|
-
"px-0 h-auto",
|
|
1178
|
-
"hover:bg-transparent hover:text-[var(--color-link-primary-hover)]",
|
|
1179
|
-
"disabled:text-[var(--color-text-secondary)]"
|
|
1180
|
-
],
|
|
1181
|
-
// --- Icon Secondary ---
|
|
1182
|
-
icon_secondary: [
|
|
1183
|
-
"bg-transparent text-[var(--color-icon-secondary)] border-none",
|
|
1184
|
-
"hover:text-[var(--color-hover)]",
|
|
1185
|
-
"data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
|
|
1186
|
-
"data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
|
|
1187
|
-
"data-[selected]:data-[expanded]:text-[var(--color-hover)]",
|
|
1188
|
-
"data-[expanded]:text-[var(--color-hover)]"
|
|
1189
|
-
],
|
|
1190
|
-
// --- Icon Background ---
|
|
1191
|
-
icon_background: [
|
|
1192
|
-
"bg-[var(--color-button-icon-background-bg)] text-[var(--color-icon-secondary)] border-none",
|
|
1193
|
-
"hover:text-[var(--color-hover)]",
|
|
1194
|
-
"data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
|
|
1195
|
-
"data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
|
|
1196
|
-
"data-[selected]:data-[expanded]:text-[var(--color-hover)]",
|
|
1197
|
-
"data-[expanded]:text-[var(--color-hover)]"
|
|
1198
|
-
],
|
|
1199
|
-
// --- Pagination ---
|
|
1200
|
-
pagination: [
|
|
1201
|
-
"border-2 border-solid bg-transparent",
|
|
1202
|
-
"text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
|
|
1203
|
-
"hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
|
|
1204
|
-
"data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
|
|
1205
|
-
"data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
|
|
1206
|
-
"data-[selected]:hover:text-[var(--color-selected-control-text)] data-[selected]:hover:border-transparent"
|
|
1207
|
-
]
|
|
1208
|
-
},
|
|
1209
|
-
size: {
|
|
1210
|
-
"2xs": "px-2 h-5 min-w-5 text-xs rounded-sm gap-1",
|
|
1211
|
-
xs: "px-2 h-6 min-w-6 text-sm rounded-sm gap-1",
|
|
1212
|
-
sm: "px-3 h-8 min-w-8 text-sm rounded-md gap-1",
|
|
1213
|
-
md: "px-3 h-10 min-w-10 text-base rounded-md gap-2"
|
|
1214
|
-
}
|
|
1215
|
-
},
|
|
1216
|
-
defaultVariants: {
|
|
1217
|
-
variant: "solid",
|
|
1218
|
-
size: "md"
|
|
1219
|
-
}
|
|
1220
|
-
}
|
|
1221
|
-
);
|
|
943
|
+
var SpinnerFrame = styled(View, {
|
|
944
|
+
name: "ButtonSpinner",
|
|
945
|
+
render: /* @__PURE__ */ jsx("span", {}),
|
|
946
|
+
width: 16,
|
|
947
|
+
height: 16,
|
|
948
|
+
borderRadius: 1e3,
|
|
949
|
+
borderWidth: 2,
|
|
950
|
+
borderColor: "currentColor",
|
|
951
|
+
borderBottomColor: "transparent",
|
|
952
|
+
borderLeftColor: "transparent"
|
|
953
|
+
});
|
|
1222
954
|
function Spinner({ className }) {
|
|
1223
955
|
return /* @__PURE__ */ jsx(
|
|
1224
|
-
|
|
956
|
+
SpinnerFrame,
|
|
1225
957
|
{
|
|
1226
|
-
className: cn(
|
|
1227
|
-
"inline-block h-4 w-4 animate-spin rounded-full",
|
|
1228
|
-
"border-2 border-current border-b-transparent border-l-transparent",
|
|
1229
|
-
className
|
|
1230
|
-
),
|
|
1231
958
|
role: "status",
|
|
1232
|
-
"aria-label": "Loading"
|
|
959
|
+
"aria-label": "Loading",
|
|
960
|
+
className: [
|
|
961
|
+
"animate-spin",
|
|
962
|
+
className
|
|
963
|
+
].filter(Boolean).join(" ")
|
|
1233
964
|
}
|
|
1234
965
|
);
|
|
1235
966
|
}
|
|
967
|
+
var ButtonFrame = styled(View, {
|
|
968
|
+
name: "LuxButton",
|
|
969
|
+
render: /* @__PURE__ */ jsx("button", { type: "button" }),
|
|
970
|
+
role: "button",
|
|
971
|
+
tabIndex: 0,
|
|
972
|
+
cursor: "pointer",
|
|
973
|
+
userSelect: "none",
|
|
974
|
+
display: "inline-flex",
|
|
975
|
+
alignItems: "center",
|
|
976
|
+
justifyContent: "center",
|
|
977
|
+
gap: 0,
|
|
978
|
+
overflow: "hidden",
|
|
979
|
+
borderRadius: 6,
|
|
980
|
+
// Whitespace nowrap via className since hanzogui doesn't have a direct token
|
|
981
|
+
// Transition via className
|
|
982
|
+
variants: {
|
|
983
|
+
size: {
|
|
984
|
+
"2xs": { paddingHorizontal: 8, height: 20, minWidth: 20, fontSize: 12, borderRadius: 4, gap: 4 },
|
|
985
|
+
xs: { paddingHorizontal: 8, height: 24, minWidth: 24, fontSize: 14, borderRadius: 4, gap: 4 },
|
|
986
|
+
sm: { paddingHorizontal: 12, height: 32, minWidth: 32, fontSize: 14, borderRadius: 6, gap: 4 },
|
|
987
|
+
md: { paddingHorizontal: 12, height: 40, minWidth: 40, fontSize: 16, borderRadius: 6, gap: 8 }
|
|
988
|
+
},
|
|
989
|
+
disabled: {
|
|
990
|
+
true: {
|
|
991
|
+
opacity: 0.2,
|
|
992
|
+
cursor: "not-allowed",
|
|
993
|
+
pointerEvents: "none"
|
|
994
|
+
}
|
|
995
|
+
}
|
|
996
|
+
},
|
|
997
|
+
defaultVariants: {
|
|
998
|
+
size: "md"
|
|
999
|
+
}
|
|
1000
|
+
});
|
|
1001
|
+
var VARIANT_CLASSES2 = {
|
|
1002
|
+
solid: [
|
|
1003
|
+
"bg-[var(--color-button-solid-bg)] text-[var(--color-button-solid-text)]",
|
|
1004
|
+
"hover:bg-[var(--color-hover)]",
|
|
1005
|
+
"data-[expanded]:bg-[var(--color-hover)]"
|
|
1006
|
+
].join(" "),
|
|
1007
|
+
solid_danger: [
|
|
1008
|
+
"bg-red-600 text-[var(--color-button-solid-text)]",
|
|
1009
|
+
"hover:bg-red-500",
|
|
1010
|
+
"data-[expanded]:bg-red-500"
|
|
1011
|
+
].join(" "),
|
|
1012
|
+
outline: [
|
|
1013
|
+
"border-2 border-solid bg-transparent",
|
|
1014
|
+
"text-[var(--color-button-outline-fg)] border-[var(--color-button-outline-fg)]",
|
|
1015
|
+
"hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]"
|
|
1016
|
+
].join(" "),
|
|
1017
|
+
outline_danger: [
|
|
1018
|
+
"border-2 border-solid bg-transparent",
|
|
1019
|
+
"text-red-600 border-red-600",
|
|
1020
|
+
"hover:bg-transparent hover:text-red-500 hover:border-red-500"
|
|
1021
|
+
].join(" "),
|
|
1022
|
+
dropdown: [
|
|
1023
|
+
"border-2 border-solid bg-transparent",
|
|
1024
|
+
"text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
|
|
1025
|
+
"hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
|
|
1026
|
+
"data-[expanded]:bg-transparent data-[expanded]:text-[var(--color-hover)] data-[expanded]:border-[var(--color-hover)]",
|
|
1027
|
+
"data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
|
|
1028
|
+
"data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
|
|
1029
|
+
"data-[selected]:hover:text-[var(--color-hover)] data-[selected]:hover:border-transparent",
|
|
1030
|
+
"data-[selected]:data-[expanded]:text-[var(--color-hover)]"
|
|
1031
|
+
].join(" "),
|
|
1032
|
+
header: [
|
|
1033
|
+
"bg-transparent border-2 border-solid",
|
|
1034
|
+
"text-[var(--color-button-header-fg)] border-[var(--color-button-header-border)]",
|
|
1035
|
+
"hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
|
|
1036
|
+
"data-[selected]:bg-[var(--color-button-header-bg-selected)]",
|
|
1037
|
+
"data-[selected]:text-[var(--color-button-header-fg-selected)] data-[selected]:border-transparent data-[selected]:border-0",
|
|
1038
|
+
"data-[selected]:hover:bg-[var(--color-button-header-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
|
|
1039
|
+
"data-[selected]:data-[expanded]:text-[var(--color-hover)]",
|
|
1040
|
+
"data-[selected]:data-[highlighted]:bg-[var(--color-button-header-bg-highlighted)]",
|
|
1041
|
+
"data-[selected]:data-[highlighted]:text-[var(--color-button-header-fg-highlighted)]",
|
|
1042
|
+
"data-[selected]:data-[highlighted]:border-transparent data-[selected]:data-[highlighted]:border-0",
|
|
1043
|
+
"data-[selected]:data-[highlighted]:hover:bg-[var(--color-button-header-bg-highlighted)]",
|
|
1044
|
+
"data-[selected]:data-[highlighted]:hover:text-[var(--color-hover)]",
|
|
1045
|
+
"data-[selected]:data-[highlighted]:data-[expanded]:text-[var(--color-hover)]"
|
|
1046
|
+
].join(" "),
|
|
1047
|
+
hero: [
|
|
1048
|
+
"bg-[var(--color-button-hero-bg)] text-[var(--color-button-hero-fg)]",
|
|
1049
|
+
"hover:bg-[var(--color-button-hero-bg-hover)] hover:text-[var(--color-button-hero-fg-hover)]",
|
|
1050
|
+
"data-[selected]:bg-[var(--color-button-hero-bg-selected)] data-[selected]:text-[var(--color-button-hero-fg-selected)]",
|
|
1051
|
+
"data-[selected]:hover:bg-[var(--color-button-hero-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
|
|
1052
|
+
"data-[selected]:data-[expanded]:text-[var(--color-hover)]"
|
|
1053
|
+
].join(" "),
|
|
1054
|
+
segmented: [
|
|
1055
|
+
"bg-transparent border-2 border-solid rounded-none",
|
|
1056
|
+
"text-[var(--color-button-segmented-fg)] border-[var(--color-selected-control-bg)]",
|
|
1057
|
+
"hover:text-[var(--color-hover)]",
|
|
1058
|
+
"data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
|
|
1059
|
+
"data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-selected-control-text)]",
|
|
1060
|
+
"[&:not(:last-child)]:border-r-0 data-[selected]:[&:not(:last-child)]:border-r-2",
|
|
1061
|
+
"data-[selected]+*:border-l-0",
|
|
1062
|
+
"first:rounded-l-md last:rounded-r-md"
|
|
1063
|
+
].join(" "),
|
|
1064
|
+
plain: "bg-transparent text-inherit border-none hover:bg-transparent",
|
|
1065
|
+
subtle: [
|
|
1066
|
+
"bg-[var(--color-button-subtle-bg)] text-[var(--color-button-subtle-fg)]",
|
|
1067
|
+
"hover:bg-[var(--color-button-subtle-bg)] hover:text-[var(--color-hover)]",
|
|
1068
|
+
"disabled:bg-[var(--color-button-subtle-bg)] disabled:text-[var(--color-button-subtle-fg)]"
|
|
1069
|
+
].join(" "),
|
|
1070
|
+
link: [
|
|
1071
|
+
"bg-transparent text-[var(--color-link-primary)] border-none font-normal",
|
|
1072
|
+
"px-0 h-auto",
|
|
1073
|
+
"hover:bg-transparent hover:text-[var(--color-link-primary-hover)]",
|
|
1074
|
+
"disabled:text-[var(--color-text-secondary)]"
|
|
1075
|
+
].join(" "),
|
|
1076
|
+
icon_secondary: [
|
|
1077
|
+
"bg-transparent text-[var(--color-icon-secondary)] border-none",
|
|
1078
|
+
"hover:text-[var(--color-hover)]",
|
|
1079
|
+
"data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
|
|
1080
|
+
"data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
|
|
1081
|
+
"data-[selected]:data-[expanded]:text-[var(--color-hover)]",
|
|
1082
|
+
"data-[expanded]:text-[var(--color-hover)]"
|
|
1083
|
+
].join(" "),
|
|
1084
|
+
icon_background: [
|
|
1085
|
+
"bg-[var(--color-button-icon-background-bg)] text-[var(--color-icon-secondary)] border-none",
|
|
1086
|
+
"hover:text-[var(--color-hover)]",
|
|
1087
|
+
"data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
|
|
1088
|
+
"data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
|
|
1089
|
+
"data-[selected]:data-[expanded]:text-[var(--color-hover)]",
|
|
1090
|
+
"data-[expanded]:text-[var(--color-hover)]"
|
|
1091
|
+
].join(" "),
|
|
1092
|
+
pagination: [
|
|
1093
|
+
"border-2 border-solid bg-transparent",
|
|
1094
|
+
"text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
|
|
1095
|
+
"hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
|
|
1096
|
+
"data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
|
|
1097
|
+
"data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
|
|
1098
|
+
"data-[selected]:hover:text-[var(--color-selected-control-text)] data-[selected]:hover:border-transparent"
|
|
1099
|
+
].join(" ")
|
|
1100
|
+
};
|
|
1101
|
+
var BASE_CLASSES2 = "font-semibold whitespace-nowrap transition-colors duration-150";
|
|
1102
|
+
var SP = 4;
|
|
1103
|
+
function buildShimStyle(props) {
|
|
1104
|
+
const s = { ...props.style };
|
|
1105
|
+
if (props.mt !== void 0) s.marginTop = typeof props.mt === "number" ? `${props.mt * SP}px` : props.mt;
|
|
1106
|
+
if (props.ml !== void 0) s.marginLeft = typeof props.ml === "number" ? `${props.ml * SP}px` : props.ml;
|
|
1107
|
+
if (props.mr !== void 0) s.marginRight = typeof props.mr === "number" ? `${props.mr * SP}px` : props.mr;
|
|
1108
|
+
if (props.px !== void 0) {
|
|
1109
|
+
const v = typeof props.px === "number" ? `${props.px * SP}px` : props.px;
|
|
1110
|
+
s.paddingLeft = v;
|
|
1111
|
+
s.paddingRight = v;
|
|
1112
|
+
}
|
|
1113
|
+
if (props.py !== void 0) {
|
|
1114
|
+
const v = typeof props.py === "number" ? `${props.py * SP}px` : props.py;
|
|
1115
|
+
s.paddingTop = v;
|
|
1116
|
+
s.paddingBottom = v;
|
|
1117
|
+
}
|
|
1118
|
+
if (props.fontWeight !== void 0) s.fontWeight = props.fontWeight;
|
|
1119
|
+
if (props.gap !== void 0) s.gap = typeof props.gap === "number" ? `${props.gap * SP}px` : props.gap;
|
|
1120
|
+
if (props.flexShrink !== void 0) s.flexShrink = props.flexShrink;
|
|
1121
|
+
if (props.columnGap !== void 0) s.columnGap = typeof props.columnGap === "number" ? `${props.columnGap * SP}px` : props.columnGap;
|
|
1122
|
+
if (props.gridColumn !== void 0) s.gridColumn = typeof props.gridColumn === "number" ? String(props.gridColumn) : props.gridColumn;
|
|
1123
|
+
if (props.gridRow) s.gridRow = props.gridRow;
|
|
1124
|
+
if (props.justifySelf) s.justifySelf = props.justifySelf;
|
|
1125
|
+
if (props.alignSelf) s.alignSelf = props.alignSelf;
|
|
1126
|
+
if (props.h) s.height = props.h;
|
|
1127
|
+
if (props.w) s.width = props.w;
|
|
1128
|
+
if (props.display) s.display = props.display;
|
|
1129
|
+
if (props.borderBottomRightRadius !== void 0) s.borderBottomRightRadius = typeof props.borderBottomRightRadius === "number" ? `${props.borderBottomRightRadius}px` : props.borderBottomRightRadius;
|
|
1130
|
+
if (props.borderTopRightRadius !== void 0) s.borderTopRightRadius = typeof props.borderTopRightRadius === "number" ? `${props.borderTopRightRadius}px` : props.borderTopRightRadius;
|
|
1131
|
+
return Object.keys(s).length > 0 ? s : void 0;
|
|
1132
|
+
}
|
|
1236
1133
|
var Button = React29.forwardRef(
|
|
1237
1134
|
function Button2(props, ref) {
|
|
1238
1135
|
const {
|
|
1239
1136
|
className,
|
|
1240
|
-
variant,
|
|
1241
|
-
size,
|
|
1137
|
+
variant = "solid",
|
|
1138
|
+
size = "md",
|
|
1242
1139
|
asChild = false,
|
|
1243
1140
|
loading = false,
|
|
1244
1141
|
loadingText,
|
|
@@ -1250,57 +1147,48 @@ var Button = React29.forwardRef(
|
|
|
1250
1147
|
children,
|
|
1251
1148
|
style: styleProp,
|
|
1252
1149
|
// Strip Chakra style props
|
|
1253
|
-
mt
|
|
1254
|
-
ml
|
|
1255
|
-
mr
|
|
1256
|
-
px
|
|
1257
|
-
py
|
|
1258
|
-
fontWeight
|
|
1259
|
-
gap
|
|
1260
|
-
flexShrink
|
|
1261
|
-
columnGap
|
|
1262
|
-
gridColumn
|
|
1263
|
-
gridRow
|
|
1264
|
-
justifySelf
|
|
1265
|
-
alignSelf
|
|
1150
|
+
mt,
|
|
1151
|
+
ml,
|
|
1152
|
+
mr,
|
|
1153
|
+
px,
|
|
1154
|
+
py,
|
|
1155
|
+
fontWeight,
|
|
1156
|
+
gap,
|
|
1157
|
+
flexShrink,
|
|
1158
|
+
columnGap,
|
|
1159
|
+
gridColumn,
|
|
1160
|
+
gridRow,
|
|
1161
|
+
justifySelf,
|
|
1162
|
+
alignSelf,
|
|
1266
1163
|
textStyle: _textStyle,
|
|
1267
|
-
h
|
|
1268
|
-
w
|
|
1269
|
-
display
|
|
1270
|
-
borderBottomRightRadius
|
|
1271
|
-
borderTopRightRadius
|
|
1164
|
+
h,
|
|
1165
|
+
w,
|
|
1166
|
+
display,
|
|
1167
|
+
borderBottomRightRadius,
|
|
1168
|
+
borderTopRightRadius,
|
|
1272
1169
|
...rest
|
|
1273
1170
|
} = props;
|
|
1274
|
-
const
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
if (_justifySelf) shimStyle.justifySelf = _justifySelf;
|
|
1296
|
-
if (_alignSelf) shimStyle.alignSelf = _alignSelf;
|
|
1297
|
-
if (_h) shimStyle.height = _h;
|
|
1298
|
-
if (_w) shimStyle.width = _w;
|
|
1299
|
-
if (_display) shimStyle.display = _display;
|
|
1300
|
-
if (_bbrr !== void 0) shimStyle.borderBottomRightRadius = typeof _bbrr === "number" ? `${_bbrr}px` : _bbrr;
|
|
1301
|
-
if (_btrr !== void 0) shimStyle.borderTopRightRadius = typeof _btrr === "number" ? `${_btrr}px` : _btrr;
|
|
1302
|
-
const mergedStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
|
|
1303
|
-
const Comp = asChild ? Slot : "button";
|
|
1171
|
+
const mergedStyle = buildShimStyle({
|
|
1172
|
+
style: styleProp,
|
|
1173
|
+
mt,
|
|
1174
|
+
ml,
|
|
1175
|
+
mr,
|
|
1176
|
+
px,
|
|
1177
|
+
py,
|
|
1178
|
+
fontWeight,
|
|
1179
|
+
gap,
|
|
1180
|
+
flexShrink,
|
|
1181
|
+
columnGap,
|
|
1182
|
+
gridColumn,
|
|
1183
|
+
gridRow,
|
|
1184
|
+
justifySelf,
|
|
1185
|
+
alignSelf,
|
|
1186
|
+
h,
|
|
1187
|
+
w,
|
|
1188
|
+
display,
|
|
1189
|
+
borderBottomRightRadius,
|
|
1190
|
+
borderTopRightRadius
|
|
1191
|
+
});
|
|
1304
1192
|
const dataAttrs = {};
|
|
1305
1193
|
if (expanded) dataAttrs["data-expanded"] = true;
|
|
1306
1194
|
if (selected) dataAttrs["data-selected"] = true;
|
|
@@ -1309,15 +1197,19 @@ var Button = React29.forwardRef(
|
|
|
1309
1197
|
const isDisabled = !loadingSkeleton && (loading || disabled);
|
|
1310
1198
|
const inner = loading ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1311
1199
|
/* @__PURE__ */ jsx(Spinner, {}),
|
|
1312
|
-
loadingText != null && /* @__PURE__ */ jsx("span", {
|
|
1200
|
+
loadingText != null && /* @__PURE__ */ jsx("span", { style: { marginLeft: 8 }, children: loadingText })
|
|
1313
1201
|
] }) : children;
|
|
1202
|
+
const variantClass = VARIANT_CLASSES2[variant] ?? VARIANT_CLASSES2.solid;
|
|
1203
|
+
const combinedClassName = [BASE_CLASSES2, variantClass, className].filter(Boolean).join(" ");
|
|
1314
1204
|
const button = /* @__PURE__ */ jsx(
|
|
1315
|
-
|
|
1205
|
+
ButtonFrame,
|
|
1316
1206
|
{
|
|
1317
1207
|
ref,
|
|
1318
|
-
|
|
1319
|
-
style: mergedStyle,
|
|
1208
|
+
size,
|
|
1320
1209
|
disabled: isDisabled || void 0,
|
|
1210
|
+
asChild: asChild || void 0,
|
|
1211
|
+
className: combinedClassName,
|
|
1212
|
+
style: mergedStyle,
|
|
1321
1213
|
...dataAttrs,
|
|
1322
1214
|
...rest,
|
|
1323
1215
|
children: inner
|
|
@@ -1329,6 +1221,17 @@ var Button = React29.forwardRef(
|
|
|
1329
1221
|
return button;
|
|
1330
1222
|
}
|
|
1331
1223
|
);
|
|
1224
|
+
var SIZE_CLASSES3 = {
|
|
1225
|
+
"2xs": "px-2 h-5 min-w-5 text-xs rounded-sm gap-1",
|
|
1226
|
+
xs: "px-2 h-6 min-w-6 text-sm rounded-sm gap-1",
|
|
1227
|
+
sm: "px-3 h-8 min-w-8 text-sm rounded-md gap-1",
|
|
1228
|
+
md: "px-3 h-10 min-w-10 text-base rounded-md gap-2"
|
|
1229
|
+
};
|
|
1230
|
+
function buttonVariants(opts) {
|
|
1231
|
+
const v = opts?.variant ?? "solid";
|
|
1232
|
+
const s = opts?.size ?? "md";
|
|
1233
|
+
return [BASE_CLASSES2, VARIANT_CLASSES2[v] ?? "", SIZE_CLASSES3[s] ?? ""].filter(Boolean).join(" ");
|
|
1234
|
+
}
|
|
1332
1235
|
var ButtonGroup = React29.forwardRef(
|
|
1333
1236
|
function ButtonGroup2(props, ref) {
|
|
1334
1237
|
const { className, ...rest } = props;
|
|
@@ -1336,7 +1239,7 @@ var ButtonGroup = React29.forwardRef(
|
|
|
1336
1239
|
"div",
|
|
1337
1240
|
{
|
|
1338
1241
|
ref,
|
|
1339
|
-
className:
|
|
1242
|
+
className: ["inline-flex", className].filter(Boolean).join(" "),
|
|
1340
1243
|
role: "group",
|
|
1341
1244
|
...rest
|
|
1342
1245
|
}
|
|
@@ -1377,11 +1280,11 @@ var ButtonGroupRadio = React29.forwardRef(
|
|
|
1377
1280
|
"div",
|
|
1378
1281
|
{
|
|
1379
1282
|
ref,
|
|
1380
|
-
className:
|
|
1283
|
+
className: [
|
|
1381
1284
|
"inline-flex gap-0",
|
|
1382
|
-
equalWidth
|
|
1285
|
+
equalWidth ? "grid" : "",
|
|
1383
1286
|
className
|
|
1384
|
-
),
|
|
1287
|
+
].filter(Boolean).join(" "),
|
|
1385
1288
|
style: equalWidth ? { gridTemplateColumns: `repeat(${childrenLength}, 1fr)` } : void 0,
|
|
1386
1289
|
role: "group",
|
|
1387
1290
|
...rest,
|
|
@@ -1444,7 +1347,7 @@ var CheckboxGroupBase = React29.forwardRef(
|
|
|
1444
1347
|
}
|
|
1445
1348
|
);
|
|
1446
1349
|
var CheckboxGroup2 = CheckboxGroupBase;
|
|
1447
|
-
var
|
|
1350
|
+
var SIZE_CLASSES4 = {
|
|
1448
1351
|
sm: {
|
|
1449
1352
|
root: "gap-1.5",
|
|
1450
1353
|
control: "h-3.5 w-3.5 rounded-sm",
|
|
@@ -1554,7 +1457,7 @@ var CheckboxBase = React29.forwardRef(
|
|
|
1554
1457
|
},
|
|
1555
1458
|
[readOnly, isControlled, isInGroup, group, value, onCheckedChange, onChange]
|
|
1556
1459
|
);
|
|
1557
|
-
const sizeClasses2 =
|
|
1460
|
+
const sizeClasses2 = SIZE_CLASSES4[size];
|
|
1558
1461
|
return /* @__PURE__ */ jsxs(
|
|
1559
1462
|
"label",
|
|
1560
1463
|
{
|
|
@@ -1630,7 +1533,7 @@ function stripUtmParams(url) {
|
|
|
1630
1533
|
return url;
|
|
1631
1534
|
}
|
|
1632
1535
|
}
|
|
1633
|
-
var
|
|
1536
|
+
var VARIANT_CLASSES3 = {
|
|
1634
1537
|
primary: cn(
|
|
1635
1538
|
"text-[var(--color-link-primary)]",
|
|
1636
1539
|
"hover:no-underline hover:text-[var(--color-link-primary-hover)]",
|
|
@@ -1670,7 +1573,7 @@ var VARIANT_CLASSES2 = {
|
|
|
1670
1573
|
"data-[hover]:no-underline"
|
|
1671
1574
|
)
|
|
1672
1575
|
};
|
|
1673
|
-
var
|
|
1576
|
+
var BASE_CLASSES3 = "inline-flex items-center gap-0 cursor-pointer data-[disabled]:cursor-not-allowed";
|
|
1674
1577
|
var LinkExternalIcon = ({ color }) => /* @__PURE__ */ jsx(
|
|
1675
1578
|
ArrowIcon,
|
|
1676
1579
|
{
|
|
@@ -1739,7 +1642,7 @@ var Link = React29__default.forwardRef(
|
|
|
1739
1642
|
if (_minW !== void 0) shimStyle.minWidth = typeof _minW === "number" ? `${_minW * SPACING}px` : _minW;
|
|
1740
1643
|
if (_justifyContent) shimStyle.justifyContent = _justifyContent;
|
|
1741
1644
|
if (_position) shimStyle.position = _position;
|
|
1742
|
-
const linkClasses = cn(
|
|
1645
|
+
const linkClasses = cn(BASE_CLASSES3, VARIANT_CLASSES3[variant], className);
|
|
1743
1646
|
const linkStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
|
|
1744
1647
|
if (external) {
|
|
1745
1648
|
const processedHref = typeof href === "string" ? stripUtmParams(href) : href;
|
|
@@ -1828,8 +1731,8 @@ var LinkOverlay = React29__default.forwardRef(
|
|
|
1828
1731
|
...rest
|
|
1829
1732
|
} = props;
|
|
1830
1733
|
const overlayClasses = cn(
|
|
1831
|
-
|
|
1832
|
-
|
|
1734
|
+
BASE_CLASSES3,
|
|
1735
|
+
VARIANT_CLASSES3[variant],
|
|
1833
1736
|
// Static positioning with a ::before pseudo-element that covers the LinkBox
|
|
1834
1737
|
"static",
|
|
1835
1738
|
'before:absolute before:inset-0 before:z-0 before:content-[""]',
|
|
@@ -2027,9 +1930,9 @@ function BackToButton({ onClick }) {
|
|
|
2027
1930
|
}
|
|
2028
1931
|
);
|
|
2029
1932
|
}
|
|
2030
|
-
var
|
|
2031
|
-
function
|
|
2032
|
-
return React29.useContext(
|
|
1933
|
+
var DialogSizeContext = React29.createContext({ size: "md" });
|
|
1934
|
+
function useDialogSizeContext() {
|
|
1935
|
+
return React29.useContext(DialogSizeContext);
|
|
2033
1936
|
}
|
|
2034
1937
|
var CONTENT_SIZE_MAP = {
|
|
2035
1938
|
sm: "max-w-[400px]",
|
|
@@ -2059,7 +1962,7 @@ var DialogRoot = ({
|
|
|
2059
1962
|
onOpenChange,
|
|
2060
1963
|
size = "md",
|
|
2061
1964
|
modal = true
|
|
2062
|
-
// motionPreset is intentionally unused
|
|
1965
|
+
// motionPreset is intentionally unused -- kept for API compat
|
|
2063
1966
|
}) => {
|
|
2064
1967
|
const handleOpenChange = React29.useCallback(
|
|
2065
1968
|
(nextOpen) => {
|
|
@@ -2068,8 +1971,8 @@ var DialogRoot = ({
|
|
|
2068
1971
|
[onOpenChange]
|
|
2069
1972
|
);
|
|
2070
1973
|
const ctx = React29.useMemo(() => ({ size }), [size]);
|
|
2071
|
-
return /* @__PURE__ */ jsx(
|
|
2072
|
-
|
|
1974
|
+
return /* @__PURE__ */ jsx(DialogSizeContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(
|
|
1975
|
+
Dialog,
|
|
2073
1976
|
{
|
|
2074
1977
|
open,
|
|
2075
1978
|
defaultOpen,
|
|
@@ -2082,8 +1985,8 @@ var DialogRoot = ({
|
|
|
2082
1985
|
var DialogContent = React29.forwardRef(function DialogContent2(props, ref) {
|
|
2083
1986
|
const {
|
|
2084
1987
|
children,
|
|
2085
|
-
portalled = true,
|
|
2086
|
-
portalRef,
|
|
1988
|
+
portalled: _portalled = true,
|
|
1989
|
+
portalRef: _portalRef,
|
|
2087
1990
|
backdrop = true,
|
|
2088
1991
|
className,
|
|
2089
1992
|
paddingTop: _paddingTop,
|
|
@@ -2094,21 +1997,12 @@ var DialogContent = React29.forwardRef(function DialogContent2(props, ref) {
|
|
|
2094
1997
|
...styleProp,
|
|
2095
1998
|
..._paddingTop !== void 0 ? { paddingTop: typeof _paddingTop === "number" ? `${_paddingTop * 4}px` : _paddingTop } : {}
|
|
2096
1999
|
};
|
|
2097
|
-
const { size } =
|
|
2098
|
-
|
|
2099
|
-
if (!portalled) {
|
|
2100
|
-
portalProps = { container: void 0 };
|
|
2101
|
-
} else if (portalRef) {
|
|
2102
|
-
portalProps = { container: portalRef.current };
|
|
2103
|
-
} else {
|
|
2104
|
-
portalProps = {};
|
|
2105
|
-
}
|
|
2106
|
-
const Wrapper = portalled ? RadixDialog.Portal : React29.Fragment;
|
|
2107
|
-
const wrapperProps = portalled ? portalProps : {};
|
|
2108
|
-
return /* @__PURE__ */ jsxs(Wrapper, { ...wrapperProps, children: [
|
|
2000
|
+
const { size } = useDialogSizeContext();
|
|
2001
|
+
return /* @__PURE__ */ jsxs(Dialog.Portal, { children: [
|
|
2109
2002
|
backdrop && /* @__PURE__ */ jsx(
|
|
2110
|
-
|
|
2003
|
+
Dialog.Overlay,
|
|
2111
2004
|
{
|
|
2005
|
+
unstyled: true,
|
|
2112
2006
|
className: "fixed inset-0 z-[1400] bg-black/80"
|
|
2113
2007
|
}
|
|
2114
2008
|
),
|
|
@@ -2121,9 +2015,10 @@ var DialogContent = React29.forwardRef(function DialogContent2(props, ref) {
|
|
|
2121
2015
|
"overflow-hidden"
|
|
2122
2016
|
),
|
|
2123
2017
|
children: /* @__PURE__ */ jsx(
|
|
2124
|
-
|
|
2018
|
+
Dialog.Content,
|
|
2125
2019
|
{
|
|
2126
2020
|
ref,
|
|
2021
|
+
unstyled: true,
|
|
2127
2022
|
className: cn(
|
|
2128
2023
|
// Base content styles
|
|
2129
2024
|
"relative flex flex-col w-full p-6 outline-none text-base",
|
|
@@ -2146,7 +2041,7 @@ var DialogContent = React29.forwardRef(function DialogContent2(props, ref) {
|
|
|
2146
2041
|
});
|
|
2147
2042
|
var DialogCloseTrigger = React29.forwardRef(function DialogCloseTrigger2(props, ref) {
|
|
2148
2043
|
const { className, ...rest } = props;
|
|
2149
|
-
return /* @__PURE__ */ jsx(
|
|
2044
|
+
return /* @__PURE__ */ jsx(Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsx(CloseButton, { ref, className, ...rest, children: props.children }) });
|
|
2150
2045
|
});
|
|
2151
2046
|
var DialogHeader = React29.forwardRef(function DialogHeader2(props, ref) {
|
|
2152
2047
|
const { startElement: startElementProp, onBackToClick, className, children, ...rest } = props;
|
|
@@ -2163,8 +2058,9 @@ var DialogHeader = React29.forwardRef(function DialogHeader2(props, ref) {
|
|
|
2163
2058
|
children: [
|
|
2164
2059
|
startElement,
|
|
2165
2060
|
/* @__PURE__ */ jsx(
|
|
2166
|
-
|
|
2061
|
+
Dialog.Title,
|
|
2167
2062
|
{
|
|
2063
|
+
unstyled: true,
|
|
2168
2064
|
className: cn(
|
|
2169
2065
|
"text-base lg:text-lg font-medium",
|
|
2170
2066
|
"whitespace-nowrap overflow-hidden text-ellipsis"
|
|
@@ -2204,11 +2100,11 @@ var DialogFooter = React29.forwardRef(function DialogFooter2({ className, ...pro
|
|
|
2204
2100
|
}
|
|
2205
2101
|
);
|
|
2206
2102
|
});
|
|
2207
|
-
var DialogBackdrop =
|
|
2208
|
-
var DialogTitle =
|
|
2209
|
-
var DialogDescription =
|
|
2210
|
-
var DialogTrigger =
|
|
2211
|
-
var DialogActionTrigger =
|
|
2103
|
+
var DialogBackdrop = Dialog.Overlay;
|
|
2104
|
+
var DialogTitle = Dialog.Title;
|
|
2105
|
+
var DialogDescription = Dialog.Description;
|
|
2106
|
+
var DialogTrigger = Dialog.Trigger;
|
|
2107
|
+
var DialogActionTrigger = Dialog.Close;
|
|
2212
2108
|
var DrawerPlacementContext = React29.createContext("right");
|
|
2213
2109
|
var DrawerSizeContext = React29.createContext("md");
|
|
2214
2110
|
var DrawerRoot = (props) => {
|
|
@@ -2257,7 +2153,7 @@ var PLACEMENT_CLASSES = {
|
|
|
2257
2153
|
"data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom"
|
|
2258
2154
|
].join(" ")
|
|
2259
2155
|
};
|
|
2260
|
-
var
|
|
2156
|
+
var SIZE_CLASSES5 = {
|
|
2261
2157
|
right: { xs: "w-60", sm: "w-80", md: "w-96", lg: "w-[480px]", xl: "w-[640px]", full: "w-screen" },
|
|
2262
2158
|
left: { xs: "w-60", sm: "w-80", md: "w-96", lg: "w-[480px]", xl: "w-[640px]", full: "w-screen" },
|
|
2263
2159
|
top: { xs: "h-40", sm: "h-60", md: "h-80", lg: "h-96", xl: "h-[480px]", full: "h-screen" },
|
|
@@ -2286,7 +2182,7 @@ var DrawerContent = React29.forwardRef(
|
|
|
2286
2182
|
className: cn(
|
|
2287
2183
|
"fixed z-50 flex flex-col bg-[var(--color-drawer-bg)] shadow-[var(--shadow-drawer)] duration-300",
|
|
2288
2184
|
PLACEMENT_CLASSES[placement] ?? PLACEMENT_CLASSES.right,
|
|
2289
|
-
|
|
2185
|
+
SIZE_CLASSES5[placement]?.[size] ?? SIZE_CLASSES5.right?.md,
|
|
2290
2186
|
className
|
|
2291
2187
|
),
|
|
2292
2188
|
...rest,
|
|
@@ -2538,92 +2434,100 @@ var Field = React29.forwardRef(
|
|
|
2538
2434
|
);
|
|
2539
2435
|
}
|
|
2540
2436
|
);
|
|
2541
|
-
var LEVEL_TAG = {
|
|
2542
|
-
"1": "h1",
|
|
2543
|
-
"2": "h2",
|
|
2544
|
-
"3": "h3"
|
|
2545
|
-
};
|
|
2437
|
+
var LEVEL_TAG = { "1": "h1", "2": "h2", "3": "h3" };
|
|
2546
2438
|
var LEVEL_CLASSES = {
|
|
2547
2439
|
"1": "text-[18px] leading-[24px] font-medium lg:text-[32px] lg:leading-[40px] lg:tracking-[-0.5px]",
|
|
2548
2440
|
"2": "text-[16px] leading-[24px] font-medium lg:text-[24px] lg:leading-[32px]",
|
|
2549
2441
|
"3": "text-[14px] leading-[20px] font-semibold lg:text-[18px] lg:leading-[24px] lg:font-medium"
|
|
2550
2442
|
};
|
|
2551
|
-
var
|
|
2443
|
+
var BASE_CLASSES4 = "font-heading text-heading";
|
|
2552
2444
|
var Heading = React29__default.forwardRef(
|
|
2553
2445
|
function Heading2({ level, className, mb, size: _size, style: styleProp, ...rest }, ref) {
|
|
2554
2446
|
const Tag3 = level ? LEVEL_TAG[level] : "h2";
|
|
2555
2447
|
const levelClasses = level ? LEVEL_CLASSES[level] : void 0;
|
|
2556
|
-
const
|
|
2557
|
-
if (mb !== void 0) shimStyle.marginBottom = typeof mb === "number" ? `${mb * 4}px` : mb;
|
|
2448
|
+
const mergedStyle = mb !== void 0 ? { ...styleProp, marginBottom: typeof mb === "number" ? `${mb * 4}px` : mb } : styleProp;
|
|
2558
2449
|
return /* @__PURE__ */ jsx(
|
|
2559
2450
|
Tag3,
|
|
2560
2451
|
{
|
|
2561
2452
|
ref,
|
|
2562
|
-
className: cn(
|
|
2563
|
-
style:
|
|
2453
|
+
className: cn(BASE_CLASSES4, levelClasses, className),
|
|
2454
|
+
style: mergedStyle,
|
|
2564
2455
|
...rest
|
|
2565
2456
|
}
|
|
2566
2457
|
);
|
|
2567
2458
|
}
|
|
2568
2459
|
);
|
|
2569
|
-
var
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
],
|
|
2588
|
-
icon_background: [
|
|
2589
|
-
"bg-[var(--color-button-icon-background-bg)] text-icon-secondary border-none",
|
|
2590
|
-
"hover:text-hover",
|
|
2591
|
-
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
|
|
2592
|
-
"data-[selected]:hover:text-hover",
|
|
2593
|
-
"data-[expanded]:text-hover"
|
|
2594
|
-
],
|
|
2595
|
-
link: [
|
|
2596
|
-
"bg-transparent text-link-primary border-none font-normal px-0 h-auto",
|
|
2597
|
-
"hover:bg-transparent hover:text-link-primary-hover",
|
|
2598
|
-
"disabled:text-text-secondary"
|
|
2599
|
-
],
|
|
2600
|
-
dropdown: [
|
|
2601
|
-
"border-2 border-solid bg-transparent",
|
|
2602
|
-
"text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
|
|
2603
|
-
"hover:bg-transparent hover:text-hover hover:border-hover",
|
|
2604
|
-
"data-[expanded]:bg-transparent data-[expanded]:text-hover data-[expanded]:border-hover",
|
|
2605
|
-
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent",
|
|
2606
|
-
"data-[selected]:hover:text-hover"
|
|
2607
|
-
],
|
|
2608
|
-
pagination: [
|
|
2609
|
-
"border-2 border-solid bg-transparent",
|
|
2610
|
-
"text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
|
|
2611
|
-
"hover:bg-transparent hover:text-hover hover:border-hover",
|
|
2612
|
-
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent"
|
|
2613
|
-
]
|
|
2614
|
-
},
|
|
2615
|
-
size: {
|
|
2616
|
-
"2xs": "size-5 rounded-sm [&_svg]:size-5",
|
|
2617
|
-
"2xs_alt": "size-5 rounded-sm [&_svg]:size-3",
|
|
2618
|
-
md: "size-8 rounded-[var(--radius-base,8px)] [&_svg]:size-5"
|
|
2619
|
-
}
|
|
2460
|
+
var IconButtonFrame = styled(View, {
|
|
2461
|
+
name: "LuxIconButton",
|
|
2462
|
+
render: /* @__PURE__ */ jsx("button", { type: "button" }),
|
|
2463
|
+
role: "button",
|
|
2464
|
+
cursor: "pointer",
|
|
2465
|
+
display: "inline-flex",
|
|
2466
|
+
alignItems: "center",
|
|
2467
|
+
justifyContent: "center",
|
|
2468
|
+
padding: 0,
|
|
2469
|
+
minWidth: "auto",
|
|
2470
|
+
flexShrink: 1,
|
|
2471
|
+
backgroundColor: "transparent",
|
|
2472
|
+
borderWidth: 0,
|
|
2473
|
+
variants: {
|
|
2474
|
+
size: {
|
|
2475
|
+
"2xs": { width: 20, height: 20, borderRadius: 4 },
|
|
2476
|
+
"2xs_alt": { width: 20, height: 20, borderRadius: 4 },
|
|
2477
|
+
md: { width: 32, height: 32, borderRadius: "var(--radius-base, 8px)" }
|
|
2620
2478
|
},
|
|
2621
|
-
|
|
2622
|
-
|
|
2479
|
+
disabled: {
|
|
2480
|
+
true: {
|
|
2481
|
+
opacity: 0.4,
|
|
2482
|
+
cursor: "not-allowed",
|
|
2483
|
+
pointerEvents: "none"
|
|
2484
|
+
}
|
|
2623
2485
|
}
|
|
2624
2486
|
}
|
|
2625
|
-
);
|
|
2626
|
-
var
|
|
2487
|
+
});
|
|
2488
|
+
var VARIANT_CLASSES4 = {
|
|
2489
|
+
plain: "bg-transparent text-inherit border-none hover:bg-transparent",
|
|
2490
|
+
icon_secondary: [
|
|
2491
|
+
"bg-transparent text-icon-secondary border-none",
|
|
2492
|
+
"hover:text-hover",
|
|
2493
|
+
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
|
|
2494
|
+
"data-[selected]:hover:text-hover",
|
|
2495
|
+
"data-[expanded]:text-hover"
|
|
2496
|
+
].join(" "),
|
|
2497
|
+
icon_background: [
|
|
2498
|
+
"bg-[var(--color-button-icon-background-bg)] text-icon-secondary border-none",
|
|
2499
|
+
"hover:text-hover",
|
|
2500
|
+
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
|
|
2501
|
+
"data-[selected]:hover:text-hover",
|
|
2502
|
+
"data-[expanded]:text-hover"
|
|
2503
|
+
].join(" "),
|
|
2504
|
+
link: [
|
|
2505
|
+
"bg-transparent text-link-primary border-none font-normal px-0 h-auto",
|
|
2506
|
+
"hover:bg-transparent hover:text-link-primary-hover",
|
|
2507
|
+
"disabled:text-text-secondary"
|
|
2508
|
+
].join(" "),
|
|
2509
|
+
dropdown: [
|
|
2510
|
+
"border-2 border-solid bg-transparent",
|
|
2511
|
+
"text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
|
|
2512
|
+
"hover:bg-transparent hover:text-hover hover:border-hover",
|
|
2513
|
+
"data-[expanded]:bg-transparent data-[expanded]:text-hover data-[expanded]:border-hover",
|
|
2514
|
+
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent",
|
|
2515
|
+
"data-[selected]:hover:text-hover"
|
|
2516
|
+
].join(" "),
|
|
2517
|
+
pagination: [
|
|
2518
|
+
"border-2 border-solid bg-transparent",
|
|
2519
|
+
"text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
|
|
2520
|
+
"hover:bg-transparent hover:text-hover hover:border-hover",
|
|
2521
|
+
"data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent"
|
|
2522
|
+
].join(" ")
|
|
2523
|
+
};
|
|
2524
|
+
var ICON_SIZE_CLASSES = {
|
|
2525
|
+
"2xs": "[&_svg]:size-5",
|
|
2526
|
+
"2xs_alt": "[&_svg]:size-3",
|
|
2527
|
+
md: "[&_svg]:size-5"
|
|
2528
|
+
};
|
|
2529
|
+
var SP2 = 4;
|
|
2530
|
+
var IconButton = React29.forwardRef(
|
|
2627
2531
|
function IconButton2(props, ref) {
|
|
2628
2532
|
const {
|
|
2629
2533
|
size,
|
|
@@ -2636,7 +2540,7 @@ var IconButton = React29__default.forwardRef(
|
|
|
2636
2540
|
disabled,
|
|
2637
2541
|
className,
|
|
2638
2542
|
children,
|
|
2639
|
-
as:
|
|
2543
|
+
as: _as,
|
|
2640
2544
|
style: styleProp,
|
|
2641
2545
|
// Strip Chakra style props
|
|
2642
2546
|
boxSize: _boxSize,
|
|
@@ -2649,37 +2553,47 @@ var IconButton = React29__default.forwardRef(
|
|
|
2649
2553
|
_expanded,
|
|
2650
2554
|
...rest
|
|
2651
2555
|
} = props;
|
|
2652
|
-
const SP = 4;
|
|
2653
2556
|
const shimStyle = { ...styleProp };
|
|
2654
2557
|
if (_boxSize !== void 0) {
|
|
2655
|
-
const bs = typeof _boxSize === "number" ? `${_boxSize *
|
|
2558
|
+
const bs = typeof _boxSize === "number" ? `${_boxSize * SP2}px` : _boxSize;
|
|
2656
2559
|
shimStyle.width = bs;
|
|
2657
2560
|
shimStyle.height = bs;
|
|
2658
2561
|
}
|
|
2659
2562
|
if (_color) shimStyle.color = _color;
|
|
2660
2563
|
if (_px !== void 0) {
|
|
2661
|
-
const v = typeof _px === "number" ? `${_px *
|
|
2564
|
+
const v = typeof _px === "number" ? `${_px * SP2}px` : _px;
|
|
2662
2565
|
shimStyle.paddingLeft = v;
|
|
2663
2566
|
shimStyle.paddingRight = v;
|
|
2664
2567
|
}
|
|
2665
2568
|
if (_borderRadius) shimStyle.borderRadius = _borderRadius;
|
|
2666
|
-
if (_ml !== void 0) shimStyle.marginLeft = typeof _ml === "number" ? `${_ml *
|
|
2667
|
-
if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr *
|
|
2668
|
-
const
|
|
2569
|
+
if (_ml !== void 0) shimStyle.marginLeft = typeof _ml === "number" ? `${_ml * SP2}px` : _ml;
|
|
2570
|
+
if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * SP2}px` : _mr;
|
|
2571
|
+
const mergedStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
|
|
2572
|
+
const variantClass = VARIANT_CLASSES4[variant] ?? VARIANT_CLASSES4.plain;
|
|
2573
|
+
const iconSizeClass = size ? ICON_SIZE_CLASSES[size] ?? "" : "";
|
|
2574
|
+
const combinedClassName = [variantClass, iconSizeClass, className].filter(Boolean).join(" ");
|
|
2669
2575
|
const button = /* @__PURE__ */ jsx(
|
|
2670
|
-
|
|
2576
|
+
IconButtonFrame,
|
|
2671
2577
|
{
|
|
2672
2578
|
ref,
|
|
2673
|
-
|
|
2674
|
-
disabled: !loadingSkeleton && (loading || disabled),
|
|
2675
|
-
|
|
2676
|
-
|
|
2579
|
+
size,
|
|
2580
|
+
disabled: !loadingSkeleton && (loading || disabled) || void 0,
|
|
2581
|
+
render: _as ? React29.createElement(_as) : void 0,
|
|
2582
|
+
className: combinedClassName,
|
|
2583
|
+
style: mergedStyle,
|
|
2677
2584
|
...expanded ? { "data-expanded": true } : {},
|
|
2678
2585
|
...selected ? { "data-selected": true } : {},
|
|
2679
2586
|
...highlighted ? { "data-highlighted": true } : {},
|
|
2680
2587
|
...loadingSkeleton ? { "data-loading-skeleton": true } : {},
|
|
2681
2588
|
...rest,
|
|
2682
|
-
children: loading ? /* @__PURE__ */ jsx(
|
|
2589
|
+
children: loading ? /* @__PURE__ */ jsx(
|
|
2590
|
+
"span",
|
|
2591
|
+
{
|
|
2592
|
+
className: "inline-block size-5 animate-spin rounded-full border-2 border-current border-b-transparent border-l-transparent",
|
|
2593
|
+
role: "status",
|
|
2594
|
+
"aria-label": "Loading"
|
|
2595
|
+
}
|
|
2596
|
+
) : children
|
|
2683
2597
|
}
|
|
2684
2598
|
);
|
|
2685
2599
|
if (loadingSkeleton) {
|
|
@@ -3495,8 +3409,7 @@ var PopoverRoot = (props) => {
|
|
|
3495
3409
|
positioning,
|
|
3496
3410
|
autoFocus = false,
|
|
3497
3411
|
closeOnInteractOutside = true,
|
|
3498
|
-
|
|
3499
|
-
// lazyMount and unmountOnExit are handled via forceMount on Portal/Content
|
|
3412
|
+
// lazyMount and unmountOnExit are handled via keepChildrenMounted
|
|
3500
3413
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3501
3414
|
lazyMount: _lazyMount,
|
|
3502
3415
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -3532,23 +3445,27 @@ var PopoverRoot = (props) => {
|
|
|
3532
3445
|
const handleOpenChange = React29.useCallback((isOpen) => {
|
|
3533
3446
|
onOpenChange?.({ open: isOpen });
|
|
3534
3447
|
}, [onOpenChange]);
|
|
3448
|
+
const placement = mergedPositioning.placement ?? "bottom-start";
|
|
3449
|
+
const offset = mergedPositioning.offset?.mainAxis ?? 4;
|
|
3535
3450
|
return /* @__PURE__ */ jsx(PositioningContext2.Provider, { value: positioningValue, children: /* @__PURE__ */ jsx(
|
|
3536
|
-
|
|
3451
|
+
Popover,
|
|
3537
3452
|
{
|
|
3538
3453
|
open,
|
|
3539
3454
|
defaultOpen,
|
|
3540
3455
|
onOpenChange: handleOpenChange,
|
|
3541
|
-
|
|
3456
|
+
placement,
|
|
3457
|
+
offset,
|
|
3458
|
+
disableFocus: !autoFocus,
|
|
3542
3459
|
children
|
|
3543
3460
|
}
|
|
3544
3461
|
) });
|
|
3545
3462
|
};
|
|
3546
3463
|
var PopoverTrigger = React29.forwardRef(function PopoverTrigger2(props, ref) {
|
|
3547
3464
|
const { asChild = true, ...rest } = props;
|
|
3548
|
-
return /* @__PURE__ */ jsx(
|
|
3465
|
+
return /* @__PURE__ */ jsx(Popover.Trigger, { asChild: asChild ? "except-style" : void 0, ref, ...rest });
|
|
3549
3466
|
});
|
|
3550
3467
|
var PopoverContent = React29.forwardRef(function PopoverContent2(props, ref) {
|
|
3551
|
-
const { portalled = true, portalRef, className, w, minW, maxW, paddingTop, style: styleProp, ...rest } = props;
|
|
3468
|
+
const { portalled = true, portalRef: _portalRef, className, w, minW, maxW, paddingTop, style: styleProp, ...rest } = props;
|
|
3552
3469
|
const resolvedW = typeof w === "object" ? w.base ?? w.lg : w;
|
|
3553
3470
|
const contentStyle = {
|
|
3554
3471
|
...styleProp,
|
|
@@ -3557,20 +3474,11 @@ var PopoverContent = React29.forwardRef(function PopoverContent2(props, ref) {
|
|
|
3557
3474
|
...maxW ? { maxWidth: maxW } : {},
|
|
3558
3475
|
...paddingTop !== void 0 ? { paddingTop: typeof paddingTop === "number" ? `${paddingTop * 4}px` : paddingTop } : {}
|
|
3559
3476
|
};
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
const preventInteract = React29.useCallback((e) => e.preventDefault(), []);
|
|
3563
|
-
const content = /* @__PURE__ */ jsx(
|
|
3564
|
-
RadixPopover.Content,
|
|
3477
|
+
return /* @__PURE__ */ jsx(
|
|
3478
|
+
Popover.Content,
|
|
3565
3479
|
{
|
|
3566
3480
|
ref,
|
|
3567
|
-
|
|
3568
|
-
align: positioning.align,
|
|
3569
|
-
sideOffset: positioning.sideOffset,
|
|
3570
|
-
alignOffset: positioning.alignOffset,
|
|
3571
|
-
collisionPadding: positioning.collisionPadding,
|
|
3572
|
-
onOpenAutoFocus: positioning.autoFocus ? void 0 : preventFocus,
|
|
3573
|
-
onInteractOutside: positioning.closeOnInteractOutside ? void 0 : preventInteract,
|
|
3481
|
+
unstyled: true,
|
|
3574
3482
|
className: cn(
|
|
3575
3483
|
"z-50 rounded-lg border border-[var(--color-popover-border,var(--color-border-divider))]",
|
|
3576
3484
|
"bg-[var(--color-popover-bg,var(--color-dialog-bg))]",
|
|
@@ -3586,17 +3494,14 @@ var PopoverContent = React29.forwardRef(function PopoverContent2(props, ref) {
|
|
|
3586
3494
|
...rest
|
|
3587
3495
|
}
|
|
3588
3496
|
);
|
|
3589
|
-
if (!portalled) {
|
|
3590
|
-
return content;
|
|
3591
|
-
}
|
|
3592
|
-
return /* @__PURE__ */ jsx(RadixPopover.Portal, { container: portalRef?.current ?? void 0, children: content });
|
|
3593
3497
|
});
|
|
3594
3498
|
var PopoverArrow = React29.forwardRef(function PopoverArrow2(props, ref) {
|
|
3595
3499
|
const { className, ...rest } = props;
|
|
3596
3500
|
return /* @__PURE__ */ jsx(
|
|
3597
|
-
|
|
3501
|
+
Popover.Arrow,
|
|
3598
3502
|
{
|
|
3599
3503
|
ref,
|
|
3504
|
+
unstyled: true,
|
|
3600
3505
|
className: cn("fill-[var(--color-popover-bg,var(--color-dialog-bg))]", className),
|
|
3601
3506
|
...rest
|
|
3602
3507
|
}
|
|
@@ -3605,8 +3510,9 @@ var PopoverArrow = React29.forwardRef(function PopoverArrow2(props, ref) {
|
|
|
3605
3510
|
var PopoverCloseTrigger = React29.forwardRef(function PopoverCloseTrigger2(props, ref) {
|
|
3606
3511
|
const { className, ...rest } = props;
|
|
3607
3512
|
return /* @__PURE__ */ jsx(
|
|
3608
|
-
|
|
3513
|
+
Popover.Close,
|
|
3609
3514
|
{
|
|
3515
|
+
unstyled: true,
|
|
3610
3516
|
className: cn("absolute top-1 right-1", className),
|
|
3611
3517
|
...rest,
|
|
3612
3518
|
asChild: true,
|
|
@@ -3620,7 +3526,7 @@ var PopoverCloseTriggerWrapper = React29.forwardRef(function PopoverCloseTrigger
|
|
|
3620
3526
|
if (disabled) {
|
|
3621
3527
|
return children;
|
|
3622
3528
|
}
|
|
3623
|
-
return /* @__PURE__ */ jsx(
|
|
3529
|
+
return /* @__PURE__ */ jsx(Popover.Close, { ref, ...rest, asChild: true, children });
|
|
3624
3530
|
});
|
|
3625
3531
|
var PopoverBody = React29.forwardRef(function PopoverBody2(props, ref) {
|
|
3626
3532
|
const {
|
|
@@ -3704,7 +3610,7 @@ var PopoverDescription = React29.forwardRef(function PopoverDescription2(props,
|
|
|
3704
3610
|
}
|
|
3705
3611
|
);
|
|
3706
3612
|
});
|
|
3707
|
-
var
|
|
3613
|
+
var SIZE_CLASSES6 = {
|
|
3708
3614
|
sm: "h-1",
|
|
3709
3615
|
md: "h-2",
|
|
3710
3616
|
lg: "h-3",
|
|
@@ -3762,7 +3668,7 @@ var Progress = React29.forwardRef(
|
|
|
3762
3668
|
className: cn(
|
|
3763
3669
|
"w-full overflow-hidden rounded-full",
|
|
3764
3670
|
"bg-[var(--color-progress-track)]",
|
|
3765
|
-
|
|
3671
|
+
SIZE_CLASSES6[size],
|
|
3766
3672
|
trackProps?.className
|
|
3767
3673
|
),
|
|
3768
3674
|
style: trackStyle,
|
|
@@ -3901,7 +3807,7 @@ var ProgressCircleValueText = React29.forwardRef(function ProgressCircleValueTex
|
|
|
3901
3807
|
}
|
|
3902
3808
|
);
|
|
3903
3809
|
});
|
|
3904
|
-
var
|
|
3810
|
+
var SIZE_CLASSES7 = {
|
|
3905
3811
|
xs: {
|
|
3906
3812
|
root: "gap-1.5",
|
|
3907
3813
|
control: "h-3 w-3",
|
|
@@ -3982,7 +3888,7 @@ var RadioBase = React29.forwardRef(
|
|
|
3982
3888
|
function Radio(props, ref) {
|
|
3983
3889
|
const { children, inputProps, rootRef, value, disabled, className, ...rest } = props;
|
|
3984
3890
|
const size = React29.useContext(RadioSizeContext);
|
|
3985
|
-
const sizeClasses2 =
|
|
3891
|
+
const sizeClasses2 = SIZE_CLASSES7[size];
|
|
3986
3892
|
return /* @__PURE__ */ jsxs(
|
|
3987
3893
|
"label",
|
|
3988
3894
|
{
|
|
@@ -4497,7 +4403,7 @@ var SelectAsync = React29.forwardRef((props, ref) => {
|
|
|
4497
4403
|
}
|
|
4498
4404
|
);
|
|
4499
4405
|
});
|
|
4500
|
-
var
|
|
4406
|
+
var VARIANT_CLASSES5 = {
|
|
4501
4407
|
solid: "border-solid",
|
|
4502
4408
|
dashed: "border-dashed",
|
|
4503
4409
|
dotted: "border-dotted"
|
|
@@ -4526,7 +4432,7 @@ var Separator2 = React29__default.forwardRef(
|
|
|
4526
4432
|
className: cn(
|
|
4527
4433
|
"border-[var(--color-border-divider)]",
|
|
4528
4434
|
"border-0",
|
|
4529
|
-
|
|
4435
|
+
VARIANT_CLASSES5[variant],
|
|
4530
4436
|
isVertical ? VERTICAL_SIZE_CLASSES[size] : HORIZONTAL_SIZE_CLASSES[size],
|
|
4531
4437
|
isVertical ? "self-stretch h-auto w-0" : "w-full",
|
|
4532
4438
|
className
|
|
@@ -4640,7 +4546,7 @@ function SliderMarks(props) {
|
|
|
4640
4546
|
}
|
|
4641
4547
|
var NOOP3 = () => {
|
|
4642
4548
|
};
|
|
4643
|
-
var
|
|
4549
|
+
var SIZE_CLASSES8 = {
|
|
4644
4550
|
sm: {
|
|
4645
4551
|
root: "h-4 w-7",
|
|
4646
4552
|
thumb: "h-3 w-3 data-[state=checked]:translate-x-3",
|
|
@@ -4690,7 +4596,7 @@ var SwitchBase = React29.forwardRef(
|
|
|
4690
4596
|
},
|
|
4691
4597
|
[isControlled, onCheckedChange]
|
|
4692
4598
|
);
|
|
4693
|
-
const sizeClasses2 =
|
|
4599
|
+
const sizeClasses2 = SIZE_CLASSES8[size];
|
|
4694
4600
|
const isRtl = direction === "rtl";
|
|
4695
4601
|
return /* @__PURE__ */ jsxs(
|
|
4696
4602
|
"label",
|
|
@@ -4766,11 +4672,11 @@ var SwitchBase = React29.forwardRef(
|
|
|
4766
4672
|
);
|
|
4767
4673
|
var Switch2 = SwitchBase;
|
|
4768
4674
|
var ArrowIcon3 = ({ className }) => /* @__PURE__ */ jsx("svg", { className, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M5 12h14M12 5l7 7-7 7", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
4769
|
-
var
|
|
4675
|
+
var SPACING_SCALE = 4;
|
|
4770
4676
|
function toPixels(value) {
|
|
4771
4677
|
if (value === void 0) return void 0;
|
|
4772
4678
|
if (typeof value === "string") return value;
|
|
4773
|
-
return `${value *
|
|
4679
|
+
return `${value * SPACING_SCALE}px`;
|
|
4774
4680
|
}
|
|
4775
4681
|
function extractStyles(props) {
|
|
4776
4682
|
const style = {};
|
|
@@ -5613,7 +5519,7 @@ var Toaster = () => {
|
|
|
5613
5519
|
}
|
|
5614
5520
|
);
|
|
5615
5521
|
};
|
|
5616
|
-
function
|
|
5522
|
+
function Provider(props) {
|
|
5617
5523
|
return /* @__PURE__ */ jsx(ColorModeProvider, { ...props });
|
|
5618
5524
|
}
|
|
5619
5525
|
function fmt(n, decimals = 2) {
|
|
@@ -7134,4 +7040,4 @@ var BankPage = styled(View, {
|
|
|
7134
7040
|
padding: 16
|
|
7135
7041
|
});
|
|
7136
7042
|
|
|
7137
|
-
export { AccordionItem, AccordionItemContent, AccordionItemTrigger, AccordionRoot, Alert, Avatar, AvatarGroup, Badge, BankAlert, BankAlertText, BankButton, BankButtonText, BankCard, BankDivider, BankField, BankHeading, BankInput, BankPage, BankPinBox, BankText, Button, ButtonGroup, ButtonGroupRadio, Checkbox2 as Checkbox, CheckboxGroup2 as CheckboxGroup, CloseButton, CollapsibleDetails, CollapsibleList, ColorModeProvider, DialogActionTrigger, DialogBackdrop, DialogBody, DialogCloseTrigger, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger, DrawerActionTrigger, DrawerBody, DrawerCloseTrigger, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerRoot, DrawerTitle, DrawerTrigger, EmptyState, ExpirationSelector, Field, GreeksDisplay, Heading, IconButton, Image2 as Image, Input, InputGroup, Link, LinkBox, LinkExternalIcon, LinkOverlay, MenuArrow, MenuCheckboxItem, MenuContent, MenuItem, MenuItemGroup, MenuItemText, MenuRadioItem, MenuRadioItemGroup, MenuRoot, MenuSeparator, MenuTrigger, MenuTriggerItem, OptionChain, OptionPositionCard, PinInput, PnlDiagram, PopoverArrow, PopoverBody, PopoverCloseTrigger, PopoverCloseTriggerWrapper, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverRoot, PopoverTitle, PopoverTrigger, Progress, ProgressCircleRing, ProgressCircleRoot, ProgressCircleValueText,
|
|
7043
|
+
export { AccordionItem, AccordionItemContent, AccordionItemTrigger, AccordionRoot, Alert, Avatar, AvatarGroup, Badge, BankAlert, BankAlertText, BankButton, BankButtonText, BankCard, BankDivider, BankField, BankHeading, BankInput, BankPage, BankPinBox, BankText, Button, ButtonGroup, ButtonGroupRadio, Checkbox2 as Checkbox, CheckboxGroup2 as CheckboxGroup, CloseButton, CollapsibleDetails, CollapsibleList, ColorModeProvider, DialogActionTrigger, DialogBackdrop, DialogBody, DialogCloseTrigger, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger, DrawerActionTrigger, DrawerBody, DrawerCloseTrigger, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerRoot, DrawerTitle, DrawerTrigger, EmptyState, ExpirationSelector, Field, GreeksDisplay, Heading, IconButton, Image2 as Image, Input, InputGroup, Link, LinkBox, LinkExternalIcon, LinkOverlay, MenuArrow, MenuCheckboxItem, MenuContent, MenuItem, MenuItemGroup, MenuItemText, MenuRadioItem, MenuRadioItemGroup, MenuRoot, MenuSeparator, MenuTrigger, MenuTriggerItem, OptionChain, OptionPositionCard, PinInput, PnlDiagram, PopoverArrow, PopoverBody, PopoverCloseTrigger, PopoverCloseTriggerWrapper, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverRoot, PopoverTitle, PopoverTrigger, Progress, ProgressCircleRing, ProgressCircleRoot, ProgressCircleValueText, Provider, Radio2 as Radio, RadioGroup3 as RadioGroup, Rating, Select, SelectAsync, SelectClearTrigger, SelectContent, SelectControl, SelectItem, SelectItemGroup, SelectItemText, SelectLabel, SelectRoot, SelectValueText, Separator2 as Separator, Skeleton, SkeletonCircle, SkeletonText, Slider, StrategyBuilder, Switch2 as Switch, TableBody, TableCaption, TableCell, TableColumnHeader, TableColumnHeaderSortable, TableFooter, TableHeader, TableHeaderSticky, TableRoot, TableRow, TableScrollWrapper, TabsContent, TabsCounter, TabsList, TabsRoot, TabsTrigger, Tag, Textarea, Toaster, Tooltip, bankColors, buttonVariants, cn, createListCollection, toaster, useAccordion, useColorMode, useColorModeValue };
|