@hanzo/ui 8.27.44 → 8.27.46
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/animated-testimonials.cjs +2 -2
- package/dist/backends/gui/animated-testimonials.js +2 -2
- package/dist/backends/gui/animated-testimonials.js.map +1 -1
- package/dist/backends/gui/animated-tooltip.cjs +2 -2
- package/dist/backends/gui/animated-tooltip.js +2 -2
- package/dist/backends/gui/animated-tooltip.js.map +1 -1
- package/dist/backends/gui/carousel.cjs +2 -2
- package/dist/backends/gui/carousel.d.ts.map +1 -1
- package/dist/backends/gui/carousel.js +2 -2
- package/dist/backends/gui/carousel.js.map +1 -1
- package/dist/backends/gui/index.cjs +4 -5
- package/dist/backends/gui/index.d.ts +1 -1
- package/dist/backends/gui/index.d.ts.map +1 -1
- package/dist/backends/gui/index.js +1 -1
- package/dist/backends/gui/index.js.map +1 -1
- package/dist/backends/gui/input-otp.cjs +2 -1
- package/dist/backends/gui/input-otp.d.ts.map +1 -1
- package/dist/backends/gui/input-otp.js +2 -1
- package/dist/backends/gui/input-otp.js.map +1 -1
- package/dist/backends/gui/navigation-menu.cjs +24 -6
- package/dist/backends/gui/navigation-menu.d.ts +0 -6
- package/dist/backends/gui/navigation-menu.d.ts.map +1 -1
- package/dist/backends/gui/navigation-menu.js +23 -5
- package/dist/backends/gui/navigation-menu.js.map +1 -1
- package/dist/backends/gui/popover.cjs +7 -2
- package/dist/backends/gui/popover.d.ts +8 -1
- package/dist/backends/gui/popover.d.ts.map +1 -1
- package/dist/backends/gui/popover.js +7 -2
- package/dist/backends/gui/popover.js.map +1 -1
- package/dist/backends/gui/prose.cjs +4 -18
- package/dist/backends/gui/prose.d.ts +8 -5
- package/dist/backends/gui/prose.d.ts.map +1 -1
- package/dist/backends/gui/prose.js +4 -18
- package/dist/backends/gui/prose.js.map +1 -1
- package/dist/backends/gui/skeleton.cjs +1 -1
- package/dist/backends/gui/skeleton.d.ts.map +1 -1
- package/dist/backends/gui/skeleton.js +1 -1
- package/dist/backends/gui/skeleton.js.map +1 -1
- package/dist/backends/gui/timeline.cjs +2 -2
- package/dist/backends/gui/timeline.d.ts +1 -1
- package/dist/backends/gui/timeline.js +2 -2
- package/dist/backends/gui/timeline.js.map +1 -1
- package/dist/backends/gui/video.cjs +1 -1
- package/dist/backends/gui/video.js +1 -1
- package/dist/backends/gui/video.js.map +1 -1
- package/dist/chat/Chat.cjs +7 -2
- package/dist/chat/Chat.d.ts +14 -1
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +7 -2
- package/dist/chat/Chat.js.map +1 -1
- package/dist/chat/Composer.cjs +6 -1
- package/dist/chat/Composer.d.ts.map +1 -1
- package/dist/chat/Composer.js +6 -1
- package/dist/chat/Composer.js.map +1 -1
- package/dist/chat/SessionRail.cjs +1 -4
- package/dist/chat/SessionRail.js +1 -4
- package/dist/chat/SessionRail.js.map +1 -1
- package/dist/core/cn.cjs +1 -1
- package/dist/core/cn.d.ts +1 -1
- package/dist/core/cn.js +1 -1
- package/dist/gallery.html +495 -598
- package/dist/glass.cjs +2 -24
- package/dist/glass.css +14 -196
- package/dist/glass.d.ts +2 -26
- package/dist/glass.d.ts.map +1 -1
- package/dist/glass.js +1 -22
- package/dist/glass.js.map +1 -1
- package/dist/grid.cjs +60 -10
- package/dist/grid.d.ts +20 -24
- package/dist/grid.d.ts.map +1 -1
- package/dist/grid.js +60 -10
- package/dist/grid.js.map +1 -1
- package/dist/index.cjs +6 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/index.node.cjs +6 -2
- package/dist/index.node.js +4 -1
- package/dist/masthead/index.cjs +3 -12
- package/dist/masthead/index.d.ts +3 -6
- package/dist/masthead/index.d.ts.map +1 -1
- package/dist/masthead/index.js +3 -6
- package/dist/masthead/index.js.map +1 -1
- package/dist/motion.cjs +20 -0
- package/dist/motion.d.ts +17 -0
- package/dist/motion.d.ts.map +1 -0
- package/dist/motion.js +16 -0
- package/dist/motion.js.map +1 -0
- package/dist/product/DataTable.cjs +24 -4
- package/dist/product/DataTable.d.ts +0 -16
- package/dist/product/DataTable.d.ts.map +1 -1
- package/dist/product/DataTable.js +24 -4
- package/dist/product/DataTable.js.map +1 -1
- package/dist/product/FadeIn.cjs +1 -1
- package/dist/product/FadeIn.js +1 -1
- package/dist/product/FadeIn.js.map +1 -1
- package/dist/product/Metric.cjs +19 -2
- package/dist/product/Metric.d.ts +0 -16
- package/dist/product/Metric.d.ts.map +1 -1
- package/dist/product/Metric.js +19 -2
- package/dist/product/Metric.js.map +1 -1
- package/dist/product/Reorder.cjs +1 -1
- package/dist/product/Reorder.js +1 -1
- package/dist/product/Reorder.js.map +1 -1
- package/dist/product/Skeleton.cjs +5 -5
- package/dist/product/Skeleton.d.ts +4 -4
- package/dist/product/Skeleton.d.ts.map +1 -1
- package/dist/product/Skeleton.js +5 -5
- package/dist/product/Skeleton.js.map +1 -1
- package/dist/product/SlideOver.cjs +2 -10
- package/dist/product/SlideOver.d.ts.map +1 -1
- package/dist/product/SlideOver.js +2 -10
- package/dist/product/SlideOver.js.map +1 -1
- package/dist/product/figures.cjs +16 -0
- package/dist/product/figures.d.ts +16 -0
- package/dist/product/figures.d.ts.map +1 -0
- package/dist/product/figures.js +14 -0
- package/dist/product/figures.js.map +1 -0
- package/dist/product/social/SocialResource.cjs +2 -1
- package/dist/product/social/SocialResource.d.ts.map +1 -1
- package/dist/product/social/SocialResource.js +2 -1
- package/dist/product/social/SocialResource.js.map +1 -1
- package/dist/product/social/SocialSummaryBar.cjs +2 -1
- package/dist/product/social/SocialSummaryBar.d.ts.map +1 -1
- package/dist/product/social/SocialSummaryBar.js +2 -1
- package/dist/product/social/SocialSummaryBar.js.map +1 -1
- package/dist/style.cjs +1 -4
- package/dist/style.d.ts +0 -2
- package/dist/style.d.ts.map +1 -1
- package/dist/style.js +0 -2
- package/dist/style.js.map +1 -1
- package/dist/styles/motion.css +61 -283
- package/dist/styles.css +492 -595
- package/dist/sx.cjs +1 -1
- package/dist/sx.js +1 -1
- package/dist/theme.css +383 -292
- package/package.json +3 -4
- package/dist/masthead/Masthead.cjs +0 -168
- package/dist/masthead/Masthead.d.ts +0 -54
- package/dist/masthead/Masthead.d.ts.map +0 -1
- package/dist/masthead/Masthead.js +0 -162
- package/dist/masthead/Masthead.js.map +0 -1
- package/dist/masthead.css +0 -502
- package/dist/primitives/navigationMenuTriggerStyle.cjs +0 -8
- package/dist/primitives/navigationMenuTriggerStyle.d.ts +0 -2
- package/dist/primitives/navigationMenuTriggerStyle.d.ts.map +0 -1
- package/dist/primitives/navigationMenuTriggerStyle.js +0 -5
- package/dist/primitives/navigationMenuTriggerStyle.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanzo/ui",
|
|
3
|
-
"version": "8.27.
|
|
3
|
+
"version": "8.27.46",
|
|
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": {
|
|
@@ -103,7 +103,6 @@
|
|
|
103
103
|
"require": "./dist/masthead/nav.cjs",
|
|
104
104
|
"default": "./dist/masthead/nav.js"
|
|
105
105
|
},
|
|
106
|
-
"./masthead.css": "./dist/masthead.css",
|
|
107
106
|
"./auth": {
|
|
108
107
|
"types": "./dist/auth/index.d.ts",
|
|
109
108
|
"import": "./dist/auth/index.js",
|
|
@@ -377,7 +376,7 @@
|
|
|
377
376
|
},
|
|
378
377
|
"devDependencies": {
|
|
379
378
|
"@hanzo/cd": "0.1.2",
|
|
380
|
-
"@hanzo/event": "0.3.
|
|
379
|
+
"@hanzo/event": "0.3.56",
|
|
381
380
|
"@hanzo/dashboard": "0.2.0",
|
|
382
381
|
"@hanzo/data": "1.2.4",
|
|
383
382
|
"@hanzo/gui": "8.3.5",
|
|
@@ -413,7 +412,7 @@
|
|
|
413
412
|
"license": "Apache-2.0 OR MIT",
|
|
414
413
|
"author": "Hanzo AI <dev@hanzo.ai>",
|
|
415
414
|
"scripts": {
|
|
416
|
-
"build": "rm -rf dist dist-cjs && tsc -p tsconfig.build.json && tsc -p tsconfig.cjs.json --noCheck && mkdir -p dist/styles && node scripts/compose-theme.mjs && cp src/styles/motion.css dist/styles/motion.css && cp src/
|
|
415
|
+
"build": "rm -rf dist dist-cjs && tsc -p tsconfig.build.json && tsc -p tsconfig.cjs.json --noCheck && mkdir -p dist/styles && node scripts/compose-theme.mjs && cp src/styles/motion.css dist/styles/motion.css && cp src/next.cjs dist/next.cjs && node scripts/postbuild.mjs && node scripts/gen-css.mjs",
|
|
417
416
|
"clean": "rm -rf dist dist-cjs types",
|
|
418
417
|
"gen:primitives": "node scripts/gen-primitives.mjs",
|
|
419
418
|
"tc": "tsc --noEmit",
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
'use client';"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.Mark = Mark;
|
|
5
|
-
exports.Chevron = Chevron;
|
|
6
|
-
exports.Out = Out;
|
|
7
|
-
exports.Row = Row;
|
|
8
|
-
exports.Masthead = Masthead;
|
|
9
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
10
|
-
const react_1 = require("react");
|
|
11
|
-
const shell_1 = require("@hanzogui/shell");
|
|
12
|
-
const nav_1 = require("./nav.cjs");
|
|
13
|
-
/** A menu stays open this long after the pointer leaves, so a diagonal path to a row keeps it. */
|
|
14
|
-
const GRACE = 160;
|
|
15
|
-
/** And opens after the pointer rests this long, so crossing the bar opens nothing. */
|
|
16
|
-
const REST = 70;
|
|
17
|
-
function Mark({ name }) {
|
|
18
|
-
const Glyph = shell_1.MARKS[name];
|
|
19
|
-
return ((0, jsx_runtime_1.jsx)("span", { className: "hz-mark", "aria-hidden": "true", children: (0, jsx_runtime_1.jsx)(Glyph, { size: 16 }) }));
|
|
20
|
-
}
|
|
21
|
-
function Chevron() {
|
|
22
|
-
return ((0, jsx_runtime_1.jsx)("svg", { className: "hz-chevron", width: 12, height: 12, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: (0, jsx_runtime_1.jsx)("path", { d: "M6 9l6 6 6-6" }) }));
|
|
23
|
-
}
|
|
24
|
-
/** ↗ — the shell's outbound arrow, riding the label's size and ink. */
|
|
25
|
-
function Out() {
|
|
26
|
-
return ((0, jsx_runtime_1.jsx)("svg", { className: "hz-out", width: "0.75em", height: "0.75em", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: (0, jsx_runtime_1.jsx)("path", { d: "M7 17 17 7M9 7h8v8" }) }));
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* A row: the label, and ↗ with a new tab when it leaves hanzo.ai. Whether it
|
|
30
|
-
* leaves is read from the tree, so a row looks the same on every host.
|
|
31
|
-
*/
|
|
32
|
-
function Row({ link, origin = '', className, onClick }) {
|
|
33
|
-
const out = (0, nav_1.away)(link.href);
|
|
34
|
-
return ((0, jsx_runtime_1.jsxs)("a", { href: (0, nav_1.at)(link.href, origin), className: className, target: out ? '_blank' : undefined, rel: out ? 'noreferrer' : undefined, onClick: onClick, children: [link.label, out ? (0, jsx_runtime_1.jsx)(Out, {}) : null] }));
|
|
35
|
-
}
|
|
36
|
-
/** A menu's columns: the lead column in display type, the rest as lists. */
|
|
37
|
-
function Columns({ menu, origin, onPick }) {
|
|
38
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "hz-columns", children: menu.groups.map((group) => ((0, jsx_runtime_1.jsxs)("div", { className: "hz-column", "data-lead": group.lead ? '' : undefined, children: [(0, jsx_runtime_1.jsx)("p", { className: "hz-column-title", children: group.title }), group.links.map((link) => ((0, jsx_runtime_1.jsx)(Row, { link: link, origin: origin, onClick: onPick }, link.label)))] }, group.title))) }));
|
|
39
|
-
}
|
|
40
|
-
function Masthead({ label = 'Hanzo AI', home = '/', origin = '', person, onSignOut, commands = [], onAsk }) {
|
|
41
|
-
const [open, setOpen] = (0, react_1.useState)(null);
|
|
42
|
-
const [sheet, setSheet] = (0, react_1.useState)(false);
|
|
43
|
-
const [search, setSearch] = (0, react_1.useState)(false);
|
|
44
|
-
const [grounded, setGrounded] = (0, react_1.useState)(false);
|
|
45
|
-
const timer = (0, react_1.useRef)(undefined);
|
|
46
|
-
const pinned = (0, react_1.useRef)(false);
|
|
47
|
-
const bar = (0, react_1.useRef)(null);
|
|
48
|
-
const toggle = (0, react_1.useRef)(null);
|
|
49
|
-
const close = (0, react_1.useCallback)(() => {
|
|
50
|
-
clearTimeout(timer.current);
|
|
51
|
-
pinned.current = false;
|
|
52
|
-
setOpen(null);
|
|
53
|
-
}, []);
|
|
54
|
-
// The bar is clear over the top of the page and takes the glass once the page
|
|
55
|
-
// moves under it.
|
|
56
|
-
(0, react_1.useEffect)(() => {
|
|
57
|
-
const read = () => setGrounded(window.scrollY > 4);
|
|
58
|
-
read();
|
|
59
|
-
window.addEventListener('scroll', read, { passive: true });
|
|
60
|
-
return () => window.removeEventListener('scroll', read);
|
|
61
|
-
}, []);
|
|
62
|
-
// Escape closes whatever is open and hands focus back to what opened it.
|
|
63
|
-
(0, react_1.useEffect)(() => {
|
|
64
|
-
if (!open && !sheet)
|
|
65
|
-
return;
|
|
66
|
-
const key = (e) => {
|
|
67
|
-
if (e.key !== 'Escape')
|
|
68
|
-
return;
|
|
69
|
-
if (open) {
|
|
70
|
-
bar.current?.querySelector(`[aria-controls="menu-${open}"]`)?.focus();
|
|
71
|
-
close();
|
|
72
|
-
}
|
|
73
|
-
if (sheet) {
|
|
74
|
-
setSheet(false);
|
|
75
|
-
toggle.current?.focus();
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
document.addEventListener('keydown', key);
|
|
79
|
-
return () => document.removeEventListener('keydown', key);
|
|
80
|
-
}, [open, sheet, close]);
|
|
81
|
-
// A press anywhere outside the bar closes an open menu.
|
|
82
|
-
(0, react_1.useEffect)(() => {
|
|
83
|
-
if (!open)
|
|
84
|
-
return;
|
|
85
|
-
const outside = (e) => {
|
|
86
|
-
if (!bar.current?.contains(e.target))
|
|
87
|
-
close();
|
|
88
|
-
};
|
|
89
|
-
document.addEventListener('pointerdown', outside);
|
|
90
|
-
return () => document.removeEventListener('pointerdown', outside);
|
|
91
|
-
}, [open, close]);
|
|
92
|
-
// The sheet holds the screen: the page under it does not scroll, and it goes
|
|
93
|
-
// away when the window grows into the bar.
|
|
94
|
-
(0, react_1.useEffect)(() => {
|
|
95
|
-
if (!sheet)
|
|
96
|
-
return;
|
|
97
|
-
const root = document.documentElement;
|
|
98
|
-
root.style.overflow = 'hidden';
|
|
99
|
-
const wide = matchMedia('(min-width: 1024px)');
|
|
100
|
-
const grow = () => wide.matches && setSheet(false);
|
|
101
|
-
wide.addEventListener('change', grow);
|
|
102
|
-
return () => {
|
|
103
|
-
root.style.overflow = '';
|
|
104
|
-
wide.removeEventListener('change', grow);
|
|
105
|
-
};
|
|
106
|
-
}, [sheet]);
|
|
107
|
-
const rest = (id) => (e) => {
|
|
108
|
-
if (e.pointerType !== 'mouse')
|
|
109
|
-
return;
|
|
110
|
-
clearTimeout(timer.current);
|
|
111
|
-
if (open === id)
|
|
112
|
-
return;
|
|
113
|
-
if (open) {
|
|
114
|
-
pinned.current = false;
|
|
115
|
-
setOpen(id);
|
|
116
|
-
}
|
|
117
|
-
else
|
|
118
|
-
timer.current = setTimeout(() => setOpen(id), REST);
|
|
119
|
-
};
|
|
120
|
-
const leave = (e) => {
|
|
121
|
-
if (e.pointerType !== 'mouse' || pinned.current)
|
|
122
|
-
return;
|
|
123
|
-
clearTimeout(timer.current);
|
|
124
|
-
timer.current = setTimeout(() => setOpen(null), GRACE);
|
|
125
|
-
};
|
|
126
|
-
const press = (id) => () => {
|
|
127
|
-
clearTimeout(timer.current);
|
|
128
|
-
// A click on a menu the pointer already opened keeps it open; a second one closes it.
|
|
129
|
-
if (open === id && pinned.current)
|
|
130
|
-
return close();
|
|
131
|
-
pinned.current = true;
|
|
132
|
-
setOpen(id);
|
|
133
|
-
};
|
|
134
|
-
const step = (id) => (e) => {
|
|
135
|
-
if (e.key !== 'ArrowDown')
|
|
136
|
-
return;
|
|
137
|
-
e.preventDefault();
|
|
138
|
-
pinned.current = true;
|
|
139
|
-
setOpen(id);
|
|
140
|
-
requestAnimationFrame(() => document.querySelector(`#menu-${id} a`)?.focus());
|
|
141
|
-
};
|
|
142
|
-
// Focus that leaves a menu closes it.
|
|
143
|
-
const blur = (e) => {
|
|
144
|
-
if (!e.currentTarget.contains(e.relatedTarget))
|
|
145
|
-
close();
|
|
146
|
-
};
|
|
147
|
-
const find = () => {
|
|
148
|
-
close();
|
|
149
|
-
setSheet(false);
|
|
150
|
-
setSearch(true);
|
|
151
|
-
};
|
|
152
|
-
const menu = (item, trigger) => ((0, jsx_runtime_1.jsxs)("div", { className: "hz-menu", onPointerEnter: rest(item.id), onPointerLeave: leave, onBlur: blur, children: [trigger, open === item.id ? ((0, jsx_runtime_1.jsx)("div", { id: `menu-${item.id}`, className: "hz-plane", role: "group", "aria-label": item.label, children: (0, jsx_runtime_1.jsx)(Columns, { menu: item, origin: origin, onPick: close }) })) : null] }));
|
|
153
|
-
const trigger = (item) => ((0, jsx_runtime_1.jsxs)("button", { type: "button", className: "hz-trigger", "aria-expanded": open === item.id, "aria-controls": `menu-${item.id}`, onClick: press(item.id), onKeyDown: step(item.id), children: [(0, jsx_runtime_1.jsx)(Mark, { name: item.glyph }), item.label, (0, jsx_runtime_1.jsx)(Chevron, {})] }));
|
|
154
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("header", { ref: bar, className: "hz-masthead", "data-grounded": grounded || open || sheet ? '' : undefined, children: [menu(nav_1.COMPANY, (0, jsx_runtime_1.jsxs)("span", { className: "hz-brand", children: [(0, jsx_runtime_1.jsx)("a", { href: home, "aria-label": `${label} home`, className: "hz-wordmark", children: (0, jsx_runtime_1.jsx)(shell_1.HanzoWordmark, { label: label, size: 22 }) }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: "hz-company", "aria-label": "Company", "aria-expanded": open === nav_1.COMPANY.id, "aria-controls": `menu-${nav_1.COMPANY.id}`, onClick: press(nav_1.COMPANY.id), onKeyDown: step(nav_1.COMPANY.id), children: (0, jsx_runtime_1.jsx)(Chevron, {}) })] })), (0, jsx_runtime_1.jsx)("nav", { className: "hz-nav", "aria-label": "Main", children: nav_1.MENUS.map((item) => ((0, jsx_runtime_1.jsx)(react_1.Fragment, { children: menu(item, trigger(item)) }, item.id))) }), open && open !== 'login' ? (0, jsx_runtime_1.jsx)("div", { className: "hz-veil", "aria-hidden": "true", onClick: close }) : null, (0, jsx_runtime_1.jsx)("button", { type: "button", className: "hz-find", "aria-label": "Search Hanzo or ask AI", onClick: find, children: (0, jsx_runtime_1.jsx)(shell_1.MARKS.search, { size: 16 }) }), (0, jsx_runtime_1.jsxs)("div", { className: "hz-end", children: [person ? ((0, jsx_runtime_1.jsx)(shell_1.HanzoIdentity, { auth: { user: person, onSignOut, items: [{ id: 'account', label: nav_1.ACCOUNT.label, href: (0, nav_1.at)(nav_1.ACCOUNT.href, origin) }] } })) : ((0, jsx_runtime_1.jsxs)("div", { className: "hz-menu hz-login", onPointerEnter: rest('login'), onPointerLeave: leave, onBlur: blur, children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", className: "hz-trigger", "aria-expanded": open === 'login', "aria-controls": "menu-login", onClick: press('login'), onKeyDown: step('login'), children: ["Log in", (0, jsx_runtime_1.jsx)(Chevron, {})] }), open === 'login' ? ((0, jsx_runtime_1.jsx)("div", { id: "menu-login", className: "hz-card", role: "group", "aria-label": "Log in", children: nav_1.LOGIN.map((link) => ((0, jsx_runtime_1.jsxs)("a", { href: (0, nav_1.at)(link.href, origin), target: "_blank", rel: "noreferrer", onClick: close, children: [(0, jsx_runtime_1.jsx)("span", { children: link.label }), (0, jsx_runtime_1.jsx)("small", { children: link.hint })] }, link.label))) })) : null] })), (0, jsx_runtime_1.jsx)(Row, { link: person ? nav_1.OPEN : nav_1.TRY, origin: origin, className: "hz-try" }), (0, jsx_runtime_1.jsx)("button", { ref: toggle, type: "button", className: "hz-toggle", "aria-label": sheet ? 'Close menu' : 'Open menu', "aria-expanded": sheet, "aria-controls": "sheet", onClick: () => {
|
|
155
|
-
close();
|
|
156
|
-
setSheet((s) => !s);
|
|
157
|
-
}, children: (0, jsx_runtime_1.jsx)("svg", { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", "aria-hidden": "true", children: (0, jsx_runtime_1.jsx)("path", { d: sheet ? 'M6 6l12 12M18 6L6 18' : 'M3 9h18M3 15h18' }) }) })] })] }), sheet ? (0, jsx_runtime_1.jsx)(Sheet, { signedIn: Boolean(person), origin: origin, onClose: () => setSheet(false) }) : null, (0, jsx_runtime_1.jsx)(shell_1.HanzoCommandPalette, { commands: commands, open: search, onOpenChange: setSearch, onAsk: onAsk })] }));
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* The phone's menu: the whole tree, one section open at a time, then the two
|
|
161
|
-
* doors. A `<details>` per section, so it opens with no script and a tap never
|
|
162
|
-
* waits on one.
|
|
163
|
-
*/
|
|
164
|
-
function Sheet({ signedIn, origin, onClose }) {
|
|
165
|
-
const first = (0, react_1.useRef)(null);
|
|
166
|
-
(0, react_1.useEffect)(() => first.current?.focus(), []);
|
|
167
|
-
return ((0, jsx_runtime_1.jsxs)("div", { id: "sheet", className: "hz-sheet", role: "dialog", "aria-modal": "true", "aria-label": "Menu", children: [(0, jsx_runtime_1.jsx)("nav", { "aria-label": "Main", children: [nav_1.COMPANY, ...nav_1.MENUS].map((item, i) => ((0, jsx_runtime_1.jsxs)("details", { name: "sheet", children: [(0, jsx_runtime_1.jsxs)("summary", { ref: i === 0 ? first : undefined, children: [(0, jsx_runtime_1.jsx)(Mark, { name: item.glyph }), item.label, (0, jsx_runtime_1.jsx)(Chevron, {})] }), item.groups.map((group) => ((0, jsx_runtime_1.jsxs)("div", { className: "hz-column", "data-lead": group.lead ? '' : undefined, children: [(0, jsx_runtime_1.jsx)("p", { className: "hz-column-title", children: group.title }), group.links.map((link) => ((0, jsx_runtime_1.jsx)(Row, { link: link, origin: origin, onClick: onClose }, link.label)))] }, group.title)))] }, item.id))) }), (0, jsx_runtime_1.jsxs)("div", { className: "hz-doors", children: [signedIn ? ((0, jsx_runtime_1.jsx)("a", { href: (0, nav_1.at)(nav_1.ACCOUNT.href, origin), className: "hz-door", children: nav_1.ACCOUNT.label })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", { className: "hz-column-title", children: "Log in" }), nav_1.LOGIN.map((link) => ((0, jsx_runtime_1.jsx)(Row, { link: link, origin: origin, className: "hz-door", onClick: onClose }, link.label)))] })), (0, jsx_runtime_1.jsx)(Row, { link: signedIn ? nav_1.OPEN : nav_1.TRY, origin: origin, className: "hz-try", onClick: onClose })] })] }));
|
|
168
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { type GlyphName, type HanzoCommandEntry } from '@hanzogui/shell';
|
|
2
|
-
import { type Link } from './nav.js';
|
|
3
|
-
/**
|
|
4
|
-
* hanzo.ai's header: one nav tree (`./nav`) for the bar and the phone sheet.
|
|
5
|
-
*
|
|
6
|
-
* The bar is `@hanzogui/shell`'s vocabulary — its marks, its wordmark, its ⌘K
|
|
7
|
-
* palette and its account menu — laid out the way hanzo.ai reads: the wordmark
|
|
8
|
-
* opens the company, the five menus follow with a mark before each label,
|
|
9
|
-
* search closes the row, and Log in ▾ and Try Hanzo stand at the far end.
|
|
10
|
-
*
|
|
11
|
-
* Styled by `@hanzo/ui/masthead.css`, which the host imports once.
|
|
12
|
-
*/
|
|
13
|
-
/** Who is signed in, as the account menu draws them. */
|
|
14
|
-
export interface Person {
|
|
15
|
-
name: string;
|
|
16
|
-
email?: string;
|
|
17
|
-
avatar?: string;
|
|
18
|
-
}
|
|
19
|
-
export interface MastheadProps {
|
|
20
|
-
/** The name in the corner: `Hanzo AI` on hanzo.ai, `Hanzo Blog` on the blog. */
|
|
21
|
-
label?: string;
|
|
22
|
-
/** Where the name goes. */
|
|
23
|
-
home?: string;
|
|
24
|
-
/**
|
|
25
|
-
* The host the tree's paths are pages on. Empty on hanzo.ai itself; any other
|
|
26
|
-
* site passes `https://hanzo.ai`, and a row keeps its look while it goes there.
|
|
27
|
-
*/
|
|
28
|
-
origin?: string;
|
|
29
|
-
/** The signed-in reader. Absent, the bar offers Log in ▾ and Try Hanzo. */
|
|
30
|
-
person?: Person | null;
|
|
31
|
-
onSignOut?: () => void;
|
|
32
|
-
/** What ⌘K finds. */
|
|
33
|
-
commands?: HanzoCommandEntry[];
|
|
34
|
-
/** A question typed into ⌘K. */
|
|
35
|
-
onAsk?: (question: string) => void;
|
|
36
|
-
}
|
|
37
|
-
export declare function Mark({ name }: {
|
|
38
|
-
name: GlyphName;
|
|
39
|
-
}): import("react").JSX.Element;
|
|
40
|
-
export declare function Chevron(): import("react").JSX.Element;
|
|
41
|
-
/** ↗ — the shell's outbound arrow, riding the label's size and ink. */
|
|
42
|
-
export declare function Out(): import("react").JSX.Element;
|
|
43
|
-
/**
|
|
44
|
-
* A row: the label, and ↗ with a new tab when it leaves hanzo.ai. Whether it
|
|
45
|
-
* leaves is read from the tree, so a row looks the same on every host.
|
|
46
|
-
*/
|
|
47
|
-
export declare function Row({ link, origin, className, onClick }: {
|
|
48
|
-
link: Link;
|
|
49
|
-
origin?: string;
|
|
50
|
-
className?: string;
|
|
51
|
-
onClick?: () => void;
|
|
52
|
-
}): import("react").JSX.Element;
|
|
53
|
-
export declare function Masthead({ label, home, origin, person, onSignOut, commands, onAsk }: MastheadProps): import("react").JSX.Element;
|
|
54
|
-
//# sourceMappingURL=Masthead.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Masthead.d.ts","sourceRoot":"","sources":["../../src/masthead/Masthead.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA4D,KAAK,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAClI,OAAO,EAAuD,KAAK,IAAI,EAAa,MAAM,OAAO,CAAA;AAEjG;;;;;;;;;GASG;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,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC9B,gCAAgC;IAChC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAOD,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,+BAOjD;AAED,wBAAgB,OAAO,gCAMtB;AAED,uEAAuE;AACvE,wBAAgB,GAAG,gCAMlB;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,MAAW,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,+BAcvI;AAkBD,wBAAgB,QAAQ,CAAC,EAAE,KAAkB,EAAE,IAAU,EAAE,MAAW,EAAE,MAAM,EAAE,SAAS,EAAE,QAAa,EAAE,KAAK,EAAE,EAAE,aAAa,+BAuN/H"}
|
|
@@ -1,162 +0,0 @@
|
|
|
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 { HanzoCommandPalette, HanzoIdentity, HanzoWordmark, MARKS } from '@hanzogui/shell';
|
|
5
|
-
import { ACCOUNT, COMPANY, LOGIN, MENUS, OPEN, TRY, at, away } from './nav.js';
|
|
6
|
-
/** A menu stays open this long after the pointer leaves, so a diagonal path to a row keeps it. */
|
|
7
|
-
const GRACE = 160;
|
|
8
|
-
/** And opens after the pointer rests this long, so crossing the bar opens nothing. */
|
|
9
|
-
const REST = 70;
|
|
10
|
-
export function Mark({ name }) {
|
|
11
|
-
const Glyph = MARKS[name];
|
|
12
|
-
return (_jsx("span", { className: "hz-mark", "aria-hidden": "true", children: _jsx(Glyph, { size: 16 }) }));
|
|
13
|
-
}
|
|
14
|
-
export function Chevron() {
|
|
15
|
-
return (_jsx("svg", { className: "hz-chevron", width: 12, height: 12, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M6 9l6 6 6-6" }) }));
|
|
16
|
-
}
|
|
17
|
-
/** ↗ — the shell's outbound arrow, riding the label's size and ink. */
|
|
18
|
-
export function Out() {
|
|
19
|
-
return (_jsx("svg", { className: "hz-out", width: "0.75em", height: "0.75em", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M7 17 17 7M9 7h8v8" }) }));
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* A row: the label, and ↗ with a new tab when it leaves hanzo.ai. Whether it
|
|
23
|
-
* leaves is read from the tree, so a row looks the same on every host.
|
|
24
|
-
*/
|
|
25
|
-
export function Row({ link, origin = '', className, onClick }) {
|
|
26
|
-
const out = away(link.href);
|
|
27
|
-
return (_jsxs("a", { href: at(link.href, origin), className: className, target: out ? '_blank' : undefined, rel: out ? 'noreferrer' : undefined, onClick: onClick, children: [link.label, out ? _jsx(Out, {}) : null] }));
|
|
28
|
-
}
|
|
29
|
-
/** A menu's columns: the lead column in display type, the rest as lists. */
|
|
30
|
-
function Columns({ menu, origin, onPick }) {
|
|
31
|
-
return (_jsx("div", { className: "hz-columns", children: menu.groups.map((group) => (_jsxs("div", { className: "hz-column", "data-lead": group.lead ? '' : undefined, children: [_jsx("p", { className: "hz-column-title", children: group.title }), group.links.map((link) => (_jsx(Row, { link: link, origin: origin, onClick: onPick }, link.label)))] }, group.title))) }));
|
|
32
|
-
}
|
|
33
|
-
export function Masthead({ label = 'Hanzo AI', home = '/', origin = '', person, onSignOut, commands = [], onAsk }) {
|
|
34
|
-
const [open, setOpen] = useState(null);
|
|
35
|
-
const [sheet, setSheet] = useState(false);
|
|
36
|
-
const [search, setSearch] = useState(false);
|
|
37
|
-
const [grounded, setGrounded] = useState(false);
|
|
38
|
-
const timer = useRef(undefined);
|
|
39
|
-
const pinned = useRef(false);
|
|
40
|
-
const bar = useRef(null);
|
|
41
|
-
const toggle = useRef(null);
|
|
42
|
-
const close = useCallback(() => {
|
|
43
|
-
clearTimeout(timer.current);
|
|
44
|
-
pinned.current = false;
|
|
45
|
-
setOpen(null);
|
|
46
|
-
}, []);
|
|
47
|
-
// The bar is clear over the top of the page and takes the glass once the page
|
|
48
|
-
// moves under it.
|
|
49
|
-
useEffect(() => {
|
|
50
|
-
const read = () => setGrounded(window.scrollY > 4);
|
|
51
|
-
read();
|
|
52
|
-
window.addEventListener('scroll', read, { passive: true });
|
|
53
|
-
return () => window.removeEventListener('scroll', read);
|
|
54
|
-
}, []);
|
|
55
|
-
// Escape closes whatever is open and hands focus back to what opened it.
|
|
56
|
-
useEffect(() => {
|
|
57
|
-
if (!open && !sheet)
|
|
58
|
-
return;
|
|
59
|
-
const key = (e) => {
|
|
60
|
-
if (e.key !== 'Escape')
|
|
61
|
-
return;
|
|
62
|
-
if (open) {
|
|
63
|
-
bar.current?.querySelector(`[aria-controls="menu-${open}"]`)?.focus();
|
|
64
|
-
close();
|
|
65
|
-
}
|
|
66
|
-
if (sheet) {
|
|
67
|
-
setSheet(false);
|
|
68
|
-
toggle.current?.focus();
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
document.addEventListener('keydown', key);
|
|
72
|
-
return () => document.removeEventListener('keydown', key);
|
|
73
|
-
}, [open, sheet, close]);
|
|
74
|
-
// A press anywhere outside the bar closes an open menu.
|
|
75
|
-
useEffect(() => {
|
|
76
|
-
if (!open)
|
|
77
|
-
return;
|
|
78
|
-
const outside = (e) => {
|
|
79
|
-
if (!bar.current?.contains(e.target))
|
|
80
|
-
close();
|
|
81
|
-
};
|
|
82
|
-
document.addEventListener('pointerdown', outside);
|
|
83
|
-
return () => document.removeEventListener('pointerdown', outside);
|
|
84
|
-
}, [open, close]);
|
|
85
|
-
// The sheet holds the screen: the page under it does not scroll, and it goes
|
|
86
|
-
// away when the window grows into the bar.
|
|
87
|
-
useEffect(() => {
|
|
88
|
-
if (!sheet)
|
|
89
|
-
return;
|
|
90
|
-
const root = document.documentElement;
|
|
91
|
-
root.style.overflow = 'hidden';
|
|
92
|
-
const wide = matchMedia('(min-width: 1024px)');
|
|
93
|
-
const grow = () => wide.matches && setSheet(false);
|
|
94
|
-
wide.addEventListener('change', grow);
|
|
95
|
-
return () => {
|
|
96
|
-
root.style.overflow = '';
|
|
97
|
-
wide.removeEventListener('change', grow);
|
|
98
|
-
};
|
|
99
|
-
}, [sheet]);
|
|
100
|
-
const rest = (id) => (e) => {
|
|
101
|
-
if (e.pointerType !== 'mouse')
|
|
102
|
-
return;
|
|
103
|
-
clearTimeout(timer.current);
|
|
104
|
-
if (open === id)
|
|
105
|
-
return;
|
|
106
|
-
if (open) {
|
|
107
|
-
pinned.current = false;
|
|
108
|
-
setOpen(id);
|
|
109
|
-
}
|
|
110
|
-
else
|
|
111
|
-
timer.current = setTimeout(() => setOpen(id), REST);
|
|
112
|
-
};
|
|
113
|
-
const leave = (e) => {
|
|
114
|
-
if (e.pointerType !== 'mouse' || pinned.current)
|
|
115
|
-
return;
|
|
116
|
-
clearTimeout(timer.current);
|
|
117
|
-
timer.current = setTimeout(() => setOpen(null), GRACE);
|
|
118
|
-
};
|
|
119
|
-
const press = (id) => () => {
|
|
120
|
-
clearTimeout(timer.current);
|
|
121
|
-
// A click on a menu the pointer already opened keeps it open; a second one closes it.
|
|
122
|
-
if (open === id && pinned.current)
|
|
123
|
-
return close();
|
|
124
|
-
pinned.current = true;
|
|
125
|
-
setOpen(id);
|
|
126
|
-
};
|
|
127
|
-
const step = (id) => (e) => {
|
|
128
|
-
if (e.key !== 'ArrowDown')
|
|
129
|
-
return;
|
|
130
|
-
e.preventDefault();
|
|
131
|
-
pinned.current = true;
|
|
132
|
-
setOpen(id);
|
|
133
|
-
requestAnimationFrame(() => document.querySelector(`#menu-${id} a`)?.focus());
|
|
134
|
-
};
|
|
135
|
-
// Focus that leaves a menu closes it.
|
|
136
|
-
const blur = (e) => {
|
|
137
|
-
if (!e.currentTarget.contains(e.relatedTarget))
|
|
138
|
-
close();
|
|
139
|
-
};
|
|
140
|
-
const find = () => {
|
|
141
|
-
close();
|
|
142
|
-
setSheet(false);
|
|
143
|
-
setSearch(true);
|
|
144
|
-
};
|
|
145
|
-
const menu = (item, trigger) => (_jsxs("div", { className: "hz-menu", onPointerEnter: rest(item.id), onPointerLeave: leave, onBlur: blur, children: [trigger, open === item.id ? (_jsx("div", { id: `menu-${item.id}`, className: "hz-plane", role: "group", "aria-label": item.label, children: _jsx(Columns, { menu: item, origin: origin, onPick: close }) })) : null] }));
|
|
146
|
-
const trigger = (item) => (_jsxs("button", { type: "button", className: "hz-trigger", "aria-expanded": open === item.id, "aria-controls": `menu-${item.id}`, onClick: press(item.id), onKeyDown: step(item.id), children: [_jsx(Mark, { name: item.glyph }), item.label, _jsx(Chevron, {})] }));
|
|
147
|
-
return (_jsxs(_Fragment, { children: [_jsxs("header", { ref: bar, className: "hz-masthead", "data-grounded": grounded || open || sheet ? '' : undefined, children: [menu(COMPANY, _jsxs("span", { className: "hz-brand", children: [_jsx("a", { href: home, "aria-label": `${label} home`, className: "hz-wordmark", children: _jsx(HanzoWordmark, { label: label, size: 22 }) }), _jsx("button", { type: "button", className: "hz-company", "aria-label": "Company", "aria-expanded": open === COMPANY.id, "aria-controls": `menu-${COMPANY.id}`, onClick: press(COMPANY.id), onKeyDown: step(COMPANY.id), children: _jsx(Chevron, {}) })] })), _jsx("nav", { className: "hz-nav", "aria-label": "Main", children: MENUS.map((item) => (_jsx(Fragment, { children: menu(item, trigger(item)) }, item.id))) }), open && open !== 'login' ? _jsx("div", { className: "hz-veil", "aria-hidden": "true", onClick: close }) : null, _jsx("button", { type: "button", className: "hz-find", "aria-label": "Search Hanzo or ask AI", onClick: find, children: _jsx(MARKS.search, { size: 16 }) }), _jsxs("div", { className: "hz-end", children: [person ? (_jsx(HanzoIdentity, { auth: { user: person, onSignOut, items: [{ id: 'account', label: ACCOUNT.label, href: at(ACCOUNT.href, origin) }] } })) : (_jsxs("div", { className: "hz-menu hz-login", onPointerEnter: rest('login'), onPointerLeave: leave, onBlur: blur, children: [_jsxs("button", { type: "button", className: "hz-trigger", "aria-expanded": open === 'login', "aria-controls": "menu-login", onClick: press('login'), onKeyDown: step('login'), children: ["Log in", _jsx(Chevron, {})] }), open === 'login' ? (_jsx("div", { id: "menu-login", className: "hz-card", role: "group", "aria-label": "Log in", children: LOGIN.map((link) => (_jsxs("a", { href: at(link.href, origin), target: "_blank", rel: "noreferrer", onClick: close, children: [_jsx("span", { children: link.label }), _jsx("small", { children: link.hint })] }, link.label))) })) : null] })), _jsx(Row, { link: person ? OPEN : TRY, origin: origin, className: "hz-try" }), _jsx("button", { ref: toggle, type: "button", className: "hz-toggle", "aria-label": sheet ? 'Close menu' : 'Open menu', "aria-expanded": sheet, "aria-controls": "sheet", onClick: () => {
|
|
148
|
-
close();
|
|
149
|
-
setSheet((s) => !s);
|
|
150
|
-
}, 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' }) }) })] })] }), sheet ? _jsx(Sheet, { signedIn: Boolean(person), origin: origin, onClose: () => setSheet(false) }) : null, _jsx(HanzoCommandPalette, { commands: commands, open: search, onOpenChange: setSearch, onAsk: onAsk })] }));
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* The phone's menu: the whole tree, one section open at a time, then the two
|
|
154
|
-
* doors. A `<details>` per section, so it opens with no script and a tap never
|
|
155
|
-
* waits on one.
|
|
156
|
-
*/
|
|
157
|
-
function Sheet({ signedIn, origin, onClose }) {
|
|
158
|
-
const first = useRef(null);
|
|
159
|
-
useEffect(() => first.current?.focus(), []);
|
|
160
|
-
return (_jsxs("div", { id: "sheet", className: "hz-sheet", role: "dialog", "aria-modal": "true", "aria-label": "Menu", children: [_jsx("nav", { "aria-label": "Main", children: [COMPANY, ...MENUS].map((item, i) => (_jsxs("details", { name: "sheet", children: [_jsxs("summary", { ref: i === 0 ? first : undefined, children: [_jsx(Mark, { name: item.glyph }), item.label, _jsx(Chevron, {})] }), item.groups.map((group) => (_jsxs("div", { className: "hz-column", "data-lead": group.lead ? '' : undefined, children: [_jsx("p", { className: "hz-column-title", children: group.title }), group.links.map((link) => (_jsx(Row, { link: link, origin: origin, onClick: onClose }, link.label)))] }, group.title)))] }, item.id))) }), _jsxs("div", { className: "hz-doors", children: [signedIn ? (_jsx("a", { href: at(ACCOUNT.href, origin), className: "hz-door", children: ACCOUNT.label })) : (_jsxs(_Fragment, { children: [_jsx("p", { className: "hz-column-title", children: "Log in" }), LOGIN.map((link) => (_jsx(Row, { link: link, origin: origin, className: "hz-door", onClick: onClose }, link.label)))] })), _jsx(Row, { link: signedIn ? OPEN : TRY, origin: origin, className: "hz-try", onClick: onClose })] })] }));
|
|
161
|
-
}
|
|
162
|
-
//# sourceMappingURL=Masthead.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Masthead.js","sourceRoot":"","sources":["../../src/masthead/Masthead.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAgC,MAAM,OAAO,CAAA;AACxG,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAA0C,MAAM,iBAAiB,CAAA;AAClI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAwB,MAAM,OAAO,CAAA;AAuCjG,kGAAkG;AAClG,MAAM,KAAK,GAAG,GAAG,CAAA;AACjB,sFAAsF;AACtF,MAAM,IAAI,GAAG,EAAE,CAAA;AAEf,MAAM,UAAU,IAAI,CAAC,EAAE,IAAI,EAAuB;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,OAAO,CACL,eAAM,SAAS,EAAC,SAAS,iBAAa,MAAM,YAC1C,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,GACd,CACR,CAAA;AACH,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,CACL,cAAK,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAE,GAAG,EAAE,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,iBAAa,MAAM,YACxL,eAAM,CAAC,EAAC,cAAc,GAAG,GACrB,CACP,CAAA;AACH,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,GAAG;IACjB,OAAO,CACL,cAAK,SAAS,EAAC,QAAQ,EAAC,KAAK,EAAC,QAAQ,EAAC,MAAM,EAAC,QAAQ,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAE,GAAG,EAAE,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,iBAAa,MAAM,YAC5L,eAAM,CAAC,EAAC,oBAAoB,GAAG,GAC3B,CACP,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,EAA6E;IACtI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3B,OAAO,CACL,aACE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAC3B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAClC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EACnC,OAAO,EAAE,OAAO,aAEf,IAAI,CAAC,KAAK,EACV,GAAG,CAAC,CAAC,CAAC,KAAC,GAAG,KAAG,CAAC,CAAC,CAAC,IAAI,IACnB,CACL,CAAA;AACH,CAAC;AAED,4EAA4E;AAC5E,SAAS,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAsD;IAC3F,OAAO,CACL,cAAK,SAAS,EAAC,YAAY,YACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC1B,eAAuB,SAAS,EAAC,WAAW,eAAY,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,aACjF,YAAG,SAAS,EAAC,iBAAiB,YAAE,KAAK,CAAC,KAAK,GAAK,EAC/C,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACzB,KAAC,GAAG,IAAkB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAvD,IAAI,CAAC,KAAK,CAAiD,CACtE,CAAC,KAJM,KAAK,CAAC,KAAK,CAKf,CACP,CAAC,GACE,CACP,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE,EAAE,KAAK,EAAiB;IAC9H,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACrD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,KAAK,GAAG,MAAM,CAA4C,SAAS,CAAC,CAAA;IAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAE9C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAA;QACtB,OAAO,CAAC,IAAI,CAAC,CAAA;IACf,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,8EAA8E;IAC9E,kBAAkB;IAClB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;QAClD,IAAI,EAAE,CAAA;QACN,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1D,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACzD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,yEAAyE;IACzE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QAC3B,MAAM,GAAG,GAAG,CAAC,CAAgB,EAAE,EAAE;YAC/B,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,OAAM;YAC9B,IAAI,IAAI,EAAE,CAAC;gBACT,GAAG,CAAC,OAAO,EAAE,aAAa,CAAc,wBAAwB,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAA;gBAClF,KAAK,EAAE,CAAA;YACT,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,KAAK,CAAC,CAAA;gBACf,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;YACzB,CAAC;QACH,CAAC,CAAA;QACD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACzC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAC3D,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IAExB,wDAAwD;IACxD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,MAAM,OAAO,GAAG,CAAC,CAAe,EAAE,EAAE;YAClC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;gBAAE,KAAK,EAAE,CAAA;QACvD,CAAC,CAAA;QACD,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACjD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IACnE,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IAEjB,6EAA6E;IAC7E,2CAA2C;IAC3C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAA;QACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAA;QAC9C,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;QAClD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACrC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAA;YACxB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,CAAU,EAAE,EAAE;QAC1C,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO;YAAE,OAAM;QACrC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3B,IAAI,IAAI,KAAK,EAAE;YAAE,OAAM;QACvB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,OAAO,GAAG,KAAK,CAAA;YACtB,OAAO,CAAC,EAAE,CAAC,CAAA;QACb,CAAC;;YAAM,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;IAC5D,CAAC,CAAA;IACD,MAAM,KAAK,GAAG,CAAC,CAAU,EAAE,EAAE;QAC3B,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,IAAI,MAAM,CAAC,OAAO;YAAE,OAAM;QACvD,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3B,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;IACxD,CAAC,CAAA;IACD,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,GAAG,EAAE;QACjC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3B,sFAAsF;QACtF,IAAI,IAAI,KAAK,EAAE,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,KAAK,EAAE,CAAA;QACjD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;QACrB,OAAO,CAAC,EAAE,CAAC,CAAA;IACb,CAAC,CAAA;IACD,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,CAAsB,EAAE,EAAE;QACtD,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW;YAAE,OAAM;QACjC,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;QACrB,OAAO,CAAC,EAAE,CAAC,CAAA;QACX,qBAAqB,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAc,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5F,CAAC,CAAA;IACD,sCAAsC;IACtC,MAAM,IAAI,GAAG,CAAC,CAAgC,EAAE,EAAE;QAChD,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,aAA4B,CAAC;YAAE,KAAK,EAAE,CAAA;IACxE,CAAC,CAAA;IACD,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,KAAK,EAAE,CAAA;QACP,QAAQ,CAAC,KAAK,CAAC,CAAA;QACf,SAAS,CAAC,IAAI,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,CAAC,IAAU,EAAE,OAAwB,EAAE,EAAE,CAAC,CACrD,eAAK,SAAS,EAAC,SAAS,EAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,aACxF,OAAO,EACP,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAClB,cAAK,EAAE,EAAE,QAAQ,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,OAAO,gBAAa,IAAI,CAAC,KAAK,YAClF,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAI,GAClD,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;IAED,MAAM,OAAO,GAAG,CAAC,IAAU,EAAE,EAAE,CAAC,CAC9B,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,YAAY,mBACP,IAAI,KAAK,IAAI,CAAC,EAAE,mBAChB,QAAQ,IAAI,CAAC,EAAE,EAAE,EAChC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EACvB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAExB,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAI,EACzB,IAAI,CAAC,KAAK,EACX,KAAC,OAAO,KAAG,IACJ,CACV,CAAA;IAED,OAAO,CACL,8BACE,kBAAQ,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,aAAa,mBAAgB,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,aAChG,IAAI,CACH,OAAO,EACP,gBAAM,SAAS,EAAC,UAAU,aACxB,YAAG,IAAI,EAAE,IAAI,gBAAc,GAAG,KAAK,OAAO,EAAE,SAAS,EAAC,aAAa,YACjE,KAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAI,GACvC,EACJ,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,YAAY,gBACX,SAAS,mBACL,IAAI,KAAK,OAAO,CAAC,EAAE,mBACnB,QAAQ,OAAO,CAAC,EAAE,EAAE,EACnC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAC1B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAE3B,KAAC,OAAO,KAAG,GACJ,IACJ,CACR,EACD,cAAK,SAAS,EAAC,QAAQ,gBAAY,MAAM,YACtC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,QAAQ,cAAgB,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,IAAnC,IAAI,CAAC,EAAE,CAAwC,CAC/D,CAAC,GACE,EAEL,IAAI,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,SAAS,iBAAa,MAAM,EAAC,OAAO,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI,EACjG,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,gBAAY,wBAAwB,EAAC,OAAO,EAAE,IAAI,YACzF,KAAC,KAAK,CAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,GACnB,EACT,eAAK,SAAS,EAAC,QAAQ,aACpB,MAAM,CAAC,CAAC,CAAC,CACR,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,GAAI,CACvI,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,kBAAkB,EAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,aAClG,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,YAAY,mBACP,IAAI,KAAK,OAAO,mBACjB,YAAY,EAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EACvB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,uBAGxB,KAAC,OAAO,KAAG,IACJ,EACR,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAClB,cAAK,EAAE,EAAC,YAAY,EAAC,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,gBAAY,QAAQ,YACtE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,aAAoB,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY,EAAC,OAAO,EAAE,KAAK,aAC9F,yBAAO,IAAI,CAAC,KAAK,GAAQ,EACzB,0BAAQ,IAAI,CAAC,IAAI,GAAS,KAFpB,IAAI,CAAC,KAAK,CAGd,CACL,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,EACD,KAAC,GAAG,IAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAC,QAAQ,GAAG,EACrE,iBACE,GAAG,EAAE,MAAM,EACX,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,WAAW,gBACT,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,mBAC/B,KAAK,mBACN,OAAO,EACrB,OAAO,EAAE,GAAG,EAAE;oCACZ,KAAK,EAAE,CAAA;oCACP,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gCACrB,CAAC,YAED,cAAK,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAE,CAAC,EAAE,aAAa,EAAC,OAAO,iBAAa,MAAM,YACxI,eAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,iBAAiB,GAAI,GAC3D,GACC,IACL,IACC,EACR,KAAK,CAAC,CAAC,CAAC,KAAC,KAAK,IAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAI,CAAC,CAAC,CAAC,IAAI,EACpG,KAAC,mBAAmB,IAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAI,IAC/F,CACJ,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAA8D;IACtG,MAAM,KAAK,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IACvC,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;IAC3C,OAAO,CACL,eAAK,EAAE,EAAC,OAAO,EAAC,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,QAAQ,gBAAY,MAAM,gBAAY,MAAM,aACpF,4BAAgB,MAAM,YACnB,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACpC,mBAAuB,IAAI,EAAC,OAAO,aACjC,mBAAS,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,aACvC,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAI,EACzB,IAAI,CAAC,KAAK,EACX,KAAC,OAAO,KAAG,IACH,EACT,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC1B,eAAuB,SAAS,EAAC,WAAW,eAAY,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,aACjF,YAAG,SAAS,EAAC,iBAAiB,YAAE,KAAK,CAAC,KAAK,GAAK,EAC/C,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACzB,KAAC,GAAG,IAAkB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,IAAxD,IAAI,CAAC,KAAK,CAAkD,CACvE,CAAC,KAJM,KAAK,CAAC,KAAK,CAKf,CACP,CAAC,KAbU,IAAI,CAAC,EAAE,CAcX,CACX,CAAC,GACE,EACN,eAAK,SAAS,EAAC,UAAU,aACtB,QAAQ,CAAC,CAAC,CAAC,CACV,YAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,SAAS,EAAC,SAAS,YACnD,OAAO,CAAC,KAAK,GACZ,CACL,CAAC,CAAC,CAAC,CACF,8BACE,YAAG,SAAS,EAAC,iBAAiB,uBAAW,EACxC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,GAAG,IAAkB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAC,SAAS,EAAC,OAAO,EAAE,OAAO,IAA5E,IAAI,CAAC,KAAK,CAAsE,CAC3F,CAAC,IACD,CACJ,EACD,KAAC,GAAG,IAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,GAAI,IACrF,IACF,CACP,CAAA;AACH,CAAC"}
|