@hanzo/ui 8.0.115 → 8.0.117

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.
@@ -29,14 +29,14 @@ const CopyButton_1 = require("./CopyButton.cjs");
29
29
  const instrument_1 = require("./instrument.cjs");
30
30
  const mask_1 = require("../backends/gui/mask.cjs");
31
31
  Object.defineProperty(exports, "masked", { enumerable: true, get: function () { return mask_1.masked; } });
32
- function SecretInput({ value, onChange, placeholder, disabled, copy = true, id, }) {
32
+ function SecretInput({ value, onChange, placeholder, disabled, copy = true, id, invalid, 'aria-describedby': describedBy, }) {
33
33
  const [shown, setShown] = (0, react_1.useState)(false);
34
34
  const track = (0, instrument_1.useEmit)();
35
35
  const toggle = () => {
36
36
  track({ component: 'SecretInput', action: shown ? 'close' : 'open', id });
37
37
  setShown((s) => !s);
38
38
  };
39
- return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1", px: "$2", rounded: "$3", borderWidth: 1, borderColor: "$borderColor", bg: "$background", opacity: disabled ? 0.5 : 1, children: [(0, jsx_runtime_1.jsx)(gui_1.Input, { flex: 1, minW: 0, borderWidth: 0, bg: "transparent", value: value, onChangeText: onChange
39
+ return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1", px: "$2", rounded: "$3", borderWidth: 1, borderColor: invalid ? '$red10' : '$borderColor', bg: "$background", opacity: disabled ? 0.5 : 1, children: [(0, jsx_runtime_1.jsx)(gui_1.Input, { flex: 1, minW: 0, borderWidth: 0, bg: "transparent", "aria-invalid": invalid ? 'true' : undefined, "aria-describedby": describedBy, value: value, onChangeText: onChange
40
40
  ? (v) => {
41
41
  track({ component: 'SecretInput', action: 'change', id, value: v.length });
42
42
  onChange(v);
@@ -10,6 +10,13 @@ export type SecretInputProps = {
10
10
  copy?: boolean;
11
11
  /** Names the secret in analytics ("openai-key"). Never the value. */
12
12
  id?: string;
13
+ /** Failed validation: reddens the frame AND says so to a screen reader. A
14
+ * colour alone is not a message, and a required key is the field's most
15
+ * common error. */
16
+ invalid?: boolean;
17
+ /** id of the element holding the error text, so the field announces WHY it is
18
+ * invalid rather than only that it is. */
19
+ 'aria-describedby'?: string;
13
20
  };
14
- export declare function SecretInput({ value, onChange, placeholder, disabled, copy, id, }: SecretInputProps): import("react/jsx-runtime").JSX.Element;
21
+ export declare function SecretInput({ value, onChange, placeholder, disabled, copy, id, invalid, 'aria-describedby': describedBy, }: SecretInputProps): import("react/jsx-runtime").JSX.Element;
15
22
  //# sourceMappingURL=SecretInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SecretInput.d.ts","sourceRoot":"","sources":["../../src/product/SecretInput.tsx"],"names":[],"mappings":"AA0BA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAM7C,OAAO,EAAE,MAAM,EAAE,CAAA;AAEjB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,qEAAqE;IACrE,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,IAAW,EACX,EAAE,GACH,EAAE,gBAAgB,2CAkElB"}
1
+ {"version":3,"file":"SecretInput.d.ts","sourceRoot":"","sources":["../../src/product/SecretInput.tsx"],"names":[],"mappings":"AA0BA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAM7C,OAAO,EAAE,MAAM,EAAE,CAAA;AAEjB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,qEAAqE;IACrE,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;wBAEoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;+CAC2C;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,IAAW,EACX,EAAE,EACF,OAAO,EACP,kBAAkB,EAAE,WAAW,GAChC,EAAE,gBAAgB,2CAoElB"}
@@ -29,14 +29,14 @@ import { masked } from '../backends/gui/mask.js';
29
29
  // `@hanzo/ui/product/pure`. Re-exported here because it was published from this
30
30
  // module and the product barrel still carries it.
31
31
  export { masked };
32
- export function SecretInput({ value, onChange, placeholder, disabled, copy = true, id, }) {
32
+ export function SecretInput({ value, onChange, placeholder, disabled, copy = true, id, invalid, 'aria-describedby': describedBy, }) {
33
33
  const [shown, setShown] = useState(false);
34
34
  const track = useEmit();
35
35
  const toggle = () => {
36
36
  track({ component: 'SecretInput', action: shown ? 'close' : 'open', id });
37
37
  setShown((s) => !s);
38
38
  };
39
- return (_jsxs(XStack, { items: "center", gap: "$1", px: "$2", rounded: "$3", borderWidth: 1, borderColor: "$borderColor", bg: "$background", opacity: disabled ? 0.5 : 1, children: [_jsx(Input, { flex: 1, minW: 0, borderWidth: 0, bg: "transparent", value: value, onChangeText: onChange
39
+ return (_jsxs(XStack, { items: "center", gap: "$1", px: "$2", rounded: "$3", borderWidth: 1, borderColor: invalid ? '$red10' : '$borderColor', bg: "$background", opacity: disabled ? 0.5 : 1, children: [_jsx(Input, { flex: 1, minW: 0, borderWidth: 0, bg: "transparent", "aria-invalid": invalid ? 'true' : undefined, "aria-describedby": describedBy, value: value, onChangeText: onChange
40
40
  ? (v) => {
41
41
  track({ component: 'SecretInput', action: 'change', id, value: v.length });
42
42
  onChange(v);
@@ -1 +1 @@
1
- {"version":3,"file":"SecretInput.js","sourceRoot":"","sources":["../../src/product/SecretInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SecretInput.js","sourceRoot":"","sources":["../../src/product/SecretInput.tsx"],"names":[],"mappings":"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"}
package/dist/root.cjs CHANGED
@@ -47,12 +47,18 @@ require("./styles.css");
47
47
  * production. `styles.css` declares `--hanzo-ui-styles`, so the check is one
48
48
  * lookup, it runs once, and it names the fix. Development only.
49
49
  *
50
- * A document with NO stylesheets at all is jsdom, where nothing loads CSS and
51
- * there is nothing to be wrong about — throwing there would break every
52
- * consumer's unit tests to report a condition that cannot exist. */
50
+ * Only a sheet with an OWNER ELEMENT counts. A bundler that processed the CSS
51
+ * emits a `<link>` or a `<style>`; jsdom loads no CSS at all, so a document
52
+ * with no such element cannot answer the question and must not be asked —
53
+ * throwing there breaks every consumer's unit tests to report a condition that
54
+ * cannot exist. Counting SHEETS instead of elements is what made that happen:
55
+ * the gui runtime inserts its own ownerless sheet while this module is being
56
+ * imported, so by first render jsdom was never empty and every jest consumer
57
+ * rendering `<Hanzo>` threw. */
53
58
  let checked = false;
59
+ const styled = () => [...document.styleSheets].some((s) => s.ownerNode);
54
60
  const assertStylesheet = () => {
55
- if (checked || typeof document === 'undefined' || document.styleSheets.length === 0)
61
+ if (checked || typeof document === 'undefined' || !styled())
56
62
  return;
57
63
  checked = true;
58
64
  if (getComputedStyle(document.documentElement).getPropertyValue('--hanzo-ui-styles').trim())
@@ -1 +1 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.tsx"],"names":[],"mappings":"AAqCA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKjD,OAAO,cAAc,CAAA;AAErB,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACxB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,eAAe,CAAA;CACtC,CAAA;AAqBD,eAAO,MAAM,KAAK,GAAI,gCAAyC,UAAU,4CA+BxE,CAAA;AAED,eAAe,KAAK,CAAA"}
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.tsx"],"names":[],"mappings":"AAqCA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKjD,OAAO,cAAc,CAAA;AAErB,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACxB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,eAAe,CAAA;CACtC,CAAA;AA2BD,eAAO,MAAM,KAAK,GAAI,gCAAyC,UAAU,4CA+BxE,CAAA;AAED,eAAe,KAAK,CAAA"}
package/dist/root.js CHANGED
@@ -44,12 +44,18 @@ import './styles.css';
44
44
  * production. `styles.css` declares `--hanzo-ui-styles`, so the check is one
45
45
  * lookup, it runs once, and it names the fix. Development only.
46
46
  *
47
- * A document with NO stylesheets at all is jsdom, where nothing loads CSS and
48
- * there is nothing to be wrong about — throwing there would break every
49
- * consumer's unit tests to report a condition that cannot exist. */
47
+ * Only a sheet with an OWNER ELEMENT counts. A bundler that processed the CSS
48
+ * emits a `<link>` or a `<style>`; jsdom loads no CSS at all, so a document
49
+ * with no such element cannot answer the question and must not be asked —
50
+ * throwing there breaks every consumer's unit tests to report a condition that
51
+ * cannot exist. Counting SHEETS instead of elements is what made that happen:
52
+ * the gui runtime inserts its own ownerless sheet while this module is being
53
+ * imported, so by first render jsdom was never empty and every jest consumer
54
+ * rendering `<Hanzo>` threw. */
50
55
  let checked = false;
56
+ const styled = () => [...document.styleSheets].some((s) => s.ownerNode);
51
57
  const assertStylesheet = () => {
52
- if (checked || typeof document === 'undefined' || document.styleSheets.length === 0)
58
+ if (checked || typeof document === 'undefined' || !styled())
53
59
  return;
54
60
  checked = true;
55
61
  if (getComputedStyle(document.documentElement).getPropertyValue('--hanzo-ui-styles').trim())
package/dist/root.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAA;AAEjD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,cAAc,CAAA;AAgCrB;;;;;;qEAMqE;AACrE,IAAI,OAAO,GAAG,KAAK,CAAA;AACnB,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC5B,IAAI,OAAO,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAC3F,OAAO,GAAG,IAAI,CAAA;IACd,IAAI,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE;QAAE,OAAM;IACnG,MAAM,IAAI,KAAK,CACb,qFAAqF;QACnF,iFAAiF;QACjF,kDAAkD,CACrD,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,EAAE,SAAS,EAAc,EAAE,EAAE;IAC3E,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;QAAE,gBAAgB,EAAE,CAAA;IAC7D,wEAAwE;IACxE,EAAE;IACF,4EAA4E;IAC5E,4EAA4E;IAC5E,0EAA0E;IAC1E,8EAA8E;IAC9E,8EAA8E;IAC9E,wBAAwB;IACxB,EAAE;IACF,sEAAsE;IACtE,4EAA4E;IAC5E,qCAAqC;IACrC,EAAE;IACF,yEAAyE;IACzE,mEAAmE;IACnE,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IACf,CAAC,EAAE,EAAE,CAAC,CAAA;IACN,MAAM,IAAI,GAAG,CACX,KAAC,WAAW,IAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,kBAC/D,QAAQ,GACG,CACf,CAAA;IACD,6EAA6E;IAC7E,yEAAyE;IACzE,8EAA8E;IAC9E,qDAAqD;IACrD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAC3B,OAAO,KAAC,iBAAiB,OAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,YAAG,IAAI,GAAqB,CAAA;AACjG,CAAC,CAAA;AAED,eAAe,KAAK,CAAA"}
1
+ {"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAA;AAEjD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,cAAc,CAAA;AAgCrB;;;;;;;;;;;iCAWiC;AACjC,IAAI,OAAO,GAAG,KAAK,CAAA;AACnB,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AACvE,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC5B,IAAI,OAAO,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,MAAM,EAAE;QAAE,OAAM;IACnE,OAAO,GAAG,IAAI,CAAA;IACd,IAAI,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE;QAAE,OAAM;IACnG,MAAM,IAAI,KAAK,CACb,qFAAqF;QACnF,iFAAiF;QACjF,kDAAkD,CACrD,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,EAAE,SAAS,EAAc,EAAE,EAAE;IAC3E,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;QAAE,gBAAgB,EAAE,CAAA;IAC7D,wEAAwE;IACxE,EAAE;IACF,4EAA4E;IAC5E,4EAA4E;IAC5E,0EAA0E;IAC1E,8EAA8E;IAC9E,8EAA8E;IAC9E,wBAAwB;IACxB,EAAE;IACF,sEAAsE;IACtE,4EAA4E;IAC5E,qCAAqC;IACrC,EAAE;IACF,yEAAyE;IACzE,mEAAmE;IACnE,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IACf,CAAC,EAAE,EAAE,CAAC,CAAA;IACN,MAAM,IAAI,GAAG,CACX,KAAC,WAAW,IAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,kBAC/D,QAAQ,GACG,CACf,CAAA;IACD,6EAA6E;IAC7E,yEAAyE;IACzE,8EAA8E;IAC9E,qDAAqD;IACrD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAC3B,OAAO,KAAC,iBAAiB,OAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,YAAG,IAAI,GAAqB,CAAA;AACjG,CAAC,CAAA;AAED,eAAe,KAAK,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.0.115",
3
+ "version": "8.0.117",
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": {
@@ -193,7 +193,7 @@
193
193
  "dist"
194
194
  ],
195
195
  "dependencies": {
196
- "@hanzo/appearance": "^0.1.4",
196
+ "@hanzo/appearance": "^0.2.2",
197
197
  "@hanzo/brand": "^1.4.5",
198
198
  "@hanzo/design": "^0.5.16",
199
199
  "@hanzo/logo": "^1.0.13",