@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.
- package/dist/product/BrandMark.cjs +49 -10
- package/dist/product/BrandMark.d.ts +47 -6
- package/dist/product/BrandMark.d.ts.map +1 -1
- package/dist/product/BrandMark.js +47 -10
- package/dist/product/BrandMark.js.map +1 -1
- package/dist/product/HanzoMark.cjs +13 -6
- package/dist/product/HanzoMark.d.ts +0 -8
- package/dist/product/HanzoMark.d.ts.map +1 -1
- package/dist/product/HanzoMark.js +14 -7
- package/dist/product/HanzoMark.js.map +1 -1
- package/dist/product/OrgMark.cjs +18 -1
- package/dist/product/OrgMark.d.ts.map +1 -1
- package/dist/product/OrgMark.js +18 -1
- package/dist/product/OrgMark.js.map +1 -1
- package/package.json +7 -4
|
@@ -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
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
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
|
-
/**
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
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":"
|
|
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
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
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"
|
|
8
|
-
* two shade slivers (geometry canon: @hanzo/logo `MARK_PATHS`).
|
|
7
|
+
* The Hanzo "H" — the house mark, static, inheriting `currentColor`.
|
|
9
8
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
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 (
|
|
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":"
|
|
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
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
/**
|
|
4
|
-
* The Hanzo "H"
|
|
5
|
-
* two shade slivers (geometry canon: @hanzo/logo `MARK_PATHS`).
|
|
4
|
+
* The Hanzo "H" — the house mark, static, inheriting `currentColor`.
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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 (
|
|
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
|
|
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"}
|
package/dist/product/OrgMark.cjs
CHANGED
|
@@ -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:
|
|
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;
|
|
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"}
|
package/dist/product/OrgMark.js
CHANGED
|
@@ -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:
|
|
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.
|
|
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",
|