@luxfi/ui 7.4.10 → 7.4.11

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 (78) hide show
  1. package/dist/accordion.cjs +107 -166
  2. package/dist/accordion.d.cts +18 -51
  3. package/dist/accordion.d.ts +18 -51
  4. package/dist/accordion.js +109 -166
  5. package/dist/chrome.cjs +193 -379
  6. package/dist/chrome.js +195 -379
  7. package/dist/collapsible.cjs +35 -26
  8. package/dist/collapsible.d.cts +2 -1
  9. package/dist/collapsible.d.ts +2 -1
  10. package/dist/collapsible.js +34 -24
  11. package/dist/dialog.d.cts +1 -1
  12. package/dist/dialog.d.ts +1 -1
  13. package/dist/drawer.cjs +92 -115
  14. package/dist/drawer.d.cts +43 -10
  15. package/dist/drawer.d.ts +43 -10
  16. package/dist/drawer.js +94 -115
  17. package/dist/field.cjs +60 -109
  18. package/dist/field.d.cts +0 -1
  19. package/dist/field.d.ts +0 -1
  20. package/dist/field.js +61 -109
  21. package/dist/heading.cjs +10 -17
  22. package/dist/heading.d.cts +0 -2
  23. package/dist/heading.d.ts +0 -2
  24. package/dist/heading.js +10 -17
  25. package/dist/icon-button.cjs +82 -82
  26. package/dist/icon-button.d.cts +16 -12
  27. package/dist/icon-button.d.ts +16 -12
  28. package/dist/icon-button.js +82 -82
  29. package/dist/index.cjs +1073 -1419
  30. package/dist/index.d.cts +1 -5
  31. package/dist/index.d.ts +1 -5
  32. package/dist/index.js +1075 -1414
  33. package/dist/input-group.cjs +11 -12
  34. package/dist/input-group.js +11 -12
  35. package/dist/input.cjs +27 -27
  36. package/dist/input.d.cts +21 -1
  37. package/dist/input.d.ts +21 -1
  38. package/dist/input.js +25 -28
  39. package/dist/menu.cjs +160 -271
  40. package/dist/menu.d.cts +41 -57
  41. package/dist/menu.d.ts +41 -57
  42. package/dist/menu.js +161 -251
  43. package/dist/popover.cjs +1 -1
  44. package/dist/popover.js +1 -1
  45. package/dist/select.cjs +40 -39
  46. package/dist/select.d.cts +35 -4
  47. package/dist/select.d.ts +35 -4
  48. package/dist/select.js +40 -38
  49. package/dist/separator.cjs +8 -33
  50. package/dist/separator.js +8 -33
  51. package/dist/tabs.cjs +108 -197
  52. package/dist/tabs.d.cts +16 -60
  53. package/dist/tabs.d.ts +16 -60
  54. package/dist/tabs.js +109 -196
  55. package/dist/textarea.cjs +56 -27
  56. package/dist/textarea.js +57 -28
  57. package/dist/toaster.cjs +97 -79
  58. package/dist/toaster.d.cts +7 -8
  59. package/dist/toaster.d.ts +7 -8
  60. package/dist/toaster.js +78 -80
  61. package/package.json +2 -16
  62. package/src/accordion.tsx +173 -227
  63. package/src/collapsible.tsx +55 -52
  64. package/src/drawer.tsx +123 -115
  65. package/src/field.tsx +68 -124
  66. package/src/heading.tsx +22 -26
  67. package/src/icon-button.tsx +134 -141
  68. package/src/ink.tsx +37 -0
  69. package/src/input-group.tsx +21 -12
  70. package/src/input.tsx +41 -32
  71. package/src/menu.tsx +224 -397
  72. package/src/popover.tsx +1 -1
  73. package/src/select.tsx +80 -59
  74. package/src/separator.tsx +13 -34
  75. package/src/tabs.tsx +166 -296
  76. package/src/textarea.tsx +19 -29
  77. package/src/toaster.tsx +118 -86
  78. package/tokens.css +61 -0
@@ -209,59 +209,74 @@ var IconButtonFrame = styled(View, {
209
209
  size: {
210
210
  "2xs": { width: 20, height: 20, borderRadius: 4 },
211
211
  "2xs_alt": { width: 20, height: 20, borderRadius: 4 },
212
- md: { width: 32, height: 32, borderRadius: "var(--radius-base, 8px)" }
212
+ md: { width: 32, height: 32, borderRadius: 8 }
213
213
  },
214
214
  disabled: {
215
- true: {
216
- opacity: 0.4,
217
- cursor: "not-allowed",
218
- pointerEvents: "none"
219
- }
215
+ true: { opacity: 0.4, cursor: "not-allowed", pointerEvents: "none" }
220
216
  }
221
217
  }
222
218
  });
223
- var VARIANT_CLASSES = {
224
- plain: "bg-transparent text-inherit border-none hover:bg-transparent",
225
- icon_secondary: [
226
- "bg-transparent text-icon-secondary border-none",
227
- "hover:text-hover",
228
- "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
229
- "data-[selected]:hover:text-hover",
230
- "data-[expanded]:text-hover"
231
- ].join(" "),
232
- icon_background: [
233
- "bg-[var(--color-button-icon-background-bg)] text-icon-secondary border-none",
234
- "hover:text-hover",
235
- "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text",
236
- "data-[selected]:hover:text-hover",
237
- "data-[expanded]:text-hover"
238
- ].join(" "),
239
- link: [
240
- "bg-transparent text-link-primary border-none font-normal px-0 h-auto",
241
- "hover:bg-transparent hover:text-link-primary-hover",
242
- "disabled:text-text-secondary"
243
- ].join(" "),
244
- dropdown: [
245
- "border-2 border-solid bg-transparent",
246
- "text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
247
- "hover:bg-transparent hover:text-hover hover:border-hover",
248
- "data-[expanded]:bg-transparent data-[expanded]:text-hover data-[expanded]:border-hover",
249
- "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent",
250
- "data-[selected]:hover:text-hover"
251
- ].join(" "),
252
- pagination: [
253
- "border-2 border-solid bg-transparent",
254
- "text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
255
- "hover:bg-transparent hover:text-hover hover:border-hover",
256
- "data-[selected]:bg-selected-control-bg data-[selected]:text-selected-control-text data-[selected]:border-transparent"
257
- ].join(" ")
258
- };
259
- var ICON_SIZE_CLASSES = {
260
- "2xs": "[&_svg]:size-5",
261
- "2xs_alt": "[&_svg]:size-3",
262
- md: "[&_svg]:size-5"
219
+ var HOVER = "var(--color-hover)";
220
+ var SELECTED_BG = "var(--color-selected-control-bg)";
221
+ var SELECTED_FG = "var(--color-selected-control-text)";
222
+ var VARIANT = {
223
+ plain: {
224
+ rest: { backgroundColor: "transparent", hoverStyle: { backgroundColor: "transparent" } }
225
+ },
226
+ icon_secondary: {
227
+ rest: {
228
+ backgroundColor: "transparent",
229
+ color: "var(--color-icon-secondary)",
230
+ hoverStyle: { color: HOVER }
231
+ },
232
+ selected: { backgroundColor: SELECTED_BG, color: SELECTED_FG, hoverStyle: { color: HOVER } },
233
+ expanded: { color: HOVER }
234
+ },
235
+ icon_background: {
236
+ rest: {
237
+ backgroundColor: "var(--color-button-icon-background-bg)",
238
+ color: "var(--color-icon-secondary)",
239
+ hoverStyle: { color: HOVER }
240
+ },
241
+ selected: { backgroundColor: SELECTED_BG, color: SELECTED_FG, hoverStyle: { color: HOVER } },
242
+ expanded: { color: HOVER }
243
+ },
244
+ link: {
245
+ rest: {
246
+ backgroundColor: "transparent",
247
+ color: "var(--color-link-primary)",
248
+ fontWeight: "400",
249
+ paddingHorizontal: 0,
250
+ height: "auto",
251
+ hoverStyle: { backgroundColor: "transparent", color: "var(--color-link-primary-hover)" },
252
+ disabledStyle: { color: "var(--color-text-secondary)" }
253
+ }
254
+ },
255
+ dropdown: {
256
+ rest: {
257
+ borderWidth: 2,
258
+ borderStyle: "solid",
259
+ backgroundColor: "transparent",
260
+ color: "var(--color-button-dropdown-fg)",
261
+ borderColor: "var(--color-button-dropdown-border)",
262
+ hoverStyle: { backgroundColor: "transparent", color: HOVER, borderColor: HOVER }
263
+ },
264
+ selected: { backgroundColor: SELECTED_BG, color: SELECTED_FG, borderColor: "transparent", hoverStyle: { color: HOVER } },
265
+ expanded: { backgroundColor: "transparent", color: HOVER, borderColor: HOVER }
266
+ },
267
+ pagination: {
268
+ rest: {
269
+ borderWidth: 2,
270
+ borderStyle: "solid",
271
+ backgroundColor: "transparent",
272
+ color: "var(--color-button-pagination-fg)",
273
+ borderColor: "var(--color-button-pagination-border)",
274
+ hoverStyle: { backgroundColor: "transparent", color: HOVER, borderColor: HOVER }
275
+ },
276
+ selected: { backgroundColor: SELECTED_BG, color: SELECTED_FG, borderColor: "transparent" }
277
+ }
263
278
  };
264
- var SP = 4;
279
+ var ICON_SIZE = { "2xs": 20, "2xs_alt": 12, md: 20 };
265
280
  var IconButton = React.forwardRef(
266
281
  function IconButton2(props, ref) {
267
282
  const {
@@ -275,58 +290,43 @@ var IconButton = React.forwardRef(
275
290
  disabled,
276
291
  className,
277
292
  children,
278
- as: _as,
293
+ as: asProp,
279
294
  style: styleProp,
280
- // Strip Chakra style props
281
- boxSize: _boxSize,
282
- color: _color,
283
- px: _px,
284
- borderRadius: _borderRadius,
285
- ml: _ml,
286
- mr: _mr,
287
- _hover,
288
- _expanded,
289
295
  ...rest
290
296
  } = props;
291
- const shimStyle = { ...styleProp };
292
- if (_boxSize !== void 0) {
293
- const bs = typeof _boxSize === "number" ? `${_boxSize * SP}px` : _boxSize;
294
- shimStyle.width = bs;
295
- shimStyle.height = bs;
296
- }
297
- if (_color) shimStyle.color = _color;
298
- if (_px !== void 0) {
299
- const v = typeof _px === "number" ? `${_px * SP}px` : _px;
300
- shimStyle.paddingLeft = v;
301
- shimStyle.paddingRight = v;
302
- }
303
- if (_borderRadius) shimStyle.borderRadius = _borderRadius;
304
- if (_ml !== void 0) shimStyle.marginLeft = typeof _ml === "number" ? `${_ml * SP}px` : _ml;
305
- if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * SP}px` : _mr;
306
- const mergedStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
307
- const variantClass = VARIANT_CLASSES[variant] ?? VARIANT_CLASSES.plain;
308
- const iconSizeClass = size ? ICON_SIZE_CLASSES[size] ?? "" : "";
309
- const combinedClassName = [variantClass, iconSizeClass, className].filter(Boolean).join(" ");
297
+ const look = VARIANT[variant] ?? VARIANT.plain;
298
+ const iconSize = size ? ICON_SIZE[size] : void 0;
310
299
  const button = /* @__PURE__ */ jsx(
311
300
  IconButtonFrame,
312
301
  {
313
302
  ref,
314
303
  size,
315
304
  disabled: !loadingSkeleton && (loading || disabled) || void 0,
316
- render: _as ? React.createElement(_as) : void 0,
317
- className: combinedClassName,
318
- style: mergedStyle,
305
+ render: asProp ? React.createElement(asProp) : void 0,
306
+ className: ["lux-icon", className].filter(Boolean).join(" "),
307
+ style: { ...styleProp, ...iconSize ? { "--icon-size": `${iconSize}px` } : null },
308
+ ...look.rest,
309
+ ...selected ? look.selected : null,
310
+ ...expanded ? look.expanded : null,
319
311
  ...expanded ? { "data-expanded": true } : {},
320
312
  ...selected ? { "data-selected": true } : {},
321
313
  ...highlighted ? { "data-highlighted": true } : {},
322
314
  ...loadingSkeleton ? { "data-loading-skeleton": true } : {},
323
315
  ...rest,
324
316
  children: loading ? /* @__PURE__ */ jsx(
325
- "span",
317
+ View,
326
318
  {
327
- className: "inline-block size-5 animate-spin rounded-full border-2 border-current border-b-transparent border-l-transparent",
319
+ className: "lux-spin",
320
+ render: /* @__PURE__ */ jsx("span", {}),
328
321
  role: "status",
329
- "aria-label": "Loading"
322
+ "aria-label": "Loading",
323
+ width: 20,
324
+ height: 20,
325
+ borderRadius: 1e3,
326
+ borderWidth: 2,
327
+ borderColor: "currentColor",
328
+ borderBottomColor: "transparent",
329
+ borderLeftColor: "transparent"
330
330
  }
331
331
  ) : children
332
332
  }