@hanzo/ui 8.28.0 → 8.29.1

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.
Files changed (93) hide show
  1. package/dist/backends/gui/icon-picker.cjs +194 -0
  2. package/dist/backends/gui/icon-picker.d.ts +51 -0
  3. package/dist/backends/gui/icon-picker.d.ts.map +1 -0
  4. package/dist/backends/gui/icon-picker.js +155 -0
  5. package/dist/backends/gui/icon-picker.js.map +1 -0
  6. package/dist/backends/gui/icons.cjs +381 -0
  7. package/dist/backends/gui/icons.d.ts +53 -0
  8. package/dist/backends/gui/icons.d.ts.map +1 -0
  9. package/dist/backends/gui/icons.js +377 -0
  10. package/dist/backends/gui/icons.js.map +1 -0
  11. package/dist/backends/gui/index.cjs +13 -1
  12. package/dist/backends/gui/index.d.ts +2 -0
  13. package/dist/backends/gui/index.d.ts.map +1 -1
  14. package/dist/backends/gui/index.js +2 -0
  15. package/dist/backends/gui/index.js.map +1 -1
  16. package/dist/gallery/icons.cjs +19 -0
  17. package/dist/gallery/icons.d.ts +2 -0
  18. package/dist/gallery/icons.d.ts.map +1 -0
  19. package/dist/gallery/icons.js +17 -0
  20. package/dist/gallery/icons.js.map +1 -0
  21. package/dist/gallery/records.cjs +2 -1
  22. package/dist/gallery/records.d.ts.map +1 -1
  23. package/dist/gallery/records.js +2 -1
  24. package/dist/gallery/records.js.map +1 -1
  25. package/dist/gallery.html +2 -2
  26. package/dist/index.cjs +14 -2
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/index.node.cjs +14 -2
  32. package/dist/index.node.js +3 -0
  33. package/dist/masthead/Masthead.cjs +351 -0
  34. package/dist/masthead/Masthead.d.ts +75 -0
  35. package/dist/masthead/Masthead.d.ts.map +1 -0
  36. package/dist/masthead/Masthead.js +348 -0
  37. package/dist/masthead/Masthead.js.map +1 -0
  38. package/dist/masthead/index.cjs +9 -3
  39. package/dist/masthead/index.d.ts +6 -3
  40. package/dist/masthead/index.d.ts.map +1 -1
  41. package/dist/masthead/index.js +6 -3
  42. package/dist/masthead/index.js.map +1 -1
  43. package/dist/masthead/nav.cjs +272 -36
  44. package/dist/masthead/nav.d.ts +59 -13
  45. package/dist/masthead/nav.d.ts.map +1 -1
  46. package/dist/masthead/nav.js +269 -35
  47. package/dist/masthead/nav.js.map +1 -1
  48. package/dist/primitives/CONCEPTS.cjs +8 -0
  49. package/dist/primitives/CONCEPTS.d.ts +2 -0
  50. package/dist/primitives/CONCEPTS.d.ts.map +1 -0
  51. package/dist/primitives/CONCEPTS.js +5 -0
  52. package/dist/primitives/CONCEPTS.js.map +1 -0
  53. package/dist/primitives/FIELD_ICONS.cjs +8 -0
  54. package/dist/primitives/FIELD_ICONS.d.ts +2 -0
  55. package/dist/primitives/FIELD_ICONS.d.ts.map +1 -0
  56. package/dist/primitives/FIELD_ICONS.js +5 -0
  57. package/dist/primitives/FIELD_ICONS.js.map +1 -0
  58. package/dist/primitives/Glyph.cjs +8 -0
  59. package/dist/primitives/Glyph.d.ts +2 -0
  60. package/dist/primitives/Glyph.d.ts.map +1 -0
  61. package/dist/primitives/Glyph.js +5 -0
  62. package/dist/primitives/Glyph.js.map +1 -0
  63. package/dist/primitives/IconPicker.cjs +8 -0
  64. package/dist/primitives/IconPicker.d.ts +2 -0
  65. package/dist/primitives/IconPicker.d.ts.map +1 -0
  66. package/dist/primitives/IconPicker.js +5 -0
  67. package/dist/primitives/IconPicker.js.map +1 -0
  68. package/dist/primitives/TABLER.cjs +8 -0
  69. package/dist/primitives/TABLER.d.ts +2 -0
  70. package/dist/primitives/TABLER.d.ts.map +1 -0
  71. package/dist/primitives/TABLER.js +5 -0
  72. package/dist/primitives/TABLER.js.map +1 -0
  73. package/dist/primitives/iconWords.cjs +8 -0
  74. package/dist/primitives/iconWords.d.ts +2 -0
  75. package/dist/primitives/iconWords.d.ts.map +1 -0
  76. package/dist/primitives/iconWords.js +5 -0
  77. package/dist/primitives/iconWords.js.map +1 -0
  78. package/dist/primitives/loadIcons.cjs +8 -0
  79. package/dist/primitives/loadIcons.d.ts +2 -0
  80. package/dist/primitives/loadIcons.d.ts.map +1 -0
  81. package/dist/primitives/loadIcons.js +5 -0
  82. package/dist/primitives/loadIcons.js.map +1 -0
  83. package/dist/primitives/resolveIcon.cjs +8 -0
  84. package/dist/primitives/resolveIcon.d.ts +2 -0
  85. package/dist/primitives/resolveIcon.d.ts.map +1 -0
  86. package/dist/primitives/resolveIcon.js +5 -0
  87. package/dist/primitives/resolveIcon.js.map +1 -0
  88. package/dist/primitives/useIcons.cjs +8 -0
  89. package/dist/primitives/useIcons.d.ts +2 -0
  90. package/dist/primitives/useIcons.d.ts.map +1 -0
  91. package/dist/primitives/useIcons.js +5 -0
  92. package/dist/primitives/useIcons.js.map +1 -0
  93. package/package.json +1 -1
@@ -0,0 +1,75 @@
1
+ import { type HanzoCommandEntry } from '@hanzogui/shell';
2
+ import { type Link, type Menu } from './nav.js';
3
+ /**
4
+ * hanzo.ai's header, for every site that wears it: one nav tree (`./nav`) for
5
+ * the bar and the phone sheet.
6
+ *
7
+ * The bar is `@hanzogui/shell`'s vocabulary — its marks, its wordmark, its ⌘K
8
+ * palette and its account menu — laid out the way hanzo.ai reads: the wordmark
9
+ * opens the company, the five menus follow with a mark before each label,
10
+ * search closes the row, and Log in ▾ and Try Hanzo stand at the far end.
11
+ *
12
+ * Every style is a gui prop on the element that wears it; no stylesheet rule
13
+ * reaches the bar, a plane, the log-in card or the sheet. The geometry is the
14
+ * shell's — a 60px row, 34px pills, 13px labels, a 16px mark before each, a
15
+ * 12px chevron after — and every ink and ground is a theme token, so the light
16
+ * theme needs no second copy. Below gui's `$lg` (1024) the bar is the name,
17
+ * search and a menu button; the marks before the five labels wait for `$xl`
18
+ * (1280), because between the two the row fits its labels and not its marks.
19
+ *
20
+ * THREE GROUNDS for the bar. Clear over the top of a page; glass once the page
21
+ * moves under it; and the plane's own opaque ground while a menu or the sheet
22
+ * hangs from it, so bar and plane are one surface. The open bar carries no
23
+ * backdrop filter on purpose: a filtered element is a backdrop root, and the
24
+ * veil inside it would then blur the bar instead of the page.
25
+ *
26
+ * A row's look is read from the tree, not from where it lands: a path is a page
27
+ * on hanzo.ai and reads as one on every host (no ↗, the same tab), and a row
28
+ * that names a host says ↗ and opens a new tab — unless it names `here`, the
29
+ * host the page is on, when it is that site's own page.
30
+ */
31
+ /** Who is signed in, as the account menu draws them. */
32
+ export interface Person {
33
+ name: string;
34
+ email?: string;
35
+ avatar?: string;
36
+ }
37
+ /** The rows the bar draws. Each defaults to hanzo.ai's own, in `./nav`. */
38
+ export interface Tree {
39
+ company: Menu;
40
+ menus: readonly Menu[];
41
+ login: readonly Link[];
42
+ /** The one filled control for a stranger. */
43
+ try: Link;
44
+ /** …and for a reader who is signed in. */
45
+ open: Link;
46
+ /** The signed-in reader's own page, in the account menu and the sheet. */
47
+ account: Link;
48
+ }
49
+ export interface MastheadProps {
50
+ /** The name in the corner: `Hanzo AI` on hanzo.ai. */
51
+ label?: string;
52
+ /** Where the name goes, read as a row is. */
53
+ home?: string;
54
+ /** The host the tree's paths are pages on: empty on hanzo.ai, `https://hanzo.ai` on any other site. */
55
+ origin?: string;
56
+ /** The host this page is on, so a row that names it is a page here (`https://hanzo.agency`). */
57
+ here?: string;
58
+ /** The rows, where they are not hanzo.ai's. */
59
+ tree?: Partial<Tree>;
60
+ /** The signed-in reader. Absent, the bar offers Log in ▾ and Try Hanzo. */
61
+ person?: Person | null;
62
+ onSignOut?: () => void;
63
+ /** What ⌘K finds, beside the bar's own rows. */
64
+ commands?: readonly HanzoCommandEntry[];
65
+ /** A question typed into ⌘K, handed to the host's own assistant. Absent, it goes to `askHref`. */
66
+ onAsk?: (question: string) => void;
67
+ /** Where ⌘K sends a question, as `<askHref>?q=`. */
68
+ askHref?: string;
69
+ /** The name alone, on the way in and on the way to pay: home is one click away. */
70
+ bare?: boolean;
71
+ }
72
+ /** The bar's height, under the notch. */
73
+ export declare const HEADER = 60;
74
+ export declare function Masthead({ label, home, origin, here, tree, person, onSignOut, commands, onAsk, askHref, bare, }: MastheadProps): import("react").JSX.Element;
75
+ //# sourceMappingURL=Masthead.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Masthead.d.ts","sourceRoot":"","sources":["../../src/masthead/Masthead.tsx"],"names":[],"mappings":"AAIA,OAAO,EAA4E,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAElI,OAAO,EAA+D,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,OAAO,CAAA;AAEzG;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,wDAAwD;AACxD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,2EAA2E;AAC3E,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,IAAI,CAAA;IACb,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IACtB,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IACtB,6CAA6C;IAC7C,GAAG,EAAE,IAAI,CAAA;IACT,0CAA0C;IAC1C,IAAI,EAAE,IAAI,CAAA;IACV,0EAA0E;IAC1E,OAAO,EAAE,IAAI,CAAA;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uGAAuG;IACvG,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gGAAgG;IAChG,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACpB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;IACvC,kGAAkG;IAClG,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mFAAmF;IACnF,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAOD,yCAAyC;AACzC,eAAO,MAAM,MAAM,KAAK,CAAA;AAkQxB,wBAAgB,QAAQ,CAAC,EACvB,KAAkB,EAClB,IAAU,EACV,MAAW,EACX,IAAS,EACT,IAAS,EACT,MAAM,EACN,SAAS,EACT,QAAa,EACb,KAAK,EACL,OAAO,EACP,IAAY,GACb,EAAE,aAAa,+BA6Xf"}
@@ -0,0 +1,348 @@
1
+ 'use client';
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Fragment, useCallback, useEffect, useRef, useState } from 'react';
4
+ import { Anchor, Text, View, XStack, YStack } from '@hanzo/gui';
5
+ import { HanzoCommandPalette, HanzoIdentity, HanzoWordmark, MARKS } from '@hanzogui/shell';
6
+ import { ACCOUNT, COMPANY, DOCS, LOGIN, MENUS, OPEN, TRY, at, leaves } from './nav.js';
7
+ /** A menu stays open this long after the pointer leaves, so a diagonal path to a row keeps it. */
8
+ const GRACE = 160;
9
+ /** And opens after the pointer rests this long, so crossing the bar opens nothing. */
10
+ const REST = 70;
11
+ /** The bar's height, under the notch. */
12
+ export const HEADER = 60;
13
+ /** The bar's two inks over the page: a wash for a lit pill, and its hairline. */
14
+ const WASH = '$ink/6';
15
+ const RING = 'inset 0 0 0 1px color-mix(in srgb, var(--foreground) 10%, transparent)';
16
+ /** A pill lit: under the pointer, or holding its menu open. */
17
+ const LIT = { color: 'var(--foreground)', bg: WASH, boxShadow: RING };
18
+ /** Where what hangs from the bar begins: under the bar and the notch above it. */
19
+ const UNDER = `calc(${HEADER}px + env(safe-area-inset-top))`;
20
+ /** The open bar, the planes, the log-in card and the sheet stand on one opaque ground. */
21
+ const PANEL = 'var(--chrome-panel)';
22
+ /** The drop under what hangs from the bar. */
23
+ const DROP = '0 24px 60px -16px color-mix(in srgb, var(--pure-black) 75%, transparent)';
24
+ /** The bar's glass, once the page moves under it. */
25
+ const GLASS = '$background/72';
26
+ /** The highest z-index there is. The search palette stands in a fixed layer at
27
+ * it, so nothing fixed to the window draws over an open palette. */
28
+ const TOP = 2147483647;
29
+ /**
30
+ * The shell's account menu paints with `var(--white-92…)`, and @hanzo/design
31
+ * keeps those rungs white in both themes. The bar follows the theme, so inside
32
+ * it the four flip to black: `light-dark()` reads the `color-scheme` @hanzo/design
33
+ * sets with the theme. The dimmest is PUSHED rather than mirrored — .45 black on
34
+ * white is 3.35:1, .56 is 4.5:1 on the bar and on the panel.
35
+ */
36
+ const ink = (dark, light) => `light-dark(color-mix(in srgb, var(--pure-black) ${light}%, transparent), color-mix(in srgb, var(--pure-white) ${dark}%, transparent))`;
37
+ const INK = {
38
+ '--white-92': ink(92, 92),
39
+ '--white-60': ink(60, 60),
40
+ '--white-45': ink(45, 56),
41
+ '--white-10': 'var(--border)',
42
+ };
43
+ /** The bar: a sticky row under the notch, on the page's gutter. Its height is
44
+ * published as `--header`, which @hanzo/design's scroll padding reads. */
45
+ const BAR = {
46
+ position: 'sticky',
47
+ t: 0,
48
+ z: 'var(--z-header)',
49
+ items: 'center',
50
+ gap: 12,
51
+ boxSizing: 'content-box',
52
+ height: HEADER,
53
+ pt: 'calc(0px + env(safe-area-inset-top))',
54
+ pb: 0,
55
+ px: 'var(--page-gutter)',
56
+ };
57
+ /** The name of the place, lit under the pointer and while the company menu is open. */
58
+ const BRAND = { items: 'center', shrink: 0, height: 34, ml: -4, rounded: 999, hoverStyle: { bg: WASH, boxShadow: RING } };
59
+ /** The wordmark: home, and never dim. */
60
+ const NAME = { display: 'flex', items: 'center', height: '100%', pl: 12, pr: 12, color: 'var(--foreground)', whiteSpace: 'nowrap', textDecorationLine: 'none' };
61
+ /** A pill in the bar: dim at rest, lit under the pointer. A button's own padding is the browser's, so it is stated. */
62
+ const PILL = {
63
+ display: 'flex',
64
+ items: 'center',
65
+ shrink: 0,
66
+ height: 34,
67
+ p: 0,
68
+ borderWidth: 0,
69
+ rounded: 999,
70
+ bg: 'transparent',
71
+ color: 'var(--muted-foreground)',
72
+ cursor: 'pointer',
73
+ hoverStyle: LIT,
74
+ };
75
+ /** A pill that opens a menu: its label, then a chevron. */
76
+ const TRIGGER = { ...PILL, gap: 6, px: 12, fontSize: '$2', lineHeight: 20, fontWeight: '500', whiteSpace: 'nowrap' };
77
+ /** The one filled control, in the bar and in the sheet. */
78
+ const ACT = {
79
+ display: 'flex',
80
+ items: 'center',
81
+ justify: 'center',
82
+ gap: 2,
83
+ height: 34,
84
+ px: 14,
85
+ rounded: 999,
86
+ bg: 'var(--foreground)',
87
+ color: 'var(--background)',
88
+ fontSize: '$2',
89
+ lineHeight: 20,
90
+ fontWeight: '600',
91
+ whiteSpace: 'nowrap',
92
+ hoverStyle: { opacity: 0.88 },
93
+ };
94
+ /** What hangs from the bar arrives: up 4px, faded in. */
95
+ const ARRIVE = { enterStyle: { opacity: 0, y: -4 }, transition: 'quickest' };
96
+ /**
97
+ * A row in a plane. As wide as its words, so a keyboard ring hugs the words it
98
+ * names rather than the column; its padding steps out of the column, so the
99
+ * words stand on the column's edge.
100
+ */
101
+ const ROW = {
102
+ display: 'flex',
103
+ items: 'center',
104
+ self: 'flex-start',
105
+ mx: -8,
106
+ px: 8,
107
+ rounded: 8,
108
+ whiteSpace: 'nowrap',
109
+ hoverStyle: { color: 'var(--foreground)' },
110
+ focusVisibleStyle: { color: 'var(--foreground)' },
111
+ };
112
+ /** The destinations someone arrives wanting, in display type. */
113
+ const LEAD = { ...ROW, py: 2, fontSize: '$8', lineHeight: 33.28, fontWeight: '400', letterSpacing: -0.26, color: 'var(--foreground)' };
114
+ const PLAIN = { ...ROW, py: 5, fontSize: '$2', lineHeight: 20, fontWeight: '500', color: 'var(--muted-foreground)' };
115
+ /** A row in the sheet: a thumb's height, the column's width. */
116
+ const LINE = {
117
+ display: 'flex',
118
+ items: 'center',
119
+ justify: 'flex-start',
120
+ minH: 44,
121
+ rounded: 8,
122
+ fontWeight: '400',
123
+ color: 'var(--muted-foreground)',
124
+ hoverStyle: { color: 'var(--foreground)' },
125
+ focusVisibleStyle: { color: 'var(--foreground)' },
126
+ };
127
+ /** The sheet's doors: Log in's rows, or the reader's own page. */
128
+ const DOOR = { display: 'flex', items: 'center', justify: 'flex-start', minH: 44, fontSize: '$4', lineHeight: 20, fontWeight: '400', color: 'var(--foreground)' };
129
+ /** A menu's mark. In the bar it waits for `$xl`; in the sheet it always shows. */
130
+ function Mark({ name, bar = false }) {
131
+ const Glyph = MARKS[name];
132
+ return (_jsx(View, { render: "span", "data-slot": "mark", "aria-hidden": true, display: bar ? 'none' : 'flex', $xl: bar ? { display: 'flex' } : undefined, opacity: 0.9, children: _jsx(Glyph, { size: 16 }) }));
133
+ }
134
+ /** ▾, turned over while what it opens is open. */
135
+ function Chevron({ turned, end = false }) {
136
+ return (_jsx(View, { render: "span", "aria-hidden": true, display: "flex", shrink: 0, ml: end ? 'auto' : 0, rotate: turned ? '180deg' : '0deg', transition: "quickest", children: _jsx("svg", { width: 12, height: 12, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.2, strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M6 9l6 6 6-6" }) }) }));
137
+ }
138
+ /** ↗ — the shell's outbound arrow, riding the label's size and ink. */
139
+ function Out() {
140
+ return (_jsx(View, { render: "span", "aria-hidden": true, display: "flex", ml: "calc(0.28em)", opacity: 0.7, children: _jsx("svg", { width: "0.75em", height: "0.75em", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M7 17 17 7M9 7h8v8" }) }) }));
141
+ }
142
+ /** A row: the label, and ↗ with a new tab when it leaves. */
143
+ function Row({ link, place, onClick, ...style }) {
144
+ const out = leaves(link.href, place.here);
145
+ return (_jsxs(Anchor, { href: at(link.href, place.origin, place.here), target: out ? '_blank' : undefined, rel: out ? 'noreferrer' : undefined, onClick: onClick, textDecorationLine: "none", ...style, children: [link.label, out ? _jsx(Out, {}) : null] }));
146
+ }
147
+ /** A column's title. In the sheet it is the quiet label over a section's rows. */
148
+ function Title({ sheet = false, children }) {
149
+ return (_jsx(Text, { render: "p", mt: sheet ? 4 : 0, mb: sheet ? 2 : 10, mx: 0, fontSize: sheet ? '$1' : '$2', lineHeight: 20, fontWeight: "600", color: sheet ? 'var(--text-tertiary)' : 'var(--foreground)', children: children }));
150
+ }
151
+ /**
152
+ * A menu's columns, laid out from the wordmark's column: the lead column in
153
+ * display type, the rest as lists. The column under the pointer is the one
154
+ * being read; the others step back to 45%.
155
+ */
156
+ function Columns({ menu, place, onPick }) {
157
+ const [hot, setHot] = useState(null);
158
+ return (_jsx(View, { display: "grid", gridAutoFlow: "column", gridAutoColumns: "max-content", justify: "flex-start", gap: "max(24px, min(3vw, 64px))", pt: 36, pb: 48, px: "calc(var(--page-gutter) + 8px)", children: menu.groups.map((group, i) => (_jsxs(YStack, { gap: 2, minW: 0, opacity: hot === null || hot === i ? 1 : 0.45, transition: "quickest", onPointerEnter: () => setHot(i), onPointerLeave: () => setHot(null), children: [_jsx(Title, { children: group.title }), group.links.map((link) => (_jsx(Row, { link: link, place: place, onClick: onPick, ...(group.lead ? LEAD : PLAIN) }, link.label)))] }, group.title))) }));
159
+ }
160
+ /** The DOM node a gui element stands for, on the web. */
161
+ const node = (el) => (el instanceof HTMLElement ? el : null);
162
+ /** Publish the bar's content height to `--header` on the document for as long as it is mounted. */
163
+ function measure(el) {
164
+ if (!el || typeof ResizeObserver === 'undefined')
165
+ return;
166
+ const root = document.documentElement.style;
167
+ const size = new ResizeObserver(([entry]) => root.setProperty('--header', `${entry.contentRect.height}px`));
168
+ size.observe(el);
169
+ return () => {
170
+ size.disconnect();
171
+ root.removeProperty('--header');
172
+ };
173
+ }
174
+ /** The bar's rows as ⌘K entries: what a reader can reach from here, they can find. */
175
+ function entries(company, menus, login, place) {
176
+ return [company, ...menus]
177
+ .flatMap((menu) => menu.groups.flatMap((group) => group.links.map((link) => ({ menu, link }))))
178
+ .concat(login.map((link) => ({ menu: company, link })))
179
+ .filter(({ link }) => !link.href.startsWith(`${DOCS}/`))
180
+ .map(({ menu, link }) => ({
181
+ id: `nav/${menu.id}/${link.label}`,
182
+ title: link.label,
183
+ href: at(link.href, place.origin, place.here),
184
+ group: menu.label,
185
+ external: leaves(link.href, place.here),
186
+ }));
187
+ }
188
+ export function Masthead({ label = 'Hanzo AI', home = '/', origin = '', here = '', tree = {}, person, onSignOut, commands = [], onAsk, askHref, bare = false, }) {
189
+ const company = tree.company ?? COMPANY;
190
+ const menus = tree.menus ?? MENUS;
191
+ const login = tree.login ?? LOGIN;
192
+ const account = tree.account ?? ACCOUNT;
193
+ const act = person ? (tree.open ?? OPEN) : (tree.try ?? TRY);
194
+ const place = { origin, here };
195
+ const homeHref = at(home, origin, here);
196
+ const [open, setOpen] = useState(null);
197
+ const [sheet, setSheet] = useState(false);
198
+ const [search, setSearch] = useState(false);
199
+ const [grounded, setGrounded] = useState(false);
200
+ const timer = useRef(undefined);
201
+ const pinned = useRef(false);
202
+ const bar = useRef(null);
203
+ const toggle = useRef(null);
204
+ /** The bar's element, held for the menus and measured for `--header`. */
205
+ const masthead = useCallback((el) => {
206
+ bar.current = el;
207
+ return measure(node(el));
208
+ }, []);
209
+ const close = useCallback(() => {
210
+ clearTimeout(timer.current);
211
+ pinned.current = false;
212
+ setOpen(null);
213
+ }, []);
214
+ // The bar is clear over the top of the page and takes the glass once the page
215
+ // moves under it.
216
+ useEffect(() => {
217
+ const read = () => setGrounded(window.scrollY > 4);
218
+ read();
219
+ window.addEventListener('scroll', read, { passive: true });
220
+ return () => window.removeEventListener('scroll', read);
221
+ }, []);
222
+ // Escape closes whatever is open and hands focus back to what opened it.
223
+ useEffect(() => {
224
+ if (!open && !sheet)
225
+ return;
226
+ const key = (e) => {
227
+ if (e.key !== 'Escape')
228
+ return;
229
+ if (open) {
230
+ node(bar.current)?.querySelector(`[aria-controls="menu-${open}"]`)?.focus();
231
+ close();
232
+ }
233
+ if (sheet) {
234
+ setSheet(false);
235
+ node(toggle.current)?.focus();
236
+ }
237
+ };
238
+ document.addEventListener('keydown', key);
239
+ return () => document.removeEventListener('keydown', key);
240
+ }, [open, sheet, close]);
241
+ // A press anywhere outside the bar closes an open menu.
242
+ useEffect(() => {
243
+ if (!open)
244
+ return;
245
+ const outside = (e) => {
246
+ if (!node(bar.current)?.contains(e.target))
247
+ close();
248
+ };
249
+ document.addEventListener('pointerdown', outside);
250
+ return () => document.removeEventListener('pointerdown', outside);
251
+ }, [open, close]);
252
+ // The sheet holds the screen: the page under it does not scroll, and it goes
253
+ // away when the window grows into the bar.
254
+ useEffect(() => {
255
+ if (!sheet)
256
+ return;
257
+ const root = document.documentElement;
258
+ root.style.overflow = 'hidden';
259
+ const wide = matchMedia('(min-width: 1024px)');
260
+ const grow = () => wide.matches && setSheet(false);
261
+ wide.addEventListener('change', grow);
262
+ return () => {
263
+ root.style.overflow = '';
264
+ wide.removeEventListener('change', grow);
265
+ };
266
+ }, [sheet]);
267
+ const rest = (id) => (e) => {
268
+ if (e.pointerType !== 'mouse')
269
+ return;
270
+ clearTimeout(timer.current);
271
+ if (open === id)
272
+ return;
273
+ if (open) {
274
+ pinned.current = false;
275
+ setOpen(id);
276
+ }
277
+ else
278
+ timer.current = setTimeout(() => setOpen(id), REST);
279
+ };
280
+ const leave = (e) => {
281
+ if (e.pointerType !== 'mouse' || pinned.current)
282
+ return;
283
+ clearTimeout(timer.current);
284
+ timer.current = setTimeout(() => setOpen(null), GRACE);
285
+ };
286
+ const press = (id) => () => {
287
+ clearTimeout(timer.current);
288
+ // A click on a menu the pointer already opened keeps it open; a second one closes it.
289
+ if (open === id && pinned.current)
290
+ return close();
291
+ pinned.current = true;
292
+ setOpen(id);
293
+ };
294
+ const step = (id) => (e) => {
295
+ if (e.key !== 'ArrowDown')
296
+ return;
297
+ e.preventDefault();
298
+ pinned.current = true;
299
+ setOpen(id);
300
+ requestAnimationFrame(() => document.querySelector(`#menu-${id} a`)?.focus());
301
+ };
302
+ // Focus that leaves a menu closes it.
303
+ const blur = (e) => {
304
+ if (!e.currentTarget.contains(e.relatedTarget))
305
+ close();
306
+ };
307
+ const find = () => {
308
+ close();
309
+ setSheet(false);
310
+ setSearch(true);
311
+ };
312
+ /** What a pill wears while its menu is open. */
313
+ const lit = (id) => (open === id ? LIT : {});
314
+ const menu = (item, trigger) => (_jsxs(XStack, { position: "relative", onPointerEnter: rest(item.id), onPointerLeave: leave, onBlur: blur, children: [trigger, open === item.id ? (_jsx(YStack, { id: `menu-${item.id}`, role: "group", "aria-label": item.label, position: "fixed", t: UNDER, l: 0, r: 0, z: "var(--z-raised)", maxH: `calc(100dvh - ${HEADER}px)`, overflowY: "auto", bg: PANEL, boxShadow: DROP, ...ARRIVE, children: _jsx(Columns, { menu: item, place: place, onPick: close }) })) : null] }));
315
+ const trigger = (item) => (_jsxs(Text, { render: "button", ...TRIGGER, ...lit(item.id), "aria-expanded": open === item.id, "aria-controls": `menu-${item.id}`, onClick: press(item.id), onKeyDown: step(item.id), children: [_jsx(Mark, { name: item.glyph, bar: true }), item.label, _jsx(Chevron, { turned: open === item.id })] }));
316
+ // On the way in and on the way to pay, the name alone. The two bars are
317
+ // different elements (`key`), so moving between them mounts the other bar
318
+ // rather than re-rendering one with and without its `transition`, which
319
+ // changes the hooks @hanzo/gui calls for it.
320
+ if (bare) {
321
+ return (_jsx(XStack, { ref: masthead, render: "header", "data-slot": "masthead", ...BAR, children: _jsx(XStack, { render: "span", ...BRAND, children: _jsx(Anchor, { href: homeHref, "aria-label": `${label} home`, ...NAME, children: _jsx(HanzoWordmark, { label: label, size: 22 }) }) }) }, "bare"));
322
+ }
323
+ const lifted = open !== null || sheet;
324
+ return (_jsxs(_Fragment, { children: [_jsxs(XStack, { ref: masthead, render: "header", "data-slot": "masthead", ...BAR, bg: lifted ? PANEL : grounded ? GLASS : 'transparent',
325
+ // The chrome's own blur, by name: @hanzo/design's one radius, the glass every bar wears.
326
+ backdropFilter: !lifted && grounded ? 'var(--chrome-blur)' : 'none', transition: "quickest",
327
+ // inline-style: custom properties @hanzogui/shell's account menu reads; no prop sets a variable.
328
+ style: INK, children: [menu(company, _jsxs(XStack, { render: "span", ...BRAND, ...(open === company.id ? { bg: WASH, boxShadow: RING } : {}), children: [_jsx(Anchor, { href: homeHref, "aria-label": `${label} home`, ...NAME, $lg: { pr: 0 }, children: _jsx(HanzoWordmark, { label: label, size: 22 }) }), _jsx(Text, { render: "button", "aria-label": company.label, "aria-expanded": open === company.id, "aria-controls": `menu-${company.id}`, onClick: press(company.id), onKeyDown: step(company.id), display: "none", $lg: { display: 'grid' }, placeItems: "center", width: 30, height: "100%", p: 0, pr: 6, borderWidth: 0, borderTopRightRadius: 999, borderBottomRightRadius: 999, bg: "transparent", color: "var(--foreground)", cursor: "pointer", children: _jsx(Chevron, { turned: open === company.id }) })] })), _jsx(XStack, { render: "nav", "aria-label": "Main", display: "none", $lg: { display: 'flex' }, items: "center", gap: 2, children: menus.map((item) => (_jsx(Fragment, { children: menu(item, trigger(item)) }, item.id))) }), open && open !== 'login' ? (_jsx(View, { "aria-hidden": true, onPress: close, position: "fixed", t: UNDER, l: 0, r: 0, b: 0, z: "var(--z-base)", bg: "$black/40", backdropFilter: "var(--chrome-blur)" })) : null, _jsx(Text, { render: "button", "aria-label": "Search Hanzo or ask AI", onClick: find, ...PILL, justify: "center", width: 44, height: 44, ml: "auto", $lg: { width: 34, height: 34, ml: 0 }, children: _jsx(MARKS.search, { size: 16 }) }), _jsxs(XStack, { items: "center", gap: 8, $lg: { ml: 'auto' }, children: [person ? (_jsx(HanzoIdentity, { auth: { user: person, onSignOut, items: [{ id: 'account', label: account.label, href: at(account.href, origin, here) }] } })) : (_jsxs(XStack, { position: "relative", display: "none", $lg: { display: 'flex' }, onPointerEnter: rest('login'), onPointerLeave: leave, onBlur: blur, children: [_jsxs(Text, { render: "button", ...TRIGGER, ...lit('login'), "aria-expanded": open === 'login', "aria-controls": "menu-login", onClick: press('login'), onKeyDown: step('login'), children: ["Log in", _jsx(Chevron, { turned: open === 'login' })] }), open === 'login' ? (_jsx(YStack, { id: "menu-login", role: "group", "aria-label": "Log in", position: "absolute", t: "calc(100% + 8px)", r: 0, display: "grid", gap: 2, minW: 240, p: 6, borderWidth: 1, borderColor: "var(--border)", rounded: 12, bg: PANEL, boxShadow: DROP, ...ARRIVE, children: login.map((link) => (_jsxs(Anchor, { href: at(link.href, origin, here), target: "_blank", rel: "noreferrer", onClick: close, display: "grid", gap: 2, py: 8, px: 10, rounded: 8, color: "var(--foreground)", fontSize: "$2", lineHeight: 20, fontWeight: "600", textDecorationLine: "none", hoverStyle: { bg: WASH }, focusVisibleStyle: { bg: WASH }, children: [link.label, _jsx(Text, { render: "small", fontSize: "$1", lineHeight: 20, fontWeight: "400", color: "var(--muted-foreground)", children: link.hint })] }, link.label))) })) : null] })), _jsx(Row, { link: act, place: place, ...ACT, display: "none", $lg: { display: 'flex' } }), _jsx(Text, { ref: toggle, render: "button", "aria-label": sheet ? 'Close menu' : 'Open menu', "aria-expanded": sheet, "aria-controls": "sheet", onClick: () => {
329
+ close();
330
+ setSheet((s) => !s);
331
+ }, display: "grid", $lg: { display: 'none' }, placeItems: "center", width: 44, height: 44, p: 0, mr: -10, borderWidth: 0, bg: "transparent", color: "var(--foreground)", cursor: "pointer", children: _jsx("svg", { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", "aria-hidden": "true", children: _jsx("path", { d: sheet ? 'M6 6l12 12M18 6L6 18' : 'M3 9h18M3 15h18' }) }) })] })] }, "full"), sheet ? (_jsx(Sheet, { company: company, menus: menus, login: login, door: person ? account : null, act: act, place: place, onClose: () => setSheet(false) })) : null, _jsx(View, { position: "fixed", z: TOP, children: _jsx(HanzoCommandPalette, { commands: [...commands, ...entries(company, menus, login, place).filter((e) => !commands.some((c) => c.href === e.href))], open: search, onOpenChange: setSearch, onAsk: onAsk, askHref: askHref }) })] }));
332
+ }
333
+ /**
334
+ * The phone's menu: the whole tree, one section open at a time, then the two
335
+ * doors. A `<details>` per section, so the browser keeps which one is open and
336
+ * closes the rest (`name`); the chevron reads it back. It stands under the bar
337
+ * and carries the bottom inset, as the bar carries the top one.
338
+ */
339
+ function Sheet({ company, menus, login, door, act, place, onClose, }) {
340
+ const first = useRef(null);
341
+ const [section, setSection] = useState(null);
342
+ useEffect(() => node(first.current)?.focus(), []);
343
+ return (_jsxs(View, { id: "sheet", role: "dialog", "aria-modal": true, "aria-label": "Menu", display: "block", position: "fixed", t: UNDER, l: 0, r: 0, b: 0, z: "var(--z-overlay)", overflowY: "auto", "$platform-web": { overscrollBehaviorX: 'contain', overscrollBehaviorY: 'contain' }, pt: 4, px: "var(--page-gutter)", pb: "calc(24px + env(safe-area-inset-bottom))", bg: PANEL, ...ARRIVE, children: [_jsx(View, { render: "nav", "aria-label": "Main", display: "block", children: [company, ...menus].map((item, i) => (_jsxs(View, { render: _jsx("details", { name: "sheet", onToggle: (e) => {
344
+ const now = e.currentTarget.open;
345
+ setSection((s) => (now ? item.id : s === item.id ? null : s));
346
+ } }), display: "block", borderBottomWidth: 1, borderColor: "var(--border)", children: [_jsxs(Text, { ref: i === 0 ? first : undefined, render: "summary", display: "flex", items: "center", gap: 10, minH: 56, fontSize: "$6", lineHeight: 20, fontWeight: "500", color: "var(--foreground)", cursor: "pointer", children: [_jsx(Mark, { name: item.glyph }), item.label, _jsx(Chevron, { turned: section === item.id, end: true })] }), item.groups.map((group) => (_jsxs(YStack, { gap: 2, minW: 0, pb: 16, children: [_jsx(Title, { sheet: true, children: group.title }), group.links.map((link) => (_jsx(Row, { link: link, place: place, onClick: onClose, ...LINE, fontSize: group.lead ? '$6' : '$4', lineHeight: group.lead ? 20.4 : 18 }, link.label)))] }, group.title)))] }, item.id))) }), _jsxs(View, { display: "grid", gap: 4, pt: 20, children: [door ? (_jsx(Row, { link: door, place: place, onClick: onClose, ...DOOR })) : (_jsxs(_Fragment, { children: [_jsx(Title, { sheet: true, children: "Log in" }), login.map((link) => (_jsx(Row, { link: link, place: place, onClick: onClose, ...DOOR }, link.label)))] })), _jsx(Row, { link: act, place: place, onClick: onClose, ...ACT, height: 48, mt: 12, fontSize: "$3" })] })] }));
347
+ }
348
+ //# sourceMappingURL=Masthead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Masthead.js","sourceRoot":"","sources":["../../src/masthead/Masthead.tsx"],"names":[],"mappings":"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"}
@@ -14,9 +14,15 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.Masthead = exports.HEADER = void 0;
17
18
  /**
18
- * hanzo.ai's nav tree: the company menu under the wordmark, the menus in the
19
- * bar, Log in, and the one filled control. Data only, so a server component can
20
- * import it; a header draws it with gui components of its own.
19
+ * hanzo.ai's header for every site that wears it: `Masthead` draws the nav tree
20
+ * in `./nav` — the company under the wordmark, the five menus, search, Log in
21
+ * and Try Hanzo — and `footer()` hands `@hanzo/ui/marketing`'s `Footer` the
22
+ * same tree's six doors. A server component that needs only the tree imports
23
+ * `@hanzo/ui/masthead/nav`, which is data.
21
24
  */
25
+ var Masthead_1 = require("./Masthead.cjs");
26
+ Object.defineProperty(exports, "HEADER", { enumerable: true, get: function () { return Masthead_1.HEADER; } });
27
+ Object.defineProperty(exports, "Masthead", { enumerable: true, get: function () { return Masthead_1.Masthead; } });
22
28
  __exportStar(require("./nav.cjs"), exports);
@@ -1,7 +1,10 @@
1
1
  /**
2
- * hanzo.ai's nav tree: the company menu under the wordmark, the menus in the
3
- * bar, Log in, and the one filled control. Data only, so a server component can
4
- * import it; a header draws it with gui components of its own.
2
+ * hanzo.ai's header for every site that wears it: `Masthead` draws the nav tree
3
+ * in `./nav` — the company under the wordmark, the five menus, search, Log in
4
+ * and Try Hanzo — and `footer()` hands `@hanzo/ui/marketing`'s `Footer` the
5
+ * same tree's six doors. A server component that needs only the tree imports
6
+ * `@hanzo/ui/masthead/nav`, which is data.
5
7
  */
8
+ export { HEADER, Masthead, type MastheadProps, type Person, type Tree } from './Masthead.js';
6
9
  export * from './nav.js';
7
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/masthead/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,OAAO,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/masthead/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAA;AACzF,cAAc,OAAO,CAAA"}
@@ -1,7 +1,10 @@
1
1
  /**
2
- * hanzo.ai's nav tree: the company menu under the wordmark, the menus in the
3
- * bar, Log in, and the one filled control. Data only, so a server component can
4
- * import it; a header draws it with gui components of its own.
2
+ * hanzo.ai's header for every site that wears it: `Masthead` draws the nav tree
3
+ * in `./nav` — the company under the wordmark, the five menus, search, Log in
4
+ * and Try Hanzo — and `footer()` hands `@hanzo/ui/marketing`'s `Footer` the
5
+ * same tree's six doors. A server component that needs only the tree imports
6
+ * `@hanzo/ui/masthead/nav`, which is data.
5
7
  */
8
+ export { HEADER, Masthead } from './Masthead.js';
6
9
  export * from './nav.js';
7
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/masthead/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,OAAO,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/masthead/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAA8C,MAAM,YAAY,CAAA;AACzF,cAAc,OAAO,CAAA"}