@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
@@ -1,41 +1,55 @@
1
1
  'use client';
2
2
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  /**
4
- * SessionRail — the left rail of a sessions surface: start one, go somewhere,
5
- * reopen a recent one, and who you are.
4
+ * SessionRail — the left rail of a sessions surface: who it is, find one, start
5
+ * one, go somewhere, reopen a recent one, and who you are.
6
6
  *
7
+ * Hanzo Build the brand; pressing it starts a new session
8
+ * [⌕ Search ] finds a session
7
9
  * + New the primary row; the current view on a fresh pane
8
10
  * Artifacts · Customize … the surface's own places, as `links`
9
11
  * More ⌄ a disclosure over `more`, when there are more
10
12
  * Recents ⇅ the sessions, newest first, each with a status dot
11
- * (z) z@hanzo.ai ⌄ ⚙ ⌕ the account, then settings and search
13
+ * [ Try Hanzo in Slack × ] `notice` — a `RailNotice`, when the host has one
14
+ * (D) Dave ⌄ ◧ the account and its menu, then collapse
15
+ * acme
12
16
  *
13
17
  * Presentational: no routing, no fetching. `active` comes in, `onOpen` goes out.
14
18
  *
15
- * THE SIDEBAR CANON (console, hanzo.app, hanzo.chat, the extension):
19
+ * THE SIDEBAR CANON (console, hanzo.app, hanzo.chat, hanzo.build, the extension):
16
20
  * - Collapse is an EXPLICIT toggle and the host persists it. `collapsed` in,
17
21
  * `onCollapse` out. There is no hover-to-expand and no pin.
18
22
  * - Collapsed is a narrow RAIL that stays on screen — icons only, labels as
19
23
  * tooltips — and its top row is the expand control.
20
- * - Below `md` there is no rail at all. The column hides, and the same
21
- * contents open as a drawer from the left when the host says so (`open`,
22
- * `onOpenChange`) — typically from a menu button only a phone shows.
24
+ * - Below `md` there is no rail at all. The column hides, `RailBar` is the
25
+ * pane's header (menu · brand · search), and its menu opens the same
26
+ * contents as a drawer from the left (`open`, `onOpenChange`). Anything
27
+ * chosen in the drawer closes it: the drawer is the way to a place, not a
28
+ * place.
29
+ *
30
+ * ONE WAY to each thing. Search is the box in the head (an icon on the collapsed
31
+ * rail); settings, usage and signing out are rows of the account menu. There is
32
+ * no second search or settings control at the foot.
23
33
  *
24
34
  * Built from the chat `Sidebar` column and its icon button, so the rail is the
25
- * same material as every other chat surface's.
35
+ * same material as every other chat surface's. The account menu is the same
36
+ * body `UserMenu` draws (`product/account.tsx`), anchored to the account row
37
+ * itself — above it on the open rail, beside it on the collapsed one.
26
38
  */
27
39
  import { ScrollView, SizableText, XStack, YStack } from '@hanzo/gui';
28
- import { ArrowDownUp, ChevronDown, ChevronUp, PanelLeft, Plus, Search, Settings, } from '@hanzogui/lucide-icons-2';
29
- import { useId, useState } from 'react';
40
+ import { ArrowDownUp, ChevronDown, ChevronUp, Menu, PanelLeft, Plus, Search, X, } from '@hanzogui/lucide-icons-2';
41
+ import { useId, useRef, useState } from 'react';
42
+ import { Button } from '../backends/gui/button.js';
43
+ import { Popover, PopoverContent, PopoverTrigger } from '../backends/gui/popover.js';
44
+ import { press, RING } from '../backends/gui/press.js';
30
45
  import { Sheet, SheetContent, SheetTitle } from '../backends/gui/sheet.js';
31
46
  import { slot, tip } from '../backends/gui/slot.js';
47
+ import { Account } from '../product/account.js';
32
48
  import { Sidebar, SidebarIconButton } from './Sidebar.js';
33
49
  /** Expanded width, px — the column's own width, its hairline outside it. */
34
50
  const WIDTH = 272;
35
51
  /** Collapsed width, px. The same rail width every chat surface collapses to. */
36
52
  const RAIL = 56;
37
- /** The keyboard focus ring every control in the package draws. */
38
- const RING = { outlineColor: '$outlineColor', outlineWidth: 2, outlineStyle: 'solid' };
39
53
  /** One row: 32px, the 8px radius, icon then label. */
40
54
  const ROW = { minH: 32, px: '$2', rounded: '$3', gap: '$2.5' };
41
55
  /** The status mark: a 6px dot, filled while something is happening. */
@@ -48,47 +62,159 @@ export function StatusDot({ status = 'idle' }) {
48
62
  }
49
63
  /** Where a row starts: the 16px column every icon and dot sits centred in. */
50
64
  const Lead = ({ children }) => (_jsx(XStack, { width: 16, height: 16, shrink: 0, items: "center", justify: "center", children: children }));
65
+ /**
66
+ * The surface's name, the head's first line and the phone bar's middle. A
67
+ * press when there is somewhere to go; the words alone otherwise.
68
+ */
69
+ function Brand({ brand, onPress }) {
70
+ const face = typeof brand === 'string' ? (_jsx(SizableText, { size: "$5", fontWeight: "600", color: "$ink", numberOfLines: 1, children: brand })) : (brand);
71
+ if (!onPress)
72
+ return _jsx(XStack, { ...slot('rail-brand'), items: "center", minW: 0, children: face });
73
+ return (_jsx(XStack, { ...slot('rail-brand'), ...press(onPress), items: "center", minW: 0, rounded: "$2", cursor: "pointer", focusVisibleStyle: RING, children: face }));
74
+ }
51
75
  /** One nav row. On the rail it is the icon alone, the label its tooltip and name. */
52
- function Row({ label, icon, onPress, active, rail, quiet, expanded, controls, data = 'rail-row' }) {
53
- return (_jsxs(XStack, { ...slot(data), ...(rail ? tip(label) : null), ...ROW, items: "center", justify: rail ? 'center' : 'flex-start', cursor: "pointer", role: "button", tabIndex: 0, "aria-label": rail ? label : undefined, "aria-current": active ? 'page' : undefined, "aria-expanded": expanded, "aria-controls": controls, bg: active ? '$raised' : undefined, hoverStyle: { bg: active ? '$raised' : '$hover' }, pressStyle: { bg: '$raised' }, focusVisibleStyle: RING, onPress: onPress, onKeyDown: (e) => {
54
- if (e?.key !== 'Enter' && e?.key !== ' ')
55
- return;
56
- e.preventDefault?.();
57
- onPress?.();
58
- }, children: [_jsx(Lead, { children: icon }), rail ? null : (_jsx(SizableText, { size: "$3", numberOfLines: 1, flex: 1, color: quiet ? '$soft' : '$ink', children: label }))] }));
76
+ function Item({ label, icon, onPress, active, rail, quiet, expanded, controls, data = 'rail-row' }) {
77
+ return (_jsxs(XStack, { ...slot(data), ...(rail ? tip(label) : null), ...press(onPress), ...ROW, items: "center", justify: rail ? 'center' : 'flex-start', cursor: "pointer", "aria-label": rail ? label : undefined, "aria-current": active ? 'page' : undefined, "aria-expanded": expanded, "aria-controls": controls, bg: active ? '$raised' : undefined, hoverStyle: { bg: active ? '$raised' : '$hover' }, pressStyle: { bg: '$raised' }, focusVisibleStyle: RING, children: [_jsx(Lead, { children: icon }), rail ? null : (_jsx(SizableText, { size: "$3", numberOfLines: 1, flex: 1, color: quiet ? '$soft' : '$ink', children: label }))] }));
59
78
  }
60
- /** The account line: avatar, the name clamped, the caret. */
61
- function Account({ account, rail }) {
62
- const face = (_jsx(XStack, { width: 24, height: 24, rounded: 9999, items: "center", justify: "center", bg: "$raised", overflow: "hidden", shrink: 0, children: account.avatar ?? (_jsx(SizableText, { size: "$1", fontWeight: "600", color: "$ink", children: account.name.charAt(0).toUpperCase() })) }));
63
- return (_jsxs(XStack, { ...slot('rail-account'), ...(rail ? tip(account.name) : null), ...ROW, gap: "$2", px: "$1", flex: rail ? undefined : 1, minW: 0, items: "center", justify: rail ? 'center' : 'flex-start', cursor: account.onPress ? 'pointer' : undefined, role: account.onPress ? 'button' : undefined, tabIndex: account.onPress ? 0 : undefined, "aria-label": account.onPress ? `Account: ${account.name}` : undefined, "aria-haspopup": account.onPress ? 'menu' : undefined, hoverStyle: account.onPress ? { bg: '$hover' } : undefined, onPress: account.onPress, onKeyDown: (e) => {
64
- if (!account.onPress || (e?.key !== 'Enter' && e?.key !== ' '))
65
- return;
66
- e.preventDefault?.();
67
- account.onPress();
68
- }, children: [face, rail ? null : (_jsxs(_Fragment, { children: [_jsx(SizableText, { size: "$3", numberOfLines: 1, flex: 1, minW: 0, color: "$ink", children: account.name }), account.onPress ? _jsx(ChevronDown, { size: 14, color: "$soft" }) : null] }))] }));
79
+ /** The menu exists when there is something in it to do. */
80
+ const hasMenu = (a) => Boolean(a.onSignOut || a.groups?.some((g) => (Array.isArray(g) ? g : g.items).length));
81
+ /**
82
+ * The account row: avatar, the name over its second line, the caret — and the
83
+ * menu it opens, anchored to the row itself.
84
+ */
85
+ function Who({ account, rail }) {
86
+ const [open, setOpen] = useState(false);
87
+ // The row, so closing the menu can hand focus back to it: the popover's own
88
+ // return goes through a trigger ref that an `asChild` stack never fills.
89
+ const row = useRef(null);
90
+ const menu = hasMenu(account);
91
+ const acts = menu || Boolean(account.onPress);
92
+ const said = account.sub ? `${account.name} · ${account.sub}` : account.name;
93
+ const face = (_jsx(XStack, { width: 24, height: 24, rounded: 9999, items: "center", justify: "center", bg: "$raised", overflow: "hidden", shrink: 0, "aria-hidden": true, children: account.avatar ?? (_jsx(SizableText, { size: "$1", fontWeight: "600", color: "$ink", children: account.name.charAt(0).toUpperCase() })) }));
94
+ const look = {
95
+ ...slot('rail-account'),
96
+ ...(rail ? tip(said) : null),
97
+ ...ROW,
98
+ gap: '$2',
99
+ px: '$1',
100
+ flex: rail ? undefined : 1,
101
+ minW: 0,
102
+ items: 'center',
103
+ justify: rail ? 'center' : 'flex-start',
104
+ cursor: acts ? 'pointer' : undefined,
105
+ hoverStyle: acts ? { bg: '$hover' } : undefined,
106
+ focusVisibleStyle: acts ? RING : undefined,
107
+ };
108
+ const body = (_jsxs(_Fragment, { children: [face, rail ? null : (_jsxs(_Fragment, { children: [_jsxs(YStack, { flex: 1, minW: 0, children: [_jsx(SizableText, { size: "$3", numberOfLines: 1, color: "$ink", children: account.name }), account.sub ? (_jsx(SizableText, { ...slot('rail-account-sub'), size: "$1", numberOfLines: 1, color: "$soft", children: account.sub })) : null] }), acts ? _jsx(ChevronDown, { size: 14, color: "$soft" }) : null] }))] }));
109
+ if (!menu)
110
+ return account.onPress ? (_jsx(XStack, { ...look, ...press(account.onPress), "aria-label": `Account: ${said}`, children: body })) : (_jsx(XStack, { ...look, children: body }));
111
+ return (_jsxs(Popover, { open: open, onOpenChange: setOpen,
112
+ // Above the row on the open rail, where the row spans the column; beside
113
+ // it on the collapsed rail, where above would cover the rail's icons.
114
+ placement: rail ? 'right-end' : 'top-start', allowFlip: true, stayInFrame: true, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(XStack, { ref: row, ...look, role: "button", tabIndex: 0, "aria-label": `Account: ${said}`, "aria-haspopup": "menu", "aria-expanded": open,
115
+ // The trigger opens on a press; the keyboard is this row's own (gui
116
+ // does not activate role="button" on Enter).
117
+ onKeyDown: (e) => {
118
+ if (e?.key !== 'Enter' && e?.key !== ' ')
119
+ return;
120
+ e.preventDefault?.();
121
+ setOpen(!open);
122
+ }, children: body }) }), _jsx(PopoverContent, { ...slot('rail-menu'), role: "menu", "aria-label": "Account", sideOffset: 6,
123
+ // A menu's rows run its full width; gui's popper centres children.
124
+ // 260 fits a 390 phone's drawer, and the popper keeps it in frame.
125
+ items: "stretch", width: 260, p: "$1", rounded: "$3", elevation: "$2", onCloseAutoFocus: (e) => {
126
+ e.preventDefault();
127
+ row.current?.focus();
128
+ }, children: _jsx(Account, { name: account.name, email: account.email, groups: account.groups, onSignOut: account.onSignOut, signOutLabel: account.signOutLabel, onDone: () => setOpen(false), component: "SessionRail" }) })] }));
69
129
  }
70
130
  /** The rail's contents — the same tree in the column and in the drawer. */
71
- function Contents({ onNew, newLabel = 'New', fresh = false, links = [], more = [], moreLabel = 'More', recents, recentsLabel = 'Recents', active = null, onOpen, onSort, sortLabel = 'Sort and filter', empty, notice, account, onSettings, onSearch, collapsed = false, onCollapse, mark, rail, }) {
131
+ function Contents({ brand, onBrand, onSearch, searchLabel = 'Search', onNew, newLabel = 'New', fresh = false, links = [], more = [], moreLabel = 'More', recents, recentsLabel = 'Recents', active = null, onOpen, onSort, sortLabel = 'Sort and filter', empty, notice, account, collapsed = false, onCollapse, mark, rail, }) {
72
132
  const [unfolded, setUnfolded] = useState(false);
73
133
  const id = useId();
74
134
  const moreId = `${id}-more`;
75
135
  const headId = `${id}-recents`;
76
- return (_jsxs(_Fragment, { children: [rail ? (_jsx(XStack, { justify: "center", pb: "$1", children: _jsx(SidebarIconButton, { label: "Expand sidebar", width: 36, height: 36, onPress: () => onCollapse?.(false), children: mark ?? _jsx(PanelLeft, { size: 16 }) }) })) : null, _jsxs(YStack, { ...slot('rail-nav'), gap: "$0", role: "list", children: [onNew ? (_jsx(YStack, { role: "listitem", children: _jsx(Row, { label: newLabel, icon: _jsx(Plus, { size: 16 }), onPress: onNew, active: fresh, rail: rail, data: "rail-new" }) })) : null, links.map((link) => (_jsx(YStack, { role: "listitem", children: _jsx(Row, { label: link.label, icon: link.icon, onPress: link.onPress, active: link.active, rail: rail }) }, link.id))), more.length ? (_jsxs(YStack, { role: "listitem", children: [_jsx(Row, { label: moreLabel, icon: unfolded ? _jsx(ChevronUp, { size: 16 }) : _jsx(ChevronDown, { size: 16 }), onPress: () => setUnfolded((v) => !v), rail: rail, quiet: true, expanded: unfolded, controls: moreId, data: "rail-more" }), unfolded ? (_jsx(YStack, { id: moreId, role: "list", gap: "$0", children: more.map((link) => (_jsx(YStack, { role: "listitem", children: _jsx(Row, { label: link.label, icon: link.icon, onPress: link.onPress, active: link.active, rail: rail }) }, link.id))) })) : null] })) : null] }), rail ? (_jsx(YStack, { flex: 1 })) : (_jsxs(YStack, { ...slot('rail-recents'), flex: 1, minH: 0, mt: "$5", children: [_jsxs(XStack, { items: "center", justify: "space-between", height: 28, pl: "$2", pr: "$1", shrink: 0, children: [_jsx(SizableText, { id: headId, size: "$2", color: "$soft", children: recentsLabel }), onSort ? (_jsx(SidebarIconButton, { label: sortLabel, onPress: onSort, width: 24, height: 24, children: _jsx(ArrowDownUp, { size: 14 }) })) : null] }), _jsx(ScrollView, { flex: 1, showsVerticalScrollIndicator: false, children: recents.length === 0 ? (empty ? (_jsx(YStack, { px: "$2", py: "$2", children: typeof empty === 'string' ? (_jsx(SizableText, { size: "$2", color: "$soft", children: empty })) : (empty) })) : null) : (_jsx(YStack, { role: "list", "aria-labelledby": headId, gap: 1, children: recents.map((s) => {
136
+ return (_jsxs(_Fragment, { children: [rail ? (_jsxs(YStack, { items: "center", gap: "$1", pb: "$1", children: [_jsx(SidebarIconButton, { label: "Expand sidebar", width: 36, height: 36, onPress: () => onCollapse?.(false), children: mark ?? _jsx(PanelLeft, { size: 16 }) }), onSearch ? (_jsx(Item, { label: searchLabel, icon: _jsx(Search, { size: 16 }), onPress: onSearch, rail: true, data: "rail-search" })) : null] })) : brand || onSearch ? (_jsxs(YStack, { ...slot('rail-head'), gap: "$2.5", pt: 2, pb: "$4", shrink: 0, children: [brand ? (_jsx(XStack, { px: "$2.5", children: _jsx(Brand, { brand: brand, onPress: onBrand ?? onNew }) })) : null, onSearch ? (_jsxs(XStack, { ...slot('rail-search'), ...press(onSearch), "aria-label": searchLabel, items: "center", gap: "$2", px: "$2.5", height: 34, rounded: "$3", borderWidth: 1, borderColor: "$borderColor", bg: "$panel", cursor: "pointer", hoverStyle: { bg: '$hover' }, focusVisibleStyle: RING, children: [_jsx(Search, { size: 15, color: "$soft" }), _jsx(SizableText, { size: "$2", color: "$soft", children: searchLabel })] })) : null] })) : null, _jsxs(YStack, { ...slot('rail-nav'), gap: "$0", role: "list", children: [onNew ? (_jsx(YStack, { role: "listitem", children: _jsx(Item, { label: newLabel, icon: _jsx(Plus, { size: 16 }), onPress: onNew, active: fresh, rail: rail, data: "rail-new" }) })) : null, links.map((link) => (_jsx(YStack, { role: "listitem", children: _jsx(Item, { label: link.label, icon: link.icon, onPress: link.onPress, active: link.active, rail: rail }) }, link.id))), more.length ? (_jsxs(YStack, { role: "listitem", children: [_jsx(Item, { label: moreLabel, icon: unfolded ? _jsx(ChevronUp, { size: 16 }) : _jsx(ChevronDown, { size: 16 }), onPress: () => setUnfolded((v) => !v), rail: rail, quiet: true, expanded: unfolded, controls: moreId, data: "rail-more" }), unfolded ? (_jsx(YStack, { id: moreId, role: "list", gap: "$0", children: more.map((link) => (_jsx(YStack, { role: "listitem", children: _jsx(Item, { label: link.label, icon: link.icon, onPress: link.onPress, active: link.active, rail: rail }) }, link.id))) })) : null] })) : null] }), rail ? (_jsx(YStack, { flex: 1 })) : (_jsxs(YStack, { ...slot('rail-recents'), flex: 1, minH: 0, mt: "$5", children: [_jsxs(XStack, { items: "center", justify: "space-between", height: 28, pl: "$2", pr: "$1", shrink: 0, children: [_jsx(SizableText, { id: headId, size: "$2", color: "$soft", children: recentsLabel }), onSort ? (_jsx(SidebarIconButton, { label: sortLabel, onPress: onSort, width: 24, height: 24, children: _jsx(ArrowDownUp, { size: 14 }) })) : null] }), _jsx(ScrollView, { flex: 1, showsVerticalScrollIndicator: false, children: recents.length === 0 ? (empty ? (_jsx(YStack, { px: "$2", py: "$2", children: typeof empty === 'string' ? (_jsx(SizableText, { size: "$2", color: "$soft", children: empty })) : (empty) })) : null) : (_jsx(YStack, { role: "list", "aria-labelledby": headId, gap: 1, children: recents.map((s) => {
77
137
  const on = s.id === active;
78
- return (_jsx(YStack, { role: "listitem", children: _jsxs(XStack, { ...slot('rail-session'), ...ROW, items: "center", cursor: "pointer", role: "button", tabIndex: 0, "aria-current": on ? 'page' : undefined, bg: on ? '$raised' : undefined, hoverStyle: { bg: on ? '$raised' : '$hover' }, pressStyle: { bg: '$raised' }, focusVisibleStyle: RING, onPress: () => onOpen(s.id), onKeyDown: (e) => {
79
- if (e?.key !== 'Enter' && e?.key !== ' ')
80
- return;
81
- e.preventDefault?.();
82
- onOpen(s.id);
83
- }, children: [_jsx(Lead, { children: _jsx(StatusDot, { status: s.status }) }), _jsx(SizableText, { size: "$3", numberOfLines: 1, flex: 1, minW: 0, color: on ? '$ink' : '$quiet', children: s.title })] }) }, s.id));
84
- }) })) })] })), notice && !rail ? _jsx(YStack, { pt: "$2", children: notice }) : null, _jsxs(XStack, { ...slot('rail-foot'), items: "center", gap: "$1", pt: "$2", mt: "$1", borderTopWidth: 1, borderColor: "$borderColor", flexDirection: rail ? 'column' : 'row', children: [account ? _jsx(Account, { account: account, rail: rail }) : _jsx(XStack, { flex: 1 }), onSettings ? (_jsx(SidebarIconButton, { label: "Settings", onPress: onSettings, children: _jsx(Settings, { size: 16 }) })) : null, onSearch ? (_jsx(SidebarIconButton, { label: "Search", onPress: onSearch, children: _jsx(Search, { size: 16 }) })) : null, onCollapse && !rail ? (_jsx(SidebarIconButton, { label: "Collapse sidebar", onPress: () => onCollapse(!collapsed), children: _jsx(PanelLeft, { size: 16 }) })) : null] })] }));
138
+ return (_jsx(YStack, { role: "listitem", children: _jsxs(XStack, { ...slot('rail-session'), ...press(() => onOpen(s.id)), ...ROW, items: "center", cursor: "pointer", "aria-current": on ? 'page' : undefined, bg: on ? '$raised' : undefined, hoverStyle: { bg: on ? '$raised' : '$hover' }, pressStyle: { bg: '$raised' }, focusVisibleStyle: RING, children: [_jsx(Lead, { children: _jsx(StatusDot, { status: s.status }) }), _jsx(SizableText, { size: "$3", numberOfLines: 1, flex: 1, minW: 0, color: on ? '$ink' : '$quiet', children: s.title })] }) }, s.id));
139
+ }) })) })] })), notice && !rail ? _jsx(YStack, { pt: "$2", children: notice }) : null, _jsxs(XStack, { ...slot('rail-foot'), items: "center", gap: "$1", pt: "$2", mt: "$1", borderTopWidth: 1, borderColor: "$borderColor", flexDirection: rail ? 'column' : 'row', children: [account ? _jsx(Who, { account: account, rail: rail }) : _jsx(XStack, { flex: 1 }), onCollapse && !rail ? (_jsx(SidebarIconButton, { label: "Collapse sidebar", onPress: () => onCollapse(!collapsed), children: _jsx(PanelLeft, { size: 16 }) })) : null] })] }));
85
140
  }
141
+ /** `run`, then close the drawer — or nothing, when there is nothing to run. */
142
+ const closing = (close) => (run) => run ? (...args) => (close(), run(...args)) : undefined;
86
143
  export function SessionRail(props) {
87
144
  const {
88
145
  // Everything the contents read is named here, so none of it reaches the
89
146
  // column as a stray DOM attribute through `rest`.
90
- onNew, newLabel, fresh, links, more, moreLabel, recents, recentsLabel, active, onOpen, onSort, sortLabel, empty, notice, account, onSettings, onSearch, collapsed = false, onCollapse, mark, open = false, onOpenChange, label = 'Sessions', width = WIDTH, ...rest } = props;
147
+ brand, onBrand, onSearch, searchLabel, onNew, newLabel, fresh, links, more, moreLabel, recents, recentsLabel, active, onOpen, onSort, sortLabel, empty, notice, account, collapsed = false, onCollapse, mark, open = false, onOpenChange, label = 'Sessions', width = WIDTH, ...rest } = props;
91
148
  const rail = collapsed;
92
- return (_jsxs(_Fragment, { children: [_jsx(Sidebar, { ...slot('session-rail'), role: "navigation", "aria-label": label, "data-collapsed": rail ? 'true' : 'false', width: rail ? RAIL : width, gap: "$0", px: rail ? '$1.5' : '$2', py: "$2", "$max-md": { display: 'none' }, ...rest, children: _jsx(Contents, { ...props, rail: rail }) }), open ? (_jsx(Sheet, { open: open, onOpenChange: onOpenChange, children: _jsxs(SheetContent, { side: "left", width: width, maxW: "86%", p: "$2", gap: "$0", bg: "$panel", children: [_jsx(SheetTitle, { ...slot('session-rail-title'), position: "absolute", opacity: 0, pointerEvents: "none", children: label }), _jsx(YStack, { ...slot('session-rail-drawer'), role: "navigation", "aria-label": label, flex: 1, minH: 0, children: _jsx(Contents, { ...props, rail: false, collapsed: false, onCollapse: undefined, onNew: onNew ? () => (onOpenChange?.(false), onNew()) : undefined, onOpen: (sid) => (onOpenChange?.(false), onOpen(sid)) }) })] }) })) : null] }));
149
+ // Where focus was when the drawer opened — the phone bar's menu button — and
150
+ // where it goes back to when the drawer closes, by Escape or by a choice. A
151
+ // dialog returns focus to its own trigger, and this drawer has none: the host
152
+ // opens it from `RailBar`, which the dialog cannot see.
153
+ //
154
+ // Read in RENDER, on the one render where `open` turns true — before the
155
+ // drawer exists. gui's Dialog is a native `<dialog>`, and a browser moves focus
156
+ // into one the moment it opens, so by any effect (the focus scope's own
157
+ // `onOpenAutoFocus` included, which then never fires because focus is already
158
+ // inside) the opener is gone. jsdom's `<dialog>` moves nothing, which is why
159
+ // the unit suite could not see this and the consumer suite asserts it.
160
+ const back = useRef(null);
161
+ const was = useRef(false);
162
+ if (open && !was.current && typeof document !== 'undefined')
163
+ back.current = document.activeElement;
164
+ was.current = open;
165
+ // One way out, said ONCE per gesture. A choice closes the drawer, and the
166
+ // dialog can also report its own dismissal while it unmounts in that same
167
+ // turn; the host hears one `onOpenChange(false)`. The latch lets go after the
168
+ // turn, so a host that keeps the drawer open still hears the next choice.
169
+ const closed = useRef(false);
170
+ const close = () => {
171
+ if (closed.current)
172
+ return;
173
+ closed.current = true;
174
+ setTimeout(() => {
175
+ closed.current = false;
176
+ }, 0);
177
+ onOpenChange?.(false);
178
+ };
179
+ const shut = closing(close);
180
+ const relink = (list) => list?.map((l) => ({ ...l, onPress: shut(l.onPress) }));
181
+ return (_jsxs(_Fragment, { children: [_jsx(Sidebar, { ...slot('session-rail'), role: "navigation", "aria-label": label, "data-collapsed": rail ? 'true' : 'false', width: rail ? RAIL : width, gap: "$0", px: rail ? '$1.5' : '$2', py: "$2", "$max-md": { display: 'none' }, ...rest, children: _jsx(Contents, { ...props, rail: rail }) }), open ? (_jsx(Sheet, { open: open, onOpenChange: (next) => (next ? onOpenChange?.(true) : close()), children: _jsxs(SheetContent, { side: "left", width: width, maxW: "86%", p: "$2", gap: "$0", bg: "$panel", onCloseAutoFocus: (e) => {
182
+ const to = back.current;
183
+ if (!to?.isConnected)
184
+ return;
185
+ e.preventDefault();
186
+ // After the event that closed it: a tap on the overlay dismisses on
187
+ // pointerdown, and the mousedown that follows would blur this
188
+ // focus straight back to the page.
189
+ setTimeout(() => {
190
+ if (to.isConnected)
191
+ to.focus();
192
+ }, 0);
193
+ }, children: [_jsx(SheetTitle, { ...slot('session-rail-title'), position: "absolute", opacity: 0, pointerEvents: "none", children: label }), _jsx(YStack, { ...slot('session-rail-drawer'), role: "navigation", "aria-label": label, flex: 1, minH: 0, children: _jsx(Contents, { ...props, rail: false, collapsed: false, onCollapse: undefined, onBrand: shut(onBrand ?? onNew), onSearch: shut(onSearch), onNew: shut(onNew), onOpen: shut(onOpen), links: relink(links), more: relink(more), account: account && {
194
+ ...account,
195
+ onPress: shut(account.onPress),
196
+ onSignOut: shut(account.onSignOut),
197
+ groups: account.groups?.map((g) => Array.isArray(g)
198
+ ? g.map((i) => ({ ...i, onPress: shut(i.onPress) }))
199
+ : { ...g, items: g.items.map((i) => ({ ...i, onPress: shut(i.onPress) })) }),
200
+ } }) })] }) })) : null] }));
201
+ }
202
+ /**
203
+ * RailNotice — a small card at the rail's foot, above the account: an offer
204
+ * ("Try Hanzo in Slack"), its one action, and a way to put it away. Pass it as
205
+ * `SessionRail notice`; the host decides when it shows and remembers a dismissal.
206
+ */
207
+ export function RailNotice({ icon, title, action, onAction, onDismiss, dismissLabel = 'Dismiss', ...rest }) {
208
+ const id = useId();
209
+ return (_jsxs(XStack, { ...slot('rail-notice'), items: "center", gap: "$2.5", px: "$3", py: "$2.5", rounded: "$3", borderWidth: 1, borderColor: "$borderColor", bg: "$panel", ...rest, children: [icon ? (_jsx(XStack, { shrink: 0, "aria-hidden": true, children: icon })) : null, _jsxs(YStack, { flex: 1, minW: 0, gap: "$0.5", children: [_jsx(SizableText, { id: `${id}-title`, size: "$2", color: "$ink", numberOfLines: 1, children: title }), action && onAction ? (_jsx(XStack, { ...slot('rail-notice-action'), ...press(onAction), "aria-describedby": `${id}-title`, self: "flex-start", cursor: "pointer", rounded: "$1", focusVisibleStyle: RING, children: _jsx(SizableText, { size: "$1", color: "$soft", textDecorationLine: "underline", children: action }) })) : null] }), onDismiss ? (_jsx(XStack, { ...slot('rail-notice-dismiss'), ...press(onDismiss), ...tip(dismissLabel), "aria-label": dismissLabel, p: "$1", rounded: "$2", cursor: "pointer", hoverStyle: { bg: '$hover' }, focusVisibleStyle: RING, children: _jsx(X, { size: 14 }) })) : null] }));
210
+ }
211
+ /**
212
+ * RailBar — the phone's header for a surface with a `SessionRail`: the menu
213
+ * that opens the rail's drawer, the brand, and search on the right. Only below
214
+ * `md`, where there is no rail; from `md` up it draws nothing and the rail's own
215
+ * head carries the same three. Place it at the top of the pane, in flow.
216
+ */
217
+ export function RailBar({ onMenu, menuLabel = 'Open menu', brand, onBrand, onSearch, searchLabel = 'Search', ...rest }) {
218
+ return (_jsxs(XStack, { ...slot('rail-bar'), height: 44, px: "$2", gap: "$2", items: "center", shrink: 0, $md: { display: 'none' }, ...rest, children: [_jsx(Button, { variant: "ghost", size: "icon-sm", onPress: onMenu, "aria-label": menuLabel, children: _jsx(Menu, { size: 18 }) }), brand ? _jsx(Brand, { brand: brand, onPress: onBrand }) : null, _jsx(XStack, { flex: 1 }), onSearch ? (_jsx(Button, { variant: "ghost", size: "icon-sm", onPress: onSearch, "aria-label": searchLabel, children: _jsx(Search, { size: 18 }) })) : null] }));
93
219
  }
94
220
  //# sourceMappingURL=SessionRail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionRail.js","sourceRoot":"","sources":["../../src/chat/SessionRail.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionRail.js","sourceRoot":"","sources":["../../src/chat/SessionRail.tsx"],"names":[],"mappings":"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"}
@@ -14,7 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.clip = exports.Persona = exports.SourceCard = exports.Sources = exports.Inspector = exports.Preview = exports.made = exports.answer = exports.read = exports.stage = exports.EMPTY = exports.TOOLS = exports.Failure = exports.Step = exports.Code = exports.Aside = exports.AsideToggle = exports.ShareButton = exports.HeaderButton = exports.Header = exports.StatusDot = exports.SessionRail = exports.SidebarUser = exports.SidebarFolder = exports.SidebarItem = exports.SidebarSection = exports.SidebarScroll = exports.SidebarNewChat = exports.SidebarIconButton = exports.SidebarHeader = exports.Sidebar = exports.SLACK = exports.pinned = exports.sends = exports.ready = exports.Thread = exports.Message = exports.Caret = exports.NEXT = exports.EmptyPrompt = exports.ASK = exports.ComposerTool = exports.Composer = exports.join = exports.Piece = exports.Parts = exports.words = exports.Chat = void 0;
17
+ exports.Persona = exports.SourceCard = exports.Sources = exports.Inspector = exports.Preview = exports.made = exports.answer = exports.read = exports.stage = exports.EMPTY = exports.TOOLS = exports.Failure = exports.Step = exports.Code = exports.Aside = exports.AsideToggle = exports.ShareButton = exports.HeaderButton = exports.Header = exports.StatusDot = exports.RailNotice = exports.RailBar = exports.SessionRail = exports.SidebarUser = exports.SidebarFolder = exports.SidebarItem = exports.SidebarSection = exports.SidebarScroll = exports.SidebarNewChat = exports.SidebarIconButton = exports.SidebarHeader = exports.Sidebar = exports.SLACK = exports.pinned = exports.sends = exports.ready = exports.Thread = exports.Message = exports.Caret = exports.Home = exports.NEXT = exports.EmptyPrompt = exports.ASK = exports.ComposerTool = exports.Composer = exports.join = exports.Piece = exports.Parts = exports.words = exports.Chat = void 0;
18
+ exports.clip = void 0;
18
19
  /**
19
20
  * @hanzo/ui/chat — the one chat shell, on @hanzo/gui primitives.
20
21
  *
@@ -65,6 +66,8 @@ Object.defineProperty(exports, "ASK", { enumerable: true, get: function () { ret
65
66
  var EmptyPrompt_1 = require("./EmptyPrompt.cjs");
66
67
  Object.defineProperty(exports, "EmptyPrompt", { enumerable: true, get: function () { return EmptyPrompt_1.EmptyPrompt; } });
67
68
  Object.defineProperty(exports, "NEXT", { enumerable: true, get: function () { return EmptyPrompt_1.NEXT; } });
69
+ var Home_1 = require("./Home.cjs");
70
+ Object.defineProperty(exports, "Home", { enumerable: true, get: function () { return Home_1.Home; } });
68
71
  var Message_1 = require("./Message.cjs");
69
72
  Object.defineProperty(exports, "Caret", { enumerable: true, get: function () { return Message_1.Caret; } });
70
73
  Object.defineProperty(exports, "Message", { enumerable: true, get: function () { return Message_1.Message; } });
@@ -88,6 +91,8 @@ Object.defineProperty(exports, "SidebarFolder", { enumerable: true, get: functio
88
91
  Object.defineProperty(exports, "SidebarUser", { enumerable: true, get: function () { return Sidebar_1.SidebarUser; } });
89
92
  var SessionRail_1 = require("./SessionRail.cjs");
90
93
  Object.defineProperty(exports, "SessionRail", { enumerable: true, get: function () { return SessionRail_1.SessionRail; } });
94
+ Object.defineProperty(exports, "RailBar", { enumerable: true, get: function () { return SessionRail_1.RailBar; } });
95
+ Object.defineProperty(exports, "RailNotice", { enumerable: true, get: function () { return SessionRail_1.RailNotice; } });
91
96
  Object.defineProperty(exports, "StatusDot", { enumerable: true, get: function () { return SessionRail_1.StatusDot; } });
92
97
  var Header_1 = require("./Header.cjs");
93
98
  Object.defineProperty(exports, "Header", { enumerable: true, get: function () { return Header_1.Header; } });
@@ -38,12 +38,13 @@ export { words, type Part, type Said } from './words.js';
38
38
  export { Parts, Piece, join, type MessagePart, type PartActions, type PartsProps, type PieceProps, } from './Parts.js';
39
39
  export { Composer, ComposerTool, ASK, type ComposerProps, type ComposerToolProps, } from './Composer.js';
40
40
  export { EmptyPrompt, NEXT, type EmptyPromptProps } from './EmptyPrompt.js';
41
+ export { Home, type HomeProps } from './Home.js';
41
42
  export { Caret, Message, type MessageProps, type Role } from './Message.js';
42
43
  export { Thread, type ThreadProps } from './Thread.js';
43
44
  export { ready, sends, type Mods } from './send.js';
44
45
  export { pinned, SLACK, type Track } from './stick.js';
45
46
  export { Sidebar, SidebarHeader, SidebarIconButton, SidebarNewChat, SidebarScroll, SidebarSection, SidebarItem, SidebarFolder, SidebarUser, type SidebarProps, type SidebarHeaderProps, type SidebarIconButtonProps, type SidebarNewChatProps, type SidebarSectionProps, type SidebarItemProps, type SidebarFolderProps, type SidebarUserProps, } from './Sidebar.js';
46
- export { SessionRail, StatusDot, type RailAccount, type RailLink, type RailSession, type SessionRailProps, type SessionStatus, } from './SessionRail.js';
47
+ export { SessionRail, RailBar, RailNotice, StatusDot, type RailAccount, type RailBarProps, type RailLink, type RailNoticeProps, type RailSession, type SessionRailProps, type SessionStatus, } from './SessionRail.js';
47
48
  export { Header, HeaderButton, ShareButton, AsideToggle, Aside, type HeaderProps, type HeaderButtonProps, type ShareButtonProps, type AsideToggleProps, type AsideProps, } from './Header.js';
48
49
  export { Code, type CodeProps } from './Code.js';
49
50
  export { Step, type StepProps, type Ran } from './Step.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"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"}
@@ -38,12 +38,13 @@ export { words } from './words.js';
38
38
  export { Parts, Piece, join, } from './Parts.js';
39
39
  export { Composer, ComposerTool, ASK, } from './Composer.js';
40
40
  export { EmptyPrompt, NEXT } from './EmptyPrompt.js';
41
+ export { Home } from './Home.js';
41
42
  export { Caret, Message } from './Message.js';
42
43
  export { Thread } from './Thread.js';
43
44
  export { ready, sends } from './send.js';
44
45
  export { pinned, SLACK } from './stick.js';
45
46
  export { Sidebar, SidebarHeader, SidebarIconButton, SidebarNewChat, SidebarScroll, SidebarSection, SidebarItem, SidebarFolder, SidebarUser, } from './Sidebar.js';
46
- export { SessionRail, StatusDot, } from './SessionRail.js';
47
+ export { SessionRail, RailBar, RailNotice, StatusDot, } from './SessionRail.js';
47
48
  export { Header, HeaderButton, ShareButton, AsideToggle, Aside, } from './Header.js';
48
49
  export { Code } from './Code.js';
49
50
  export { Step } from './Step.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EAAE,IAAI,EAA6B,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,KAAK,EAAwB,MAAM,SAAS,CAAA;AACrD,OAAO,EACL,KAAK,EACL,KAAK,EACL,IAAI,GAKL,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,GAAG,GAGJ,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,IAAI,EAAyB,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAgC,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,MAAM,EAAoB,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAa,MAAM,QAAQ,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAc,MAAM,SAAS,CAAA;AAEnD,OAAO,EACL,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,WAAW,GASZ,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,WAAW,EACX,SAAS,GAMV,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,WAAW,EACX,WAAW,EACX,KAAK,GAMN,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,IAAI,EAAkB,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,IAAI,EAA4B,MAAM,QAAQ,CAAA;AACvD,OAAO,EAAE,OAAO,EAAqB,MAAM,WAAW,CAAA;AAEtD;;;;;;;;GAQG;AACH,OAAO,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,MAAM,EACN,IAAI,GAOL,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,OAAO,EAAqB,MAAM,WAAW,CAAA;AACtD,OAAO,EAAE,SAAS,EAAqC,MAAM,aAAa,CAAA;AAE1E,OAAO,EACL,OAAO,EACP,UAAU,GAIX,MAAM,WAAW,CAAA;AAElB;;;;;;;GAOG;AACH,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAgD,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EAAE,IAAI,EAA6B,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,KAAK,EAAwB,MAAM,SAAS,CAAA;AACrD,OAAO,EACL,KAAK,EACL,KAAK,EACL,IAAI,GAKL,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,GAAG,GAGJ,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,IAAI,EAAyB,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,IAAI,EAAkB,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAgC,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,MAAM,EAAoB,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAa,MAAM,QAAQ,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAc,MAAM,SAAS,CAAA;AAEnD,OAAO,EACL,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,WAAW,GASZ,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,WAAW,EACX,OAAO,EACP,UAAU,EACV,SAAS,GAQV,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,WAAW,EACX,WAAW,EACX,KAAK,GAMN,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,IAAI,EAAkB,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,IAAI,EAA4B,MAAM,QAAQ,CAAA;AACvD,OAAO,EAAE,OAAO,EAAqB,MAAM,WAAW,CAAA;AAEtD;;;;;;;;GAQG;AACH,OAAO,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,MAAM,EACN,IAAI,GAOL,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,OAAO,EAAqB,MAAM,WAAW,CAAA;AACtD,OAAO,EAAE,SAAS,EAAqC,MAAM,aAAa,CAAA;AAE1E,OAAO,EACL,OAAO,EACP,UAAU,GAIX,MAAM,WAAW,CAAA;AAElB;;;;;;;GAOG;AACH,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAgD,MAAM,WAAW,CAAA"}
package/dist/gallery.cjs CHANGED
@@ -2,8 +2,31 @@
2
2
  'use client';
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Gallery = void 0;
5
+ exports.Phone = Phone;
5
6
  const jsx_runtime_1 = require("react/jsx-runtime");
6
7
  const gui_1 = require("@hanzo/gui");
8
+ /**
9
+ * The gallery — every component @hanzo/ui exports, rendered once, in every
10
+ * variant that carries its own styling.
11
+ *
12
+ * It exists because three different jobs need the same answer to "what does this
13
+ * package have to style", and three copies of that list would drift:
14
+ *
15
+ * 1. `scripts/gen-css.mjs` renders this in Node and harvests the atomic CSS
16
+ * that render produces. A component missing here ships with classes and no
17
+ * rules — the exact defect this package now guarantees against.
18
+ * 2. `src/gallery.test.tsx` mounts it, so a component that throws on first
19
+ * paint fails the build.
20
+ * 3. The consumer test installs the tarball and renders this in a browser,
21
+ * then asserts computed styles against it.
22
+ *
23
+ * So the list is the specification, and the generator, the unit test and the
24
+ * consumer test all read it. Add a component to the barrel, add it here.
25
+ *
26
+ * Variants are enumerated rather than sampled: gui compiles each distinct style
27
+ * VALUE to its own class, so an unrendered variant is an unwritten rule.
28
+ */
29
+ const react_1 = require("react");
7
30
  const box_1 = require("./box.cjs");
8
31
  const Workbench_1 = require("./product/Workbench.cjs");
9
32
  const Skeleton_1 = require("./product/Skeleton.cjs");
@@ -19,6 +42,13 @@ const chat_1 = require("./chat/index.cjs");
19
42
  const gui_2 = require("./backends/gui/index.cjs");
20
43
  // Off the barrel — web-only, so it is imported the way a consumer imports it.
21
44
  const grid_1 = require("./grid.cjs");
45
+ const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
46
+ // The settings page and its section parts. Aliased where a part shares a word
47
+ // with a primitive above (`Card`, `Field`), exactly as a consumer importing both
48
+ // would have to.
49
+ const settings_1 = require("./settings/index.cjs");
50
+ // A catalogue page — web-only, like the grid its cards lay out on.
51
+ const catalog_1 = require("./catalog/index.cjs");
22
52
  const agents_1 = require("./agents/index.cjs");
23
53
  /** A real <img> with real intrinsic pixels, inline so nothing hits the network.
24
54
  * 120x40 on purpose: the wrong ratio for every box it goes in, so a frame that
@@ -49,6 +79,17 @@ const SESSIONS = [
49
79
  { id: 's4', title: 'Enterprise/OSS feature audit', status: 'error' },
50
80
  { id: 's5', title: 'Idle one', status: 'idle' },
51
81
  ];
82
+ /** A settings page's sections, in two groups, so both group labels render. */
83
+ const ENTRIES = [
84
+ { id: 'general', label: 'General', group: 'Settings' },
85
+ { id: 'account', label: 'Account', group: 'Settings' },
86
+ { id: 'keys', label: 'API keys', group: 'Code' },
87
+ ];
88
+ /** A shelf's kinds, one with an icon and one without, so the tab draws both. */
89
+ const KINDS = [
90
+ { id: 'skills', label: 'Skills', icon: lucide_icons_2_1.BookOpen },
91
+ { id: 'connectors', label: 'Connectors', icon: lucide_icons_2_1.Plug },
92
+ ];
52
93
  /** A loader that never needs to answer — the chips render closed. */
53
94
  const NONE = async () => ({ repos: [], branches: [], items: [] });
54
95
  /** Two: one with a host and one without, so the card's second line and its
@@ -115,6 +156,36 @@ const Gallery = () => ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex'
115
156
  ], height: 200, onHeight: NOOP, onClear: NOOP, onRun: NOOP }), children: (0, jsx_runtime_1.jsx)(agents_1.PreviewFrame, { src: "https://hanzo.ai/", toolbar: (0, jsx_runtime_1.jsx)(gui_2.Button, { size: "icon-sm", variant: "ghost", children: "+" }) }) }) }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', width: 280, height: 240 }, children: (0, jsx_runtime_1.jsx)(agents_1.FileTree, { files: ['src/app.tsx', 'src/lib/a.ts', 'README.md'], value: "src/lib/a.ts", onSelect: NOOP }) }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', width: 360, height: 240 }, children: (0, jsx_runtime_1.jsx)(agents_1.FileTabs, { files: [
116
157
  { path: 'src/app.tsx', content: 'export {}', dirty: true },
117
158
  { path: 'big.bin', error: 'Too large to show here.' },
118
- ], value: "src/app.tsx", onSelect: NOOP, onClose: NOOP, onChange: NOOP }) }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', width: 280, height: 160 }, children: (0, jsx_runtime_1.jsx)(agents_1.PreviewFrame, { src: null }) }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', width: 360 }, children: (0, jsx_runtime_1.jsx)(agents_1.Console, { lines: [], height: 36, onHeight: NOOP }) })] }), (0, jsx_runtime_1.jsxs)(Section, { name: "sessions", children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', width: '100%', maxWidth: 560, height: 420, gap: 12 }, children: [(0, jsx_runtime_1.jsx)(chat_1.SessionRail, { onNew: NOOP, fresh: true, links: [{ id: 'a', label: 'Artifacts', icon: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "a" }) }], more: [{ id: 'p', label: 'Projects', icon: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "p" }) }], recents: SESSIONS, active: "s2", onOpen: NOOP, onSort: NOOP, account: { name: 'z@hanzo.ai', onPress: NOOP }, onSettings: NOOP, onSearch: NOOP, onCollapse: NOOP }), (0, jsx_runtime_1.jsx)(chat_1.SessionRail, { onNew: NOOP, recents: SESSIONS, onOpen: NOOP, collapsed: true, onCollapse: NOOP, account: { name: 'z' } })] }), (0, jsx_runtime_1.jsx)(chat_1.EmptyPrompt, { mark: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "h" }) }), (0, jsx_runtime_1.jsx)("div", { style: { width: '100%', maxWidth: 768 }, children: (0, jsx_runtime_1.jsx)(chat_1.Composer, { inline: true, value: "", onChange: NOOP, onSend: NOOP, placeholder: "Describe a task or ask a question", head: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ChipSelect_1.ChipSelect, { name: "Environment", label: "Default", onChange: NOOP, items: [] }), (0, jsx_runtime_1.jsx)(RepoSelect_1.RepoSelect, { value: { owner: 'hanzo-inc', name: 'cloud' }, onChange: NOOP, load: NONE }), (0, jsx_runtime_1.jsx)(BranchSelect_1.BranchSelect, { value: "main", onChange: NOOP, load: NONE }), (0, jsx_runtime_1.jsx)(ChipSelect_1.ChipSelect, { name: "Disabled", label: "off", onChange: NOOP, items: [], disabled: true })] }), foot: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(chat_1.ComposerTool, { label: "Attach", icon: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "+" }), onPress: NOOP }), (0, jsx_runtime_1.jsx)(chat_1.ComposerTool, { label: "Mode", text: "Auto", caret: true, onPress: NOOP }), (0, jsx_runtime_1.jsx)(chat_1.ComposerTool, { label: "Disabled", text: "off", disabled: true }), (0, jsx_runtime_1.jsx)(gui_1.XStack, { flex: 1 }), (0, jsx_runtime_1.jsx)(ChipSelect_1.ChipSelect, { name: "Model", label: "Zen 5", onChange: NOOP, items: [], quiet: true })] }) }) }), (0, jsx_runtime_1.jsx)("div", { style: { width: '100%', maxWidth: 768 }, children: (0, jsx_runtime_1.jsx)(chat_1.Composer, { inline: true, value: "a draft", onChange: NOOP, onSend: NOOP, onStop: NOOP, busy: true }) })] }), (0, jsx_runtime_1.jsxs)(Section, { name: "box", children: [(0, jsx_runtime_1.jsx)(gui_1.XStack, { items: "center", gap: 16, px: 24, py: 12, rounded: "var(--radius-lg, 0.75rem)", borderWidth: 1, children: (0, jsx_runtime_1.jsx)(gui_2.CardTitle, { children: "utility classes" }) }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { gap: 8, maxW: 768, ml: "auto", mr: "auto", overflow: "hidden", children: (0, jsx_runtime_1.jsx)(gui_2.CardTitle, { children: "column" }) })] })] }));
159
+ ], value: "src/app.tsx", onSelect: NOOP, onClose: NOOP, onChange: NOOP }) }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', width: 280, height: 160 }, children: (0, jsx_runtime_1.jsx)(agents_1.PreviewFrame, { src: null }) }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', width: 360 }, children: (0, jsx_runtime_1.jsx)(agents_1.Console, { lines: [], height: 36, onHeight: NOOP }) })] }), (0, jsx_runtime_1.jsxs)(Section, { name: "sessions", children: [(0, jsx_runtime_1.jsxs)("div", { "data-rail": "shell", style: { display: 'flex', width: '100%', maxWidth: 560, height: 520, gap: 12 }, children: [(0, jsx_runtime_1.jsx)(chat_1.SessionRail, { brand: "Hanzo Build", onSearch: NOOP, searchLabel: "Search runs", onNew: NOOP, fresh: true, links: [{ id: 'a', label: 'Artifacts', icon: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "a" }) }], more: [{ id: 'p', label: 'Projects', icon: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "p" }) }], recents: SESSIONS, active: "s2", onOpen: NOOP, onSort: NOOP, notice: (0, jsx_runtime_1.jsx)(chat_1.RailNotice, { icon: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "s" }), title: "Try Hanzo in Slack", action: "Set up", onAction: NOOP, onDismiss: NOOP }), account: {
160
+ name: 'Dave',
161
+ sub: 'acme',
162
+ email: 'dave@acme.test',
163
+ groups: [{ label: 'Organization', items: [{ id: 'acme', label: 'acme', active: true, onPress: NOOP }] }],
164
+ onSignOut: NOOP,
165
+ }, onCollapse: NOOP }), (0, jsx_runtime_1.jsx)(chat_1.SessionRail, { onNew: NOOP, onSearch: NOOP, recents: SESSIONS, onOpen: NOOP, collapsed: true, onCollapse: NOOP, account: { name: 'Sign in', onPress: NOOP } })] }), (0, jsx_runtime_1.jsx)("div", { style: { width: '100%', maxWidth: 560 }, children: (0, jsx_runtime_1.jsx)(chat_1.RailBar, { onMenu: NOOP, menuLabel: "Open runs", brand: "Hanzo Build", onBrand: NOOP, onSearch: NOOP, searchLabel: "Search runs" }) }), (0, jsx_runtime_1.jsx)(chat_1.EmptyPrompt, { mark: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "h" }) }), (0, jsx_runtime_1.jsx)("div", { "data-home": "demo", style: { display: 'flex', width: '100%', height: 320 }, children: (0, jsx_runtime_1.jsx)(chat_1.Home, { mark: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "h" }), children: (0, jsx_runtime_1.jsx)(chat_1.Composer, { inline: true, value: "", onChange: NOOP, onSend: NOOP, placeholder: "Describe a task or ask a question" }) }) }), (0, jsx_runtime_1.jsx)("div", { style: { width: '100%', maxWidth: 768 }, children: (0, jsx_runtime_1.jsx)(chat_1.Composer, { inline: true, value: "", onChange: NOOP, onSend: NOOP, placeholder: "Describe a task or ask a question", head: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ChipSelect_1.ChipSelect, { name: "Environment", label: "Default", onChange: NOOP, items: [] }), (0, jsx_runtime_1.jsx)(RepoSelect_1.RepoSelect, { value: { owner: 'hanzo-inc', name: 'cloud' }, onChange: NOOP, load: NONE }), (0, jsx_runtime_1.jsx)(BranchSelect_1.BranchSelect, { value: "main", onChange: NOOP, load: NONE }), (0, jsx_runtime_1.jsx)(ChipSelect_1.ChipSelect, { name: "Disabled", label: "off", onChange: NOOP, items: [], disabled: true })] }), foot: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(chat_1.ComposerTool, { label: "Attach", icon: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "+" }), onPress: NOOP }), (0, jsx_runtime_1.jsx)(chat_1.ComposerTool, { label: "Mode", text: "Auto", caret: true, onPress: NOOP }), (0, jsx_runtime_1.jsx)(chat_1.ComposerTool, { label: "Disabled", text: "off", disabled: true }), (0, jsx_runtime_1.jsx)(gui_1.XStack, { flex: 1 }), (0, jsx_runtime_1.jsx)(ChipSelect_1.ChipSelect, { name: "Model", label: "Zen 5", onChange: NOOP, items: [], quiet: true })] }) }) }), (0, jsx_runtime_1.jsx)("div", { style: { width: '100%', maxWidth: 768 }, children: (0, jsx_runtime_1.jsx)(chat_1.Composer, { inline: true, value: "a draft", onChange: NOOP, onSend: NOOP, onStop: NOOP, busy: true }) })] }), (0, jsx_runtime_1.jsx)(Section, { name: "settings", children: (0, jsx_runtime_1.jsx)("div", { "data-settings": "demo", style: { display: 'flex', width: '100%', height: 560 }, children: (0, jsx_runtime_1.jsx)(settings_1.Settings, { entries: ENTRIES, active: "general", onPick: NOOP, children: (0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$6", children: [(0, jsx_runtime_1.jsx)(settings_1.Heading, { title: "General", detail: "How this surface looks and listens.", action: (0, jsx_runtime_1.jsx)(gui_2.Button, { size: "sm", children: "Save" }) }), (0, jsx_runtime_1.jsx)(settings_1.Group, { title: "Appearance", detail: "Per browser.", children: (0, jsx_runtime_1.jsxs)(settings_1.Card, { children: [(0, jsx_runtime_1.jsx)(settings_1.Row, { first: true, title: "Theme", detail: "Follows the system.", trailing: (0, jsx_runtime_1.jsx)(gui_2.Switch, {}) }), (0, jsx_runtime_1.jsx)(settings_1.Row, { mono: true, title: "hk-live-3f9a", leading: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "k" }) })] }) }), (0, jsx_runtime_1.jsx)(settings_1.Field, { label: "Call me", hint: "What the home page greets you by.", children: (0, jsx_runtime_1.jsx)(gui_2.Input, { placeholder: "Name", "aria-label": "Call me" }) }), (0, jsx_runtime_1.jsx)(settings_1.Card, { children: (0, jsx_runtime_1.jsx)(settings_1.Soft, { children: "No keys yet." }) }), (0, jsx_runtime_1.jsx)(settings_1.Soft, { action: (0, jsx_runtime_1.jsx)(gui_2.Button, { size: "sm", children: "Sign in" }), children: "Sign in to see your settings." }), (0, jsx_runtime_1.jsx)(settings_1.Note, { children: "Saved." }), (0, jsx_runtime_1.jsx)(settings_1.Once, { value: "hk-live-3f9a0c", label: "API key" })] }) }) }) }), (0, jsx_runtime_1.jsx)(Section, { name: "catalog", children: (0, jsx_runtime_1.jsx)("div", { "data-shelf": "demo", style: { display: 'flex', width: '100%', height: 720 }, children: (0, jsx_runtime_1.jsxs)(catalog_1.Shelf, { title: "Customize", detail: "What the agent brings to a run.", tabs: KINDS, tab: "skills", onTab: NOOP, view: "discover", onView: NOOP, search: "Search skills", query: "", onQuery: NOOP, add: "New skill", onAdd: NOOP, children: [(0, jsx_runtime_1.jsx)(catalog_1.Featured, { title: "Triage", detail: "How we triage an issue.", meta: "Saved Sep 21", mark: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "t" }), onOpen: NOOP, action: (0, jsx_runtime_1.jsx)(catalog_1.Add, { name: "Triage", added: false, onPress: NOOP }) }), (0, jsx_runtime_1.jsxs)(catalog_1.Tiles, { label: "Skills to add", children: [(0, jsx_runtime_1.jsx)(catalog_1.Tile, { title: "git_repos", detail: "List the forge's repositories.", meta: "git", mark: (0, jsx_runtime_1.jsx)(gui_2.Badge, { children: "g" }), onOpen: NOOP, action: (0, jsx_runtime_1.jsx)(catalog_1.Add, { name: "git_repos", added: false, onPress: NOOP }) }), (0, jsx_runtime_1.jsx)(catalog_1.Tile, { title: "git_branches", detail: "List a repository's branches.", meta: "git", onOpen: NOOP, action: (0, jsx_runtime_1.jsx)(catalog_1.Add, { name: "git_branches", added: true, onPress: NOOP }) }), (0, jsx_runtime_1.jsx)(catalog_1.Tile, { title: "kms_secrets", detail: "Read the names of an org's secrets.", action: (0, jsx_runtime_1.jsx)(catalog_1.Add, { name: "kms_secrets", added: false, busy: true, onPress: NOOP }) })] })] }) }) }), (0, jsx_runtime_1.jsxs)(Section, { name: "box", children: [(0, jsx_runtime_1.jsx)(gui_1.XStack, { items: "center", gap: 16, px: 24, py: 12, rounded: "var(--radius-lg, 0.75rem)", borderWidth: 1, children: (0, jsx_runtime_1.jsx)(gui_2.CardTitle, { children: "utility classes" }) }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { gap: 8, maxW: 768, ml: "auto", mr: "auto", overflow: "hidden", children: (0, jsx_runtime_1.jsx)(gui_2.CardTitle, { children: "column" }) })] })] }));
119
166
  exports.Gallery = Gallery;
167
+ /**
168
+ * A phone's page, driven: the bar opens the rail's drawer, and the host keeps
169
+ * it open or shut and counts every close it is told of (`data-closes`).
170
+ *
171
+ * Not in the gallery, on purpose. The gallery holds a dozen modal surfaces open
172
+ * so each is styled, and every one of them takes focus back the moment the
173
+ * drawer lets go of it — so where focus lands after the drawer closes is a
174
+ * question only a page with nothing else open can answer. The consumer suite
175
+ * renders this at `?page=phone`: a real `<dialog>` moves focus on its own, and
176
+ * jsdom's does not, so this is the only place the drawer's focus return is
177
+ * measured.
178
+ */
179
+ function Phone() {
180
+ const [open, setOpen] = (0, react_1.useState)(false);
181
+ const [closes, setCloses] = (0, react_1.useState)(0);
182
+ return ((0, jsx_runtime_1.jsxs)("div", { "data-phone": "demo", "data-closes": closes, style: { display: 'flex', flexDirection: 'column', height: '100vh' }, children: [(0, jsx_runtime_1.jsx)(chat_1.RailBar, { onMenu: () => {
183
+ setCloses(0);
184
+ setOpen(true);
185
+ }, menuLabel: "Open runs", brand: "Hanzo Build", onSearch: NOOP }), (0, jsx_runtime_1.jsx)(chat_1.SessionRail, { onNew: NOOP, recents: SESSIONS, onOpen: NOOP, open: open, onOpenChange: (next) => {
186
+ if (!next)
187
+ setCloses((n) => n + 1);
188
+ setOpen(next);
189
+ }, account: { name: 'Dave', groups: [[{ id: 'usage', label: 'Usage', onPress: NOOP }]], onSignOut: NOOP }, label: "Runs" })] }));
190
+ }
120
191
  exports.default = exports.Gallery;
package/dist/gallery.d.ts CHANGED
@@ -3,5 +3,18 @@
3
3
  * scope its assertions without depending on document order.
4
4
  */
5
5
  export declare const Gallery: () => import("react").JSX.Element;
6
+ /**
7
+ * A phone's page, driven: the bar opens the rail's drawer, and the host keeps
8
+ * it open or shut and counts every close it is told of (`data-closes`).
9
+ *
10
+ * Not in the gallery, on purpose. The gallery holds a dozen modal surfaces open
11
+ * so each is styled, and every one of them takes focus back the moment the
12
+ * drawer lets go of it — so where focus lands after the drawer closes is a
13
+ * question only a page with nothing else open can answer. The consumer suite
14
+ * renders this at `?page=phone`: a real `<dialog>` moves focus on its own, and
15
+ * jsdom's does not, so this is the only place the drawer's focus return is
16
+ * measured.
17
+ */
18
+ export declare function Phone(): import("react").JSX.Element;
6
19
  export default Gallery;
7
20
  //# sourceMappingURL=gallery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gallery.d.ts","sourceRoot":"","sources":["../src/gallery.tsx"],"names":[],"mappings":"AA0LA;;;GAGG;AACH,eAAO,MAAM,OAAO,mCA+tBnB,CAAA;eAEc,OAAO"}
1
+ {"version":3,"file":"gallery.d.ts","sourceRoot":"","sources":["../src/gallery.tsx"],"names":[],"mappings":"AA2NA;;;GAGG;AACH,eAAO,MAAM,OAAO,mCAqzBnB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,gCA4BpB;eAEc,OAAO"}