@hanzo/ui 8.27.19 → 8.27.20
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/item.cjs +2 -3
- package/dist/backends/gui/item.d.ts.map +1 -1
- package/dist/backends/gui/item.js +1 -2
- package/dist/backends/gui/item.js.map +1 -1
- package/dist/backends/gui/press.cjs +29 -0
- package/dist/backends/gui/press.d.ts +28 -0
- package/dist/backends/gui/press.d.ts.map +1 -0
- package/dist/backends/gui/press.js +26 -0
- package/dist/backends/gui/press.js.map +1 -0
- package/dist/backends/gui/toggle-group.cjs +2 -3
- package/dist/backends/gui/toggle-group.d.ts.map +1 -1
- package/dist/backends/gui/toggle-group.js +1 -2
- package/dist/backends/gui/toggle-group.js.map +1 -1
- package/dist/backends/gui/toggle.cjs +3 -4
- package/dist/backends/gui/toggle.d.ts.map +1 -1
- package/dist/backends/gui/toggle.js +1 -2
- package/dist/backends/gui/toggle.js.map +1 -1
- package/dist/catalog/Shelf.cjs +76 -0
- package/dist/catalog/Shelf.d.ts +55 -0
- package/dist/catalog/Shelf.d.ts.map +1 -0
- package/dist/catalog/Shelf.js +74 -0
- package/dist/catalog/Shelf.js.map +1 -0
- package/dist/catalog/Tile.cjs +72 -0
- package/dist/catalog/Tile.d.ts +56 -0
- package/dist/catalog/Tile.d.ts.map +1 -0
- package/dist/catalog/Tile.js +67 -0
- package/dist/catalog/Tile.js.map +1 -0
- package/dist/catalog/index.cjs +23 -0
- package/dist/catalog/index.d.ts +16 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +16 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/chat/Home.cjs +30 -0
- package/dist/chat/Home.d.ts +35 -0
- package/dist/chat/Home.d.ts.map +1 -0
- package/dist/chat/Home.js +28 -0
- package/dist/chat/Home.js.map +1 -0
- package/dist/chat/SessionRail.cjs +165 -37
- package/dist/chat/SessionRail.d.ts +92 -14
- package/dist/chat/SessionRail.d.ts.map +1 -1
- package/dist/chat/SessionRail.js +165 -39
- package/dist/chat/SessionRail.js.map +1 -1
- package/dist/chat/index.cjs +6 -1
- package/dist/chat/index.d.ts +2 -1
- package/dist/chat/index.d.ts.map +1 -1
- package/dist/chat/index.js +2 -1
- package/dist/chat/index.js.map +1 -1
- package/dist/gallery.cjs +72 -1
- package/dist/gallery.d.ts +13 -0
- package/dist/gallery.d.ts.map +1 -1
- package/dist/gallery.html +45 -3
- package/dist/gallery.js +72 -2
- package/dist/gallery.js.map +1 -1
- package/dist/product/ChipSelect.cjs +2 -3
- package/dist/product/ChipSelect.d.ts.map +1 -1
- package/dist/product/ChipSelect.js +1 -2
- package/dist/product/ChipSelect.js.map +1 -1
- package/dist/product/MenuRow.cjs +2 -1
- package/dist/product/MenuRow.d.ts +11 -7
- package/dist/product/MenuRow.d.ts.map +1 -1
- package/dist/product/MenuRow.js +3 -2
- package/dist/product/MenuRow.js.map +1 -1
- package/dist/product/OrgSwitcher.cjs +16 -5
- package/dist/product/OrgSwitcher.d.ts.map +1 -1
- package/dist/product/OrgSwitcher.js +16 -5
- package/dist/product/OrgSwitcher.js.map +1 -1
- package/dist/product/UserMenu.cjs +19 -27
- package/dist/product/UserMenu.d.ts +2 -21
- package/dist/product/UserMenu.d.ts.map +1 -1
- package/dist/product/UserMenu.js +23 -31
- package/dist/product/UserMenu.js.map +1 -1
- package/dist/product/account.cjs +37 -0
- package/dist/product/account.d.ts +55 -0
- package/dist/product/account.d.ts.map +1 -0
- package/dist/product/account.js +35 -0
- package/dist/product/account.js.map +1 -0
- package/dist/product/menu/roving.cjs +4 -1
- package/dist/product/menu/roving.d.ts +8 -3
- package/dist/product/menu/roving.d.ts.map +1 -1
- package/dist/product/menu/roving.js +4 -1
- package/dist/product/menu/roving.js.map +1 -1
- package/dist/settings/Section.cjs +71 -0
- package/dist/settings/Section.d.ts +78 -0
- package/dist/settings/Section.d.ts.map +1 -0
- package/dist/settings/Section.js +62 -0
- package/dist/settings/Section.js.map +1 -0
- package/dist/settings/Settings.cjs +54 -0
- package/dist/settings/Settings.d.ts +50 -0
- package/dist/settings/Settings.d.ts.map +1 -0
- package/dist/settings/Settings.js +52 -0
- package/dist/settings/Settings.js.map +1 -0
- package/dist/settings/index.cjs +26 -0
- package/dist/settings/index.d.ts +15 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +15 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/styles.css +42 -0
- package/package.json +13 -1
|
@@ -18,7 +18,9 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
|
18
18
|
import { sx } from '../sx.js';
|
|
19
19
|
import { Button, Input, Popover, Spinner, Text, XStack, YStack } from '@hanzo/gui';
|
|
20
20
|
import { ChevronsUpDown, LayoutGrid, Plus, Search } from '@hanzogui/lucide-icons-2';
|
|
21
|
+
import { press, RING } from '../backends/gui/press.js';
|
|
21
22
|
import { useEmit } from './instrument.js';
|
|
23
|
+
import { menuKeyDown } from './menu/roving.js';
|
|
22
24
|
import { MenuRow } from './MenuRow.js';
|
|
23
25
|
import { OrgMark } from './OrgMark.js';
|
|
24
26
|
import { filterOrgs } from './scope.js';
|
|
@@ -36,6 +38,9 @@ export function OrgSwitcher({ scope, orgs, pageSize = 20, current: given, create
|
|
|
36
38
|
const [newName, setNewName] = useState('');
|
|
37
39
|
const [busy, setBusy] = useState(false);
|
|
38
40
|
const [err, setErr] = useState(null);
|
|
41
|
+
// Closing hands focus back to the trigger. The popover's own return goes
|
|
42
|
+
// through a trigger ref an `asChild` child never fills, so it is ours.
|
|
43
|
+
const trigger = useRef(null);
|
|
39
44
|
const pageRef = useRef(0);
|
|
40
45
|
const reqRef = useRef(0); // race token — a newer request supersedes older ones
|
|
41
46
|
// Debounce the search so type-as-you-search re-hits the server at most ~4×/s.
|
|
@@ -125,7 +130,7 @@ export function OrgSwitcher({ scope, orgs, pageSize = 20, current: given, create
|
|
|
125
130
|
setBusy(false);
|
|
126
131
|
}
|
|
127
132
|
};
|
|
128
|
-
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, placement: direction === 'up' ? 'top-start' : 'bottom-start', allowFlip: true, stayInFrame: true, children: [_jsx(Popover.Trigger, { asChild: true, children: _jsx(Button, { chromeless: true, height: lead ? 56 : 44, px: "$2", justify: "flex-start", "data-testid": testId, "aria-label": aria ?? `${currentLabel} · switch organization`, children: _jsxs(XStack, { items: "center", gap: "$2.5", flex: 1, minW: 0, children: [_jsx(OrgMark, { org: current, size: lead ? 36 : 30 }), _jsxs(YStack, { flex: 1, minW: 0, children: [_jsx(Text, { minW: 0,
|
|
133
|
+
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, placement: direction === 'up' ? 'top-start' : 'bottom-start', allowFlip: true, stayInFrame: true, children: [_jsx(Popover.Trigger, { asChild: true, children: _jsx(Button, { ref: trigger, chromeless: true, height: lead ? 56 : 44, px: "$2", justify: "flex-start", "data-testid": testId, "aria-label": aria ?? `${currentLabel} · switch organization`, children: _jsxs(XStack, { items: "center", gap: "$2.5", flex: 1, minW: 0, children: [_jsx(OrgMark, { org: current, size: lead ? 36 : 30 }), _jsxs(YStack, { flex: 1, minW: 0, children: [_jsx(Text, { minW: 0,
|
|
129
134
|
// Heavier at the smaller size and lighter at the larger one, so
|
|
130
135
|
// the two read at the same WEIGHT on the page: 800 is what makes
|
|
131
136
|
// 15px hold its own as a peer, and it turns 17px into a shout.
|
|
@@ -144,16 +149,22 @@ export function OrgSwitcher({ scope, orgs, pageSize = 20, current: given, create
|
|
|
144
149
|
applied normally, and React logged "Received true for a non-boolean
|
|
145
150
|
attribute bordered". The siblings in this package have always used
|
|
146
151
|
borderWidth={1}. */
|
|
147
|
-
borderWidth: 1, elevation: "$2", px: "$1", py: "$1", width: 300, bg: "$panel", borderColor: "$borderColor",
|
|
152
|
+
borderWidth: 1, elevation: "$2", px: "$1", py: "$1", width: 300, bg: "$panel", borderColor: "$borderColor",
|
|
153
|
+
// The arrows, Home and End move between the rows; the search field keeps
|
|
154
|
+
// its own keys (roving.ts). Escape is the popover's.
|
|
155
|
+
onKeyDown: (e) => menuKeyDown(e), onCloseAutoFocus: (e) => {
|
|
156
|
+
e.preventDefault();
|
|
157
|
+
trigger.current?.focus();
|
|
158
|
+
}, ...sx(className), style: style, children: creating ? (_jsxs(YStack, { gap: "$2", children: [_jsx(Text, { fontSize: "$2", color: "$ink", fontWeight: "700", children: "Create organization" }), _jsx(Input, { size: "$3", placeholder: "Organization name", value: newName, onChangeText: setNewName, autoCapitalize: "words", onSubmitEditing: () => void submitCreate() }), err ? (_jsx(Text, { fontSize: "$1", color: "$red10", children: err })) : null, _jsxs(XStack, { gap: "$2", justify: "flex-end", children: [_jsx(Button, { size: "$2", chromeless: true, onPress: () => setCreating(false), disabled: busy, children: "Cancel" }), _jsx(Button, { size: "$2", onPress: () => void submitCreate(), disabled: busy || !newName.trim(), icon: busy ? _jsx(Spinner, { size: "small" }) : _jsx(Plus, { size: 14 }), children: "Create" })] })] })) : (_jsxs(YStack, { gap: "$1", children: [heading ? (_jsx(Text, { px: "$2", py: "$1", fontSize: "$1", color: "$soft", fontWeight: "500", children: heading })) : null, search ?? !!orgs ? (_jsxs(XStack, { items: "center", gap: "$2", px: "$2", py: "$1", rounded: "$3", borderWidth: 1, borderColor: "$borderColor", children: [_jsx(Search, { size: 13, opacity: 0.6 }), _jsx(Input, { flex: 1, size: "$2", borderWidth: 0, bg: "transparent", placeholder: "Find an organization", "aria-label": "Find an organization", value: query, onChangeText: setQuery, autoCapitalize: "none", autoCorrect: false })] })) : null, _jsxs("div", { style: { maxHeight: 300, overflowY: 'auto', display: 'flex', flexDirection: 'column' }, onScroll: (e) => {
|
|
148
159
|
const el = e.currentTarget;
|
|
149
160
|
if (el.scrollHeight - el.scrollTop - el.clientHeight < 48)
|
|
150
161
|
loadMore();
|
|
151
|
-
}, children: [loading ? (_jsxs(XStack, { items: "center", gap: "$2", px: "$2", py: "$3", children: [_jsx(Spinner, { size: "small", color: "$quiet" }), _jsx(Text, { fontSize: "$2", color: "$soft", children: "Loading organizations\u2026" })] })) : visible.length === 0 ? (_jsx(Text, { px: "$2", py: "$2", fontSize: "$2", color: "$soft", children: query.trim() ? `No organizations match “${query.trim()}”.` : 'No organizations yet.' })) : (_jsx(YStack, { role: "
|
|
162
|
+
}, children: [loading ? (_jsxs(XStack, { items: "center", gap: "$2", px: "$2", py: "$3", children: [_jsx(Spinner, { size: "small", color: "$quiet" }), _jsx(Text, { fontSize: "$2", color: "$soft", children: "Loading organizations\u2026" })] })) : visible.length === 0 ? (_jsx(Text, { px: "$2", py: "$2", fontSize: "$2", color: "$soft", children: query.trim() ? `No organizations match “${query.trim()}”.` : 'No organizations yet.' })) : (_jsx(YStack, { role: "group", "aria-label": "Organizations", gap: "$1", children: visible.map((org) => (_jsx(MenuRow, { label: org.displayName || org.name, icon: _jsx(OrgMark, { org: org }), active: org.name === currentId, onPress: () => select(org.name) }, org.name))) })), loadingMore ? (_jsxs(XStack, { items: "center", gap: "$2", px: "$2", py: "$2", children: [_jsx(Spinner, { size: "small", color: "$quiet" }), _jsx(Text, { fontSize: "$1", color: "$soft", children: "Loading more\u2026" })] })) : hasMore ? (_jsx(XStack, { onPress: loadMore, cursor: "pointer", items: "center", justify: "center", px: "$2", py: "$1.5", rounded: "$3", hoverStyle: { bg: '$edge' }, children: _jsx(Text, { fontSize: "$1", color: "$quiet", fontWeight: "600", children: "Load more" }) })) : null] }), typeof footer === 'function' ? footer(() => setOpen(false)) : footer, create ? (_jsxs(XStack, { ...press(() => {
|
|
152
163
|
setCreating(true);
|
|
153
164
|
setErr(null);
|
|
154
|
-
}, cursor: "pointer", items: "center", gap: "$2.5", px: "$2", py: "$2", mt: "$1", rounded: "$3", borderTopWidth: 1, borderColor: "$borderColor", hoverStyle: { bg: '$raised' }, children: [_jsx(YStack, { width: 22, height: 22, rounded: "$3", bg: "$hover", items: "center", justify: "center", children: _jsx(Plus, { size: 14 }) }), _jsx(Text, { fontSize: "$2", color: "$ink", children: "Create organization" })] })) : null, picker ? (_jsxs(XStack, {
|
|
165
|
+
}), role: "menuitem", focusVisibleStyle: RING, cursor: "pointer", items: "center", gap: "$2.5", px: "$2", py: "$2", mt: "$1", rounded: "$3", borderTopWidth: 1, borderColor: "$borderColor", hoverStyle: { bg: '$raised' }, children: [_jsx(YStack, { width: 22, height: 22, rounded: "$3", bg: "$hover", items: "center", justify: "center", children: _jsx(Plus, { size: 14 }) }), _jsx(Text, { fontSize: "$2", color: "$ink", children: "Create organization" })] })) : null, picker ? (_jsxs(XStack, { ...press(() => {
|
|
155
166
|
setOpen(false);
|
|
156
167
|
scope.leaveOrg();
|
|
157
|
-
}, cursor: "pointer", items: "center", gap: "$2.5", px: "$2", py: "$2", rounded: "$3", hoverStyle: { bg: '$raised' }, children: [_jsx(YStack, { width: 22, height: 22, rounded: "$3", bg: "$hover", items: "center", justify: "center", children: _jsx(LayoutGrid, { size: 14 }) }), _jsx(Text, { fontSize: "$2", color: "$ink", children: "All organizations" })] })) : null] })) })] }));
|
|
168
|
+
}), role: "menuitem", focusVisibleStyle: RING, cursor: "pointer", items: "center", gap: "$2.5", px: "$2", py: "$2", rounded: "$3", hoverStyle: { bg: '$raised' }, children: [_jsx(YStack, { width: 22, height: 22, rounded: "$3", bg: "$hover", items: "center", justify: "center", children: _jsx(LayoutGrid, { size: 14 }) }), _jsx(Text, { fontSize: "$2", color: "$ink", children: "All organizations" })] })) : null] })) })] }));
|
|
158
169
|
}
|
|
159
170
|
//# sourceMappingURL=OrgSwitcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrgSwitcher.js","sourceRoot":"","sources":["../../src/product/OrgSwitcher.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OrgSwitcher.js","sourceRoot":"","sources":["../../src/product/OrgSwitcher.tsx"],"names":[],"mappings":"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"}
|
|
@@ -27,27 +27,19 @@ const react_1 = require("react");
|
|
|
27
27
|
const sx_1 = require("../sx.cjs");
|
|
28
28
|
const gui_1 = require("@hanzo/gui");
|
|
29
29
|
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
30
|
+
const account_1 = require("./account.cjs");
|
|
30
31
|
const instrument_1 = require("./instrument.cjs");
|
|
31
|
-
const MenuRow_1 = require("./MenuRow.cjs");
|
|
32
32
|
const name_1 = require("./name.cjs");
|
|
33
33
|
Object.defineProperty(exports, "displayName", { enumerable: true, get: function () { return name_1.displayName; } });
|
|
34
34
|
const OrgMark_1 = require("./OrgMark.cjs");
|
|
35
35
|
const ThemeToggle_1 = require("./ThemeToggle.cjs");
|
|
36
|
-
const itemsOf = (g) => (Array.isArray(g) ? g : g.items);
|
|
37
|
-
const nameOf = (g) => (Array.isArray(g) ? undefined : g.label);
|
|
38
|
-
function Row({ item, onDone }) {
|
|
39
|
-
const track = (0, instrument_1.useEmit)();
|
|
40
|
-
return ((0, jsx_runtime_1.jsx)(MenuRow_1.MenuRow, { label: item.label, icon: item.icon, active: item.active, danger: item.danger, onPress: () => {
|
|
41
|
-
track({ component: 'UserMenu', action: 'select', id: item.id });
|
|
42
|
-
onDone();
|
|
43
|
-
item.onPress();
|
|
44
|
-
} }));
|
|
45
|
-
}
|
|
46
36
|
function UserMenu({ name, email, avatar, groups = [], theme, onSignOut, signOutLabel = 'Sign out', children, label = true, height = 44, direction = 'down', align = 'end', aria, testId, className, style, }) {
|
|
47
37
|
const [open, setOpen] = (0, react_1.useState)(false);
|
|
38
|
+
// Closing hands focus back to the trigger. The popover's own return goes
|
|
39
|
+
// through a trigger ref that an `asChild` stack never fills, so it is ours.
|
|
40
|
+
const trigger = (0, react_1.useRef)(null);
|
|
48
41
|
const track = (0, instrument_1.useEmit)();
|
|
49
42
|
const shown = (0, name_1.displayName)(name, email);
|
|
50
|
-
const filled = groups.filter((g) => itemsOf(g).length > 0);
|
|
51
43
|
const close = () => setOpen(false);
|
|
52
44
|
return ((0, jsx_runtime_1.jsxs)(gui_1.Popover, { open: open, onOpenChange: (next) => {
|
|
53
45
|
track({ component: 'UserMenu', action: next ? 'open' : 'close' });
|
|
@@ -57,7 +49,15 @@ function UserMenu({ name, email, avatar, groups = [], theme, onSignOut, signOutL
|
|
|
57
49
|
// `OrgSwitcher`. This is the control it bites: at the foot of a desktop
|
|
58
50
|
// rail it opens upward, and the SAME mount near the top of a phone's
|
|
59
51
|
// account sheet has nowhere to go upward at all.
|
|
60
|
-
allowFlip: true, stayInFrame: true, children: [(0, jsx_runtime_1.jsx)(gui_1.Popover.Trigger, { asChild: true, children: (0, jsx_runtime_1.jsxs)(gui_1.XStack, { cursor: "pointer", items: "center", gap: "$2.5", height: height, px: "$2", rounded: "$3", minW: 0, hoverStyle: { bg: '$edge' }, role: "button", tabIndex: 0, "data-testid": testId, "aria-label": aria ?? (shown ? `${shown} · account` : 'Account'),
|
|
52
|
+
allowFlip: true, stayInFrame: true, children: [(0, jsx_runtime_1.jsx)(gui_1.Popover.Trigger, { asChild: true, children: (0, jsx_runtime_1.jsxs)(gui_1.XStack, { ref: trigger, cursor: "pointer", items: "center", gap: "$2.5", height: height, px: "$2", rounded: "$3", minW: 0, hoverStyle: { bg: '$edge' }, role: "button", tabIndex: 0, "data-testid": testId, "aria-label": aria ?? (shown ? `${shown} · account` : 'Account'), "aria-haspopup": "menu", "aria-expanded": open,
|
|
53
|
+
// gui opens a stack-drawn trigger on a press only; Enter and Space are
|
|
54
|
+
// the trigger's own (see backends/gui/press.ts).
|
|
55
|
+
onKeyDown: (e) => {
|
|
56
|
+
if (e?.key !== 'Enter' && e?.key !== ' ')
|
|
57
|
+
return;
|
|
58
|
+
e.preventDefault?.();
|
|
59
|
+
setOpen(!open);
|
|
60
|
+
}, children: [avatar || shown ? ((0, jsx_runtime_1.jsx)(OrgMark_1.OrgMark, { org: { name: shown || 'Account', logo: avatar }, size: 30 })) : ((0, jsx_runtime_1.jsx)(lucide_icons_2_1.UserRound, { size: 18 })), label && shown ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", fontWeight: "600", color: "$ink", numberOfLines: 1, maxW: 160, children: shown })) : null, label && shown ? (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronsUpDown, { size: 16, color: "$faint" }) : null] }) }), (0, jsx_runtime_1.jsx)(gui_1.Popover.Content, { role: "menu",
|
|
61
61
|
/* A menu sheet's rows run its full width. gui's PopperContent centres
|
|
62
62
|
its children, so each row is only as wide as its own text until the
|
|
63
63
|
class that stretches it lands a frame later: the sheet flashes a
|
|
@@ -72,18 +72,10 @@ function UserMenu({ name, email, avatar, groups = [], theme, onSignOut, signOutL
|
|
|
72
72
|
applied normally, and React logged "Received true for a non-boolean
|
|
73
73
|
attribute bordered". The siblings in this package have always used
|
|
74
74
|
borderWidth={1}. */
|
|
75
|
-
borderWidth: 1, elevation: "$2", px: "$1", py: "$1", width: 240, bg: "$panel", borderColor: "$borderColor",
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const rows = items.map((item) => (0, jsx_runtime_1.jsx)(Row, { item: item, onDone: close }, item.id));
|
|
82
|
-
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$1", children: [i > 0 || shown || email ? (0, jsx_runtime_1.jsx)(gui_1.Separator, { borderColor: "$borderColor", my: "$1" }) : null, groupName ? (0, jsx_runtime_1.jsx)(MenuRow_1.MenuLabel, { children: groupName }) : null, choice ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { role: "radiogroup", "aria-label": groupName, gap: "$1", children: rows })) : (rows)] }, i));
|
|
83
|
-
}), theme !== null ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(gui_1.Separator, { borderColor: "$borderColor", my: "$1" }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2.5", px: "$2", py: "$1", rounded: "$3", children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { flex: 1, fontSize: "$2", color: "$ink", children: "Theme" }), theme ?? (0, jsx_runtime_1.jsx)(ThemeToggle_1.ThemeToggle, {})] })] })) : null, onSignOut ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(gui_1.Separator, { borderColor: "$borderColor", my: "$1" }), (0, jsx_runtime_1.jsx)(Row, { item: {
|
|
84
|
-
id: 'sign-out',
|
|
85
|
-
label: signOutLabel,
|
|
86
|
-
icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.LogOut, { size: 16 }),
|
|
87
|
-
onPress: onSignOut,
|
|
88
|
-
}, onDone: close })] })) : null] })) })] }));
|
|
75
|
+
borderWidth: 1, elevation: "$2", px: "$1", py: "$1", width: 240, bg: "$panel", borderColor: "$borderColor", onCloseAutoFocus: (e) => {
|
|
76
|
+
e.preventDefault();
|
|
77
|
+
trigger.current?.focus();
|
|
78
|
+
}, ...(0, sx_1.sx)(className), style: style, children: children ?? ((0, jsx_runtime_1.jsx)(account_1.Account, { name: name, email: email, groups: groups,
|
|
79
|
+
// The default toggle is this menu's, not the shared body's (see account.tsx).
|
|
80
|
+
theme: theme === undefined ? (0, jsx_runtime_1.jsx)(ThemeToggle_1.ThemeToggle, {}) : theme, onSignOut: onSignOut, signOutLabel: signOutLabel, onDone: close, component: "UserMenu" })) })] }));
|
|
89
81
|
}
|
|
@@ -18,28 +18,9 @@
|
|
|
18
18
|
* identity rather than a caption over a control.
|
|
19
19
|
*/
|
|
20
20
|
import { type CSSProperties, type ReactNode } from 'react';
|
|
21
|
+
import { type UserMenuGroup } from './account.js';
|
|
21
22
|
import { displayName } from './name.js';
|
|
22
|
-
|
|
23
|
-
export type UserMenuItem = {
|
|
24
|
-
id: string;
|
|
25
|
-
label: string;
|
|
26
|
-
icon?: ReactNode;
|
|
27
|
-
onPress: () => void;
|
|
28
|
-
/** Draws the row in the destructive tone (sign out, delete account). */
|
|
29
|
-
danger?: boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Whether this row is the chosen one — for a group that is a CHOICE rather
|
|
32
|
-
* than a list of actions (which theme, which language). Its presence makes the
|
|
33
|
-
* group a `radiogroup` and the row a `radio`, so assistive tech is told that
|
|
34
|
-
* exactly one of them holds, and the chosen row carries a check.
|
|
35
|
-
*/
|
|
36
|
-
active?: boolean;
|
|
37
|
-
};
|
|
38
|
-
/** A group of rows, optionally named. A bare array is the unnamed form. */
|
|
39
|
-
export type UserMenuGroup = UserMenuItem[] | {
|
|
40
|
-
label?: string;
|
|
41
|
-
items: UserMenuItem[];
|
|
42
|
-
};
|
|
23
|
+
export type { UserMenuGroup, UserMenuItem } from './account.js';
|
|
43
24
|
export type UserMenuProps = {
|
|
44
25
|
/** The signed-in person's display name. Falls back to the email's local part. */
|
|
45
26
|
name?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMenu.d.ts","sourceRoot":"","sources":["../../src/product/UserMenu.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"UserMenu.d.ts","sourceRoot":"","sources":["../../src/product/UserMenu.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAoB,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK5E,OAAO,EAAW,KAAK,aAAa,EAAE,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAMpC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE5D,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;AAKD,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,+BAoHf"}
|
package/dist/product/UserMenu.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import {
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
/**
|
|
4
4
|
* UserMenu — the account control: who I am, and the things I do to my account.
|
|
5
5
|
*
|
|
@@ -19,34 +19,26 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
|
|
|
19
19
|
* same type — so "which workspace" and "who I am" read as two halves of one
|
|
20
20
|
* identity rather than a caption over a control.
|
|
21
21
|
*/
|
|
22
|
-
import { useState } from 'react';
|
|
22
|
+
import { useRef, useState } from 'react';
|
|
23
23
|
import { sx } from '../sx.js';
|
|
24
|
-
import { Popover,
|
|
25
|
-
import { ChevronsUpDown,
|
|
24
|
+
import { Popover, Text, XStack } from '@hanzo/gui';
|
|
25
|
+
import { ChevronsUpDown, UserRound } from '@hanzogui/lucide-icons-2';
|
|
26
|
+
import { Account } from './account.js';
|
|
26
27
|
import { useEmit } from './instrument.js';
|
|
27
|
-
import { MenuLabel, MenuRow } from './MenuRow.js';
|
|
28
28
|
import { displayName } from './name.js';
|
|
29
29
|
import { OrgMark } from './OrgMark.js';
|
|
30
30
|
import { ThemeToggle } from './ThemeToggle.js';
|
|
31
|
-
const itemsOf = (g) => (Array.isArray(g) ? g : g.items);
|
|
32
|
-
const nameOf = (g) => (Array.isArray(g) ? undefined : g.label);
|
|
33
|
-
function Row({ item, onDone }) {
|
|
34
|
-
const track = useEmit();
|
|
35
|
-
return (_jsx(MenuRow, { label: item.label, icon: item.icon, active: item.active, danger: item.danger, onPress: () => {
|
|
36
|
-
track({ component: 'UserMenu', action: 'select', id: item.id });
|
|
37
|
-
onDone();
|
|
38
|
-
item.onPress();
|
|
39
|
-
} }));
|
|
40
|
-
}
|
|
41
31
|
// The name to show is a rule over two strings, so it lives in `./name` and is
|
|
42
32
|
// reachable without a gui runtime via `@hanzo/ui/product/pure`. Re-exported
|
|
43
33
|
// here because it was published from this module.
|
|
44
34
|
export { displayName };
|
|
45
35
|
export function UserMenu({ name, email, avatar, groups = [], theme, onSignOut, signOutLabel = 'Sign out', children, label = true, height = 44, direction = 'down', align = 'end', aria, testId, className, style, }) {
|
|
46
36
|
const [open, setOpen] = useState(false);
|
|
37
|
+
// Closing hands focus back to the trigger. The popover's own return goes
|
|
38
|
+
// through a trigger ref that an `asChild` stack never fills, so it is ours.
|
|
39
|
+
const trigger = useRef(null);
|
|
47
40
|
const track = useEmit();
|
|
48
41
|
const shown = displayName(name, email);
|
|
49
|
-
const filled = groups.filter((g) => itemsOf(g).length > 0);
|
|
50
42
|
const close = () => setOpen(false);
|
|
51
43
|
return (_jsxs(Popover, { open: open, onOpenChange: (next) => {
|
|
52
44
|
track({ component: 'UserMenu', action: next ? 'open' : 'close' });
|
|
@@ -56,7 +48,15 @@ export function UserMenu({ name, email, avatar, groups = [], theme, onSignOut, s
|
|
|
56
48
|
// `OrgSwitcher`. This is the control it bites: at the foot of a desktop
|
|
57
49
|
// rail it opens upward, and the SAME mount near the top of a phone's
|
|
58
50
|
// account sheet has nowhere to go upward at all.
|
|
59
|
-
allowFlip: true, stayInFrame: true, children: [_jsx(Popover.Trigger, { asChild: true, children: _jsxs(XStack, { cursor: "pointer", items: "center", gap: "$2.5", height: height, px: "$2", rounded: "$3", minW: 0, hoverStyle: { bg: '$edge' }, role: "button", tabIndex: 0, "data-testid": testId, "aria-label": aria ?? (shown ? `${shown} · account` : 'Account'),
|
|
51
|
+
allowFlip: true, stayInFrame: true, children: [_jsx(Popover.Trigger, { asChild: true, children: _jsxs(XStack, { ref: trigger, cursor: "pointer", items: "center", gap: "$2.5", height: height, px: "$2", rounded: "$3", minW: 0, hoverStyle: { bg: '$edge' }, role: "button", tabIndex: 0, "data-testid": testId, "aria-label": aria ?? (shown ? `${shown} · account` : 'Account'), "aria-haspopup": "menu", "aria-expanded": open,
|
|
52
|
+
// gui opens a stack-drawn trigger on a press only; Enter and Space are
|
|
53
|
+
// the trigger's own (see backends/gui/press.ts).
|
|
54
|
+
onKeyDown: (e) => {
|
|
55
|
+
if (e?.key !== 'Enter' && e?.key !== ' ')
|
|
56
|
+
return;
|
|
57
|
+
e.preventDefault?.();
|
|
58
|
+
setOpen(!open);
|
|
59
|
+
}, children: [avatar || shown ? (_jsx(OrgMark, { org: { name: shown || 'Account', logo: avatar }, size: 30 })) : (_jsx(UserRound, { size: 18 })), label && shown ? (_jsx(Text, { fontSize: "$3", fontWeight: "600", color: "$ink", numberOfLines: 1, maxW: 160, children: shown })) : null, label && shown ? _jsx(ChevronsUpDown, { size: 16, color: "$faint" }) : null] }) }), _jsx(Popover.Content, { role: "menu",
|
|
60
60
|
/* A menu sheet's rows run its full width. gui's PopperContent centres
|
|
61
61
|
its children, so each row is only as wide as its own text until the
|
|
62
62
|
class that stretches it lands a frame later: the sheet flashes a
|
|
@@ -71,19 +71,11 @@ export function UserMenu({ name, email, avatar, groups = [], theme, onSignOut, s
|
|
|
71
71
|
applied normally, and React logged "Received true for a non-boolean
|
|
72
72
|
attribute bordered". The siblings in this package have always used
|
|
73
73
|
borderWidth={1}. */
|
|
74
|
-
borderWidth: 1, elevation: "$2", px: "$1", py: "$1", width: 240, bg: "$panel", borderColor: "$borderColor",
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
const rows = items.map((item) => _jsx(Row, { item: item, onDone: close }, item.id));
|
|
81
|
-
return (_jsxs(YStack, { gap: "$1", children: [i > 0 || shown || email ? _jsx(Separator, { borderColor: "$borderColor", my: "$1" }) : null, groupName ? _jsx(MenuLabel, { children: groupName }) : null, choice ? (_jsx(YStack, { role: "radiogroup", "aria-label": groupName, gap: "$1", children: rows })) : (rows)] }, i));
|
|
82
|
-
}), theme !== null ? (_jsxs(_Fragment, { children: [_jsx(Separator, { borderColor: "$borderColor", my: "$1" }), _jsxs(XStack, { items: "center", gap: "$2.5", px: "$2", py: "$1", rounded: "$3", children: [_jsx(Text, { flex: 1, fontSize: "$2", color: "$ink", children: "Theme" }), theme ?? _jsx(ThemeToggle, {})] })] })) : null, onSignOut ? (_jsxs(_Fragment, { children: [_jsx(Separator, { borderColor: "$borderColor", my: "$1" }), _jsx(Row, { item: {
|
|
83
|
-
id: 'sign-out',
|
|
84
|
-
label: signOutLabel,
|
|
85
|
-
icon: _jsx(LogOut, { size: 16 }),
|
|
86
|
-
onPress: onSignOut,
|
|
87
|
-
}, onDone: close })] })) : null] })) })] }));
|
|
74
|
+
borderWidth: 1, elevation: "$2", px: "$1", py: "$1", width: 240, bg: "$panel", borderColor: "$borderColor", onCloseAutoFocus: (e) => {
|
|
75
|
+
e.preventDefault();
|
|
76
|
+
trigger.current?.focus();
|
|
77
|
+
}, ...sx(className), style: style, children: children ?? (_jsx(Account, { name: name, email: email, groups: groups,
|
|
78
|
+
// The default toggle is this menu's, not the shared body's (see account.tsx).
|
|
79
|
+
theme: theme === undefined ? _jsx(ThemeToggle, {}) : theme, onSignOut: onSignOut, signOutLabel: signOutLabel, onDone: close, component: "UserMenu" })) })] }));
|
|
88
80
|
}
|
|
89
81
|
//# sourceMappingURL=UserMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../src/product/UserMenu.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,QAAQ,EAAsC,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../src/product/UserMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Account = Account;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const gui_1 = require("@hanzo/gui");
|
|
7
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
8
|
+
const instrument_1 = require("./instrument.cjs");
|
|
9
|
+
const roving_1 = require("./menu/roving.cjs");
|
|
10
|
+
const MenuRow_1 = require("./MenuRow.cjs");
|
|
11
|
+
const name_1 = require("./name.cjs");
|
|
12
|
+
const itemsOf = (g) => (Array.isArray(g) ? g : g.items);
|
|
13
|
+
const nameOf = (g) => (Array.isArray(g) ? undefined : g.label);
|
|
14
|
+
function Row({ item, onDone, component }) {
|
|
15
|
+
const track = (0, instrument_1.useEmit)();
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)(MenuRow_1.MenuRow, { label: item.label, icon: item.icon, active: item.active, danger: item.danger, onPress: () => {
|
|
17
|
+
track({ component, action: 'select', id: item.id });
|
|
18
|
+
onDone();
|
|
19
|
+
item.onPress();
|
|
20
|
+
} }));
|
|
21
|
+
}
|
|
22
|
+
/** A rule between groups — never above the first thing in the menu. */
|
|
23
|
+
const Rule = () => (0, jsx_runtime_1.jsx)(gui_1.Separator, { borderColor: "$borderColor", my: "$1" });
|
|
24
|
+
function Account({ name, email, groups = [], theme, onSignOut, signOutLabel = 'Sign out', onDone, component }) {
|
|
25
|
+
const shown = (0, name_1.displayName)(name, email);
|
|
26
|
+
const filled = groups.filter((g) => itemsOf(g).length > 0);
|
|
27
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$1", onKeyDown: (e) => (0, roving_1.menuKeyDown)(e), 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) => {
|
|
28
|
+
const items = itemsOf(group);
|
|
29
|
+
const label = nameOf(group);
|
|
30
|
+
// A group whose every row carries a chosen-one is a CHOICE, so it is a
|
|
31
|
+
// named `group` of `menuitemradio` rows (see MenuRow) — a heading alone
|
|
32
|
+
// would leave the rows unrelated.
|
|
33
|
+
const choice = items.every((it) => it.active !== undefined);
|
|
34
|
+
const rows = items.map((item) => (0, jsx_runtime_1.jsx)(Row, { item: item, onDone: onDone, component: component }, item.id));
|
|
35
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$1", children: [i > 0 || shown || email ? (0, jsx_runtime_1.jsx)(Rule, {}) : null, label ? (0, jsx_runtime_1.jsx)(MenuRow_1.MenuLabel, { children: label }) : null, choice ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { role: "group", "aria-label": label, gap: "$1", children: rows })) : (rows)] }, i));
|
|
36
|
+
}), theme != null ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Rule, {}), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2.5", px: "$2", py: "$1", rounded: "$3", children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { flex: 1, fontSize: "$2", color: "$ink", children: "Theme" }), theme] })] })) : null, onSignOut ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Rule, {}), (0, jsx_runtime_1.jsx)(Row, { item: { id: 'sign-out', label: signOutLabel, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.LogOut, { size: 16 }), onPress: onSignOut }, onDone: onDone, component: component })] })) : null] }));
|
|
37
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The account menu's body — who is signed in, the host's groups of rows, the
|
|
3
|
+
* theme, and signing out.
|
|
4
|
+
*
|
|
5
|
+
* `UserMenu` draws it under its avatar trigger; `SessionRail` draws it over its
|
|
6
|
+
* account row. It is one body in one file so the two menus cannot drift apart —
|
|
7
|
+
* the same header, the same rules between groups, the same named group for a
|
|
8
|
+
* choice, the same sign-out at the foot.
|
|
9
|
+
*
|
|
10
|
+
* Off the product barrel on purpose: a host wants a whole menu, and gets one
|
|
11
|
+
* from either of those two. This is the part they share.
|
|
12
|
+
*/
|
|
13
|
+
import type { ReactNode } from 'react';
|
|
14
|
+
/** One row. `id` names it in analytics; the label is what the person reads. */
|
|
15
|
+
export type UserMenuItem = {
|
|
16
|
+
id: string;
|
|
17
|
+
label: string;
|
|
18
|
+
icon?: ReactNode;
|
|
19
|
+
onPress: () => void;
|
|
20
|
+
/** Draws the row in the destructive tone (sign out, delete account). */
|
|
21
|
+
danger?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Whether this row is the chosen one — for a group that is a CHOICE rather
|
|
24
|
+
* than a list of actions (which theme, which language). Its presence makes the
|
|
25
|
+
* group a named `group` and the row a `menuitemradio`, so assistive tech is
|
|
26
|
+
* told that exactly one of them holds, and the chosen row carries a check.
|
|
27
|
+
*/
|
|
28
|
+
active?: boolean;
|
|
29
|
+
};
|
|
30
|
+
/** A group of rows, optionally named. A bare array is the unnamed form. */
|
|
31
|
+
export type UserMenuGroup = UserMenuItem[] | {
|
|
32
|
+
label?: string;
|
|
33
|
+
items: UserMenuItem[];
|
|
34
|
+
};
|
|
35
|
+
export type AccountProps = {
|
|
36
|
+
name?: string;
|
|
37
|
+
email?: string;
|
|
38
|
+
groups?: UserMenuGroup[];
|
|
39
|
+
/**
|
|
40
|
+
* The theme row's control. Absent, there is no theme row. `UserMenu` passes
|
|
41
|
+
* its default `<ThemeToggle/>`; this body does not import it, because that
|
|
42
|
+
* toggle reaches the optional `@hanzogui/next-theme` peer, and a rail that
|
|
43
|
+
* only wanted an account menu must not put that peer in its host's bundle —
|
|
44
|
+
* Vite 8 fails the build on the missing peer's export.
|
|
45
|
+
*/
|
|
46
|
+
theme?: ReactNode;
|
|
47
|
+
onSignOut?: () => void;
|
|
48
|
+
signOutLabel?: string;
|
|
49
|
+
/** Called after any row runs — the host closes its popover. */
|
|
50
|
+
onDone: () => void;
|
|
51
|
+
/** The menu that drew this body, as analytics names it — `UserMenu`, `SessionRail`. */
|
|
52
|
+
component: string;
|
|
53
|
+
};
|
|
54
|
+
export declare function Account({ name, email, groups, theme, onSignOut, signOutLabel, onDone, component }: AccountProps): import("react").JSX.Element;
|
|
55
|
+
//# sourceMappingURL=account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/product/account.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AASrD,+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,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IACxB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAsBD,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAW,EAAE,KAAK,EAAE,SAAS,EAAE,YAAyB,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,YAAY,+BAuEjI"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Separator, Text, XStack, YStack } from '@hanzo/gui';
|
|
4
|
+
import { LogOut } from '@hanzogui/lucide-icons-2';
|
|
5
|
+
import { useEmit } from './instrument.js';
|
|
6
|
+
import { menuKeyDown } from './menu/roving.js';
|
|
7
|
+
import { MenuLabel, MenuRow } from './MenuRow.js';
|
|
8
|
+
import { displayName } from './name.js';
|
|
9
|
+
const itemsOf = (g) => (Array.isArray(g) ? g : g.items);
|
|
10
|
+
const nameOf = (g) => (Array.isArray(g) ? undefined : g.label);
|
|
11
|
+
function Row({ item, onDone, component }) {
|
|
12
|
+
const track = useEmit();
|
|
13
|
+
return (_jsx(MenuRow, { label: item.label, icon: item.icon, active: item.active, danger: item.danger, onPress: () => {
|
|
14
|
+
track({ component, action: 'select', id: item.id });
|
|
15
|
+
onDone();
|
|
16
|
+
item.onPress();
|
|
17
|
+
} }));
|
|
18
|
+
}
|
|
19
|
+
/** A rule between groups — never above the first thing in the menu. */
|
|
20
|
+
const Rule = () => _jsx(Separator, { borderColor: "$borderColor", my: "$1" });
|
|
21
|
+
export function Account({ name, email, groups = [], theme, onSignOut, signOutLabel = 'Sign out', onDone, component }) {
|
|
22
|
+
const shown = displayName(name, email);
|
|
23
|
+
const filled = groups.filter((g) => itemsOf(g).length > 0);
|
|
24
|
+
return (_jsxs(YStack, { gap: "$1", onKeyDown: (e) => menuKeyDown(e), 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) => {
|
|
25
|
+
const items = itemsOf(group);
|
|
26
|
+
const label = nameOf(group);
|
|
27
|
+
// A group whose every row carries a chosen-one is a CHOICE, so it is a
|
|
28
|
+
// named `group` of `menuitemradio` rows (see MenuRow) — a heading alone
|
|
29
|
+
// would leave the rows unrelated.
|
|
30
|
+
const choice = items.every((it) => it.active !== undefined);
|
|
31
|
+
const rows = items.map((item) => _jsx(Row, { item: item, onDone: onDone, component: component }, item.id));
|
|
32
|
+
return (_jsxs(YStack, { gap: "$1", children: [i > 0 || shown || email ? _jsx(Rule, {}) : null, label ? _jsx(MenuLabel, { children: label }) : null, choice ? (_jsx(YStack, { role: "group", "aria-label": label, gap: "$1", children: rows })) : (rows)] }, i));
|
|
33
|
+
}), theme != null ? (_jsxs(_Fragment, { children: [_jsx(Rule, {}), _jsxs(XStack, { items: "center", gap: "$2.5", px: "$2", py: "$1", rounded: "$3", children: [_jsx(Text, { flex: 1, fontSize: "$2", color: "$ink", children: "Theme" }), theme] })] })) : null, onSignOut ? (_jsxs(_Fragment, { children: [_jsx(Rule, {}), _jsx(Row, { item: { id: 'sign-out', label: signOutLabel, icon: _jsx(LogOut, { size: 16 }), onPress: onSignOut }, onDone: onDone, component: component })] })) : null] }));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/product/account.tsx"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,11 @@ function menuKeyDown(e, onClose) {
|
|
|
11
11
|
return;
|
|
12
12
|
if (typeof document === 'undefined')
|
|
13
13
|
return;
|
|
14
|
+
const target = e.target;
|
|
15
|
+
if (target && /^(INPUT|TEXTAREA)$/.test(target.tagName))
|
|
16
|
+
return;
|
|
14
17
|
const panel = e.currentTarget;
|
|
15
|
-
const items = Array.from(panel.querySelectorAll('[role="
|
|
18
|
+
const items = Array.from(panel.querySelectorAll(['menuitem', 'menuitemradio', 'menuitemcheckbox'].map((r) => `[role="${r}"]:not([aria-disabled="true"])`).join(', ')));
|
|
16
19
|
if (items.length === 0)
|
|
17
20
|
return;
|
|
18
21
|
e.preventDefault();
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Roving keyboard focus for a menu panel — ArrowUp/Down move focus between enabled
|
|
3
|
-
* `
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* menu items (`menuitem`, `menuitemradio`, `menuitemcheckbox`), wrapping at the
|
|
4
|
+
* ends; Home/End jump to them; Escape closes. Web/desktop only (guards on
|
|
5
|
+
* `document`); native menus have no pointer-keyboard nav. Shared by DropdownMenu,
|
|
6
|
+
* ContextMenu and the account sheets (`UserMenu`, `OrgSwitcher`, `SessionRail`'s
|
|
7
|
+
* menu) so navigation is identical.
|
|
8
|
+
*
|
|
9
|
+
* A key typed into a field inside the panel — a sheet's search box — is the
|
|
10
|
+
* field's: Home and End move its caret, not the menu.
|
|
6
11
|
*/
|
|
7
12
|
import type { KeyboardEvent } from 'react';
|
|
8
13
|
export declare function menuKeyDown(e: KeyboardEvent, onClose?: () => void): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roving.d.ts","sourceRoot":"","sources":["../../../src/product/menu/roving.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"roving.d.ts","sourceRoot":"","sources":["../../../src/product/menu/roving.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CA2BxE"}
|
|
@@ -8,8 +8,11 @@ export function menuKeyDown(e, onClose) {
|
|
|
8
8
|
return;
|
|
9
9
|
if (typeof document === 'undefined')
|
|
10
10
|
return;
|
|
11
|
+
const target = e.target;
|
|
12
|
+
if (target && /^(INPUT|TEXTAREA)$/.test(target.tagName))
|
|
13
|
+
return;
|
|
11
14
|
const panel = e.currentTarget;
|
|
12
|
-
const items = Array.from(panel.querySelectorAll('[role="
|
|
15
|
+
const items = Array.from(panel.querySelectorAll(['menuitem', 'menuitemradio', 'menuitemcheckbox'].map((r) => `[role="${r}"]:not([aria-disabled="true"])`).join(', ')));
|
|
13
16
|
if (items.length === 0)
|
|
14
17
|
return;
|
|
15
18
|
e.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roving.js","sourceRoot":"","sources":["../../../src/product/menu/roving.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"roving.js","sourceRoot":"","sources":["../../../src/product/menu/roving.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAeZ,MAAM,UAAU,WAAW,CAAC,CAAgB,EAAE,OAAoB;IAChE,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,EAAE,EAAE,CAAA;QACX,OAAM;IACR,CAAC;IACD,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK;QAAE,OAAM;IAC/F,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAM;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAA4B,CAAA;IAC7C,IAAI,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,OAAM;IAE/D,MAAM,KAAK,GAAG,CAAC,CAAC,aAA4B,CAAA;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,KAAK,CAAC,gBAAgB,CACpB,CAAC,UAAU,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACrH,CACF,CAAA;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAC9B,CAAC,CAAC,cAAc,EAAE,CAAA;IAElB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAmC,CAAA;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACnD,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM;QAAE,IAAI,GAAG,CAAC,CAAA;SACzB,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK;QAAE,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;SAC5C,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW;QAAE,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;;QAChF,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAA;IACzD,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAA;AACtB,CAAC"}
|