@hanzo/ui 8.29.4 → 8.29.6

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.
@@ -17,7 +17,8 @@ const jsx_runtime_1 = require("react/jsx-runtime");
17
17
  * action can be clicked, and the text never runs under either.
18
18
  *
19
19
  * gui has no `:focus-within` and no `:has()`, so focus, invalidity and disabling
20
- * are lifted from the field through context: the Input reports, the group draws.
20
+ * are lifted from the field through context: the Input reports, the group draws:
21
+ * under focus, its own edge brightened a step and no ring outside it.
21
22
  *
22
23
  * Structure and states after twenty-ui's InputGroup (MIT, see NOTICE): a row
23
24
  * with a 4px gap on the field box, start and end elements that never shrink,
@@ -30,6 +31,8 @@ const density_1 = require("./density.cjs");
30
31
  const slot_1 = require("./slot.cjs");
31
32
  /** What a grouped field reads: the group's box, and the two callbacks it reports through. */
32
33
  exports.GroupContext = (0, react_1.createContext)(null);
34
+ /** The edge under focus: a third of the ink, in either theme (glass.css says the same for the composer). */
35
+ const LIT = 'color-mix(in srgb, var(--foreground) 32%, transparent)';
33
36
  /** Quiet at rest, lifted under focus, dimmer still when the field is disabled. */
34
37
  const tone = (focused, disabled) => (disabled ? 0.4 : focused ? 0.9 : 0.6);
35
38
  function InputGroup({ start, end, size, fill = false, children, ...props }) {
@@ -40,10 +43,10 @@ function InputGroup({ start, end, size, fill = false, children, ...props }) {
40
43
  const [state, setState] = (0, react_1.useState)({ invalid: false, disabled: false });
41
44
  const report = (0, react_1.useCallback)((r) => setState((s) => (s.invalid === r.invalid && s.disabled === r.disabled ? s : r)), []);
42
45
  const ctx = (0, react_1.useMemo)(() => ({ size: resolved, focus: setFocused, report }), [resolved, report]);
43
- const edge = state.invalid ? (focused ? '$red8' : '$red7') : focused ? '$borderColorFocus' : '$borderColor';
46
+ // Focus is the box's own edge brightened a step, as the composer's is: one
47
+ // line in place, never a second ring a gap outside it.
48
+ const edge = state.invalid ? (focused ? '$red8' : '$red7') : focused ? LIT : '$borderColor';
44
49
  return ((0, jsx_runtime_1.jsx)(exports.GroupContext.Provider, { value: ctx, children: (0, jsx_runtime_1.jsxs)(gui_1.XStack, { ...(0, slot_1.slot)('input-group'), "data-focused": focused ? '' : undefined, "data-invalid": state.invalid ? '' : undefined, "data-disabled": state.disabled ? '' : undefined,
45
50
  // The Input sub-theme, so the edge under focus is the Input's own.
46
- componentName: "Input", ...control_1.FIELD, ...(density === 'compact' ? { bg: '$panel' } : null), ...(fill ? control_1.FILL : null), borderColor: edge, hoverStyle: state.disabled || focused ? undefined : { borderColor: '$borderColorHover' }, ...(focused
47
- ? { outlineColor: '$outlineColor', outlineWidth: 2, outlineStyle: 'solid', outlineOffset: 2 }
48
- : null), items: "center", gap: "$1", height: box.h, width: "100%", minW: 0, px: box.gutter, cursor: state.disabled ? 'not-allowed' : undefined, ...props, children: [start ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('input-group-start'), shrink: 0, items: "center", opacity: tone(focused, state.disabled), children: start })) : null, children, end ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('input-group-end'), shrink: 0, items: "center", gap: "$1", opacity: tone(focused, state.disabled), children: end })) : null] }) }));
51
+ componentName: "Input", ...control_1.FIELD, ...(density === 'compact' ? { bg: '$panel' } : null), ...(fill ? control_1.FILL : null), borderColor: edge, hoverStyle: state.disabled || focused ? undefined : { borderColor: '$borderColorHover' }, items: "center", gap: "$1", height: box.h, width: "100%", minW: 0, px: box.gutter, cursor: state.disabled ? 'not-allowed' : undefined, ...props, children: [start ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('input-group-start'), shrink: 0, items: "center", opacity: tone(focused, state.disabled), children: start })) : null, children, end ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('input-group-end'), shrink: 0, items: "center", gap: "$1", opacity: tone(focused, state.disabled), children: end })) : null] }) }));
49
52
  }
@@ -11,7 +11,8 @@
11
11
  * action can be clicked, and the text never runs under either.
12
12
  *
13
13
  * gui has no `:focus-within` and no `:has()`, so focus, invalidity and disabling
14
- * are lifted from the field through context: the Input reports, the group draws.
14
+ * are lifted from the field through context: the Input reports, the group draws:
15
+ * under focus, its own edge brightened a step and no ring outside it.
15
16
  *
16
17
  * Structure and states after twenty-ui's InputGroup (MIT, see NOTICE): a row
17
18
  * with a 4px gap on the field box, start and end elements that never shrink,
@@ -1 +1 @@
1
- {"version":3,"file":"input-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/input-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAiD,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1G,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AAI5D,KAAK,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAA;AAErD,6FAA6F;AAC7F,eAAO,MAAM,YAAY;UACjB,SAAS;WACR,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI;YACpB,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI;SACd,CAAA;AAEf,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IAC9E,2DAA2D;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,wDAAwD;IACxD,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,uEAAuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAKD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAY,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BAwDjG"}
1
+ {"version":3,"file":"input-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/input-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAiD,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1G,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AAI5D,KAAK,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAA;AAErD,6FAA6F;AAC7F,eAAO,MAAM,YAAY;UACjB,SAAS;WACR,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI;YACpB,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI;SACd,CAAA;AAEf,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IAC9E,2DAA2D;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,wDAAwD;IACxD,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,uEAAuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAQD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAY,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BAqDjG"}
@@ -13,7 +13,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  * action can be clicked, and the text never runs under either.
14
14
  *
15
15
  * gui has no `:focus-within` and no `:has()`, so focus, invalidity and disabling
16
- * are lifted from the field through context: the Input reports, the group draws.
16
+ * are lifted from the field through context: the Input reports, the group draws:
17
+ * under focus, its own edge brightened a step and no ring outside it.
17
18
  *
18
19
  * Structure and states after twenty-ui's InputGroup (MIT, see NOTICE): a row
19
20
  * with a 4px gap on the field box, start and end elements that never shrink,
@@ -26,6 +27,8 @@ import { fieldSize, useDensity } from './density.js';
26
27
  import { slot } from './slot.js';
27
28
  /** What a grouped field reads: the group's box, and the two callbacks it reports through. */
28
29
  export const GroupContext = /* @__PURE__ */ createContext(null);
30
+ /** The edge under focus: a third of the ink, in either theme (glass.css says the same for the composer). */
31
+ const LIT = 'color-mix(in srgb, var(--foreground) 32%, transparent)';
29
32
  /** Quiet at rest, lifted under focus, dimmer still when the field is disabled. */
30
33
  const tone = (focused, disabled) => (disabled ? 0.4 : focused ? 0.9 : 0.6);
31
34
  export function InputGroup({ start, end, size, fill = false, children, ...props }) {
@@ -36,11 +39,11 @@ export function InputGroup({ start, end, size, fill = false, children, ...props
36
39
  const [state, setState] = useState({ invalid: false, disabled: false });
37
40
  const report = useCallback((r) => setState((s) => (s.invalid === r.invalid && s.disabled === r.disabled ? s : r)), []);
38
41
  const ctx = useMemo(() => ({ size: resolved, focus: setFocused, report }), [resolved, report]);
39
- const edge = state.invalid ? (focused ? '$red8' : '$red7') : focused ? '$borderColorFocus' : '$borderColor';
42
+ // Focus is the box's own edge brightened a step, as the composer's is: one
43
+ // line in place, never a second ring a gap outside it.
44
+ const edge = state.invalid ? (focused ? '$red8' : '$red7') : focused ? LIT : '$borderColor';
40
45
  return (_jsx(GroupContext.Provider, { value: ctx, children: _jsxs(XStack, { ...slot('input-group'), "data-focused": focused ? '' : undefined, "data-invalid": state.invalid ? '' : undefined, "data-disabled": state.disabled ? '' : undefined,
41
46
  // The Input sub-theme, so the edge under focus is the Input's own.
42
- componentName: "Input", ...FIELD, ...(density === 'compact' ? { bg: '$panel' } : null), ...(fill ? FILL : null), borderColor: edge, hoverStyle: state.disabled || focused ? undefined : { borderColor: '$borderColorHover' }, ...(focused
43
- ? { outlineColor: '$outlineColor', outlineWidth: 2, outlineStyle: 'solid', outlineOffset: 2 }
44
- : null), items: "center", gap: "$1", height: box.h, width: "100%", minW: 0, px: box.gutter, cursor: state.disabled ? 'not-allowed' : undefined, ...props, children: [start ? (_jsx(XStack, { ...slot('input-group-start'), shrink: 0, items: "center", opacity: tone(focused, state.disabled), children: start })) : null, children, end ? (_jsx(XStack, { ...slot('input-group-end'), shrink: 0, items: "center", gap: "$1", opacity: tone(focused, state.disabled), children: end })) : null] }) }));
47
+ componentName: "Input", ...FIELD, ...(density === 'compact' ? { bg: '$panel' } : null), ...(fill ? FILL : null), borderColor: edge, hoverStyle: state.disabled || focused ? undefined : { borderColor: '$borderColorHover' }, items: "center", gap: "$1", height: box.h, width: "100%", minW: 0, px: box.gutter, cursor: state.disabled ? 'not-allowed' : undefined, ...props, children: [start ? (_jsx(XStack, { ...slot('input-group-start'), shrink: 0, items: "center", opacity: tone(focused, state.disabled), children: start })) : null, children, end ? (_jsx(XStack, { ...slot('input-group-end'), shrink: 0, items: "center", gap: "$1", opacity: tone(focused, state.disabled), children: end })) : null] }) }));
45
48
  }
46
49
  //# sourceMappingURL=input-group.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-group.js","sourceRoot":"","sources":["../../../src/backends/gui/input-group.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-group.js","sourceRoot":"","sources":["../../../src/backends/gui/input-group.tsx"],"names":[],"mappings":"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"}
package/dist/gallery.html CHANGED
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang="en" class="t_dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>@hanzo/ui 8.29.4</title><style>/* @hanzo/ui — generated by scripts/gen-css.mjs. Do not edit. */
1
+ <!doctype html><html lang="en" class="t_dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>@hanzo/ui 8.29.6</title><style>/* @hanzo/ui — generated by scripts/gen-css.mjs. Do not edit. */
2
2
  :root { --hanzo-ui-styles: 1; }
3
3
  /* Hanzo Design System — the entry point. Import THIS one file.
4
4
  *
@@ -2769,7 +2769,10 @@
2769
2769
  `:has` is unsupported neither applies and the field keeps drawing its own
2770
2770
  ring, so no browser reaches a state with a focused composer and no indicator
2771
2771
  anywhere. */
2772
- [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
2772
+ /* `:root` first, because gui writes each edge's colour as `:root ._btc-x._btc-x`
2773
+ (0,3,0), injected after this sheet: at equal weight the later rule won and
2774
+ the edge never moved. One more step of weight is the whole fix. */
2775
+ :root [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
2773
2776
  border-color: color-mix(in srgb, var(--foreground) 32%, transparent);
2774
2777
  }
2775
2778
 
package/dist/glass.css CHANGED
@@ -327,7 +327,10 @@
327
327
  `:has` is unsupported neither applies and the field keeps drawing its own
328
328
  ring, so no browser reaches a state with a focused composer and no indicator
329
329
  anywhere. */
330
- [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
330
+ /* `:root` first, because gui writes each edge's colour as `:root ._btc-x._btc-x`
331
+ (0,3,0), injected after this sheet: at equal weight the later rule won and
332
+ the edge never moved. One more step of weight is the whole fix. */
333
+ :root [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
331
334
  border-color: color-mix(in srgb, var(--foreground) 32%, transparent);
332
335
  }
333
336
 
package/dist/styles.css CHANGED
@@ -2769,7 +2769,10 @@
2769
2769
  `:has` is unsupported neither applies and the field keeps drawing its own
2770
2770
  ring, so no browser reaches a state with a focused composer and no indicator
2771
2771
  anywhere. */
2772
- [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
2772
+ /* `:root` first, because gui writes each edge's colour as `:root ._btc-x._btc-x`
2773
+ (0,3,0), injected after this sheet: at equal weight the later rule won and
2774
+ the edge never moved. One more step of weight is the whole fix. */
2775
+ :root [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
2773
2776
  border-color: color-mix(in srgb, var(--foreground) 32%, transparent);
2774
2777
  }
2775
2778
 
package/dist/theme.css CHANGED
@@ -2767,7 +2767,10 @@
2767
2767
  `:has` is unsupported neither applies and the field keeps drawing its own
2768
2768
  ring, so no browser reaches a state with a focused composer and no indicator
2769
2769
  anywhere. */
2770
- [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
2770
+ /* `:root` first, because gui writes each edge's colour as `:root ._btc-x._btc-x`
2771
+ (0,3,0), injected after this sheet: at equal weight the later rule won and
2772
+ the edge never moved. One more step of weight is the whole fix. */
2773
+ :root [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
2771
2774
  border-color: color-mix(in srgb, var(--foreground) 32%, transparent);
2772
2775
  }
2773
2776
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.29.4",
3
+ "version": "8.29.6",
4
4
  "type": "module",
5
5
  "description": "Hanzo UI — the one canonical Hanzo component library, on @hanzo/gui + @hanzo/design. ONE substrate: every component renders through @hanzo/gui primitives, so the same import works on web, native (expo) and desktop (Tauri). Self-contained (theme.css), presentational, host-agnostic, clean-room.",
6
6
  "exports": {