@mt-gloss/ui 0.1.121 → 0.1.123
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/{COMMITS-8eHelQHO.js → COMMITS-C1VHNgld.js} +130 -128
- package/composites-panels.js +393 -577
- package/index.js +2 -2
- package/lib/composites/panels/chrome-v2/PanelHeader.d.ts +5 -1
- package/lib/composites/panels/chrome-v2/index.d.ts +6 -0
- package/lib/composites/panels/shells/CatalogAddShell.d.ts +10 -1
- package/lib/composites/panels/shells/internals/catalog-mocks.d.ts +21 -14
- package/package.json +1 -1
- package/ui.css +1 -1
package/composites-panels.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { u as O, h as
|
|
2
|
-
import { C as
|
|
3
|
-
import { jsx as n, jsxs as f, Fragment as
|
|
4
|
-
import
|
|
5
|
-
import { useSensors as ke, useSensor as
|
|
6
|
-
import { sortableKeyboardCoordinates as Ie, SortableContext as
|
|
7
|
-
import { CSS as
|
|
8
|
-
import { M as
|
|
1
|
+
import { u as O, h as he, j as Y, g as we, S as Pe, b as Te, k as Ae } from "./COMMITS-C1VHNgld.js";
|
|
2
|
+
import { C as zt, N as Ht, o as Ut, d as Bt, p as Yt, l as Vt, c as Kt, n as qt, P as Qt, m as Wt, f as Gt, i as jt, r as Zt, e as Xt } from "./COMMITS-C1VHNgld.js";
|
|
3
|
+
import { jsx as n, jsxs as f, Fragment as V } from "react/jsx-runtime";
|
|
4
|
+
import H, { useState as A, useRef as K, createContext as fe, useContext as ge, useMemo as le, useEffect as F, useCallback as D, useLayoutEffect as xe } from "react";
|
|
5
|
+
import { useSensors as ke, useSensor as ie, PointerSensor as De, KeyboardSensor as Le, DndContext as Oe, closestCenter as Me } from "@dnd-kit/core";
|
|
6
|
+
import { sortableKeyboardCoordinates as Ie, SortableContext as Re, horizontalListSortingStrategy as $e, arrayMove as Fe, useSortable as ze } from "@dnd-kit/sortable";
|
|
7
|
+
import { CSS as He } from "@dnd-kit/utilities";
|
|
8
|
+
import { M as ce } from "./MetricCard-Cyoxhb_S.js";
|
|
9
9
|
function wt() {
|
|
10
10
|
const e = O();
|
|
11
11
|
if (e?.state.activePanelId !== "settings") return null;
|
|
12
12
|
const t = e.state.activeTrigger;
|
|
13
13
|
return t?.kind === "card-overflow" ? t.cardId : null;
|
|
14
14
|
}
|
|
15
|
-
function
|
|
15
|
+
function Ue({ span: e, rotating: t = !0, children: r }) {
|
|
16
16
|
const l = ["clone-card", `span-${e}`, t ? "rotating" : ""].filter(Boolean).join(" "), a = r != null ? "full" : "fallback";
|
|
17
17
|
return /* @__PURE__ */ n("div", { className: l, "data-clone-fidelity": a, children: r });
|
|
18
18
|
}
|
|
19
|
-
function
|
|
19
|
+
function Pt({ primary: e, secondary: t }) {
|
|
20
20
|
return /* @__PURE__ */ f("div", { className: "gloss-panel-chrome-v2__footer-msg", children: [
|
|
21
21
|
/* @__PURE__ */ n("span", { className: "gloss-panel-chrome-v2__footer-msg-primary", children: e }),
|
|
22
22
|
t != null && /* @__PURE__ */ n("span", { className: "gloss-panel-chrome-v2__footer-msg-secondary", children: t })
|
|
23
23
|
] });
|
|
24
24
|
}
|
|
25
|
-
function
|
|
25
|
+
function Be({
|
|
26
26
|
value: e,
|
|
27
27
|
onChange: t,
|
|
28
28
|
enabled: r = !1,
|
|
@@ -46,7 +46,7 @@ function Ve({
|
|
|
46
46
|
}
|
|
47
47
|
)
|
|
48
48
|
] }),
|
|
49
|
-
r ? /* @__PURE__ */ f(
|
|
49
|
+
r ? /* @__PURE__ */ f(V, { children: [
|
|
50
50
|
/* @__PURE__ */ n("span", { className: "settings-shell__label", "aria-hidden": "true", children: "Alert level (%)" }),
|
|
51
51
|
/* @__PURE__ */ f("div", { className: "settings-shell__slider-row", children: [
|
|
52
52
|
/* @__PURE__ */ n(
|
|
@@ -73,7 +73,7 @@ function Ve({
|
|
|
73
73
|
] }) : /* @__PURE__ */ n("p", { className: "settings-shell__help", "aria-live": "polite", children: "Off — the card uses its default styling. Turn on to tint values below the threshold." })
|
|
74
74
|
] });
|
|
75
75
|
}
|
|
76
|
-
function
|
|
76
|
+
function Ye({ value: e, onChange: t }) {
|
|
77
77
|
return /* @__PURE__ */ f("div", { className: "settings-shell__field settings-shell__field--timeframe", children: [
|
|
78
78
|
/* @__PURE__ */ n("span", { className: "settings-shell__label", "aria-hidden": "true", children: "Rolling period (days)" }),
|
|
79
79
|
/* @__PURE__ */ f("div", { className: "settings-shell__slider-row", children: [
|
|
@@ -100,9 +100,9 @@ function Be({ value: e, onChange: t }) {
|
|
|
100
100
|
] })
|
|
101
101
|
] });
|
|
102
102
|
}
|
|
103
|
-
function
|
|
104
|
-
const { attributes: r, listeners: l, setNodeRef: a, transform: i, transition: u, isDragging: o } =
|
|
105
|
-
transform:
|
|
103
|
+
function Ve({ id: e, onRemove: t }) {
|
|
104
|
+
const { attributes: r, listeners: l, setNodeRef: a, transform: i, transition: u, isDragging: o } = ze({ id: e }), s = {
|
|
105
|
+
transform: He.Transform.toString(i),
|
|
106
106
|
transition: u,
|
|
107
107
|
opacity: o ? 0.6 : 1
|
|
108
108
|
};
|
|
@@ -139,11 +139,11 @@ function Ke({ id: e, onRemove: t }) {
|
|
|
139
139
|
}
|
|
140
140
|
);
|
|
141
141
|
}
|
|
142
|
-
function
|
|
142
|
+
function Ke({ value: e, onChange: t }) {
|
|
143
143
|
const r = ke(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
), l =
|
|
144
|
+
ie(De, { activationConstraint: { distance: 4 } }),
|
|
145
|
+
ie(Le, { coordinateGetter: Ie })
|
|
146
|
+
), l = H.useRef(!1), [a, i] = H.useState(!1), u = (s) => {
|
|
147
147
|
const { active: c, over: d } = s;
|
|
148
148
|
if (!d || c.id === d.id) return;
|
|
149
149
|
const m = e.findIndex((b) => b === c.id), h = e.findIndex((b) => b === d.id);
|
|
@@ -152,13 +152,13 @@ function Ye({ value: e, onChange: t }) {
|
|
|
152
152
|
l.current || (l.current = !0, i(!0)), t(e.filter((c) => c !== s));
|
|
153
153
|
};
|
|
154
154
|
return /* @__PURE__ */ f("div", { className: "settings-shell__field settings-shell__field--slots", "aria-label": "Stack slots", children: [
|
|
155
|
-
/* @__PURE__ */ n(Oe, { sensors: r, collisionDetection: Me, onDragEnd: u, children: /* @__PURE__ */ n(
|
|
155
|
+
/* @__PURE__ */ n(Oe, { sensors: r, collisionDetection: Me, onDragEnd: u, children: /* @__PURE__ */ n(Re, { items: [...e], strategy: $e, children: /* @__PURE__ */ n("ul", { className: "settings-shell__slots-list", role: "list", children: e.map((s) => /* @__PURE__ */ n(Ve, { id: s, onRemove: () => o(s) }, s)) }) }) }),
|
|
156
156
|
e.length === 0 && a && /* @__PURE__ */ n("p", { className: "settings-shell__help", children: "All slots removed. Apply to commit, or Reset to restore." }),
|
|
157
157
|
/* @__PURE__ */ n("p", { className: "settings-shell__help settings-shell__help--small", children: "Drag to reorder · click × to remove" })
|
|
158
158
|
] });
|
|
159
159
|
}
|
|
160
|
-
const
|
|
161
|
-
function
|
|
160
|
+
const qe = ["#1d6fd8", "#10b981", "#f59e0b", "#ef4444", "#8b5cf6"];
|
|
161
|
+
function Qe({
|
|
162
162
|
value: e,
|
|
163
163
|
onSelect: t,
|
|
164
164
|
enabled: r = !1,
|
|
@@ -182,9 +182,9 @@ function Ge({
|
|
|
182
182
|
}
|
|
183
183
|
)
|
|
184
184
|
] }),
|
|
185
|
-
r ? /* @__PURE__ */ f(
|
|
185
|
+
r ? /* @__PURE__ */ f(V, { children: [
|
|
186
186
|
/* @__PURE__ */ n("span", { className: "settings-shell__label", children: "Accent color" }),
|
|
187
|
-
/* @__PURE__ */ n("div", { className: "settings-shell__swatch-row", children:
|
|
187
|
+
/* @__PURE__ */ n("div", { className: "settings-shell__swatch-row", children: qe.map((i) => {
|
|
188
188
|
const u = e === i;
|
|
189
189
|
return /* @__PURE__ */ n(
|
|
190
190
|
"button",
|
|
@@ -202,40 +202,40 @@ function Ge({
|
|
|
202
202
|
] }) : /* @__PURE__ */ n("p", { className: "settings-shell__help", "aria-live": "polite", children: "Off — the card uses its default accent. Turn on to override." })
|
|
203
203
|
] });
|
|
204
204
|
}
|
|
205
|
-
const
|
|
206
|
-
function
|
|
205
|
+
const We = ["Orders", "Quota", "Unassigned"], Ge = ["threshold", "timeframe", "color"];
|
|
206
|
+
function Tt({
|
|
207
207
|
isOpen: e,
|
|
208
208
|
cardSpan: t,
|
|
209
209
|
cardLabel: r = "Metric",
|
|
210
210
|
cardValue: l = "—",
|
|
211
211
|
previewSlot: a,
|
|
212
|
-
dimensions: i =
|
|
212
|
+
dimensions: i = Ge,
|
|
213
213
|
initialTab: u,
|
|
214
214
|
initialValues: o
|
|
215
215
|
}) {
|
|
216
|
-
const s = O(), c = s?.state.activeTrigger, d = c?.kind === "card-overflow" ? c.cardId : null, m =
|
|
217
|
-
|
|
218
|
-
i.includes(
|
|
219
|
-
}, [i,
|
|
220
|
-
const
|
|
221
|
-
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "threshold", value: Number(
|
|
222
|
-
},
|
|
223
|
-
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "timeframe", value: Number(
|
|
224
|
-
},
|
|
225
|
-
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "accent", value:
|
|
226
|
-
},
|
|
227
|
-
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "slots", value:
|
|
228
|
-
},
|
|
229
|
-
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "thresholdEnabled", value:
|
|
230
|
-
}, g = (
|
|
231
|
-
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "accentEnabled", value:
|
|
232
|
-
}, C = s?.state.isDirty ?? !1,
|
|
216
|
+
const s = O(), c = s?.state.activeTrigger, d = c?.kind === "card-overflow" ? c.cardId : null, m = he(), h = c?.span, b = t ?? h ?? 1, p = i[0] ?? "threshold", [_, P] = H.useState(u ?? p);
|
|
217
|
+
H.useEffect(() => {
|
|
218
|
+
i.includes(_) || P(p);
|
|
219
|
+
}, [i, _, p]);
|
|
220
|
+
const y = d != null ? s?.state?.bufferByCard?.[d]?.changes ?? {} : {}, N = typeof y.threshold == "number" ? y.threshold : typeof o?.threshold == "number" ? o.threshold : 80, I = typeof y.timeframe == "number" ? y.timeframe : typeof o?.timeframe == "number" ? o.timeframe : 30, R = typeof y.accent == "string" ? y.accent : typeof o?.accent == "string" ? o.accent : null, $ = Array.isArray(y.slots) ? y.slots : Array.isArray(o?.slots) ? o.slots : We, S = typeof y.thresholdEnabled == "boolean" ? y.thresholdEnabled : typeof o?.thresholdEnabled == "boolean" ? o.thresholdEnabled : !1, L = typeof y.accentEnabled == "boolean" ? y.accentEnabled : typeof o?.accentEnabled == "boolean" ? o.accentEnabled : !1, q = (T) => {
|
|
221
|
+
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "threshold", value: Number(T.target.value) });
|
|
222
|
+
}, Q = (T) => {
|
|
223
|
+
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "timeframe", value: Number(T.target.value) });
|
|
224
|
+
}, oe = (T) => {
|
|
225
|
+
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "accent", value: T });
|
|
226
|
+
}, W = (T) => {
|
|
227
|
+
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "slots", value: T });
|
|
228
|
+
}, G = (T) => {
|
|
229
|
+
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "thresholdEnabled", value: T });
|
|
230
|
+
}, g = (T) => {
|
|
231
|
+
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "accentEnabled", value: T });
|
|
232
|
+
}, C = s?.state.isDirty ?? !1, w = d;
|
|
233
233
|
return /* @__PURE__ */ n(
|
|
234
|
-
|
|
234
|
+
Y,
|
|
235
235
|
{
|
|
236
236
|
variant: "with-stage",
|
|
237
237
|
onClose: () => s?.dispatch({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
238
|
-
stage: /* @__PURE__ */ n(
|
|
238
|
+
stage: /* @__PURE__ */ n(Ue, { span: b, rotating: !m, children: a ?? /* @__PURE__ */ f(V, { children: [
|
|
239
239
|
/* @__PURE__ */ n("div", { style: { fontSize: 9, textTransform: "uppercase", letterSpacing: "0.06em", color: "#9ca3af", marginBottom: 6 }, children: r }),
|
|
240
240
|
/* @__PURE__ */ n("div", { style: { fontSize: 22, fontWeight: 700, color: "#111827", lineHeight: 1 }, children: l })
|
|
241
241
|
] }) }),
|
|
@@ -243,8 +243,8 @@ function Pt({
|
|
|
243
243
|
we,
|
|
244
244
|
{
|
|
245
245
|
dimensions: i,
|
|
246
|
-
activeTab:
|
|
247
|
-
onSelect:
|
|
246
|
+
activeTab: _,
|
|
247
|
+
onSelect: P,
|
|
248
248
|
reduced: m
|
|
249
249
|
}
|
|
250
250
|
),
|
|
@@ -257,7 +257,7 @@ function Pt({
|
|
|
257
257
|
className: "gloss-panel-chrome-v2__footer-btn",
|
|
258
258
|
disabled: !C,
|
|
259
259
|
onClick: () => {
|
|
260
|
-
|
|
260
|
+
w != null && s?.dispatch({ type: "CLEAR_BUFFER", cardId: w });
|
|
261
261
|
},
|
|
262
262
|
children: "Reset"
|
|
263
263
|
}
|
|
@@ -278,28 +278,28 @@ function Pt({
|
|
|
278
278
|
"div",
|
|
279
279
|
{
|
|
280
280
|
role: "tabpanel",
|
|
281
|
-
id: `settings-tabpanel-${
|
|
281
|
+
id: `settings-tabpanel-${_}`,
|
|
282
282
|
"aria-label": "Settings dimension controls",
|
|
283
283
|
tabIndex: 0,
|
|
284
284
|
className: "settings-shell__tabpanel",
|
|
285
285
|
children: [
|
|
286
|
-
|
|
287
|
-
|
|
286
|
+
_ === "threshold" && /* @__PURE__ */ n(
|
|
287
|
+
Be,
|
|
288
288
|
{
|
|
289
289
|
value: N,
|
|
290
|
-
onChange:
|
|
291
|
-
enabled:
|
|
292
|
-
onToggleEnabled:
|
|
290
|
+
onChange: q,
|
|
291
|
+
enabled: S,
|
|
292
|
+
onToggleEnabled: G
|
|
293
293
|
}
|
|
294
294
|
),
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
295
|
+
_ === "timeframe" && /* @__PURE__ */ n(Ye, { value: I, onChange: Q }),
|
|
296
|
+
_ === "slots" && /* @__PURE__ */ n(Ke, { value: $, onChange: W }),
|
|
297
|
+
_ === "color" && /* @__PURE__ */ n(
|
|
298
|
+
Qe,
|
|
299
299
|
{
|
|
300
|
-
value:
|
|
301
|
-
onSelect:
|
|
302
|
-
enabled:
|
|
300
|
+
value: R,
|
|
301
|
+
onSelect: oe,
|
|
302
|
+
enabled: L,
|
|
303
303
|
onToggleEnabled: g
|
|
304
304
|
}
|
|
305
305
|
)
|
|
@@ -309,190 +309,41 @@ function Pt({
|
|
|
309
309
|
}
|
|
310
310
|
);
|
|
311
311
|
}
|
|
312
|
-
const
|
|
313
|
-
"
|
|
314
|
-
"
|
|
315
|
-
"
|
|
316
|
-
"
|
|
317
|
-
"
|
|
318
|
-
"
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
helper: "Find slow-moving inventory before discount cycles eat margin."
|
|
312
|
+
const be = [
|
|
313
|
+
"Revenue",
|
|
314
|
+
"Order flow",
|
|
315
|
+
"Rep performance",
|
|
316
|
+
"Brand portfolio",
|
|
317
|
+
"Account coverage",
|
|
318
|
+
"Commission"
|
|
319
|
+
], ye = "Revenue", ve = {
|
|
320
|
+
Revenue: {
|
|
321
|
+
headline: "Are we hitting our number?",
|
|
322
|
+
helper: "Top-line sales, growth, average order value, and pace-to-plan signals."
|
|
324
323
|
},
|
|
325
|
-
"
|
|
326
|
-
headline: "
|
|
327
|
-
helper: "
|
|
324
|
+
"Order flow": {
|
|
325
|
+
headline: "Are orders flowing through?",
|
|
326
|
+
helper: "Daily activity, pipeline, unassigned work, and cancel-rate health."
|
|
328
327
|
},
|
|
329
|
-
"
|
|
330
|
-
headline: "
|
|
331
|
-
helper: "
|
|
328
|
+
"Rep performance": {
|
|
329
|
+
headline: "How are my reps performing?",
|
|
330
|
+
helper: "Quota attainment, leaderboards, and activity flags across the rep team."
|
|
332
331
|
},
|
|
333
|
-
"
|
|
334
|
-
headline: "
|
|
335
|
-
helper: "
|
|
332
|
+
"Brand portfolio": {
|
|
333
|
+
headline: "Which brands matter?",
|
|
334
|
+
helper: "Manufacturer mix, top performers, and emerging line health."
|
|
336
335
|
},
|
|
337
|
-
"
|
|
338
|
-
headline: "
|
|
339
|
-
helper: "
|
|
336
|
+
"Account coverage": {
|
|
337
|
+
headline: "Where are the gaps?",
|
|
338
|
+
helper: "New, active, inactive, and at-risk customer accounts."
|
|
340
339
|
},
|
|
341
|
-
|
|
342
|
-
headline: "
|
|
343
|
-
helper: "
|
|
344
|
-
},
|
|
345
|
-
"Customer retention": {
|
|
346
|
-
headline: "Are my best customers coming back?",
|
|
347
|
-
helper: "Repeat-rate and lapsed-account signals from the buyer file."
|
|
340
|
+
Commission: {
|
|
341
|
+
headline: "What's our commission rate?",
|
|
342
|
+
helper: "Outstanding balances, aging buckets, and effective commission yield."
|
|
348
343
|
}
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
const _e = {
|
|
352
|
-
Overbought: {
|
|
344
|
+
}, _e = {
|
|
345
|
+
Revenue: {
|
|
353
346
|
primary: [
|
|
354
|
-
{
|
|
355
|
-
id: "ob-units-at-risk",
|
|
356
|
-
label: "Units at risk",
|
|
357
|
-
value: "12,840",
|
|
358
|
-
desc: "Inventory units flagged as overbought relative to forward demand.",
|
|
359
|
-
variants: ["1×1"],
|
|
360
|
-
startHere: !0,
|
|
361
|
-
isNew: !0,
|
|
362
|
-
cardType: "standard"
|
|
363
|
-
},
|
|
364
|
-
{
|
|
365
|
-
id: "ob-weeks-of-supply",
|
|
366
|
-
label: "Weeks of supply",
|
|
367
|
-
value: "18.4",
|
|
368
|
-
desc: "Weighted average weeks of forward cover across the assortment.",
|
|
369
|
-
variants: ["1×1"],
|
|
370
|
-
cardType: "standard"
|
|
371
|
-
},
|
|
372
|
-
{
|
|
373
|
-
id: "ob-discount-exposure",
|
|
374
|
-
label: "Discount exposure",
|
|
375
|
-
value: "$184K",
|
|
376
|
-
desc: "Estimated markdown dollars to clear excess at current sell-through.",
|
|
377
|
-
variants: ["1×3"],
|
|
378
|
-
subStats: [
|
|
379
|
-
{ label: "MTD", value: "$48K" },
|
|
380
|
-
{ label: "QTD", value: "$112K" },
|
|
381
|
-
{ label: "YTD", value: "$184K" }
|
|
382
|
-
],
|
|
383
|
-
cardType: "stacked-group",
|
|
384
|
-
stackedTimeframes: ["MTD", "QTD", "YTD"]
|
|
385
|
-
}
|
|
386
|
-
],
|
|
387
|
-
secondary: [
|
|
388
|
-
{
|
|
389
|
-
id: "ob-sku-coverage",
|
|
390
|
-
label: "SKUs over plan",
|
|
391
|
-
value: "342",
|
|
392
|
-
desc: "SKUs exceeding planned forward cover.",
|
|
393
|
-
cardType: "standard"
|
|
394
|
-
},
|
|
395
|
-
{
|
|
396
|
-
id: "ob-vendor-share",
|
|
397
|
-
label: "Top vendor share",
|
|
398
|
-
value: "38%",
|
|
399
|
-
desc: "Share of overbought inventory concentrated in the top vendor.",
|
|
400
|
-
donut: !0,
|
|
401
|
-
accent: "#7c3aed",
|
|
402
|
-
cardType: "donut",
|
|
403
|
-
donutValue: 0.38,
|
|
404
|
-
accentColor: "#7c3aed"
|
|
405
|
-
}
|
|
406
|
-
]
|
|
407
|
-
},
|
|
408
|
-
"What's selling": {
|
|
409
|
-
primary: [
|
|
410
|
-
{
|
|
411
|
-
id: "ws-top-sku",
|
|
412
|
-
label: "Top SKU",
|
|
413
|
-
value: "SKU-9241",
|
|
414
|
-
desc: "Highest-velocity SKU over the trailing 7 days.",
|
|
415
|
-
startHere: !0,
|
|
416
|
-
cardType: "name"
|
|
417
|
-
},
|
|
418
|
-
{
|
|
419
|
-
id: "ws-velocity",
|
|
420
|
-
label: "Velocity Δ",
|
|
421
|
-
value: "+12.4%",
|
|
422
|
-
desc: "Rolling 7-day velocity change versus the prior comparable period.",
|
|
423
|
-
variants: ["1×1"],
|
|
424
|
-
cardType: "sparkline",
|
|
425
|
-
sparklineData: [10, 12, 15, 14, 18, 21, 19, 23, 25, 28]
|
|
426
|
-
},
|
|
427
|
-
{
|
|
428
|
-
id: "ws-sellthrough",
|
|
429
|
-
label: "Sell-through",
|
|
430
|
-
value: "see breakdown",
|
|
431
|
-
variants: ["1×5"],
|
|
432
|
-
subStats: [
|
|
433
|
-
{ label: "MTD", value: "64%" },
|
|
434
|
-
{ label: "QTD", value: "71%" },
|
|
435
|
-
{ label: "YTD", value: "68%" },
|
|
436
|
-
{ label: "LYTD", value: "62%" },
|
|
437
|
-
{ label: "7D", value: "74%" }
|
|
438
|
-
],
|
|
439
|
-
desc: "Sell-through across multiple windows.",
|
|
440
|
-
cardType: "stacked-group",
|
|
441
|
-
stackedTimeframes: ["MTD", "QTD", "YTD", "LYTD", "7D"]
|
|
442
|
-
}
|
|
443
|
-
],
|
|
444
|
-
secondary: [
|
|
445
|
-
{
|
|
446
|
-
id: "ws-new-arrivals",
|
|
447
|
-
label: "New arrival lift",
|
|
448
|
-
value: "+8.1%",
|
|
449
|
-
desc: "Velocity boost from new-arrival SKUs versus the assortment mean.",
|
|
450
|
-
isNew: !0,
|
|
451
|
-
cardType: "sparkline",
|
|
452
|
-
sparklineData: [3, 4, 5, 6, 6, 7, 8, 8]
|
|
453
|
-
}
|
|
454
|
-
]
|
|
455
|
-
},
|
|
456
|
-
"On track vs plan": {
|
|
457
|
-
primary: [
|
|
458
|
-
{
|
|
459
|
-
id: "pl-revenue-pace",
|
|
460
|
-
label: "Revenue pace",
|
|
461
|
-
value: "102%",
|
|
462
|
-
desc: "Revenue pace versus plan, period-to-date.",
|
|
463
|
-
donut: !0,
|
|
464
|
-
accent: "#16a34a",
|
|
465
|
-
startHere: !0,
|
|
466
|
-
cardType: "donut",
|
|
467
|
-
donutValue: 1.02,
|
|
468
|
-
accentColor: "#16a34a"
|
|
469
|
-
},
|
|
470
|
-
{
|
|
471
|
-
id: "pl-units-pace",
|
|
472
|
-
label: "Units pace",
|
|
473
|
-
value: "94%",
|
|
474
|
-
desc: "Units pace versus plan, period-to-date.",
|
|
475
|
-
donut: !0,
|
|
476
|
-
accent: "#f59e0b",
|
|
477
|
-
cardType: "donut",
|
|
478
|
-
donutValue: 0.94,
|
|
479
|
-
accentColor: "#f59e0b"
|
|
480
|
-
},
|
|
481
|
-
{
|
|
482
|
-
id: "pl-margin-pace",
|
|
483
|
-
label: "Margin pace",
|
|
484
|
-
value: "see breakdown",
|
|
485
|
-
variants: ["1×3"],
|
|
486
|
-
subStats: [
|
|
487
|
-
{ label: "MTD", value: "38.4%" },
|
|
488
|
-
{ label: "QTD", value: "37.9%" },
|
|
489
|
-
{ label: "YTD", value: "38.1%" }
|
|
490
|
-
],
|
|
491
|
-
desc: "Gross margin pace across multiple windows.",
|
|
492
|
-
cardType: "stacked-group",
|
|
493
|
-
stackedTimeframes: ["MTD", "QTD", "YTD"]
|
|
494
|
-
},
|
|
495
|
-
// PHASE 17 D1 — agency-revenue port (J1) + commission-economics port (J6)
|
|
496
347
|
{
|
|
497
348
|
id: "agency-sales",
|
|
498
349
|
label: "Sales",
|
|
@@ -500,15 +351,22 @@ const _e = {
|
|
|
500
351
|
desc: "Agency total sales with trend sparkline",
|
|
501
352
|
cardType: "sparkline",
|
|
502
353
|
sparklineData: [620, 640, 680, 700, 740, 760, 790, 820, 850, 892],
|
|
503
|
-
prefix: "$"
|
|
354
|
+
prefix: "$",
|
|
355
|
+
startHere: !0
|
|
504
356
|
},
|
|
505
357
|
{
|
|
506
|
-
id: "agency-
|
|
507
|
-
label: "
|
|
508
|
-
value: "$
|
|
509
|
-
desc: "
|
|
510
|
-
|
|
511
|
-
|
|
358
|
+
id: "agency-sales-stacked",
|
|
359
|
+
label: "Sales",
|
|
360
|
+
value: "$892,450",
|
|
361
|
+
desc: "Agency sales across three timeframes at a glance (MTD shown)",
|
|
362
|
+
variants: ["1×3"],
|
|
363
|
+
subStats: [
|
|
364
|
+
{ label: "MTD", value: "$892K" },
|
|
365
|
+
{ label: "QTD", value: "$2.4M" },
|
|
366
|
+
{ label: "YTD", value: "$8.6M" }
|
|
367
|
+
],
|
|
368
|
+
cardType: "stacked-group",
|
|
369
|
+
stackedTimeframes: ["MTD", "QTD", "YTD"]
|
|
512
370
|
},
|
|
513
371
|
{
|
|
514
372
|
id: "agency-growth",
|
|
@@ -528,6 +386,20 @@ const _e = {
|
|
|
528
386
|
sparklineData: [2100, 2150, 2200, 2180, 2250, 2280, 2300, 2320, 2335, 2340],
|
|
529
387
|
prefix: "$"
|
|
530
388
|
},
|
|
389
|
+
{
|
|
390
|
+
id: "agency-aov-stacked",
|
|
391
|
+
label: "Avg Order",
|
|
392
|
+
value: "$2,340",
|
|
393
|
+
desc: "Average order value across three timeframes",
|
|
394
|
+
variants: ["1×3"],
|
|
395
|
+
subStats: [
|
|
396
|
+
{ label: "MTD", value: "$2,340" },
|
|
397
|
+
{ label: "QTD", value: "$2,280" },
|
|
398
|
+
{ label: "YTD", value: "$2,210" }
|
|
399
|
+
],
|
|
400
|
+
cardType: "stacked-group",
|
|
401
|
+
stackedTimeframes: ["MTD", "QTD", "YTD"]
|
|
402
|
+
},
|
|
531
403
|
{
|
|
532
404
|
id: "agency-conversion",
|
|
533
405
|
label: "Conversion",
|
|
@@ -537,7 +409,9 @@ const _e = {
|
|
|
537
409
|
donutValue: 0.68,
|
|
538
410
|
accentColor: "#10b981",
|
|
539
411
|
suffix: "%"
|
|
540
|
-
}
|
|
412
|
+
}
|
|
413
|
+
],
|
|
414
|
+
secondary: [
|
|
541
415
|
{
|
|
542
416
|
id: "agency-revenue-compact",
|
|
543
417
|
label: "Total Revenue",
|
|
@@ -547,23 +421,6 @@ const _e = {
|
|
|
547
421
|
sparklineData: [620, 660, 700, 740, 780, 820, 860, 892],
|
|
548
422
|
prefix: "$"
|
|
549
423
|
},
|
|
550
|
-
// degrade-to-standard: stacked-group with MTD segment shown at span-1
|
|
551
|
-
{
|
|
552
|
-
id: "agency-sales-stacked",
|
|
553
|
-
label: "Sales",
|
|
554
|
-
value: "$892,450",
|
|
555
|
-
desc: "Agency sales across three timeframes at a glance (MTD shown)",
|
|
556
|
-
cardType: "stacked-group",
|
|
557
|
-
stackedTimeframes: ["MTD", "QTD", "YTD"]
|
|
558
|
-
},
|
|
559
|
-
{
|
|
560
|
-
id: "agency-aov-stacked",
|
|
561
|
-
label: "Avg Order",
|
|
562
|
-
value: "$2,340",
|
|
563
|
-
desc: "Average order value across three timeframes (MTD shown)",
|
|
564
|
-
cardType: "stacked-group",
|
|
565
|
-
stackedTimeframes: ["MTD", "QTD", "YTD"]
|
|
566
|
-
},
|
|
567
424
|
{
|
|
568
425
|
id: "agency-yoy-versus",
|
|
569
426
|
label: "YoY Comparison",
|
|
@@ -587,70 +444,19 @@ const _e = {
|
|
|
587
444
|
{ label: "C", value: 22, color: "#10b981" },
|
|
588
445
|
{ label: "D", value: 15, color: "#f59e0b" }
|
|
589
446
|
]
|
|
590
|
-
},
|
|
591
|
-
{
|
|
592
|
-
id: "agency-outstanding",
|
|
593
|
-
label: "Outstanding",
|
|
594
|
-
value: "$24,500",
|
|
595
|
-
desc: "Unpaid order balance across all accounts",
|
|
596
|
-
cardType: "standard",
|
|
597
|
-
prefix: "$"
|
|
598
|
-
},
|
|
599
|
-
{
|
|
600
|
-
id: "agency-commission-rate",
|
|
601
|
-
label: "Commission",
|
|
602
|
-
value: "8.4%",
|
|
603
|
-
desc: "Effective commission rate %",
|
|
604
|
-
cardType: "standard",
|
|
605
|
-
suffix: "%"
|
|
606
|
-
},
|
|
607
|
-
{
|
|
608
|
-
id: "agency-commission-aging",
|
|
609
|
-
label: "Commission Aging",
|
|
610
|
-
value: "$24K",
|
|
611
|
-
desc: "Unpaid commission aging by buckets",
|
|
612
|
-
cardType: "bars",
|
|
613
|
-
barData: [4, 8, 7, 5]
|
|
614
447
|
}
|
|
615
448
|
]
|
|
616
449
|
},
|
|
617
|
-
"
|
|
450
|
+
"Order flow": {
|
|
618
451
|
primary: [
|
|
619
|
-
{
|
|
620
|
-
id: "ot-on-time-rate",
|
|
621
|
-
label: "On-time rate",
|
|
622
|
-
value: "94.2%",
|
|
623
|
-
desc: "Share of orders shipped within SLA.",
|
|
624
|
-
startHere: !0,
|
|
625
|
-
cardType: "donut",
|
|
626
|
-
donutValue: 0.942,
|
|
627
|
-
accentColor: "#16a34a",
|
|
628
|
-
suffix: "%"
|
|
629
|
-
},
|
|
630
|
-
{
|
|
631
|
-
id: "ot-at-risk",
|
|
632
|
-
label: "At-risk shipments",
|
|
633
|
-
value: "18",
|
|
634
|
-
desc: "Open shipments projected to miss SLA.",
|
|
635
|
-
isNew: !0,
|
|
636
|
-
cardType: "highlight",
|
|
637
|
-
highlightColor: "#f59e0b"
|
|
638
|
-
},
|
|
639
|
-
// PHASE 17 D1 — agency-order-flow port (J5)
|
|
640
452
|
{
|
|
641
453
|
id: "agency-activity",
|
|
642
454
|
label: "Orders",
|
|
643
455
|
value: "47 Orders",
|
|
644
456
|
desc: "Daily team order count with bar chart",
|
|
645
457
|
cardType: "bars",
|
|
646
|
-
barData: [12, 18, 15, 22, 19, 25, 28]
|
|
647
|
-
|
|
648
|
-
{
|
|
649
|
-
id: "agency-unassigned-orders",
|
|
650
|
-
label: "Unassigned",
|
|
651
|
-
value: "0",
|
|
652
|
-
desc: "Orders awaiting salesperson assignment",
|
|
653
|
-
cardType: "standard"
|
|
458
|
+
barData: [12, 18, 15, 22, 19, 25, 28],
|
|
459
|
+
startHere: !0
|
|
654
460
|
},
|
|
655
461
|
{
|
|
656
462
|
id: "agency-orders-compact",
|
|
@@ -660,12 +466,17 @@ const _e = {
|
|
|
660
466
|
cardType: "bars",
|
|
661
467
|
barData: [18, 22, 19, 24, 26, 23, 28]
|
|
662
468
|
},
|
|
663
|
-
// degrade-to-standard: stacked-group with MTD segment shown at span-1
|
|
664
469
|
{
|
|
665
470
|
id: "agency-orders-stacked",
|
|
666
471
|
label: "Orders",
|
|
667
472
|
value: "156",
|
|
668
|
-
desc: "Order count across three timeframes
|
|
473
|
+
desc: "Order count across three timeframes",
|
|
474
|
+
variants: ["1×3"],
|
|
475
|
+
subStats: [
|
|
476
|
+
{ label: "MTD", value: "156" },
|
|
477
|
+
{ label: "QTD", value: "482" },
|
|
478
|
+
{ label: "YTD", value: "1,847" }
|
|
479
|
+
],
|
|
669
480
|
cardType: "stacked-group",
|
|
670
481
|
stackedTimeframes: ["MTD", "QTD", "YTD"]
|
|
671
482
|
},
|
|
@@ -677,6 +488,13 @@ const _e = {
|
|
|
677
488
|
cardType: "standard",
|
|
678
489
|
prefix: "$"
|
|
679
490
|
},
|
|
491
|
+
{
|
|
492
|
+
id: "agency-unassigned-orders",
|
|
493
|
+
label: "Unassigned",
|
|
494
|
+
value: "0",
|
|
495
|
+
desc: "Orders awaiting salesperson assignment",
|
|
496
|
+
cardType: "standard"
|
|
497
|
+
},
|
|
680
498
|
{
|
|
681
499
|
id: "agency-cancel-rate",
|
|
682
500
|
label: "Cancel Rate",
|
|
@@ -688,29 +506,37 @@ const _e = {
|
|
|
688
506
|
}
|
|
689
507
|
]
|
|
690
508
|
},
|
|
691
|
-
"
|
|
509
|
+
"Rep performance": {
|
|
692
510
|
primary: [
|
|
693
511
|
{
|
|
694
|
-
id: "
|
|
695
|
-
label: "
|
|
696
|
-
value: "
|
|
697
|
-
desc: "
|
|
698
|
-
|
|
699
|
-
|
|
512
|
+
id: "agency-top-rep",
|
|
513
|
+
label: "#1 Rep",
|
|
514
|
+
value: "Sarah Mitchell",
|
|
515
|
+
desc: "Top-performing rep on the team this period",
|
|
516
|
+
cardType: "name",
|
|
517
|
+
startHere: !0
|
|
700
518
|
},
|
|
701
519
|
{
|
|
702
|
-
id: "
|
|
703
|
-
label: "
|
|
704
|
-
value: "
|
|
705
|
-
desc: "
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
donutValue: 0.971,
|
|
710
|
-
accentColor: "#2563eb",
|
|
711
|
-
suffix: "%"
|
|
520
|
+
id: "agency-quota",
|
|
521
|
+
label: "Below Quota",
|
|
522
|
+
value: "3 of 12",
|
|
523
|
+
desc: "Reps currently tracking under their quota",
|
|
524
|
+
cardType: "ratio",
|
|
525
|
+
numerator: 3,
|
|
526
|
+
denominator: 12
|
|
712
527
|
},
|
|
713
|
-
|
|
528
|
+
{
|
|
529
|
+
id: "agency-rep-leaderboard-sales",
|
|
530
|
+
label: "Rep Sales",
|
|
531
|
+
value: "Top 5",
|
|
532
|
+
desc: "Sales leaderboard across the rep team",
|
|
533
|
+
cardType: "leaderboard",
|
|
534
|
+
catalogValue: "Top 5"
|
|
535
|
+
}
|
|
536
|
+
]
|
|
537
|
+
},
|
|
538
|
+
"Brand portfolio": {
|
|
539
|
+
primary: [
|
|
714
540
|
{
|
|
715
541
|
id: "agency-mfr-mix",
|
|
716
542
|
label: "Mfr Mix",
|
|
@@ -722,7 +548,8 @@ const _e = {
|
|
|
722
548
|
{ label: "B", value: 28, color: "#1d6fd8" },
|
|
723
549
|
{ label: "C", value: 22, color: "#10b981" },
|
|
724
550
|
{ label: "D", value: 15, color: "#f59e0b" }
|
|
725
|
-
]
|
|
551
|
+
],
|
|
552
|
+
startHere: !0
|
|
726
553
|
},
|
|
727
554
|
{
|
|
728
555
|
id: "agency-mfr-new-line",
|
|
@@ -733,58 +560,15 @@ const _e = {
|
|
|
733
560
|
}
|
|
734
561
|
]
|
|
735
562
|
},
|
|
736
|
-
"
|
|
563
|
+
"Account coverage": {
|
|
737
564
|
primary: [
|
|
738
|
-
{
|
|
739
|
-
id: "am-brand-mix",
|
|
740
|
-
label: "Brand mix",
|
|
741
|
-
value: "see breakdown",
|
|
742
|
-
variants: ["1×3"],
|
|
743
|
-
subStats: [
|
|
744
|
-
{ label: "Core", value: "58%" },
|
|
745
|
-
{ label: "Growth", value: "27%" },
|
|
746
|
-
{ label: "Test", value: "15%" }
|
|
747
|
-
],
|
|
748
|
-
desc: "Assortment mix across brand tiers.",
|
|
749
|
-
startHere: !0,
|
|
750
|
-
cardType: "segmented",
|
|
751
|
-
segments: [
|
|
752
|
-
{ label: "Core", value: 58, color: "#7c3aed" },
|
|
753
|
-
{ label: "Growth", value: 27, color: "#10b981" },
|
|
754
|
-
{ label: "Test", value: 15, color: "#f59e0b" }
|
|
755
|
-
]
|
|
756
|
-
}
|
|
757
|
-
]
|
|
758
|
-
},
|
|
759
|
-
"Customer retention": {
|
|
760
|
-
primary: [
|
|
761
|
-
{
|
|
762
|
-
id: "cr-repeat-rate",
|
|
763
|
-
label: "Repeat rate",
|
|
764
|
-
value: "62.4%",
|
|
765
|
-
desc: "Share of buyers placing two or more orders in the period.",
|
|
766
|
-
startHere: !0,
|
|
767
|
-
isNew: !0,
|
|
768
|
-
cardType: "donut",
|
|
769
|
-
donutValue: 0.624,
|
|
770
|
-
accentColor: "#1d6fd8",
|
|
771
|
-
suffix: "%"
|
|
772
|
-
},
|
|
773
|
-
{
|
|
774
|
-
id: "cr-lapsed",
|
|
775
|
-
label: "Lapsed accounts",
|
|
776
|
-
value: "47",
|
|
777
|
-
desc: "Accounts with zero orders in the last 90 days.",
|
|
778
|
-
cardType: "highlight",
|
|
779
|
-
highlightColor: "#f59e0b"
|
|
780
|
-
},
|
|
781
|
-
// PHASE 17 D1 — agency-account-coverage port (J4)
|
|
782
565
|
{
|
|
783
566
|
id: "agency-new-accounts",
|
|
784
567
|
label: "New Accounts",
|
|
785
568
|
value: "12",
|
|
786
569
|
desc: "New customer accounts opened this period",
|
|
787
|
-
cardType: "standard"
|
|
570
|
+
cardType: "standard",
|
|
571
|
+
startHere: !0
|
|
788
572
|
},
|
|
789
573
|
{
|
|
790
574
|
id: "agency-customers-compact",
|
|
@@ -811,6 +595,35 @@ const _e = {
|
|
|
811
595
|
suffix: "%"
|
|
812
596
|
}
|
|
813
597
|
]
|
|
598
|
+
},
|
|
599
|
+
Commission: {
|
|
600
|
+
primary: [
|
|
601
|
+
{
|
|
602
|
+
id: "agency-outstanding",
|
|
603
|
+
label: "Outstanding",
|
|
604
|
+
value: "$24,500",
|
|
605
|
+
desc: "Unpaid order balance across all accounts",
|
|
606
|
+
cardType: "standard",
|
|
607
|
+
prefix: "$",
|
|
608
|
+
startHere: !0
|
|
609
|
+
},
|
|
610
|
+
{
|
|
611
|
+
id: "agency-commission-rate",
|
|
612
|
+
label: "Commission",
|
|
613
|
+
value: "8.4%",
|
|
614
|
+
desc: "Effective commission rate %",
|
|
615
|
+
cardType: "standard",
|
|
616
|
+
suffix: "%"
|
|
617
|
+
},
|
|
618
|
+
{
|
|
619
|
+
id: "agency-commission-aging",
|
|
620
|
+
label: "Commission Aging",
|
|
621
|
+
value: "$24K",
|
|
622
|
+
desc: "Unpaid commission aging by buckets",
|
|
623
|
+
cardType: "bars",
|
|
624
|
+
barData: [4, 8, 7, 5]
|
|
625
|
+
}
|
|
626
|
+
]
|
|
814
627
|
}
|
|
815
628
|
};
|
|
816
629
|
function Ce({
|
|
@@ -818,7 +631,7 @@ function Ce({
|
|
|
818
631
|
activeLens: t,
|
|
819
632
|
onLensChange: r,
|
|
820
633
|
variant: l = "pills",
|
|
821
|
-
lensMeta: a =
|
|
634
|
+
lensMeta: a = ve
|
|
822
635
|
}) {
|
|
823
636
|
return l === "pills" ? /* @__PURE__ */ n("div", { className: "cat-pills-wrap", children: /* @__PURE__ */ n("div", { className: "cat-pills", role: "tablist", "aria-label": "Metric lenses", children: e.map((i) => {
|
|
824
637
|
const u = i === t, o = a[i], s = ["cat-pill"];
|
|
@@ -847,7 +660,7 @@ function je({
|
|
|
847
660
|
activeLens: t,
|
|
848
661
|
onLensChange: r
|
|
849
662
|
}) {
|
|
850
|
-
const [l, a] =
|
|
663
|
+
const [l, a] = A(!1), i = K(null), u = () => {
|
|
851
664
|
i.current != null && (window.clearTimeout(i.current), i.current = null);
|
|
852
665
|
}, o = () => {
|
|
853
666
|
u(), i.current = window.setTimeout(() => a(!1), 100);
|
|
@@ -939,7 +752,7 @@ function te({ tiles: e, selectedTileId: t, onSelectTile: r, renderTile: l }) {
|
|
|
939
752
|
style: { pointerEvents: "none", width: "100%", height: "100%" },
|
|
940
753
|
"aria-hidden": "true",
|
|
941
754
|
children: a.donut ? /* @__PURE__ */ n(
|
|
942
|
-
|
|
755
|
+
ce,
|
|
943
756
|
{
|
|
944
757
|
variant: "donut",
|
|
945
758
|
label: a.label,
|
|
@@ -950,7 +763,7 @@ function te({ tiles: e, selectedTileId: t, onSelectTile: r, renderTile: l }) {
|
|
|
950
763
|
colSpan: c
|
|
951
764
|
}
|
|
952
765
|
) : /* @__PURE__ */ n(
|
|
953
|
-
|
|
766
|
+
ce,
|
|
954
767
|
{
|
|
955
768
|
variant: "standard",
|
|
956
769
|
label: a.label,
|
|
@@ -968,12 +781,12 @@ function te({ tiles: e, selectedTileId: t, onSelectTile: r, renderTile: l }) {
|
|
|
968
781
|
);
|
|
969
782
|
}) });
|
|
970
783
|
}
|
|
971
|
-
const
|
|
972
|
-
function
|
|
973
|
-
return
|
|
784
|
+
const ae = fe(null);
|
|
785
|
+
function se() {
|
|
786
|
+
return ge(ae);
|
|
974
787
|
}
|
|
975
|
-
function
|
|
976
|
-
const r =
|
|
788
|
+
function At({ mode: e, dispatch: t }) {
|
|
789
|
+
const r = se();
|
|
977
790
|
if (r == null && e == null) return null;
|
|
978
791
|
const l = r?.mode ?? e ?? "add", a = r?.selectedTileId ?? null, i = r?.description ?? null, u = a == null;
|
|
979
792
|
return /* @__PURE__ */ f("div", { className: "panel-footer catalog", children: [
|
|
@@ -1015,7 +828,7 @@ function xt({ mode: e, dispatch: t }) {
|
|
|
1015
828
|
] })
|
|
1016
829
|
] });
|
|
1017
830
|
}
|
|
1018
|
-
function
|
|
831
|
+
function de(e, t) {
|
|
1019
832
|
if (t.length === 0) return !0;
|
|
1020
833
|
const r = t.toLowerCase();
|
|
1021
834
|
if (e.label.toLowerCase().includes(r) || e.value.toLowerCase().includes(r)) return !0;
|
|
@@ -1026,34 +839,37 @@ function ue(e, t) {
|
|
|
1026
839
|
return !1;
|
|
1027
840
|
}
|
|
1028
841
|
function Ze() {
|
|
1029
|
-
const t =
|
|
842
|
+
const t = se()?.description ?? null;
|
|
1030
843
|
return t == null ? /* @__PURE__ */ n("span", { style: { fontStyle: "italic" }, children: "Tap a metric to see its description" }) : /* @__PURE__ */ n("span", { children: t });
|
|
1031
844
|
}
|
|
1032
|
-
function
|
|
845
|
+
function xt({
|
|
1033
846
|
isOpen: e,
|
|
1034
|
-
lenses: t =
|
|
847
|
+
lenses: t = be,
|
|
1035
848
|
defaultLens: r = ye,
|
|
1036
849
|
tilesByLens: l = _e,
|
|
1037
|
-
lensMeta: a =
|
|
1038
|
-
renderTile: i
|
|
850
|
+
lensMeta: a = ve,
|
|
851
|
+
renderTile: i,
|
|
852
|
+
onAdd: u
|
|
1039
853
|
}) {
|
|
1040
|
-
const
|
|
1041
|
-
() =>
|
|
1042
|
-
[
|
|
1043
|
-
),
|
|
1044
|
-
() => (
|
|
1045
|
-
[
|
|
1046
|
-
),
|
|
854
|
+
const o = O(), [s, c] = A(r), [d, m] = A(null), [h, b] = A(null), [p, _] = A(""), P = l[s] ?? { primary: [] }, E = a[s], y = le(
|
|
855
|
+
() => P.primary.filter((S) => de(S, p)),
|
|
856
|
+
[P.primary, p]
|
|
857
|
+
), N = le(
|
|
858
|
+
() => (P.secondary ?? []).filter((S) => de(S, p)),
|
|
859
|
+
[P.secondary, p]
|
|
860
|
+
), I = () => {
|
|
861
|
+
d != null && u?.(d), o?.dispatch({ type: "CLOSE_PANEL", reason: "apply-button" });
|
|
862
|
+
}, R = () => o?.dispatch({ type: "CLOSE_PANEL", reason: "header-x" }), $ = d == null;
|
|
1047
863
|
return /* @__PURE__ */ n(
|
|
1048
|
-
|
|
864
|
+
ae.Provider,
|
|
1049
865
|
{
|
|
1050
|
-
value: { mode: "add", selectedTileId:
|
|
866
|
+
value: { mode: "add", selectedTileId: d, description: h },
|
|
1051
867
|
children: /* @__PURE__ */ n(
|
|
1052
|
-
|
|
868
|
+
Y,
|
|
1053
869
|
{
|
|
1054
870
|
variant: "no-stage",
|
|
1055
871
|
title: "Add a metric",
|
|
1056
|
-
onClose:
|
|
872
|
+
onClose: R,
|
|
1057
873
|
footer: {
|
|
1058
874
|
left: /* @__PURE__ */ n(Ze, {}),
|
|
1059
875
|
right: /* @__PURE__ */ n(
|
|
@@ -1063,7 +879,7 @@ function At({
|
|
|
1063
879
|
type: "button",
|
|
1064
880
|
className: "gloss-panel-chrome-v2__footer-btn gloss-panel-chrome-v2__footer-btn--primary",
|
|
1065
881
|
disabled: $,
|
|
1066
|
-
onClick:
|
|
882
|
+
onClick: I,
|
|
1067
883
|
children: "Add metric"
|
|
1068
884
|
}
|
|
1069
885
|
)
|
|
@@ -1076,19 +892,19 @@ function At({
|
|
|
1076
892
|
className: "cat-search-input",
|
|
1077
893
|
placeholder: "Search metrics",
|
|
1078
894
|
"aria-label": "Search metrics",
|
|
1079
|
-
value:
|
|
1080
|
-
onChange: (
|
|
895
|
+
value: p,
|
|
896
|
+
onChange: (S) => _(S.target.value)
|
|
1081
897
|
}
|
|
1082
898
|
) }),
|
|
1083
899
|
/* @__PURE__ */ n(
|
|
1084
900
|
Ce,
|
|
1085
901
|
{
|
|
1086
902
|
lenses: t,
|
|
1087
|
-
activeLens:
|
|
903
|
+
activeLens: s,
|
|
1088
904
|
lensMeta: a,
|
|
1089
905
|
variant: "pills",
|
|
1090
|
-
onLensChange: (
|
|
1091
|
-
|
|
906
|
+
onLensChange: (S) => {
|
|
907
|
+
c(S), m(null), b(null), _("");
|
|
1092
908
|
}
|
|
1093
909
|
}
|
|
1094
910
|
),
|
|
@@ -1099,31 +915,31 @@ function At({
|
|
|
1099
915
|
/* @__PURE__ */ n(
|
|
1100
916
|
te,
|
|
1101
917
|
{
|
|
1102
|
-
tiles:
|
|
1103
|
-
selectedTileId:
|
|
1104
|
-
onSelectTile: (
|
|
1105
|
-
|
|
918
|
+
tiles: y,
|
|
919
|
+
selectedTileId: d,
|
|
920
|
+
onSelectTile: (S, L) => {
|
|
921
|
+
m(S), b(L);
|
|
1106
922
|
},
|
|
1107
923
|
renderTile: i
|
|
1108
924
|
}
|
|
1109
925
|
),
|
|
1110
|
-
|
|
926
|
+
N.length > 0 && /* @__PURE__ */ f("div", { className: "cat-more-in-lens", children: [
|
|
1111
927
|
/* @__PURE__ */ n("div", { className: "cat-more-in-lens__heading", children: "MORE IN THIS LENS" }),
|
|
1112
928
|
/* @__PURE__ */ n(
|
|
1113
929
|
te,
|
|
1114
930
|
{
|
|
1115
|
-
tiles:
|
|
1116
|
-
selectedTileId:
|
|
1117
|
-
onSelectTile: (
|
|
1118
|
-
|
|
931
|
+
tiles: N,
|
|
932
|
+
selectedTileId: d,
|
|
933
|
+
onSelectTile: (S, L) => {
|
|
934
|
+
m(S), b(L);
|
|
1119
935
|
},
|
|
1120
936
|
renderTile: i
|
|
1121
937
|
}
|
|
1122
938
|
)
|
|
1123
939
|
] }),
|
|
1124
|
-
|
|
940
|
+
y.length === 0 && N.length === 0 && p.length > 0 && /* @__PURE__ */ f("div", { className: "cat-empty", children: [
|
|
1125
941
|
'No metrics match "',
|
|
1126
|
-
|
|
942
|
+
p,
|
|
1127
943
|
'".'
|
|
1128
944
|
] })
|
|
1129
945
|
] })
|
|
@@ -1133,28 +949,28 @@ function At({
|
|
|
1133
949
|
);
|
|
1134
950
|
}
|
|
1135
951
|
function Xe() {
|
|
1136
|
-
const t =
|
|
1137
|
-
return t == null ? /* @__PURE__ */ n("em", { children: "Tap a metric to see its description" }) : /* @__PURE__ */ n(
|
|
952
|
+
const t = se()?.description ?? null;
|
|
953
|
+
return t == null ? /* @__PURE__ */ n("em", { children: "Tap a metric to see its description" }) : /* @__PURE__ */ n(V, { children: t });
|
|
1138
954
|
}
|
|
1139
955
|
function kt({
|
|
1140
956
|
isOpen: e,
|
|
1141
957
|
replacingLabel: t,
|
|
1142
|
-
lenses: r =
|
|
958
|
+
lenses: r = be,
|
|
1143
959
|
defaultLens: l = ye,
|
|
1144
960
|
tilesByLens: a = _e,
|
|
1145
961
|
renderTile: i
|
|
1146
962
|
}) {
|
|
1147
|
-
const u = O(), [o, s] =
|
|
963
|
+
const u = O(), [o, s] = A(l), [c, d] = A(null), [m, h] = A(null), b = a[o] ?? { primary: [] }, p = [...b.primary, ...b.secondary ?? []], _ = () => u?.dispatch({ type: "CLOSE_PANEL", reason: "apply-button" }), P = () => u?.dispatch({ type: "CLOSE_PANEL", reason: "header-x" }), E = c == null;
|
|
1148
964
|
return /* @__PURE__ */ n(
|
|
1149
|
-
|
|
965
|
+
ae.Provider,
|
|
1150
966
|
{
|
|
1151
967
|
value: { mode: "replace", selectedTileId: c, description: m },
|
|
1152
968
|
children: /* @__PURE__ */ n(
|
|
1153
|
-
|
|
969
|
+
Y,
|
|
1154
970
|
{
|
|
1155
971
|
variant: "no-stage",
|
|
1156
972
|
title: "Replace metric",
|
|
1157
|
-
onClose:
|
|
973
|
+
onClose: P,
|
|
1158
974
|
footer: {
|
|
1159
975
|
left: /* @__PURE__ */ n(Xe, {}),
|
|
1160
976
|
right: /* @__PURE__ */ n(
|
|
@@ -1163,8 +979,8 @@ function kt({
|
|
|
1163
979
|
id: "btn-cat-replace",
|
|
1164
980
|
type: "button",
|
|
1165
981
|
className: "gloss-panel-chrome-v2__footer-btn gloss-panel-chrome-v2__footer-btn--primary",
|
|
1166
|
-
disabled:
|
|
1167
|
-
onClick:
|
|
982
|
+
disabled: E,
|
|
983
|
+
onClick: _,
|
|
1168
984
|
children: "Replace metric"
|
|
1169
985
|
}
|
|
1170
986
|
)
|
|
@@ -1179,8 +995,8 @@ function kt({
|
|
|
1179
995
|
{
|
|
1180
996
|
lenses: r,
|
|
1181
997
|
activeLens: o,
|
|
1182
|
-
onLensChange: (
|
|
1183
|
-
s(
|
|
998
|
+
onLensChange: (y) => {
|
|
999
|
+
s(y), d(null), h(null);
|
|
1184
1000
|
}
|
|
1185
1001
|
}
|
|
1186
1002
|
),
|
|
@@ -1189,8 +1005,8 @@ function kt({
|
|
|
1189
1005
|
{
|
|
1190
1006
|
tiles: p,
|
|
1191
1007
|
selectedTileId: c,
|
|
1192
|
-
onSelectTile: (
|
|
1193
|
-
d(
|
|
1008
|
+
onSelectTile: (y, N) => {
|
|
1009
|
+
d(y), h(N);
|
|
1194
1010
|
},
|
|
1195
1011
|
renderTile: i
|
|
1196
1012
|
}
|
|
@@ -1201,12 +1017,12 @@ function kt({
|
|
|
1201
1017
|
}
|
|
1202
1018
|
);
|
|
1203
1019
|
}
|
|
1204
|
-
const Ne =
|
|
1205
|
-
function
|
|
1206
|
-
return
|
|
1020
|
+
const Ne = fe(null);
|
|
1021
|
+
function Se() {
|
|
1022
|
+
return ge(Ne);
|
|
1207
1023
|
}
|
|
1208
1024
|
function Je(e = {}) {
|
|
1209
|
-
const t =
|
|
1025
|
+
const t = Se(), r = t?.createPage, l = t?.setPages;
|
|
1210
1026
|
return /* @__PURE__ */ f(
|
|
1211
1027
|
"div",
|
|
1212
1028
|
{
|
|
@@ -1237,12 +1053,12 @@ function Je(e = {}) {
|
|
|
1237
1053
|
}
|
|
1238
1054
|
);
|
|
1239
1055
|
}
|
|
1240
|
-
function
|
|
1241
|
-
const i =
|
|
1242
|
-
|
|
1056
|
+
function ue({ page: e, onRename: t, onKebab: r, onDragStart: l, onSwitchPage: a }) {
|
|
1057
|
+
const i = Se(), [u, o] = A(!1), s = K(null);
|
|
1058
|
+
F(() => {
|
|
1243
1059
|
if (!u) return;
|
|
1244
|
-
const p = (
|
|
1245
|
-
s.current && (s.current.contains(
|
|
1060
|
+
const p = (_) => {
|
|
1061
|
+
s.current && (s.current.contains(_.target) || o(!1));
|
|
1246
1062
|
};
|
|
1247
1063
|
return document.addEventListener("mousedown", p, !0), () => document.removeEventListener("mousedown", p, !0);
|
|
1248
1064
|
}, [u]);
|
|
@@ -1294,7 +1110,7 @@ function pe({ page: e, onRename: t, onKebab: r, onDragStart: l, onSwitchPage: a
|
|
|
1294
1110
|
onMouseDown: (p) => p.stopPropagation(),
|
|
1295
1111
|
onClick: (p) => {
|
|
1296
1112
|
if (p.stopPropagation(), r) return r(e.id);
|
|
1297
|
-
o((
|
|
1113
|
+
o((_) => !_);
|
|
1298
1114
|
},
|
|
1299
1115
|
children: "⋯"
|
|
1300
1116
|
}
|
|
@@ -1343,39 +1159,39 @@ function Dt({
|
|
|
1343
1159
|
onCreatePage: s,
|
|
1344
1160
|
onSwitchPage: c
|
|
1345
1161
|
}) {
|
|
1346
|
-
const d = O(), [m, h] =
|
|
1347
|
-
h((
|
|
1348
|
-
}, []), p =
|
|
1162
|
+
const d = O(), [m, h] = A(() => [...t]), b = D((g, C) => {
|
|
1163
|
+
h((w) => w.map((x) => x.id === g ? { ...x, name: C } : x));
|
|
1164
|
+
}, []), p = D((g) => {
|
|
1349
1165
|
h((C) => {
|
|
1350
|
-
const
|
|
1351
|
-
if (!
|
|
1352
|
-
const
|
|
1353
|
-
id: `${
|
|
1354
|
-
name: `${
|
|
1166
|
+
const w = C.find((z) => z.id === g);
|
|
1167
|
+
if (!w) return C;
|
|
1168
|
+
const x = {
|
|
1169
|
+
id: `${w.id}-copy-${Date.now()}`,
|
|
1170
|
+
name: `${w.name} copy`,
|
|
1355
1171
|
active: !1
|
|
1356
|
-
},
|
|
1357
|
-
return [...C.slice(0,
|
|
1172
|
+
}, k = C.findIndex((z) => z.id === g);
|
|
1173
|
+
return [...C.slice(0, k + 1), x, ...C.slice(k + 1)];
|
|
1358
1174
|
});
|
|
1359
|
-
}, []),
|
|
1360
|
-
h((C) => C.filter((
|
|
1361
|
-
}, []),
|
|
1175
|
+
}, []), _ = D((g) => {
|
|
1176
|
+
h((C) => C.filter((w) => w.id !== g));
|
|
1177
|
+
}, []), P = D((g) => {
|
|
1362
1178
|
h((C) => {
|
|
1363
|
-
const
|
|
1364
|
-
return
|
|
1179
|
+
const w = new Map(C.map((k) => [k.id, k])), x = g.map((k) => w.get(k)).filter(Boolean);
|
|
1180
|
+
return x.length === C.length ? x : C;
|
|
1365
1181
|
});
|
|
1366
|
-
}, []),
|
|
1182
|
+
}, []), E = r != null, y = E ? r : m, N = l != null ? y.map((g) => ({ ...g, active: g.id === l })) : [...y], I = a ?? (E ? void 0 : b), R = i ?? (E ? void 0 : p), $ = u ?? (E ? void 0 : _), S = o ?? (E ? void 0 : P), L = D(
|
|
1367
1183
|
(g) => {
|
|
1368
|
-
|
|
1184
|
+
E || h(g);
|
|
1369
1185
|
},
|
|
1370
|
-
[
|
|
1371
|
-
),
|
|
1186
|
+
[E]
|
|
1187
|
+
), q = D(
|
|
1372
1188
|
(g) => {
|
|
1373
|
-
const C = g[0]?.items.map((
|
|
1374
|
-
C.length > 0 &&
|
|
1189
|
+
const C = g[0]?.items.map((w) => w.id) ?? [];
|
|
1190
|
+
C.length > 0 && S && S(C);
|
|
1375
1191
|
},
|
|
1376
|
-
[
|
|
1377
|
-
),
|
|
1378
|
-
|
|
1192
|
+
[S]
|
|
1193
|
+
), Q = N.map((g) => `${g.id}:${g.name}`).join("|"), W = S != null && N.length > 1 ? /* @__PURE__ */ n(
|
|
1194
|
+
Pe,
|
|
1379
1195
|
{
|
|
1380
1196
|
zones: [
|
|
1381
1197
|
{
|
|
@@ -1383,10 +1199,10 @@ function Dt({
|
|
|
1383
1199
|
items: N.map((g) => ({ ...g, id: g.id }))
|
|
1384
1200
|
}
|
|
1385
1201
|
],
|
|
1386
|
-
onZoneChange:
|
|
1387
|
-
renderZone: (g, C,
|
|
1202
|
+
onZoneChange: q,
|
|
1203
|
+
renderZone: (g, C, w) => /* @__PURE__ */ n("div", { className: "pm-list", role: "list", children: w }),
|
|
1388
1204
|
renderItem: (g) => /* @__PURE__ */ n(
|
|
1389
|
-
|
|
1205
|
+
ue,
|
|
1390
1206
|
{
|
|
1391
1207
|
page: g,
|
|
1392
1208
|
onSwitchPage: c
|
|
@@ -1394,35 +1210,35 @@ function Dt({
|
|
|
1394
1210
|
g.id
|
|
1395
1211
|
)
|
|
1396
1212
|
},
|
|
1397
|
-
|
|
1213
|
+
Q
|
|
1398
1214
|
) : /* @__PURE__ */ n("div", { className: "pm-list", role: "list", children: N.map((g) => /* @__PURE__ */ n(
|
|
1399
|
-
|
|
1215
|
+
ue,
|
|
1400
1216
|
{
|
|
1401
1217
|
page: g,
|
|
1402
1218
|
onSwitchPage: c
|
|
1403
1219
|
},
|
|
1404
1220
|
g.id
|
|
1405
|
-
)) }),
|
|
1221
|
+
)) }), G = () => d?.dispatch({ type: "CLOSE_PANEL", reason: "header-x" });
|
|
1406
1222
|
return /* @__PURE__ */ n(
|
|
1407
1223
|
Ne.Provider,
|
|
1408
1224
|
{
|
|
1409
1225
|
value: {
|
|
1410
1226
|
pages: N,
|
|
1411
|
-
setPages:
|
|
1227
|
+
setPages: L,
|
|
1412
1228
|
renamePage: I,
|
|
1413
|
-
duplicatePage:
|
|
1414
|
-
deletePage:
|
|
1229
|
+
duplicatePage: R,
|
|
1230
|
+
deletePage: $,
|
|
1415
1231
|
// Sprint 2026-05-20 — propagate live create binding for footer.
|
|
1416
1232
|
createPage: s
|
|
1417
1233
|
},
|
|
1418
1234
|
children: /* @__PURE__ */ n(
|
|
1419
|
-
|
|
1235
|
+
Y,
|
|
1420
1236
|
{
|
|
1421
1237
|
variant: "no-stage",
|
|
1422
1238
|
title: "Manage pages",
|
|
1423
|
-
onClose:
|
|
1239
|
+
onClose: G,
|
|
1424
1240
|
footer: { right: /* @__PURE__ */ n(Je, {}) },
|
|
1425
|
-
children: /* @__PURE__ */ n("div", { "data-shell": "page-management", "aria-hidden": !e, children:
|
|
1241
|
+
children: /* @__PURE__ */ n("div", { "data-shell": "page-management", "aria-hidden": !e, children: W })
|
|
1426
1242
|
}
|
|
1427
1243
|
)
|
|
1428
1244
|
}
|
|
@@ -1449,8 +1265,8 @@ const Lt = {
|
|
|
1449
1265
|
background: "rgba(0, 0, 0, 0.04)"
|
|
1450
1266
|
};
|
|
1451
1267
|
function Ot() {
|
|
1452
|
-
const { state: e, dispatch: t, getCloseLog: r } =
|
|
1453
|
-
|
|
1268
|
+
const { state: e, dispatch: t, getCloseLog: r } = Te();
|
|
1269
|
+
F(() => {
|
|
1454
1270
|
if (e.activePanelId == null) return;
|
|
1455
1271
|
function i(u) {
|
|
1456
1272
|
u.key === "Escape" && t({ type: "CLOSE_PANEL", reason: "escape-key" });
|
|
@@ -1458,9 +1274,9 @@ function Ot() {
|
|
|
1458
1274
|
return document.addEventListener("keydown", i), () => document.removeEventListener("keydown", i);
|
|
1459
1275
|
}, [e.activePanelId, t]);
|
|
1460
1276
|
const l = K(e);
|
|
1461
|
-
|
|
1277
|
+
xe(() => {
|
|
1462
1278
|
l.current = e;
|
|
1463
|
-
}),
|
|
1279
|
+
}), F(() => {
|
|
1464
1280
|
if (process.env.NODE_ENV === "production") return;
|
|
1465
1281
|
const i = window;
|
|
1466
1282
|
return i.__panelsHostHandle && console.warn("[panels] multiple PanelHost/PanelHostShell instances mounted; dev handle is unreliable"), i.__panelsHostHandle = {
|
|
@@ -1471,7 +1287,7 @@ function Ot() {
|
|
|
1471
1287
|
i.__panelsHostHandle?.dispatch === t && delete window.__panelsHostHandle;
|
|
1472
1288
|
};
|
|
1473
1289
|
}, [t, r]);
|
|
1474
|
-
const a =
|
|
1290
|
+
const a = D(() => {
|
|
1475
1291
|
t({ type: "CLOSE_PANEL", reason: "nav-escape-hatch" });
|
|
1476
1292
|
}, [t]);
|
|
1477
1293
|
return /* @__PURE__ */ n("div", { "data-panel-host": "true", style: tt, children: e.activePanelId != null && /* @__PURE__ */ n(
|
|
@@ -1485,8 +1301,8 @@ function Ot() {
|
|
|
1485
1301
|
}
|
|
1486
1302
|
const at = 700;
|
|
1487
1303
|
function st(e) {
|
|
1488
|
-
const [t, r] =
|
|
1489
|
-
return
|
|
1304
|
+
const [t, r] = A(null), l = K(null);
|
|
1305
|
+
return F(() => {
|
|
1490
1306
|
if (e != null) {
|
|
1491
1307
|
l.current != null && (clearTimeout(l.current), l.current = null), r(null);
|
|
1492
1308
|
return;
|
|
@@ -1496,7 +1312,7 @@ function st(e) {
|
|
|
1496
1312
|
}, at), () => {
|
|
1497
1313
|
l.current != null && (clearTimeout(l.current), l.current = null);
|
|
1498
1314
|
};
|
|
1499
|
-
}, [e]),
|
|
1315
|
+
}, [e]), F(() => {
|
|
1500
1316
|
e != null && r(e);
|
|
1501
1317
|
}, [e]), e != null ? { panelId: e, isOpen: !0 } : t != null ? { panelId: t, isOpen: !1 } : { panelId: null, isOpen: !1 };
|
|
1502
1318
|
}
|
|
@@ -1507,13 +1323,13 @@ function Mt({ panelComponents: e, children: t }) {
|
|
|
1507
1323
|
return u == null && t == null ? (process.env.NODE_ENV !== "production" && console.error(
|
|
1508
1324
|
"[panels] No panel component registered for activePanelId:",
|
|
1509
1325
|
a
|
|
1510
|
-
), null) : /* @__PURE__ */ n(
|
|
1326
|
+
), null) : /* @__PURE__ */ n(Ae, { isOpen: i, children: u != null ? /* @__PURE__ */ n(u, { isOpen: i }) : t });
|
|
1511
1327
|
}
|
|
1512
|
-
function
|
|
1328
|
+
function pe(e) {
|
|
1513
1329
|
return e === null ? null : e.kind === "manage-pages-action" ? `global-${e.align ?? "left"}` : e.kind === "card-overflow" || e.kind === "empty-cell" ? `section-${e.sectionIndex}` : null;
|
|
1514
1330
|
}
|
|
1515
|
-
const rt = 685,
|
|
1516
|
-
function
|
|
1331
|
+
const rt = 685, me = 627, ot = "cubic-bezier(0.22, 1, 0.36, 1)", lt = 200;
|
|
1332
|
+
function Ee(e, t) {
|
|
1517
1333
|
if (typeof window > "u") return t;
|
|
1518
1334
|
const r = window.getComputedStyle(document.documentElement).getPropertyValue(e).trim();
|
|
1519
1335
|
if (!r) return t;
|
|
@@ -1523,13 +1339,13 @@ function Se(e, t) {
|
|
|
1523
1339
|
function it(e, t) {
|
|
1524
1340
|
return typeof window > "u" ? t : window.getComputedStyle(document.documentElement).getPropertyValue(e).trim() || t;
|
|
1525
1341
|
}
|
|
1526
|
-
function
|
|
1342
|
+
function U(e) {
|
|
1527
1343
|
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger });
|
|
1528
1344
|
}
|
|
1529
1345
|
function ct(e) {
|
|
1530
1346
|
const { mountEl: t, chromeEl: r, reducedMotion: l, onAssert: a } = e;
|
|
1531
1347
|
if (t == null || r == null) {
|
|
1532
|
-
|
|
1348
|
+
U(e), a?.({ branch: "slide-fallback-no-dom", timestamp: Date.now() });
|
|
1533
1349
|
return;
|
|
1534
1350
|
}
|
|
1535
1351
|
if (l) {
|
|
@@ -1537,12 +1353,12 @@ function ct(e) {
|
|
|
1537
1353
|
return;
|
|
1538
1354
|
}
|
|
1539
1355
|
if (typeof r.animate != "function") {
|
|
1540
|
-
|
|
1356
|
+
U(e), a?.({ branch: "slide-no-waapi", timestamp: Date.now() });
|
|
1541
1357
|
return;
|
|
1542
1358
|
}
|
|
1543
1359
|
const i = r.cloneNode(!0);
|
|
1544
1360
|
i.id = "panel-chrome-frozen", i.style.cssText = "position:absolute;left:8px;right:8px;top:8px;z-index:1;pointer-events:none;", t.appendChild(i), r.style.zIndex = "2", e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger });
|
|
1545
|
-
const u =
|
|
1361
|
+
const u = Ee("--panel-open-dur", rt), o = it("--panel-easing", ot), s = r.animate(
|
|
1546
1362
|
[{ transform: "translateY(100%)" }, { transform: "translateY(0)" }],
|
|
1547
1363
|
{ duration: u, easing: o, fill: "forwards" }
|
|
1548
1364
|
);
|
|
@@ -1557,10 +1373,10 @@ function ct(e) {
|
|
|
1557
1373
|
function dt(e) {
|
|
1558
1374
|
const { mountEl: t, onAssert: r } = e;
|
|
1559
1375
|
if (t == null) {
|
|
1560
|
-
e.dispatch({ type: "CLOSE_PANEL", reason: "mutex-handoff" }), setTimeout(() =>
|
|
1376
|
+
e.dispatch({ type: "CLOSE_PANEL", reason: "mutex-handoff" }), setTimeout(() => U(e), me), r?.({ branch: "handoff-fallback-no-mount", timestamp: Date.now() });
|
|
1561
1377
|
return;
|
|
1562
1378
|
}
|
|
1563
|
-
const l =
|
|
1379
|
+
const l = Ee("--panel-close-dur", me);
|
|
1564
1380
|
let a = !1, i = null;
|
|
1565
1381
|
const u = (s) => {
|
|
1566
1382
|
s.target !== t || s.propertyName !== "max-height" || a || (a = !0, i != null && clearTimeout(i), t.removeEventListener("transitionend", u), e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }), r?.({ branch: "handoff-complete", timestamp: Date.now() }));
|
|
@@ -1575,7 +1391,7 @@ function ut(e) {
|
|
|
1575
1391
|
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }), r?.({ branch: "blocked-dirty", timestamp: Date.now() });
|
|
1576
1392
|
return;
|
|
1577
1393
|
}
|
|
1578
|
-
const l =
|
|
1394
|
+
const l = pe(t.activeTrigger), a = pe(e.trigger);
|
|
1579
1395
|
if (!!t.activePanelId && l != null && l === a) {
|
|
1580
1396
|
ct(e);
|
|
1581
1397
|
return;
|
|
@@ -1584,15 +1400,15 @@ function ut(e) {
|
|
|
1584
1400
|
dt(e);
|
|
1585
1401
|
return;
|
|
1586
1402
|
}
|
|
1587
|
-
|
|
1403
|
+
U(e), r?.({ branch: "fresh-open", timestamp: Date.now() });
|
|
1588
1404
|
}
|
|
1589
1405
|
function pt() {
|
|
1590
1406
|
if (!(typeof window > "u"))
|
|
1591
1407
|
return window.__panelsAsserter;
|
|
1592
1408
|
}
|
|
1593
1409
|
function It() {
|
|
1594
|
-
const e = O(), t =
|
|
1595
|
-
return
|
|
1410
|
+
const e = O(), t = he();
|
|
1411
|
+
return D(
|
|
1596
1412
|
(r, l) => {
|
|
1597
1413
|
if (!e)
|
|
1598
1414
|
return;
|
|
@@ -1613,10 +1429,10 @@ function It() {
|
|
|
1613
1429
|
[e, t]
|
|
1614
1430
|
);
|
|
1615
1431
|
}
|
|
1616
|
-
function
|
|
1432
|
+
function Rt({ children: e }) {
|
|
1617
1433
|
return /* @__PURE__ */ n("div", { className: "clone-stage", children: e });
|
|
1618
1434
|
}
|
|
1619
|
-
let
|
|
1435
|
+
let B = !1, j = null;
|
|
1620
1436
|
function ne() {
|
|
1621
1437
|
const e = [];
|
|
1622
1438
|
let t = "cleaned";
|
|
@@ -1641,21 +1457,21 @@ function ne() {
|
|
|
1641
1457
|
};
|
|
1642
1458
|
}
|
|
1643
1459
|
const Z = "8px 8px 0px", X = "64px", J = "inset(0px 0px 60px 0px)", ee = "inset(0px -40px -40px -40px)";
|
|
1644
|
-
function
|
|
1460
|
+
function v(e, t, r, l, a) {
|
|
1645
1461
|
return { id: e, constraint: t, expected: r, actual: l, pass: a };
|
|
1646
1462
|
}
|
|
1647
1463
|
function M(e) {
|
|
1648
1464
|
const t = parseInt(e, 10);
|
|
1649
1465
|
return Number.isFinite(t) ? t : NaN;
|
|
1650
1466
|
}
|
|
1651
|
-
function
|
|
1467
|
+
function re() {
|
|
1652
1468
|
const e = [], t = document.querySelector(".gloss-panel-mount"), r = t?.querySelector(".gloss-panel-chrome") ?? null, l = document.querySelector(".gloss-panel-coordinator") ?? document.querySelector("[data-panel-coordinator]"), a = document.querySelector(".bell-cutout"), i = document.querySelector(".bell-popover"), u = document.querySelector(".gloss-bottom-toolbar");
|
|
1653
1469
|
if (!t)
|
|
1654
|
-
e.push(
|
|
1470
|
+
e.push(v("C1", "mount --reveal-y matches clip-path inset-bottom Npx", "mount present", "absent", !1));
|
|
1655
1471
|
else {
|
|
1656
1472
|
const o = getComputedStyle(t), s = o.getPropertyValue("--reveal-y").trim() || t.style.getPropertyValue("--reveal-y").trim(), c = o.clipPath || t.style.clipPath || "", d = c.match(/inset\(\s*0(?:px)?\s+0(?:px)?\s+(\d+)px\s+0(?:px)?\s*\)/), m = d ? parseInt(d[1], 10) : NaN, h = M(s), b = Number.isFinite(m) && Number.isFinite(h) && m === h;
|
|
1657
1473
|
e.push(
|
|
1658
|
-
|
|
1474
|
+
v(
|
|
1659
1475
|
"C1",
|
|
1660
1476
|
"mount --reveal-y matches clip-path inset-bottom Npx",
|
|
1661
1477
|
`inset(0 0 ${h}px 0) === --reveal-y(${h}px)`,
|
|
@@ -1665,19 +1481,19 @@ function oe() {
|
|
|
1665
1481
|
);
|
|
1666
1482
|
}
|
|
1667
1483
|
if (!t)
|
|
1668
|
-
e.push(
|
|
1484
|
+
e.push(v("C2", "mount padding constant", Z, "absent", !1));
|
|
1669
1485
|
else {
|
|
1670
1486
|
const o = t.style.padding, s = getComputedStyle(t), c = o || s.padding || "", d = c === Z || c === "8px 8px 0px 8px";
|
|
1671
|
-
e.push(
|
|
1487
|
+
e.push(v("C2", "mount padding constant", Z, c || "n/a", d));
|
|
1672
1488
|
}
|
|
1673
1489
|
if (!t)
|
|
1674
|
-
e.push(
|
|
1490
|
+
e.push(v("C3", "mount.bottom resolves to var(--tb-h)=64px", X, "absent", !1));
|
|
1675
1491
|
else {
|
|
1676
1492
|
const s = getComputedStyle(t).bottom || t.style.bottom || "", c = s === X;
|
|
1677
|
-
e.push(
|
|
1493
|
+
e.push(v("C3", "mount.bottom resolves to var(--tb-h)=64px", X, s || "n/a", c));
|
|
1678
1494
|
}
|
|
1679
1495
|
if (!r)
|
|
1680
|
-
e.push(
|
|
1496
|
+
e.push(v("C4", "panel-chrome height formula = (row-h*3)+(row-gap*3)-8px", "formula match", "absent", !1));
|
|
1681
1497
|
else {
|
|
1682
1498
|
const o = getComputedStyle(r), s = M(
|
|
1683
1499
|
o.getPropertyValue("--row-h").trim() || r.style.getPropertyValue("--row-h").trim() || "0"
|
|
@@ -1685,7 +1501,7 @@ function oe() {
|
|
|
1685
1501
|
o.getPropertyValue("--row-gap").trim() || r.style.getPropertyValue("--row-gap").trim() || "0"
|
|
1686
1502
|
), d = s * 3 + c * 3 - 8, m = M(o.height || r.style.height || ""), h = Number.isFinite(s) && Number.isFinite(c) && Number.isFinite(m) && Number.isFinite(d) && m === d;
|
|
1687
1503
|
e.push(
|
|
1688
|
-
|
|
1504
|
+
v(
|
|
1689
1505
|
"C4",
|
|
1690
1506
|
"panel-chrome height formula = (row-h*3)+(row-gap*3)-8px",
|
|
1691
1507
|
`${d}px (rh=${s} rg=${c})`,
|
|
@@ -1696,7 +1512,7 @@ function oe() {
|
|
|
1696
1512
|
}
|
|
1697
1513
|
if (!l || !r)
|
|
1698
1514
|
e.push(
|
|
1699
|
-
|
|
1515
|
+
v(
|
|
1700
1516
|
"C5",
|
|
1701
1517
|
'coordinator perspective + origin "center bottom"; chrome perspective-style flat',
|
|
1702
1518
|
"present",
|
|
@@ -1705,14 +1521,14 @@ function oe() {
|
|
|
1705
1521
|
)
|
|
1706
1522
|
);
|
|
1707
1523
|
else {
|
|
1708
|
-
const o = getComputedStyle(l), s = getComputedStyle(r), c = o.perspective || l.style.perspective || "", d = (o.perspectiveOrigin || l.style.perspectiveOrigin || "").trim(), m = s.perspectiveStyle || r.style.perspectiveStyle || "",
|
|
1524
|
+
const o = getComputedStyle(l), s = getComputedStyle(r), c = o.perspective || l.style.perspective || "", d = (o.perspectiveOrigin || l.style.perspectiveOrigin || "").trim(), m = s.perspectiveStyle || r.style.perspectiveStyle || "", _ = c !== "" && c !== "none" && (d === "center bottom" || d === "50% 100%") && m === "flat";
|
|
1709
1525
|
e.push(
|
|
1710
|
-
|
|
1526
|
+
v(
|
|
1711
1527
|
"C5",
|
|
1712
1528
|
'coordinator perspective + origin "center bottom"; chrome perspective-style flat',
|
|
1713
1529
|
"perspective:not-none, origin:center bottom, chrome-style:flat",
|
|
1714
1530
|
`perspective=${c} origin=${d} chrome-style=${m}`,
|
|
1715
|
-
|
|
1531
|
+
_
|
|
1716
1532
|
)
|
|
1717
1533
|
);
|
|
1718
1534
|
}
|
|
@@ -1728,8 +1544,8 @@ function oe() {
|
|
|
1728
1544
|
}
|
|
1729
1545
|
for (const m of d)
|
|
1730
1546
|
if (m.name === "stage-spin") {
|
|
1731
|
-
const b = Array.from(m.cssRules), p = b.find((N) => N.keyText === "0%" || N.keyText === "from"),
|
|
1732
|
-
o =
|
|
1547
|
+
const b = Array.from(m.cssRules), p = b.find((N) => N.keyText === "0%" || N.keyText === "from"), _ = b.find((N) => N.keyText === "100%" || N.keyText === "to"), P = p?.style.transform ?? "", E = _?.style.transform ?? "", y = /rotateY\(\s*0(?:deg)?\s*\)/;
|
|
1548
|
+
o = y.test(P) && y.test(E), s = `0%=${P || "n/a"} 100%=${E || "n/a"}`;
|
|
1733
1549
|
break;
|
|
1734
1550
|
}
|
|
1735
1551
|
if (s !== "absent") break;
|
|
@@ -1738,7 +1554,7 @@ function oe() {
|
|
|
1738
1554
|
s = "inspection-error";
|
|
1739
1555
|
}
|
|
1740
1556
|
e.push(
|
|
1741
|
-
|
|
1557
|
+
v(
|
|
1742
1558
|
"C6",
|
|
1743
1559
|
"@keyframes stage-spin 0% AND 100% anchor at rotateY(0)",
|
|
1744
1560
|
"both frames rotateY(0)",
|
|
@@ -1750,15 +1566,15 @@ function oe() {
|
|
|
1750
1566
|
{
|
|
1751
1567
|
const o = document.documentElement, s = getComputedStyle(o), c = s.getPropertyValue("--panel-open-dur").trim() || o.style.getPropertyValue("--panel-open-dur").trim(), d = s.getPropertyValue("--panel-close-dur").trim() || o.style.getPropertyValue("--panel-close-dur").trim(), m = M(c) || parseFloat(c) * (c.endsWith("s") && !c.endsWith("ms") ? 1e3 : 1), h = M(d) || parseFloat(d) * (d.endsWith("s") && !d.endsWith("ms") ? 1e3 : 1), b = Number.isFinite(m) && Number.isFinite(h) && m > h;
|
|
1752
1568
|
e.push(
|
|
1753
|
-
|
|
1569
|
+
v("C7", "--panel-open-dur > --panel-close-dur", "open > close", `open=${c || "n/a"} close=${d || "n/a"}`, b)
|
|
1754
1570
|
);
|
|
1755
1571
|
}
|
|
1756
1572
|
if (!a)
|
|
1757
|
-
e.push(
|
|
1573
|
+
e.push(v("C8", "BellCutout zero computed animation/transition", "no inline timing", "absent", !1));
|
|
1758
1574
|
else {
|
|
1759
1575
|
const o = getComputedStyle(a), s = o.animationName || "", c = o.transitionProperty || "", d = (s === "" || s === "none") && (c === "" || c === "none" || c === "all");
|
|
1760
1576
|
e.push(
|
|
1761
|
-
|
|
1577
|
+
v(
|
|
1762
1578
|
"C8",
|
|
1763
1579
|
"BellCutout zero computed animation/transition",
|
|
1764
1580
|
"animation:none AND transition:none",
|
|
@@ -1768,17 +1584,17 @@ function oe() {
|
|
|
1768
1584
|
);
|
|
1769
1585
|
}
|
|
1770
1586
|
if (!t)
|
|
1771
|
-
e.push(
|
|
1587
|
+
e.push(v("C9", "mount closed-state clipPath", J, "absent", !1));
|
|
1772
1588
|
else {
|
|
1773
1589
|
const o = t.style.clipPath, s = getComputedStyle(t), c = o || s.clipPath || "", d = c === J;
|
|
1774
|
-
e.push(
|
|
1590
|
+
e.push(v("C9", "mount closed-state clipPath", J, c || "n/a", d));
|
|
1775
1591
|
}
|
|
1776
1592
|
if (!i)
|
|
1777
|
-
e.push(
|
|
1593
|
+
e.push(v("C10", "bell-popover parentElement === document.body (open)", "body", "absent", !1));
|
|
1778
1594
|
else {
|
|
1779
1595
|
const o = i.parentElement, s = o === document.body;
|
|
1780
1596
|
e.push(
|
|
1781
|
-
|
|
1597
|
+
v(
|
|
1782
1598
|
"C10",
|
|
1783
1599
|
"bell-popover parentElement === document.body (open)",
|
|
1784
1600
|
"body",
|
|
@@ -1788,19 +1604,19 @@ function oe() {
|
|
|
1788
1604
|
);
|
|
1789
1605
|
}
|
|
1790
1606
|
if (!l)
|
|
1791
|
-
e.push(
|
|
1607
|
+
e.push(v("C11", "coordinator overflow === visible", "visible", "absent", !1));
|
|
1792
1608
|
else {
|
|
1793
1609
|
const s = getComputedStyle(l).overflow || l.style.overflow || "", c = s === "visible";
|
|
1794
|
-
e.push(
|
|
1610
|
+
e.push(v("C11", "coordinator overflow === visible", "visible", s || "n/a", c));
|
|
1795
1611
|
}
|
|
1796
1612
|
if (!u)
|
|
1797
|
-
e.push(
|
|
1613
|
+
e.push(v("C12", "toolbar clipPath = inset(0 -40 -40 -40)", ee, "absent", !1));
|
|
1798
1614
|
else {
|
|
1799
1615
|
const o = u.style.clipPath, s = getComputedStyle(u), c = o || s.clipPath || "", d = c === ee;
|
|
1800
|
-
e.push(
|
|
1616
|
+
e.push(v("C12", "toolbar clipPath = inset(0 -40 -40 -40)", ee, c || "n/a", d));
|
|
1801
1617
|
}
|
|
1802
1618
|
return e.push(
|
|
1803
|
-
|
|
1619
|
+
v(
|
|
1804
1620
|
"C13",
|
|
1805
1621
|
"same-position slide via WAAPI (mid-transition getAnimations().length > 0)",
|
|
1806
1622
|
"WAAPI driver wired in orchestrator (source-proof)",
|
|
@@ -1808,7 +1624,7 @@ function oe() {
|
|
|
1808
1624
|
"wiring_only"
|
|
1809
1625
|
)
|
|
1810
1626
|
), e.push(
|
|
1811
|
-
|
|
1627
|
+
v(
|
|
1812
1628
|
"C14",
|
|
1813
1629
|
'cross-position handoff transitionend filtered by propertyName="max-height"',
|
|
1814
1630
|
"transitionend filter wired in orchestrator (source-proof)",
|
|
@@ -1818,7 +1634,7 @@ function oe() {
|
|
|
1818
1634
|
), e;
|
|
1819
1635
|
}
|
|
1820
1636
|
function mt(e) {
|
|
1821
|
-
return
|
|
1637
|
+
return re().find((t) => t.id === e);
|
|
1822
1638
|
}
|
|
1823
1639
|
function ht() {
|
|
1824
1640
|
const e = ne();
|
|
@@ -1830,84 +1646,84 @@ function ht() {
|
|
|
1830
1646
|
actual: `valid=${e.valid} mount=${e.mount} chrome=${e.chrome} frozen=${e.frozen} orphans=[${e.orphans.join(",")}]`,
|
|
1831
1647
|
pass: e.valid
|
|
1832
1648
|
}
|
|
1833
|
-
], cc:
|
|
1649
|
+
], cc: re() };
|
|
1834
1650
|
}
|
|
1835
1651
|
function ft() {
|
|
1836
1652
|
return {
|
|
1837
1653
|
enable: gt,
|
|
1838
1654
|
disable: bt,
|
|
1839
|
-
isEnabled: () =>
|
|
1655
|
+
isEnabled: () => B,
|
|
1840
1656
|
getLastReport: () => j,
|
|
1841
1657
|
recordTransition: (e) => {
|
|
1842
|
-
|
|
1658
|
+
B && (j = { ...e, ...ne() });
|
|
1843
1659
|
},
|
|
1844
1660
|
assertOnce: () => {
|
|
1845
1661
|
const e = ne();
|
|
1846
1662
|
return j = e, e;
|
|
1847
1663
|
},
|
|
1848
|
-
assertCcOnly:
|
|
1664
|
+
assertCcOnly: re,
|
|
1849
1665
|
getCcRowById: mt,
|
|
1850
1666
|
assertPanelTruths: ht
|
|
1851
1667
|
};
|
|
1852
1668
|
}
|
|
1853
1669
|
function gt() {
|
|
1854
|
-
if (
|
|
1670
|
+
if (B = !0, typeof window > "u") return;
|
|
1855
1671
|
window.__panelsAsserter || (window.__panelsAsserter = ft(), console.info(
|
|
1856
1672
|
"[panels] asserter enabled (P3b Q12-12 + P6 W5 cc:C1..C14). Inspect via window.__panelsAsserter."
|
|
1857
1673
|
));
|
|
1858
1674
|
}
|
|
1859
1675
|
function bt() {
|
|
1860
|
-
|
|
1676
|
+
B = !1;
|
|
1861
1677
|
}
|
|
1862
1678
|
export {
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1679
|
+
zt as COMMITS,
|
|
1680
|
+
xt as CatalogAddShell,
|
|
1681
|
+
At as CatalogFooter,
|
|
1866
1682
|
kt as CatalogReplaceShell,
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1683
|
+
ae as CatalogStateContext,
|
|
1684
|
+
Ue as CloneCard,
|
|
1685
|
+
Rt as CloneStage,
|
|
1870
1686
|
ye as MOCK_DEFAULT_LENS,
|
|
1871
|
-
|
|
1872
|
-
|
|
1687
|
+
be as MOCK_LENSES,
|
|
1688
|
+
ve as MOCK_LENS_META,
|
|
1873
1689
|
et as MOCK_PAGES,
|
|
1874
1690
|
_e as MOCK_TILES_BY_LENS,
|
|
1875
|
-
|
|
1691
|
+
Ht as NotificationCenterShell,
|
|
1876
1692
|
Lt as PANEL_IDS,
|
|
1877
1693
|
Je as PageMgmtFooter,
|
|
1878
1694
|
Dt as PageMgmtShell,
|
|
1879
1695
|
Ne as PageMgmtStateContext,
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1696
|
+
Ut as PanelBody,
|
|
1697
|
+
Bt as PanelChrome,
|
|
1698
|
+
Y as PanelChromeV2,
|
|
1699
|
+
Yt as PanelFooter,
|
|
1700
|
+
Pt as PanelFooterMessage,
|
|
1701
|
+
Vt as PanelHeader,
|
|
1702
|
+
Kt as PanelHost,
|
|
1887
1703
|
Ot as PanelHostShell,
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1704
|
+
Ae as PanelMount,
|
|
1705
|
+
qt as PanelNavigation,
|
|
1706
|
+
Qt as PanelProvider,
|
|
1891
1707
|
Mt as PanelSlot,
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1708
|
+
Wt as PanelStage,
|
|
1709
|
+
Tt as SettingsShell,
|
|
1710
|
+
re as assertCcOnly,
|
|
1895
1711
|
ne as assertPanelDomShape,
|
|
1896
1712
|
ht as assertPanelTruths,
|
|
1897
|
-
|
|
1713
|
+
Gt as deriveSurfaceState,
|
|
1898
1714
|
bt as disablePanelAsserter,
|
|
1899
1715
|
gt as enablePanelAsserter,
|
|
1900
1716
|
mt as getCcRowById,
|
|
1901
1717
|
jt as initialState,
|
|
1902
|
-
|
|
1718
|
+
pe as positionKey,
|
|
1903
1719
|
Zt as reducer,
|
|
1904
1720
|
ut as transitionToPanel,
|
|
1905
|
-
|
|
1721
|
+
se as useCatalogState,
|
|
1906
1722
|
wt as useEditingCardId,
|
|
1907
|
-
|
|
1908
|
-
|
|
1723
|
+
Se as usePageMgmtState,
|
|
1724
|
+
Te as usePanelContext,
|
|
1909
1725
|
O as usePanelContextOptional,
|
|
1910
1726
|
Xt as usePanelCoordinator,
|
|
1911
|
-
|
|
1727
|
+
he as useReducedMotionPanel,
|
|
1912
1728
|
It as useTransitionToPanel
|
|
1913
1729
|
};
|