@luxfi/ui 7.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/alert.cjs +162 -285
  2. package/dist/alert.js +162 -285
  3. package/dist/badge.cjs +162 -321
  4. package/dist/badge.d.cts +3 -7
  5. package/dist/badge.d.ts +3 -7
  6. package/dist/badge.js +162 -320
  7. package/dist/button.cjs +373 -484
  8. package/dist/button.d.cts +10 -7
  9. package/dist/button.d.ts +10 -7
  10. package/dist/button.js +373 -484
  11. package/dist/close-button.cjs +37 -18
  12. package/dist/close-button.d.cts +1 -1
  13. package/dist/close-button.d.ts +1 -1
  14. package/dist/close-button.js +37 -18
  15. package/dist/collapsible.cjs +125 -272
  16. package/dist/collapsible.js +125 -272
  17. package/dist/dialog.cjs +60 -44
  18. package/dist/dialog.d.cts +7 -8
  19. package/dist/dialog.d.ts +7 -8
  20. package/dist/dialog.js +60 -43
  21. package/dist/drawer.cjs +37 -13
  22. package/dist/drawer.js +37 -13
  23. package/dist/heading.cjs +3 -8
  24. package/dist/heading.js +3 -8
  25. package/dist/icon-button.cjs +213 -337
  26. package/dist/icon-button.d.cts +4 -4
  27. package/dist/icon-button.d.ts +4 -4
  28. package/dist/icon-button.js +213 -338
  29. package/dist/image.cjs +125 -272
  30. package/dist/image.js +125 -272
  31. package/dist/index.cjs +604 -700
  32. package/dist/index.d.cts +0 -3
  33. package/dist/index.d.ts +0 -3
  34. package/dist/index.js +604 -698
  35. package/dist/link.cjs +125 -272
  36. package/dist/link.js +125 -272
  37. package/dist/popover.cjs +55 -40
  38. package/dist/popover.js +55 -39
  39. package/dist/select.cjs +125 -272
  40. package/dist/select.js +125 -272
  41. package/dist/skeleton.cjs +125 -272
  42. package/dist/skeleton.js +125 -272
  43. package/dist/table.cjs +127 -274
  44. package/dist/table.js +127 -274
  45. package/dist/tag.cjs +184 -306
  46. package/dist/tag.js +184 -305
  47. package/dist/tooltip.cjs +22 -21
  48. package/dist/tooltip.d.cts +2 -3
  49. package/dist/tooltip.d.ts +2 -3
  50. package/dist/tooltip.js +22 -20
  51. package/package.json +9 -7
  52. package/src/badge.tsx +20 -31
  53. package/src/button.tsx +304 -238
  54. package/src/close-button.tsx +48 -22
  55. package/src/dialog.tsx +37 -47
  56. package/src/heading.tsx +8 -19
  57. package/src/icon-button.tsx +129 -104
  58. package/src/popover.tsx +30 -44
  59. package/src/skeleton.tsx +96 -144
  60. package/src/tooltip.tsx +54 -47
package/dist/index.cjs CHANGED
@@ -7,18 +7,19 @@ var AccordionPrimitive = require('@radix-ui/react-accordion');
7
7
  var React29 = require('react');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
  var classVarianceAuthority = require('class-variance-authority');
10
+ var core = require('@hanzogui/core');
10
11
  var RadixAvatar = require('@radix-ui/react-avatar');
11
- var RadixTooltip = require('@radix-ui/react-tooltip');
12
+ var tooltip = require('@hanzogui/tooltip');
12
13
  var usehooks = require('@uidotdev/usehooks');
13
- var reactSlot = require('@radix-ui/react-slot');
14
14
  var RadixCheckbox = require('@radix-ui/react-checkbox');
15
15
  var Collapsible = require('@radix-ui/react-collapsible');
16
+ var dialog = require('@hanzogui/dialog');
16
17
  var RadixDialog = require('@radix-ui/react-dialog');
17
18
  var LabelPrimitive = require('@radix-ui/react-label');
18
19
  var esToolkit = require('es-toolkit');
19
20
  var DropdownMenu = require('@radix-ui/react-dropdown-menu');
20
21
  var lu = require('react-icons/lu');
21
- var RadixPopover = require('@radix-ui/react-popover');
22
+ var popover = require('@hanzogui/popover');
22
23
  var RadixProgress = require('@radix-ui/react-progress');
23
24
  var RadixRadioGroup = require('@radix-ui/react-radio-group');
24
25
  var RadixSelect = require('@radix-ui/react-select');
@@ -26,7 +27,6 @@ var RadixSlider = require('@radix-ui/react-slider');
26
27
  var RadixSwitch = require('@radix-ui/react-switch');
27
28
  var RadixTabs = require('@radix-ui/react-tabs');
28
29
  var sonner = require('sonner');
29
- var core = require('@hanzogui/core');
30
30
 
31
31
  function _interopNamespace(e) {
32
32
  if (e && e.__esModule) return e;
@@ -49,13 +49,11 @@ function _interopNamespace(e) {
49
49
  var AccordionPrimitive__namespace = /*#__PURE__*/_interopNamespace(AccordionPrimitive);
50
50
  var React29__namespace = /*#__PURE__*/_interopNamespace(React29);
51
51
  var RadixAvatar__namespace = /*#__PURE__*/_interopNamespace(RadixAvatar);
52
- var RadixTooltip__namespace = /*#__PURE__*/_interopNamespace(RadixTooltip);
53
52
  var RadixCheckbox__namespace = /*#__PURE__*/_interopNamespace(RadixCheckbox);
54
53
  var Collapsible__namespace = /*#__PURE__*/_interopNamespace(Collapsible);
55
54
  var RadixDialog__namespace = /*#__PURE__*/_interopNamespace(RadixDialog);
56
55
  var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespace(LabelPrimitive);
57
56
  var DropdownMenu__namespace = /*#__PURE__*/_interopNamespace(DropdownMenu);
58
- var RadixPopover__namespace = /*#__PURE__*/_interopNamespace(RadixPopover);
59
57
  var RadixProgress__namespace = /*#__PURE__*/_interopNamespace(RadixProgress);
60
58
  var RadixRadioGroup__namespace = /*#__PURE__*/_interopNamespace(RadixRadioGroup);
61
59
  var RadixSelect__namespace = /*#__PURE__*/_interopNamespace(RadixSelect);
@@ -241,24 +239,47 @@ function useAccordion(items) {
241
239
  }, [value, onValueChange, scrollToItemFromUrl]);
242
240
  }
243
241
  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";
242
+ var CloseButtonFrame = core.styled(core.View, {
243
+ name: "LuxCloseButton",
244
+ render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", "aria-label": "Close" }),
245
+ role: "button",
246
+ cursor: "pointer",
247
+ display: "inline-flex",
248
+ alignItems: "center",
249
+ justifyContent: "center",
250
+ width: 20,
251
+ height: 20,
252
+ minWidth: 0,
253
+ flexShrink: 1,
254
+ padding: 0,
255
+ borderRadius: 4,
256
+ borderWidth: 0,
257
+ overflow: "hidden",
258
+ backgroundColor: "transparent",
259
+ hoverStyle: {
260
+ backgroundColor: "transparent"
261
+ },
262
+ variants: {
263
+ disabled: {
264
+ true: {
265
+ opacity: 0.4,
266
+ pointerEvents: "none"
267
+ }
268
+ }
269
+ }
270
+ });
271
+ var CLOSE_BUTTON_CLASSES = [
272
+ "text-[var(--closeButton-fg,currentColor)]",
273
+ "hover:text-[var(--hover-color,currentColor)]",
274
+ "disabled:opacity-40"
275
+ ].join(" ");
244
276
  var CloseButton = React29__namespace.forwardRef(function CloseButton2(props, ref) {
245
277
  const { variant: _variant, size: _size, className, children, ...rest } = props;
246
278
  return /* @__PURE__ */ jsxRuntime.jsx(
247
- "button",
279
+ CloseButtonFrame,
248
280
  {
249
- type: "button",
250
- "aria-label": "Close",
251
281
  ref,
252
- className: cn(
253
- "inline-flex items-center justify-center",
254
- "size-5 min-w-0 shrink-0 p-0",
255
- "rounded-sm border-0 overflow-hidden",
256
- "bg-transparent text-[var(--closeButton-fg,currentColor)]",
257
- "hover:bg-transparent hover:text-[var(--hover-color,currentColor)]",
258
- "disabled:opacity-40",
259
- "cursor-pointer",
260
- className
261
- ),
282
+ className: [CLOSE_BUTTON_CLASSES, className].filter(Boolean).join(" "),
262
283
  ...rest,
263
284
  children: children ?? /* @__PURE__ */ jsxRuntime.jsx(
264
285
  "svg",
@@ -279,272 +300,137 @@ var CloseButton = React29__namespace.forwardRef(function CloseButton2(props, ref
279
300
  }
280
301
  );
281
302
  });
282
- var SPACING_SCALE = 4;
283
- function toStylePx(value) {
284
- if (value === void 0) return void 0;
285
- if (typeof value === "string") return value;
286
- return `${value * SPACING_SCALE}px`;
303
+ var SHIM_PROPS = [
304
+ "w",
305
+ "h",
306
+ "minW",
307
+ "maxW",
308
+ "display",
309
+ "flexGrow",
310
+ "flexShrink",
311
+ "flexBasis",
312
+ "fontWeight",
313
+ "textStyle",
314
+ "borderRadius",
315
+ "alignSelf",
316
+ "alignItems",
317
+ "justifyContent",
318
+ "color",
319
+ "mt",
320
+ "mb",
321
+ "ml",
322
+ "mr",
323
+ "height",
324
+ "overflow",
325
+ "whiteSpace",
326
+ "textOverflow",
327
+ "textTransform",
328
+ "gap",
329
+ "gridTemplateColumns",
330
+ "minWidth",
331
+ "boxSize",
332
+ "py",
333
+ "px",
334
+ "p",
335
+ "hideBelow",
336
+ "fontSize",
337
+ "flexWrap",
338
+ "wordBreak",
339
+ "lineHeight",
340
+ "marginRight",
341
+ "position",
342
+ "background"
343
+ ];
344
+ var S = 4;
345
+ function dim(v) {
346
+ if (v == null) return void 0;
347
+ if (typeof v === "number") return `${v * S}px`;
348
+ if (typeof v === "string") return v;
349
+ if (typeof v === "object") {
350
+ const o = v;
351
+ return o.base ?? o.lg ?? o.xl ?? Object.values(o)[0];
352
+ }
353
+ return void 0;
287
354
  }
288
- function extractSkeletonStyleProps(props) {
289
- const style = {};
290
- const rest = {};
291
- function resolveDimension(value) {
292
- if (value === void 0 || value === null) return void 0;
293
- if (typeof value === "number") return `${value * SPACING_SCALE}px`;
294
- if (typeof value === "string") return value;
295
- if (typeof value === "object") {
296
- const obj = value;
297
- return obj.base ?? obj.lg ?? obj.xl ?? Object.values(obj)[0];
298
- }
299
- return void 0;
355
+ function sp(v) {
356
+ if (v === void 0) return void 0;
357
+ return typeof v === "number" ? `${v * S}px` : v;
358
+ }
359
+ function shimToStyle(props) {
360
+ const s = {};
361
+ if (props.w !== void 0) s.width = dim(props.w);
362
+ if (props.h !== void 0) s.height = dim(props.h);
363
+ if (props.minW !== void 0) s.minWidth = dim(props.minW);
364
+ if (props.maxW !== void 0) s.maxWidth = dim(props.maxW);
365
+ if (props.display !== void 0) s.display = props.display;
366
+ if (props.flexGrow !== void 0) s.flexGrow = props.flexGrow;
367
+ if (props.flexShrink !== void 0) s.flexShrink = props.flexShrink;
368
+ if (props.flexBasis !== void 0) s.flexBasis = props.flexBasis;
369
+ if (props.fontWeight !== void 0) s.fontWeight = props.fontWeight;
370
+ if (props.borderRadius !== void 0) s.borderRadius = props.borderRadius;
371
+ if (props.alignSelf !== void 0) s.alignSelf = props.alignSelf;
372
+ if (props.alignItems !== void 0) s.alignItems = props.alignItems;
373
+ if (props.justifyContent !== void 0) s.justifyContent = props.justifyContent;
374
+ if (props.color !== void 0) s.color = props.color;
375
+ if (props.mt !== void 0) s.marginTop = sp(props.mt);
376
+ if (props.mb !== void 0) s.marginBottom = sp(props.mb);
377
+ if (props.ml !== void 0) s.marginLeft = sp(props.ml);
378
+ if (props.mr !== void 0) s.marginRight = sp(props.mr);
379
+ if (props.height !== void 0) s.height = props.height;
380
+ if (props.overflow !== void 0) s.overflow = props.overflow;
381
+ if (props.whiteSpace !== void 0) s.whiteSpace = props.whiteSpace;
382
+ if (props.textOverflow !== void 0) s.textOverflow = props.textOverflow;
383
+ if (props.textTransform !== void 0) s.textTransform = props.textTransform;
384
+ if (props.gap !== void 0) s.gap = sp(props.gap);
385
+ if (props.gridTemplateColumns !== void 0) s.gridTemplateColumns = props.gridTemplateColumns;
386
+ if (props.minWidth !== void 0) s.minWidth = props.minWidth;
387
+ if (props.boxSize !== void 0) {
388
+ const v = typeof props.boxSize === "number" ? `${props.boxSize * S}px` : props.boxSize;
389
+ s.width = v;
390
+ s.height = v;
300
391
  }
301
- for (const [key, value] of Object.entries(props)) {
302
- if (value === void 0) continue;
303
- switch (key) {
304
- case "w": {
305
- const v = resolveDimension(value);
306
- if (v) style.width = v;
307
- break;
308
- }
309
- case "h": {
310
- const v = resolveDimension(value);
311
- if (v) style.height = v;
312
- break;
313
- }
314
- case "minW": {
315
- const v = resolveDimension(value);
316
- if (v) style.minWidth = v;
317
- break;
318
- }
319
- case "maxW": {
320
- const v = resolveDimension(value);
321
- if (v) style.maxWidth = v;
322
- break;
323
- }
324
- case "height":
325
- style.height = value;
326
- break;
327
- case "display":
328
- style.display = value;
329
- break;
330
- case "flexGrow":
331
- style.flexGrow = value;
332
- break;
333
- case "flexShrink":
334
- style.flexShrink = value;
335
- break;
336
- case "flexBasis":
337
- style.flexBasis = value;
338
- break;
339
- case "fontWeight":
340
- style.fontWeight = value;
341
- break;
342
- case "borderRadius":
343
- style.borderRadius = value;
344
- break;
345
- case "alignSelf":
346
- style.alignSelf = value;
347
- break;
348
- case "alignItems":
349
- style.alignItems = value;
350
- break;
351
- case "justifyContent":
352
- style.justifyContent = value;
353
- break;
354
- case "color":
355
- style.color = value;
356
- break;
357
- case "mt":
358
- style.marginTop = toStylePx(value);
359
- break;
360
- case "mb":
361
- style.marginBottom = toStylePx(value);
362
- break;
363
- case "ml":
364
- style.marginLeft = toStylePx(value);
365
- break;
366
- case "mr":
367
- style.marginRight = toStylePx(value);
368
- break;
369
- case "overflow":
370
- style.overflow = value;
371
- break;
372
- case "whiteSpace":
373
- style.whiteSpace = value;
374
- break;
375
- case "textOverflow":
376
- style.textOverflow = value;
377
- break;
378
- case "textTransform":
379
- style.textTransform = value;
380
- break;
381
- case "gap":
382
- style.gap = typeof value === "number" ? `${value * SPACING_SCALE}px` : value;
383
- break;
384
- case "gridTemplateColumns":
385
- style.gridTemplateColumns = value;
386
- break;
387
- case "minWidth":
388
- style.minWidth = value;
389
- break;
390
- case "boxSize": {
391
- const s = typeof value === "number" ? `${value * SPACING_SCALE}px` : value;
392
- style.width = s;
393
- style.height = s;
394
- break;
395
- }
396
- case "py": {
397
- const v = toStylePx(value);
398
- style.paddingTop = v;
399
- style.paddingBottom = v;
400
- break;
401
- }
402
- case "px": {
403
- const v = toStylePx(value);
404
- style.paddingLeft = v;
405
- style.paddingRight = v;
406
- break;
407
- }
408
- case "p": {
409
- const v = toStylePx(value);
410
- style.padding = v;
411
- break;
412
- }
413
- case "hideBelow":
414
- break;
415
- // handled via className
416
- case "textStyle":
417
- break;
418
- // drop textStyle, not directly applicable
419
- case "fontSize":
420
- style.fontSize = value;
421
- break;
422
- case "flexWrap":
423
- style.flexWrap = value;
424
- break;
425
- case "wordBreak":
426
- style.wordBreak = value;
427
- break;
428
- case "lineHeight":
429
- style.lineHeight = value;
430
- break;
431
- case "marginRight":
432
- style.marginRight = value;
433
- break;
434
- case "position":
435
- style.position = value;
436
- break;
437
- case "background":
438
- style.background = value;
439
- break;
440
- default:
441
- rest[key] = value;
442
- break;
443
- }
392
+ if (props.py !== void 0) {
393
+ const v = sp(props.py);
394
+ s.paddingTop = v;
395
+ s.paddingBottom = v;
444
396
  }
445
- return { style, rest };
397
+ if (props.px !== void 0) {
398
+ const v = sp(props.px);
399
+ s.paddingLeft = v;
400
+ s.paddingRight = v;
401
+ }
402
+ if (props.p !== void 0) s.padding = sp(props.p);
403
+ if (props.fontSize !== void 0) s.fontSize = props.fontSize;
404
+ if (props.flexWrap !== void 0) s.flexWrap = props.flexWrap;
405
+ if (props.wordBreak !== void 0) s.wordBreak = props.wordBreak;
406
+ if (props.lineHeight !== void 0) s.lineHeight = props.lineHeight;
407
+ if (props.marginRight !== void 0) s.marginRight = props.marginRight;
408
+ if (props.position !== void 0) s.position = props.position;
409
+ if (props.background !== void 0) s.background = props.background;
410
+ return s;
446
411
  }
412
+ function stripShims(props) {
413
+ const out = { ...props };
414
+ for (const k of SHIM_PROPS) delete out[k];
415
+ return out;
416
+ }
417
+ var SKELETON_CLASSES = [
418
+ "animate-skeleton-shimmer rounded-sm",
419
+ "bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
420
+ "bg-[length:200%_100%]"
421
+ ].join(" ");
422
+ var HIDE_BELOW_MAP = { lg: "lg:hidden", md: "md:hidden", sm: "sm:hidden" };
447
423
  var Skeleton = React29__namespace.forwardRef(
448
424
  function Skeleton2(props, ref) {
449
- const {
450
- loading = false,
451
- asChild,
452
- className,
453
- children,
454
- style: styleProp,
455
- // Destructure style-prop shims so they don't leak into DOM
456
- w: _w,
457
- h: _h,
458
- minW: _minW,
459
- maxW: _maxW,
460
- display: _display,
461
- flexGrow: _flexGrow,
462
- flexShrink: _flexShrink,
463
- flexBasis: _flexBasis,
464
- fontWeight: _fontWeight,
465
- textStyle: _textStyle,
466
- borderRadius: _borderRadius,
467
- alignSelf: _alignSelf,
468
- alignItems: _alignItems,
469
- justifyContent: _justifyContent,
470
- color: _color,
471
- mt: _mt,
472
- mb: _mb,
473
- ml: _ml,
474
- mr: _mr,
475
- height: _height,
476
- overflow: _overflow,
477
- whiteSpace: _whiteSpace,
478
- textOverflow: _textOverflow,
479
- textTransform: _textTransform,
480
- gap: _gap,
481
- gridTemplateColumns: _gridTemplateColumns,
482
- minWidth: _minWidth,
483
- boxSize: _boxSize,
484
- py: _py,
485
- px: _px,
486
- p: _p,
487
- hideBelow: _hideBelow,
488
- fontSize: _fontSize,
489
- flexWrap: _flexWrap,
490
- wordBreak: _wordBreak,
491
- lineHeight: _lineHeight,
492
- marginRight: _marginRight,
493
- position: _position,
494
- background: _background,
495
- as: Component = "div",
496
- ...htmlRest
497
- } = props;
498
- const { style: shimStyle } = extractSkeletonStyleProps({
499
- w: _w,
500
- h: _h,
501
- minW: _minW,
502
- maxW: _maxW,
503
- display: _display,
504
- flexGrow: _flexGrow,
505
- flexShrink: _flexShrink,
506
- flexBasis: _flexBasis,
507
- fontWeight: _fontWeight,
508
- textStyle: _textStyle,
509
- borderRadius: _borderRadius,
510
- alignSelf: _alignSelf,
511
- alignItems: _alignItems,
512
- justifyContent: _justifyContent,
513
- color: _color,
514
- mt: _mt,
515
- mb: _mb,
516
- ml: _ml,
517
- mr: _mr,
518
- height: _height,
519
- overflow: _overflow,
520
- whiteSpace: _whiteSpace,
521
- textOverflow: _textOverflow,
522
- textTransform: _textTransform,
523
- gap: _gap,
524
- gridTemplateColumns: _gridTemplateColumns,
525
- minWidth: _minWidth,
526
- boxSize: _boxSize,
527
- py: _py,
528
- px: _px,
529
- p: _p,
530
- hideBelow: _hideBelow,
531
- fontSize: _fontSize,
532
- flexWrap: _flexWrap,
533
- wordBreak: _wordBreak,
534
- lineHeight: _lineHeight,
535
- marginRight: _marginRight,
536
- position: _position,
537
- background: _background
538
- });
425
+ const { loading = false, asChild, className, children, style: styleProp, as: Component = "div", ...allRest } = props;
426
+ const shimStyle = shimToStyle(props);
539
427
  const mergedStyle = Object.keys(shimStyle).length > 0 || styleProp ? { ...shimStyle, ...styleProp } : void 0;
540
- const HIDE_BELOW_MAP = { lg: "lg:hidden", md: "md:hidden", sm: "sm:hidden" };
541
- const hideBelowClass = _hideBelow ? HIDE_BELOW_MAP[_hideBelow] : void 0;
542
- const finalClassName = hideBelowClass ? cn(className, hideBelowClass) : className;
428
+ const hideBelowClass = props.hideBelow ? HIDE_BELOW_MAP[props.hideBelow] : void 0;
429
+ const cls = hideBelowClass ? cn(className, hideBelowClass) : className;
430
+ const htmlRest = stripShims(allRest);
543
431
  if (!loading) {
544
- if (asChild && React29__namespace.isValidElement(children)) {
545
- return children;
546
- }
547
- return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: finalClassName, style: mergedStyle, ...htmlRest, children });
432
+ if (asChild && React29__namespace.isValidElement(children)) return children;
433
+ return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: cls, style: mergedStyle, ...htmlRest, children });
548
434
  }
549
435
  if (asChild && React29__namespace.isValidElement(children)) {
550
436
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -552,13 +438,7 @@ var Skeleton = React29__namespace.forwardRef(
552
438
  {
553
439
  ref,
554
440
  "data-loading": true,
555
- className: cn(
556
- "animate-skeleton-shimmer rounded-sm",
557
- "bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
558
- "bg-[length:200%_100%]",
559
- "text-transparent [&_*]:invisible",
560
- finalClassName
561
- ),
441
+ className: cn(SKELETON_CLASSES, "text-transparent [&_*]:invisible", cls),
562
442
  style: mergedStyle,
563
443
  ...htmlRest,
564
444
  children
@@ -570,13 +450,7 @@ var Skeleton = React29__namespace.forwardRef(
570
450
  {
571
451
  ref,
572
452
  "data-loading": true,
573
- className: cn(
574
- "animate-skeleton-shimmer rounded-sm",
575
- "bg-[linear-gradient(90deg,var(--color-skeleton-start)_0%,var(--color-skeleton-end)_50%,var(--color-skeleton-start)_100%)]",
576
- "bg-[length:200%_100%]",
577
- children ? "text-transparent [&_*]:invisible" : "min-h-5",
578
- finalClassName
579
- ),
453
+ className: cn(SKELETON_CLASSES, children ? "text-transparent [&_*]:invisible" : "min-h-5", cls),
580
454
  style: mergedStyle,
581
455
  ...htmlRest,
582
456
  children
@@ -886,6 +760,10 @@ function useIsMobile() {
886
760
  }, []);
887
761
  return isMobile;
888
762
  }
763
+ function mapPlacement(p) {
764
+ if (!p) return void 0;
765
+ return p;
766
+ }
889
767
  var Tooltip = React29__namespace.forwardRef(
890
768
  function Tooltip2(props, ref) {
891
769
  const {
@@ -896,10 +774,8 @@ var Tooltip = React29__namespace.forwardRef(
896
774
  children,
897
775
  disabled,
898
776
  disableOnMobile,
899
- portalled = true,
900
777
  content,
901
778
  contentProps,
902
- portalRef,
903
779
  defaultOpen = false,
904
780
  triggerProps,
905
781
  closeDelay = 100,
@@ -947,36 +823,34 @@ var Tooltip = React29__namespace.forwardRef(
947
823
  if (disabled || disableOnMobile && isMobile) return children;
948
824
  const defaultShowArrow = variant === "popover" ? false : true;
949
825
  const showArrow = showArrowProp !== void 0 ? showArrowProp : defaultShowArrow;
950
- const placement = positioning?.placement ?? "top";
951
- const side = placement.split("-")[0];
952
- const align = placement.includes("-") ? placement.split("-")[1] : void 0;
953
- const sideOffset = positioning?.offset?.mainAxis ?? 4;
954
826
  const isPopover = variant === "popover";
955
- return /* @__PURE__ */ jsxRuntime.jsx(RadixTooltip__namespace.Provider, { delayDuration: openDelay, skipDelayDuration: 0, children: /* @__PURE__ */ jsxRuntime.jsxs(
956
- RadixTooltip__namespace.Root,
827
+ const placement = mapPlacement(positioning?.placement) ?? "top";
828
+ const offset = positioning?.offset?.mainAxis ?? 4;
829
+ return /* @__PURE__ */ jsxRuntime.jsx(tooltip.TooltipGroup, { delay: openDelay, children: /* @__PURE__ */ jsxRuntime.jsxs(
830
+ tooltip.Tooltip,
957
831
  {
958
832
  open,
959
833
  onOpenChange: handleOpenChange,
960
- delayDuration: openDelay,
834
+ delay: { open: openDelay, close: closeDelay },
835
+ placement,
836
+ offset,
837
+ unstyled: true,
961
838
  children: [
962
839
  /* @__PURE__ */ jsxRuntime.jsx(
963
- RadixTooltip__namespace.Trigger,
840
+ tooltip.Tooltip.Trigger,
964
841
  {
965
842
  ref: open ? triggerRef : void 0,
966
843
  asChild: true,
967
- onClick: isMobile ? handleTriggerClick : void 0,
844
+ ...isMobile ? { onPress: handleTriggerClick } : {},
968
845
  ...triggerProps,
969
846
  children
970
847
  }
971
848
  ),
972
- /* @__PURE__ */ jsxRuntime.jsx(RadixTooltip__namespace.Portal, { container: portalled ? portalRef?.current ?? void 0 : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs(
973
- RadixTooltip__namespace.Content,
849
+ /* @__PURE__ */ jsxRuntime.jsxs(
850
+ tooltip.Tooltip.Content,
974
851
  {
975
852
  ref,
976
- side,
977
- align,
978
- sideOffset,
979
- onClick: interactive ? handleContentClick : void 0,
853
+ unstyled: true,
980
854
  className: cn(
981
855
  "z-[9999] overflow-hidden rounded-lg px-3 py-2 text-sm",
982
856
  "animate-in fade-in-0 zoom-in-95",
@@ -985,12 +859,14 @@ var Tooltip = React29__namespace.forwardRef(
985
859
  !isPopover && "bg-[var(--color-tooltip-bg)] text-[var(--color-tooltip-fg)] max-w-xs",
986
860
  contentProps?.className
987
861
  ),
862
+ onClick: interactive ? handleContentClick : void 0,
988
863
  ...selected ? { "data-selected": true } : {},
989
864
  ...contentProps,
990
865
  children: [
991
866
  showArrow && /* @__PURE__ */ jsxRuntime.jsx(
992
- RadixTooltip__namespace.Arrow,
867
+ tooltip.Tooltip.Arrow,
993
868
  {
869
+ unstyled: true,
994
870
  className: cn(
995
871
  isPopover ? "fill-[var(--color-popover-bg)]" : "fill-[var(--color-tooltip-bg)]"
996
872
  )
@@ -999,7 +875,7 @@ var Tooltip = React29__namespace.forwardRef(
999
875
  content
1000
876
  ]
1001
877
  }
1002
- ) })
878
+ )
1003
879
  ]
1004
880
  }
1005
881
  ) });
@@ -1008,26 +884,12 @@ var Tooltip = React29__namespace.forwardRef(
1008
884
  function TruncatedTextTooltip({ label, children }) {
1009
885
  return /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { content: label, positioning: { placement: "top" }, children });
1010
886
  }
1011
- var badgeVariants = classVarianceAuthority.cva(
1012
- "inline-flex items-center rounded-sm gap-1 font-medium w-fit max-w-full whitespace-nowrap select-text",
1013
- {
1014
- variants: {
1015
- variant: {
1016
- subtle: "",
1017
- solid: ""
1018
- },
1019
- size: {
1020
- sm: "text-xs p-1 h-[18px] min-h-[18px]",
1021
- md: "text-sm px-1 py-0.5 min-h-6",
1022
- lg: "text-sm px-2 py-1 min-h-7 font-semibold"
1023
- }
1024
- },
1025
- defaultVariants: {
1026
- variant: "subtle",
1027
- size: "md"
1028
- }
1029
- }
1030
- );
887
+ var BASE_CLASSES = "inline-flex items-center rounded-sm gap-1 font-medium w-fit max-w-full whitespace-nowrap select-text";
888
+ var SIZE_CLASSES2 = {
889
+ sm: "text-xs p-1 h-[18px] min-h-[18px]",
890
+ md: "text-sm px-1 py-0.5 min-h-6",
891
+ lg: "text-sm px-2 py-1 min-h-7 font-semibold"
892
+ };
1031
893
  var COLOR_PALETTE_CLASSES = {
1032
894
  gray: "bg-badge-gray-bg text-badge-gray-fg",
1033
895
  green: "bg-badge-green-bg text-badge-green-fg",
@@ -1052,6 +914,7 @@ var COLOR_PALETTE_CLASSES = {
1052
914
  bright_purple: "bg-badge-bright-purple-bg text-badge-bright-purple-fg",
1053
915
  bright_pink: "bg-badge-bright-pink-bg text-badge-bright-pink-fg"
1054
916
  };
917
+ var S2 = 4;
1055
918
  var Badge = React29__namespace.default.forwardRef(
1056
919
  function Badge2(props, ref) {
1057
920
  const {
@@ -1060,8 +923,8 @@ var Badge = React29__namespace.default.forwardRef(
1060
923
  children,
1061
924
  truncated = false,
1062
925
  endElement,
1063
- variant,
1064
- size,
926
+ variant: _variant,
927
+ size = "md",
1065
928
  colorPalette = "gray",
1066
929
  className,
1067
930
  flexShrink: _flexShrink,
@@ -1073,16 +936,16 @@ var Badge = React29__namespace.default.forwardRef(
1073
936
  } = props;
1074
937
  const shimStyle = { ...styleProp };
1075
938
  if (_flexShrink !== void 0) shimStyle.flexShrink = _flexShrink;
1076
- if (_gap !== void 0) shimStyle.gap = typeof _gap === "number" ? `${_gap * 4}px` : _gap;
939
+ if (_gap !== void 0) shimStyle.gap = typeof _gap === "number" ? `${_gap * S2}px` : _gap;
1077
940
  if (_ml !== void 0) {
1078
941
  if (typeof _ml === "object") {
1079
942
  const obj = _ml;
1080
- shimStyle.marginLeft = `${(obj.base ?? obj.lg ?? 0) * 4}px`;
943
+ shimStyle.marginLeft = `${(obj.base ?? obj.lg ?? 0) * S2}px`;
1081
944
  } else {
1082
- shimStyle.marginLeft = typeof _ml === "number" ? `${_ml * 4}px` : _ml;
945
+ shimStyle.marginLeft = typeof _ml === "number" ? `${_ml * S2}px` : _ml;
1083
946
  }
1084
947
  }
1085
- if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * 4}px` : _mr;
948
+ if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * S2}px` : _mr;
1086
949
  const badgeStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
1087
950
  const child = children ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "overflow-hidden text-ellipsis", children }) : null;
1088
951
  const childrenElement = truncated ? /* @__PURE__ */ jsxRuntime.jsx(TruncatedTextTooltip, { label: children, children: child }) : child;
@@ -1091,7 +954,8 @@ var Badge = React29__namespace.default.forwardRef(
1091
954
  {
1092
955
  ref,
1093
956
  className: cn(
1094
- badgeVariants({ variant, size }),
957
+ BASE_CLASSES,
958
+ SIZE_CLASSES2[size],
1095
959
  COLOR_PALETTE_CLASSES[colorPalette],
1096
960
  className
1097
961
  ),
@@ -1110,171 +974,202 @@ var Badge = React29__namespace.default.forwardRef(
1110
974
  return badgeElement;
1111
975
  }
1112
976
  );
1113
- var buttonVariants = classVarianceAuthority.cva(
1114
- // base styles (shared across all variants)
1115
- [
1116
- "inline-flex items-center justify-center",
1117
- "gap-0 font-semibold overflow-hidden rounded-md",
1118
- "cursor-pointer select-none whitespace-nowrap",
1119
- "transition-colors duration-150",
1120
- "disabled:opacity-[0.2] disabled:cursor-not-allowed"
1121
- ],
1122
- {
1123
- variants: {
1124
- variant: {
1125
- // --- Solid ---
1126
- solid: [
1127
- "bg-[var(--color-button-solid-bg)] text-[var(--color-button-solid-text)]",
1128
- "hover:bg-[var(--color-hover)]",
1129
- "data-[expanded]:bg-[var(--color-hover)]"
1130
- ],
1131
- // --- Solid Danger ---
1132
- solid_danger: [
1133
- "bg-red-600 text-[var(--color-button-solid-text)]",
1134
- "hover:bg-red-500",
1135
- "data-[expanded]:bg-red-500"
1136
- ],
1137
- // --- Outline ---
1138
- outline: [
1139
- "border-2 border-solid bg-transparent",
1140
- "text-[var(--color-button-outline-fg)] border-[var(--color-button-outline-fg)]",
1141
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]"
1142
- ],
1143
- // --- Outline Danger ---
1144
- outline_danger: [
1145
- "border-2 border-solid bg-transparent",
1146
- "text-red-600 border-red-600",
1147
- "hover:bg-transparent hover:text-red-500 hover:border-red-500"
1148
- ],
1149
- // --- Dropdown ---
1150
- dropdown: [
1151
- "border-2 border-solid bg-transparent",
1152
- "text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
1153
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
1154
- "data-[expanded]:bg-transparent data-[expanded]:text-[var(--color-hover)] data-[expanded]:border-[var(--color-hover)]",
1155
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
1156
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
1157
- "data-[selected]:hover:text-[var(--color-hover)] data-[selected]:hover:border-transparent",
1158
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]"
1159
- ],
1160
- // --- Header ---
1161
- header: [
1162
- "bg-transparent border-2 border-solid",
1163
- "text-[var(--color-button-header-fg)] border-[var(--color-button-header-border)]",
1164
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
1165
- // selected
1166
- "data-[selected]:bg-[var(--color-button-header-bg-selected)]",
1167
- "data-[selected]:text-[var(--color-button-header-fg-selected)] data-[selected]:border-transparent data-[selected]:border-0",
1168
- "data-[selected]:hover:bg-[var(--color-button-header-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
1169
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
1170
- // selected + highlighted
1171
- "data-[selected]:data-[highlighted]:bg-[var(--color-button-header-bg-highlighted)]",
1172
- "data-[selected]:data-[highlighted]:text-[var(--color-button-header-fg-highlighted)]",
1173
- "data-[selected]:data-[highlighted]:border-transparent data-[selected]:data-[highlighted]:border-0",
1174
- "data-[selected]:data-[highlighted]:hover:bg-[var(--color-button-header-bg-highlighted)]",
1175
- "data-[selected]:data-[highlighted]:hover:text-[var(--color-hover)]",
1176
- "data-[selected]:data-[highlighted]:data-[expanded]:text-[var(--color-hover)]"
1177
- ],
1178
- // --- Hero ---
1179
- hero: [
1180
- "bg-[var(--color-button-hero-bg)] text-[var(--color-button-hero-fg)]",
1181
- "hover:bg-[var(--color-button-hero-bg-hover)] hover:text-[var(--color-button-hero-fg-hover)]",
1182
- "data-[selected]:bg-[var(--color-button-hero-bg-selected)] data-[selected]:text-[var(--color-button-hero-fg-selected)]",
1183
- "data-[selected]:hover:bg-[var(--color-button-hero-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
1184
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]"
1185
- ],
1186
- // --- Segmented ---
1187
- segmented: [
1188
- "bg-transparent border-2 border-solid rounded-none",
1189
- "text-[var(--color-button-segmented-fg)] border-[var(--color-selected-control-bg)]",
1190
- "hover:text-[var(--color-hover)]",
1191
- // selected
1192
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
1193
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-selected-control-text)]",
1194
- // border collapse: hide right border except when selected; first/last get rounded
1195
- "[&:not(:last-child)]:border-r-0 data-[selected]:[&:not(:last-child)]:border-r-2",
1196
- "data-[selected]+*:border-l-0",
1197
- "first:rounded-l-md last:rounded-r-md"
1198
- ],
1199
- // --- Plain ---
1200
- plain: [
1201
- "bg-transparent text-inherit border-none",
1202
- "hover:bg-transparent"
1203
- ],
1204
- // --- Subtle ---
1205
- subtle: [
1206
- "bg-[var(--color-button-subtle-bg)] text-[var(--color-button-subtle-fg)]",
1207
- "hover:bg-[var(--color-button-subtle-bg)] hover:text-[var(--color-hover)]",
1208
- "disabled:bg-[var(--color-button-subtle-bg)] disabled:text-[var(--color-button-subtle-fg)]"
1209
- ],
1210
- // --- Link ---
1211
- link: [
1212
- "bg-transparent text-[var(--color-link-primary)] border-none font-normal",
1213
- "px-0 h-auto",
1214
- "hover:bg-transparent hover:text-[var(--color-link-primary-hover)]",
1215
- "disabled:text-[var(--color-text-secondary)]"
1216
- ],
1217
- // --- Icon Secondary ---
1218
- icon_secondary: [
1219
- "bg-transparent text-[var(--color-icon-secondary)] border-none",
1220
- "hover:text-[var(--color-hover)]",
1221
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
1222
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
1223
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
1224
- "data-[expanded]:text-[var(--color-hover)]"
1225
- ],
1226
- // --- Icon Background ---
1227
- icon_background: [
1228
- "bg-[var(--color-button-icon-background-bg)] text-[var(--color-icon-secondary)] border-none",
1229
- "hover:text-[var(--color-hover)]",
1230
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
1231
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
1232
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
1233
- "data-[expanded]:text-[var(--color-hover)]"
1234
- ],
1235
- // --- Pagination ---
1236
- pagination: [
1237
- "border-2 border-solid bg-transparent",
1238
- "text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
1239
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
1240
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
1241
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
1242
- "data-[selected]:hover:text-[var(--color-selected-control-text)] data-[selected]:hover:border-transparent"
1243
- ]
1244
- },
1245
- size: {
1246
- "2xs": "px-2 h-5 min-w-5 text-xs rounded-sm gap-1",
1247
- xs: "px-2 h-6 min-w-6 text-sm rounded-sm gap-1",
1248
- sm: "px-3 h-8 min-w-8 text-sm rounded-md gap-1",
1249
- md: "px-3 h-10 min-w-10 text-base rounded-md gap-2"
1250
- }
1251
- },
1252
- defaultVariants: {
1253
- variant: "solid",
1254
- size: "md"
1255
- }
1256
- }
1257
- );
977
+ var SpinnerFrame = core.styled(core.View, {
978
+ name: "ButtonSpinner",
979
+ render: /* @__PURE__ */ jsxRuntime.jsx("span", {}),
980
+ width: 16,
981
+ height: 16,
982
+ borderRadius: 1e3,
983
+ borderWidth: 2,
984
+ borderColor: "currentColor",
985
+ borderBottomColor: "transparent",
986
+ borderLeftColor: "transparent"
987
+ });
1258
988
  function Spinner({ className }) {
1259
989
  return /* @__PURE__ */ jsxRuntime.jsx(
1260
- "span",
990
+ SpinnerFrame,
1261
991
  {
1262
- className: cn(
1263
- "inline-block h-4 w-4 animate-spin rounded-full",
1264
- "border-2 border-current border-b-transparent border-l-transparent",
1265
- className
1266
- ),
1267
992
  role: "status",
1268
- "aria-label": "Loading"
993
+ "aria-label": "Loading",
994
+ className: [
995
+ "animate-spin",
996
+ className
997
+ ].filter(Boolean).join(" ")
1269
998
  }
1270
999
  );
1271
1000
  }
1001
+ var ButtonFrame = core.styled(core.View, {
1002
+ name: "LuxButton",
1003
+ render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" }),
1004
+ role: "button",
1005
+ tabIndex: 0,
1006
+ cursor: "pointer",
1007
+ userSelect: "none",
1008
+ display: "inline-flex",
1009
+ alignItems: "center",
1010
+ justifyContent: "center",
1011
+ gap: 0,
1012
+ overflow: "hidden",
1013
+ borderRadius: 6,
1014
+ // Whitespace nowrap via className since hanzogui doesn't have a direct token
1015
+ // Transition via className
1016
+ variants: {
1017
+ size: {
1018
+ "2xs": { paddingHorizontal: 8, height: 20, minWidth: 20, fontSize: 12, borderRadius: 4, gap: 4 },
1019
+ xs: { paddingHorizontal: 8, height: 24, minWidth: 24, fontSize: 14, borderRadius: 4, gap: 4 },
1020
+ sm: { paddingHorizontal: 12, height: 32, minWidth: 32, fontSize: 14, borderRadius: 6, gap: 4 },
1021
+ md: { paddingHorizontal: 12, height: 40, minWidth: 40, fontSize: 16, borderRadius: 6, gap: 8 }
1022
+ },
1023
+ disabled: {
1024
+ true: {
1025
+ opacity: 0.2,
1026
+ cursor: "not-allowed",
1027
+ pointerEvents: "none"
1028
+ }
1029
+ }
1030
+ },
1031
+ defaultVariants: {
1032
+ size: "md"
1033
+ }
1034
+ });
1035
+ var VARIANT_CLASSES2 = {
1036
+ solid: [
1037
+ "bg-[var(--color-button-solid-bg)] text-[var(--color-button-solid-text)]",
1038
+ "hover:bg-[var(--color-hover)]",
1039
+ "data-[expanded]:bg-[var(--color-hover)]"
1040
+ ].join(" "),
1041
+ solid_danger: [
1042
+ "bg-red-600 text-[var(--color-button-solid-text)]",
1043
+ "hover:bg-red-500",
1044
+ "data-[expanded]:bg-red-500"
1045
+ ].join(" "),
1046
+ outline: [
1047
+ "border-2 border-solid bg-transparent",
1048
+ "text-[var(--color-button-outline-fg)] border-[var(--color-button-outline-fg)]",
1049
+ "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]"
1050
+ ].join(" "),
1051
+ outline_danger: [
1052
+ "border-2 border-solid bg-transparent",
1053
+ "text-red-600 border-red-600",
1054
+ "hover:bg-transparent hover:text-red-500 hover:border-red-500"
1055
+ ].join(" "),
1056
+ dropdown: [
1057
+ "border-2 border-solid bg-transparent",
1058
+ "text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
1059
+ "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
1060
+ "data-[expanded]:bg-transparent data-[expanded]:text-[var(--color-hover)] data-[expanded]:border-[var(--color-hover)]",
1061
+ "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
1062
+ "data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
1063
+ "data-[selected]:hover:text-[var(--color-hover)] data-[selected]:hover:border-transparent",
1064
+ "data-[selected]:data-[expanded]:text-[var(--color-hover)]"
1065
+ ].join(" "),
1066
+ header: [
1067
+ "bg-transparent border-2 border-solid",
1068
+ "text-[var(--color-button-header-fg)] border-[var(--color-button-header-border)]",
1069
+ "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
1070
+ "data-[selected]:bg-[var(--color-button-header-bg-selected)]",
1071
+ "data-[selected]:text-[var(--color-button-header-fg-selected)] data-[selected]:border-transparent data-[selected]:border-0",
1072
+ "data-[selected]:hover:bg-[var(--color-button-header-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
1073
+ "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
1074
+ "data-[selected]:data-[highlighted]:bg-[var(--color-button-header-bg-highlighted)]",
1075
+ "data-[selected]:data-[highlighted]:text-[var(--color-button-header-fg-highlighted)]",
1076
+ "data-[selected]:data-[highlighted]:border-transparent data-[selected]:data-[highlighted]:border-0",
1077
+ "data-[selected]:data-[highlighted]:hover:bg-[var(--color-button-header-bg-highlighted)]",
1078
+ "data-[selected]:data-[highlighted]:hover:text-[var(--color-hover)]",
1079
+ "data-[selected]:data-[highlighted]:data-[expanded]:text-[var(--color-hover)]"
1080
+ ].join(" "),
1081
+ hero: [
1082
+ "bg-[var(--color-button-hero-bg)] text-[var(--color-button-hero-fg)]",
1083
+ "hover:bg-[var(--color-button-hero-bg-hover)] hover:text-[var(--color-button-hero-fg-hover)]",
1084
+ "data-[selected]:bg-[var(--color-button-hero-bg-selected)] data-[selected]:text-[var(--color-button-hero-fg-selected)]",
1085
+ "data-[selected]:hover:bg-[var(--color-button-hero-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
1086
+ "data-[selected]:data-[expanded]:text-[var(--color-hover)]"
1087
+ ].join(" "),
1088
+ segmented: [
1089
+ "bg-transparent border-2 border-solid rounded-none",
1090
+ "text-[var(--color-button-segmented-fg)] border-[var(--color-selected-control-bg)]",
1091
+ "hover:text-[var(--color-hover)]",
1092
+ "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
1093
+ "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-selected-control-text)]",
1094
+ "[&:not(:last-child)]:border-r-0 data-[selected]:[&:not(:last-child)]:border-r-2",
1095
+ "data-[selected]+*:border-l-0",
1096
+ "first:rounded-l-md last:rounded-r-md"
1097
+ ].join(" "),
1098
+ plain: "bg-transparent text-inherit border-none hover:bg-transparent",
1099
+ subtle: [
1100
+ "bg-[var(--color-button-subtle-bg)] text-[var(--color-button-subtle-fg)]",
1101
+ "hover:bg-[var(--color-button-subtle-bg)] hover:text-[var(--color-hover)]",
1102
+ "disabled:bg-[var(--color-button-subtle-bg)] disabled:text-[var(--color-button-subtle-fg)]"
1103
+ ].join(" "),
1104
+ link: [
1105
+ "bg-transparent text-[var(--color-link-primary)] border-none font-normal",
1106
+ "px-0 h-auto",
1107
+ "hover:bg-transparent hover:text-[var(--color-link-primary-hover)]",
1108
+ "disabled:text-[var(--color-text-secondary)]"
1109
+ ].join(" "),
1110
+ icon_secondary: [
1111
+ "bg-transparent text-[var(--color-icon-secondary)] border-none",
1112
+ "hover:text-[var(--color-hover)]",
1113
+ "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
1114
+ "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
1115
+ "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
1116
+ "data-[expanded]:text-[var(--color-hover)]"
1117
+ ].join(" "),
1118
+ icon_background: [
1119
+ "bg-[var(--color-button-icon-background-bg)] text-[var(--color-icon-secondary)] border-none",
1120
+ "hover:text-[var(--color-hover)]",
1121
+ "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
1122
+ "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
1123
+ "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
1124
+ "data-[expanded]:text-[var(--color-hover)]"
1125
+ ].join(" "),
1126
+ pagination: [
1127
+ "border-2 border-solid bg-transparent",
1128
+ "text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
1129
+ "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
1130
+ "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
1131
+ "data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
1132
+ "data-[selected]:hover:text-[var(--color-selected-control-text)] data-[selected]:hover:border-transparent"
1133
+ ].join(" ")
1134
+ };
1135
+ var BASE_CLASSES2 = "font-semibold whitespace-nowrap transition-colors duration-150";
1136
+ var SP = 4;
1137
+ function buildShimStyle(props) {
1138
+ const s = { ...props.style };
1139
+ if (props.mt !== void 0) s.marginTop = typeof props.mt === "number" ? `${props.mt * SP}px` : props.mt;
1140
+ if (props.ml !== void 0) s.marginLeft = typeof props.ml === "number" ? `${props.ml * SP}px` : props.ml;
1141
+ if (props.mr !== void 0) s.marginRight = typeof props.mr === "number" ? `${props.mr * SP}px` : props.mr;
1142
+ if (props.px !== void 0) {
1143
+ const v = typeof props.px === "number" ? `${props.px * SP}px` : props.px;
1144
+ s.paddingLeft = v;
1145
+ s.paddingRight = v;
1146
+ }
1147
+ if (props.py !== void 0) {
1148
+ const v = typeof props.py === "number" ? `${props.py * SP}px` : props.py;
1149
+ s.paddingTop = v;
1150
+ s.paddingBottom = v;
1151
+ }
1152
+ if (props.fontWeight !== void 0) s.fontWeight = props.fontWeight;
1153
+ if (props.gap !== void 0) s.gap = typeof props.gap === "number" ? `${props.gap * SP}px` : props.gap;
1154
+ if (props.flexShrink !== void 0) s.flexShrink = props.flexShrink;
1155
+ if (props.columnGap !== void 0) s.columnGap = typeof props.columnGap === "number" ? `${props.columnGap * SP}px` : props.columnGap;
1156
+ if (props.gridColumn !== void 0) s.gridColumn = typeof props.gridColumn === "number" ? String(props.gridColumn) : props.gridColumn;
1157
+ if (props.gridRow) s.gridRow = props.gridRow;
1158
+ if (props.justifySelf) s.justifySelf = props.justifySelf;
1159
+ if (props.alignSelf) s.alignSelf = props.alignSelf;
1160
+ if (props.h) s.height = props.h;
1161
+ if (props.w) s.width = props.w;
1162
+ if (props.display) s.display = props.display;
1163
+ if (props.borderBottomRightRadius !== void 0) s.borderBottomRightRadius = typeof props.borderBottomRightRadius === "number" ? `${props.borderBottomRightRadius}px` : props.borderBottomRightRadius;
1164
+ if (props.borderTopRightRadius !== void 0) s.borderTopRightRadius = typeof props.borderTopRightRadius === "number" ? `${props.borderTopRightRadius}px` : props.borderTopRightRadius;
1165
+ return Object.keys(s).length > 0 ? s : void 0;
1166
+ }
1272
1167
  var Button = React29__namespace.forwardRef(
1273
1168
  function Button2(props, ref) {
1274
1169
  const {
1275
1170
  className,
1276
- variant,
1277
- size,
1171
+ variant = "solid",
1172
+ size = "md",
1278
1173
  asChild = false,
1279
1174
  loading = false,
1280
1175
  loadingText,
@@ -1286,57 +1181,48 @@ var Button = React29__namespace.forwardRef(
1286
1181
  children,
1287
1182
  style: styleProp,
1288
1183
  // Strip Chakra style props
1289
- mt: _mt,
1290
- ml: _ml,
1291
- mr: _mr,
1292
- px: _px,
1293
- py: _py,
1294
- fontWeight: _fontWeight,
1295
- gap: _gap,
1296
- flexShrink: _flexShrink,
1297
- columnGap: _columnGap,
1298
- gridColumn: _gridColumn,
1299
- gridRow: _gridRow,
1300
- justifySelf: _justifySelf,
1301
- alignSelf: _alignSelf,
1184
+ mt,
1185
+ ml,
1186
+ mr,
1187
+ px,
1188
+ py,
1189
+ fontWeight,
1190
+ gap,
1191
+ flexShrink,
1192
+ columnGap,
1193
+ gridColumn,
1194
+ gridRow,
1195
+ justifySelf,
1196
+ alignSelf,
1302
1197
  textStyle: _textStyle,
1303
- h: _h,
1304
- w: _w,
1305
- display: _display,
1306
- borderBottomRightRadius: _bbrr,
1307
- borderTopRightRadius: _btrr,
1198
+ h,
1199
+ w,
1200
+ display,
1201
+ borderBottomRightRadius,
1202
+ borderTopRightRadius,
1308
1203
  ...rest
1309
1204
  } = props;
1310
- const SP = 4;
1311
- const shimStyle = { ...styleProp };
1312
- if (_mt !== void 0) shimStyle.marginTop = typeof _mt === "number" ? `${_mt * SP}px` : _mt;
1313
- if (_ml !== void 0) shimStyle.marginLeft = typeof _ml === "number" ? `${_ml * SP}px` : _ml;
1314
- if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * SP}px` : _mr;
1315
- if (_px !== void 0) {
1316
- const v = typeof _px === "number" ? `${_px * SP}px` : _px;
1317
- shimStyle.paddingLeft = v;
1318
- shimStyle.paddingRight = v;
1319
- }
1320
- if (_py !== void 0) {
1321
- const v = typeof _py === "number" ? `${_py * SP}px` : _py;
1322
- shimStyle.paddingTop = v;
1323
- shimStyle.paddingBottom = v;
1324
- }
1325
- if (_fontWeight !== void 0) shimStyle.fontWeight = _fontWeight;
1326
- if (_gap !== void 0) shimStyle.gap = typeof _gap === "number" ? `${_gap * SP}px` : _gap;
1327
- if (_flexShrink !== void 0) shimStyle.flexShrink = _flexShrink;
1328
- if (_columnGap !== void 0) shimStyle.columnGap = typeof _columnGap === "number" ? `${_columnGap * SP}px` : _columnGap;
1329
- if (_gridColumn !== void 0) shimStyle.gridColumn = typeof _gridColumn === "number" ? String(_gridColumn) : _gridColumn;
1330
- if (_gridRow) shimStyle.gridRow = _gridRow;
1331
- if (_justifySelf) shimStyle.justifySelf = _justifySelf;
1332
- if (_alignSelf) shimStyle.alignSelf = _alignSelf;
1333
- if (_h) shimStyle.height = _h;
1334
- if (_w) shimStyle.width = _w;
1335
- if (_display) shimStyle.display = _display;
1336
- if (_bbrr !== void 0) shimStyle.borderBottomRightRadius = typeof _bbrr === "number" ? `${_bbrr}px` : _bbrr;
1337
- if (_btrr !== void 0) shimStyle.borderTopRightRadius = typeof _btrr === "number" ? `${_btrr}px` : _btrr;
1338
- const mergedStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
1339
- const Comp = asChild ? reactSlot.Slot : "button";
1205
+ const mergedStyle = buildShimStyle({
1206
+ style: styleProp,
1207
+ mt,
1208
+ ml,
1209
+ mr,
1210
+ px,
1211
+ py,
1212
+ fontWeight,
1213
+ gap,
1214
+ flexShrink,
1215
+ columnGap,
1216
+ gridColumn,
1217
+ gridRow,
1218
+ justifySelf,
1219
+ alignSelf,
1220
+ h,
1221
+ w,
1222
+ display,
1223
+ borderBottomRightRadius,
1224
+ borderTopRightRadius
1225
+ });
1340
1226
  const dataAttrs = {};
1341
1227
  if (expanded) dataAttrs["data-expanded"] = true;
1342
1228
  if (selected) dataAttrs["data-selected"] = true;
@@ -1345,15 +1231,19 @@ var Button = React29__namespace.forwardRef(
1345
1231
  const isDisabled = !loadingSkeleton && (loading || disabled);
1346
1232
  const inner = loading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1347
1233
  /* @__PURE__ */ jsxRuntime.jsx(Spinner, {}),
1348
- loadingText != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2", children: loadingText })
1234
+ loadingText != null && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { marginLeft: 8 }, children: loadingText })
1349
1235
  ] }) : children;
1236
+ const variantClass = VARIANT_CLASSES2[variant] ?? VARIANT_CLASSES2.solid;
1237
+ const combinedClassName = [BASE_CLASSES2, variantClass, className].filter(Boolean).join(" ");
1350
1238
  const button = /* @__PURE__ */ jsxRuntime.jsx(
1351
- Comp,
1239
+ ButtonFrame,
1352
1240
  {
1353
1241
  ref,
1354
- className: cn(buttonVariants({ variant, size }), className),
1355
- style: mergedStyle,
1242
+ size,
1356
1243
  disabled: isDisabled || void 0,
1244
+ asChild: asChild || void 0,
1245
+ className: combinedClassName,
1246
+ style: mergedStyle,
1357
1247
  ...dataAttrs,
1358
1248
  ...rest,
1359
1249
  children: inner
@@ -1365,6 +1255,17 @@ var Button = React29__namespace.forwardRef(
1365
1255
  return button;
1366
1256
  }
1367
1257
  );
1258
+ var SIZE_CLASSES3 = {
1259
+ "2xs": "px-2 h-5 min-w-5 text-xs rounded-sm gap-1",
1260
+ xs: "px-2 h-6 min-w-6 text-sm rounded-sm gap-1",
1261
+ sm: "px-3 h-8 min-w-8 text-sm rounded-md gap-1",
1262
+ md: "px-3 h-10 min-w-10 text-base rounded-md gap-2"
1263
+ };
1264
+ function buttonVariants(opts) {
1265
+ const v = opts?.variant ?? "solid";
1266
+ const s = opts?.size ?? "md";
1267
+ return [BASE_CLASSES2, VARIANT_CLASSES2[v] ?? "", SIZE_CLASSES3[s] ?? ""].filter(Boolean).join(" ");
1268
+ }
1368
1269
  var ButtonGroup = React29__namespace.forwardRef(
1369
1270
  function ButtonGroup2(props, ref) {
1370
1271
  const { className, ...rest } = props;
@@ -1372,7 +1273,7 @@ var ButtonGroup = React29__namespace.forwardRef(
1372
1273
  "div",
1373
1274
  {
1374
1275
  ref,
1375
- className: cn("inline-flex", className),
1276
+ className: ["inline-flex", className].filter(Boolean).join(" "),
1376
1277
  role: "group",
1377
1278
  ...rest
1378
1279
  }
@@ -1413,11 +1314,11 @@ var ButtonGroupRadio = React29__namespace.forwardRef(
1413
1314
  "div",
1414
1315
  {
1415
1316
  ref,
1416
- className: cn(
1317
+ className: [
1417
1318
  "inline-flex gap-0",
1418
- equalWidth && "grid",
1319
+ equalWidth ? "grid" : "",
1419
1320
  className
1420
- ),
1321
+ ].filter(Boolean).join(" "),
1421
1322
  style: equalWidth ? { gridTemplateColumns: `repeat(${childrenLength}, 1fr)` } : void 0,
1422
1323
  role: "group",
1423
1324
  ...rest,
@@ -1480,7 +1381,7 @@ var CheckboxGroupBase = React29__namespace.forwardRef(
1480
1381
  }
1481
1382
  );
1482
1383
  var CheckboxGroup2 = CheckboxGroupBase;
1483
- var SIZE_CLASSES2 = {
1384
+ var SIZE_CLASSES4 = {
1484
1385
  sm: {
1485
1386
  root: "gap-1.5",
1486
1387
  control: "h-3.5 w-3.5 rounded-sm",
@@ -1590,7 +1491,7 @@ var CheckboxBase = React29__namespace.forwardRef(
1590
1491
  },
1591
1492
  [readOnly, isControlled, isInGroup, group, value, onCheckedChange, onChange]
1592
1493
  );
1593
- const sizeClasses2 = SIZE_CLASSES2[size];
1494
+ const sizeClasses2 = SIZE_CLASSES4[size];
1594
1495
  return /* @__PURE__ */ jsxRuntime.jsxs(
1595
1496
  "label",
1596
1497
  {
@@ -1666,7 +1567,7 @@ function stripUtmParams(url) {
1666
1567
  return url;
1667
1568
  }
1668
1569
  }
1669
- var VARIANT_CLASSES2 = {
1570
+ var VARIANT_CLASSES3 = {
1670
1571
  primary: cn(
1671
1572
  "text-[var(--color-link-primary)]",
1672
1573
  "hover:no-underline hover:text-[var(--color-link-primary-hover)]",
@@ -1706,7 +1607,7 @@ var VARIANT_CLASSES2 = {
1706
1607
  "data-[hover]:no-underline"
1707
1608
  )
1708
1609
  };
1709
- var BASE_CLASSES = "inline-flex items-center gap-0 cursor-pointer data-[disabled]:cursor-not-allowed";
1610
+ var BASE_CLASSES3 = "inline-flex items-center gap-0 cursor-pointer data-[disabled]:cursor-not-allowed";
1710
1611
  var LinkExternalIcon = ({ color }) => /* @__PURE__ */ jsxRuntime.jsx(
1711
1612
  ArrowIcon,
1712
1613
  {
@@ -1775,7 +1676,7 @@ var Link = React29__namespace.default.forwardRef(
1775
1676
  if (_minW !== void 0) shimStyle.minWidth = typeof _minW === "number" ? `${_minW * SPACING}px` : _minW;
1776
1677
  if (_justifyContent) shimStyle.justifyContent = _justifyContent;
1777
1678
  if (_position) shimStyle.position = _position;
1778
- const linkClasses = cn(BASE_CLASSES, VARIANT_CLASSES2[variant], className);
1679
+ const linkClasses = cn(BASE_CLASSES3, VARIANT_CLASSES3[variant], className);
1779
1680
  const linkStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
1780
1681
  if (external) {
1781
1682
  const processedHref = typeof href === "string" ? stripUtmParams(href) : href;
@@ -1864,8 +1765,8 @@ var LinkOverlay = React29__namespace.default.forwardRef(
1864
1765
  ...rest
1865
1766
  } = props;
1866
1767
  const overlayClasses = cn(
1867
- BASE_CLASSES,
1868
- VARIANT_CLASSES2[variant],
1768
+ BASE_CLASSES3,
1769
+ VARIANT_CLASSES3[variant],
1869
1770
  // Static positioning with a ::before pseudo-element that covers the LinkBox
1870
1771
  "static",
1871
1772
  'before:absolute before:inset-0 before:z-0 before:content-[""]',
@@ -2063,9 +1964,9 @@ function BackToButton({ onClick }) {
2063
1964
  }
2064
1965
  );
2065
1966
  }
2066
- var DialogContext = React29__namespace.createContext({ size: "md" });
2067
- function useDialogContext() {
2068
- return React29__namespace.useContext(DialogContext);
1967
+ var DialogSizeContext = React29__namespace.createContext({ size: "md" });
1968
+ function useDialogSizeContext() {
1969
+ return React29__namespace.useContext(DialogSizeContext);
2069
1970
  }
2070
1971
  var CONTENT_SIZE_MAP = {
2071
1972
  sm: "max-w-[400px]",
@@ -2095,7 +1996,7 @@ var DialogRoot = ({
2095
1996
  onOpenChange,
2096
1997
  size = "md",
2097
1998
  modal = true
2098
- // motionPreset is intentionally unused kept for API compat
1999
+ // motionPreset is intentionally unused -- kept for API compat
2099
2000
  }) => {
2100
2001
  const handleOpenChange = React29__namespace.useCallback(
2101
2002
  (nextOpen) => {
@@ -2104,8 +2005,8 @@ var DialogRoot = ({
2104
2005
  [onOpenChange]
2105
2006
  );
2106
2007
  const ctx = React29__namespace.useMemo(() => ({ size }), [size]);
2107
- return /* @__PURE__ */ jsxRuntime.jsx(DialogContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
2108
- RadixDialog__namespace.Root,
2008
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogSizeContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
2009
+ dialog.Dialog,
2109
2010
  {
2110
2011
  open,
2111
2012
  defaultOpen,
@@ -2118,8 +2019,8 @@ var DialogRoot = ({
2118
2019
  var DialogContent = React29__namespace.forwardRef(function DialogContent2(props, ref) {
2119
2020
  const {
2120
2021
  children,
2121
- portalled = true,
2122
- portalRef,
2022
+ portalled: _portalled = true,
2023
+ portalRef: _portalRef,
2123
2024
  backdrop = true,
2124
2025
  className,
2125
2026
  paddingTop: _paddingTop,
@@ -2130,21 +2031,12 @@ var DialogContent = React29__namespace.forwardRef(function DialogContent2(props,
2130
2031
  ...styleProp,
2131
2032
  ..._paddingTop !== void 0 ? { paddingTop: typeof _paddingTop === "number" ? `${_paddingTop * 4}px` : _paddingTop } : {}
2132
2033
  };
2133
- const { size } = useDialogContext();
2134
- let portalProps;
2135
- if (!portalled) {
2136
- portalProps = { container: void 0 };
2137
- } else if (portalRef) {
2138
- portalProps = { container: portalRef.current };
2139
- } else {
2140
- portalProps = {};
2141
- }
2142
- const Wrapper = portalled ? RadixDialog__namespace.Portal : React29__namespace.Fragment;
2143
- const wrapperProps = portalled ? portalProps : {};
2144
- return /* @__PURE__ */ jsxRuntime.jsxs(Wrapper, { ...wrapperProps, children: [
2034
+ const { size } = useDialogSizeContext();
2035
+ return /* @__PURE__ */ jsxRuntime.jsxs(dialog.Dialog.Portal, { children: [
2145
2036
  backdrop && /* @__PURE__ */ jsxRuntime.jsx(
2146
- RadixDialog__namespace.Overlay,
2037
+ dialog.Dialog.Overlay,
2147
2038
  {
2039
+ unstyled: true,
2148
2040
  className: "fixed inset-0 z-[1400] bg-black/80"
2149
2041
  }
2150
2042
  ),
@@ -2157,9 +2049,10 @@ var DialogContent = React29__namespace.forwardRef(function DialogContent2(props,
2157
2049
  "overflow-hidden"
2158
2050
  ),
2159
2051
  children: /* @__PURE__ */ jsxRuntime.jsx(
2160
- RadixDialog__namespace.Content,
2052
+ dialog.Dialog.Content,
2161
2053
  {
2162
2054
  ref,
2055
+ unstyled: true,
2163
2056
  className: cn(
2164
2057
  // Base content styles
2165
2058
  "relative flex flex-col w-full p-6 outline-none text-base",
@@ -2182,7 +2075,7 @@ var DialogContent = React29__namespace.forwardRef(function DialogContent2(props,
2182
2075
  });
2183
2076
  var DialogCloseTrigger = React29__namespace.forwardRef(function DialogCloseTrigger2(props, ref) {
2184
2077
  const { className, ...rest } = props;
2185
- return /* @__PURE__ */ jsxRuntime.jsx(RadixDialog__namespace.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { ref, className, ...rest, children: props.children }) });
2078
+ return /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { ref, className, ...rest, children: props.children }) });
2186
2079
  });
2187
2080
  var DialogHeader = React29__namespace.forwardRef(function DialogHeader2(props, ref) {
2188
2081
  const { startElement: startElementProp, onBackToClick, className, children, ...rest } = props;
@@ -2199,8 +2092,9 @@ var DialogHeader = React29__namespace.forwardRef(function DialogHeader2(props, r
2199
2092
  children: [
2200
2093
  startElement,
2201
2094
  /* @__PURE__ */ jsxRuntime.jsx(
2202
- RadixDialog__namespace.Title,
2095
+ dialog.Dialog.Title,
2203
2096
  {
2097
+ unstyled: true,
2204
2098
  className: cn(
2205
2099
  "text-base lg:text-lg font-medium",
2206
2100
  "whitespace-nowrap overflow-hidden text-ellipsis"
@@ -2240,11 +2134,11 @@ var DialogFooter = React29__namespace.forwardRef(function DialogFooter2({ classN
2240
2134
  }
2241
2135
  );
2242
2136
  });
2243
- var DialogBackdrop = RadixDialog__namespace.Overlay;
2244
- var DialogTitle = RadixDialog__namespace.Title;
2245
- var DialogDescription = RadixDialog__namespace.Description;
2246
- var DialogTrigger = RadixDialog__namespace.Trigger;
2247
- var DialogActionTrigger = RadixDialog__namespace.Close;
2137
+ var DialogBackdrop = dialog.Dialog.Overlay;
2138
+ var DialogTitle = dialog.Dialog.Title;
2139
+ var DialogDescription = dialog.Dialog.Description;
2140
+ var DialogTrigger = dialog.Dialog.Trigger;
2141
+ var DialogActionTrigger = dialog.Dialog.Close;
2248
2142
  var DrawerPlacementContext = React29__namespace.createContext("right");
2249
2143
  var DrawerSizeContext = React29__namespace.createContext("md");
2250
2144
  var DrawerRoot = (props) => {
@@ -2293,7 +2187,7 @@ var PLACEMENT_CLASSES = {
2293
2187
  "data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom"
2294
2188
  ].join(" ")
2295
2189
  };
2296
- var SIZE_CLASSES3 = {
2190
+ var SIZE_CLASSES5 = {
2297
2191
  right: { xs: "w-60", sm: "w-80", md: "w-96", lg: "w-[480px]", xl: "w-[640px]", full: "w-screen" },
2298
2192
  left: { xs: "w-60", sm: "w-80", md: "w-96", lg: "w-[480px]", xl: "w-[640px]", full: "w-screen" },
2299
2193
  top: { xs: "h-40", sm: "h-60", md: "h-80", lg: "h-96", xl: "h-[480px]", full: "h-screen" },
@@ -2322,7 +2216,7 @@ var DrawerContent = React29__namespace.forwardRef(
2322
2216
  className: cn(
2323
2217
  "fixed z-50 flex flex-col bg-[var(--color-drawer-bg)] shadow-[var(--shadow-drawer)] duration-300",
2324
2218
  PLACEMENT_CLASSES[placement] ?? PLACEMENT_CLASSES.right,
2325
- SIZE_CLASSES3[placement]?.[size] ?? SIZE_CLASSES3.right?.md,
2219
+ SIZE_CLASSES5[placement]?.[size] ?? SIZE_CLASSES5.right?.md,
2326
2220
  className
2327
2221
  ),
2328
2222
  ...rest,
@@ -2574,92 +2468,100 @@ var Field = React29__namespace.forwardRef(
2574
2468
  );
2575
2469
  }
2576
2470
  );
2577
- var LEVEL_TAG = {
2578
- "1": "h1",
2579
- "2": "h2",
2580
- "3": "h3"
2581
- };
2471
+ var LEVEL_TAG = { "1": "h1", "2": "h2", "3": "h3" };
2582
2472
  var LEVEL_CLASSES = {
2583
2473
  "1": "text-[18px] leading-[24px] font-medium lg:text-[32px] lg:leading-[40px] lg:tracking-[-0.5px]",
2584
2474
  "2": "text-[16px] leading-[24px] font-medium lg:text-[24px] lg:leading-[32px]",
2585
2475
  "3": "text-[14px] leading-[20px] font-semibold lg:text-[18px] lg:leading-[24px] lg:font-medium"
2586
2476
  };
2587
- var BASE_CLASSES2 = "font-heading text-heading";
2477
+ var BASE_CLASSES4 = "font-heading text-heading";
2588
2478
  var Heading = React29__namespace.default.forwardRef(
2589
2479
  function Heading2({ level, className, mb, size: _size, style: styleProp, ...rest }, ref) {
2590
2480
  const Tag3 = level ? LEVEL_TAG[level] : "h2";
2591
2481
  const levelClasses = level ? LEVEL_CLASSES[level] : void 0;
2592
- const shimStyle = { ...styleProp };
2593
- if (mb !== void 0) shimStyle.marginBottom = typeof mb === "number" ? `${mb * 4}px` : mb;
2482
+ const mergedStyle = mb !== void 0 ? { ...styleProp, marginBottom: typeof mb === "number" ? `${mb * 4}px` : mb } : styleProp;
2594
2483
  return /* @__PURE__ */ jsxRuntime.jsx(
2595
2484
  Tag3,
2596
2485
  {
2597
2486
  ref,
2598
- className: cn(BASE_CLASSES2, levelClasses, className),
2599
- style: Object.keys(shimStyle).length > 0 ? shimStyle : void 0,
2487
+ className: cn(BASE_CLASSES4, levelClasses, className),
2488
+ style: mergedStyle,
2600
2489
  ...rest
2601
2490
  }
2602
2491
  );
2603
2492
  }
2604
2493
  );
2605
- var iconButtonVariants = classVarianceAuthority.cva(
2606
- // base
2607
- [
2608
- "inline-flex items-center justify-center",
2609
- "p-0 min-w-auto shrink-0",
2610
- "cursor-pointer border-0 bg-transparent",
2611
- "disabled:opacity-[var(--opacity-control-disabled,0.4)] disabled:cursor-not-allowed"
2612
- ],
2613
- {
2614
- variants: {
2615
- variant: {
2616
- plain: "bg-transparent text-inherit border-none hover:bg-transparent",
2617
- icon_secondary: [
2618
- "bg-transparent text-icon-secondary border-none",
2619
- "hover:text-hover",
2620
- "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
2621
- "data-[selected]:hover:text-hover",
2622
- "data-[expanded]:text-hover"
2623
- ],
2624
- icon_background: [
2625
- "bg-[var(--color-button-icon-background-bg)] text-icon-secondary border-none",
2626
- "hover:text-hover",
2627
- "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
2628
- "data-[selected]:hover:text-hover",
2629
- "data-[expanded]:text-hover"
2630
- ],
2631
- link: [
2632
- "bg-transparent text-link-primary border-none font-normal px-0 h-auto",
2633
- "hover:bg-transparent hover:text-link-primary-hover",
2634
- "disabled:text-text-secondary"
2635
- ],
2636
- dropdown: [
2637
- "border-2 border-solid bg-transparent",
2638
- "text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
2639
- "hover:bg-transparent hover:text-hover hover:border-hover",
2640
- "data-[expanded]:bg-transparent data-[expanded]:text-hover data-[expanded]:border-hover",
2641
- "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent",
2642
- "data-[selected]:hover:text-hover"
2643
- ],
2644
- pagination: [
2645
- "border-2 border-solid bg-transparent",
2646
- "text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
2647
- "hover:bg-transparent hover:text-hover hover:border-hover",
2648
- "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent"
2649
- ]
2650
- },
2651
- size: {
2652
- "2xs": "size-5 rounded-sm [&_svg]:size-5",
2653
- "2xs_alt": "size-5 rounded-sm [&_svg]:size-3",
2654
- md: "size-8 rounded-[var(--radius-base,8px)] [&_svg]:size-5"
2655
- }
2494
+ var IconButtonFrame = core.styled(core.View, {
2495
+ name: "LuxIconButton",
2496
+ render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" }),
2497
+ role: "button",
2498
+ cursor: "pointer",
2499
+ display: "inline-flex",
2500
+ alignItems: "center",
2501
+ justifyContent: "center",
2502
+ padding: 0,
2503
+ minWidth: "auto",
2504
+ flexShrink: 1,
2505
+ backgroundColor: "transparent",
2506
+ borderWidth: 0,
2507
+ variants: {
2508
+ size: {
2509
+ "2xs": { width: 20, height: 20, borderRadius: 4 },
2510
+ "2xs_alt": { width: 20, height: 20, borderRadius: 4 },
2511
+ md: { width: 32, height: 32, borderRadius: "var(--radius-base, 8px)" }
2656
2512
  },
2657
- defaultVariants: {
2658
- variant: "plain"
2513
+ disabled: {
2514
+ true: {
2515
+ opacity: 0.4,
2516
+ cursor: "not-allowed",
2517
+ pointerEvents: "none"
2518
+ }
2659
2519
  }
2660
2520
  }
2661
- );
2662
- var IconButton = React29__namespace.default.forwardRef(
2521
+ });
2522
+ var VARIANT_CLASSES4 = {
2523
+ plain: "bg-transparent text-inherit border-none hover:bg-transparent",
2524
+ icon_secondary: [
2525
+ "bg-transparent text-icon-secondary border-none",
2526
+ "hover:text-hover",
2527
+ "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
2528
+ "data-[selected]:hover:text-hover",
2529
+ "data-[expanded]:text-hover"
2530
+ ].join(" "),
2531
+ icon_background: [
2532
+ "bg-[var(--color-button-icon-background-bg)] text-icon-secondary border-none",
2533
+ "hover:text-hover",
2534
+ "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
2535
+ "data-[selected]:hover:text-hover",
2536
+ "data-[expanded]:text-hover"
2537
+ ].join(" "),
2538
+ link: [
2539
+ "bg-transparent text-link-primary border-none font-normal px-0 h-auto",
2540
+ "hover:bg-transparent hover:text-link-primary-hover",
2541
+ "disabled:text-text-secondary"
2542
+ ].join(" "),
2543
+ dropdown: [
2544
+ "border-2 border-solid bg-transparent",
2545
+ "text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
2546
+ "hover:bg-transparent hover:text-hover hover:border-hover",
2547
+ "data-[expanded]:bg-transparent data-[expanded]:text-hover data-[expanded]:border-hover",
2548
+ "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent",
2549
+ "data-[selected]:hover:text-hover"
2550
+ ].join(" "),
2551
+ pagination: [
2552
+ "border-2 border-solid bg-transparent",
2553
+ "text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
2554
+ "hover:bg-transparent hover:text-hover hover:border-hover",
2555
+ "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent"
2556
+ ].join(" ")
2557
+ };
2558
+ var ICON_SIZE_CLASSES = {
2559
+ "2xs": "[&_svg]:size-5",
2560
+ "2xs_alt": "[&_svg]:size-3",
2561
+ md: "[&_svg]:size-5"
2562
+ };
2563
+ var SP2 = 4;
2564
+ var IconButton = React29__namespace.forwardRef(
2663
2565
  function IconButton2(props, ref) {
2664
2566
  const {
2665
2567
  size,
@@ -2672,7 +2574,7 @@ var IconButton = React29__namespace.default.forwardRef(
2672
2574
  disabled,
2673
2575
  className,
2674
2576
  children,
2675
- as: Comp = "button",
2577
+ as: _as,
2676
2578
  style: styleProp,
2677
2579
  // Strip Chakra style props
2678
2580
  boxSize: _boxSize,
@@ -2685,37 +2587,47 @@ var IconButton = React29__namespace.default.forwardRef(
2685
2587
  _expanded,
2686
2588
  ...rest
2687
2589
  } = props;
2688
- const SP = 4;
2689
2590
  const shimStyle = { ...styleProp };
2690
2591
  if (_boxSize !== void 0) {
2691
- const bs = typeof _boxSize === "number" ? `${_boxSize * SP}px` : _boxSize;
2592
+ const bs = typeof _boxSize === "number" ? `${_boxSize * SP2}px` : _boxSize;
2692
2593
  shimStyle.width = bs;
2693
2594
  shimStyle.height = bs;
2694
2595
  }
2695
2596
  if (_color) shimStyle.color = _color;
2696
2597
  if (_px !== void 0) {
2697
- const v = typeof _px === "number" ? `${_px * SP}px` : _px;
2598
+ const v = typeof _px === "number" ? `${_px * SP2}px` : _px;
2698
2599
  shimStyle.paddingLeft = v;
2699
2600
  shimStyle.paddingRight = v;
2700
2601
  }
2701
2602
  if (_borderRadius) shimStyle.borderRadius = _borderRadius;
2702
- if (_ml !== void 0) shimStyle.marginLeft = typeof _ml === "number" ? `${_ml * SP}px` : _ml;
2703
- if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * SP}px` : _mr;
2704
- const mergedBtnStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
2603
+ if (_ml !== void 0) shimStyle.marginLeft = typeof _ml === "number" ? `${_ml * SP2}px` : _ml;
2604
+ if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * SP2}px` : _mr;
2605
+ const mergedStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
2606
+ const variantClass = VARIANT_CLASSES4[variant] ?? VARIANT_CLASSES4.plain;
2607
+ const iconSizeClass = size ? ICON_SIZE_CLASSES[size] ?? "" : "";
2608
+ const combinedClassName = [variantClass, iconSizeClass, className].filter(Boolean).join(" ");
2705
2609
  const button = /* @__PURE__ */ jsxRuntime.jsx(
2706
- Comp,
2610
+ IconButtonFrame,
2707
2611
  {
2708
2612
  ref,
2709
- type: Comp === "button" ? "button" : void 0,
2710
- disabled: !loadingSkeleton && (loading || disabled),
2711
- className: cn(iconButtonVariants({ variant, size }), className),
2712
- style: mergedBtnStyle,
2613
+ size,
2614
+ disabled: !loadingSkeleton && (loading || disabled) || void 0,
2615
+ render: _as ? React29__namespace.createElement(_as) : void 0,
2616
+ className: combinedClassName,
2617
+ style: mergedStyle,
2713
2618
  ...expanded ? { "data-expanded": true } : {},
2714
2619
  ...selected ? { "data-selected": true } : {},
2715
2620
  ...highlighted ? { "data-highlighted": true } : {},
2716
2621
  ...loadingSkeleton ? { "data-loading-skeleton": true } : {},
2717
2622
  ...rest,
2718
- children: loading ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block size-5 animate-spin rounded-full border-2 border-current border-b-transparent border-l-transparent" }) : children
2623
+ children: loading ? /* @__PURE__ */ jsxRuntime.jsx(
2624
+ "span",
2625
+ {
2626
+ className: "inline-block size-5 animate-spin rounded-full border-2 border-current border-b-transparent border-l-transparent",
2627
+ role: "status",
2628
+ "aria-label": "Loading"
2629
+ }
2630
+ ) : children
2719
2631
  }
2720
2632
  );
2721
2633
  if (loadingSkeleton) {
@@ -3531,8 +3443,7 @@ var PopoverRoot = (props) => {
3531
3443
  positioning,
3532
3444
  autoFocus = false,
3533
3445
  closeOnInteractOutside = true,
3534
- modal = false,
3535
- // lazyMount and unmountOnExit are handled via forceMount on Portal/Content
3446
+ // lazyMount and unmountOnExit are handled via keepChildrenMounted
3536
3447
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3537
3448
  lazyMount: _lazyMount,
3538
3449
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -3568,23 +3479,27 @@ var PopoverRoot = (props) => {
3568
3479
  const handleOpenChange = React29__namespace.useCallback((isOpen) => {
3569
3480
  onOpenChange?.({ open: isOpen });
3570
3481
  }, [onOpenChange]);
3482
+ const placement = mergedPositioning.placement ?? "bottom-start";
3483
+ const offset = mergedPositioning.offset?.mainAxis ?? 4;
3571
3484
  return /* @__PURE__ */ jsxRuntime.jsx(PositioningContext2.Provider, { value: positioningValue, children: /* @__PURE__ */ jsxRuntime.jsx(
3572
- RadixPopover__namespace.Root,
3485
+ popover.Popover,
3573
3486
  {
3574
3487
  open,
3575
3488
  defaultOpen,
3576
3489
  onOpenChange: handleOpenChange,
3577
- modal,
3490
+ placement,
3491
+ offset,
3492
+ disableFocus: !autoFocus,
3578
3493
  children
3579
3494
  }
3580
3495
  ) });
3581
3496
  };
3582
3497
  var PopoverTrigger = React29__namespace.forwardRef(function PopoverTrigger2(props, ref) {
3583
3498
  const { asChild = true, ...rest } = props;
3584
- return /* @__PURE__ */ jsxRuntime.jsx(RadixPopover__namespace.Trigger, { asChild, ref, ...rest });
3499
+ return /* @__PURE__ */ jsxRuntime.jsx(popover.Popover.Trigger, { asChild: asChild ? "except-style" : void 0, ref, ...rest });
3585
3500
  });
3586
3501
  var PopoverContent = React29__namespace.forwardRef(function PopoverContent2(props, ref) {
3587
- const { portalled = true, portalRef, className, w, minW, maxW, paddingTop, style: styleProp, ...rest } = props;
3502
+ const { portalled = true, portalRef: _portalRef, className, w, minW, maxW, paddingTop, style: styleProp, ...rest } = props;
3588
3503
  const resolvedW = typeof w === "object" ? w.base ?? w.lg : w;
3589
3504
  const contentStyle = {
3590
3505
  ...styleProp,
@@ -3593,20 +3508,11 @@ var PopoverContent = React29__namespace.forwardRef(function PopoverContent2(prop
3593
3508
  ...maxW ? { maxWidth: maxW } : {},
3594
3509
  ...paddingTop !== void 0 ? { paddingTop: typeof paddingTop === "number" ? `${paddingTop * 4}px` : paddingTop } : {}
3595
3510
  };
3596
- const positioning = React29__namespace.useContext(PositioningContext2);
3597
- const preventFocus = React29__namespace.useCallback((e) => e.preventDefault(), []);
3598
- const preventInteract = React29__namespace.useCallback((e) => e.preventDefault(), []);
3599
- const content = /* @__PURE__ */ jsxRuntime.jsx(
3600
- RadixPopover__namespace.Content,
3511
+ return /* @__PURE__ */ jsxRuntime.jsx(
3512
+ popover.Popover.Content,
3601
3513
  {
3602
3514
  ref,
3603
- side: positioning.side,
3604
- align: positioning.align,
3605
- sideOffset: positioning.sideOffset,
3606
- alignOffset: positioning.alignOffset,
3607
- collisionPadding: positioning.collisionPadding,
3608
- onOpenAutoFocus: positioning.autoFocus ? void 0 : preventFocus,
3609
- onInteractOutside: positioning.closeOnInteractOutside ? void 0 : preventInteract,
3515
+ unstyled: true,
3610
3516
  className: cn(
3611
3517
  "z-50 rounded-lg border border-[var(--color-popover-border,var(--color-border-divider))]",
3612
3518
  "bg-[var(--color-popover-bg,var(--color-dialog-bg))]",
@@ -3622,17 +3528,14 @@ var PopoverContent = React29__namespace.forwardRef(function PopoverContent2(prop
3622
3528
  ...rest
3623
3529
  }
3624
3530
  );
3625
- if (!portalled) {
3626
- return content;
3627
- }
3628
- return /* @__PURE__ */ jsxRuntime.jsx(RadixPopover__namespace.Portal, { container: portalRef?.current ?? void 0, children: content });
3629
3531
  });
3630
3532
  var PopoverArrow = React29__namespace.forwardRef(function PopoverArrow2(props, ref) {
3631
3533
  const { className, ...rest } = props;
3632
3534
  return /* @__PURE__ */ jsxRuntime.jsx(
3633
- RadixPopover__namespace.Arrow,
3535
+ popover.Popover.Arrow,
3634
3536
  {
3635
3537
  ref,
3538
+ unstyled: true,
3636
3539
  className: cn("fill-[var(--color-popover-bg,var(--color-dialog-bg))]", className),
3637
3540
  ...rest
3638
3541
  }
@@ -3641,8 +3544,9 @@ var PopoverArrow = React29__namespace.forwardRef(function PopoverArrow2(props, r
3641
3544
  var PopoverCloseTrigger = React29__namespace.forwardRef(function PopoverCloseTrigger2(props, ref) {
3642
3545
  const { className, ...rest } = props;
3643
3546
  return /* @__PURE__ */ jsxRuntime.jsx(
3644
- RadixPopover__namespace.Close,
3547
+ popover.Popover.Close,
3645
3548
  {
3549
+ unstyled: true,
3646
3550
  className: cn("absolute top-1 right-1", className),
3647
3551
  ...rest,
3648
3552
  asChild: true,
@@ -3656,7 +3560,7 @@ var PopoverCloseTriggerWrapper = React29__namespace.forwardRef(function PopoverC
3656
3560
  if (disabled) {
3657
3561
  return children;
3658
3562
  }
3659
- return /* @__PURE__ */ jsxRuntime.jsx(RadixPopover__namespace.Close, { ref, ...rest, asChild: true, children });
3563
+ return /* @__PURE__ */ jsxRuntime.jsx(popover.Popover.Close, { ref, ...rest, asChild: true, children });
3660
3564
  });
3661
3565
  var PopoverBody = React29__namespace.forwardRef(function PopoverBody2(props, ref) {
3662
3566
  const {
@@ -3740,7 +3644,7 @@ var PopoverDescription = React29__namespace.forwardRef(function PopoverDescripti
3740
3644
  }
3741
3645
  );
3742
3646
  });
3743
- var SIZE_CLASSES4 = {
3647
+ var SIZE_CLASSES6 = {
3744
3648
  sm: "h-1",
3745
3649
  md: "h-2",
3746
3650
  lg: "h-3",
@@ -3798,7 +3702,7 @@ var Progress = React29__namespace.forwardRef(
3798
3702
  className: cn(
3799
3703
  "w-full overflow-hidden rounded-full",
3800
3704
  "bg-[var(--color-progress-track)]",
3801
- SIZE_CLASSES4[size],
3705
+ SIZE_CLASSES6[size],
3802
3706
  trackProps?.className
3803
3707
  ),
3804
3708
  style: trackStyle,
@@ -3937,7 +3841,7 @@ var ProgressCircleValueText = React29__namespace.forwardRef(function ProgressCir
3937
3841
  }
3938
3842
  );
3939
3843
  });
3940
- var SIZE_CLASSES5 = {
3844
+ var SIZE_CLASSES7 = {
3941
3845
  xs: {
3942
3846
  root: "gap-1.5",
3943
3847
  control: "h-3 w-3",
@@ -4018,7 +3922,7 @@ var RadioBase = React29__namespace.forwardRef(
4018
3922
  function Radio(props, ref) {
4019
3923
  const { children, inputProps, rootRef, value, disabled, className, ...rest } = props;
4020
3924
  const size = React29__namespace.useContext(RadioSizeContext);
4021
- const sizeClasses2 = SIZE_CLASSES5[size];
3925
+ const sizeClasses2 = SIZE_CLASSES7[size];
4022
3926
  return /* @__PURE__ */ jsxRuntime.jsxs(
4023
3927
  "label",
4024
3928
  {
@@ -4533,7 +4437,7 @@ var SelectAsync = React29__namespace.forwardRef((props, ref) => {
4533
4437
  }
4534
4438
  );
4535
4439
  });
4536
- var VARIANT_CLASSES3 = {
4440
+ var VARIANT_CLASSES5 = {
4537
4441
  solid: "border-solid",
4538
4442
  dashed: "border-dashed",
4539
4443
  dotted: "border-dotted"
@@ -4562,7 +4466,7 @@ var Separator2 = React29__namespace.default.forwardRef(
4562
4466
  className: cn(
4563
4467
  "border-[var(--color-border-divider)]",
4564
4468
  "border-0",
4565
- VARIANT_CLASSES3[variant],
4469
+ VARIANT_CLASSES5[variant],
4566
4470
  isVertical ? VERTICAL_SIZE_CLASSES[size] : HORIZONTAL_SIZE_CLASSES[size],
4567
4471
  isVertical ? "self-stretch h-auto w-0" : "w-full",
4568
4472
  className
@@ -4676,7 +4580,7 @@ function SliderMarks(props) {
4676
4580
  }
4677
4581
  var NOOP3 = () => {
4678
4582
  };
4679
- var SIZE_CLASSES6 = {
4583
+ var SIZE_CLASSES8 = {
4680
4584
  sm: {
4681
4585
  root: "h-4 w-7",
4682
4586
  thumb: "h-3 w-3 data-[state=checked]:translate-x-3",
@@ -4726,7 +4630,7 @@ var SwitchBase = React29__namespace.forwardRef(
4726
4630
  },
4727
4631
  [isControlled, onCheckedChange]
4728
4632
  );
4729
- const sizeClasses2 = SIZE_CLASSES6[size];
4633
+ const sizeClasses2 = SIZE_CLASSES8[size];
4730
4634
  const isRtl = direction === "rtl";
4731
4635
  return /* @__PURE__ */ jsxRuntime.jsxs(
4732
4636
  "label",
@@ -4802,11 +4706,11 @@ var SwitchBase = React29__namespace.forwardRef(
4802
4706
  );
4803
4707
  var Switch2 = SwitchBase;
4804
4708
  var ArrowIcon3 = ({ className }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 12h14M12 5l7 7-7 7", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) });
4805
- var SPACING_SCALE2 = 4;
4709
+ var SPACING_SCALE = 4;
4806
4710
  function toPixels(value) {
4807
4711
  if (value === void 0) return void 0;
4808
4712
  if (typeof value === "string") return value;
4809
- return `${value * SPACING_SCALE2}px`;
4713
+ return `${value * SPACING_SCALE}px`;
4810
4714
  }
4811
4715
  function extractStyles(props) {
4812
4716
  const style = {};
@@ -5649,7 +5553,7 @@ var Toaster = () => {
5649
5553
  }
5650
5554
  );
5651
5555
  };
5652
- function Provider2(props) {
5556
+ function Provider(props) {
5653
5557
  return /* @__PURE__ */ jsxRuntime.jsx(ColorModeProvider, { ...props });
5654
5558
  }
5655
5559
  function fmt(n, decimals = 2) {
@@ -7264,7 +7168,7 @@ exports.Progress = Progress;
7264
7168
  exports.ProgressCircleRing = ProgressCircleRing;
7265
7169
  exports.ProgressCircleRoot = ProgressCircleRoot;
7266
7170
  exports.ProgressCircleValueText = ProgressCircleValueText;
7267
- exports.Provider = Provider2;
7171
+ exports.Provider = Provider;
7268
7172
  exports.Radio = Radio2;
7269
7173
  exports.RadioGroup = RadioGroup3;
7270
7174
  exports.Rating = Rating;