@xeonr/console-shell 0.2.0 → 0.2.2
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/ConsoleProvider.d.ts +12 -0
- package/dist/ConsoleProvider.d.ts.map +1 -1
- package/dist/ConsoleProvider.js +29 -18
- package/dist/ConsoleProvider.js.map +1 -1
- package/dist/Launcher.d.ts.map +1 -1
- package/dist/Launcher.js +3 -4
- package/dist/Launcher.js.map +1 -1
- package/dist/ScopeRail.d.ts +1 -0
- package/dist/ScopeRail.d.ts.map +1 -1
- package/dist/ScopeRail.js +49 -4
- package/dist/ScopeRail.js.map +1 -1
- package/dist/TeamCard.d.ts.map +1 -1
- package/dist/TeamCard.js +36 -4
- package/dist/TeamCard.js.map +1 -1
- package/dist/types.d.ts +14 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
import type { ConsoleClient, Invitation, Me, Product, SearchResult, Team } from "./types.ts";
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated There is no pin limit. The rail scrolls instead, so pin as many
|
|
5
|
+
* products as you want. Kept exported because it is part of this package's
|
|
6
|
+
* published surface; it is no longer enforced anywhere.
|
|
7
|
+
*/
|
|
3
8
|
export declare const MAX_PINNED = 6;
|
|
4
9
|
export interface ConsoleState {
|
|
5
10
|
/** registry key of the console mounting the shell; "home" for console.xeonr.io */
|
|
@@ -27,6 +32,13 @@ export interface ConsoleState {
|
|
|
27
32
|
enableProduct(p: Product): Promise<void>;
|
|
28
33
|
/** absolute link into another product for the active team */
|
|
29
34
|
productHref(p: Product, path?: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* The console home for a team, asking it to offer enabling `productKey`.
|
|
37
|
+
* Enabling belongs to the home console, so a product console sends you there
|
|
38
|
+
* rather than into a product the team holds no binding for — which is what a
|
|
39
|
+
* plain productHref would do, and it 404s.
|
|
40
|
+
*/
|
|
41
|
+
enableHref(productKey: string, teamSlug?: string): string;
|
|
30
42
|
/** the console home for the active team (homeOrigin, else a "home" registry entry, else "/") */
|
|
31
43
|
homeHref: string;
|
|
32
44
|
/** federated ⌘K (tier 2); resolves to [] when the client has no search */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleProvider.d.ts","sourceRoot":"","sources":["../src/ConsoleProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7G,OAAO,KAAK,EAAE,aAAa,EAAkB,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAW7G,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,EAAE,CAAC;IACP;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,6DAA6D;IAC7D,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/C,gGAAgG;IAChG,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/C,OAAO,IAAI,IAAI,CAAC;CACjB;AAID,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,oBAAoB,+
|
|
1
|
+
{"version":3,"file":"ConsoleProvider.d.ts","sourceRoot":"","sources":["../src/ConsoleProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7G,OAAO,KAAK,EAAE,aAAa,EAAkB,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAW7G;;;;GAIG;AACH,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,EAAE,CAAC;IACP;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,6DAA6D;IAC7D,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/C;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1D,gGAAgG;IAChG,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/C,OAAO,IAAI,IAAI,CAAC;CACjB;AAID,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,oBAAoB,+BAyL/H;AAED,sFAAsF;AACtF,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAED,wBAAgB,UAAU,IAAI,YAAY,CAIzC"}
|
package/dist/ConsoleProvider.js
CHANGED
|
@@ -9,6 +9,11 @@ import { useTheme } from "@xeonr/platform-ui";
|
|
|
9
9
|
// slug in the URL (the product tells us via `teamSlug`), then the server-held
|
|
10
10
|
// context, then the caller's first team. The product is told about switches
|
|
11
11
|
// via `onTeamChange` and navigates itself; the shell never routes for it.
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated There is no pin limit. The rail scrolls instead, so pin as many
|
|
14
|
+
* products as you want. Kept exported because it is part of this package's
|
|
15
|
+
* published surface; it is no longer enforced anywhere.
|
|
16
|
+
*/
|
|
12
17
|
export const MAX_PINNED = 6;
|
|
13
18
|
const Ctx = createContext(null);
|
|
14
19
|
export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeOrigin, onError, children }) {
|
|
@@ -23,10 +28,8 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
23
28
|
// which is the whole load window.
|
|
24
29
|
//
|
|
25
30
|
// `null` means "not chosen yet, use the registry defaults"; a list means
|
|
26
|
-
// "this is my set",
|
|
27
|
-
//
|
|
28
|
-
// sticks for this session but the defaults return on reload. Closing that
|
|
29
|
-
// needs a tri-state in the BFF; tracked rather than faked here.
|
|
31
|
+
// "this is my set", the empty one included. The BFF carries that distinction
|
|
32
|
+
// from bff v0.1.19, which is what makes unpinning your last product stick.
|
|
30
33
|
const [pins, setPins] = useState(null);
|
|
31
34
|
useEffect(() => {
|
|
32
35
|
let live = true;
|
|
@@ -42,17 +45,17 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
42
45
|
return;
|
|
43
46
|
}
|
|
44
47
|
const m = mr.value;
|
|
45
|
-
const c = cr.status === "fulfilled" ? cr.value : { activeTeam: null, pinnedProducts:
|
|
48
|
+
const c = cr.status === "fulfilled" ? cr.value : { activeTeam: null, pinnedProducts: null, theme: "system" };
|
|
46
49
|
if (cr.status === "rejected")
|
|
47
50
|
onError?.(cr.reason);
|
|
48
51
|
const inv = ir.status === "fulfilled" ? ir.value : [];
|
|
49
52
|
setMe(m);
|
|
50
53
|
setCtx(c);
|
|
51
54
|
setInvitations(inv);
|
|
52
|
-
//
|
|
53
|
-
//
|
|
54
|
-
//
|
|
55
|
-
setPins((cur) => cur ??
|
|
55
|
+
// null from the BFF means nobody has chosen; an array — including an empty
|
|
56
|
+
// one — is a choice. An older BFF always sends an array, so an empty one
|
|
57
|
+
// from it is treated as unset, exactly as it behaved before.
|
|
58
|
+
setPins((cur) => cur ?? c.pinnedProducts ?? null);
|
|
56
59
|
// The server-held theme follows you across hosts; local preference wins
|
|
57
60
|
// only if it was set explicitly on this host.
|
|
58
61
|
if (theme.pref === "system" && c.theme !== "system")
|
|
@@ -70,7 +73,11 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
70
73
|
return me.teams.find((t) => t.slug === teamSlug) ?? null;
|
|
71
74
|
if (ctx?.activeTeam)
|
|
72
75
|
return me.teams.find((t) => t.id === ctx.activeTeam) ?? null;
|
|
73
|
-
|
|
76
|
+
// The list can now include teams this product is not enabled for, so the
|
|
77
|
+
// fallback prefers one that works. Landing a product on an unentitled team
|
|
78
|
+
// by default would render it against a binding that does not exist; an
|
|
79
|
+
// explicit slug or saved context is still honoured, because that is a choice.
|
|
80
|
+
return me.teams.find((t) => t.entitled !== false) ?? me.teams[0] ?? null;
|
|
74
81
|
}, [me, ctx, teamSlug]);
|
|
75
82
|
// `tick` belongs here: refresh() is what a caller invokes after enabling a
|
|
76
83
|
// product, and without it the registry was never re-read — the tile kept its
|
|
@@ -97,7 +104,7 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
97
104
|
if (!t)
|
|
98
105
|
return;
|
|
99
106
|
const prev = ctx?.activeTeam ?? null;
|
|
100
|
-
setCtx((c) => (c ? { ...c, activeTeam: id } : { activeTeam: id, pinnedProducts: pins
|
|
107
|
+
setCtx((c) => (c ? { ...c, activeTeam: id } : { activeTeam: id, pinnedProducts: pins, theme: "system" }));
|
|
101
108
|
void client.setContext({ activeTeam: id }).catch((err) => {
|
|
102
109
|
setCtx((c) => (c ? { ...c, activeTeam: prev } : c));
|
|
103
110
|
onError?.(err);
|
|
@@ -105,14 +112,11 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
105
112
|
onTeamChange?.(t);
|
|
106
113
|
}, [client, ctx, me, onTeamChange, onError, pins]);
|
|
107
114
|
const togglePin = useCallback((key) => {
|
|
115
|
+
// No cap: the rail scrolls its tile list, so pinning a seventh product is
|
|
116
|
+
// not a thing to refuse. The old cap was enforced by disabling the pin
|
|
117
|
+
// button, which just read as another control that did nothing.
|
|
108
118
|
const current = pinned;
|
|
109
119
|
const dropping = current.includes(key);
|
|
110
|
-
if (!dropping && current.length >= MAX_PINNED) {
|
|
111
|
-
// Previously the button was simply disabled, which reads as a dead
|
|
112
|
-
// control. Say what the limit is instead.
|
|
113
|
-
onError?.(new Error(`The rail holds ${MAX_PINNED} products. Unpin one first.`));
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
120
|
const next = dropping ? current.filter((k) => k !== key) : [...current, key];
|
|
117
121
|
setPins(next);
|
|
118
122
|
void client.setContext({ pinnedProducts: next }).catch((err) => {
|
|
@@ -147,6 +151,12 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
147
151
|
return "/";
|
|
148
152
|
return team ? `${origin}/${team}` : origin;
|
|
149
153
|
}, [homeOrigin, products, activeTeam]);
|
|
154
|
+
const enableHref = useCallback((productKey, teamSlug) => {
|
|
155
|
+
const team = teamSlug ?? activeTeam?.slug;
|
|
156
|
+
const origin = homeOrigin ?? products.find((p) => p.key === "home")?.origin ?? "";
|
|
157
|
+
const base = team ? `${origin}/${team}` : origin || "/";
|
|
158
|
+
return `${base}?enable=${encodeURIComponent(productKey)}`;
|
|
159
|
+
}, [homeOrigin, products, activeTeam]);
|
|
150
160
|
const value = useMemo(() => me
|
|
151
161
|
? {
|
|
152
162
|
product,
|
|
@@ -162,11 +172,12 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
162
172
|
togglePin,
|
|
163
173
|
enableProduct,
|
|
164
174
|
productHref,
|
|
175
|
+
enableHref,
|
|
165
176
|
homeHref,
|
|
166
177
|
search: (q) => (client.search ? client.search(q, activeTeam?.id ?? null) : Promise.resolve([])),
|
|
167
178
|
refresh,
|
|
168
179
|
}
|
|
169
|
-
: null, [me, product, activeTeam, products, pinned, invitations, setTeam, togglePin, enableProduct, productHref, homeHref, refresh, client]);
|
|
180
|
+
: null, [me, product, activeTeam, products, pinned, invitations, setTeam, togglePin, enableProduct, productHref, enableHref, homeHref, refresh, client]);
|
|
170
181
|
if (!value)
|
|
171
182
|
return _jsx(Ctx.Provider, { value: null, children: children });
|
|
172
183
|
return _jsx(Ctx.Provider, { value: value, children: children });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleProvider.js","sourceRoot":"","sources":["../src/ConsoleProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC7G,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,EAAE;AACF,0EAA0E;AAC1E,8EAA8E;AAC9E,4EAA4E;AAC5E,0EAA0E;AAE1E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ConsoleProvider.js","sourceRoot":"","sources":["../src/ConsoleProvider.tsx"],"names":[],"mappings":"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"}
|
package/dist/Launcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Launcher.d.ts","sourceRoot":"","sources":["../src/Launcher.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,YAAY,CAAC;AAsH3D,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;CAAE,+
|
|
1
|
+
{"version":3,"file":"Launcher.d.ts","sourceRoot":"","sources":["../src/Launcher.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,YAAY,CAAC;AAsH3D,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;CAAE,+BA4GrJ"}
|
package/dist/Launcher.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useMemo, useState } from "react";
|
|
3
3
|
import styled from "styled-components";
|
|
4
4
|
import { AppButton, Icon, IconButton, StatusPill, v } from "@xeonr/platform-ui";
|
|
5
|
-
import {
|
|
5
|
+
import { useConsole } from "./ConsoleProvider.js";
|
|
6
6
|
// "All products": every registered product grouped by category, with host,
|
|
7
7
|
// blurb, enabled / enable / coming-soon state and a pin toggle for the rail.
|
|
8
8
|
// Registry-driven, so a new product needs no shell change to appear here.
|
|
@@ -140,13 +140,12 @@ export function Launcher({ onClose, authOrigin, onEnable }) {
|
|
|
140
140
|
const half = Math.ceil(groups.length / 2);
|
|
141
141
|
const row = (p) => {
|
|
142
142
|
const pinned = c.pinned.includes(p.key);
|
|
143
|
-
const full = !pinned && c.pinned.length >= MAX_PINNED;
|
|
144
143
|
const href = c.productHref(p);
|
|
145
144
|
return (_jsxs(Row, { "$dim": p.status === "coming_soon", children: [_jsx(Tile, { href: p.status === "live" && p.enabled ? href : undefined, "$c": p.colour, "aria-label": p.name, children: _jsx(Icon, { name: p.icon }) }), _jsxs(Text, { children: [_jsxs("b", { children: [p.status === "live" && p.enabled ? _jsx("a", { href: href, children: p.name }) : p.name, _jsx("code", { children: hostOf(p.origin) })] }), _jsx("span", { children: p.blurb })] }), p.status === "coming_soon" ? (_jsx(StatusPill, { "$tone": "info", children: "Coming soon" })) : p.enabled ? (_jsx(StatusPill, { "$tone": "ok", children: "Enabled" })) : p.canEnable ? (_jsxs("span", { style: { display: "flex", flexDirection: "column", gap: 4, alignItems: "flex-end" }, children: [_jsx(AppButton, { size: "xs", loading: enabling === p.key, onClick: () => void enable(p), children: enabling === p.key ? "Enabling…" : "Enable" }), failed[p.key] ? _jsx(Fail, { children: failed[p.key] }) : null] })) : (
|
|
146
145
|
// Say why rather than only that it is off: only an owner can entitle a
|
|
147
146
|
// team, and some products are not self-serve at all.
|
|
148
|
-
_jsx(StatusPill, { "$tone": "mut", title: "Only a team owner can enable this, and only for a self-serve product", children: "Not enabled" })), _jsx(IconButton, { type: "button", "aria-label": pinned ? `Unpin ${p.name} from the rail` : `Pin ${p.name} to the rail`, "aria-pressed": pinned,
|
|
147
|
+
_jsx(StatusPill, { "$tone": "mut", title: "Only a team owner can enable this, and only for a self-serve product", children: "Not enabled" })), _jsx(IconButton, { type: "button", "aria-label": pinned ? `Unpin ${p.name} from the rail` : `Pin ${p.name} to the rail`, "aria-pressed": pinned, disabled: p.status !== "live", onClick: () => c.togglePin(p.key), style: { color: pinned ? v.brand : v.faint }, children: _jsx(Icon, { name: pinned ? "check" : "pin" }) })] }, p.key));
|
|
149
148
|
};
|
|
150
|
-
return (_jsx(Scrim, { onMouseDown: (e) => e.target === e.currentTarget && onClose(), children: _jsxs(Dialog, { role: "dialog", "aria-modal": "true", "aria-label": "All products", children: [_jsx(Stripe, {}), _jsxs(Head, { children: [_jsxs("div", { children: [_jsx("h2", { children: "All products" }), _jsxs("p", { children: ["What ", _jsx("b", { children: c.activeTeam?.name ?? c.activeTeam?.slug ?? "this team" }), " can use. Pin
|
|
149
|
+
return (_jsx(Scrim, { onMouseDown: (e) => e.target === e.currentTarget && onClose(), children: _jsxs(Dialog, { role: "dialog", "aria-modal": "true", "aria-label": "All products", children: [_jsx(Stripe, {}), _jsxs(Head, { children: [_jsxs("div", { children: [_jsx("h2", { children: "All products" }), _jsxs("p", { children: ["What ", _jsx("b", { children: c.activeTeam?.name ?? c.activeTeam?.slug ?? "this team" }), " can use. Pin any of them to the rail; the rest live here and in \u2318K."] })] }), _jsxs("div", { style: { marginLeft: "auto", display: "flex", gap: 8, alignItems: "center" }, children: [_jsx(Filter, { value: q, onChange: (e) => setQ(e.target.value), placeholder: "Filter products", "aria-label": "Filter products", autoFocus: true }), _jsx(IconButton, { type: "button", "aria-label": "Close", onClick: onClose, children: _jsx(Icon, { name: "close" }) })] })] }), _jsxs(Body, { children: [_jsx(Col, { children: groups.slice(0, half).map((g) => _jsxs(Group, { children: [_jsx(GroupLabel, { children: g.cat }), g.items.map(row)] }, g.cat)) }), _jsx(Col, { children: groups.slice(half).map((g) => _jsxs(Group, { children: [_jsx(GroupLabel, { children: g.cat }), g.items.map(row)] }, g.cat)) })] }), _jsxs(Foot, { children: [_jsx("span", { children: "New products appear here automatically once registered in Auth as a console product and bound to a team." }), c.me.isOrgAdmin ? (_jsxs("a", { href: `${authOrigin}/applications`, children: ["Manage the catalogue ", _jsx(Icon, { name: "external" })] })) : null] })] }) }));
|
|
151
150
|
}
|
|
152
151
|
//# sourceMappingURL=Launcher.js.map
|
package/dist/Launcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Launcher.js","sourceRoot":"","sources":["../src/Launcher.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"Launcher.js","sourceRoot":"","sources":["../src/Launcher.tsx"],"names":[],"mappings":"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"}
|
package/dist/ScopeRail.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export declare const RailButton: import("styled-components/dist/types").IStyledC
|
|
|
3
3
|
}, {
|
|
4
4
|
$on?: boolean | undefined;
|
|
5
5
|
$accent?: string | undefined;
|
|
6
|
+
$off?: boolean | undefined;
|
|
6
7
|
}>> & string;
|
|
7
8
|
export declare function ScopeRail({ onOpenLauncher, onOpenAccount }: {
|
|
8
9
|
onOpenLauncher: () => void;
|
package/dist/ScopeRail.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeRail.d.ts","sourceRoot":"","sources":["../src/ScopeRail.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScopeRail.d.ts","sourceRoot":"","sources":["../src/ScopeRail.tsx"],"names":[],"mappings":"AA2DA,eAAO,MAAM,UAAU;;;UAAoB,OAAO,GAAG,SAAS;cAAY,MAAM,GAAG,SAAS;WAAS,OAAO,GAAG,SAAS;YAmBvH,CAAC;AAqCF,wBAAgB,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE;IAAE,cAAc,EAAE,MAAM,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,IAAI,CAAA;CAAE,+BAkDrH"}
|
package/dist/ScopeRail.js
CHANGED
|
@@ -15,6 +15,23 @@ const Rail = styled.nav `
|
|
|
15
15
|
padding: 12px 0;
|
|
16
16
|
background: ${v.sidebar};
|
|
17
17
|
border-right: 1px solid ${v.line};
|
|
18
|
+
/* The rail itself never scrolls — Home stays at the top and theme/account stay
|
|
19
|
+
at the bottom. Only the product list between them does. */
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
`;
|
|
22
|
+
// Pin as many products as you like; this is what makes that survivable. Only
|
|
23
|
+
// the tiles scroll, so the fixed anchors at either end never move, and the
|
|
24
|
+
// scrollbar is hidden because a 40px-wide one would eat the tiles.
|
|
25
|
+
const Tiles = styled.div `
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
align-items: center;
|
|
29
|
+
gap: 6px;
|
|
30
|
+
min-height: 0;
|
|
31
|
+
overflow-y: auto;
|
|
32
|
+
overscroll-behavior: contain;
|
|
33
|
+
scrollbar-width: none;
|
|
34
|
+
&::-webkit-scrollbar { display: none; }
|
|
18
35
|
`;
|
|
19
36
|
const Logo = styled.a `
|
|
20
37
|
width: 40px; height: 40px;
|
|
@@ -31,19 +48,40 @@ const Divider = styled.div `
|
|
|
31
48
|
background: ${v.line2};
|
|
32
49
|
margin: 4px 0;
|
|
33
50
|
`;
|
|
51
|
+
// `$off`: a pinned product the active team has not enabled. Same convention the
|
|
52
|
+
// kit uses everywhere else for a disabled control (Charts' hidden series,
|
|
53
|
+
// Form's disabled toggle) — 0.55 opacity and the faint colour — so it reads as
|
|
54
|
+
// unavailable rather than as a different product.
|
|
34
55
|
export const RailButton = styled.a `
|
|
35
56
|
width: 40px; height: 40px;
|
|
36
57
|
border-radius: 10px;
|
|
37
58
|
display: grid; place-items: center;
|
|
38
|
-
|
|
59
|
+
position: relative;
|
|
60
|
+
color: ${(p) => (p.$off ? v.faint : (p.$accent ?? v.muted))};
|
|
61
|
+
opacity: ${(p) => (p.$off ? 0.55 : 1)};
|
|
39
62
|
background: ${(p) => (p.$on ? v.brand16 : "transparent")};
|
|
40
63
|
box-shadow: ${(p) => (p.$on ? `inset 0 0 0 1px ${v.brand55}` : "none")};
|
|
41
64
|
border: 0;
|
|
42
65
|
cursor: pointer;
|
|
43
66
|
text-decoration: none;
|
|
44
67
|
font-size: 18px;
|
|
45
|
-
transition: background 0.14s ease, color 0.14s ease;
|
|
46
|
-
&:hover {
|
|
68
|
+
transition: background 0.14s ease, color 0.14s ease, opacity 0.14s ease;
|
|
69
|
+
&:hover {
|
|
70
|
+
background: ${(p) => (p.$on ? v.brand16 : v.hover)};
|
|
71
|
+
color: ${(p) => (p.$off ? v.text : (p.$accent ?? v.text))};
|
|
72
|
+
opacity: 1;
|
|
73
|
+
}
|
|
74
|
+
`;
|
|
75
|
+
// A plus, not a warning: the tile is an invitation to turn the product on, and
|
|
76
|
+
// a red dot on half your rail reads as breakage.
|
|
77
|
+
const OffMark = styled.span `
|
|
78
|
+
position: absolute; bottom: -1px; right: -1px;
|
|
79
|
+
width: 13px; height: 13px; border-radius: 999px;
|
|
80
|
+
display: grid; place-items: center;
|
|
81
|
+
font-size: 8px;
|
|
82
|
+
color: ${v.faint};
|
|
83
|
+
background: ${v.sidebar};
|
|
84
|
+
box-shadow: 0 0 0 1px ${v.line2};
|
|
47
85
|
`;
|
|
48
86
|
const Avatar = styled.span `
|
|
49
87
|
width: 30px; height: 30px;
|
|
@@ -68,6 +106,13 @@ export function ScopeRail({ onOpenLauncher, onOpenAccount }) {
|
|
|
68
106
|
const c = useConsole();
|
|
69
107
|
const theme = useTheme();
|
|
70
108
|
const tiles = c.products.filter((p) => c.pinned.includes(p.key) || p.key === c.product).filter((p) => p.key !== "home");
|
|
71
|
-
return (_jsxs(Rail, { "aria-label": "Products", children: [_jsx(Logo, { href: c.homeHref, "aria-label": "Xeonr Cloud Console", children: "X" }), _jsx(RailButton, { href: c.homeHref, "$on": c.product === "home", "aria-label": "Home", title: "Home", children: _jsx(Icon, { name: "home" }) }), _jsx(Divider, {}),
|
|
109
|
+
return (_jsxs(Rail, { "aria-label": "Products", children: [_jsx(Logo, { href: c.homeHref, "aria-label": "Xeonr Cloud Console", children: "X" }), _jsx(RailButton, { href: c.homeHref, "$on": c.product === "home", "aria-label": "Home", title: "Home", children: _jsx(Icon, { name: "home" }) }), _jsx(Divider, {}), _jsx(Tiles, { children: tiles.map((p) => {
|
|
110
|
+
// A pinned product the team has not enabled used to render as fully
|
|
111
|
+
// live and link into a product holding no binding for this team, which
|
|
112
|
+
// is a dead end. Send it to the console home's enable prompt instead.
|
|
113
|
+
const off = p.status === "live" && !p.enabled;
|
|
114
|
+
const teamName = c.activeTeam?.name || c.activeTeam?.slug;
|
|
115
|
+
return (_jsxs(RailButton, { href: off ? c.enableHref(p.key) : c.productHref(p), "$on": p.key === c.product, "$accent": p.colour, "$off": off, "aria-label": off ? `${p.name} — not enabled, enable it` : p.name, title: off ? `${p.name} is not enabled${teamName ? ` for ${teamName}` : ""} — click to enable` : p.name, children: [_jsx(Icon, { name: p.icon }), off ? _jsx(OffMark, { "aria-hidden": "true", children: _jsx(Icon, { name: "add" }) }) : null] }, p.key));
|
|
116
|
+
}) }), _jsx(RailButton, { as: "button", type: "button", onClick: onOpenLauncher, "aria-label": "All products", title: "All products", children: _jsx(Icon, { name: "launcher" }) }), _jsx(Spacer, {}), _jsx(RailButton, { as: "button", type: "button", onClick: theme.cycle, "aria-label": `Theme: ${theme.pref}`, title: `Theme: ${theme.pref}`, children: _jsx(Icon, { name: theme.pref === "system" ? "system" : theme.resolved === "dark" ? "moon" : "sun" }) }), _jsx(RailButton, { as: "button", type: "button", onClick: onOpenAccount, "aria-label": "Account menu", title: c.me.displayName, children: _jsxs(Avatar, { children: [initials(c.me.displayName), c.invitations.length > 0 ? _jsx(Dot, { "aria-label": `${c.invitations.length} pending invitations` }) : null] }) })] }));
|
|
72
117
|
}
|
|
73
118
|
//# sourceMappingURL=ScopeRail.js.map
|
package/dist/ScopeRail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeRail.js","sourceRoot":"","sources":["../src/ScopeRail.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAuB,CAAC;AAEnD,wEAAwE;AACxE,qEAAqE;AACrE,+EAA+E;AAE/E,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;gBAQP,CAAC,CAAC,OAAO;4BACG,CAAC,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"ScopeRail.js","sourceRoot":"","sources":["../src/ScopeRail.tsx"],"names":[],"mappings":"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"}
|
package/dist/TeamCard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TeamCard.d.ts","sourceRoot":"","sources":["../src/TeamCard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TeamCard.d.ts","sourceRoot":"","sources":["../src/TeamCard.tsx"],"names":[],"mappings":"AAuHA,wBAAgB,QAAQ,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,+BAyGlG"}
|
package/dist/TeamCard.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useRef, useState } from "react";
|
|
3
3
|
import styled from "styled-components";
|
|
4
4
|
import { Icon, v } from "@xeonr/platform-ui";
|
|
@@ -6,8 +6,15 @@ import { useConsole } from "./ConsoleProvider.js";
|
|
|
6
6
|
import { ShellLink } from "./links.js";
|
|
7
7
|
// The team switcher card at the top of the section sidebar. It belongs to the
|
|
8
8
|
// shell; the sections under it belong to the product. Team management itself
|
|
9
|
-
// lives in the
|
|
9
|
+
// lives in the console home (CP and Functions each built and deleted their
|
|
10
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.
|
|
11
18
|
const Card = styled.button `
|
|
12
19
|
width: 100%;
|
|
13
20
|
text-align: left;
|
|
@@ -86,6 +93,13 @@ const Warn = styled.div `
|
|
|
86
93
|
word-break: break-word;
|
|
87
94
|
`;
|
|
88
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
|
+
`;
|
|
89
103
|
function initials(name) {
|
|
90
104
|
return name.split(/[\s-]+/).map((s) => s[0] ?? "").join("").slice(0, 2).toUpperCase();
|
|
91
105
|
}
|
|
@@ -112,9 +126,27 @@ export function TeamCard({ productLabel, authOrigin }) {
|
|
|
112
126
|
};
|
|
113
127
|
}, [open]);
|
|
114
128
|
const t = c.activeTeam;
|
|
115
|
-
|
|
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: () => {
|
|
116
135
|
setOpen(false);
|
|
117
136
|
c.setTeam(team.id);
|
|
118
|
-
}, 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))),
|
|
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] }));
|
|
119
151
|
}
|
|
120
152
|
//# sourceMappingURL=TeamCard.js.map
|
package/dist/TeamCard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TeamCard.js","sourceRoot":"","sources":["../src/TeamCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAa,CAAC;AAExC,8EAA8E;AAC9E,6EAA6E;AAC7E,
|
|
1
|
+
{"version":3,"file":"TeamCard.js","sourceRoot":"","sources":["../src/TeamCard.tsx"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -32,6 +32,14 @@ export interface Team {
|
|
|
32
32
|
role: "owner" | "member";
|
|
33
33
|
/** this product's team-typed application roles for the caller */
|
|
34
34
|
roles: string[];
|
|
35
|
+
/**
|
|
36
|
+
* Whether this team has THIS product enabled. Optional and defaulting to true:
|
|
37
|
+
* an older BFF sends only usable teams, and auth's own portal implements this
|
|
38
|
+
* client against a private RPC that has no entitlement concept at all.
|
|
39
|
+
*/
|
|
40
|
+
entitled?: boolean | undefined;
|
|
41
|
+
/** Whether the caller could enable it for this team themselves. */
|
|
42
|
+
canEnable?: boolean | undefined;
|
|
35
43
|
}
|
|
36
44
|
export interface Me {
|
|
37
45
|
subject: string;
|
|
@@ -55,7 +63,12 @@ export interface Invitation {
|
|
|
55
63
|
/** Server-truth for what travels between consoles (ConsoleService.GetContext). */
|
|
56
64
|
export interface ConsoleContext {
|
|
57
65
|
activeTeam: string | null;
|
|
58
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Null means nobody has chosen yet, so the registry's pinned-by-default set
|
|
68
|
+
* applies. An empty array is a choice — "no pins" — and must not revive the
|
|
69
|
+
* defaults. Older BFFs always send an array; treat that as before.
|
|
70
|
+
*/
|
|
71
|
+
pinnedProducts: string[] | null;
|
|
59
72
|
theme: "system" | "light" | "dark";
|
|
60
73
|
}
|
|
61
74
|
export interface ConsoleClient {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,cAAc,CAAC;AAEzD,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,MAAM,GACN,iBAAiB,GACjB,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC;AAEnD,wGAAwG;AACxG,MAAM,WAAW,OAAO;IACtB,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;IACzB,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,+DAA+D;IAC/D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,2BAA2B;IAC3B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,iEAAiE;IACjE,KAAK,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,cAAc,CAAC;AAEzD,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,MAAM,GACN,iBAAiB,GACjB,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC;AAEnD,wGAAwG;AACxG,MAAM,WAAW,OAAO;IACtB,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;IACzB,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,+DAA+D;IAC/D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,2BAA2B;IAC3B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,iEAAiE;IACjE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,EAAE;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAClB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACtD,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IACtC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACpE,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3C;;;;;;;;;OASG;IACH,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,4EAA4E;IAC5E,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xeonr/console-shell",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "The Xeonr Cloud Console chrome: product rail, team switcher, section sidebar, top bar, ⌘K and the All-products launcher, plus the console context hooks every product console mounts.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|