@xeonr/console-shell 0.4.1 → 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.
- package/dist/CommandPalette.d.ts +3 -2
- package/dist/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette.js +78 -10
- package/dist/CommandPalette.js.map +1 -1
- package/dist/ConsoleProvider.d.ts +39 -4
- package/dist/ConsoleProvider.d.ts.map +1 -1
- package/dist/ConsoleProvider.js +19 -3
- package/dist/ConsoleProvider.js.map +1 -1
- package/dist/ConsoleShell.d.ts +63 -3
- package/dist/ConsoleShell.d.ts.map +1 -1
- package/dist/ConsoleShell.js +142 -8
- package/dist/ConsoleShell.js.map +1 -1
- package/dist/ContextRow.d.ts +2 -0
- package/dist/ContextRow.d.ts.map +1 -0
- package/dist/ContextRow.js +235 -0
- package/dist/ContextRow.js.map +1 -0
- package/dist/Gate.d.ts +25 -0
- package/dist/Gate.d.ts.map +1 -0
- package/dist/Gate.js +38 -0
- package/dist/Gate.js.map +1 -0
- package/dist/ScopeCard.d.ts +4 -0
- package/dist/ScopeCard.d.ts.map +1 -0
- package/dist/ScopeCard.js +228 -0
- package/dist/ScopeCard.js.map +1 -0
- package/dist/ScopeRail.d.ts.map +1 -1
- package/dist/ScopeRail.js +43 -2
- package/dist/ScopeRail.js.map +1 -1
- package/dist/SectionSidebar.d.ts +6 -4
- package/dist/SectionSidebar.d.ts.map +1 -1
- package/dist/SectionSidebar.js +68 -19
- package/dist/SectionSidebar.js.map +1 -1
- package/dist/TopBar.d.ts.map +1 -1
- package/dist/TopBar.js +16 -2
- package/dist/TopBar.js.map +1 -1
- package/dist/context.d.ts +82 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +65 -0
- package/dist/context.js.map +1 -0
- package/dist/crumb.d.ts +9 -0
- package/dist/crumb.d.ts.map +1 -1
- package/dist/crumb.js +20 -2
- package/dist/crumb.js.map +1 -1
- package/dist/crumbs.d.ts +19 -0
- package/dist/crumbs.d.ts.map +1 -0
- package/dist/crumbs.js +43 -0
- package/dist/crumbs.js.map +1 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/links.d.ts +5 -4
- package/dist/links.d.ts.map +1 -1
- package/dist/links.js +5 -15
- package/dist/links.js.map +1 -1
- package/dist/nav.d.ts +66 -4
- package/dist/nav.d.ts.map +1 -1
- package/dist/nav.js +99 -2
- package/dist/nav.js.map +1 -1
- package/dist/origin.d.ts +2 -0
- package/dist/origin.d.ts.map +1 -0
- package/dist/origin.js +14 -0
- package/dist/origin.js.map +1 -0
- package/dist/place.d.ts +26 -0
- package/dist/place.d.ts.map +1 -0
- package/dist/place.js +53 -0
- package/dist/place.js.map +1 -0
- package/dist/scope.d.ts +35 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +42 -0
- package/dist/scope.js.map +1 -0
- package/dist/screen.d.ts +38 -0
- package/dist/screen.d.ts.map +1 -0
- package/dist/screen.js +79 -0
- package/dist/screen.js.map +1 -0
- package/dist/shellConfig.d.ts +50 -0
- package/dist/shellConfig.d.ts.map +1 -0
- package/dist/shellConfig.js +24 -0
- package/dist/shellConfig.js.map +1 -0
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -4
- package/dist/TeamCard.d.ts +0 -5
- package/dist/TeamCard.d.ts.map +0 -1
- package/dist/TeamCard.js +0 -152
- 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
|
package/dist/TeamCard.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TeamCard.js","sourceRoot":"","sources":["../src/TeamCard.tsx"],"names":[],"mappings":"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"}
|