@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.
Files changed (98) hide show
  1. package/dist/backends/gui/item.cjs +2 -3
  2. package/dist/backends/gui/item.d.ts.map +1 -1
  3. package/dist/backends/gui/item.js +1 -2
  4. package/dist/backends/gui/item.js.map +1 -1
  5. package/dist/backends/gui/press.cjs +29 -0
  6. package/dist/backends/gui/press.d.ts +28 -0
  7. package/dist/backends/gui/press.d.ts.map +1 -0
  8. package/dist/backends/gui/press.js +26 -0
  9. package/dist/backends/gui/press.js.map +1 -0
  10. package/dist/backends/gui/toggle-group.cjs +2 -3
  11. package/dist/backends/gui/toggle-group.d.ts.map +1 -1
  12. package/dist/backends/gui/toggle-group.js +1 -2
  13. package/dist/backends/gui/toggle-group.js.map +1 -1
  14. package/dist/backends/gui/toggle.cjs +3 -4
  15. package/dist/backends/gui/toggle.d.ts.map +1 -1
  16. package/dist/backends/gui/toggle.js +1 -2
  17. package/dist/backends/gui/toggle.js.map +1 -1
  18. package/dist/catalog/Shelf.cjs +76 -0
  19. package/dist/catalog/Shelf.d.ts +55 -0
  20. package/dist/catalog/Shelf.d.ts.map +1 -0
  21. package/dist/catalog/Shelf.js +74 -0
  22. package/dist/catalog/Shelf.js.map +1 -0
  23. package/dist/catalog/Tile.cjs +72 -0
  24. package/dist/catalog/Tile.d.ts +56 -0
  25. package/dist/catalog/Tile.d.ts.map +1 -0
  26. package/dist/catalog/Tile.js +67 -0
  27. package/dist/catalog/Tile.js.map +1 -0
  28. package/dist/catalog/index.cjs +23 -0
  29. package/dist/catalog/index.d.ts +16 -0
  30. package/dist/catalog/index.d.ts.map +1 -0
  31. package/dist/catalog/index.js +16 -0
  32. package/dist/catalog/index.js.map +1 -0
  33. package/dist/chat/Home.cjs +30 -0
  34. package/dist/chat/Home.d.ts +35 -0
  35. package/dist/chat/Home.d.ts.map +1 -0
  36. package/dist/chat/Home.js +28 -0
  37. package/dist/chat/Home.js.map +1 -0
  38. package/dist/chat/SessionRail.cjs +165 -37
  39. package/dist/chat/SessionRail.d.ts +92 -14
  40. package/dist/chat/SessionRail.d.ts.map +1 -1
  41. package/dist/chat/SessionRail.js +165 -39
  42. package/dist/chat/SessionRail.js.map +1 -1
  43. package/dist/chat/index.cjs +6 -1
  44. package/dist/chat/index.d.ts +2 -1
  45. package/dist/chat/index.d.ts.map +1 -1
  46. package/dist/chat/index.js +2 -1
  47. package/dist/chat/index.js.map +1 -1
  48. package/dist/gallery.cjs +72 -1
  49. package/dist/gallery.d.ts +13 -0
  50. package/dist/gallery.d.ts.map +1 -1
  51. package/dist/gallery.html +45 -3
  52. package/dist/gallery.js +72 -2
  53. package/dist/gallery.js.map +1 -1
  54. package/dist/product/ChipSelect.cjs +2 -3
  55. package/dist/product/ChipSelect.d.ts.map +1 -1
  56. package/dist/product/ChipSelect.js +1 -2
  57. package/dist/product/ChipSelect.js.map +1 -1
  58. package/dist/product/MenuRow.cjs +2 -1
  59. package/dist/product/MenuRow.d.ts +11 -7
  60. package/dist/product/MenuRow.d.ts.map +1 -1
  61. package/dist/product/MenuRow.js +3 -2
  62. package/dist/product/MenuRow.js.map +1 -1
  63. package/dist/product/OrgSwitcher.cjs +16 -5
  64. package/dist/product/OrgSwitcher.d.ts.map +1 -1
  65. package/dist/product/OrgSwitcher.js +16 -5
  66. package/dist/product/OrgSwitcher.js.map +1 -1
  67. package/dist/product/UserMenu.cjs +19 -27
  68. package/dist/product/UserMenu.d.ts +2 -21
  69. package/dist/product/UserMenu.d.ts.map +1 -1
  70. package/dist/product/UserMenu.js +23 -31
  71. package/dist/product/UserMenu.js.map +1 -1
  72. package/dist/product/account.cjs +37 -0
  73. package/dist/product/account.d.ts +55 -0
  74. package/dist/product/account.d.ts.map +1 -0
  75. package/dist/product/account.js +35 -0
  76. package/dist/product/account.js.map +1 -0
  77. package/dist/product/menu/roving.cjs +4 -1
  78. package/dist/product/menu/roving.d.ts +8 -3
  79. package/dist/product/menu/roving.d.ts.map +1 -1
  80. package/dist/product/menu/roving.js +4 -1
  81. package/dist/product/menu/roving.js.map +1 -1
  82. package/dist/settings/Section.cjs +71 -0
  83. package/dist/settings/Section.d.ts +78 -0
  84. package/dist/settings/Section.d.ts.map +1 -0
  85. package/dist/settings/Section.js +62 -0
  86. package/dist/settings/Section.js.map +1 -0
  87. package/dist/settings/Settings.cjs +54 -0
  88. package/dist/settings/Settings.d.ts +50 -0
  89. package/dist/settings/Settings.d.ts.map +1 -0
  90. package/dist/settings/Settings.js +52 -0
  91. package/dist/settings/Settings.js.map +1 -0
  92. package/dist/settings/index.cjs +26 -0
  93. package/dist/settings/index.d.ts +15 -0
  94. package/dist/settings/index.d.ts.map +1 -0
  95. package/dist/settings/index.js +15 -0
  96. package/dist/settings/index.js.map +1 -0
  97. package/dist/styles.css +42 -0
  98. 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", ...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) => {
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: "radiogroup", "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, { role: "menuitem", onPress: () => {
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, { role: "menuitem", onPress: () => {
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'), 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",
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", ...(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) => {
76
- const items = itemsOf(group);
77
- const groupName = nameOf(group);
78
- // A group whose every row carries a chosen-one is a CHOICE, so it
79
- // is a radiogroup — a heading alone would leave the rows unrelated.
80
- const choice = items.every((it) => it.active !== undefined);
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
- /** One row. `id` names it in analytics; the label is what the person reads. */
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,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,+BA4Jf"}
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"}
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
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, Separator, Text, XStack, YStack } from '@hanzo/gui';
25
- import { ChevronsUpDown, LogOut, UserRound } from '@hanzogui/lucide-icons-2';
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'), 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",
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", ...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) => {
75
- const items = itemsOf(group);
76
- const groupName = nameOf(group);
77
- // A group whose every row carries a chosen-one is a CHOICE, so it
78
- // is a radiogroup — a heading alone would leave the rows unrelated.
79
- const choice = items.every((it) => it.active !== undefined);
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":"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"}
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="menuitem"]:not([aria-disabled="true"])'));
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
- * `[role="menuitem"]` children, Home/End jump to ends, Escape closes. Web/desktop
4
- * only (guards on `document`); native menus have no pointer-keyboard nav. Shared by
5
- * DropdownMenu and ContextMenu so navigation is identical.
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;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAuBxE"}
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="menuitem"]:not([aria-disabled="true"])'));
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;AAUZ,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;IAE3C,MAAM,KAAK,GAAG,CAAC,CAAC,aAA4B,CAAA;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,KAAK,CAAC,gBAAgB,CAAc,+CAA+C,CAAC,CACrF,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"}
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"}