@xeonr/console-shell 0.2.2 → 0.2.4
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 +11 -0
- package/dist/ConsoleProvider.d.ts.map +1 -1
- package/dist/ConsoleProvider.js +34 -1
- package/dist/ConsoleProvider.js.map +1 -1
- package/dist/ScopeRail.d.ts +2 -0
- package/dist/ScopeRail.d.ts.map +1 -1
- package/dist/ScopeRail.js +97 -4
- package/dist/ScopeRail.js.map +1 -1
- package/package.json +3 -3
|
@@ -9,6 +9,12 @@ export declare const MAX_PINNED = 6;
|
|
|
9
9
|
export interface ConsoleState {
|
|
10
10
|
/** registry key of the console mounting the shell; "home" for console.xeonr.io */
|
|
11
11
|
product: string;
|
|
12
|
+
/**
|
|
13
|
+
* The registry row for THIS console once the registry has loaded — its name,
|
|
14
|
+
* icon and brand colour. Null for console.xeonr.io, which has no row of its
|
|
15
|
+
* own, and for the load window before the registry arrives.
|
|
16
|
+
*/
|
|
17
|
+
currentProduct: Product | null;
|
|
12
18
|
me: Me;
|
|
13
19
|
/**
|
|
14
20
|
* False when the client answered with an anonymous `Me` — an empty subject.
|
|
@@ -25,6 +31,11 @@ export interface ConsoleState {
|
|
|
25
31
|
loading: boolean;
|
|
26
32
|
setTeam(id: string): void;
|
|
27
33
|
togglePin(key: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Move a pinned product to a new index in the rail. `to` is clamped, and a key
|
|
36
|
+
* that is not pinned is ignored, so a caller need not validate a drop target.
|
|
37
|
+
*/
|
|
38
|
+
reorderPins(key: string, to: number): void;
|
|
28
39
|
/**
|
|
29
40
|
* Entitle the active team to a product, then re-read the registry so the
|
|
30
41
|
* caller's tile actually changes. Rejects with auth's own refusal text.
|
|
@@ -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;;;;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,+
|
|
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;;;;OAIG;IACH,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,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,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C;;;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,+BAgO/H;AAED,sFAAsF;AACtF,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAED,wBAAgB,UAAU,IAAI,YAAY,CAIzC"}
|
package/dist/ConsoleProvider.js
CHANGED
|
@@ -89,6 +89,21 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
89
89
|
live = false;
|
|
90
90
|
};
|
|
91
91
|
}, [client, activeTeam?.id, tick]);
|
|
92
|
+
// The console's own registry row, and the brand colour that comes with it.
|
|
93
|
+
// Doing this here rather than asking every host to pass its colour means
|
|
94
|
+
// adopting product branding is a version bump: the registry is already the
|
|
95
|
+
// one place a product's colour is written down, and the shell is already
|
|
96
|
+
// reading it for the rail tiles.
|
|
97
|
+
const currentProduct = useMemo(() => products.find((p) => p.key === product) ?? null, [products, product]);
|
|
98
|
+
const setBrand = theme.setBrand;
|
|
99
|
+
useEffect(() => {
|
|
100
|
+
// Only ever set, never cleared: a console that loses its registry row (a
|
|
101
|
+
// failed refresh) should keep the colour it is already wearing rather than
|
|
102
|
+
// snap back to platform violet mid-session. "home" has no row and stays
|
|
103
|
+
// violet, which is the platform's own colour and correct for it.
|
|
104
|
+
if (currentProduct?.colour)
|
|
105
|
+
setBrand(currentProduct.colour);
|
|
106
|
+
}, [currentProduct?.colour, setBrand]);
|
|
92
107
|
const pinned = useMemo(() => {
|
|
93
108
|
if (pins === null)
|
|
94
109
|
return products.filter((p) => p.pinnedByDefault).map((p) => p.key);
|
|
@@ -124,6 +139,22 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
124
139
|
onError?.(err);
|
|
125
140
|
});
|
|
126
141
|
}, [client, pinned, onError]);
|
|
142
|
+
const reorderPins = useCallback((key, to) => {
|
|
143
|
+
const current = pinned;
|
|
144
|
+
const from = current.indexOf(key);
|
|
145
|
+
if (from < 0)
|
|
146
|
+
return;
|
|
147
|
+
const target = Math.max(0, Math.min(to, current.length - 1));
|
|
148
|
+
if (target === from)
|
|
149
|
+
return;
|
|
150
|
+
const next = current.filter((k) => k !== key);
|
|
151
|
+
next.splice(target, 0, key);
|
|
152
|
+
setPins(next);
|
|
153
|
+
void client.setContext({ pinnedProducts: next }).catch((err) => {
|
|
154
|
+
setPins(current);
|
|
155
|
+
onError?.(err);
|
|
156
|
+
});
|
|
157
|
+
}, [client, pinned, onError]);
|
|
127
158
|
const enableProduct = useCallback(async (p) => {
|
|
128
159
|
if (!activeTeam)
|
|
129
160
|
throw new Error("Pick a team before enabling a product.");
|
|
@@ -160,6 +191,7 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
160
191
|
const value = useMemo(() => me
|
|
161
192
|
? {
|
|
162
193
|
product,
|
|
194
|
+
currentProduct,
|
|
163
195
|
me,
|
|
164
196
|
signedIn: !!me.subject,
|
|
165
197
|
teams: me.teams,
|
|
@@ -170,6 +202,7 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
170
202
|
loading: false,
|
|
171
203
|
setTeam,
|
|
172
204
|
togglePin,
|
|
205
|
+
reorderPins,
|
|
173
206
|
enableProduct,
|
|
174
207
|
productHref,
|
|
175
208
|
enableHref,
|
|
@@ -177,7 +210,7 @@ export function ConsoleProvider({ client, product, teamSlug, onTeamChange, homeO
|
|
|
177
210
|
search: (q) => (client.search ? client.search(q, activeTeam?.id ?? null) : Promise.resolve([])),
|
|
178
211
|
refresh,
|
|
179
212
|
}
|
|
180
|
-
: null, [me, product, activeTeam, products, pinned, invitations, setTeam, togglePin, enableProduct, productHref, enableHref, homeHref, refresh, client]);
|
|
213
|
+
: null, [me, product, currentProduct, activeTeam, products, pinned, invitations, setTeam, togglePin, reorderPins, enableProduct, productHref, enableHref, homeHref, refresh, client]);
|
|
181
214
|
if (!value)
|
|
182
215
|
return _jsx(Ctx.Provider, { value: null, children: children });
|
|
183
216
|
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;;;;GAIG;AACH,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/ScopeRail.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export declare const RailButton: import("styled-components/dist/types").IStyledC
|
|
|
4
4
|
$on?: boolean | undefined;
|
|
5
5
|
$accent?: string | undefined;
|
|
6
6
|
$off?: boolean | undefined;
|
|
7
|
+
$dragging?: boolean | undefined;
|
|
8
|
+
$dropBefore?: boolean | undefined;
|
|
7
9
|
}>> & string;
|
|
8
10
|
export declare function ScopeRail({ onOpenLauncher, onOpenAccount }: {
|
|
9
11
|
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":"AAiEA,eAAO,MAAM,UAAU;;;UACf,OAAO,GAAG,SAAS;cACf,MAAM,GAAG,SAAS;WACrB,OAAO,GAAG,SAAS;gBACd,OAAO,GAAG,SAAS;kBACjB,OAAO,GAAG,SAAS;YAuClC,CAAC;AAqCF,wBAAgB,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE;IAAE,cAAc,EAAE,MAAM,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,IAAI,CAAA;CAAE,+BAmIrH"}
|
package/dist/ScopeRail.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
2
3
|
import styled from "styled-components";
|
|
3
4
|
import { Icon, v, useTheme } from "@xeonr/platform-ui";
|
|
4
5
|
import { useConsole } from "./ConsoleProvider.js";
|
|
@@ -33,13 +34,18 @@ const Tiles = styled.div `
|
|
|
33
34
|
scrollbar-width: none;
|
|
34
35
|
&::-webkit-scrollbar { display: none; }
|
|
35
36
|
`;
|
|
37
|
+
// The console's mark. On a product console it is that product's icon on that
|
|
38
|
+
// product's gradient — the same gradient the rest of the chrome now wears — so
|
|
39
|
+
// the rail says "you are in Databases" instead of repeating one platform
|
|
40
|
+
// wordmark across ten hosts. console.xeonr.io keeps the X: it is the platform
|
|
41
|
+
// rather than a product, and has no registry row to take an icon from.
|
|
36
42
|
const Logo = styled.a `
|
|
37
43
|
width: 40px; height: 40px;
|
|
38
44
|
border-radius: 12px;
|
|
39
45
|
background: ${v.grad};
|
|
40
46
|
color: ${v.onBrand};
|
|
41
47
|
display: grid; place-items: center;
|
|
42
|
-
font-weight: 700; font-size: 17px;
|
|
48
|
+
font-weight: 700; font-size: ${(p) => (p.$icon ? "20px" : "17px")};
|
|
43
49
|
margin-bottom: 6px;
|
|
44
50
|
text-decoration: none;
|
|
45
51
|
`;
|
|
@@ -71,6 +77,24 @@ export const RailButton = styled.a `
|
|
|
71
77
|
color: ${(p) => (p.$off ? v.text : (p.$accent ?? v.text))};
|
|
72
78
|
opacity: 1;
|
|
73
79
|
}
|
|
80
|
+
|
|
81
|
+
/* Being dragged: faded in place so the gap it will leave is visible. */
|
|
82
|
+
${(p) => p.$dragging && `opacity: 0.35;`}
|
|
83
|
+
|
|
84
|
+
/* Where it would land, drawn as a line above the tile rather than by moving
|
|
85
|
+
anything — shuffling tiles under the cursor makes the target move as you
|
|
86
|
+
aim at it. */
|
|
87
|
+
${(p) => p.$dropBefore &&
|
|
88
|
+
`
|
|
89
|
+
&::before {
|
|
90
|
+
content: "";
|
|
91
|
+
position: absolute;
|
|
92
|
+
top: -4px; left: 2px; right: 2px;
|
|
93
|
+
height: 2px;
|
|
94
|
+
border-radius: 2px;
|
|
95
|
+
background: ${v.brand};
|
|
96
|
+
}
|
|
97
|
+
`}
|
|
74
98
|
`;
|
|
75
99
|
// A plus, not a warning: the tile is an invitation to turn the product on, and
|
|
76
100
|
// a red dot on half your rail reads as breakage.
|
|
@@ -105,14 +129,83 @@ function initials(name) {
|
|
|
105
129
|
export function ScopeRail({ onOpenLauncher, onOpenAccount }) {
|
|
106
130
|
const c = useConsole();
|
|
107
131
|
const theme = useTheme();
|
|
108
|
-
|
|
109
|
-
|
|
132
|
+
// In PIN order. This used to filter `c.products`, which meant the rail
|
|
133
|
+
// rendered in registry order and threw the saved order away entirely — so
|
|
134
|
+
// `pinned_products` being "in order" was a fiction and reordering could not
|
|
135
|
+
// have worked. Pins only, in the order they were saved: an unpinned current
|
|
136
|
+
// product used to be appended so you could see where you were, and the mark
|
|
137
|
+
// at the top of the rail now says that — appending it too drew the same icon
|
|
138
|
+
// twice, one tile apart.
|
|
139
|
+
const byKey = new Map(c.products.map((p) => [p.key, p]));
|
|
140
|
+
// The console we are *in*, for the mark at the top. "home" is excluded: the
|
|
141
|
+
// console home is the platform, and a registry that happens to carry a "home"
|
|
142
|
+
// row (the demo's does) must not turn its logo into a house icon.
|
|
143
|
+
const self = c.product === "home" ? null : c.currentProduct;
|
|
144
|
+
const tiles = c.pinned
|
|
145
|
+
.map((k) => byKey.get(k))
|
|
146
|
+
.filter((p) => !!p)
|
|
147
|
+
.filter((p) => p.key !== "home");
|
|
148
|
+
// Drag to reorder. Native HTML5 drag rather than a dependency: the rail is one
|
|
149
|
+
// vertical list of 40px tiles, which is the case the platform API handles
|
|
150
|
+
// without help.
|
|
151
|
+
const [dragKey, setDragKey] = useState(null);
|
|
152
|
+
const [overKey, setOverKey] = useState(null);
|
|
153
|
+
const pinnedCount = c.pinned.length;
|
|
154
|
+
// Alt+↑/↓ moves the focused tile, because a rail you can only reorder by
|
|
155
|
+
// dragging is a rail some people cannot reorder.
|
|
156
|
+
const onTileKeyDown = (e, key) => {
|
|
157
|
+
if (!e.altKey || (e.key !== "ArrowUp" && e.key !== "ArrowDown"))
|
|
158
|
+
return;
|
|
159
|
+
const from = c.pinned.indexOf(key);
|
|
160
|
+
if (from < 0)
|
|
161
|
+
return;
|
|
162
|
+
e.preventDefault();
|
|
163
|
+
c.reorderPins(key, from + (e.key === "ArrowUp" ? -1 : 1));
|
|
164
|
+
};
|
|
165
|
+
return (_jsxs(Rail, { "aria-label": "Products", children: [self ? (_jsx(Logo, { href: c.productHref(self), "$icon": true, "aria-label": self.name, title: self.name, children: _jsx(Icon, { name: self.icon }) })) : (_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, { onDragOver: (e) => { if (dragKey)
|
|
166
|
+
e.preventDefault(); }, onDrop: (e) => {
|
|
167
|
+
// Dropped past the last tile: send it to the end. Without this, a drop
|
|
168
|
+
// in the empty space below the list is silently lost.
|
|
169
|
+
if (!dragKey)
|
|
170
|
+
return;
|
|
171
|
+
e.preventDefault();
|
|
172
|
+
if (!overKey)
|
|
173
|
+
c.reorderPins(dragKey, pinnedCount - 1);
|
|
174
|
+
setDragKey(null);
|
|
175
|
+
setOverKey(null);
|
|
176
|
+
}, children: tiles.map((p) => {
|
|
110
177
|
// A pinned product the team has not enabled used to render as fully
|
|
111
178
|
// live and link into a product holding no binding for this team, which
|
|
112
179
|
// is a dead end. Send it to the console home's enable prompt instead.
|
|
113
180
|
const off = p.status === "live" && !p.enabled;
|
|
114
181
|
const teamName = c.activeTeam?.name || c.activeTeam?.slug;
|
|
115
|
-
|
|
182
|
+
const isPinned = c.pinned.includes(p.key);
|
|
183
|
+
return (_jsxs(RailButton, { href: off ? c.enableHref(p.key) : c.productHref(p), "$on": p.key === c.product, "$accent": p.colour, "$off": off, "$dragging": dragKey === p.key, "$dropBefore": !!dragKey && dragKey !== p.key && overKey === p.key, "aria-label": off ? `${p.name} — not enabled, enable it` : p.name, title: off
|
|
184
|
+
? `${p.name} is not enabled${teamName ? ` for ${teamName}` : ""} — click to enable`
|
|
185
|
+
: isPinned ? `${p.name} — drag, or alt+↑/↓, to reorder` : p.name,
|
|
186
|
+
// Only pinned tiles are draggable; the current product shown because
|
|
187
|
+
// it is current has no position in the list to move.
|
|
188
|
+
draggable: isPinned, onKeyDown: (e) => onTileKeyDown(e, p.key), onDragStart: (e) => {
|
|
189
|
+
setDragKey(p.key);
|
|
190
|
+
// An <a> drags its href by default, which browsers treat as a link
|
|
191
|
+
// drop onto other windows. Claim the payload as our own.
|
|
192
|
+
e.dataTransfer.effectAllowed = "move";
|
|
193
|
+
e.dataTransfer.setData("text/plain", p.key);
|
|
194
|
+
}, onDragEnd: () => { setDragKey(null); setOverKey(null); }, onDragOver: (e) => {
|
|
195
|
+
if (!dragKey || !isPinned)
|
|
196
|
+
return;
|
|
197
|
+
e.preventDefault();
|
|
198
|
+
e.stopPropagation();
|
|
199
|
+
setOverKey(p.key);
|
|
200
|
+
}, onDrop: (e) => {
|
|
201
|
+
if (!dragKey || !isPinned)
|
|
202
|
+
return;
|
|
203
|
+
e.preventDefault();
|
|
204
|
+
e.stopPropagation();
|
|
205
|
+
c.reorderPins(dragKey, c.pinned.indexOf(p.key));
|
|
206
|
+
setDragKey(null);
|
|
207
|
+
setOverKey(null);
|
|
208
|
+
}, children: [_jsx(Icon, { name: p.icon }), off ? _jsx(OffMark, { "aria-hidden": "true", children: _jsx(Icon, { name: "add" }) }) : null] }, p.key));
|
|
116
209
|
}) }), _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] }) })] }));
|
|
117
210
|
}
|
|
118
211
|
//# 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;;;;CAIjC,CAAC;AAEF,6EAA6E;AAC7E,2EAA2E;AAC3E,mEAAmE;AACnE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;CAUvB,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"ScopeRail.js","sourceRoot":"","sources":["../src/ScopeRail.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,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;;;;CAIjC,CAAC;AAEF,6EAA6E;AAC7E,2EAA2E;AAC3E,mEAAmE;AACnE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;CAUvB,CAAC;AAEF,6EAA6E;AAC7E,+EAA+E;AAC/E,yEAAyE;AACzE,8EAA8E;AAC9E,uEAAuE;AACvE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAiC;;;gBAGtC,CAAC,CAAC,IAAI;WACX,CAAC,CAAC,OAAO;;iCAEa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;;;CAGlE,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;gBAEV,CAAC,CAAC,KAAK;;CAEtB,CAAC;AAEF,gFAAgF;AAChF,0EAA0E;AAC1E,+EAA+E;AAC/E,kDAAkD;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAMhC;;;;;WAKS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;aAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;;;;;;;kBAOtD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;aACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;;;;IAKzD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,gBAAgB;;;;;IAKtC,CAAC,CAAC,EAAE,EAAE,CACN,CAAC,CAAC,WAAW;IACb;;;;;;;oBAOgB,CAAC,CAAC,KAAK;;GAExB;CACF,CAAC;AAEF,+EAA+E;AAC/E,iDAAiD;AACjD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAA;;;;;WAKhB,CAAC,CAAC,KAAK;gBACF,CAAC,CAAC,OAAO;0BACC,CAAC,CAAC,KAAK;CAChC,CAAC;AAEF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAA;;;gBAGV,CAAC,CAAC,IAAI;WACX,CAAC,CAAC,OAAO;;;;CAInB,CAAC;AAEF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAA;;;gBAGP,CAAC,CAAC,MAAM;0BACE,CAAC,CAAC,OAAO;CAClC,CAAC;AAEF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAA,iBAAiB,CAAC;AAE3C,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,EAA6D;IACpH,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,uEAAuE;IACvE,0EAA0E;IAC1E,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,6EAA6E;IAC7E,yBAAyB;IACzB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,4EAA4E;IAC5E,8EAA8E;IAC9E,kEAAkE;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IAC5D,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM;SACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;IAEnC,+EAA+E;IAC/E,0EAA0E;IAC1E,gBAAgB;IAChB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAEpC,yEAAyE;IACzE,iDAAiD;IACjD,MAAM,aAAa,GAAG,CAAC,CAAsB,EAAE,GAAW,EAAE,EAAE;QAC5D,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC;YAAE,OAAO;QACxE,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO;QACrB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,kBAAY,UAAU,aACxB,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,IAAI,IAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,+BAAoB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,YAC5E,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,GACpB,CACR,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,gBAAa,qBAAqB,kBAAS,CAClE,EACD,KAAC,UAAU,IAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,SAAO,CAAC,CAAC,OAAO,KAAK,MAAM,gBAAa,MAAM,EAAC,KAAK,EAAC,MAAM,YACrF,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,GAAG,GACT,EACb,KAAC,OAAO,KAAG,EACX,KAAC,KAAK,IACJ,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,OAAO;oBAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EACvD,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;oBACZ,uEAAuE;oBACvE,sDAAsD;oBACtD,IAAI,CAAC,OAAO;wBAAE,OAAO;oBACrB,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,IAAI,CAAC,OAAO;wBAAE,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;oBACtD,UAAU,CAAC,IAAI,CAAC,CAAC;oBACjB,UAAU,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACf,oEAAoE;oBACpE,uEAAuE;oBACvE,sEAAsE;oBACtE,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;oBAC9C,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC;oBAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC1C,OAAO,CACL,MAAC,UAAU,IAET,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAC7C,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,aACf,CAAC,CAAC,MAAM,UACX,GAAG,eACE,OAAO,KAAK,CAAC,CAAC,GAAG,iBACf,CAAC,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,OAAO,KAAK,CAAC,CAAC,GAAG,gBACpD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAC/D,KAAK,EAAE,GAAG;4BACR,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,kBAAkB,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB;4BACnF,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;wBAClE,qEAAqE;wBACrE,qDAAqD;wBACrD,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACzC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;4BACjB,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BAClB,mEAAmE;4BACnE,yDAAyD;4BACzD,CAAC,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM,CAAC;4BACtC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;wBAC9C,CAAC,EACD,SAAS,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACxD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;4BAChB,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;gCAAE,OAAO;4BAClC,CAAC,CAAC,cAAc,EAAE,CAAC;4BACnB,CAAC,CAAC,eAAe,EAAE,CAAC;4BACpB,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACpB,CAAC,EACD,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;4BACZ,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;gCAAE,OAAO;4BAClC,CAAC,CAAC,cAAc,EAAE,CAAC;4BACnB,CAAC,CAAC,eAAe,EAAE,CAAC;4BACpB,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;4BAChD,UAAU,CAAC,IAAI,CAAC,CAAC;4BACjB,UAAU,CAAC,IAAI,CAAC,CAAC;wBACnB,CAAC,aAED,KAAC,IAAI,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAI,EACrB,GAAG,CAAC,CAAC,CAAC,KAAC,OAAO,mBAAa,MAAM,YAAC,KAAC,IAAI,IAAC,IAAI,EAAC,KAAK,GAAG,GAAU,CAAC,CAAC,CAAC,IAAI,KAvClE,CAAC,CAAC,GAAG,CAwCC,CACd,CAAC;gBACJ,CAAC,CAAC,GACI,EACR,KAAC,UAAU,IAAC,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,cAAc,gBAAa,cAAc,EAAC,KAAK,EAAC,cAAc,YAC3G,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,GAAG,GACb,EACb,KAAC,MAAM,KAAG,EACV,KAAC,UAAU,IAAC,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,KAAK,CAAC,KAAK,gBAAc,UAAU,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,IAAI,EAAE,YAC3H,KAAC,IAAI,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAI,GACpF,EACb,KAAC,UAAU,IAAC,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,aAAa,gBAAa,cAAc,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,YAC7G,MAAC,MAAM,eACJ,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAC1B,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAC,GAAG,kBAAa,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,sBAAsB,GAAI,CAAC,CAAC,CAAC,IAAI,IAC9F,GACE,IACR,CACR,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xeonr/console-shell",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
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",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"react-dom": "^19.0.0",
|
|
20
20
|
"react-router-dom": "^7.0.0",
|
|
21
21
|
"styled-components": "^6.0.0",
|
|
22
|
-
"@xeonr/platform-ui": "^0.3.
|
|
22
|
+
"@xeonr/platform-ui": "^0.3.17"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/react": "^19.1.0",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"react-router-dom": "^7.8.0",
|
|
30
30
|
"styled-components": "^6.1.19",
|
|
31
31
|
"typescript": "^5.9.2",
|
|
32
|
-
"@xeonr/platform-ui": "0.3.
|
|
32
|
+
"@xeonr/platform-ui": "0.3.17"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
35
|
"build": "tsc -p tsconfig.build.json",
|