@luxfi/ui 7.4.13 → 7.4.15

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.
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { createGui } from '@hanzo/gui';
3
+ import { config as config$1 } from '@hanzo/ui/gui-config';
3
4
  import { defaultConfig } from '@hanzogui/config/v5';
4
5
  import { animations } from '@hanzogui/config/v5-css';
5
6
 
@@ -54,6 +55,7 @@ var luxThemes = {
54
55
  };
55
56
  var config = createGui({
56
57
  ...defaultConfig,
58
+ ...config$1,
57
59
  animations,
58
60
  settings: {
59
61
  ...defaultConfig.settings,
@@ -153,8 +153,16 @@ function ActionButton({ onClick, children }) {
153
153
  paddingVertical: 4,
154
154
  backgroundColor: "var(--color-button-subtle-bg)",
155
155
  cursor: "pointer",
156
- hoverStyle: { color: "var(--color-hover)" },
157
- children: /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, fontWeight: "500", color: "var(--color-button-subtle-fg)", children })
156
+ children: /* @__PURE__ */ jsxRuntime.jsx(
157
+ gui.Text,
158
+ {
159
+ fontSize: 12,
160
+ fontWeight: "500",
161
+ color: "var(--color-button-subtle-fg)",
162
+ hoverStyle: { color: "var(--color-hover)" },
163
+ children
164
+ }
165
+ )
158
166
  }
159
167
  );
160
168
  }
@@ -131,8 +131,16 @@ function ActionButton({ onClick, children }) {
131
131
  paddingVertical: 4,
132
132
  backgroundColor: "var(--color-button-subtle-bg)",
133
133
  cursor: "pointer",
134
- hoverStyle: { color: "var(--color-hover)" },
135
- children: /* @__PURE__ */ jsx(Text, { fontSize: 12, fontWeight: "500", color: "var(--color-button-subtle-fg)", children })
134
+ children: /* @__PURE__ */ jsx(
135
+ Text,
136
+ {
137
+ fontSize: 12,
138
+ fontWeight: "500",
139
+ color: "var(--color-button-subtle-fg)",
140
+ hoverStyle: { color: "var(--color-hover)" },
141
+ children
142
+ }
143
+ )
136
144
  }
137
145
  );
138
146
  }
package/dist/provider.cjs CHANGED
@@ -4,6 +4,7 @@
4
4
  var gui = require('@hanzo/gui');
5
5
  var reactQuery = require('@tanstack/react-query');
6
6
  var React = require('react');
7
+ var guiConfig = require('@hanzo/ui/gui-config');
7
8
  var v5 = require('@hanzogui/config/v5');
8
9
  var v5Css = require('@hanzogui/config/v5-css');
9
10
  var jsxRuntime = require('react/jsx-runtime');
@@ -169,6 +170,7 @@ var luxThemes = {
169
170
  };
170
171
  var config = gui.createGui({
171
172
  ...v5.defaultConfig,
173
+ ...guiConfig.config,
172
174
  animations: v5Css.animations,
173
175
  settings: {
174
176
  ...v5.defaultConfig.settings,
package/dist/provider.js CHANGED
@@ -3,6 +3,7 @@ import { createGui, GuiProvider } from '@hanzo/gui';
3
3
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
4
4
  export { QueryClient, useInfiniteQuery, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
5
5
  import React from 'react';
6
+ import { config as config$1 } from '@hanzo/ui/gui-config';
6
7
  import { defaultConfig } from '@hanzogui/config/v5';
7
8
  import { animations } from '@hanzogui/config/v5-css';
8
9
  import { jsx } from 'react/jsx-runtime';
@@ -164,6 +165,7 @@ var luxThemes = {
164
165
  };
165
166
  var config = createGui({
166
167
  ...defaultConfig,
168
+ ...config$1,
167
169
  animations,
168
170
  settings: {
169
171
  ...defaultConfig.settings,
package/dist/textarea.cjs CHANGED
@@ -11,11 +11,11 @@ var React__default = /*#__PURE__*/_interopDefault(React);
11
11
 
12
12
  // src/textarea.tsx
13
13
  var SIZE = {
14
- xs: { height: 24, paddingHorizontal: 8, fontSize: 12, borderRadius: 4 },
15
- sm: { height: 32, paddingHorizontal: 12, fontSize: 14, borderRadius: 6 },
16
- md: { height: 40, paddingHorizontal: 16, fontSize: 16, borderRadius: 6 },
17
- lg: { height: 48, paddingHorizontal: 16, fontSize: 18, borderRadius: 8 },
18
- "2xl": { height: 56, paddingHorizontal: 16, fontSize: 20, borderRadius: 8 }
14
+ xs: { height: 24, paddingHorizontal: 8, fontSize: "$1", borderRadius: 4 },
15
+ sm: { height: 32, paddingHorizontal: 12, fontSize: "$3", borderRadius: 6 },
16
+ md: { height: 40, paddingHorizontal: 16, fontSize: "$5", borderRadius: 6 },
17
+ lg: { height: 48, paddingHorizontal: 16, fontSize: "$6", borderRadius: 8 },
18
+ "2xl": { height: 56, paddingHorizontal: 16, fontSize: "$7", borderRadius: 8 }
19
19
  };
20
20
  var VARIANT = {
21
21
  outline: { borderWidth: 1, borderStyle: "solid" },
@@ -58,11 +58,11 @@ var Input = React__default.default.forwardRef(
58
58
  );
59
59
  Input.displayName = "Input";
60
60
  var SIZE2 = {
61
- xs: { paddingHorizontal: 8, paddingVertical: 4, fontSize: 12, borderRadius: 4 },
62
- sm: { paddingHorizontal: 12, paddingVertical: 8, fontSize: 14, borderRadius: 6 },
63
- md: { paddingHorizontal: 16, paddingVertical: 8, fontSize: 16, borderRadius: 6 },
64
- lg: { paddingHorizontal: 16, paddingVertical: 12, fontSize: 18, borderRadius: 8 },
65
- "2xl": { paddingHorizontal: 16, paddingVertical: 12, fontSize: 20, borderRadius: 8 }
61
+ xs: { paddingHorizontal: 8, paddingVertical: 4, fontSize: "$1", borderRadius: 4 },
62
+ sm: { paddingHorizontal: 12, paddingVertical: 8, fontSize: "$3", borderRadius: 6 },
63
+ md: { paddingHorizontal: 16, paddingVertical: 8, fontSize: "$5", borderRadius: 6 },
64
+ lg: { paddingHorizontal: 16, paddingVertical: 12, fontSize: "$6", borderRadius: 8 },
65
+ "2xl": { paddingHorizontal: 16, paddingVertical: 12, fontSize: "$7", borderRadius: 8 }
66
66
  };
67
67
  var Textarea = React__default.default.forwardRef(
68
68
  ({ size = "md", variant = "outline", className, onChange, onChangeText, ...rest }, ref) => {
package/dist/textarea.js CHANGED
@@ -5,11 +5,11 @@ import { jsx } from 'react/jsx-runtime';
5
5
 
6
6
  // src/textarea.tsx
7
7
  var SIZE = {
8
- xs: { height: 24, paddingHorizontal: 8, fontSize: 12, borderRadius: 4 },
9
- sm: { height: 32, paddingHorizontal: 12, fontSize: 14, borderRadius: 6 },
10
- md: { height: 40, paddingHorizontal: 16, fontSize: 16, borderRadius: 6 },
11
- lg: { height: 48, paddingHorizontal: 16, fontSize: 18, borderRadius: 8 },
12
- "2xl": { height: 56, paddingHorizontal: 16, fontSize: 20, borderRadius: 8 }
8
+ xs: { height: 24, paddingHorizontal: 8, fontSize: "$1", borderRadius: 4 },
9
+ sm: { height: 32, paddingHorizontal: 12, fontSize: "$3", borderRadius: 6 },
10
+ md: { height: 40, paddingHorizontal: 16, fontSize: "$5", borderRadius: 6 },
11
+ lg: { height: 48, paddingHorizontal: 16, fontSize: "$6", borderRadius: 8 },
12
+ "2xl": { height: 56, paddingHorizontal: 16, fontSize: "$7", borderRadius: 8 }
13
13
  };
14
14
  var VARIANT = {
15
15
  outline: { borderWidth: 1, borderStyle: "solid" },
@@ -52,11 +52,11 @@ var Input = React.forwardRef(
52
52
  );
53
53
  Input.displayName = "Input";
54
54
  var SIZE2 = {
55
- xs: { paddingHorizontal: 8, paddingVertical: 4, fontSize: 12, borderRadius: 4 },
56
- sm: { paddingHorizontal: 12, paddingVertical: 8, fontSize: 14, borderRadius: 6 },
57
- md: { paddingHorizontal: 16, paddingVertical: 8, fontSize: 16, borderRadius: 6 },
58
- lg: { paddingHorizontal: 16, paddingVertical: 12, fontSize: 18, borderRadius: 8 },
59
- "2xl": { paddingHorizontal: 16, paddingVertical: 12, fontSize: 20, borderRadius: 8 }
55
+ xs: { paddingHorizontal: 8, paddingVertical: 4, fontSize: "$1", borderRadius: 4 },
56
+ sm: { paddingHorizontal: 12, paddingVertical: 8, fontSize: "$3", borderRadius: 6 },
57
+ md: { paddingHorizontal: 16, paddingVertical: 8, fontSize: "$5", borderRadius: 6 },
58
+ lg: { paddingHorizontal: 16, paddingVertical: 12, fontSize: "$6", borderRadius: 8 },
59
+ "2xl": { paddingHorizontal: 16, paddingVertical: 12, fontSize: "$7", borderRadius: 8 }
60
60
  };
61
61
  var Textarea = React.forwardRef(
62
62
  ({ size = "md", variant = "outline", className, onChange, onChangeText, ...rest }, ref) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luxfi/ui",
3
- "version": "7.4.13",
3
+ "version": "7.4.15",
4
4
  "description": "Cross-platform UI components on @hanzo/gui. Native mobile + web.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -312,14 +312,16 @@
312
312
  "tailwind-merge": "^3.0.0"
313
313
  },
314
314
  "peerDependencies": {
315
- "@hanzo/gui": "^7.3.0",
315
+ "@hanzo/design": "^0.5.1",
316
+ "@hanzo/gui": "^8.1.1",
316
317
  "@hanzo/iam": "^0.13.8",
317
- "@hanzogui/colors": "^7.3.0",
318
- "@hanzogui/config": "^7.3.0",
319
- "@hanzogui/core": "^7.3.0",
320
- "@hanzogui/lucide-icons-2": "^7.3.0",
321
- "@hanzogui/themes": "^7.3.0",
322
- "@hanzogui/web": "^7.3.0",
318
+ "@hanzo/ui": "^8.0.70",
319
+ "@hanzogui/colors": "^8.1.1",
320
+ "@hanzogui/config": "^8.1.1",
321
+ "@hanzogui/core": "^8.1.1",
322
+ "@hanzogui/lucide-icons-2": "^8.1.1",
323
+ "@hanzogui/themes": "^8.1.1",
324
+ "@hanzogui/web": "^8.1.1",
323
325
  "@tanstack/react-query": "^5.76.0",
324
326
  "react": ">=19",
325
327
  "react-dom": ">=19"
@@ -345,13 +347,15 @@
345
347
  }
346
348
  },
347
349
  "devDependencies": {
348
- "@hanzo/gui": "7.3.0",
350
+ "@hanzo/design": "0.5.1",
351
+ "@hanzo/gui": "8.1.1",
349
352
  "@hanzo/iam": "^0.13.8",
350
- "@hanzogui/colors": "7.3.0",
351
- "@hanzogui/config": "7.3.0",
352
- "@hanzogui/core": "7.3.0",
353
- "@hanzogui/themes": "7.3.0",
354
- "@hanzogui/web": "7.3.0",
353
+ "@hanzo/ui": "8.0.70",
354
+ "@hanzogui/colors": "8.1.1",
355
+ "@hanzogui/config": "8.1.1",
356
+ "@hanzogui/core": "8.1.1",
357
+ "@hanzogui/themes": "8.1.1",
358
+ "@hanzogui/web": "8.1.1",
355
359
  "@playwright/test": "^1.58",
356
360
  "@tailwindcss/vite": "^4",
357
361
  "@types/react": "^19.0.0",
package/src/button.tsx CHANGED
@@ -369,24 +369,6 @@ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
369
369
  },
370
370
  );
371
371
 
372
- // ---------------------------------------------------------------------------
373
- // buttonVariants — compatibility shim for consumers that call buttonVariants()
374
- // Returns the className string for a given variant + size combo.
375
- // ---------------------------------------------------------------------------
376
-
377
- const SIZE_CLASSES: Record<string, string> = {
378
- '2xs': 'px-2 h-5 min-w-5 text-xs rounded-sm gap-1',
379
- xs: 'px-2 h-6 min-w-6 text-sm rounded-sm gap-1',
380
- sm: 'px-3 h-8 min-w-8 text-sm rounded-md gap-1',
381
- md: 'px-3 h-10 min-w-10 text-base rounded-md gap-2',
382
- };
383
-
384
- export function buttonVariants(opts?: { variant?: string; size?: string }): string {
385
- const v = opts?.variant ?? 'solid';
386
- const s = opts?.size ?? 'md';
387
- return [BASE_CLASSES, VARIANT_CLASSES[v] ?? '', SIZE_CLASSES[s] ?? ''].filter(Boolean).join(' ');
388
- }
389
-
390
372
  // ---------------------------------------------------------------------------
391
373
  // ButtonGroup
392
374
  // ---------------------------------------------------------------------------
package/src/heading.tsx CHANGED
@@ -21,9 +21,18 @@ export interface HeadingProps extends React.ComponentPropsWithoutRef<'h1'> {
21
21
  const TAG = { '1': H1, '2': H2, '3': H3 } as const;
22
22
 
23
23
  const RAMP = {
24
- '1': { fontSize: 18, lineHeight: 24, fontWeight: '500', $lg: { fontSize: 32, lineHeight: 40, letterSpacing: -0.5 } },
25
- '2': { fontSize: 16, lineHeight: 24, fontWeight: '500', $lg: { fontSize: 24, lineHeight: 32 } },
26
- '3': { fontSize: 14, lineHeight: 20, fontWeight: '600', $lg: { fontSize: 18, lineHeight: 24, fontWeight: '500' } },
24
+ // Tokens, not numbers. `$n` publishes as `var(--text-*, <px>)` through the
25
+ // shared config, and @hanzo/design multiplies `--text-*` by `--type-scale`
26
+ // so these three lines are what lets a person's type-size setting reach a
27
+ // heading at all. Written as `18` they would render identically today and
28
+ // never move again.
29
+ //
30
+ // lineHeight is deliberately absent: gui derives it from the resolved size,
31
+ // so it scales WITH the text. A fixed 24 next to an adjustable size is how
32
+ // you get 32px text in a 24px box.
33
+ '1': { fontSize: '$6', $lg: { fontSize: '$10', letterSpacing: -0.5 } },
34
+ '2': { fontSize: '$5', $lg: { fontSize: '$8' } },
35
+ '3': { fontSize: '$3', fontWeight: '600', $lg: { fontSize: '$6', fontWeight: '500' } },
27
36
  } as const;
28
37
 
29
38
  export const Heading = React.forwardRef<HTMLHeadingElement, HeadingProps>(
package/src/index.ts CHANGED
@@ -71,7 +71,6 @@ export {
71
71
  Button,
72
72
  ButtonGroup,
73
73
  ButtonGroupRadio,
74
- buttonVariants,
75
74
  } from './button';
76
75
  export type { ButtonProps, ButtonGroupProps, ButtonGroupRadioProps } from './button';
77
76
 
package/src/input.tsx CHANGED
@@ -26,12 +26,12 @@ export interface InputProps extends Omit<React.ComponentPropsWithRef<'input'>, '
26
26
  readonly onChangeText?: (text: string) => void;
27
27
  }
28
28
 
29
- export const SIZE: Record<InputSize, Record<string, number>> = {
30
- xs: { height: 24, paddingHorizontal: 8, fontSize: 12, borderRadius: 4 },
31
- sm: { height: 32, paddingHorizontal: 12, fontSize: 14, borderRadius: 6 },
32
- md: { height: 40, paddingHorizontal: 16, fontSize: 16, borderRadius: 6 },
33
- lg: { height: 48, paddingHorizontal: 16, fontSize: 18, borderRadius: 8 },
34
- '2xl': { height: 56, paddingHorizontal: 16, fontSize: 20, borderRadius: 8 },
29
+ export const SIZE: Record<InputSize, Record<string, unknown>> = {
30
+ xs: { height: 24, paddingHorizontal: 8, fontSize: '$1', borderRadius: 4 },
31
+ sm: { height: 32, paddingHorizontal: 12, fontSize: '$3', borderRadius: 6 },
32
+ md: { height: 40, paddingHorizontal: 16, fontSize: '$5', borderRadius: 6 },
33
+ lg: { height: 48, paddingHorizontal: 16, fontSize: '$6', borderRadius: 8 },
34
+ '2xl': { height: 56, paddingHorizontal: 16, fontSize: '$7', borderRadius: 8 },
35
35
  };
36
36
 
37
37
  export const VARIANT: Record<InputVariant, Record<string, unknown>> = {
package/src/lux.config.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { createGui } from '@hanzo/gui';
4
+ import { config as hanzoConfig } from '@hanzo/ui/gui-config';
4
5
  import { defaultConfig } from '@hanzogui/config/v5';
5
6
  import { animations } from '@hanzogui/config/v5-css';
6
7
 
@@ -60,8 +61,26 @@ export const luxThemes = {
60
61
  // the motion — one wiring for the whole fleet, not one per app.
61
62
  // Native surfaces can swap `@hanzogui/config/v5-css` for `/v5-rn` without
62
63
  // touching a component: the transition token names are identical.
64
+ // The type ramp comes from @hanzo/ui's shared config, not from v5's literals.
65
+ //
66
+ // That config publishes gui's `$n` font ladder as `var(--text-*, <px>)` rather
67
+ // than as numbers, and @hanzo/design's ramp multiplies `--text-*` by
68
+ // `--type-scale` — the knob @hanzo/appearance writes onto <html>. gui resolves
69
+ // a size in JS and applies it INLINE, and an inline style outranks every
70
+ // stylesheet, so a custom property is the only thing that can reach a
71
+ // `fontSize="$n"` call site at all. Taking v5's ladder instead would render
72
+ // identically today and be frozen forever: a person's type-size setting would
73
+ // have nothing to move.
74
+ //
75
+ // The px literal survives as each var()'s fallback, so a Lux surface that
76
+ // mounts no token layer still renders at the intended size.
77
+ //
78
+ // Only TYPE is on that ramp upstream — `space` and `radius` arrive as numbers,
79
+ // so density is not adjustable yet. That is a gap in the shared config, not
80
+ // something to paper over here with a private scale.
63
81
  export const config = createGui({
64
82
  ...defaultConfig,
83
+ ...hanzoConfig,
65
84
  animations,
66
85
  settings: {
67
86
  ...defaultConfig.settings,
package/src/textarea.tsx CHANGED
@@ -19,12 +19,12 @@ export interface TextareaProps extends Omit<React.ComponentPropsWithRef<'textare
19
19
  }
20
20
 
21
21
  /** Same ramp as Input, but a textarea is sized by padding, not by height. */
22
- const SIZE: Record<TextareaSize, Record<string, number>> = {
23
- xs: { paddingHorizontal: 8, paddingVertical: 4, fontSize: 12, borderRadius: 4 },
24
- sm: { paddingHorizontal: 12, paddingVertical: 8, fontSize: 14, borderRadius: 6 },
25
- md: { paddingHorizontal: 16, paddingVertical: 8, fontSize: 16, borderRadius: 6 },
26
- lg: { paddingHorizontal: 16, paddingVertical: 12, fontSize: 18, borderRadius: 8 },
27
- '2xl': { paddingHorizontal: 16, paddingVertical: 12, fontSize: 20, borderRadius: 8 },
22
+ const SIZE: Record<TextareaSize, Record<string, unknown>> = {
23
+ xs: { paddingHorizontal: 8, paddingVertical: 4, fontSize: '$1', borderRadius: 4 },
24
+ sm: { paddingHorizontal: 12, paddingVertical: 8, fontSize: '$3', borderRadius: 6 },
25
+ md: { paddingHorizontal: 16, paddingVertical: 8, fontSize: '$5', borderRadius: 6 },
26
+ lg: { paddingHorizontal: 16, paddingVertical: 12, fontSize: '$6', borderRadius: 8 },
27
+ '2xl': { paddingHorizontal: 16, paddingVertical: 12, fontSize: '$7', borderRadius: 8 },
28
28
  };
29
29
 
30
30
  export const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(