@xeonr/console-shell 0.4.2 → 0.5.1

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 (88) hide show
  1. package/dist/AccountMenu.d.ts.map +1 -1
  2. package/dist/AccountMenu.js +6 -1
  3. package/dist/AccountMenu.js.map +1 -1
  4. package/dist/CommandPalette.d.ts +3 -2
  5. package/dist/CommandPalette.d.ts.map +1 -1
  6. package/dist/CommandPalette.js +78 -10
  7. package/dist/CommandPalette.js.map +1 -1
  8. package/dist/ConsoleProvider.d.ts +39 -4
  9. package/dist/ConsoleProvider.d.ts.map +1 -1
  10. package/dist/ConsoleProvider.js +19 -3
  11. package/dist/ConsoleProvider.js.map +1 -1
  12. package/dist/ConsoleShell.d.ts +63 -3
  13. package/dist/ConsoleShell.d.ts.map +1 -1
  14. package/dist/ConsoleShell.js +153 -8
  15. package/dist/ConsoleShell.js.map +1 -1
  16. package/dist/ContextRow.d.ts +2 -0
  17. package/dist/ContextRow.d.ts.map +1 -0
  18. package/dist/ContextRow.js +235 -0
  19. package/dist/ContextRow.js.map +1 -0
  20. package/dist/Gate.d.ts +25 -0
  21. package/dist/Gate.d.ts.map +1 -0
  22. package/dist/Gate.js +38 -0
  23. package/dist/Gate.js.map +1 -0
  24. package/dist/ScopeCard.d.ts +4 -0
  25. package/dist/ScopeCard.d.ts.map +1 -0
  26. package/dist/ScopeCard.js +228 -0
  27. package/dist/ScopeCard.js.map +1 -0
  28. package/dist/ScopeRail.d.ts.map +1 -1
  29. package/dist/ScopeRail.js +42 -1
  30. package/dist/ScopeRail.js.map +1 -1
  31. package/dist/SectionSidebar.d.ts +6 -4
  32. package/dist/SectionSidebar.d.ts.map +1 -1
  33. package/dist/SectionSidebar.js +72 -25
  34. package/dist/SectionSidebar.js.map +1 -1
  35. package/dist/TopBar.d.ts.map +1 -1
  36. package/dist/TopBar.js +16 -2
  37. package/dist/TopBar.js.map +1 -1
  38. package/dist/context.d.ts +82 -0
  39. package/dist/context.d.ts.map +1 -0
  40. package/dist/context.js +65 -0
  41. package/dist/context.js.map +1 -0
  42. package/dist/crumb.d.ts +9 -0
  43. package/dist/crumb.d.ts.map +1 -1
  44. package/dist/crumb.js +20 -2
  45. package/dist/crumb.js.map +1 -1
  46. package/dist/crumbs.d.ts +19 -0
  47. package/dist/crumbs.d.ts.map +1 -0
  48. package/dist/crumbs.js +43 -0
  49. package/dist/crumbs.js.map +1 -0
  50. package/dist/index.d.ts +10 -2
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +10 -2
  53. package/dist/index.js.map +1 -1
  54. package/dist/links.d.ts +5 -4
  55. package/dist/links.d.ts.map +1 -1
  56. package/dist/links.js +5 -15
  57. package/dist/links.js.map +1 -1
  58. package/dist/nav.d.ts +66 -4
  59. package/dist/nav.d.ts.map +1 -1
  60. package/dist/nav.js +99 -2
  61. package/dist/nav.js.map +1 -1
  62. package/dist/origin.d.ts +2 -0
  63. package/dist/origin.d.ts.map +1 -0
  64. package/dist/origin.js +14 -0
  65. package/dist/origin.js.map +1 -0
  66. package/dist/place.d.ts +26 -0
  67. package/dist/place.d.ts.map +1 -0
  68. package/dist/place.js +53 -0
  69. package/dist/place.js.map +1 -0
  70. package/dist/scope.d.ts +35 -0
  71. package/dist/scope.d.ts.map +1 -0
  72. package/dist/scope.js +42 -0
  73. package/dist/scope.js.map +1 -0
  74. package/dist/screen.d.ts +38 -0
  75. package/dist/screen.d.ts.map +1 -0
  76. package/dist/screen.js +79 -0
  77. package/dist/screen.js.map +1 -0
  78. package/dist/shellConfig.d.ts +50 -0
  79. package/dist/shellConfig.d.ts.map +1 -0
  80. package/dist/shellConfig.js +24 -0
  81. package/dist/shellConfig.js.map +1 -0
  82. package/dist/types.d.ts +3 -1
  83. package/dist/types.d.ts.map +1 -1
  84. package/package.json +6 -4
  85. package/dist/TeamCard.d.ts +0 -5
  86. package/dist/TeamCard.d.ts.map +0 -1
  87. package/dist/TeamCard.js +0 -152
  88. package/dist/TeamCard.js.map +0 -1
@@ -1,14 +1,22 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useCallback, useEffect, useState } from "react";
2
+ import { useCallback, useEffect, useRef, useState } from "react";
3
3
  import styled, { css } from "styled-components";
4
4
  import { Skeleton, v } from "@xeonr/platform-ui";
5
5
  import { useConsoleMaybe } from "./ConsoleProvider.js";
6
+ import { itemTarget, resolveActive } from "./nav.js";
7
+ import { deriveCrumbs } from "./crumbs.js";
8
+ import { scopeHref } from "./scope.js";
9
+ import { joinPath, pickSearch, swapTeamBase, withCarry } from "./place.js";
10
+ import { useLocation } from "react-router-dom";
6
11
  import { ScopeRail } from "./ScopeRail.js";
7
12
  import { SectionSidebar } from "./SectionSidebar.js";
8
13
  import { TopBar } from "./TopBar.js";
9
14
  import { CommandPalette } from "./CommandPalette.js";
10
15
  import { Launcher } from "./Launcher.js";
11
16
  import { AccountMenu } from "./AccountMenu.js";
17
+ import { ShellConfigProvider } from "./shellConfig.js";
18
+ import { ScreenProvider } from "./screen.js";
19
+ import { currentContext, sectionPathOf } from "./context.js";
12
20
  import { CrumbProvider } from "./crumb.js";
13
21
  // The whole integration contract for a product console:
14
22
  //
@@ -64,6 +72,49 @@ const Page = styled.main `
64
72
  margin: 0 auto;
65
73
  `}
66
74
  `;
75
+ // A product's full-width strip under the top bar (lantern's scope bar), sticky
76
+ // with it, outside the page's padding. Empty for everyone else.
77
+ const Toolbar = styled.div `
78
+ position: sticky; top: 52px;
79
+ z-index: calc(${v.zNav} - 3);
80
+ background: ${v.bg};
81
+ border-bottom: 1px solid ${v.line};
82
+ `;
83
+ // A right-hand aside the product fills (trellis's AI sessions). On a phone it
84
+ // overlays everything, the drawer included.
85
+ const Dock = styled.aside `
86
+ width: 520px; flex: none;
87
+ border-left: 1px solid ${v.line};
88
+ background: ${v.sidebar};
89
+ display: flex; flex-direction: column;
90
+ min-height: 0;
91
+ @media (max-width: 900px) {
92
+ position: fixed; top: 2px; right: 0; bottom: 0;
93
+ width: min(520px, 100vw);
94
+ z-index: calc(${v.zNav} + 2);
95
+ box-shadow: ${v.elev};
96
+ }
97
+ `;
98
+ function useNarrow() {
99
+ const q = "(max-width: 900px)";
100
+ const [narrow, setNarrow] = useState(() => typeof window !== "undefined" && window.matchMedia(q).matches);
101
+ useEffect(() => {
102
+ const m = window.matchMedia(q);
103
+ const on = () => setNarrow(m.matches);
104
+ m.addEventListener("change", on);
105
+ return () => m.removeEventListener("change", on);
106
+ }, []);
107
+ return narrow;
108
+ }
109
+ function readChoice(key) {
110
+ try {
111
+ const v = localStorage.getItem(key);
112
+ return v === "collapsed" ? true : v === "expanded" ? false : undefined;
113
+ }
114
+ catch {
115
+ return undefined;
116
+ }
117
+ }
67
118
  const MobileScrim = styled.div `
68
119
  position: fixed; inset: 0;
69
120
  z-index: calc(${v.zNav} - 1);
@@ -76,19 +127,56 @@ const SkeletonFrame = styled.div `
76
127
  > div:nth-child(2) { width: 224px; border-right: 1px solid ${v.line}; background: ${v.sidebar}; padding: 12px 10px; display: flex; flex-direction: column; gap: 8px; }
77
128
  > div:last-child { flex: 1; padding: 20px 24px; display: flex; flex-direction: column; gap: 12px; }
78
129
  `;
79
- export function ConsoleShell({ productLabel, base, sections, crumbs, searchPlaceholder, authOrigin = "https://auth.xeonr.io", docsHref, wide, fill, onEnableProduct, account: accountConfig, children, }) {
130
+ export function ConsoleShell({ productLabel, base, sections, crumbs, searchPlaceholder, authOrigin = "https://auth.xeonr.io", docsHref, wide, fill, onEnableProduct, account: accountConfig, scope = "team", scopes, can, organisation, roleLabel, context, activeSection, onContextChange, carryQuery, baseFor, onScopeChange, sidebar = "expanded", counts, docsLabel, toolbar, dock, children, }) {
80
131
  const c = useConsoleMaybe();
132
+ const { pathname, search } = useLocation();
133
+ const carried = pickSearch(search, carryQuery ?? []);
134
+ const narrow = useNarrow();
135
+ // The toggle is remembered per product, and separately for workspace
136
+ // screens when the default is "auto", so collapsing a workspace does not
137
+ // collapse every settings page.
138
+ const collapseKey = `xnr:sidebar:${c?.product ?? ""}${sidebar === "auto" && fill ? ":fill" : ""}`;
139
+ const [choice, setChoice] = useState(() => readChoice(collapseKey));
140
+ useEffect(() => setChoice(readChoice(collapseKey)), [collapseKey]);
141
+ const collapsed = !narrow && (choice ?? (sidebar === "collapsed" || (sidebar === "auto" && !!fill)));
142
+ const toggleCollapse = useCallback(() => {
143
+ const next = !collapsed;
144
+ setChoice(next);
145
+ try {
146
+ localStorage.setItem(collapseKey, next ? "collapsed" : "expanded");
147
+ }
148
+ catch {
149
+ /* private mode: the toggle still works for this page */
150
+ }
151
+ }, [collapsed, collapseKey]);
81
152
  const [side, setSide] = useState(false);
153
+ // the phone drawer closes on Escape, like any other overlay
154
+ useEffect(() => {
155
+ if (!side)
156
+ return;
157
+ const onKey = (e) => {
158
+ if (e.key === "Escape" && !e.defaultPrevented)
159
+ setSide(false);
160
+ };
161
+ window.addEventListener("keydown", onKey);
162
+ return () => window.removeEventListener("keydown", onKey);
163
+ }, [side]);
82
164
  const [palette, setPalette] = useState(false);
83
165
  const [launcher, setLauncher] = useState(false);
84
166
  const [account, setAccount] = useState(false);
85
167
  const closeAccount = useCallback(() => setAccount(false), []);
168
+ const toggleRef = useRef(toggleCollapse);
169
+ toggleRef.current = toggleCollapse;
86
170
  useEffect(() => {
87
171
  const on = (e) => {
88
172
  if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k") {
89
173
  e.preventDefault();
90
174
  setPalette((p) => !p);
91
175
  }
176
+ if ((e.metaKey || e.ctrlKey) && e.key === "\\") {
177
+ e.preventDefault();
178
+ toggleRef.current();
179
+ }
92
180
  };
93
181
  window.addEventListener("keydown", on);
94
182
  return () => window.removeEventListener("keydown", on);
@@ -96,11 +184,68 @@ export function ConsoleShell({ productLabel, base, sections, crumbs, searchPlace
96
184
  if (!c) {
97
185
  return (_jsxs(_Fragment, { children: [_jsx(Stripe, {}), _jsxs(SkeletonFrame, { "aria-busy": "true", "aria-label": "Loading console", children: [_jsx("div", {}), _jsxs("div", { children: [_jsx(Skeleton, { "$h": "56px", "$r": "12px" }), Array.from({ length: 6 }).map((_, i) => _jsx(Skeleton, { "$h": "34px", "$r": "8px" }, i))] }), _jsxs("div", { children: [_jsx(Skeleton, { "$h": "28px", "$w": "260px" }), _jsx(Skeleton, { "$h": "160px", "$r": "14px" }), _jsx(Skeleton, { "$h": "320px", "$r": "14px" })] })] })] }));
98
186
  }
99
- const teamCrumb = c.activeTeam ? [{ label: c.activeTeam.name || c.activeTeam.slug }] : [];
100
- const layoutCrumbs = [...teamCrumb, { label: productLabel, href: base }, ...(crumbs ?? [])];
101
- return (_jsx(CrumbProvider, { children: (published) => {
102
- const allCrumbs = [...layoutCrumbs, ...published];
103
- return (_jsxs(_Fragment, { children: [_jsx(Stripe, {}), _jsxs(Frame, { children: [_jsx(ScopeRail, { onOpenLauncher: () => setLauncher(true), onOpenAccount: () => setAccount((a) => !a) }), _jsx(SectionSidebar, { open: side, base: base, groups: sections, productLabel: productLabel, authOrigin: authOrigin, docsHref: docsHref, onNavigate: () => setSide(false) }), side ? _jsx(MobileScrim, { onClick: () => setSide(false) }) : null, _jsxs(Main, { "$fill": fill, children: [_jsx(TopBar, { crumbs: allCrumbs, searchPlaceholder: searchPlaceholder ?? `Search ${productLabel.toLowerCase()}, teams, products…`, onBurger: () => setSide((s) => !s), onSearch: () => setPalette(true), notifications: c.invitations.length, onNotifications: () => setAccount(true) }), _jsx(Page, { "$wide": wide, "$fill": fill, children: children })] })] }), palette ? _jsx(CommandPalette, { onClose: () => setPalette(false), base: base, groups: sections, productLabel: productLabel }) : null, launcher ? _jsx(Launcher, { onClose: () => setLauncher(false), authOrigin: authOrigin, onEnable: onEnableProduct }) : null, account ? _jsx(AccountMenu, { onClose: closeAccount, authOrigin: authOrigin, config: accountConfig }) : null] }));
104
- } }));
187
+ return (_jsx(CrumbProvider, { children: (published) => (_jsx(ScreenProvider, { children: (screen) => {
188
+ const effScope = screen.scope ?? scope;
189
+ // The one answer to "which section is current": a screen's
190
+ // useActiveSection, else the layout's activeSection, else the URL.
191
+ const active = resolveActive(sections, pathname, base, screen.section ?? activeSection);
192
+ const current = context ? currentContext(context, screen.context) : { state: "none" };
193
+ const sectionPath = context ? sectionPathOf(sections, active, current.state === "item" ? current.item : undefined) : undefined;
194
+ const config = {
195
+ scope: effScope,
196
+ scopes: scopes ?? {},
197
+ can,
198
+ organisation,
199
+ roleLabel,
200
+ productLabel,
201
+ authOrigin,
202
+ context,
203
+ currentContext: current,
204
+ sectionPath,
205
+ onContextChange,
206
+ screenTeam: screen.team,
207
+ carried,
208
+ onScopeChange,
209
+ collapsed,
210
+ counts,
211
+ closeDrawer: () => setSide(false),
212
+ placeFor: (team) => {
213
+ // Keep the section under the other team. With a context the
214
+ // context belongs to the old team, so land on the team's root
215
+ // and hand the product the section to map itself.
216
+ const ownPath = active && active.to === undefined && active.href === undefined ? active.path : undefined;
217
+ const newBase = context
218
+ ? scopes?.team
219
+ ? scopeHref(scopes.team, team)
220
+ : undefined
221
+ : (baseFor?.(team) ?? swapTeamBase(base, c.activeTeam?.slug, team.slug));
222
+ const suggested = newBase === undefined ? "" : withCarry(context ? newBase : joinPath(newBase, ownPath), carried);
223
+ return { sectionKey: active?.key, sectionPath: context ? sectionPath : ownPath, search: carried, suggested };
224
+ },
225
+ };
226
+ // The trail starts with the scope — the page's team, the person, or
227
+ // the organisation, never a team the page does not have — and is
228
+ // derived from the same sources that light the sidebar.
229
+ const pageTeamName = screen.team === null ? undefined : typeof screen.team === "string" ? (c.teams.find((t) => t.slug === screen.team)?.name ?? screen.team) : screen.team ? (screen.team.name ?? screen.team.slug) : c.pageTeam ? c.pageTeam.name || c.pageTeam.slug : undefined;
230
+ const scopeCrumb = effScope === "personal"
231
+ ? { label: "Personal", ...(c.homeRoot ? { href: `${c.homeRoot}/activity` } : {}) }
232
+ : effScope === "organisation"
233
+ ? { label: organisation?.name ?? scopes?.organisation?.label ?? "Organisation", ...(c.homeRoot ? { href: c.homeRoot } : {}) }
234
+ : pageTeamName
235
+ ? { label: pageTeamName, ...(c.product !== "home" && c.homeHref !== "/" ? { href: c.homeHref } : {}) }
236
+ : undefined;
237
+ const scopeEntry = scopes?.[effScope];
238
+ const productCrumb = { label: productLabel, href: scopeEntry ? scopeHref(scopeEntry, c.activeTeam) : base || "/" };
239
+ const contextCrumb = current.state === "item" && current.item.href ? { label: current.item.label, href: current.item.href } : undefined;
240
+ const sectionCrumb = active && active.crumb !== null
241
+ ? {
242
+ label: active.crumb ?? active.label,
243
+ href: itemTarget(active, base).href,
244
+ index: active.path === "" && active.to === undefined && active.href === undefined,
245
+ }
246
+ : undefined;
247
+ const allCrumbs = deriveCrumbs({ scope: scopeCrumb, product: productCrumb, context: contextCrumb, section: sectionCrumb, layout: crumbs, published }).map((x) => x.href ? { ...x, href: withCarry(x.href, carried) } : x);
248
+ return (_jsxs(ShellConfigProvider, { value: config, children: [_jsx(Stripe, {}), _jsxs(Frame, { children: [_jsx(ScopeRail, { onOpenLauncher: () => setLauncher(true), onOpenAccount: () => setAccount((a) => !a) }), _jsx(SectionSidebar, { open: side, base: base, groups: sections, activeKey: active?.key, docsHref: docsHref, docsLabel: docsLabel, onToggleCollapse: toggleCollapse, onNavigate: () => setSide(false) }), side ? _jsx(MobileScrim, { onClick: () => setSide(false) }) : null, _jsxs(Main, { "$fill": fill, children: [_jsx(TopBar, { crumbs: allCrumbs, searchPlaceholder: searchPlaceholder ?? `Search ${productLabel.toLowerCase()}, teams, products…`, onBurger: () => setSide((s) => !s), onSearch: () => setPalette(true), notifications: c.invitations.length, onNotifications: () => setAccount(true) }), toolbar ? _jsx(Toolbar, { children: toolbar }) : null, _jsx(Page, { "$wide": wide, "$fill": fill, children: children })] }), dock ? _jsx(Dock, { "aria-label": "Dock", children: dock }) : null] }), palette ? _jsx(CommandPalette, { onClose: () => setPalette(false), base: base, groups: sections, productLabel: productLabel, activeKey: active?.key }) : null, launcher ? _jsx(Launcher, { onClose: () => setLauncher(false), authOrigin: authOrigin, onEnable: onEnableProduct }) : null, account ? _jsx(AccountMenu, { onClose: closeAccount, authOrigin: authOrigin, config: accountConfig }) : null] }));
249
+ } })) }));
105
250
  }
106
251
  //# sourceMappingURL=ConsoleShell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleShell.js","sourceRoot":"","sources":["../src/ConsoleShell.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConsoleShell.js","sourceRoot":"","sources":["../src/ConsoleShell.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function ContextRow(): import("react").JSX.Element;
2
+ //# sourceMappingURL=ContextRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextRow.d.ts","sourceRoot":"","sources":["../src/ContextRow.tsx"],"names":[],"mappings":"AAgJA,wBAAgB,UAAU,gCAmMzB"}
@@ -0,0 +1,235 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
+ import styled from "styled-components";
4
+ import { useNavigate } from "react-router-dom";
5
+ import { Icon, Popover, v } from "@xeonr/platform-ui";
6
+ import { useConsole } from "./ConsoleProvider.js";
7
+ import { contextHref, filterItems, orderItems, pushRecent } from "./context.js";
8
+ import { withCarry } from "./place.js";
9
+ import { isSameOrigin } from "./origin.js";
10
+ import { satisfies } from "./scope.js";
11
+ import { useShellConfig } from "./shellConfig.js";
12
+ // The second context, as one 34px row attached under the scope card: a kicker,
13
+ // the current item, a chevron. It is text, never the brand fill — the only
14
+ // filled row in the sidebar is the page you are on — so "the scope I am in"
15
+ // and "the page I am on" cannot look alike. Fourteen projects or forty
16
+ // applications cost this one row; the list lives in the popover.
17
+ const Row = styled.button `
18
+ width: 100%;
19
+ height: 34px;
20
+ display: flex; align-items: center; gap: 8px;
21
+ padding: 0 10px;
22
+ margin-top: -1px;
23
+ border: 1px solid ${v.line2};
24
+ border-radius: 0 0 ${v.rCard} ${v.rCard};
25
+ background: ${v.surface2};
26
+ color: ${v.text};
27
+ text-align: left;
28
+ cursor: pointer;
29
+ &:hover { border-color: ${v.brand55}; }
30
+ &:focus-visible { outline: none; box-shadow: ${v.ring}; }
31
+ `;
32
+ const CompactRow = styled.button `
33
+ width: 40px; height: 30px;
34
+ margin: 6px auto 0;
35
+ display: grid; place-items: center;
36
+ border-radius: ${v.rCtl};
37
+ border: 1px dashed ${v.line2};
38
+ background: transparent;
39
+ color: ${v.text};
40
+ font-size: 10px; font-weight: 700;
41
+ cursor: pointer;
42
+ &:hover { border-color: ${v.brand55}; }
43
+ `;
44
+ const Kicker = styled.span `
45
+ font-size: 9.5px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
46
+ color: ${v.faint}; flex: none;
47
+ `;
48
+ const Name = styled.span `
49
+ flex: 1 1 auto; min-width: 0;
50
+ font-size: 12.5px; font-weight: 600;
51
+ color: ${(p) => (p.$muted ? v.muted : v.text)};
52
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
53
+ `;
54
+ const Skeleton = styled.span `
55
+ flex: 1 1 auto; height: 10px; border-radius: 4px; background: ${v.hover};
56
+ `;
57
+ const Chev = styled.span `color: ${v.faint}; flex: none; display: grid;`;
58
+ const Search = styled.input `
59
+ margin: 8px 8px 4px;
60
+ height: 30px;
61
+ padding: 0 10px;
62
+ border-radius: ${v.rCtl};
63
+ border: 1px solid ${v.fieldLine};
64
+ background: ${v.field};
65
+ color: ${v.text};
66
+ font: inherit; font-size: 12.5px;
67
+ &:focus { outline: none; border-color: ${v.brand55}; }
68
+ `;
69
+ const List = styled.div `
70
+ padding: 4px 6px 6px;
71
+ display: flex; flex-direction: column; gap: 1px;
72
+ overflow-y: auto;
73
+ max-height: 320px;
74
+ `;
75
+ const Label = styled.div `
76
+ font-size: 10.5px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
77
+ color: ${v.faint}; padding: 8px 8px 4px;
78
+ `;
79
+ const Option = styled.button `
80
+ display: flex; align-items: center; gap: 10px;
81
+ width: 100%; text-align: left;
82
+ padding: 7px 8px;
83
+ border-radius: ${v.rCtl};
84
+ border: 0;
85
+ font: inherit; font-size: 13px;
86
+ color: ${v.text};
87
+ background: ${(p) => (p.$on ? v.brand12 : p.$hot ? v.hover : "transparent")};
88
+ cursor: pointer;
89
+ &:disabled { opacity: 0.55; cursor: default; }
90
+ .txt { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
91
+ .txt b { font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
92
+ .txt span { font-size: 11px; color: ${v.faint}; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
93
+ small { margin-left: auto; color: ${v.faint}; font-size: 11px; font-variant-numeric: tabular-nums; }
94
+ `;
95
+ const Foot = styled.div `
96
+ border-top: 1px solid ${v.line};
97
+ padding: 6px;
98
+ display: flex; flex-direction: column; gap: 1px;
99
+ `;
100
+ const FootItem = styled.button `
101
+ display: flex; align-items: center; gap: 10px;
102
+ width: 100%; text-align: left;
103
+ padding: 7px 8px;
104
+ border: 0; border-radius: ${v.rCtl};
105
+ background: transparent;
106
+ font: inherit; font-size: 13px;
107
+ color: ${v.muted};
108
+ cursor: pointer;
109
+ &:hover { background: ${v.hover}; color: ${v.text}; }
110
+ svg { width: 16px; font-size: 13px; }
111
+ `;
112
+ const Empty = styled.div `font-size: 12px; color: ${v.faint}; padding: 8px 10px;`;
113
+ function readRecent(key) {
114
+ try {
115
+ const raw = localStorage.getItem(key);
116
+ const v = raw ? JSON.parse(raw) : [];
117
+ return Array.isArray(v) ? v.filter((x) => typeof x === "string") : [];
118
+ }
119
+ catch {
120
+ return [];
121
+ }
122
+ }
123
+ function writeRecent(key, ids) {
124
+ try {
125
+ localStorage.setItem(key, JSON.stringify(ids));
126
+ }
127
+ catch {
128
+ /* private mode: Recent is a convenience */
129
+ }
130
+ }
131
+ export function ContextRow() {
132
+ const c = useConsole();
133
+ const cfg = useShellConfig();
134
+ const navigate = useNavigate();
135
+ const ctx = cfg.context;
136
+ const current = cfg.currentContext;
137
+ const ref = useRef(null);
138
+ const closedAt = useRef(0);
139
+ const [anchor, setAnchor] = useState(null);
140
+ const [q, setQ] = useState("");
141
+ const [remote, setRemote] = useState(null);
142
+ const [hot, setHot] = useState(0);
143
+ const recentKey = `xnr:ctx-recent:${c.product}:${ctx.kind}`;
144
+ const [recent, setRecent] = useState(() => readRecent(recentKey));
145
+ const close = useCallback(() => {
146
+ closedAt.current = Date.now();
147
+ setAnchor(null);
148
+ setQ("");
149
+ setRemote(null);
150
+ }, []);
151
+ const toggle = () => {
152
+ if (anchor || Date.now() - closedAt.current < 250)
153
+ return;
154
+ if (ref.current)
155
+ setAnchor(ref.current.getBoundingClientRect());
156
+ };
157
+ // An async directory (auth's applications) searches as you type.
158
+ useEffect(() => {
159
+ if (!anchor || !ctx.search || !q.trim()) {
160
+ setRemote(null);
161
+ return;
162
+ }
163
+ let live = true;
164
+ const t = window.setTimeout(() => {
165
+ void ctx.search(q.trim()).then((r) => live && setRemote(r)).catch(() => live && setRemote([]));
166
+ }, 180);
167
+ return () => {
168
+ live = false;
169
+ window.clearTimeout(t);
170
+ };
171
+ }, [anchor, q, ctx.search]);
172
+ const searchable = ctx.items.length > 6 || !!ctx.search;
173
+ const currentId = current.state === "item" ? current.item.id : null;
174
+ const sections = useMemo(() => {
175
+ if (q.trim())
176
+ return { pinned: [], recent: [], all: remote ?? filterItems(ctx.items, q) };
177
+ return orderItems(ctx.items, ctx.pinned, recent);
178
+ }, [q, remote, ctx.items, ctx.pinned, recent]);
179
+ const flat = [...sections.pinned, ...sections.recent, ...sections.all];
180
+ const pick = (item) => {
181
+ if (item.disabled)
182
+ return;
183
+ const next = pushRecent(recent, item.id);
184
+ setRecent(next);
185
+ writeRecent(recentKey, next);
186
+ const href = withCarry(ctx.hrefFor ? ctx.hrefFor(item, { sectionPath: cfg.sectionPath }) : contextHref(item, cfg.sectionPath), cfg.carried);
187
+ close();
188
+ cfg.closeDrawer();
189
+ cfg.onContextChange?.(item, href);
190
+ if (isSameOrigin(href))
191
+ navigate(href);
192
+ else
193
+ window.location.assign(href);
194
+ };
195
+ const follow = (href) => {
196
+ close();
197
+ cfg.closeDrawer();
198
+ if (isSameOrigin(href))
199
+ navigate(href);
200
+ else
201
+ window.location.assign(href);
202
+ };
203
+ const team = c.pageTeam ?? c.activeTeam;
204
+ const showAll = ctx.all && satisfies(ctx.all.requires, team, c.me, cfg.can);
205
+ const showCreate = ctx.create && satisfies(ctx.create.requires, team, c.me, cfg.can);
206
+ const listId = `ctx-${ctx.kind}-list`;
207
+ const option = (item, idx) => (_jsxs(Option, { id: `${listId}-${item.id}`, type: "button", role: "option", "aria-selected": item.id === currentId, "$on": item.id === currentId, "$hot": idx === hot, disabled: item.disabled, title: item.disabled ? item.disabledReason : undefined, onMouseEnter: () => setHot(idx), onClick: () => pick(item), children: [_jsxs("span", { className: "txt", children: [_jsx("b", { children: item.label }), item.sub ? _jsx("span", { children: item.sub }) : null] }), item.count !== undefined ? _jsx("small", { children: item.count }) : null] }, item.id));
208
+ let n = 0;
209
+ const block = (label, items) => items.length ? (_jsxs("div", { role: "group", "aria-label": label, children: [_jsx(Label, { children: label }), items.map((i) => option(i, n++))] }, label)) : null;
210
+ return (_jsxs(_Fragment, { children: [cfg.collapsed ? (_jsx(CompactRow, { ref: ref, type: "button", role: "combobox", "aria-haspopup": "listbox", "aria-expanded": !!anchor, "aria-label": `${ctx.label}: ${current.state === "item" ? current.item.label : "none chosen"}`, title: `${ctx.label} · ${current.state === "item" ? current.item.label : "none chosen"}`, onClick: toggle, children: current.state === "item" ? current.item.label.slice(0, 2).toUpperCase() : "…" })) : (_jsxs(Row, { ref: ref, type: "button", role: "combobox", "aria-haspopup": "listbox", "aria-expanded": !!anchor, "aria-controls": anchor ? listId : undefined, "aria-label": `${ctx.label}: ${current.state === "item" ? current.item.label : current.state === "pending" ? "loading" : "none chosen"}`, onClick: toggle, children: [_jsx(Kicker, { children: ctx.label }), current.state === "pending" ? _jsx(Skeleton, { "aria-hidden": true }) : _jsx(Name, { "$muted": current.state === "none", children: current.state === "item" ? current.item.label : `Choose a ${ctx.label.toLowerCase()}` }), _jsx(Chev, { children: _jsx(Icon, { name: "chevron-down", size: 12 }) })] })), anchor ? (_jsxs(Popover, { sheet: true, anchor: anchor, onClose: close, label: `Switch ${ctx.label.toLowerCase()}`, width: Math.max(anchor.width, 260), children: [searchable ? (_jsx(Search, { autoFocus: true, value: q, placeholder: `Find a ${ctx.label.toLowerCase()}…`, "aria-controls": listId, "aria-activedescendant": flat[hot] ? `${listId}-${flat[hot].id}` : undefined, onChange: (e) => {
211
+ setQ(e.target.value);
212
+ setHot(0);
213
+ }, onKeyDown: (e) => {
214
+ if (e.key === "ArrowDown") {
215
+ e.preventDefault();
216
+ setHot((h) => Math.min(h + 1, flat.length - 1));
217
+ }
218
+ else if (e.key === "ArrowUp") {
219
+ e.preventDefault();
220
+ setHot((h) => Math.max(h - 1, 0));
221
+ }
222
+ else if (e.key === "Enter" && flat[hot]) {
223
+ e.preventDefault();
224
+ pick(flat[hot]);
225
+ }
226
+ } })) : null, _jsxs(List, { id: listId, role: "listbox", "aria-label": ctx.plural, children: [flat.length === 0 ? _jsx(Empty, { children: q ? `No ${ctx.plural} match.` : `No ${ctx.plural} yet.` }) : null, block("Pinned", sections.pinned), block("Recent", sections.recent), block(q ? "Results" : sections.pinned.length || sections.recent.length ? `All (${ctx.items.length})` : ctx.plural, sections.all)] }), showAll || showCreate ? (_jsxs(Foot, { children: [showAll ? (_jsxs(FootItem, { type: "button", onClick: () => follow(ctx.all.href), children: [_jsx(Icon, { name: "list" }), " ", ctx.all.label] })) : null, showCreate ? (_jsxs(FootItem, { type: "button", onClick: () => {
227
+ if (ctx.create.onClick) {
228
+ close();
229
+ ctx.create.onClick();
230
+ }
231
+ else if (ctx.create.href)
232
+ follow(ctx.create.href);
233
+ }, children: [_jsx(Icon, { name: "add" }), " ", ctx.create.label] })) : null] })) : null] })) : null] }));
234
+ }
235
+ //# sourceMappingURL=ContextRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextRow.js","sourceRoot":"","sources":["../src/ContextRow.tsx"],"names":[],"mappings":"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"}
package/dist/Gate.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ import type { ReactNode } from "react";
2
+ import type { Requires } from "./nav.ts";
3
+ export declare function Gate({ requires, section, what, manageHref, children }: {
4
+ requires: Requires;
5
+ /** the section to keep lit (its NavItem key) */
6
+ section?: string | undefined;
7
+ /** what the page is, for the message: "API tokens" */
8
+ what: string;
9
+ /** where the role is granted; default the console home's members page */
10
+ manageHref?: string | undefined;
11
+ children: ReactNode;
12
+ }): import("react").JSX.Element;
13
+ /**
14
+ * The common entity screen in one place: publishes its crumb (a name, never
15
+ * an id), keeps its section lit, and lays out header, strip and body.
16
+ */
17
+ export declare function EntityScreen({ crumb, crumbHref, section, header, tabs, children }: {
18
+ crumb: ReactNode | undefined;
19
+ crumbHref?: string | undefined;
20
+ section?: string | undefined;
21
+ header: ReactNode;
22
+ tabs?: ReactNode | undefined;
23
+ children: ReactNode;
24
+ }): import("react").JSX.Element;
25
+ //# sourceMappingURL=Gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gate.d.ts","sourceRoot":"","sources":["../src/Gate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAazC,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;IACtE,QAAQ,EAAE,QAAQ,CAAC;IACnB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAeA;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IAClF,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAUA"}
package/dist/Gate.js ADDED
@@ -0,0 +1,38 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Forbidden } from "@xeonr/platform-ui";
3
+ import { useConsole } from "./ConsoleProvider.js";
4
+ import { useShellConfig } from "./shellConfig.js";
5
+ import { useActiveSection } from "./screen.js";
6
+ import { useCrumb } from "./crumb.js";
7
+ import { satisfies } from "./scope.js";
8
+ // The route half of `requires`: the sidebar hides an item the caller may not
9
+ // use, and this keeps a deep link to it honest — the section stays lit and the
10
+ // page says which role it needs, instead of a silent redirect or a form the
11
+ // API will refuse. Same predicate as the sidebar (ConsoleShell `can`).
12
+ function roleWords(requires) {
13
+ if (requires === "org:admin")
14
+ return "an organisation administrator";
15
+ if (requires === "team:owner")
16
+ return "owner";
17
+ return requires;
18
+ }
19
+ export function Gate({ requires, section, what, manageHref, children }) {
20
+ const c = useConsole();
21
+ const cfg = useShellConfig();
22
+ const team = c.pageTeam ?? c.activeTeam;
23
+ const ok = satisfies(requires, team, c.me, cfg.can);
24
+ useActiveSection(ok ? undefined : section);
25
+ if (ok)
26
+ return _jsx(_Fragment, { children: children });
27
+ return (_jsx(Forbidden, { what: what, role: roleWords(requires), team: team?.name || team?.slug, manageHref: manageHref ?? (c.homeHref !== "/" ? `${c.homeHref}/members` : undefined) }));
28
+ }
29
+ /**
30
+ * The common entity screen in one place: publishes its crumb (a name, never
31
+ * an id), keeps its section lit, and lays out header, strip and body.
32
+ */
33
+ export function EntityScreen({ crumb, crumbHref, section, header, tabs, children }) {
34
+ useCrumb(crumb, crumbHref);
35
+ useActiveSection(section);
36
+ return (_jsxs(_Fragment, { children: [header, tabs, _jsx("div", { style: { marginTop: 16 }, children: children })] }));
37
+ }
38
+ //# sourceMappingURL=Gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gate.js","sourceRoot":"","sources":["../src/Gate.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAc,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,uEAAuE;AAEvE,SAAS,SAAS,CAAC,QAAkB;IACnC,IAAI,QAAQ,KAAK,WAAW;QAAE,OAAO,+BAA+B,CAAC;IACrE,IAAI,QAAQ,KAAK,YAAY;QAAE,OAAO,OAAO,CAAC;IAC9C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EASnE;IACC,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC;IACxC,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACpD,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,EAAE;QAAE,OAAO,4BAAG,QAAQ,GAAI,CAAC;IAC/B,OAAO,CACL,KAAC,SAAS,IACR,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,EACzB,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAC9B,UAAU,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,GACpF,CACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAO/E;IACC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3B,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1B,OAAO,CACL,8BACG,MAAM,EACN,IAAI,EACL,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAAG,QAAQ,GAAO,IAC9C,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function ScopeCard(): import("react").JSX.Element;
2
+ /** @deprecated the card is a ScopeCard from 0.5; in team scope it is this card. */
3
+ export declare const TeamCard: typeof ScopeCard;
4
+ //# sourceMappingURL=ScopeCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeCard.d.ts","sourceRoot":"","sources":["../src/ScopeCard.tsx"],"names":[],"mappings":"AAkIA,wBAAgB,SAAS,gCAiMxB;AAED,mFAAmF;AACnF,eAAO,MAAM,QAAQ,kBAAY,CAAC"}