@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.
- package/dist/backends/gui/icon-picker.cjs +194 -0
- package/dist/backends/gui/icon-picker.d.ts +51 -0
- package/dist/backends/gui/icon-picker.d.ts.map +1 -0
- package/dist/backends/gui/icon-picker.js +155 -0
- package/dist/backends/gui/icon-picker.js.map +1 -0
- package/dist/backends/gui/icons.cjs +381 -0
- package/dist/backends/gui/icons.d.ts +53 -0
- package/dist/backends/gui/icons.d.ts.map +1 -0
- package/dist/backends/gui/icons.js +377 -0
- package/dist/backends/gui/icons.js.map +1 -0
- package/dist/backends/gui/index.cjs +13 -1
- package/dist/backends/gui/index.d.ts +2 -0
- package/dist/backends/gui/index.d.ts.map +1 -1
- package/dist/backends/gui/index.js +2 -0
- package/dist/backends/gui/index.js.map +1 -1
- package/dist/gallery/icons.cjs +19 -0
- package/dist/gallery/icons.d.ts +2 -0
- package/dist/gallery/icons.d.ts.map +1 -0
- package/dist/gallery/icons.js +17 -0
- package/dist/gallery/icons.js.map +1 -0
- package/dist/gallery/records.cjs +2 -1
- package/dist/gallery/records.d.ts.map +1 -1
- package/dist/gallery/records.js +2 -1
- package/dist/gallery/records.js.map +1 -1
- package/dist/gallery.html +2 -2
- package/dist/index.cjs +14 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.node.cjs +14 -2
- package/dist/index.node.js +3 -0
- package/dist/masthead/Masthead.cjs +351 -0
- package/dist/masthead/Masthead.d.ts +75 -0
- package/dist/masthead/Masthead.d.ts.map +1 -0
- package/dist/masthead/Masthead.js +348 -0
- package/dist/masthead/Masthead.js.map +1 -0
- package/dist/masthead/index.cjs +9 -3
- package/dist/masthead/index.d.ts +6 -3
- package/dist/masthead/index.d.ts.map +1 -1
- package/dist/masthead/index.js +6 -3
- package/dist/masthead/index.js.map +1 -1
- package/dist/masthead/nav.cjs +272 -36
- package/dist/masthead/nav.d.ts +59 -13
- package/dist/masthead/nav.d.ts.map +1 -1
- package/dist/masthead/nav.js +269 -35
- package/dist/masthead/nav.js.map +1 -1
- package/dist/primitives/CONCEPTS.cjs +8 -0
- package/dist/primitives/CONCEPTS.d.ts +2 -0
- package/dist/primitives/CONCEPTS.d.ts.map +1 -0
- package/dist/primitives/CONCEPTS.js +5 -0
- package/dist/primitives/CONCEPTS.js.map +1 -0
- package/dist/primitives/FIELD_ICONS.cjs +8 -0
- package/dist/primitives/FIELD_ICONS.d.ts +2 -0
- package/dist/primitives/FIELD_ICONS.d.ts.map +1 -0
- package/dist/primitives/FIELD_ICONS.js +5 -0
- package/dist/primitives/FIELD_ICONS.js.map +1 -0
- package/dist/primitives/Glyph.cjs +8 -0
- package/dist/primitives/Glyph.d.ts +2 -0
- package/dist/primitives/Glyph.d.ts.map +1 -0
- package/dist/primitives/Glyph.js +5 -0
- package/dist/primitives/Glyph.js.map +1 -0
- package/dist/primitives/IconPicker.cjs +8 -0
- package/dist/primitives/IconPicker.d.ts +2 -0
- package/dist/primitives/IconPicker.d.ts.map +1 -0
- package/dist/primitives/IconPicker.js +5 -0
- package/dist/primitives/IconPicker.js.map +1 -0
- package/dist/primitives/TABLER.cjs +8 -0
- package/dist/primitives/TABLER.d.ts +2 -0
- package/dist/primitives/TABLER.d.ts.map +1 -0
- package/dist/primitives/TABLER.js +5 -0
- package/dist/primitives/TABLER.js.map +1 -0
- package/dist/primitives/iconWords.cjs +8 -0
- package/dist/primitives/iconWords.d.ts +2 -0
- package/dist/primitives/iconWords.d.ts.map +1 -0
- package/dist/primitives/iconWords.js +5 -0
- package/dist/primitives/iconWords.js.map +1 -0
- package/dist/primitives/loadIcons.cjs +8 -0
- package/dist/primitives/loadIcons.d.ts +2 -0
- package/dist/primitives/loadIcons.d.ts.map +1 -0
- package/dist/primitives/loadIcons.js +5 -0
- package/dist/primitives/loadIcons.js.map +1 -0
- package/dist/primitives/resolveIcon.cjs +8 -0
- package/dist/primitives/resolveIcon.d.ts +2 -0
- package/dist/primitives/resolveIcon.d.ts.map +1 -0
- package/dist/primitives/resolveIcon.js +5 -0
- package/dist/primitives/resolveIcon.js.map +1 -0
- package/dist/primitives/useIcons.cjs +8 -0
- package/dist/primitives/useIcons.d.ts +2 -0
- package/dist/primitives/useIcons.d.ts.map +1 -0
- package/dist/primitives/useIcons.js +5 -0
- package/dist/primitives/useIcons.js.map +1 -0
- 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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"}
|
package/dist/masthead/index.cjs
CHANGED
|
@@ -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
|
|
19
|
-
*
|
|
20
|
-
*
|
|
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);
|
package/dist/masthead/index.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* hanzo.ai's
|
|
3
|
-
*
|
|
4
|
-
*
|
|
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
|
|
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"}
|
package/dist/masthead/index.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* hanzo.ai's
|
|
3
|
-
*
|
|
4
|
-
*
|
|
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
|
|
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"}
|