@xeonr/console-shell 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/CommandPalette.d.ts +3 -2
  2. package/dist/CommandPalette.d.ts.map +1 -1
  3. package/dist/CommandPalette.js +78 -10
  4. package/dist/CommandPalette.js.map +1 -1
  5. package/dist/ConsoleProvider.d.ts +39 -4
  6. package/dist/ConsoleProvider.d.ts.map +1 -1
  7. package/dist/ConsoleProvider.js +19 -3
  8. package/dist/ConsoleProvider.js.map +1 -1
  9. package/dist/ConsoleShell.d.ts +63 -3
  10. package/dist/ConsoleShell.d.ts.map +1 -1
  11. package/dist/ConsoleShell.js +142 -8
  12. package/dist/ConsoleShell.js.map +1 -1
  13. package/dist/ContextRow.d.ts +2 -0
  14. package/dist/ContextRow.d.ts.map +1 -0
  15. package/dist/ContextRow.js +235 -0
  16. package/dist/ContextRow.js.map +1 -0
  17. package/dist/Gate.d.ts +25 -0
  18. package/dist/Gate.d.ts.map +1 -0
  19. package/dist/Gate.js +38 -0
  20. package/dist/Gate.js.map +1 -0
  21. package/dist/ScopeCard.d.ts +4 -0
  22. package/dist/ScopeCard.d.ts.map +1 -0
  23. package/dist/ScopeCard.js +228 -0
  24. package/dist/ScopeCard.js.map +1 -0
  25. package/dist/ScopeRail.d.ts.map +1 -1
  26. package/dist/ScopeRail.js +42 -1
  27. package/dist/ScopeRail.js.map +1 -1
  28. package/dist/SectionSidebar.d.ts +6 -4
  29. package/dist/SectionSidebar.d.ts.map +1 -1
  30. package/dist/SectionSidebar.js +68 -23
  31. package/dist/SectionSidebar.js.map +1 -1
  32. package/dist/TopBar.d.ts.map +1 -1
  33. package/dist/TopBar.js +16 -2
  34. package/dist/TopBar.js.map +1 -1
  35. package/dist/context.d.ts +82 -0
  36. package/dist/context.d.ts.map +1 -0
  37. package/dist/context.js +65 -0
  38. package/dist/context.js.map +1 -0
  39. package/dist/crumb.d.ts +9 -0
  40. package/dist/crumb.d.ts.map +1 -1
  41. package/dist/crumb.js +20 -2
  42. package/dist/crumb.js.map +1 -1
  43. package/dist/crumbs.d.ts +19 -0
  44. package/dist/crumbs.d.ts.map +1 -0
  45. package/dist/crumbs.js +43 -0
  46. package/dist/crumbs.js.map +1 -0
  47. package/dist/index.d.ts +10 -2
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +10 -2
  50. package/dist/index.js.map +1 -1
  51. package/dist/links.d.ts +5 -4
  52. package/dist/links.d.ts.map +1 -1
  53. package/dist/links.js +5 -15
  54. package/dist/links.js.map +1 -1
  55. package/dist/nav.d.ts +66 -4
  56. package/dist/nav.d.ts.map +1 -1
  57. package/dist/nav.js +99 -2
  58. package/dist/nav.js.map +1 -1
  59. package/dist/origin.d.ts +2 -0
  60. package/dist/origin.d.ts.map +1 -0
  61. package/dist/origin.js +14 -0
  62. package/dist/origin.js.map +1 -0
  63. package/dist/place.d.ts +26 -0
  64. package/dist/place.d.ts.map +1 -0
  65. package/dist/place.js +53 -0
  66. package/dist/place.js.map +1 -0
  67. package/dist/scope.d.ts +35 -0
  68. package/dist/scope.d.ts.map +1 -0
  69. package/dist/scope.js +42 -0
  70. package/dist/scope.js.map +1 -0
  71. package/dist/screen.d.ts +38 -0
  72. package/dist/screen.d.ts.map +1 -0
  73. package/dist/screen.js +79 -0
  74. package/dist/screen.js.map +1 -0
  75. package/dist/shellConfig.d.ts +50 -0
  76. package/dist/shellConfig.d.ts.map +1 -0
  77. package/dist/shellConfig.js +24 -0
  78. package/dist/shellConfig.js.map +1 -0
  79. package/dist/types.d.ts +3 -1
  80. package/dist/types.d.ts.map +1 -1
  81. package/package.json +6 -4
  82. package/dist/TeamCard.d.ts +0 -5
  83. package/dist/TeamCard.d.ts.map +0 -1
  84. package/dist/TeamCard.js +0 -152
  85. package/dist/TeamCard.js.map +0 -1
package/dist/TeamCard.js DELETED
@@ -1,152 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useEffect, useRef, useState } from "react";
3
- import styled from "styled-components";
4
- import { Icon, v } from "@xeonr/platform-ui";
5
- import { useConsole } from "./ConsoleProvider.js";
6
- import { ShellLink } from "./links.js";
7
- // The team switcher card at the top of the section sidebar. It belongs to the
8
- // shell; the sections under it belong to the product. Team management itself
9
- // lives in the console home (CP and Functions each built and deleted their
10
- // own), so the menu links out for that and only *switches* here.
11
- //
12
- // The list is in two parts. A team that has not enabled this product cannot be
13
- // switched into — the product holds no binding for it — but hiding it is worse
14
- // than showing it: to someone who sees that team in every other console, a
15
- // switcher that omits it looks broken. So those teams appear under their own
16
- // heading and lead to the console home's enable prompt, and a team the caller
17
- // could not enable it for anyway is shown without being offered.
18
- const Card = styled.button `
19
- width: 100%;
20
- text-align: left;
21
- display: flex;
22
- align-items: center;
23
- gap: 10px;
24
- padding: 10px;
25
- border-radius: ${v.rCard};
26
- background: ${v.surface};
27
- border: 1px solid ${v.line2};
28
- box-shadow: ${v.elev};
29
- color: ${v.text};
30
- cursor: pointer;
31
- transition: border-color 0.14s ease;
32
- &:hover { border-color: ${v.brand55}; }
33
- `;
34
- const Tile = styled.span `
35
- width: 34px; height: 34px; flex: none;
36
- border-radius: 9px;
37
- background: ${(p) => (p.$src ? `url(${p.$src}) center/cover` : v.grad)};
38
- color: ${v.onBrand};
39
- display: grid; place-items: center;
40
- font-weight: 700; font-size: 13px;
41
- `;
42
- const Text = styled.span `
43
- display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto;
44
- b { font-size: 13px; font-weight: 600; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
45
- span { font-size: 11px; color: ${v.faint}; line-height: 1.3; text-transform: capitalize; }
46
- `;
47
- const Chev = styled.span `color: ${v.faint}; flex: none; display: grid;`;
48
- const Menu = styled.div `
49
- position: absolute;
50
- left: 10px; right: 10px; top: 66px;
51
- z-index: ${v.zPop};
52
- background: ${v.surface};
53
- border: 1px solid ${v.line2};
54
- border-radius: ${v.rCard};
55
- box-shadow: ${v.elev};
56
- padding: 6px;
57
- display: flex; flex-direction: column; gap: 2px;
58
- `;
59
- const MenuLabel = styled.div `
60
- font-size: 10.5px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
61
- color: ${v.faint}; padding: 8px 8px 4px;
62
- `;
63
- const Item = styled.button `
64
- display: flex; align-items: center; gap: 10px;
65
- width: 100%; text-align: left;
66
- padding: 7px 8px;
67
- border-radius: ${v.rCtl};
68
- font-size: 13px;
69
- color: ${v.text};
70
- background: ${(p) => (p.$on ? v.brand12 : "transparent")};
71
- cursor: pointer;
72
- &:hover { background: ${(p) => (p.$on ? v.brand12 : v.hover)}; }
73
- small { margin-left: auto; color: ${v.faint}; font-size: 11px; text-transform: capitalize; }
74
- `;
75
- const ItemLink = styled(ShellLink) `
76
- display: flex; align-items: center; gap: 10px;
77
- padding: 7px 8px;
78
- border-radius: ${v.rCtl};
79
- font-size: 13px;
80
- color: ${v.muted};
81
- text-decoration: none;
82
- &:hover { background: ${v.hover}; color: ${v.text}; }
83
- svg { margin-left: auto; font-size: 11px; }
84
- `;
85
- const Hair = styled.div `height: 1px; background: ${v.line}; margin: 4px 0;`;
86
- const Warn = styled.div `
87
- font-size: 11.5px; line-height: 1.4;
88
- color: ${v.warning};
89
- background: ${v.warningBg};
90
- border-radius: ${v.rCtl};
91
- padding: 8px 10px;
92
- margin: 2px 0;
93
- word-break: break-word;
94
- `;
95
- const Empty = styled.div `font-size: 12px; color: ${v.faint}; padding: 8px 10px;`;
96
- // An unentitled team, and one the caller cannot act on: same 0.55/faint the kit
97
- // uses for any disabled control.
98
- const OffItem = styled(Item) `
99
- opacity: ${(p) => (p.$mute ? 0.55 : 1)};
100
- cursor: ${(p) => (p.$mute ? "default" : "pointer")};
101
- &:hover { background: ${(p) => (p.$mute ? "transparent" : v.hover)}; }
102
- `;
103
- function initials(name) {
104
- return name.split(/[\s-]+/).map((s) => s[0] ?? "").join("").slice(0, 2).toUpperCase();
105
- }
106
- export function TeamCard({ productLabel, authOrigin }) {
107
- const c = useConsole();
108
- const [open, setOpen] = useState(false);
109
- const ref = useRef(null);
110
- useEffect(() => {
111
- if (!open)
112
- return;
113
- const onDoc = (e) => {
114
- if (ref.current && !ref.current.contains(e.target))
115
- setOpen(false);
116
- };
117
- const onKey = (e) => {
118
- if (e.key === "Escape")
119
- setOpen(false);
120
- };
121
- document.addEventListener("mousedown", onDoc);
122
- document.addEventListener("keydown", onKey);
123
- return () => {
124
- document.removeEventListener("mousedown", onDoc);
125
- document.removeEventListener("keydown", onKey);
126
- };
127
- }, [open]);
128
- const t = c.activeTeam;
129
- // `entitled` is optional: a BFF that predates it, or auth's own portal whose
130
- // client cannot know, sends nothing — and those lists only ever contained
131
- // usable teams, so absent means yes.
132
- const usable = c.teams.filter((team) => team.entitled !== false);
133
- const offTeams = c.teams.filter((team) => team.entitled === false);
134
- return (_jsxs("div", { ref: ref, style: { position: "relative" }, children: [_jsxs(Card, { type: "button", "aria-haspopup": "menu", "aria-expanded": open, onClick: () => setOpen((o) => !o), children: [_jsx(Tile, { "$src": t?.avatarUrl, children: t ? initials(t.name || t.slug) : "?" }), _jsxs(Text, { children: [_jsx("b", { children: t ? t.name || t.slug : "Choose a team" }), _jsx("span", { children: t ? `${t.role} · ${productLabel}` : productLabel })] }), _jsx(Chev, { children: _jsx(Icon, { name: "chevron-down", size: 14 }) })] }), open ? (_jsxs(Menu, { role: "menu", children: [_jsx(MenuLabel, { children: "Your teams" }), c.teams.length === 0 ? _jsx(Empty, { children: "You are not in any team yet." }) : null, usable.length === 0 && c.teams.length > 0 ? _jsxs(Empty, { children: ["No team has ", productLabel, " enabled yet."] }) : null, c.teams.length === 0 && c.me.warnings?.length ? c.me.warnings.slice(0, 4).map((w, i) => _jsx(Warn, { children: w }, i)) : null, usable.map((team) => (_jsxs(Item, { role: "menuitemradio", "aria-checked": team.id === t?.id, "$on": team.id === t?.id, onClick: () => {
135
- setOpen(false);
136
- c.setTeam(team.id);
137
- }, children: [_jsx(Tile, { "$src": team.avatarUrl, style: { width: 24, height: 24, fontSize: 10, borderRadius: 7 }, children: initials(team.name || team.slug) }), team.name || team.slug, _jsx("small", { children: team.role })] }, team.id))), offTeams.length > 0 ? (_jsxs(_Fragment, { children: [_jsx(MenuLabel, { children: "Not enabled here" }), offTeams.map((team) => {
138
- const mute = team.canEnable === false;
139
- return (_jsxs(OffItem, { role: "menuitem", "$mute": mute, "aria-disabled": mute, title: mute
140
- ? `${productLabel} is not enabled for this team, and only an owner can enable it`
141
- : `Enable ${productLabel} for this team`, onClick: () => {
142
- if (mute)
143
- return;
144
- setOpen(false);
145
- // Enabling lives on the console home, so go there with the
146
- // product named rather than into a product this team has no
147
- // binding for.
148
- window.location.assign(c.enableHref(c.product, team.slug));
149
- }, children: [_jsx(Tile, { "$src": team.avatarUrl, style: { width: 24, height: 24, fontSize: 10, borderRadius: 7 }, children: initials(team.name || team.slug) }), team.name || team.slug, _jsx("small", { children: mute ? "ask an owner" : "enable" })] }, team.id));
150
- })] })) : null, _jsx(Hair, {}), t ? (_jsxs(ItemLink, { href: `${c.homeHref}/members`, mark: _jsx(Icon, { name: "external" }), onClick: () => setOpen(false), children: [_jsx(Icon, { name: "members" }), " Members & roles"] })) : null, _jsxs(ItemLink, { href: `${authOrigin}/teams?new=1`, mark: _jsx(Icon, { name: "external" }), onClick: () => setOpen(false), children: [_jsx(Icon, { name: "add" }), " New team"] })] })) : null] }));
151
- }
152
- //# sourceMappingURL=TeamCard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamCard.js","sourceRoot":"","sources":["../src/TeamCard.tsx"],"names":[],"mappings":"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"}