@hanzo/ui 8.14.7 → 8.16.0

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 (71) hide show
  1. package/dist/backends/gui/badge.cjs +2 -1
  2. package/dist/backends/gui/badge.d.ts.map +1 -1
  3. package/dist/backends/gui/badge.js +2 -1
  4. package/dist/backends/gui/badge.js.map +1 -1
  5. package/dist/backends/gui/button.cjs +2 -1
  6. package/dist/backends/gui/button.d.ts.map +1 -1
  7. package/dist/backends/gui/button.js +2 -1
  8. package/dist/backends/gui/button.js.map +1 -1
  9. package/dist/backends/gui/link.cjs +18 -5
  10. package/dist/backends/gui/link.d.ts.map +1 -1
  11. package/dist/backends/gui/link.js +18 -5
  12. package/dist/backends/gui/link.js.map +1 -1
  13. package/dist/backends/gui/progress.cjs +2 -1
  14. package/dist/backends/gui/progress.d.ts.map +1 -1
  15. package/dist/backends/gui/progress.js +2 -1
  16. package/dist/backends/gui/progress.js.map +1 -1
  17. package/dist/backends/gui/sheet.cjs +3 -3
  18. package/dist/backends/gui/sheet.d.ts.map +1 -1
  19. package/dist/backends/gui/sheet.js +3 -3
  20. package/dist/backends/gui/sheet.js.map +1 -1
  21. package/dist/backends/gui/video.cjs +3 -2
  22. package/dist/backends/gui/video.d.ts.map +1 -1
  23. package/dist/backends/gui/video.js +3 -2
  24. package/dist/backends/gui/video.js.map +1 -1
  25. package/dist/dots.cjs +5 -0
  26. package/dist/dots.d.ts.map +1 -1
  27. package/dist/dots.js +5 -0
  28. package/dist/dots.js.map +1 -1
  29. package/dist/gallery.cjs +4 -1
  30. package/dist/gallery.d.ts.map +1 -1
  31. package/dist/gallery.html +95 -3
  32. package/dist/gallery.js +4 -1
  33. package/dist/gallery.js.map +1 -1
  34. package/dist/models/ModelSelector.cjs +2 -1
  35. package/dist/models/ModelSelector.d.ts.map +1 -1
  36. package/dist/models/ModelSelector.js +2 -1
  37. package/dist/models/ModelSelector.js.map +1 -1
  38. package/dist/product/AnimatedLogo.cjs +2 -1
  39. package/dist/product/AnimatedLogo.d.ts.map +1 -1
  40. package/dist/product/AnimatedLogo.js +2 -1
  41. package/dist/product/AnimatedLogo.js.map +1 -1
  42. package/dist/product/ConnectionBadge.cjs +21 -0
  43. package/dist/product/ConnectionBadge.d.ts +14 -0
  44. package/dist/product/ConnectionBadge.d.ts.map +1 -0
  45. package/dist/product/ConnectionBadge.js +19 -0
  46. package/dist/product/ConnectionBadge.js.map +1 -0
  47. package/dist/product/OrgSwitcher.cjs +2 -1
  48. package/dist/product/OrgSwitcher.d.ts.map +1 -1
  49. package/dist/product/OrgSwitcher.js +2 -1
  50. package/dist/product/OrgSwitcher.js.map +1 -1
  51. package/dist/product/ProjectThumb.cjs +123 -0
  52. package/dist/product/ProjectThumb.d.ts +27 -0
  53. package/dist/product/ProjectThumb.d.ts.map +1 -0
  54. package/dist/product/ProjectThumb.js +120 -0
  55. package/dist/product/ProjectThumb.js.map +1 -0
  56. package/dist/product/Split.cjs +73 -0
  57. package/dist/product/Split.d.ts +14 -0
  58. package/dist/product/Split.d.ts.map +1 -0
  59. package/dist/product/Split.js +71 -0
  60. package/dist/product/Split.js.map +1 -0
  61. package/dist/product/UserMenu.cjs +2 -1
  62. package/dist/product/UserMenu.d.ts.map +1 -1
  63. package/dist/product/UserMenu.js +2 -1
  64. package/dist/product/UserMenu.js.map +1 -1
  65. package/dist/product/index.cjs +3 -0
  66. package/dist/product/index.d.ts +3 -0
  67. package/dist/product/index.d.ts.map +1 -1
  68. package/dist/product/index.js +3 -0
  69. package/dist/product/index.js.map +1 -1
  70. package/dist/styles.css +92 -0
  71. package/package.json +1 -1
@@ -0,0 +1,27 @@
1
+ import { type ReactElement } from 'react';
2
+ export declare function canPreview(value?: string | null): boolean;
3
+ export type ProjectThumbProps = {
4
+ name: string;
5
+ /** The project whose capture to show. */
6
+ slug?: string | null;
7
+ liveUrl?: string | null;
8
+ /**
9
+ * Where the capture lives. Defaults to the same-origin cloud route, which is
10
+ * right for a site served beside the API and wrong for a desktop webview —
11
+ * so a caller that is not same-origin passes the absolute URL.
12
+ */
13
+ shotUrl?: (slug: string) => string;
14
+ /** Shown when there is no live URL and no capture. */
15
+ fallback?: ReactElement;
16
+ /**
17
+ * Box shape when the parent sets no height (cards 16/9, heroes 16/10).
18
+ *
19
+ * A RATIO, not a class name. As a Tailwind utility this named a shape and
20
+ * delivered none: where the parent supplied a height it went unnoticed, and
21
+ * where it did not, `height: 100%` resolved against an auto-height box and the
22
+ * thumbnail collapsed to zero.
23
+ */
24
+ aspect?: number;
25
+ };
26
+ export declare function ProjectThumb({ name, slug, liveUrl, shotUrl, fallback, aspect, }: ProjectThumbProps): import("react/jsx-runtime").JSX.Element;
27
+ //# sourceMappingURL=ProjectThumb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectThumb.d.ts","sourceRoot":"","sources":["../../src/product/ProjectThumb.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAWtE,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAQzD;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAClC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAID,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAoB,EACpB,QAAQ,EACR,MAAe,GAChB,EAAE,iBAAiB,2CA6InB"}
@@ -0,0 +1,120 @@
1
+ 'use client';
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * A picture of a site.
5
+ *
6
+ * THREE ANSWERS, TRIED IN ORDER, and the order is the whole design:
7
+ *
8
+ * 1. A CAPTURE — cloud screenshots the live site and serves the picture. Tried
9
+ * first because it is the only one that works for every site.
10
+ * 2. THE LIVE SITE IN A FRAME — only while no capture exists, and only for a
11
+ * host that permits framing.
12
+ * 3. A MONOGRAM — when neither can say anything true.
13
+ *
14
+ * Why the capture leads: a framed preview dies on any host sending
15
+ * `X-Frame-Options: DENY` or `frame-ancestors 'none'`, and that refusal is
16
+ * UNDETECTABLE from the embedder. The browser blocks it at the network layer,
17
+ * so `onError` never fires, `onLoad` fires for the error document, `loaded`
18
+ * flips, and the iframe's own white background is revealed — a grey box with a
19
+ * torn-image glyph that stays forever, because nothing here can learn it
20
+ * happened. A capture is taken by a browser VISITING the page, so no framing
21
+ * policy applies to it.
22
+ */
23
+ import { Text, XStack, YStack } from '@hanzo/gui';
24
+ import { useEffect, useRef, useState } from 'react';
25
+ /**
26
+ * The viewport the framed site lays itself out against, before scaling. A
27
+ * DESKTOP width, so the thumbnail shows the desktop layout.
28
+ */
29
+ const LOGICAL_W = 1280;
30
+ /** Hosts that are a sign-in, never a site worth picturing. */
31
+ const AUTH_HOSTS = new Set(['console.hanzo.ai', 'hanzo.id']);
32
+ export function canPreview(value) {
33
+ if (!value)
34
+ return false;
35
+ try {
36
+ const host = new URL(value).hostname.toLowerCase();
37
+ return ![...AUTH_HOSTS].some((auth) => host === auth || host.endsWith(`.${auth}`));
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ }
43
+ const sameOrigin = (slug) => `/v1/projects/${encodeURIComponent(slug)}/shot`;
44
+ export function ProjectThumb({ name, slug, liveUrl, shotUrl = sameOrigin, fallback, aspect = 16 / 9, }) {
45
+ const [failed, setFailed] = useState(false);
46
+ const [loaded, setLoaded] = useState(false);
47
+ /** No capture for this project — never deployed, or cloud has none yet. */
48
+ const [noShot, setNoShot] = useState(false);
49
+ const host = useRef(null);
50
+ const [box, setBox] = useState({ scale: 0.25, h: 720 });
51
+ useEffect(() => {
52
+ const el = host.current;
53
+ if (!el || !('scrollTo' in el) || typeof ResizeObserver === 'undefined')
54
+ return;
55
+ const measure = () => {
56
+ const w = el.clientWidth;
57
+ if (w > 0)
58
+ setBox({ scale: w / LOGICAL_W, h: (el.clientHeight * LOGICAL_W) / w });
59
+ };
60
+ measure();
61
+ const ro = new ResizeObserver(measure);
62
+ ro.observe(el);
63
+ return () => ro.disconnect();
64
+ }, []);
65
+ const showShot = Boolean(slug) && !noShot;
66
+ const showLive = !showShot && canPreview(liveUrl) && !failed;
67
+ /**
68
+ * The monogram does two jobs: the honest no-preview state, AND the cover that
69
+ * hides the iframe's white background until it paints — a dark product must
70
+ * never flash a white card on load.
71
+ */
72
+ const placeholder = fallback ?? (_jsx(XStack, { height: "100%", width: "100%", items: "center", justify: "center", bg: "$edge", children: _jsx(Text, { fontSize: "$11", fontWeight: "500", color: "$quiet", children: (name || '?').charAt(0).toUpperCase() }) }));
73
+ return (_jsxs(YStack, { ref: host, position: "relative", height: "100%", width: "100%", aspectRatio: aspect, overflow: "hidden", bg: "$edge", children: [showShot ? (_jsxs(_Fragment, { children: [_jsx("img", { src: shotUrl(slug), alt: "", loading: "lazy", decoding: "async", onLoad: () => setLoaded(true), onError: () => setNoShot(true), style: {
74
+ position: 'absolute',
75
+ inset: 0,
76
+ width: '100%',
77
+ height: '100%',
78
+ maxWidth: 'none',
79
+ objectFit: 'cover',
80
+ // A site's identity is in its header; centring a tall page shows
81
+ // whatever happens to be in the middle of it.
82
+ objectPosition: 'top',
83
+ opacity: loaded ? 1 : 0,
84
+ transition: 'opacity 240ms ease',
85
+ } }), loaded ? null : (_jsx(YStack, { fullscreen: true, children: placeholder }))] })) : showLive ? (_jsxs(_Fragment, { children: [_jsx("iframe", { src: liveUrl, title: `${name} preview`, loading: "lazy", tabIndex: -1, "aria-hidden": true,
86
+ // `allow-same-origin` is REQUIRED, not a relaxation: without it the
87
+ // frame gets an opaque origin and any site touching localStorage on
88
+ // boot throws before first paint. The framed host is always a
89
+ // DIFFERENT origin than the embedder, so restoring its own origin
90
+ // gives it nothing it would not have when visited directly — it
91
+ // still cannot script this page. Top-level navigation, forms,
92
+ // popups and modals all stay denied.
93
+ sandbox: "allow-scripts allow-same-origin", scrolling: "no", onLoad: () => setLoaded(true), onError: () => setFailed(true), style: {
94
+ pointerEvents: 'none',
95
+ position: 'absolute',
96
+ left: 0,
97
+ top: 0,
98
+ border: 0,
99
+ background: '#fff',
100
+ width: LOGICAL_W,
101
+ // `max-width` CONSTRAINS the used width no matter what `width`
102
+ // says, and this iframe sits under the usual responsive-media
103
+ // reset (`:where(img,svg,video,canvas,iframe) { max-width: 100% }`)
104
+ // — right for every picture on the page and wrong for this one
105
+ // element, because here the width is not a layout size, it is the
106
+ // VIEWPORT the framed site lays itself out against.
107
+ //
108
+ // Capped, it became the card's own width: the site inside saw
109
+ // ~390px, rendered its PHONE layout, and the transform shrank that
110
+ // to a strip. Every thumbnail was a real screenshot, correctly
111
+ // scaled, of the wrong layout.
112
+ maxWidth: 'none',
113
+ height: box.h,
114
+ transform: `scale(${box.scale})`,
115
+ transformOrigin: 'top left',
116
+ opacity: loaded ? 1 : 0,
117
+ transition: 'opacity 240ms ease',
118
+ } }), loaded ? null : (_jsx(YStack, { fullscreen: true, children: placeholder }))] })) : (placeholder), _jsx(YStack, { fullscreen: true })] }));
119
+ }
120
+ //# sourceMappingURL=ProjectThumb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectThumb.js","sourceRoot":"","sources":["../../src/product/ProjectThumb.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Split = Split;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * Two panes and a handle between them.
8
+ *
9
+ * The split is a PERCENTAGE, not a pixel count, so the panes keep their
10
+ * proportion when the window changes size — a pixel split silently becomes a
11
+ * different layout on a smaller screen.
12
+ *
13
+ * The handle is a real `separator`: it takes focus and moves on the arrow keys.
14
+ * A drag-only handle is unusable without a mouse, and a split pane is exactly
15
+ * the control someone drives from the keyboard while reading the pane beside it.
16
+ *
17
+ * Drag state lives on `document` rather than the element because the pointer
18
+ * leaves the 4px handle immediately — listening on the handle drops the drag as
19
+ * soon as it starts.
20
+ */
21
+ const gui_1 = require("@hanzo/gui");
22
+ const react_1 = require("react");
23
+ const STEP = 2;
24
+ function Split({ left, right, defaultSplit = 50, min = 20, max = 80, onSplitChange, }) {
25
+ const [split, setSplit] = (0, react_1.useState)(defaultSplit);
26
+ const [dragging, setDragging] = (0, react_1.useState)(false);
27
+ const container = (0, react_1.useRef)(null);
28
+ const move = (0, react_1.useCallback)((to) => {
29
+ const held = Math.max(min, Math.min(max, to));
30
+ setSplit(held);
31
+ onSplitChange?.(held);
32
+ }, [min, max, onSplitChange]);
33
+ (0, react_1.useEffect)(() => {
34
+ if (!dragging)
35
+ return;
36
+ const onMove = (e) => {
37
+ const el = container.current;
38
+ if (!el || !('getBoundingClientRect' in el))
39
+ return;
40
+ const box = el.getBoundingClientRect();
41
+ move(((e.clientX - box.left) / box.width) * 100);
42
+ };
43
+ const onUp = () => setDragging(false);
44
+ document.addEventListener('mousemove', onMove);
45
+ document.addEventListener('mouseup', onUp);
46
+ // A drag that paints a text selection across both panes reads as a bug.
47
+ document.body.style.cursor = 'col-resize';
48
+ document.body.style.userSelect = 'none';
49
+ return () => {
50
+ document.removeEventListener('mousemove', onMove);
51
+ document.removeEventListener('mouseup', onUp);
52
+ document.body.style.cursor = '';
53
+ document.body.style.userSelect = '';
54
+ };
55
+ }, [dragging, move]);
56
+ return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ref: container, height: "100%", width: "100%", children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { height: "100%", overflow: "hidden", style: { width: `${split}%` }, children: left }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { role: "separator", "aria-orientation": "vertical", "aria-valuenow": Math.round(split), "aria-valuemin": min, "aria-valuemax": max, tabIndex: 0, width: 4, cursor: "col-resize", bg: dragging ? '$hover' : '$borderColor', hoverStyle: { background: '$hover' }, focusStyle: { background: '$hover' }, onMouseDown: (e) => {
57
+ e.preventDefault();
58
+ setDragging(true);
59
+ }, ...(gui_1.isWeb
60
+ ? {
61
+ onKeyDown: ((e) => {
62
+ if (e.key === 'ArrowLeft') {
63
+ e.preventDefault();
64
+ move(split - STEP);
65
+ }
66
+ if (e.key === 'ArrowRight') {
67
+ e.preventDefault();
68
+ move(split + STEP);
69
+ }
70
+ }),
71
+ }
72
+ : null) }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { height: "100%", overflow: "hidden", flex: 1, children: right })] }));
73
+ }
@@ -0,0 +1,14 @@
1
+ import { type ReactNode } from 'react';
2
+ export type SplitProps = {
3
+ left: ReactNode;
4
+ right: ReactNode;
5
+ /** Where the handle starts, as a percentage of the width. */
6
+ defaultSplit?: number;
7
+ /** How narrow the left pane may get, as a percentage. */
8
+ min?: number;
9
+ /** How wide the left pane may get, as a percentage. */
10
+ max?: number;
11
+ onSplitChange?: (split: number) => void;
12
+ };
13
+ export declare function Split({ left, right, defaultSplit, min, max, onSplitChange, }: SplitProps): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=Split.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Split.d.ts","sourceRoot":"","sources":["../../src/product/Split.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,SAAS,CAAA;IAChB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,CAAA;AAID,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,KAAK,EACL,YAAiB,EACjB,GAAQ,EACR,GAAQ,EACR,aAAa,GACd,EAAE,UAAU,2CAqFZ"}
@@ -0,0 +1,71 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Two panes and a handle between them.
5
+ *
6
+ * The split is a PERCENTAGE, not a pixel count, so the panes keep their
7
+ * proportion when the window changes size — a pixel split silently becomes a
8
+ * different layout on a smaller screen.
9
+ *
10
+ * The handle is a real `separator`: it takes focus and moves on the arrow keys.
11
+ * A drag-only handle is unusable without a mouse, and a split pane is exactly
12
+ * the control someone drives from the keyboard while reading the pane beside it.
13
+ *
14
+ * Drag state lives on `document` rather than the element because the pointer
15
+ * leaves the 4px handle immediately — listening on the handle drops the drag as
16
+ * soon as it starts.
17
+ */
18
+ import { isWeb, XStack, YStack } from '@hanzo/gui';
19
+ import { useCallback, useEffect, useRef, useState } from 'react';
20
+ const STEP = 2;
21
+ export function Split({ left, right, defaultSplit = 50, min = 20, max = 80, onSplitChange, }) {
22
+ const [split, setSplit] = useState(defaultSplit);
23
+ const [dragging, setDragging] = useState(false);
24
+ const container = useRef(null);
25
+ const move = useCallback((to) => {
26
+ const held = Math.max(min, Math.min(max, to));
27
+ setSplit(held);
28
+ onSplitChange?.(held);
29
+ }, [min, max, onSplitChange]);
30
+ useEffect(() => {
31
+ if (!dragging)
32
+ return;
33
+ const onMove = (e) => {
34
+ const el = container.current;
35
+ if (!el || !('getBoundingClientRect' in el))
36
+ return;
37
+ const box = el.getBoundingClientRect();
38
+ move(((e.clientX - box.left) / box.width) * 100);
39
+ };
40
+ const onUp = () => setDragging(false);
41
+ document.addEventListener('mousemove', onMove);
42
+ document.addEventListener('mouseup', onUp);
43
+ // A drag that paints a text selection across both panes reads as a bug.
44
+ document.body.style.cursor = 'col-resize';
45
+ document.body.style.userSelect = 'none';
46
+ return () => {
47
+ document.removeEventListener('mousemove', onMove);
48
+ document.removeEventListener('mouseup', onUp);
49
+ document.body.style.cursor = '';
50
+ document.body.style.userSelect = '';
51
+ };
52
+ }, [dragging, move]);
53
+ return (_jsxs(XStack, { ref: container, height: "100%", width: "100%", children: [_jsx(YStack, { height: "100%", overflow: "hidden", style: { width: `${split}%` }, children: left }), _jsx(YStack, { role: "separator", "aria-orientation": "vertical", "aria-valuenow": Math.round(split), "aria-valuemin": min, "aria-valuemax": max, tabIndex: 0, width: 4, cursor: "col-resize", bg: dragging ? '$hover' : '$borderColor', hoverStyle: { background: '$hover' }, focusStyle: { background: '$hover' }, onMouseDown: (e) => {
54
+ e.preventDefault();
55
+ setDragging(true);
56
+ }, ...(isWeb
57
+ ? {
58
+ onKeyDown: ((e) => {
59
+ if (e.key === 'ArrowLeft') {
60
+ e.preventDefault();
61
+ move(split - STEP);
62
+ }
63
+ if (e.key === 'ArrowRight') {
64
+ e.preventDefault();
65
+ move(split + STEP);
66
+ }
67
+ }),
68
+ }
69
+ : null) }), _jsx(YStack, { height: "100%", overflow: "hidden", flex: 1, children: right })] }));
70
+ }
71
+ //# sourceMappingURL=Split.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Split.js","sourceRoot":"","sources":["../../src/product/Split.tsx"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
24
24
  * identity rather than a caption over a control.
25
25
  */
26
26
  const react_1 = require("react");
27
+ const sx_1 = require("../sx.cjs");
27
28
  const gui_1 = require("@hanzo/gui");
28
29
  const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
29
30
  const instrument_1 = require("./instrument.cjs");
@@ -71,7 +72,7 @@ function UserMenu({ name, email, avatar, groups = [], theme, onSignOut, signOutL
71
72
  applied normally, and React logged "Received true for a non-boolean
72
73
  attribute bordered". The siblings in this package have always used
73
74
  borderWidth={1}. */
74
- borderWidth: 1, elevation: "$2", px: "$1", py: "$1", width: 240, bg: "$panel", borderColor: "$borderColor", className: className, style: style, children: children ?? ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$1", children: [shown || email ? ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$0.5", px: "$2", py: "$1.5", children: [shown ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", fontWeight: "700", color: "$ink", numberOfLines: 1, children: shown })) : null, email && email !== shown ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$1", color: "$soft", numberOfLines: 1, children: email })) : null] })) : null, filled.map((group, i) => {
75
+ borderWidth: 1, elevation: "$2", px: "$1", py: "$1", width: 240, bg: "$panel", borderColor: "$borderColor", ...(0, sx_1.sx)(className), style: style, children: children ?? ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$1", children: [shown || email ? ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$0.5", px: "$2", py: "$1.5", children: [shown ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", fontWeight: "700", color: "$ink", numberOfLines: 1, children: shown })) : null, email && email !== shown ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$1", color: "$soft", numberOfLines: 1, children: email })) : null] })) : null, filled.map((group, i) => {
75
76
  const items = itemsOf(group);
76
77
  const groupName = nameOf(group);
77
78
  // A group whose every row carries a chosen-one is a CHOICE, so it
@@ -1 +1 @@
1
- {"version":3,"file":"UserMenu.d.ts","sourceRoot":"","sources":["../../src/product/UserMenu.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAMpE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAIpC,+EAA+E;AAC/E,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,2EAA2E;AAC3E,MAAM,MAAM,aAAa,GAAG,YAAY,EAAE,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,CAAA;AAKtF,MAAM,MAAM,aAAa,GAAG;IAC1B,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;gFAC4E;IAC5E,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IACxB;iFAC6E;IAC7E,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;4EACwE;IACxE,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACvB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB,CAAA;AAsBD,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAW,EACX,KAAK,EACL,SAAS,EACT,YAAyB,EACzB,QAAQ,EACR,KAAY,EACZ,MAAW,EACX,SAAkB,EAClB,KAAa,EACb,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,aAAa,2CA4Jf"}
1
+ {"version":3,"file":"UserMenu.d.ts","sourceRoot":"","sources":["../../src/product/UserMenu.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAOpE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAIpC,+EAA+E;AAC/E,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,2EAA2E;AAC3E,MAAM,MAAM,aAAa,GAAG,YAAY,EAAE,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,CAAA;AAKtF,MAAM,MAAM,aAAa,GAAG;IAC1B,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;gFAC4E;IAC5E,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IACxB;iFAC6E;IAC7E,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;4EACwE;IACxE,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACvB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB,CAAA;AAsBD,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAW,EACX,KAAK,EACL,SAAS,EACT,YAAyB,EACzB,QAAQ,EACR,KAAY,EACZ,MAAW,EACX,SAAkB,EAClB,KAAa,EACb,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,aAAa,2CA4Jf"}
@@ -20,6 +20,7 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
20
20
  * identity rather than a caption over a control.
21
21
  */
22
22
  import { useState } from 'react';
23
+ import { sx } from '../sx.js';
23
24
  import { Popover, Separator, Text, XStack, YStack } from '@hanzo/gui';
24
25
  import { ChevronsUpDown, LogOut, UserRound } from '@hanzogui/lucide-icons-2';
25
26
  import { useEmit } from './instrument.js';
@@ -70,7 +71,7 @@ export function UserMenu({ name, email, avatar, groups = [], theme, onSignOut, s
70
71
  applied normally, and React logged "Received true for a non-boolean
71
72
  attribute bordered". The siblings in this package have always used
72
73
  borderWidth={1}. */
73
- borderWidth: 1, elevation: "$2", px: "$1", py: "$1", width: 240, bg: "$panel", borderColor: "$borderColor", className: className, style: style, children: children ?? (_jsxs(YStack, { gap: "$1", children: [shown || email ? (_jsxs(YStack, { gap: "$0.5", px: "$2", py: "$1.5", children: [shown ? (_jsx(Text, { fontSize: "$2", fontWeight: "700", color: "$ink", numberOfLines: 1, children: shown })) : null, email && email !== shown ? (_jsx(Text, { fontSize: "$1", color: "$soft", numberOfLines: 1, children: email })) : null] })) : null, filled.map((group, i) => {
74
+ borderWidth: 1, elevation: "$2", px: "$1", py: "$1", width: 240, bg: "$panel", borderColor: "$borderColor", ...sx(className), style: style, children: children ?? (_jsxs(YStack, { gap: "$1", children: [shown || email ? (_jsxs(YStack, { gap: "$0.5", px: "$2", py: "$1.5", children: [shown ? (_jsx(Text, { fontSize: "$2", fontWeight: "700", color: "$ink", numberOfLines: 1, children: shown })) : null, email && email !== shown ? (_jsx(Text, { fontSize: "$1", color: "$soft", numberOfLines: 1, children: email })) : null] })) : null, filled.map((group, i) => {
74
75
  const items = itemsOf(group);
75
76
  const groupName = nameOf(group);
76
77
  // A group whose every row carries a chosen-one is a CHOICE, so it
@@ -1 +1 @@
1
- {"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../src/product/UserMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../src/product/UserMenu.tsx"],"names":[],"mappings":"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"}
@@ -64,6 +64,8 @@ __exportStar(require("./BrandMark.cjs"), exports);
64
64
  __exportStar(require("./OrgMark.cjs"), exports);
65
65
  __exportStar(require("./MenuRow.cjs"), exports);
66
66
  __exportStar(require("./OrgSwitcher.cjs"), exports);
67
+ __exportStar(require("./ProjectThumb.cjs"), exports);
68
+ __exportStar(require("./ConnectionBadge.cjs"), exports);
67
69
  __exportStar(require("./UserMenu.cjs"), exports);
68
70
  __exportStar(require("./scope.cjs"), exports);
69
71
  // Menu — the ONE menu system: portal-theme-safe DropdownMenu (click) + ContextMenu
@@ -128,6 +130,7 @@ __exportStar(require("./SelectMenu.cjs"), exports);
128
130
  __exportStar(require("./Skeleton.cjs"), exports);
129
131
  __exportStar(require("./SlideOver.cjs"), exports);
130
132
  __exportStar(require("./StatusTag.cjs"), exports);
133
+ __exportStar(require("./Split.cjs"), exports);
131
134
  __exportStar(require("./tone.cjs"), exports);
132
135
  __exportStar(require("./ThemeToggle.cjs"), exports);
133
136
  // `DialogTemplate` and `TooltipAnchor` are the two arrangements every surface
@@ -9,6 +9,8 @@ export * from './BrandMark.js';
9
9
  export * from './OrgMark.js';
10
10
  export * from './MenuRow.js';
11
11
  export * from './OrgSwitcher.js';
12
+ export * from './ProjectThumb.js';
13
+ export * from './ConnectionBadge.js';
12
14
  export * from './UserMenu.js';
13
15
  export * from './scope.js';
14
16
  export * from './menu/index.js';
@@ -44,6 +46,7 @@ export * from './SelectMenu.js';
44
46
  export * from './Skeleton.js';
45
47
  export * from './SlideOver.js';
46
48
  export * from './StatusTag.js';
49
+ export * from './Split.js';
47
50
  export * from './tone.js';
48
51
  export * from './ThemeToggle.js';
49
52
  export * from './DialogTemplate.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"AAaA,cAAc,UAAU,CAAA;AAKxB,OAAO,EACL,MAAM,EACN,aAAa,EACb,SAAS,EACT,SAAS,IAAI,eAAe,EAC5B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,KAAK,GACN,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAK/D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,cAAc,mBAAmB,CAAA;AASjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAKvB,cAAc,QAAQ,CAAA;AAKtB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAK5B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AAOzB,cAAc,cAAc,CAAA;AAK5B,cAAc,YAAY,CAAA;AAO1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAI7B,cAAc,cAAc,CAAA;AAG5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAM5B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAM7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAc/B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AASvB,cAAc,UAAU,CAAA;AAKxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"AAaA,cAAc,UAAU,CAAA;AAKxB,OAAO,EACL,MAAM,EACN,aAAa,EACb,SAAS,EACT,SAAS,IAAI,eAAe,EAC5B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,KAAK,GACN,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAK/D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,cAAc,mBAAmB,CAAA;AASjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAKvB,cAAc,QAAQ,CAAA;AAKtB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAK5B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AAOzB,cAAc,cAAc,CAAA;AAK5B,cAAc,YAAY,CAAA;AAO1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAI7B,cAAc,cAAc,CAAA;AAG5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAM5B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAM7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAc/B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AASvB,cAAc,UAAU,CAAA;AAKxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA"}
@@ -35,6 +35,8 @@ export * from './BrandMark.js';
35
35
  export * from './OrgMark.js';
36
36
  export * from './MenuRow.js';
37
37
  export * from './OrgSwitcher.js';
38
+ export * from './ProjectThumb.js';
39
+ export * from './ConnectionBadge.js';
38
40
  export * from './UserMenu.js';
39
41
  export * from './scope.js';
40
42
  // Menu — the ONE menu system: portal-theme-safe DropdownMenu (click) + ContextMenu
@@ -99,6 +101,7 @@ export * from './SelectMenu.js';
99
101
  export * from './Skeleton.js';
100
102
  export * from './SlideOver.js';
101
103
  export * from './StatusTag.js';
104
+ export * from './Split.js';
102
105
  export * from './tone.js';
103
106
  export * from './ThemeToggle.js';
104
107
  // `DialogTemplate` and `TooltipAnchor` are the two arrangements every surface
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;AAChF,iFAAiF;AACjF,gFAAgF;AAChF,wEAAwE;AACxE,EAAE;AACF,kFAAkF;AAClF,6EAA6E;AAE7E,kFAAkF;AAClF,gEAAgE;AAChE,cAAc,UAAU,CAAA;AAExB,2EAA2E;AAC3E,+EAA+E;AAC/E,4CAA4C;AAC5C,OAAO,EACL,MAAM,EACN,aAAa,EACb,SAAS,EACT,SAAS,IAAI,eAAe,EAC5B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,KAAK,GACN,MAAM,UAAU,CAAA;AAEjB,6EAA6E;AAC7E,OAAO,EAAE,KAAK,IAAI,SAAS,EAAqB,MAAM,SAAS,CAAA;AAE/D,+EAA+E;AAC/E,8EAA8E;AAC9E,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,cAAc,mBAAmB,CAAA;AAEjC,gFAAgF;AAChF,6EAA6E;AAC7E,mFAAmF;AACnF,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,8DAA8D;AAC9D,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAEvB,mFAAmF;AACnF,qFAAqF;AACrF,qFAAqF;AACrF,cAAc,QAAQ,CAAA;AAEtB,iFAAiF;AACjF,2EAA2E;AAC3E,8EAA8E;AAC9E,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAE5B,6EAA6E;AAC7E,yEAAyE;AACzE,qFAAqF;AACrF,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AAEzB,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAC7E,mDAAmD;AACnD,cAAc,cAAc,CAAA;AAE5B,gFAAgF;AAChF,iFAAiF;AACjF,2EAA2E;AAC3E,cAAc,YAAY,CAAA;AAE1B,kFAAkF;AAClF,mFAAmF;AACnF,gFAAgF;AAChF,kFAAkF;AAClF,oBAAoB;AACpB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAE7B,8EAA8E;AAC9E,sBAAsB;AACtB,cAAc,cAAc,CAAA;AAE5B,mEAAmE;AACnE,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAE5B,gFAAgF;AAChF,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,8EAA8E;AAC9E,yEAAyE;AACzE,yEAAyE;AACzE,6EAA6E;AAC7E,+EAA+E;AAC/E,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAE/B,+EAA+E;AAC/E,2EAA2E;AAC3E,iFAAiF;AACjF,0EAA0E;AAC1E,8EAA8E;AAC9E,iFAAiF;AACjF,0BAA0B;AAC1B,EAAE;AACF,0EAA0E;AAC1E,EAAE;AACF,+EAA+E;AAC/E,kEAAkE;AAClE,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AAEvB,mFAAmF;AACnF,qFAAqF;AACrF,uEAAuE;AAEvE,iFAAiF;AACjF,kFAAkF;AAClF,kEAAkE;AAClE,cAAc,UAAU,CAAA;AAExB,sEAAsE;AACtE,+EAA+E;AAC/E,8EAA8E;AAC9E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAgB,MAAM,aAAa,CAAA"}