@luxfi/ui 7.0.0 → 7.2.0

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