@hanzo/ui 8.0.95 → 8.0.98

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,19 +1,58 @@
1
1
  'use client';"use strict";
2
2
  'use client';
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.hostBrand = void 0;
4
5
  exports.BrandMark = BrandMark;
5
6
  const jsx_runtime_1 = require("react/jsx-runtime");
6
7
  /**
7
- * BrandMark — the canonical brand lockup for an app header, from @hanzo/logo
8
- * (the ONE home of the mark geometry + motion). Animated by default: intro
9
- * flip + idle breathing + a wordmark that slides in, holds, then collapses
10
- * (returns on hover). Pure CSS, reduced-motion-safe; the mark inherits
11
- * `currentColor` so it themes for free. White-label via `wordmark`.
8
+ * BrandMark — the brand's mark, for any brand this design system dresses.
9
+ *
10
+ * It used to render `HanzoLogo` with `wordmark = 'Hanzo'` baked in, so the ONE
11
+ * canonical mark could only ever say Hanzo. Every white-label surface therefore
12
+ * had to write its own the console carries two — which is how a shared
13
+ * component ends up shared by nobody: a lux or zoo host mounting this rendered
14
+ * the Hanzo H, and that is the white-label invariant broken outright.
15
+ *
16
+ * The geometry was never ours to hold either. `@hanzo/brand` is the fleet
17
+ * registry (`BRAND_MARKS`, keyed by the same id that keys the IAM org) and it
18
+ * ALREADY composes `@hanzo/logo` for Hanzo's own paths — so reaching past it to
19
+ * `@hanzo/logo` skipped the one layer that knows there is more than one brand.
20
+ * One registry, one mark per brand, resolved by the host that asked.
21
+ *
22
+ * MOTION IS THE APP'S, deliberately. A brand's animated mark ships in that
23
+ * brand's own package (`@luxfi/logo`, `@zooai/logo`); depending on all of them
24
+ * here would put every brand's bytes in every brand's page, which is the
25
+ * cross-bundling the registry exists to prevent. So `animated` is a SLOT — pass
26
+ * the getter the app already carries — and Hanzo's is the default only because
27
+ * `@hanzo/logo` is a dependency of the registry regardless.
12
28
  */
29
+ const registry_1 = require("@hanzo/brand/registry");
13
30
  const react_1 = require("@hanzo/logo/react");
14
- const HanzoMark_1 = require("./HanzoMark.cjs");
15
- function BrandMark({ size = 20, wordmark = 'Hanzo', animated = true, }) {
16
- if (!animated)
17
- return (0, jsx_runtime_1.jsx)(HanzoMark_1.HanzoMark, { size: size });
18
- return (0, jsx_runtime_1.jsx)(react_1.HanzoLogo, { animated: true, size: size, wordmark: wordmark });
31
+ /** The brand this surface is serving, from its own hostname. Server-side there
32
+ * is no host to read, so it answers the default the same answer the registry
33
+ * gives an unrecognized host, and the same one the app corrects by passing
34
+ * `brand` explicitly when it resolves the brand its own way. */
35
+ const hostBrand = () => typeof window === 'undefined' ? registry_1.DEFAULT_BRAND : (0, registry_1.brandFromHost)(window.location.hostname);
36
+ exports.hostBrand = hostBrand;
37
+ function BrandMark({ size = 20, brand, wordmark, animated = true, color = 'currentColor', }) {
38
+ const id = brand ?? (0, exports.hostBrand)();
39
+ const mark = registry_1.BRAND_MARKS[id] ?? registry_1.BRAND_MARKS[registry_1.DEFAULT_BRAND];
40
+ const name = registry_1.BRANDS[id]?.name ?? registry_1.BRANDS[registry_1.DEFAULT_BRAND].name;
41
+ const label = wordmark === false ? name : (wordmark ?? name);
42
+ // An app-supplied mark for a brand whose motion this package cannot carry.
43
+ if (typeof animated === 'function') {
44
+ // The published marks are self-contained and carry a viewBox but no width or
45
+ // height, so they fill whatever box they are given.
46
+ const svg = animated().replace('<svg ', '<svg width="100%" height="100%" ');
47
+ return ((0, jsx_runtime_1.jsx)("span", { role: "img", "aria-label": label, style: { width: size, height: size, display: 'inline-flex', flexShrink: 0 },
48
+ // A brand's own published mark — a package constant, never user input.
49
+ dangerouslySetInnerHTML: { __html: svg } }));
50
+ }
51
+ // Hanzo's motion is the one this package already depends on.
52
+ if (animated && id === 'hanzo') {
53
+ return (0, jsx_runtime_1.jsx)(react_1.HanzoLogo, { animated: true, size: size, wordmark: wordmark === false ? undefined : label });
54
+ }
55
+ return ((0, jsx_runtime_1.jsx)("svg", { width: size, height: size, viewBox: mark.viewBox, role: "img", "aria-label": label, ...(mark.colored ? null : { fill: color }), style: { display: 'block', flexShrink: 0 },
56
+ // Registry geometry — a build-time package constant, never user input.
57
+ dangerouslySetInnerHTML: { __html: mark.content } }));
19
58
  }
@@ -1,8 +1,49 @@
1
- export declare function BrandMark({ size, wordmark, animated, }: {
1
+ /**
2
+ * BrandMark — the brand's mark, for any brand this design system dresses.
3
+ *
4
+ * It used to render `HanzoLogo` with `wordmark = 'Hanzo'` baked in, so the ONE
5
+ * canonical mark could only ever say Hanzo. Every white-label surface therefore
6
+ * had to write its own — the console carries two — which is how a shared
7
+ * component ends up shared by nobody: a lux or zoo host mounting this rendered
8
+ * the Hanzo H, and that is the white-label invariant broken outright.
9
+ *
10
+ * The geometry was never ours to hold either. `@hanzo/brand` is the fleet
11
+ * registry (`BRAND_MARKS`, keyed by the same id that keys the IAM org) and it
12
+ * ALREADY composes `@hanzo/logo` for Hanzo's own paths — so reaching past it to
13
+ * `@hanzo/logo` skipped the one layer that knows there is more than one brand.
14
+ * One registry, one mark per brand, resolved by the host that asked.
15
+ *
16
+ * MOTION IS THE APP'S, deliberately. A brand's animated mark ships in that
17
+ * brand's own package (`@luxfi/logo`, `@zooai/logo`); depending on all of them
18
+ * here would put every brand's bytes in every brand's page, which is the
19
+ * cross-bundling the registry exists to prevent. So `animated` is a SLOT — pass
20
+ * the getter the app already carries — and Hanzo's is the default only because
21
+ * `@hanzo/logo` is a dependency of the registry regardless.
22
+ */
23
+ import { type BrandId } from '@hanzo/brand/registry';
24
+ /** The brand this surface is serving, from its own hostname. Server-side there
25
+ * is no host to read, so it answers the default — the same answer the registry
26
+ * gives an unrecognized host, and the same one the app corrects by passing
27
+ * `brand` explicitly when it resolves the brand its own way. */
28
+ export declare const hostBrand: () => BrandId;
29
+ export type BrandMarkProps = {
30
+ /** Edge of the mark, px. */
2
31
  size?: number;
3
- /** Wordmark text (white-label): "Hanzo", "Lux", "Zoo", … */
4
- wordmark?: string;
5
- /** false = the static mark alone (no motion shell, no wordmark). */
6
- animated?: boolean;
7
- }): import("react/jsx-runtime").JSX.Element;
32
+ /** Which brand. Defaults to the host's — the white-label resolution. */
33
+ brand?: BrandId;
34
+ /**
35
+ * Wordmark beside the mark. Defaults to the brand's own name; `false` renders
36
+ * the mark alone. Only the animated lockup draws one.
37
+ */
38
+ wordmark?: string | false;
39
+ /**
40
+ * Motion. `true` animates when this app carries that brand's motion package
41
+ * (Hanzo's rides along with the registry); pass a getter returning SVG markup
42
+ * for any other brand; `false` is the static mark.
43
+ */
44
+ animated?: boolean | (() => string);
45
+ /** Ink for a mark that inherits it. A `colored` mark keeps its own fills. */
46
+ color?: string;
47
+ };
48
+ export declare function BrandMark({ size, brand, wordmark, animated, color, }: BrandMarkProps): import("react/jsx-runtime").JSX.Element;
8
49
  //# sourceMappingURL=BrandMark.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrandMark.d.ts","sourceRoot":"","sources":["../../src/product/BrandMark.tsx"],"names":[],"mappings":"AAaA,wBAAgB,SAAS,CAAC,EACxB,IAAS,EACT,QAAkB,EAClB,QAAe,GAChB,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,2CAGA"}
1
+ {"version":3,"file":"BrandMark.d.ts","sourceRoot":"","sources":["../../src/product/BrandMark.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAqD,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAGvG;;;iEAGiE;AACjE,eAAO,MAAM,SAAS,QAAO,OAC4D,CAAA;AAEzF,MAAM,MAAM,cAAc,GAAG;IAC3B,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,CAAA;IACnC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAe,EACf,KAAsB,GACvB,EAAE,cAAc,2CA2ChB"}
@@ -1,17 +1,54 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  /**
4
- * BrandMark — the canonical brand lockup for an app header, from @hanzo/logo
5
- * (the ONE home of the mark geometry + motion). Animated by default: intro
6
- * flip + idle breathing + a wordmark that slides in, holds, then collapses
7
- * (returns on hover). Pure CSS, reduced-motion-safe; the mark inherits
8
- * `currentColor` so it themes for free. White-label via `wordmark`.
4
+ * BrandMark — the brand's mark, for any brand this design system dresses.
5
+ *
6
+ * It used to render `HanzoLogo` with `wordmark = 'Hanzo'` baked in, so the ONE
7
+ * canonical mark could only ever say Hanzo. Every white-label surface therefore
8
+ * had to write its own the console carries two — which is how a shared
9
+ * component ends up shared by nobody: a lux or zoo host mounting this rendered
10
+ * the Hanzo H, and that is the white-label invariant broken outright.
11
+ *
12
+ * The geometry was never ours to hold either. `@hanzo/brand` is the fleet
13
+ * registry (`BRAND_MARKS`, keyed by the same id that keys the IAM org) and it
14
+ * ALREADY composes `@hanzo/logo` for Hanzo's own paths — so reaching past it to
15
+ * `@hanzo/logo` skipped the one layer that knows there is more than one brand.
16
+ * One registry, one mark per brand, resolved by the host that asked.
17
+ *
18
+ * MOTION IS THE APP'S, deliberately. A brand's animated mark ships in that
19
+ * brand's own package (`@luxfi/logo`, `@zooai/logo`); depending on all of them
20
+ * here would put every brand's bytes in every brand's page, which is the
21
+ * cross-bundling the registry exists to prevent. So `animated` is a SLOT — pass
22
+ * the getter the app already carries — and Hanzo's is the default only because
23
+ * `@hanzo/logo` is a dependency of the registry regardless.
9
24
  */
25
+ import { BRANDS, BRAND_MARKS, DEFAULT_BRAND, brandFromHost } from '@hanzo/brand/registry';
10
26
  import { HanzoLogo } from '@hanzo/logo/react';
11
- import { HanzoMark } from './HanzoMark.js';
12
- export function BrandMark({ size = 20, wordmark = 'Hanzo', animated = true, }) {
13
- if (!animated)
14
- return _jsx(HanzoMark, { size: size });
15
- return _jsx(HanzoLogo, { animated: true, size: size, wordmark: wordmark });
27
+ /** The brand this surface is serving, from its own hostname. Server-side there
28
+ * is no host to read, so it answers the default the same answer the registry
29
+ * gives an unrecognized host, and the same one the app corrects by passing
30
+ * `brand` explicitly when it resolves the brand its own way. */
31
+ export const hostBrand = () => typeof window === 'undefined' ? DEFAULT_BRAND : brandFromHost(window.location.hostname);
32
+ export function BrandMark({ size = 20, brand, wordmark, animated = true, color = 'currentColor', }) {
33
+ const id = brand ?? hostBrand();
34
+ const mark = BRAND_MARKS[id] ?? BRAND_MARKS[DEFAULT_BRAND];
35
+ const name = BRANDS[id]?.name ?? BRANDS[DEFAULT_BRAND].name;
36
+ const label = wordmark === false ? name : (wordmark ?? name);
37
+ // An app-supplied mark for a brand whose motion this package cannot carry.
38
+ if (typeof animated === 'function') {
39
+ // The published marks are self-contained and carry a viewBox but no width or
40
+ // height, so they fill whatever box they are given.
41
+ const svg = animated().replace('<svg ', '<svg width="100%" height="100%" ');
42
+ return (_jsx("span", { role: "img", "aria-label": label, style: { width: size, height: size, display: 'inline-flex', flexShrink: 0 },
43
+ // A brand's own published mark — a package constant, never user input.
44
+ dangerouslySetInnerHTML: { __html: svg } }));
45
+ }
46
+ // Hanzo's motion is the one this package already depends on.
47
+ if (animated && id === 'hanzo') {
48
+ return _jsx(HanzoLogo, { animated: true, size: size, wordmark: wordmark === false ? undefined : label });
49
+ }
50
+ return (_jsx("svg", { width: size, height: size, viewBox: mark.viewBox, role: "img", "aria-label": label, ...(mark.colored ? null : { fill: color }), style: { display: 'block', flexShrink: 0 },
51
+ // Registry geometry — a build-time package constant, never user input.
52
+ dangerouslySetInnerHTML: { __html: mark.content } }));
16
53
  }
17
54
  //# sourceMappingURL=BrandMark.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrandMark.js","sourceRoot":"","sources":["../../src/product/BrandMark.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,UAAU,SAAS,CAAC,EACxB,IAAI,GAAG,EAAE,EACT,QAAQ,GAAG,OAAO,EAClB,QAAQ,GAAG,IAAI,GAOhB;IACC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,GAAI,CAAA;IAC/C,OAAO,KAAC,SAAS,IAAC,QAAQ,QAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAA;AAC/D,CAAC"}
1
+ {"version":3,"file":"BrandMark.js","sourceRoot":"","sources":["../../src/product/BrandMark.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAgB,MAAM,uBAAuB,CAAA;AACvG,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C;;;iEAGiE;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,GAAY,EAAE,CACrC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAsBzF,MAAM,UAAU,SAAS,CAAC,EACxB,IAAI,GAAG,EAAE,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,KAAK,GAAG,cAAc,GACP;IACf,MAAM,EAAE,GAAG,KAAK,IAAI,SAAS,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,aAAa,CAAC,CAAA;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAA;IAC3D,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAA;IAE5D,2EAA2E;IAC3E,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,6EAA6E;QAC7E,oDAAoD;QACpD,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAA;QAC3E,OAAO,CACL,eACE,IAAI,EAAC,KAAK,gBACE,KAAK,EACjB,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,EAAE;YAC3E,uEAAuE;YACvE,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GACxC,CACH,CAAA;IACH,CAAC;IAED,6DAA6D;IAC7D,IAAI,QAAQ,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,KAAC,SAAS,IAAC,QAAQ,QAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,GAAI,CAAA;IAC7F,CAAC;IAED,OAAO,CACL,cACE,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAC,KAAK,gBACE,KAAK,KAIb,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAC3C,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE;QAC1C,uEAAuE;QACvE,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GACjD,CACH,CAAA;AACH,CAAC"}
@@ -4,13 +4,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.HanzoMark = HanzoMark;
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  /**
7
- * The Hanzo "H" mark — the canonical 7-path shaded glyph: five body blocks +
8
- * two shade slivers (geometry canon: @hanzo/logo `MARK_PATHS`).
7
+ * The Hanzo "H" — the house mark, static, inheriting `currentColor`.
9
8
  *
10
- * Rendered as inline SVG with `fill: currentColor` (shade at reduced opacity),
11
- * so it inherits the surrounding text color and adapts to the dark/light theme
12
- * with no per-theme asset. ONE source for the mark across the chrome.
9
+ * It held its own copy of the seven paths, which made three copies of one
10
+ * geometry across the fleet: `@hanzo/logo` publishes the canon, `@hanzo/brand`
11
+ * composes it into the registry, and this transcribed it a third time. A
12
+ * transcription drifts silently — it is right until the canon moves — so it
13
+ * reads the registry now, like every other mark.
14
+ *
15
+ * Kept as its own name because it means something the general one cannot: the
16
+ * HOUSE mark specifically, for the places that are Hanzo whatever host they are
17
+ * served from (a "built by Hanzo" credit on a white-label surface). Anything
18
+ * showing THIS surface's identity wants `BrandMark`, which follows the host.
13
19
  */
20
+ const BrandMark_1 = require("./BrandMark.cjs");
14
21
  function HanzoMark({ size = 22, color = 'currentColor' }) {
15
- return ((0, jsx_runtime_1.jsxs)("svg", { width: size, height: size, viewBox: "0 0 67 67", role: "img", "aria-label": "Hanzo", fill: color, style: { display: 'block', flexShrink: 0 }, children: [(0, jsx_runtime_1.jsx)("path", { d: "M22.21 67V44.6369H0V67H22.21Z" }), (0, jsx_runtime_1.jsx)("path", { opacity: 0.55, d: "M0 44.6369L22.21 46.8285V44.6369H0Z" }), (0, jsx_runtime_1.jsx)("path", { d: "M66.7038 22.3184H22.2534L0.0878906 44.6367H44.4634L66.7038 22.3184Z" }), (0, jsx_runtime_1.jsx)("path", { d: "M22.21 0H0V22.3184H22.21V0Z" }), (0, jsx_runtime_1.jsx)("path", { d: "M66.7198 0H44.5098V22.3184H66.7198V0Z" }), (0, jsx_runtime_1.jsx)("path", { opacity: 0.55, d: "M66.6753 22.3185L44.5098 20.0822V22.3185H66.6753Z" }), (0, jsx_runtime_1.jsx)("path", { d: "M66.7198 67V44.6369H44.5098V67H66.7198Z" })] }));
22
+ return (0, jsx_runtime_1.jsx)(BrandMark_1.BrandMark, { brand: "hanzo", size: size, color: color, animated: false, wordmark: false });
16
23
  }
@@ -1,11 +1,3 @@
1
- /**
2
- * The Hanzo "H" mark — the canonical 7-path shaded glyph: five body blocks +
3
- * two shade slivers (geometry canon: @hanzo/logo `MARK_PATHS`).
4
- *
5
- * Rendered as inline SVG with `fill: currentColor` (shade at reduced opacity),
6
- * so it inherits the surrounding text color and adapts to the dark/light theme
7
- * with no per-theme asset. ONE source for the mark across the chrome.
8
- */
9
1
  export declare function HanzoMark({ size, color }: {
10
2
  size?: number;
11
3
  color?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"HanzoMark.d.ts","sourceRoot":"","sources":["../../src/product/HanzoMark.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EAAE,IAAS,EAAE,KAAsB,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,2CAoBjG"}
1
+ {"version":3,"file":"HanzoMark.d.ts","sourceRoot":"","sources":["../../src/product/HanzoMark.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,SAAS,CAAC,EAAE,IAAS,EAAE,KAAsB,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,2CAEjG"}
@@ -1,14 +1,21 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  /**
4
- * The Hanzo "H" mark — the canonical 7-path shaded glyph: five body blocks +
5
- * two shade slivers (geometry canon: @hanzo/logo `MARK_PATHS`).
4
+ * The Hanzo "H" — the house mark, static, inheriting `currentColor`.
6
5
  *
7
- * Rendered as inline SVG with `fill: currentColor` (shade at reduced opacity),
8
- * so it inherits the surrounding text color and adapts to the dark/light theme
9
- * with no per-theme asset. ONE source for the mark across the chrome.
6
+ * It held its own copy of the seven paths, which made three copies of one
7
+ * geometry across the fleet: `@hanzo/logo` publishes the canon, `@hanzo/brand`
8
+ * composes it into the registry, and this transcribed it a third time. A
9
+ * transcription drifts silently — it is right until the canon moves — so it
10
+ * reads the registry now, like every other mark.
11
+ *
12
+ * Kept as its own name because it means something the general one cannot: the
13
+ * HOUSE mark specifically, for the places that are Hanzo whatever host they are
14
+ * served from (a "built by Hanzo" credit on a white-label surface). Anything
15
+ * showing THIS surface's identity wants `BrandMark`, which follows the host.
10
16
  */
17
+ import { BrandMark } from './BrandMark.js';
11
18
  export function HanzoMark({ size = 22, color = 'currentColor' }) {
12
- return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 67 67", role: "img", "aria-label": "Hanzo", fill: color, style: { display: 'block', flexShrink: 0 }, children: [_jsx("path", { d: "M22.21 67V44.6369H0V67H22.21Z" }), _jsx("path", { opacity: 0.55, d: "M0 44.6369L22.21 46.8285V44.6369H0Z" }), _jsx("path", { d: "M66.7038 22.3184H22.2534L0.0878906 44.6367H44.4634L66.7038 22.3184Z" }), _jsx("path", { d: "M22.21 0H0V22.3184H22.21V0Z" }), _jsx("path", { d: "M66.7198 0H44.5098V22.3184H66.7198V0Z" }), _jsx("path", { opacity: 0.55, d: "M66.6753 22.3185L44.5098 20.0822V22.3185H66.6753Z" }), _jsx("path", { d: "M66.7198 67V44.6369H44.5098V67H66.7198Z" })] }));
19
+ return _jsx(BrandMark, { brand: "hanzo", size: size, color: color, animated: false, wordmark: false });
13
20
  }
14
21
  //# sourceMappingURL=HanzoMark.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HanzoMark.js","sourceRoot":"","sources":["../../src/product/HanzoMark.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,cAAc,EAAqC;IAChG,OAAO,CACL,eACE,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,KAAK,gBACC,OAAO,EAClB,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,aAE1C,eAAM,CAAC,EAAC,+BAA+B,GAAG,EAC1C,eAAM,OAAO,EAAE,IAAI,EAAE,CAAC,EAAC,qCAAqC,GAAG,EAC/D,eAAM,CAAC,EAAC,qEAAqE,GAAG,EAChF,eAAM,CAAC,EAAC,6BAA6B,GAAG,EACxC,eAAM,CAAC,EAAC,uCAAuC,GAAG,EAClD,eAAM,OAAO,EAAE,IAAI,EAAE,CAAC,EAAC,mDAAmD,GAAG,EAC7E,eAAM,CAAC,EAAC,yCAAyC,GAAG,IAChD,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"HanzoMark.js","sourceRoot":"","sources":["../../src/product/HanzoMark.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,cAAc,EAAqC;IAChG,OAAO,KAAC,SAAS,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAI,CAAA;AAChG,CAAC"}
@@ -60,6 +60,23 @@ function monogram(name) {
60
60
  .join('');
61
61
  return (letters || name.trim().slice(0, 2)).toUpperCase();
62
62
  }
63
+ /**
64
+ * A mark's glyph is sized by TOKEN, not by arithmetic.
65
+ *
66
+ * It used to be a ratio of the tile — `size * 0.4` — which bypasses the type
67
+ * system in two ways. It lands off the scale (at the 30px mark both identity
68
+ * controls use it computed 12, a value on no ladder, and the console's design
69
+ * sweep found it on every screen that renders a mark). And a raw pixel cannot
70
+ * answer to `--type-scale`: the ramp behind every token is
71
+ * `var(--text-sm, 13px)` and design multiplies it, so a person who turns their
72
+ * type up watches all text grow EXCEPT the monogram, which is the one place the
73
+ * drift is most visible because it sits beside their own name.
74
+ *
75
+ * So the tile's size chooses a token and the token carries the value. Bands
76
+ * rather than a formula, because a token IS a band — the ladder is not linear,
77
+ * and rounding onto it is the same mistake in a nicer coat.
78
+ */
79
+ const glyphToken = (size) => size < 26 ? '$1' : size < 34 ? '$2' : size < 44 ? '$4' : '$6';
63
80
  function OrgMark({ org, size = 22, maxW }) {
64
81
  // Reset when the mark changes: switcher rows reuse instances, so a failure on
65
82
  // one org must not blank the next org's logo.
@@ -82,5 +99,5 @@ function OrgMark({ org, size = 22, maxW }) {
82
99
  flexShrink: 0,
83
100
  } }));
84
101
  }
85
- return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: size, height: size, rounded: "$3", bg: "$color4", items: "center", justify: "center", style: { flexShrink: 0 }, children: (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: Math.round(size * 0.4), fontWeight: "800", color: "$color12", children: monogram(org.displayName || org.name) }) }));
102
+ return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: size, height: size, rounded: "$3", bg: "$color4", items: "center", justify: "center", style: { flexShrink: 0 }, children: (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: glyphToken(size), fontWeight: "800", color: "$color12", children: monogram(org.displayName || org.name) }) }));
86
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OrgMark.d.ts","sourceRoot":"","sources":["../../src/product/OrgMark.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAElC;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAU7C;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,gFAAgF;IAChF,GAAG,EAAE,GAAG,CAAA;IACR,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,OAAO,CAAC,EAAE,GAAG,EAAE,IAAS,EAAE,IAAI,EAAE,EAAE,YAAY,2CA0D7D"}
1
+ {"version":3,"file":"OrgMark.d.ts","sourceRoot":"","sources":["../../src/product/OrgMark.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAElC;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAU7C;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,gFAAgF;IAChF,GAAG,EAAE,GAAG,CAAA;IACR,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAqBD,wBAAgB,OAAO,CAAC,EAAE,GAAG,EAAE,IAAS,EAAE,IAAI,EAAE,EAAE,YAAY,2CA0D7D"}
@@ -55,6 +55,23 @@ export function monogram(name) {
55
55
  .join('');
56
56
  return (letters || name.trim().slice(0, 2)).toUpperCase();
57
57
  }
58
+ /**
59
+ * A mark's glyph is sized by TOKEN, not by arithmetic.
60
+ *
61
+ * It used to be a ratio of the tile — `size * 0.4` — which bypasses the type
62
+ * system in two ways. It lands off the scale (at the 30px mark both identity
63
+ * controls use it computed 12, a value on no ladder, and the console's design
64
+ * sweep found it on every screen that renders a mark). And a raw pixel cannot
65
+ * answer to `--type-scale`: the ramp behind every token is
66
+ * `var(--text-sm, 13px)` and design multiplies it, so a person who turns their
67
+ * type up watches all text grow EXCEPT the monogram, which is the one place the
68
+ * drift is most visible because it sits beside their own name.
69
+ *
70
+ * So the tile's size chooses a token and the token carries the value. Bands
71
+ * rather than a formula, because a token IS a band — the ladder is not linear,
72
+ * and rounding onto it is the same mistake in a nicer coat.
73
+ */
74
+ const glyphToken = (size) => size < 26 ? '$1' : size < 34 ? '$2' : size < 44 ? '$4' : '$6';
58
75
  export function OrgMark({ org, size = 22, maxW }) {
59
76
  // Reset when the mark changes: switcher rows reuse instances, so a failure on
60
77
  // one org must not blank the next org's logo.
@@ -77,6 +94,6 @@ export function OrgMark({ org, size = 22, maxW }) {
77
94
  flexShrink: 0,
78
95
  } }));
79
96
  }
80
- return (_jsx(YStack, { width: size, height: size, rounded: "$3", bg: "$color4", items: "center", justify: "center", style: { flexShrink: 0 }, children: _jsx(Text, { fontSize: Math.round(size * 0.4), fontWeight: "800", color: "$color12", children: monogram(org.displayName || org.name) }) }));
97
+ return (_jsx(YStack, { width: size, height: size, rounded: "$3", bg: "$color4", items: "center", justify: "center", style: { flexShrink: 0 }, children: _jsx(Text, { fontSize: glyphToken(size), fontWeight: "800", color: "$color12", children: monogram(org.displayName || org.name) }) }));
81
98
  }
82
99
  //# sourceMappingURL=OrgMark.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrgMark.js","sourceRoot":"","sources":["../../src/product/OrgMark.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OrgMark.js","sourceRoot":"","sources":["../../src/product/OrgMark.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.0.95",
3
+ "version": "8.0.98",
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": {
@@ -194,12 +194,10 @@
194
194
  ],
195
195
  "dependencies": {
196
196
  "@hanzo/appearance": "^0.1.4",
197
+ "@hanzo/brand": "^1.4.5",
197
198
  "@hanzo/design": "^0.5.3",
198
199
  "@hanzo/logo": "^1.0.13",
199
200
  "@hanzo/products": "^0.2.0",
200
- "@hanzogui/lucide-icons-2": "^8.1.0",
201
- "@hanzogui/telemetry": "^8.1.0",
202
- "@hanzogui/toast": "^8.1.0",
203
201
  "clsx": "^2.1.1"
204
202
  },
205
203
  "peerDependencies": {
@@ -210,7 +208,10 @@
210
208
  "@hanzo/gui": ">=8.1.0",
211
209
  "@hanzo/usage": ">=0.1.0",
212
210
  "@hanzogui/config": ">=8.1.0",
211
+ "@hanzogui/lucide-icons-2": ">=8.1.0",
213
212
  "@hanzogui/next-theme": ">=8.1.0",
213
+ "@hanzogui/telemetry": ">=8.1.0",
214
+ "@hanzogui/toast": ">=8.1.0",
214
215
  "next": ">=14",
215
216
  "next-themes": ">=0.2.1",
216
217
  "react": ">=19",
@@ -252,6 +253,8 @@
252
253
  "@hanzogui/core": "8.1.0",
253
254
  "@hanzogui/lucide-icons-2": "8.1.0",
254
255
  "@hanzogui/next-theme": "8.1.0",
256
+ "@hanzogui/telemetry": "8.1.0",
257
+ "@hanzogui/toast": "8.1.0",
255
258
  "@hanzogui/web": "8.1.0",
256
259
  "@playwright/test": "^1.61.0",
257
260
  "@types/react": "^19.1.10",