@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.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 * as RadixTooltip from '@radix-ui/react-tooltip';
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 * as RadixPopover from '@radix-ui/react-popover';
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
- "button",
245
+ CloseButtonFrame,
212
246
  {
213
- type: "button",
214
- "aria-label": "Close",
215
247
  ref,
216
- className: cn(
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 SPACING_SCALE = 4;
247
- function toStylePx(value) {
248
- if (value === void 0) return void 0;
249
- if (typeof value === "string") return value;
250
- return `${value * SPACING_SCALE}px`;
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 extractSkeletonStyleProps(props) {
253
- const style = {};
254
- const rest = {};
255
- function resolveDimension(value) {
256
- if (value === void 0 || value === null) return void 0;
257
- if (typeof value === "number") return `${value * SPACING_SCALE}px`;
258
- if (typeof value === "string") return value;
259
- if (typeof value === "object") {
260
- const obj = value;
261
- return obj.base ?? obj.lg ?? obj.xl ?? Object.values(obj)[0];
262
- }
263
- return void 0;
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
- for (const [key, value] of Object.entries(props)) {
266
- if (value === void 0) continue;
267
- switch (key) {
268
- case "w": {
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
- return { style, rest };
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
- loading = false,
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 HIDE_BELOW_MAP = { lg: "lg:hidden", md: "md:hidden", sm: "sm:hidden" };
505
- const hideBelowClass = _hideBelow ? HIDE_BELOW_MAP[_hideBelow] : void 0;
506
- const finalClassName = hideBelowClass ? cn(className, hideBelowClass) : className;
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
- return children;
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
- return /* @__PURE__ */ jsx(RadixTooltip.Provider, { delayDuration: openDelay, skipDelayDuration: 0, children: /* @__PURE__ */ jsxs(
920
- RadixTooltip.Root,
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
- delayDuration: openDelay,
800
+ delay: { open: openDelay, close: closeDelay },
801
+ placement,
802
+ offset,
803
+ unstyled: true,
925
804
  children: [
926
805
  /* @__PURE__ */ jsx(
927
- RadixTooltip.Trigger,
806
+ Tooltip$1.Trigger,
928
807
  {
929
808
  ref: open ? triggerRef : void 0,
930
809
  asChild: true,
931
- onClick: isMobile ? handleTriggerClick : void 0,
810
+ ...isMobile ? { onPress: handleTriggerClick } : {},
932
811
  ...triggerProps,
933
812
  children
934
813
  }
935
814
  ),
936
- /* @__PURE__ */ jsx(RadixTooltip.Portal, { container: portalled ? portalRef?.current ?? void 0 : void 0, children: /* @__PURE__ */ jsxs(
937
- RadixTooltip.Content,
815
+ /* @__PURE__ */ jsxs(
816
+ Tooltip$1.Content,
938
817
  {
939
818
  ref,
940
- side,
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
- RadixTooltip.Arrow,
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 badgeVariants = cva(
976
- "inline-flex items-center rounded-sm gap-1 font-medium w-fit max-w-full whitespace-nowrap select-text",
977
- {
978
- variants: {
979
- variant: {
980
- subtle: "",
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 * 4}px` : _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) * 4}px`;
909
+ shimStyle.marginLeft = `${(obj.base ?? obj.lg ?? 0) * S2}px`;
1045
910
  } else {
1046
- shimStyle.marginLeft = typeof _ml === "number" ? `${_ml * 4}px` : _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 * 4}px` : _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
- badgeVariants({ variant, size }),
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 buttonVariants = cva(
1078
- // base styles (shared across all variants)
1079
- [
1080
- "inline-flex items-center justify-center",
1081
- "gap-0 font-semibold overflow-hidden rounded-md",
1082
- "cursor-pointer select-none whitespace-nowrap",
1083
- "transition-colors duration-150",
1084
- "disabled:opacity-[0.2] disabled:cursor-not-allowed"
1085
- ],
1086
- {
1087
- variants: {
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
- "span",
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: _mt,
1254
- ml: _ml,
1255
- mr: _mr,
1256
- px: _px,
1257
- py: _py,
1258
- fontWeight: _fontWeight,
1259
- gap: _gap,
1260
- flexShrink: _flexShrink,
1261
- columnGap: _columnGap,
1262
- gridColumn: _gridColumn,
1263
- gridRow: _gridRow,
1264
- justifySelf: _justifySelf,
1265
- alignSelf: _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: _h,
1268
- w: _w,
1269
- display: _display,
1270
- borderBottomRightRadius: _bbrr,
1271
- borderTopRightRadius: _btrr,
1164
+ h,
1165
+ w,
1166
+ display,
1167
+ borderBottomRightRadius,
1168
+ borderTopRightRadius,
1272
1169
  ...rest
1273
1170
  } = props;
1274
- const SP = 4;
1275
- const shimStyle = { ...styleProp };
1276
- if (_mt !== void 0) shimStyle.marginTop = typeof _mt === "number" ? `${_mt * SP}px` : _mt;
1277
- if (_ml !== void 0) shimStyle.marginLeft = typeof _ml === "number" ? `${_ml * SP}px` : _ml;
1278
- if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * SP}px` : _mr;
1279
- if (_px !== void 0) {
1280
- const v = typeof _px === "number" ? `${_px * SP}px` : _px;
1281
- shimStyle.paddingLeft = v;
1282
- shimStyle.paddingRight = v;
1283
- }
1284
- if (_py !== void 0) {
1285
- const v = typeof _py === "number" ? `${_py * SP}px` : _py;
1286
- shimStyle.paddingTop = v;
1287
- shimStyle.paddingBottom = v;
1288
- }
1289
- if (_fontWeight !== void 0) shimStyle.fontWeight = _fontWeight;
1290
- if (_gap !== void 0) shimStyle.gap = typeof _gap === "number" ? `${_gap * SP}px` : _gap;
1291
- if (_flexShrink !== void 0) shimStyle.flexShrink = _flexShrink;
1292
- if (_columnGap !== void 0) shimStyle.columnGap = typeof _columnGap === "number" ? `${_columnGap * SP}px` : _columnGap;
1293
- if (_gridColumn !== void 0) shimStyle.gridColumn = typeof _gridColumn === "number" ? String(_gridColumn) : _gridColumn;
1294
- if (_gridRow) shimStyle.gridRow = _gridRow;
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", { className: "ml-2", children: loadingText })
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
- Comp,
1205
+ ButtonFrame,
1316
1206
  {
1317
1207
  ref,
1318
- className: cn(buttonVariants({ variant, size }), className),
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: cn("inline-flex", 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: cn(
1283
+ className: [
1381
1284
  "inline-flex gap-0",
1382
- equalWidth && "grid",
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 SIZE_CLASSES2 = {
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 = SIZE_CLASSES2[size];
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 VARIANT_CLASSES2 = {
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 BASE_CLASSES = "inline-flex items-center gap-0 cursor-pointer data-[disabled]:cursor-not-allowed";
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(BASE_CLASSES, VARIANT_CLASSES2[variant], className);
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
- BASE_CLASSES,
1832
- VARIANT_CLASSES2[variant],
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 DialogContext = React29.createContext({ size: "md" });
2031
- function useDialogContext() {
2032
- return React29.useContext(DialogContext);
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 kept for API compat
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(DialogContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(
2072
- RadixDialog.Root,
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 } = useDialogContext();
2098
- let portalProps;
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
- RadixDialog.Overlay,
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
- RadixDialog.Content,
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(RadixDialog.Close, { asChild: true, children: /* @__PURE__ */ jsx(CloseButton, { ref, className, ...rest, children: props.children }) });
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
- RadixDialog.Title,
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 = RadixDialog.Overlay;
2208
- var DialogTitle = RadixDialog.Title;
2209
- var DialogDescription = RadixDialog.Description;
2210
- var DialogTrigger = RadixDialog.Trigger;
2211
- var DialogActionTrigger = RadixDialog.Close;
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 SIZE_CLASSES3 = {
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
- SIZE_CLASSES3[placement]?.[size] ?? SIZE_CLASSES3.right?.md,
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 BASE_CLASSES2 = "font-heading text-heading";
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 shimStyle = { ...styleProp };
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(BASE_CLASSES2, levelClasses, className),
2563
- style: Object.keys(shimStyle).length > 0 ? shimStyle : void 0,
2453
+ className: cn(BASE_CLASSES4, levelClasses, className),
2454
+ style: mergedStyle,
2564
2455
  ...rest
2565
2456
  }
2566
2457
  );
2567
2458
  }
2568
2459
  );
2569
- var iconButtonVariants = cva(
2570
- // base
2571
- [
2572
- "inline-flex items-center justify-center",
2573
- "p-0 min-w-auto shrink-0",
2574
- "cursor-pointer border-0 bg-transparent",
2575
- "disabled:opacity-[var(--opacity-control-disabled,0.4)] disabled:cursor-not-allowed"
2576
- ],
2577
- {
2578
- variants: {
2579
- variant: {
2580
- plain: "bg-transparent text-inherit border-none hover:bg-transparent",
2581
- icon_secondary: [
2582
- "bg-transparent text-icon-secondary border-none",
2583
- "hover:text-hover",
2584
- "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
2585
- "data-[selected]:hover:text-hover",
2586
- "data-[expanded]:text-hover"
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
- defaultVariants: {
2622
- variant: "plain"
2479
+ disabled: {
2480
+ true: {
2481
+ opacity: 0.4,
2482
+ cursor: "not-allowed",
2483
+ pointerEvents: "none"
2484
+ }
2623
2485
  }
2624
2486
  }
2625
- );
2626
- var IconButton = React29__default.forwardRef(
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: Comp = "button",
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 * SP}px` : _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 * SP}px` : _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 * SP}px` : _ml;
2667
- if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * SP}px` : _mr;
2668
- const mergedBtnStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
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
- Comp,
2576
+ IconButtonFrame,
2671
2577
  {
2672
2578
  ref,
2673
- type: Comp === "button" ? "button" : void 0,
2674
- disabled: !loadingSkeleton && (loading || disabled),
2675
- className: cn(iconButtonVariants({ variant, size }), className),
2676
- style: mergedBtnStyle,
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("span", { className: "inline-block size-5 animate-spin rounded-full border-2 border-current border-b-transparent border-l-transparent" }) : children
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
- modal = false,
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
- RadixPopover.Root,
3451
+ Popover,
3537
3452
  {
3538
3453
  open,
3539
3454
  defaultOpen,
3540
3455
  onOpenChange: handleOpenChange,
3541
- modal,
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(RadixPopover.Trigger, { asChild, ref, ...rest });
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
- const positioning = React29.useContext(PositioningContext2);
3561
- const preventFocus = React29.useCallback((e) => e.preventDefault(), []);
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
- side: positioning.side,
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
- RadixPopover.Arrow,
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
- RadixPopover.Close,
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(RadixPopover.Close, { ref, ...rest, asChild: true, children });
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 SIZE_CLASSES4 = {
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
- SIZE_CLASSES4[size],
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 SIZE_CLASSES5 = {
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 = SIZE_CLASSES5[size];
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 VARIANT_CLASSES3 = {
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
- VARIANT_CLASSES3[variant],
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 SIZE_CLASSES6 = {
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 = SIZE_CLASSES6[size];
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 SPACING_SCALE2 = 4;
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 * SPACING_SCALE2}px`;
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 Provider2(props) {
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, Provider2 as 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 };
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 };