@mt-gloss/ui 0.1.139 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{BaseAsyncButton-CJlY7Uik.js → BaseAsyncButton-Cq_l7clO.js} +29 -30
- package/COMMITS-Dm8qIHaq.js +444 -0
- package/Expandable-BcmIxWR8.js +13807 -0
- package/UIContext-DP6JGCto.js +1731 -0
- package/catalog.js +120 -122
- package/composites-panels.js +581 -1404
- package/index.d.ts +4 -2
- package/index.js +2368 -2029
- package/internals.js +80 -81
- package/lib/base/BaseAccordion/BaseAccordion.d.ts +4 -24
- package/lib/base/BaseCard/BaseCard.d.ts +8 -48
- package/lib/base/BaseCheckbox/BaseCheckbox.d.ts +1 -6
- package/lib/base/BaseInput/BaseInput.d.ts +1 -6
- package/lib/base/BaseMaskedInput/BaseMaskedInput.d.ts +1 -6
- package/lib/base/BaseMenu/BaseMenu.d.ts +2 -12
- package/lib/base/BaseRadio/BaseRadio.d.ts +1 -6
- package/lib/base/BaseRating/BaseRating.d.ts +1 -6
- package/lib/base/BaseSegmentedControl/BaseSegmentedControl.d.ts +1 -6
- package/lib/base/BaseSelect/BaseSelect.d.ts +2 -12
- package/lib/base/BaseTextarea/BaseTextarea.d.ts +1 -6
- package/lib/base/BaseToggle/BaseToggle.d.ts +1 -6
- package/lib/base/BaseTooltip/BaseTooltip.d.ts +1 -6
- package/lib/composites/dashboard/BellPopover/BellPopover.d.ts +0 -12
- package/lib/composites/forms/PasswordInput.d.ts +1 -6
- package/lib/composites/forms/PhoneInput.d.ts +1 -6
- package/lib/composites/forms/SearchInput.d.ts +1 -6
- package/lib/composites/forms/TagInput.d.ts +1 -6
- package/lib/composites/inputs/FilterChip.d.ts +1 -6
- package/lib/composites/overlay/SplitButton/SplitButton.d.ts +1 -6
- package/lib/composites/panels/PanelChrome.d.ts +1 -23
- package/lib/composites/panels/PanelSlot.d.ts +3 -14
- package/lib/composites/panels/coordinator/types.d.ts +1 -12
- package/lib/composites/panels/index.d.ts +4 -7
- package/lib/composites/panels/shells/CatalogAddShell.d.ts +8 -21
- package/lib/composites/panels/shells/CatalogReplaceShell.d.ts +4 -9
- package/lib/composites/panels/shells/PageMgmtShell.d.ts +3 -28
- package/lib/composites/panels/shells/SettingsShell.d.ts +3 -57
- package/lib/composites/panels/shells/index.d.ts +2 -4
- package/lib/composites/panels/shells/internals/CatalogLensPicker.d.ts +1 -14
- package/lib/composites/panels/shells/internals/CatalogTileGrid.d.ts +1 -18
- package/lib/composites/panels/shells/internals/PageMgmtFooter.d.ts +0 -11
- package/lib/composites/panels/shells/internals/PageMgmtRow.d.ts +1 -6
- package/lib/composites/panels/shells/internals/catalog-mocks.d.ts +8 -145
- package/lib/composites/panels/stage3d/CloneStage.d.ts +1 -11
- package/lib/containers/ContainerDialog/ContainerDialog.d.ts +3 -18
- package/lib/containers/ContainerFormSection/ContainerFormSection.d.ts +1 -6
- package/lib/containers/ContainerPanel/ContainerPanel.d.ts +1 -6
- package/lib/containers/ContainerTable/ContainerTable.d.ts +1 -6
- package/lib/containers/ContainerToolbar/ContainerToolbar.d.ts +1 -6
- package/lib/presets/PresetAccordion/PresetAccordion.d.ts +4 -24
- package/lib/presets/PresetBadge/PresetBadge.d.ts +1 -6
- package/lib/presets/PresetCard/PresetCard.d.ts +8 -48
- package/lib/presets/PresetCheckbox/PresetCheckbox.d.ts +1 -6
- package/lib/presets/PresetChip/PresetChip.d.ts +1 -6
- package/lib/presets/PresetColorPicker/PresetColorPicker.d.ts +1 -6
- package/lib/presets/PresetDatePicker/PresetDatePicker.d.ts +1 -6
- package/lib/presets/PresetDateRangePicker/PresetDateRangePicker.d.ts +1 -6
- package/lib/presets/PresetFileUpload/PresetFileUpload.d.ts +1 -6
- package/lib/presets/PresetInput/PresetInput.d.ts +1 -6
- package/lib/presets/PresetLink/PresetLink.d.ts +1 -6
- package/lib/presets/PresetMaskedInput/PresetMaskedInput.d.ts +1 -6
- package/lib/presets/PresetMenu/PresetMenu.d.ts +2 -12
- package/lib/presets/PresetNumberInput/PresetNumberInput.d.ts +1 -6
- package/lib/presets/PresetRadio/PresetRadio.d.ts +1 -6
- package/lib/presets/PresetRangeSlider/PresetRangeSlider.d.ts +1 -6
- package/lib/presets/PresetRating/PresetRating.d.ts +1 -6
- package/lib/presets/PresetTextarea/PresetTextarea.d.ts +1 -6
- package/lib/presets/PresetTimePicker/PresetTimePicker.d.ts +1 -6
- package/lib/presets/PresetToggle/PresetToggle.d.ts +1 -6
- package/lib/primitives/dashboard/ResizePill/ResizePill.d.ts +1 -7
- package/lib/primitives/dashboard/index.d.ts +0 -1
- package/lib/wrappers/Actionable/Actionable.d.ts +1 -6
- package/lib/wrappers/AsyncLoader/AsyncLoader.d.ts +1 -6
- package/lib/wrappers/ButtonGroup/ButtonGroup.d.ts +1 -6
- package/lib/wrappers/CheckboxGroup/CheckboxGroup.d.ts +1 -6
- package/lib/wrappers/Dismissible/Dismissible.d.ts +1 -6
- package/lib/wrappers/Expandable/Expandable.d.ts +1 -6
- package/lib/wrappers/InputGroup/InputGroup.d.ts +2 -12
- package/lib/wrappers/RadioGroup/RadioGroup.d.ts +1 -6
- package/lib/wrappers/Selectable/Selectable.d.ts +1 -6
- package/lib/wrappers/Sortable/Sortable.d.ts +1 -6
- package/package.json +1 -1
- package/ui.css +1 -1
- package/BaseText-Dxbk1JJa.js +0 -66
- package/COMMITS-DEdHYT0E.js +0 -963
- package/Expandable-DA4NFzCR.js +0 -13243
- package/MetricCard-DOPtBpek.js +0 -698
- package/UIContext-CGQI_KJk.js +0 -1808
- package/lib/composites/panels/chrome-v2/PanelBody.d.ts +0 -5
- package/lib/composites/panels/chrome-v2/PanelChromeV2.d.ts +0 -18
- package/lib/composites/panels/chrome-v2/PanelFooter.d.ts +0 -6
- package/lib/composites/panels/chrome-v2/PanelFooterMessage.d.ts +0 -6
- package/lib/composites/panels/chrome-v2/PanelHeader.d.ts +0 -10
- package/lib/composites/panels/chrome-v2/PanelNavigation.d.ts +0 -5
- package/lib/composites/panels/chrome-v2/PanelStage.d.ts +0 -5
- package/lib/composites/panels/chrome-v2/index.d.ts +0 -23
- package/lib/composites/panels/coordinator/settingsBufferSchemas.d.ts +0 -13
- package/lib/composites/panels/hooks/useEditingCardId.d.ts +0 -16
- package/lib/composites/panels/shells/MetricInfoShell.d.ts +0 -29
- package/lib/composites/panels/shells/NotificationCenterShell.d.ts +0 -2
- package/lib/composites/panels/shells/settings/GhostSlotPill.d.ts +0 -7
- package/lib/composites/panels/shells/settings/SlotsControls.d.ts +0 -11
- package/lib/composites/panels/shells/settings/TimeframeControls.d.ts +0 -6
- package/lib/composites/panels/shells/settings/index.d.ts +0 -14
- package/lib/primitives/dashboard/SettingsTabStrip/SettingsTabStrip.d.ts +0 -17
- package/lib/primitives/dashboard/SettingsTabStrip/index.d.ts +0 -6
- package/lib/primitives/dashboard/SettingsTabStrip/types.d.ts +0 -12
package/composites-panels.js
CHANGED
|
@@ -1,710 +1,80 @@
|
|
|
1
|
-
import { u as
|
|
2
|
-
import { C as
|
|
3
|
-
import { jsx as
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (e?.state.activePanelId !== "settings") return null;
|
|
15
|
-
const t = e.state.activeTrigger;
|
|
16
|
-
return t?.kind === "card-overflow" ? t.cardId : null;
|
|
17
|
-
}
|
|
18
|
-
function ve({ span: e, rotating: t = !0, children: s }) {
|
|
19
|
-
const r = ["clone-card", `span-${e}`, t ? "rotating" : ""].filter(Boolean).join(" "), n = s != null ? "full" : "fallback";
|
|
20
|
-
return /* @__PURE__ */ a("div", { className: r, "data-clone-fidelity": n, children: s });
|
|
21
|
-
}
|
|
22
|
-
const Qe = 500, We = 1, je = "var(--gloss-color-primary, #6366f1)";
|
|
23
|
-
function Ze({
|
|
24
|
-
children: e,
|
|
25
|
-
spinTrigger: t,
|
|
26
|
-
onSpinComplete: s,
|
|
27
|
-
spinDuration: r,
|
|
28
|
-
spinRotations: n,
|
|
29
|
-
accentColor: c
|
|
30
|
-
}) {
|
|
31
|
-
const p = ce(0), o = ce(1), i = U.useRef(null), l = U.useMemo(() => xe() === "reduced", []), d = U.useRef(t);
|
|
32
|
-
return U.useEffect(() => {
|
|
33
|
-
if (t === void 0 || t === d.current) return;
|
|
34
|
-
d.current = t;
|
|
35
|
-
const h = (r ?? Qe) / 1e3, y = n ?? We, m = i.current;
|
|
36
|
-
if (l) {
|
|
37
|
-
const g = [];
|
|
38
|
-
if (m) {
|
|
39
|
-
const x = B(
|
|
40
|
-
m,
|
|
41
|
-
{ opacity: [0, 0.4, 0] },
|
|
42
|
-
Oe
|
|
43
|
-
);
|
|
44
|
-
g.push(x), x.then(() => {
|
|
45
|
-
s?.();
|
|
46
|
-
});
|
|
47
|
-
} else
|
|
48
|
-
Promise.resolve().then(() => {
|
|
49
|
-
s?.();
|
|
50
|
-
});
|
|
51
|
-
return () => {
|
|
52
|
-
g.forEach((x) => x.stop());
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
const v = { ...Ie, duration: h }, _ = B(p, [0, 360 * y], v), N = B(o, [1, 1.03, 1], v), w = [_, N];
|
|
56
|
-
if (m) {
|
|
57
|
-
const g = B(
|
|
58
|
-
m,
|
|
59
|
-
{ opacity: [0, 0.6, 0, 0] },
|
|
60
|
-
{ ...v, times: [0, 0.3, 0.8, 1] }
|
|
61
|
-
);
|
|
62
|
-
w.push(g);
|
|
63
|
-
}
|
|
64
|
-
return _.then(() => {
|
|
65
|
-
s?.();
|
|
66
|
-
}), () => {
|
|
67
|
-
w.forEach((g) => g.stop());
|
|
68
|
-
};
|
|
69
|
-
}, [t, r, n, l, s, p, o]), /* @__PURE__ */ b(
|
|
70
|
-
Re.div,
|
|
71
|
-
{
|
|
72
|
-
className: "clone-stage",
|
|
73
|
-
style: { rotateY: p, scale: o },
|
|
74
|
-
children: [
|
|
75
|
-
e,
|
|
76
|
-
/* @__PURE__ */ a(
|
|
77
|
-
"div",
|
|
78
|
-
{
|
|
79
|
-
ref: i,
|
|
80
|
-
className: "clone-stage__accent",
|
|
81
|
-
style: {
|
|
82
|
-
"--spin-accent-color": c ?? je
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
)
|
|
86
|
-
]
|
|
87
|
-
}
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
|
-
function $t({ primary: e, secondary: t }) {
|
|
91
|
-
return /* @__PURE__ */ b("div", { className: "gloss-panel-chrome-v2__footer-msg", children: [
|
|
92
|
-
/* @__PURE__ */ a("span", { className: "gloss-panel-chrome-v2__footer-msg-primary", children: e }),
|
|
93
|
-
t != null && /* @__PURE__ */ a("span", { className: "gloss-panel-chrome-v2__footer-msg-secondary", children: t })
|
|
94
|
-
] });
|
|
95
|
-
}
|
|
96
|
-
function Xe({ value: e, onChange: t }) {
|
|
97
|
-
return /* @__PURE__ */ b("div", { className: "settings-shell__field settings-shell__field--timeframe", children: [
|
|
98
|
-
/* @__PURE__ */ a("span", { className: "settings-shell__label", "aria-hidden": "true", children: "Rolling period (days)" }),
|
|
99
|
-
/* @__PURE__ */ b("div", { className: "settings-shell__slider-row", children: [
|
|
100
|
-
/* @__PURE__ */ a(
|
|
101
|
-
"input",
|
|
102
|
-
{
|
|
103
|
-
id: "settings-timeframe-input",
|
|
104
|
-
type: "range",
|
|
105
|
-
min: 7,
|
|
106
|
-
max: 90,
|
|
107
|
-
value: e,
|
|
108
|
-
onChange: t,
|
|
109
|
-
"aria-label": "Timeframe",
|
|
110
|
-
"aria-valuenow": e,
|
|
111
|
-
"aria-valuemin": 7,
|
|
112
|
-
"aria-valuemax": 90,
|
|
113
|
-
className: "settings-shell__slider"
|
|
114
|
-
}
|
|
115
|
-
),
|
|
116
|
-
/* @__PURE__ */ b("span", { className: "settings-shell__slider-value", "aria-live": "polite", children: [
|
|
117
|
-
e,
|
|
118
|
-
" days"
|
|
119
|
-
] })
|
|
120
|
-
] })
|
|
121
|
-
] });
|
|
122
|
-
}
|
|
123
|
-
function Je({
|
|
124
|
-
id: e,
|
|
125
|
-
onActivate: t,
|
|
126
|
-
disabled: s
|
|
127
|
-
}) {
|
|
128
|
-
const r = "settings-shell__slot-pill settings-shell__slot-pill--ghost" + (s ? " settings-shell__slot-pill--ghost-disabled" : "");
|
|
129
|
-
return /* @__PURE__ */ a("li", { className: r, "data-ghost": "true", children: /* @__PURE__ */ a(
|
|
130
|
-
"button",
|
|
131
|
-
{
|
|
132
|
-
type: "button",
|
|
133
|
-
className: "settings-shell__slot-pill__ghost-activate",
|
|
134
|
-
"aria-label": `Restore ${e}`,
|
|
135
|
-
"aria-disabled": s ? "true" : void 0,
|
|
136
|
-
onClick: s ? void 0 : t,
|
|
137
|
-
children: /* @__PURE__ */ a("span", { className: "settings-shell__slot-pill__label", children: e })
|
|
138
|
-
}
|
|
139
|
-
) });
|
|
140
|
-
}
|
|
141
|
-
function et({
|
|
142
|
-
id: e,
|
|
143
|
-
onRemove: t,
|
|
144
|
-
removeDisabled: s
|
|
145
|
-
}) {
|
|
146
|
-
const { attributes: r, listeners: n, setNodeRef: c, transform: p, transition: o, isDragging: i } = qe({ id: e }), l = {
|
|
147
|
-
transform: Ge.Transform.toString(p),
|
|
148
|
-
transition: o,
|
|
149
|
-
opacity: i ? 0.6 : 1
|
|
150
|
-
};
|
|
151
|
-
return /* @__PURE__ */ b(
|
|
152
|
-
"li",
|
|
153
|
-
{
|
|
154
|
-
ref: c,
|
|
155
|
-
style: l,
|
|
156
|
-
className: `settings-shell__slot-pill${i ? " settings-shell__slot-pill--dragging" : ""}`,
|
|
157
|
-
children: [
|
|
158
|
-
/* @__PURE__ */ a(
|
|
159
|
-
"button",
|
|
160
|
-
{
|
|
161
|
-
type: "button",
|
|
162
|
-
className: "settings-shell__slot-pill__handle",
|
|
163
|
-
"aria-label": `Reorder ${e}`,
|
|
164
|
-
...r,
|
|
165
|
-
...n,
|
|
166
|
-
children: /* @__PURE__ */ a("span", { "aria-hidden": "true", className: "settings-shell__slot-pill__grip", children: "⋮⋮" })
|
|
167
|
-
}
|
|
168
|
-
),
|
|
169
|
-
/* @__PURE__ */ a("span", { className: "settings-shell__slot-pill__label", children: e }),
|
|
170
|
-
/* @__PURE__ */ a(
|
|
171
|
-
"button",
|
|
172
|
-
{
|
|
173
|
-
type: "button",
|
|
174
|
-
className: "settings-shell__slot-pill__remove" + (s ? " settings-shell__slot-pill__remove--disabled" : ""),
|
|
175
|
-
"aria-label": `Remove ${e}`,
|
|
176
|
-
"aria-disabled": s ? "true" : void 0,
|
|
177
|
-
onClick: s ? void 0 : t,
|
|
178
|
-
children: "×"
|
|
179
|
-
}
|
|
180
|
-
)
|
|
181
|
-
]
|
|
182
|
-
}
|
|
183
|
-
);
|
|
184
|
-
}
|
|
185
|
-
function tt({
|
|
186
|
-
value: e,
|
|
187
|
-
onChange: t,
|
|
188
|
-
naturalSlots: s
|
|
189
|
-
}) {
|
|
190
|
-
const r = $e(
|
|
191
|
-
de(Fe, { activationConstraint: { distance: 4 } }),
|
|
192
|
-
de(ze, { coordinateGetter: Be })
|
|
193
|
-
), n = (u) => {
|
|
194
|
-
const { active: h, over: y } = u;
|
|
195
|
-
if (!y || h.id === y.id) return;
|
|
196
|
-
const m = e.findIndex((_) => _ === h.id), v = e.findIndex((_) => _ === y.id);
|
|
197
|
-
m === -1 || v === -1 || t(Ke([...e], m, v));
|
|
198
|
-
}, c = e.length === 1, p = (u) => {
|
|
199
|
-
c || t(e.filter((h) => h !== u));
|
|
200
|
-
}, o = I.useMemo(() => new Set(e), [e]), i = I.useMemo(
|
|
201
|
-
() => (s ?? []).filter((u) => !o.has(u)),
|
|
202
|
-
[s, o]
|
|
203
|
-
), l = !1, d = (u) => {
|
|
204
|
-
t([...e, u]);
|
|
205
|
-
};
|
|
206
|
-
return /* @__PURE__ */ b("div", { className: "settings-shell__field settings-shell__field--slots", "aria-label": "Stack slots", children: [
|
|
207
|
-
/* @__PURE__ */ a(He, { sensors: r, collisionDetection: Ue, onDragEnd: n, children: /* @__PURE__ */ a(Ye, { items: [...e], strategy: Ve, children: /* @__PURE__ */ b("ul", { className: "settings-shell__slots-list", role: "list", children: [
|
|
208
|
-
e.map((u) => /* @__PURE__ */ a(
|
|
209
|
-
et,
|
|
210
|
-
{
|
|
211
|
-
id: u,
|
|
212
|
-
onRemove: () => p(u),
|
|
213
|
-
removeDisabled: c
|
|
214
|
-
},
|
|
215
|
-
u
|
|
216
|
-
)),
|
|
217
|
-
i.map((u) => /* @__PURE__ */ a(
|
|
218
|
-
Je,
|
|
219
|
-
{
|
|
220
|
-
id: u,
|
|
221
|
-
onActivate: () => d(u),
|
|
222
|
-
disabled: l
|
|
223
|
-
},
|
|
224
|
-
`ghost:${u}`
|
|
225
|
-
))
|
|
226
|
-
] }) }) }),
|
|
227
|
-
/* @__PURE__ */ a("p", { className: "settings-shell__help settings-shell__help--small", children: "Drag to reorder · click × to remove" })
|
|
228
|
-
] });
|
|
229
|
-
}
|
|
230
|
-
const nt = ["Orders", "Quota", "Unassigned"], at = ["timeframe"];
|
|
231
|
-
function Ft({
|
|
1
|
+
import { u as I, f as q, a as Z, g as N, c as w } from "./COMMITS-Dm8qIHaq.js";
|
|
2
|
+
import { C as Ve, b as qe, P as Be, e as He, i as Ue, r as Ye, d as Ke } from "./COMMITS-Dm8qIHaq.js";
|
|
3
|
+
import { jsx as s, jsxs as h, Fragment as ee } from "react/jsx-runtime";
|
|
4
|
+
import { useState as y, useRef as B, createContext as H, useContext as U, useEffect as F, useLayoutEffect as te, useCallback as Y } from "react";
|
|
5
|
+
function ne({ children: e }) {
|
|
6
|
+
return /* @__PURE__ */ s("div", { className: "clone-stage", children: e });
|
|
7
|
+
}
|
|
8
|
+
function oe({ span: e, rotating: t = !0, children: o }) {
|
|
9
|
+
const n = ["clone-card", `span-${e}`, t ? "rotating" : ""].filter(Boolean).join(" ");
|
|
10
|
+
return /* @__PURE__ */ s("div", { className: n, children: o });
|
|
11
|
+
}
|
|
12
|
+
const se = ["#1d6fd8", "#10b981", "#f59e0b", "#ef4444", "#8b5cf6"];
|
|
13
|
+
function Le({
|
|
232
14
|
isOpen: e,
|
|
233
15
|
cardSpan: t,
|
|
234
|
-
cardLabel:
|
|
235
|
-
cardValue:
|
|
236
|
-
previewSlot: n,
|
|
237
|
-
dimensions: c = at,
|
|
238
|
-
initialTab: p,
|
|
239
|
-
initialValues: o,
|
|
240
|
-
naturalSlots: i
|
|
16
|
+
cardLabel: o = "Metric",
|
|
17
|
+
cardValue: n = "—"
|
|
241
18
|
}) {
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
{
|
|
259
|
-
variant: "with-stage",
|
|
260
|
-
onClose: () => l?.dispatch({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
261
|
-
stage: (
|
|
262
|
-
// M003-S004-MOT-02 — CloneStage wraps CloneCard so the spin-commit
|
|
263
|
-
// gesture has a transform host that does NOT disturb the inner
|
|
264
|
-
// CloneCard's existing sway / span-N geometry. Counter is owned here
|
|
265
|
-
// (Option 3); reptime sees no spinTrigger plumbing.
|
|
266
|
-
/* @__PURE__ */ a(Ze, { spinTrigger: le, onSpinComplete: f, children: /* @__PURE__ */ a(ve, { span: m, rotating: !h, children: n ?? /* @__PURE__ */ b(ge, { children: [
|
|
267
|
-
/* @__PURE__ */ a("div", { style: { fontSize: 9, textTransform: "uppercase", letterSpacing: "0.06em", color: "#9ca3af", marginBottom: 6 }, children: s }),
|
|
268
|
-
/* @__PURE__ */ a("div", { style: { fontSize: 22, fontWeight: 700, color: "#111827", lineHeight: 1 }, children: r })
|
|
269
|
-
] }) }) })
|
|
270
|
-
),
|
|
271
|
-
navigation: /* @__PURE__ */ a(
|
|
272
|
-
Ae,
|
|
273
|
-
{
|
|
274
|
-
dimensions: c,
|
|
275
|
-
activeTab: _,
|
|
276
|
-
onSelect: N,
|
|
277
|
-
reduced: h
|
|
278
|
-
}
|
|
279
|
-
),
|
|
280
|
-
footer: {
|
|
281
|
-
left: /* @__PURE__ */ a(
|
|
282
|
-
"button",
|
|
19
|
+
const a = I(), r = a?.state.activeTrigger, d = r?.kind === "card-overflow" ? r.cardId : null, l = q(), i = r?.span, c = t ?? i ?? 1, u = d != null ? a?.state?.bufferByCard?.[d]?.changes ?? {} : {}, m = typeof u.threshold == "number" ? u.threshold : 50, f = typeof u.accent == "string" ? u.accent : null, v = (g) => {
|
|
20
|
+
d == null || a == null || a.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "threshold", value: Number(g.target.value) });
|
|
21
|
+
}, b = (g) => {
|
|
22
|
+
d == null || a == null || a.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "accent", value: g });
|
|
23
|
+
};
|
|
24
|
+
return /* @__PURE__ */ h("div", { "data-shell": "settings", "aria-hidden": !e, children: [
|
|
25
|
+
/* @__PURE__ */ s(ne, { children: /* @__PURE__ */ h(oe, { span: c, rotating: !l, children: [
|
|
26
|
+
/* @__PURE__ */ s("div", { style: { fontSize: 9, textTransform: "uppercase", letterSpacing: "0.06em", color: "#9ca3af", marginBottom: 6 }, children: o }),
|
|
27
|
+
/* @__PURE__ */ s("div", { style: { fontSize: 22, fontWeight: 700, color: "#111827", lineHeight: 1 }, children: n })
|
|
28
|
+
] }) }),
|
|
29
|
+
/* @__PURE__ */ h("div", { className: "settings-shell__controls", children: [
|
|
30
|
+
/* @__PURE__ */ s("h3", { className: "settings-shell__heading", children: "Settings" }),
|
|
31
|
+
/* @__PURE__ */ h("label", { className: "settings-shell__field", children: [
|
|
32
|
+
/* @__PURE__ */ s("span", { className: "settings-shell__label", children: "Threshold" }),
|
|
33
|
+
/* @__PURE__ */ s(
|
|
34
|
+
"input",
|
|
283
35
|
{
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
36
|
+
type: "range",
|
|
37
|
+
min: 0,
|
|
38
|
+
max: 100,
|
|
39
|
+
step: 1,
|
|
40
|
+
value: m,
|
|
41
|
+
onChange: v,
|
|
42
|
+
className: "settings-shell__slider",
|
|
43
|
+
"aria-label": "Threshold",
|
|
44
|
+
"data-testid": "settings-threshold-slider"
|
|
290
45
|
}
|
|
291
46
|
),
|
|
292
|
-
|
|
47
|
+
/* @__PURE__ */ s("span", { className: "settings-shell__value", "aria-live": "polite", children: m })
|
|
48
|
+
] }),
|
|
49
|
+
/* @__PURE__ */ h("div", { className: "settings-shell__field", children: [
|
|
50
|
+
/* @__PURE__ */ s("span", { className: "settings-shell__label", children: "Accent" }),
|
|
51
|
+
/* @__PURE__ */ s("div", { className: "settings-shell__swatches", role: "radiogroup", "aria-label": "Accent color", children: se.map((g) => /* @__PURE__ */ s(
|
|
293
52
|
"button",
|
|
294
53
|
{
|
|
295
|
-
id: "settings-apply",
|
|
296
54
|
type: "button",
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
className: "settings-shell__tabpanel",
|
|
312
|
-
children: [
|
|
313
|
-
_ === "timeframe" && /* @__PURE__ */ a(Xe, { value: x, onChange: $ }),
|
|
314
|
-
_ === "slots" && /* @__PURE__ */ a(tt, { value: R, onChange: P, naturalSlots: i })
|
|
315
|
-
]
|
|
316
|
-
}
|
|
317
|
-
) })
|
|
318
|
-
}
|
|
319
|
-
);
|
|
320
|
-
}
|
|
321
|
-
function st({
|
|
322
|
-
isOpen: e,
|
|
323
|
-
cardSpan: t,
|
|
324
|
-
previewSlot: s,
|
|
325
|
-
metricInfo: r
|
|
326
|
-
}) {
|
|
327
|
-
const n = M(), c = n?.state.activeTrigger, p = ae(), o = c?.span;
|
|
328
|
-
return /* @__PURE__ */ a(
|
|
329
|
-
z,
|
|
330
|
-
{
|
|
331
|
-
variant: "with-stage",
|
|
332
|
-
onClose: () => n?.dispatch({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
333
|
-
stage: /* @__PURE__ */ a(ve, { span: t ?? o ?? 1, rotating: !p, children: s }),
|
|
334
|
-
children: /* @__PURE__ */ b(
|
|
335
|
-
"div",
|
|
336
|
-
{
|
|
337
|
-
className: "metric-info-shell",
|
|
338
|
-
"data-shell": "metric-info",
|
|
339
|
-
"aria-hidden": !e,
|
|
340
|
-
children: [
|
|
341
|
-
/* @__PURE__ */ a("h2", { className: "metric-info-shell__title", children: r.title }),
|
|
342
|
-
/* @__PURE__ */ a("p", { className: "metric-info-shell__description", children: r.description })
|
|
343
|
-
]
|
|
344
|
-
}
|
|
345
|
-
)
|
|
346
|
-
}
|
|
347
|
-
);
|
|
348
|
-
}
|
|
349
|
-
st.displayName = "MetricInfoShell";
|
|
350
|
-
const _e = [
|
|
351
|
-
"Revenue",
|
|
352
|
-
"Order flow",
|
|
353
|
-
"Rep performance",
|
|
354
|
-
"Brand portfolio",
|
|
355
|
-
"Account coverage",
|
|
356
|
-
"Commission"
|
|
357
|
-
], Ce = "Revenue", Ne = {
|
|
358
|
-
Revenue: {
|
|
359
|
-
headline: "Are we hitting our number?",
|
|
360
|
-
helper: "Top-line sales, growth, average order value, and pace-to-plan signals."
|
|
361
|
-
},
|
|
362
|
-
"Order flow": {
|
|
363
|
-
headline: "Are orders flowing through?",
|
|
364
|
-
helper: "Daily activity, pipeline, unassigned work, and cancel-rate health."
|
|
365
|
-
},
|
|
366
|
-
"Rep performance": {
|
|
367
|
-
headline: "How are my reps performing?",
|
|
368
|
-
helper: "Quota attainment, leaderboards, and activity flags across the rep team."
|
|
369
|
-
},
|
|
370
|
-
"Brand portfolio": {
|
|
371
|
-
headline: "Which brands matter?",
|
|
372
|
-
helper: "Manufacturer mix, top performers, and emerging line health."
|
|
373
|
-
},
|
|
374
|
-
"Account coverage": {
|
|
375
|
-
headline: "Where are the gaps?",
|
|
376
|
-
helper: "New, active, inactive, and at-risk customer accounts."
|
|
377
|
-
},
|
|
378
|
-
Commission: {
|
|
379
|
-
headline: "What's our commission rate?",
|
|
380
|
-
helper: "Outstanding balances, aging buckets, and effective commission yield."
|
|
381
|
-
}
|
|
382
|
-
}, Se = {
|
|
383
|
-
Revenue: {
|
|
384
|
-
primary: [
|
|
385
|
-
{
|
|
386
|
-
id: "agency-sales",
|
|
387
|
-
label: "Sales",
|
|
388
|
-
value: "$892,450",
|
|
389
|
-
desc: "Agency total sales with trend sparkline",
|
|
390
|
-
cardType: "sparkline",
|
|
391
|
-
sparklineData: [620, 640, 680, 700, 740, 760, 790, 820, 850, 892],
|
|
392
|
-
prefix: "$",
|
|
393
|
-
startHere: !0
|
|
394
|
-
},
|
|
395
|
-
{
|
|
396
|
-
id: "agency-sales-stacked",
|
|
397
|
-
label: "Sales",
|
|
398
|
-
value: "$892,450",
|
|
399
|
-
desc: "Agency sales across three timeframes at a glance (MTD shown)",
|
|
400
|
-
variants: ["1×3"],
|
|
401
|
-
subStats: [
|
|
402
|
-
{ label: "MTD", value: "$892K" },
|
|
403
|
-
{ label: "QTD", value: "$2.4M" },
|
|
404
|
-
{ label: "YTD", value: "$8.6M" }
|
|
405
|
-
],
|
|
406
|
-
cardType: "stacked-group",
|
|
407
|
-
stackedTimeframes: ["MTD", "QTD", "YTD"]
|
|
408
|
-
},
|
|
409
|
-
{
|
|
410
|
-
id: "agency-growth",
|
|
411
|
-
label: "Sales Growth",
|
|
412
|
-
value: "+18%",
|
|
413
|
-
desc: "Year-over-year agency sales growth rate",
|
|
414
|
-
cardType: "standard",
|
|
415
|
-
suffix: "%",
|
|
416
|
-
trend: { value: 18, direction: "up" }
|
|
417
|
-
},
|
|
418
|
-
{
|
|
419
|
-
id: "agency-aov",
|
|
420
|
-
label: "Avg Order",
|
|
421
|
-
value: "$2,340",
|
|
422
|
-
desc: "Average order value with trend sparkline",
|
|
423
|
-
cardType: "sparkline",
|
|
424
|
-
sparklineData: [2100, 2150, 2200, 2180, 2250, 2280, 2300, 2320, 2335, 2340],
|
|
425
|
-
prefix: "$"
|
|
426
|
-
},
|
|
427
|
-
{
|
|
428
|
-
id: "agency-aov-stacked",
|
|
429
|
-
label: "Avg Order",
|
|
430
|
-
value: "$2,340",
|
|
431
|
-
desc: "Average order value across three timeframes",
|
|
432
|
-
variants: ["1×3"],
|
|
433
|
-
subStats: [
|
|
434
|
-
{ label: "MTD", value: "$2,340" },
|
|
435
|
-
{ label: "QTD", value: "$2,280" },
|
|
436
|
-
{ label: "YTD", value: "$2,210" }
|
|
437
|
-
],
|
|
438
|
-
cardType: "stacked-group",
|
|
439
|
-
stackedTimeframes: ["MTD", "QTD", "YTD"]
|
|
440
|
-
},
|
|
441
|
-
{
|
|
442
|
-
id: "agency-conversion",
|
|
443
|
-
label: "Conversion",
|
|
444
|
-
value: "68%",
|
|
445
|
-
desc: "Order completion rate vs cancellations",
|
|
446
|
-
cardType: "donut",
|
|
447
|
-
donutValue: 0.68,
|
|
448
|
-
accentColor: "#10b981",
|
|
449
|
-
suffix: "%"
|
|
450
|
-
}
|
|
451
|
-
],
|
|
452
|
-
secondary: [
|
|
453
|
-
{
|
|
454
|
-
id: "agency-revenue-compact",
|
|
455
|
-
label: "Total Revenue",
|
|
456
|
-
value: "$892,450",
|
|
457
|
-
desc: "Agency revenue with sparkline trend",
|
|
458
|
-
cardType: "sparkline",
|
|
459
|
-
sparklineData: [620, 660, 700, 740, 780, 820, 860, 892],
|
|
460
|
-
prefix: "$"
|
|
461
|
-
},
|
|
462
|
-
{
|
|
463
|
-
id: "agency-yoy-versus",
|
|
464
|
-
label: "YoY Comparison",
|
|
465
|
-
value: "$892K",
|
|
466
|
-
desc: "TY vs LY sales side-by-side",
|
|
467
|
-
cardType: "versus",
|
|
468
|
-
comparison: {
|
|
469
|
-
current: { value: "$892K", label: "This year" },
|
|
470
|
-
prior: { value: "$724K", label: "Last year" }
|
|
471
|
-
}
|
|
472
|
-
},
|
|
473
|
-
{
|
|
474
|
-
id: "agency-revenue-by-mfr",
|
|
475
|
-
label: "Mfr Revenue",
|
|
476
|
-
value: "$892K",
|
|
477
|
-
desc: "Revenue mix across top manufacturers",
|
|
478
|
-
cardType: "segmented",
|
|
479
|
-
segments: [
|
|
480
|
-
{ label: "A", value: 35, color: "#7c3aed" },
|
|
481
|
-
{ label: "B", value: 28, color: "#1d6fd8" },
|
|
482
|
-
{ label: "C", value: 22, color: "#10b981" },
|
|
483
|
-
{ label: "D", value: 15, color: "#f59e0b" }
|
|
484
|
-
]
|
|
485
|
-
}
|
|
486
|
-
]
|
|
487
|
-
},
|
|
488
|
-
"Order flow": {
|
|
489
|
-
primary: [
|
|
490
|
-
{
|
|
491
|
-
id: "agency-activity",
|
|
492
|
-
label: "Orders",
|
|
493
|
-
value: "47 Orders",
|
|
494
|
-
desc: "Daily team order count with bar chart",
|
|
495
|
-
cardType: "bars",
|
|
496
|
-
barData: [12, 18, 15, 22, 19, 25, 28],
|
|
497
|
-
startHere: !0
|
|
498
|
-
},
|
|
499
|
-
{
|
|
500
|
-
id: "agency-orders-compact",
|
|
501
|
-
label: "Order Count",
|
|
502
|
-
value: "156",
|
|
503
|
-
desc: "Total order count with bar chart trend",
|
|
504
|
-
cardType: "bars",
|
|
505
|
-
barData: [18, 22, 19, 24, 26, 23, 28]
|
|
506
|
-
},
|
|
507
|
-
{
|
|
508
|
-
id: "agency-orders-stacked",
|
|
509
|
-
label: "Orders",
|
|
510
|
-
value: "156",
|
|
511
|
-
desc: "Order count across three timeframes",
|
|
512
|
-
variants: ["1×3"],
|
|
513
|
-
subStats: [
|
|
514
|
-
{ label: "MTD", value: "156" },
|
|
515
|
-
{ label: "QTD", value: "482" },
|
|
516
|
-
{ label: "YTD", value: "1,847" }
|
|
517
|
-
],
|
|
518
|
-
cardType: "stacked-group",
|
|
519
|
-
stackedTimeframes: ["MTD", "QTD", "YTD"]
|
|
520
|
-
},
|
|
521
|
-
{
|
|
522
|
-
id: "agency-order-pipeline-value",
|
|
523
|
-
label: "Pipeline Value",
|
|
524
|
-
value: "$284,500",
|
|
525
|
-
desc: "Open + transmitted order $ pipeline",
|
|
526
|
-
cardType: "standard",
|
|
527
|
-
prefix: "$"
|
|
528
|
-
},
|
|
529
|
-
{
|
|
530
|
-
id: "agency-unassigned-orders",
|
|
531
|
-
label: "Unassigned",
|
|
532
|
-
value: "0",
|
|
533
|
-
desc: "Orders awaiting salesperson assignment",
|
|
534
|
-
cardType: "standard"
|
|
535
|
-
},
|
|
536
|
-
{
|
|
537
|
-
id: "agency-cancel-rate",
|
|
538
|
-
label: "Cancel Rate",
|
|
539
|
-
value: "4.2%",
|
|
540
|
-
desc: "Order cancel-rate percentage (warn-tinted highlight)",
|
|
541
|
-
cardType: "highlight",
|
|
542
|
-
highlightColor: "#f59e0b",
|
|
543
|
-
suffix: "%"
|
|
544
|
-
}
|
|
545
|
-
]
|
|
546
|
-
},
|
|
547
|
-
"Rep performance": {
|
|
548
|
-
primary: [
|
|
549
|
-
{
|
|
550
|
-
id: "agency-top-rep",
|
|
551
|
-
label: "#1 Rep",
|
|
552
|
-
value: "Sarah Mitchell",
|
|
553
|
-
desc: "Top-performing rep on the team this period",
|
|
554
|
-
cardType: "name",
|
|
555
|
-
startHere: !0
|
|
556
|
-
},
|
|
557
|
-
{
|
|
558
|
-
id: "agency-quota",
|
|
559
|
-
label: "Below Quota",
|
|
560
|
-
value: "3 of 12",
|
|
561
|
-
desc: "Reps currently tracking under their quota",
|
|
562
|
-
cardType: "ratio",
|
|
563
|
-
numerator: 3,
|
|
564
|
-
denominator: 12
|
|
565
|
-
},
|
|
566
|
-
{
|
|
567
|
-
id: "agency-rep-leaderboard-sales",
|
|
568
|
-
label: "Rep Sales",
|
|
569
|
-
value: "Top 5",
|
|
570
|
-
desc: "Sales leaderboard across the rep team",
|
|
571
|
-
cardType: "leaderboard",
|
|
572
|
-
catalogValue: "Top 5"
|
|
573
|
-
}
|
|
574
|
-
]
|
|
575
|
-
},
|
|
576
|
-
"Brand portfolio": {
|
|
577
|
-
primary: [
|
|
578
|
-
{
|
|
579
|
-
id: "agency-mfr-mix",
|
|
580
|
-
label: "Mfr Mix",
|
|
581
|
-
value: "$892K",
|
|
582
|
-
desc: "Revenue mix by manufacturer (segmented bar)",
|
|
583
|
-
cardType: "segmented",
|
|
584
|
-
segments: [
|
|
585
|
-
{ label: "A", value: 35, color: "#7c3aed" },
|
|
586
|
-
{ label: "B", value: 28, color: "#1d6fd8" },
|
|
587
|
-
{ label: "C", value: 22, color: "#10b981" },
|
|
588
|
-
{ label: "D", value: 15, color: "#f59e0b" }
|
|
589
|
-
],
|
|
590
|
-
startHere: !0
|
|
591
|
-
},
|
|
592
|
-
{
|
|
593
|
-
id: "agency-mfr-new-line",
|
|
594
|
-
label: "New Mfrs",
|
|
595
|
-
value: "3",
|
|
596
|
-
desc: "New manufacturer count for the period",
|
|
597
|
-
cardType: "standard"
|
|
598
|
-
}
|
|
599
|
-
]
|
|
600
|
-
},
|
|
601
|
-
"Account coverage": {
|
|
602
|
-
primary: [
|
|
603
|
-
{
|
|
604
|
-
id: "agency-new-accounts",
|
|
605
|
-
label: "New Accounts",
|
|
606
|
-
value: "12",
|
|
607
|
-
desc: "New customer accounts opened this period",
|
|
608
|
-
cardType: "standard",
|
|
609
|
-
startHere: !0
|
|
610
|
-
},
|
|
611
|
-
{
|
|
612
|
-
id: "agency-customers-compact",
|
|
613
|
-
label: "Customers",
|
|
614
|
-
value: "287",
|
|
615
|
-
desc: "Active customer count with bar chart trend",
|
|
616
|
-
cardType: "bars",
|
|
617
|
-
barData: [240, 250, 260, 270, 275, 280, 287]
|
|
618
|
-
},
|
|
619
|
-
{
|
|
620
|
-
id: "agency-inactive-accounts",
|
|
621
|
-
label: "Inactive Act",
|
|
622
|
-
value: "5",
|
|
623
|
-
desc: "Inactive customer-account count (warn-tinted)",
|
|
624
|
-
cardType: "highlight",
|
|
625
|
-
highlightColor: "#f59e0b"
|
|
626
|
-
},
|
|
627
|
-
{
|
|
628
|
-
id: "agency-account-churn",
|
|
629
|
-
label: "Account Churn",
|
|
630
|
-
value: "8%",
|
|
631
|
-
desc: "Customer churn rate (LY-active not TY-active)",
|
|
632
|
-
cardType: "standard",
|
|
633
|
-
suffix: "%"
|
|
634
|
-
}
|
|
635
|
-
]
|
|
636
|
-
},
|
|
637
|
-
Commission: {
|
|
638
|
-
primary: [
|
|
639
|
-
{
|
|
640
|
-
id: "agency-outstanding",
|
|
641
|
-
label: "Outstanding",
|
|
642
|
-
value: "$24,500",
|
|
643
|
-
desc: "Unpaid order balance across all accounts",
|
|
644
|
-
cardType: "standard",
|
|
645
|
-
prefix: "$",
|
|
646
|
-
startHere: !0
|
|
647
|
-
},
|
|
648
|
-
{
|
|
649
|
-
id: "agency-commission-rate",
|
|
650
|
-
label: "Commission",
|
|
651
|
-
value: "8.4%",
|
|
652
|
-
desc: "Effective commission rate %",
|
|
653
|
-
cardType: "standard",
|
|
654
|
-
suffix: "%"
|
|
655
|
-
},
|
|
656
|
-
{
|
|
657
|
-
id: "agency-commission-aging",
|
|
658
|
-
label: "Commission Aging",
|
|
659
|
-
value: "$24K",
|
|
660
|
-
desc: "Unpaid commission aging by buckets",
|
|
661
|
-
cardType: "bars",
|
|
662
|
-
barData: [4, 8, 7, 5]
|
|
663
|
-
}
|
|
664
|
-
]
|
|
665
|
-
}
|
|
666
|
-
};
|
|
667
|
-
function Pe({
|
|
668
|
-
lenses: e,
|
|
669
|
-
activeLens: t,
|
|
670
|
-
onLensChange: s,
|
|
671
|
-
variant: r = "pills",
|
|
672
|
-
lensMeta: n = Ne
|
|
673
|
-
}) {
|
|
674
|
-
return r === "pills" ? /* @__PURE__ */ a("div", { className: "cat-pills-wrap", children: /* @__PURE__ */ a("div", { className: "cat-pills", role: "tablist", "aria-label": "Metric lenses", children: e.map((c) => {
|
|
675
|
-
const p = c === t, o = n[c], i = ["cat-pill"];
|
|
676
|
-
return p && i.push("active"), /* @__PURE__ */ b(
|
|
677
|
-
"button",
|
|
678
|
-
{
|
|
679
|
-
type: "button",
|
|
680
|
-
role: "tab",
|
|
681
|
-
"aria-selected": p,
|
|
682
|
-
className: i.join(" "),
|
|
683
|
-
"data-lens": c,
|
|
684
|
-
onClick: () => {
|
|
685
|
-
p || s(c);
|
|
686
|
-
},
|
|
687
|
-
children: [
|
|
688
|
-
c,
|
|
689
|
-
o?.beta && /* @__PURE__ */ a("span", { className: "cat-pill-beta", "aria-label": "Beta", children: "BETA" })
|
|
690
|
-
]
|
|
691
|
-
},
|
|
692
|
-
c
|
|
693
|
-
);
|
|
694
|
-
}) }) }) : /* @__PURE__ */ a(ot, { lenses: e, activeLens: t, onLensChange: s });
|
|
55
|
+
role: "radio",
|
|
56
|
+
"aria-pressed": f === g,
|
|
57
|
+
"aria-checked": f === g,
|
|
58
|
+
"aria-label": `Accent ${g}`,
|
|
59
|
+
className: "settings-shell__swatch",
|
|
60
|
+
style: { backgroundColor: g },
|
|
61
|
+
onClick: () => b(g),
|
|
62
|
+
"data-testid": `settings-swatch-${g}`
|
|
63
|
+
},
|
|
64
|
+
g
|
|
65
|
+
)) })
|
|
66
|
+
] })
|
|
67
|
+
] })
|
|
68
|
+
] });
|
|
695
69
|
}
|
|
696
|
-
function
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
p(), c.current = window.setTimeout(() => n(!1), 100);
|
|
705
|
-
}, i = e.filter((l) => l !== t);
|
|
706
|
-
return /* @__PURE__ */ a("div", { className: "cat-segmented-wrap", children: /* @__PURE__ */ b("div", { className: "cat-segmented", children: [
|
|
707
|
-
/* @__PURE__ */ a(
|
|
70
|
+
function K({ lenses: e, activeLens: t, onLensChange: o }) {
|
|
71
|
+
const [n, a] = y(!1), r = B(null), d = () => {
|
|
72
|
+
r.current != null && (window.clearTimeout(r.current), r.current = null);
|
|
73
|
+
}, l = () => {
|
|
74
|
+
d(), r.current = window.setTimeout(() => a(!1), 100);
|
|
75
|
+
}, i = e.filter((c) => c !== t);
|
|
76
|
+
return /* @__PURE__ */ s("div", { className: "cat-segmented-wrap", children: /* @__PURE__ */ h("div", { className: "cat-segmented", children: [
|
|
77
|
+
/* @__PURE__ */ s(
|
|
708
78
|
"button",
|
|
709
79
|
{
|
|
710
80
|
type: "button",
|
|
@@ -714,35 +84,35 @@ function ot({
|
|
|
714
84
|
children: t
|
|
715
85
|
}
|
|
716
86
|
),
|
|
717
|
-
/* @__PURE__ */
|
|
87
|
+
/* @__PURE__ */ h(
|
|
718
88
|
"div",
|
|
719
89
|
{
|
|
720
90
|
className: "cat-seg-more",
|
|
721
91
|
onMouseEnter: () => {
|
|
722
|
-
|
|
92
|
+
d(), a(!0);
|
|
723
93
|
},
|
|
724
|
-
onMouseLeave:
|
|
94
|
+
onMouseLeave: l,
|
|
725
95
|
children: [
|
|
726
|
-
/* @__PURE__ */
|
|
727
|
-
|
|
96
|
+
/* @__PURE__ */ s("button", { type: "button", className: "cat-seg cat-seg-more-btn", "aria-haspopup": "menu", "aria-expanded": n, children: "More ▾" }),
|
|
97
|
+
n && /* @__PURE__ */ s(
|
|
728
98
|
"div",
|
|
729
99
|
{
|
|
730
100
|
className: "cat-seg-overflow",
|
|
731
101
|
role: "menu",
|
|
732
|
-
onMouseEnter:
|
|
733
|
-
onMouseLeave:
|
|
734
|
-
children: i.map((
|
|
102
|
+
onMouseEnter: d,
|
|
103
|
+
onMouseLeave: l,
|
|
104
|
+
children: i.map((c) => /* @__PURE__ */ s(
|
|
735
105
|
"button",
|
|
736
106
|
{
|
|
737
107
|
type: "button",
|
|
738
|
-
"data-lens":
|
|
108
|
+
"data-lens": c,
|
|
739
109
|
role: "menuitem",
|
|
740
110
|
onClick: () => {
|
|
741
|
-
|
|
111
|
+
o(c), a(!1);
|
|
742
112
|
},
|
|
743
|
-
children:
|
|
113
|
+
children: c
|
|
744
114
|
},
|
|
745
|
-
|
|
115
|
+
c
|
|
746
116
|
))
|
|
747
117
|
}
|
|
748
118
|
)
|
|
@@ -751,87 +121,50 @@ function ot({
|
|
|
751
121
|
)
|
|
752
122
|
] }) });
|
|
753
123
|
}
|
|
754
|
-
function
|
|
755
|
-
return
|
|
756
|
-
const
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
Number.isFinite(h) && (d = Math.max(0, Math.min(1, h / 100)));
|
|
768
|
-
}
|
|
769
|
-
}
|
|
770
|
-
return /* @__PURE__ */ b(
|
|
124
|
+
function ae(e) {
|
|
125
|
+
return e.split("·").map((t, o) => {
|
|
126
|
+
const n = t.trim(), a = n.match(/^([$+\-]?[\d,]+(?:\.\d+)?[%+]?)\s*(.*)$/), r = a ? a[1] : "", d = a ? a[2] : n;
|
|
127
|
+
return /* @__PURE__ */ h("span", { children: [
|
|
128
|
+
/* @__PURE__ */ s("strong", { children: r }),
|
|
129
|
+
/* @__PURE__ */ s("small", { children: d })
|
|
130
|
+
] }, o);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
function j({ tiles: e, selectedTileId: t, onSelectTile: o }) {
|
|
134
|
+
return /* @__PURE__ */ s("div", { className: "cat-tiles", children: e.map((n) => {
|
|
135
|
+
const a = n.id === t, r = n.stack === !0, d = ["cat-tile"];
|
|
136
|
+
return r && d.push("span-2"), a && d.push("selected"), /* @__PURE__ */ h(
|
|
771
137
|
"button",
|
|
772
138
|
{
|
|
773
139
|
type: "button",
|
|
774
|
-
className:
|
|
140
|
+
className: d.join(" "),
|
|
775
141
|
"data-metric": n.id,
|
|
776
142
|
"data-desc": n.desc,
|
|
777
|
-
"
|
|
778
|
-
|
|
779
|
-
"data-accent": n.accent,
|
|
780
|
-
"aria-pressed": c,
|
|
781
|
-
onClick: () => s(n.id, n.desc),
|
|
782
|
-
style: n.accent ? { "--cat-tile-accent": n.accent } : void 0,
|
|
143
|
+
"aria-pressed": a,
|
|
144
|
+
onClick: () => o(n.id, n.desc),
|
|
783
145
|
children: [
|
|
784
|
-
|
|
785
|
-
r ?
|
|
786
|
-
|
|
787
|
-
{
|
|
788
|
-
className: "cat-tile-primitive-wrapper gloss-metric-card",
|
|
789
|
-
"data-col-span": "1",
|
|
790
|
-
style: { pointerEvents: "none", width: "100%", height: "100%" },
|
|
791
|
-
"aria-hidden": "true",
|
|
792
|
-
children: n.donut ? /* @__PURE__ */ a(
|
|
793
|
-
ue,
|
|
794
|
-
{
|
|
795
|
-
variant: "donut",
|
|
796
|
-
label: n.label,
|
|
797
|
-
value: n.value,
|
|
798
|
-
donutValue: d,
|
|
799
|
-
donutMax: 1,
|
|
800
|
-
accentColor: n.accent,
|
|
801
|
-
colSpan: l
|
|
802
|
-
}
|
|
803
|
-
) : /* @__PURE__ */ a(
|
|
804
|
-
ue,
|
|
805
|
-
{
|
|
806
|
-
variant: "standard",
|
|
807
|
-
label: n.label,
|
|
808
|
-
value: n.value,
|
|
809
|
-
colSpan: l
|
|
810
|
-
}
|
|
811
|
-
)
|
|
812
|
-
}
|
|
813
|
-
),
|
|
814
|
-
n.variants && n.variants.length > 0 && /* @__PURE__ */ a("span", { className: "cat-tile-variants", "aria-hidden": "true", children: n.variants.map((u) => /* @__PURE__ */ a("span", { children: u }, u)) }),
|
|
815
|
-
n.isNew && /* @__PURE__ */ a("span", { className: "cat-tile-new-dot", "aria-hidden": "true" })
|
|
146
|
+
/* @__PURE__ */ s("span", { className: "cat-tile-label", children: n.label }),
|
|
147
|
+
/* @__PURE__ */ s("span", { className: "cat-tile-value", children: r ? ae(n.value) : n.value }),
|
|
148
|
+
n.variants && n.variants.length > 0 && /* @__PURE__ */ s("span", { className: "cat-tile-variants", "aria-hidden": "true", children: n.variants.map((l) => /* @__PURE__ */ s("span", { children: l }, l)) })
|
|
816
149
|
]
|
|
817
150
|
},
|
|
818
151
|
n.id
|
|
819
152
|
);
|
|
820
153
|
}) });
|
|
821
154
|
}
|
|
822
|
-
const
|
|
823
|
-
function
|
|
824
|
-
return
|
|
825
|
-
}
|
|
826
|
-
function
|
|
827
|
-
const
|
|
828
|
-
if (
|
|
829
|
-
const
|
|
830
|
-
return /* @__PURE__ */
|
|
831
|
-
/* @__PURE__ */
|
|
832
|
-
/* @__PURE__ */
|
|
833
|
-
/* @__PURE__ */
|
|
834
|
-
/* @__PURE__ */
|
|
155
|
+
const k = H(null);
|
|
156
|
+
function re() {
|
|
157
|
+
return U(k);
|
|
158
|
+
}
|
|
159
|
+
function le({ mode: e, dispatch: t }) {
|
|
160
|
+
const o = re();
|
|
161
|
+
if (o == null && e == null) return null;
|
|
162
|
+
const n = o?.mode ?? e ?? "add", a = o?.selectedTileId ?? null, r = o?.description ?? null, d = a == null;
|
|
163
|
+
return /* @__PURE__ */ h("div", { className: "panel-footer catalog", children: [
|
|
164
|
+
/* @__PURE__ */ s("div", { className: "cat-description", id: "cat-desc", children: r ?? /* @__PURE__ */ s("em", { children: "Tap a metric to see its description" }) }),
|
|
165
|
+
/* @__PURE__ */ h("div", { style: { display: "flex", padding: "10px 14px", gap: 8 }, children: [
|
|
166
|
+
/* @__PURE__ */ s("div", { className: "spacer", style: { flex: 1 } }),
|
|
167
|
+
/* @__PURE__ */ s(
|
|
835
168
|
"button",
|
|
836
169
|
{
|
|
837
170
|
id: "btn-cat-cancel",
|
|
@@ -841,24 +174,24 @@ function zt({ mode: e, dispatch: t }) {
|
|
|
841
174
|
children: "Cancel"
|
|
842
175
|
}
|
|
843
176
|
),
|
|
844
|
-
|
|
177
|
+
n === "add" && /* @__PURE__ */ s(
|
|
845
178
|
"button",
|
|
846
179
|
{
|
|
847
180
|
id: "btn-cat-add",
|
|
848
181
|
type: "button",
|
|
849
182
|
className: "btn btn-primary",
|
|
850
|
-
disabled:
|
|
183
|
+
disabled: d,
|
|
851
184
|
onClick: () => t({ type: "CLOSE_PANEL", reason: "apply-button" }),
|
|
852
185
|
children: "Add metric"
|
|
853
186
|
}
|
|
854
187
|
),
|
|
855
|
-
|
|
188
|
+
n === "replace" && /* @__PURE__ */ s(
|
|
856
189
|
"button",
|
|
857
190
|
{
|
|
858
191
|
id: "btn-cat-replace",
|
|
859
192
|
type: "button",
|
|
860
193
|
className: "btn btn-primary",
|
|
861
|
-
disabled:
|
|
194
|
+
disabled: d,
|
|
862
195
|
onClick: () => t({ type: "CLOSE_PANEL", reason: "apply-button" }),
|
|
863
196
|
children: "Replace metric"
|
|
864
197
|
}
|
|
@@ -866,220 +199,192 @@ function zt({ mode: e, dispatch: t }) {
|
|
|
866
199
|
] })
|
|
867
200
|
] });
|
|
868
201
|
}
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
}
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
202
|
+
const W = [
|
|
203
|
+
"Revenue",
|
|
204
|
+
"Order flow",
|
|
205
|
+
"Rep performance",
|
|
206
|
+
"Brand portfolio",
|
|
207
|
+
"Account coverage",
|
|
208
|
+
"Commission"
|
|
209
|
+
], G = "Order flow", Q = {
|
|
210
|
+
Revenue: [
|
|
211
|
+
{ id: "rev-mtd", label: "Revenue MTD", value: "$184K", desc: "Month-to-date revenue across all manufacturers and territories." },
|
|
212
|
+
{ id: "rev-ytd", label: "Revenue YTD", value: "$2.1M", desc: "Year-to-date revenue including pending and posted orders.", variants: ["1×1", "1×3"] },
|
|
213
|
+
{ id: "rev-yoy", label: "YoY Δ", value: "+12.4%", desc: "Revenue growth versus the prior comparable period." },
|
|
214
|
+
{ id: "rev-avg", label: "Avg order", value: "$1,820", desc: "Average order value over the last 30 days." }
|
|
215
|
+
],
|
|
216
|
+
"Order flow": [
|
|
217
|
+
{
|
|
218
|
+
id: "of-funnel",
|
|
219
|
+
label: "Order funnel",
|
|
220
|
+
value: "New 42 · Incomplete 18 · Transmitted 91",
|
|
221
|
+
stack: !0,
|
|
222
|
+
desc: "Funnel snapshot — new orders, incomplete (awaiting attention), and transmitted to manufacturer.",
|
|
223
|
+
variants: ["1×3"]
|
|
224
|
+
},
|
|
225
|
+
{ id: "of-incomplete", label: "Incomplete", value: "18", desc: "Orders started but not yet transmitted." },
|
|
226
|
+
{ id: "of-transmitted", label: "Transmitted", value: "91", desc: "Orders successfully sent to manufacturer." },
|
|
227
|
+
{ id: "of-today", label: "New today", value: "7", desc: "Orders created in the current calendar day." },
|
|
228
|
+
{ id: "of-velocity", label: "Order velocity", value: "+3.1/d", desc: "Rolling 7-day order-creation rate change." }
|
|
229
|
+
],
|
|
230
|
+
"Rep performance": [
|
|
231
|
+
{ id: "rp-leader", label: "#1 Rep", value: "A. Chen", desc: "Top revenue performer in the current period." },
|
|
232
|
+
{ id: "rp-quota", label: "Below quota", value: "4 reps", desc: "Reps currently tracking below pace-to-quota." },
|
|
233
|
+
{ id: "rp-commission", label: "Commission pace", value: "$48K", desc: "Projected commission pool at current burn rate." },
|
|
234
|
+
{ id: "rp-active", label: "Active reps", value: "14", desc: "Reps with at least one order this period." }
|
|
235
|
+
],
|
|
236
|
+
"Brand portfolio": [
|
|
237
|
+
{ id: "bp-top", label: "Top brand", value: "Acme Co.", desc: "Highest-revenue manufacturer this period." },
|
|
238
|
+
{ id: "bp-mix", label: "Mix Δ", value: "+2pp", desc: "Portfolio mix shift versus the prior period." },
|
|
239
|
+
{ id: "bp-coverage", label: "Brand coverage", value: "73%", desc: "Percent of accounts with at least one active brand." },
|
|
240
|
+
{ id: "bp-new", label: "New brand adds", value: "3", desc: "Brands with first-order activity this period." }
|
|
241
|
+
],
|
|
242
|
+
"Account coverage": [
|
|
243
|
+
{ id: "ac-active", label: "Active accounts", value: "128", desc: "Accounts with at least one order in the period." },
|
|
244
|
+
{ id: "ac-untouched", label: "Untouched", value: "34", desc: "Accounts with zero activity in the period." },
|
|
245
|
+
{ id: "ac-concentration", label: "Concentration", value: "38% top-5", desc: "Revenue concentration in top-5 accounts." },
|
|
246
|
+
{ id: "ac-new", label: "New accounts", value: "6", desc: "Accounts with first-ever order this period." }
|
|
247
|
+
],
|
|
248
|
+
Commission: [
|
|
249
|
+
{ id: "cm-projected", label: "Projected", value: "$48K", desc: "Forecast commission at current pace." },
|
|
250
|
+
{ id: "cm-paid", label: "Paid", value: "$31K", desc: "Commission posted to ledger this period." },
|
|
251
|
+
{ id: "cm-pending", label: "Pending", value: "$17K", desc: "Commission earned but not yet posted." },
|
|
252
|
+
{ id: "cm-rate", label: "Effective rate", value: "6.8%", desc: "Realized commission rate across all orders." }
|
|
253
|
+
]
|
|
254
|
+
};
|
|
255
|
+
function Te({
|
|
884
256
|
isOpen: e,
|
|
885
|
-
lenses: t =
|
|
886
|
-
defaultLens:
|
|
887
|
-
tilesByLens:
|
|
888
|
-
|
|
889
|
-
renderTile: c,
|
|
890
|
-
onAdd: p
|
|
257
|
+
lenses: t = W,
|
|
258
|
+
defaultLens: o = G,
|
|
259
|
+
tilesByLens: n = Q,
|
|
260
|
+
footerSlot: a
|
|
891
261
|
}) {
|
|
892
|
-
const
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
), g = ie(
|
|
896
|
-
() => (_.secondary ?? []).filter((P) => pe(P, m)),
|
|
897
|
-
[_.secondary, m]
|
|
898
|
-
), x = () => {
|
|
899
|
-
d != null && p?.(d), o?.dispatch({ type: "CLOSE_PANEL", reason: "apply-button" });
|
|
900
|
-
}, R = () => o?.dispatch({ type: "CLOSE_PANEL", reason: "header-x" }), $ = d == null;
|
|
901
|
-
return /* @__PURE__ */ a(
|
|
902
|
-
se.Provider,
|
|
262
|
+
const [r, d] = y(o), [l, i] = y(null), [c, u] = y(null), m = n[r] ?? [];
|
|
263
|
+
return /* @__PURE__ */ h(
|
|
264
|
+
k.Provider,
|
|
903
265
|
{
|
|
904
|
-
value: { mode: "add", selectedTileId:
|
|
905
|
-
children:
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
{
|
|
916
|
-
id: "btn-cat-add",
|
|
917
|
-
type: "button",
|
|
918
|
-
className: "gloss-panel-chrome-v2__footer-btn gloss-panel-chrome-v2__footer-btn--primary",
|
|
919
|
-
disabled: $,
|
|
920
|
-
onClick: x,
|
|
921
|
-
children: "Add metric"
|
|
922
|
-
}
|
|
923
|
-
)
|
|
924
|
-
},
|
|
925
|
-
children: /* @__PURE__ */ b("div", { "data-shell": "catalog-add", "aria-hidden": !e, children: [
|
|
926
|
-
/* @__PURE__ */ a("div", { className: "cat-search", children: /* @__PURE__ */ a(
|
|
927
|
-
"input",
|
|
928
|
-
{
|
|
929
|
-
type: "search",
|
|
930
|
-
className: "cat-search-input",
|
|
931
|
-
placeholder: "Search metrics",
|
|
932
|
-
"aria-label": "Search metrics",
|
|
933
|
-
value: m,
|
|
934
|
-
onChange: (P) => v(P.target.value)
|
|
935
|
-
}
|
|
936
|
-
) }),
|
|
937
|
-
/* @__PURE__ */ a(
|
|
938
|
-
Pe,
|
|
939
|
-
{
|
|
940
|
-
lenses: t,
|
|
941
|
-
activeLens: i,
|
|
942
|
-
lensMeta: n,
|
|
943
|
-
variant: "pills",
|
|
944
|
-
onLensChange: (P) => {
|
|
945
|
-
l(P), u(null), y(null), v("");
|
|
946
|
-
}
|
|
266
|
+
value: { mode: "add", selectedTileId: l, description: c },
|
|
267
|
+
children: [
|
|
268
|
+
/* @__PURE__ */ h("div", { "data-shell": "catalog-add", "aria-hidden": !e, children: [
|
|
269
|
+
/* @__PURE__ */ s("h3", { children: "Add a metric" }),
|
|
270
|
+
/* @__PURE__ */ s(
|
|
271
|
+
K,
|
|
272
|
+
{
|
|
273
|
+
lenses: t,
|
|
274
|
+
activeLens: r,
|
|
275
|
+
onLensChange: (f) => {
|
|
276
|
+
d(f), i(null), u(null);
|
|
947
277
|
}
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
{
|
|
956
|
-
|
|
957
|
-
selectedTileId: d,
|
|
958
|
-
onSelectTile: (P, A) => {
|
|
959
|
-
u(P), y(A);
|
|
960
|
-
},
|
|
961
|
-
renderTile: c
|
|
278
|
+
}
|
|
279
|
+
),
|
|
280
|
+
/* @__PURE__ */ s(
|
|
281
|
+
j,
|
|
282
|
+
{
|
|
283
|
+
tiles: m,
|
|
284
|
+
selectedTileId: l,
|
|
285
|
+
onSelectTile: (f, v) => {
|
|
286
|
+
i(f), u(v);
|
|
962
287
|
}
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
{
|
|
969
|
-
tiles: g,
|
|
970
|
-
selectedTileId: d,
|
|
971
|
-
onSelectTile: (P, A) => {
|
|
972
|
-
u(P), y(A);
|
|
973
|
-
},
|
|
974
|
-
renderTile: c
|
|
975
|
-
}
|
|
976
|
-
)
|
|
977
|
-
] }),
|
|
978
|
-
w.length === 0 && g.length === 0 && m.length > 0 && /* @__PURE__ */ b("div", { className: "cat-empty", children: [
|
|
979
|
-
'No metrics match "',
|
|
980
|
-
m,
|
|
981
|
-
'".'
|
|
982
|
-
] })
|
|
983
|
-
] })
|
|
984
|
-
}
|
|
985
|
-
)
|
|
288
|
+
}
|
|
289
|
+
)
|
|
290
|
+
] }),
|
|
291
|
+
a
|
|
292
|
+
]
|
|
986
293
|
}
|
|
987
294
|
);
|
|
988
295
|
}
|
|
989
|
-
function
|
|
990
|
-
const t = oe()?.description ?? null;
|
|
991
|
-
return t == null ? /* @__PURE__ */ a("em", { children: "Tap a metric to see its description" }) : /* @__PURE__ */ a(ge, { children: t });
|
|
992
|
-
}
|
|
993
|
-
function Ut({
|
|
296
|
+
function Ie({
|
|
994
297
|
isOpen: e,
|
|
995
298
|
replacingLabel: t,
|
|
996
|
-
lenses:
|
|
997
|
-
defaultLens:
|
|
998
|
-
tilesByLens:
|
|
999
|
-
|
|
299
|
+
lenses: o = W,
|
|
300
|
+
defaultLens: n = G,
|
|
301
|
+
tilesByLens: a = Q,
|
|
302
|
+
footerSlot: r
|
|
1000
303
|
}) {
|
|
1001
|
-
const
|
|
1002
|
-
return /* @__PURE__ */
|
|
1003
|
-
|
|
304
|
+
const [d, l] = y(n), [i, c] = y(null), [u, m] = y(null), f = a[d] ?? [];
|
|
305
|
+
return /* @__PURE__ */ h(
|
|
306
|
+
k.Provider,
|
|
1004
307
|
{
|
|
1005
|
-
value: { mode: "replace", selectedTileId:
|
|
1006
|
-
children:
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
disabled: N,
|
|
1021
|
-
onClick: v,
|
|
1022
|
-
children: "Replace metric"
|
|
1023
|
-
}
|
|
1024
|
-
)
|
|
1025
|
-
},
|
|
1026
|
-
children: /* @__PURE__ */ b("div", { "data-shell": "catalog-replace", "aria-hidden": !e, children: [
|
|
1027
|
-
t && /* @__PURE__ */ b("p", { className: "cat-subtitle", children: [
|
|
1028
|
-
"replacing ",
|
|
1029
|
-
t
|
|
1030
|
-
] }),
|
|
1031
|
-
/* @__PURE__ */ a(
|
|
1032
|
-
Pe,
|
|
1033
|
-
{
|
|
1034
|
-
lenses: s,
|
|
1035
|
-
activeLens: o,
|
|
1036
|
-
onLensChange: (w) => {
|
|
1037
|
-
i(w), d(null), h(null);
|
|
1038
|
-
}
|
|
308
|
+
value: { mode: "replace", selectedTileId: i, description: u },
|
|
309
|
+
children: [
|
|
310
|
+
/* @__PURE__ */ h("div", { "data-shell": "catalog-replace", "aria-hidden": !e, children: [
|
|
311
|
+
/* @__PURE__ */ s("h3", { children: "Replace metric" }),
|
|
312
|
+
t && /* @__PURE__ */ h("p", { className: "cat-subtitle", children: [
|
|
313
|
+
"replacing ",
|
|
314
|
+
t
|
|
315
|
+
] }),
|
|
316
|
+
/* @__PURE__ */ s(
|
|
317
|
+
K,
|
|
318
|
+
{
|
|
319
|
+
lenses: o,
|
|
320
|
+
activeLens: d,
|
|
321
|
+
onLensChange: (v) => {
|
|
322
|
+
l(v), c(null), m(null);
|
|
1039
323
|
}
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
renderTile: c
|
|
324
|
+
}
|
|
325
|
+
),
|
|
326
|
+
/* @__PURE__ */ s(
|
|
327
|
+
j,
|
|
328
|
+
{
|
|
329
|
+
tiles: f,
|
|
330
|
+
selectedTileId: i,
|
|
331
|
+
onSelectTile: (v, b) => {
|
|
332
|
+
c(v), m(b);
|
|
1050
333
|
}
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
}
|
|
1054
|
-
|
|
334
|
+
}
|
|
335
|
+
)
|
|
336
|
+
] }),
|
|
337
|
+
r
|
|
338
|
+
]
|
|
1055
339
|
}
|
|
1056
340
|
);
|
|
1057
341
|
}
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
return
|
|
342
|
+
function ie({ page: e, onRename: t, onKebab: o, onDragStart: n }) {
|
|
343
|
+
const a = ["pm-row"];
|
|
344
|
+
return e.active && a.push("active"), /* @__PURE__ */ h("div", { className: a.join(" "), "data-page-id": e.id, role: "listitem", children: [
|
|
345
|
+
/* @__PURE__ */ s(
|
|
346
|
+
"div",
|
|
347
|
+
{
|
|
348
|
+
className: "pm-handle",
|
|
349
|
+
"aria-hidden": "true",
|
|
350
|
+
onMouseDown: () => n?.(e.id),
|
|
351
|
+
children: "⋮⋮"
|
|
352
|
+
}
|
|
353
|
+
),
|
|
354
|
+
/* @__PURE__ */ s("div", { className: "pm-name", onClick: () => t?.(e.id), children: e.name }),
|
|
355
|
+
/* @__PURE__ */ s(
|
|
356
|
+
"button",
|
|
357
|
+
{
|
|
358
|
+
type: "button",
|
|
359
|
+
className: "pm-kebab",
|
|
360
|
+
"aria-label": "Page options",
|
|
361
|
+
onClick: () => o?.(e.id),
|
|
362
|
+
children: "⋯"
|
|
363
|
+
}
|
|
364
|
+
)
|
|
365
|
+
] });
|
|
1061
366
|
}
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
return
|
|
367
|
+
const X = H(null);
|
|
368
|
+
function ce() {
|
|
369
|
+
return U(X);
|
|
370
|
+
}
|
|
371
|
+
function de(e = {}) {
|
|
372
|
+
const o = ce()?.setPages;
|
|
373
|
+
return /* @__PURE__ */ h(
|
|
1065
374
|
"div",
|
|
1066
375
|
{
|
|
1067
376
|
className: "panel-footer pm",
|
|
1068
377
|
style: { display: "flex", justifyContent: "flex-end", padding: "10px 14px" },
|
|
1069
378
|
children: [
|
|
1070
|
-
/* @__PURE__ */
|
|
1071
|
-
/* @__PURE__ */
|
|
379
|
+
/* @__PURE__ */ s("div", { className: "spacer", style: { flex: 1 } }),
|
|
380
|
+
/* @__PURE__ */ s(
|
|
1072
381
|
"button",
|
|
1073
382
|
{
|
|
1074
383
|
id: "btn-new-page",
|
|
1075
384
|
type: "button",
|
|
1076
385
|
className: "btn btn-primary",
|
|
1077
386
|
onClick: () => {
|
|
1078
|
-
|
|
1079
|
-
s();
|
|
1080
|
-
return;
|
|
1081
|
-
}
|
|
1082
|
-
r && r((n) => [
|
|
387
|
+
o && o((n) => [
|
|
1083
388
|
...n,
|
|
1084
389
|
{ id: `new-${Date.now()}`, name: "Untitled", active: !1 }
|
|
1085
390
|
]);
|
|
@@ -1091,495 +396,377 @@ function it(e = {}) {
|
|
|
1091
396
|
}
|
|
1092
397
|
);
|
|
1093
398
|
}
|
|
1094
|
-
|
|
1095
|
-
const c = we(), [p, o] = E(!1), i = K(null);
|
|
1096
|
-
F(() => {
|
|
1097
|
-
if (!p) return;
|
|
1098
|
-
const m = (v) => {
|
|
1099
|
-
i.current && (i.current.contains(v.target) || o(!1));
|
|
1100
|
-
};
|
|
1101
|
-
return document.addEventListener("mousedown", m, !0), () => document.removeEventListener("mousedown", m, !0);
|
|
1102
|
-
}, [p]);
|
|
1103
|
-
const l = () => {
|
|
1104
|
-
if (o(!1), t) return t(e.id);
|
|
1105
|
-
if (!c?.renamePage) return;
|
|
1106
|
-
const m = window.prompt("Rename page", e.name);
|
|
1107
|
-
m != null && m.trim().length > 0 && c.renamePage(e.id, m.trim());
|
|
1108
|
-
}, d = () => {
|
|
1109
|
-
o(!1), c?.duplicatePage?.(e.id);
|
|
1110
|
-
}, u = () => {
|
|
1111
|
-
o(!1), c?.deletePage?.(e.id);
|
|
1112
|
-
}, h = (m) => {
|
|
1113
|
-
m.stopPropagation(), n && !e.active && n(e.id);
|
|
1114
|
-
}, y = ["pm-row"];
|
|
1115
|
-
return e.active && y.push("active"), /* @__PURE__ */ b("div", { ref: i, className: y.join(" "), "data-page-id": e.id, role: "listitem", children: [
|
|
1116
|
-
/* @__PURE__ */ a(
|
|
1117
|
-
"div",
|
|
1118
|
-
{
|
|
1119
|
-
className: "pm-handle",
|
|
1120
|
-
"aria-hidden": "true",
|
|
1121
|
-
onMouseDown: () => r?.(e.id),
|
|
1122
|
-
children: "⋮⋮"
|
|
1123
|
-
}
|
|
1124
|
-
),
|
|
1125
|
-
/* @__PURE__ */ a(
|
|
1126
|
-
"div",
|
|
1127
|
-
{
|
|
1128
|
-
className: "pm-name",
|
|
1129
|
-
role: n && !e.active ? "button" : void 0,
|
|
1130
|
-
tabIndex: n && !e.active ? 0 : void 0,
|
|
1131
|
-
onClick: n ? h : void 0,
|
|
1132
|
-
onKeyDown: (m) => {
|
|
1133
|
-
!n || e.active || (m.key === "Enter" || m.key === " ") && (m.preventDefault(), m.stopPropagation(), n(e.id));
|
|
1134
|
-
},
|
|
1135
|
-
"aria-label": n && !e.active ? `Switch to ${e.name}` : void 0,
|
|
1136
|
-
children: e.name
|
|
1137
|
-
}
|
|
1138
|
-
),
|
|
1139
|
-
/* @__PURE__ */ a(
|
|
1140
|
-
"button",
|
|
1141
|
-
{
|
|
1142
|
-
type: "button",
|
|
1143
|
-
className: "pm-kebab",
|
|
1144
|
-
"aria-label": "Page options",
|
|
1145
|
-
"aria-haspopup": "menu",
|
|
1146
|
-
"aria-expanded": p,
|
|
1147
|
-
onPointerDown: (m) => m.stopPropagation(),
|
|
1148
|
-
onMouseDown: (m) => m.stopPropagation(),
|
|
1149
|
-
onClick: (m) => {
|
|
1150
|
-
if (m.stopPropagation(), s) return s(e.id);
|
|
1151
|
-
o((v) => !v);
|
|
1152
|
-
},
|
|
1153
|
-
children: "⋯"
|
|
1154
|
-
}
|
|
1155
|
-
),
|
|
1156
|
-
p && /* @__PURE__ */ b(
|
|
1157
|
-
"div",
|
|
1158
|
-
{
|
|
1159
|
-
className: "pm-kebab-menu",
|
|
1160
|
-
role: "menu",
|
|
1161
|
-
"data-page-id": e.id,
|
|
1162
|
-
onPointerDown: (m) => m.stopPropagation(),
|
|
1163
|
-
onMouseDown: (m) => m.stopPropagation(),
|
|
1164
|
-
children: [
|
|
1165
|
-
/* @__PURE__ */ a("button", { type: "button", role: "menuitem", className: "pm-kebab-menu__item", onClick: l, children: "Rename" }),
|
|
1166
|
-
/* @__PURE__ */ a("button", { type: "button", role: "menuitem", className: "pm-kebab-menu__item", onClick: d, children: "Duplicate" }),
|
|
1167
|
-
/* @__PURE__ */ a(
|
|
1168
|
-
"button",
|
|
1169
|
-
{
|
|
1170
|
-
type: "button",
|
|
1171
|
-
role: "menuitem",
|
|
1172
|
-
className: "pm-kebab-menu__item pm-kebab-menu__item--danger",
|
|
1173
|
-
onClick: u,
|
|
1174
|
-
children: "Delete"
|
|
1175
|
-
}
|
|
1176
|
-
)
|
|
1177
|
-
]
|
|
1178
|
-
}
|
|
1179
|
-
)
|
|
1180
|
-
] });
|
|
1181
|
-
}
|
|
1182
|
-
const ct = [
|
|
399
|
+
const ue = [
|
|
1183
400
|
{ id: "p-pipeline", name: "My Pipeline", active: !0 },
|
|
1184
401
|
{ id: "p-numbers", name: "My Numbers", active: !1 },
|
|
1185
402
|
{ id: "p-morning", name: "My Morning", active: !1 },
|
|
1186
403
|
{ id: "p-accounts", name: "My Accounts", active: !1 }
|
|
1187
404
|
];
|
|
1188
|
-
function
|
|
405
|
+
function ke({
|
|
1189
406
|
isOpen: e,
|
|
1190
|
-
pages: t =
|
|
1191
|
-
|
|
1192
|
-
activePageId: r,
|
|
1193
|
-
onRename: n,
|
|
1194
|
-
onDuplicate: c,
|
|
1195
|
-
onDelete: p,
|
|
1196
|
-
onReorder: o,
|
|
1197
|
-
onCreatePage: i,
|
|
1198
|
-
onSwitchPage: l
|
|
407
|
+
pages: t = ue,
|
|
408
|
+
footerSlot: o
|
|
1199
409
|
}) {
|
|
1200
|
-
const
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
name: `${S.name} copy`,
|
|
1209
|
-
active: !1
|
|
1210
|
-
}, L = T.findIndex((W) => W.id === f);
|
|
1211
|
-
return [...T.slice(0, L + 1), D, ...T.slice(L + 1)];
|
|
1212
|
-
});
|
|
1213
|
-
}, []), v = k((f) => {
|
|
1214
|
-
h((T) => T.filter((S) => S.id !== f));
|
|
1215
|
-
}, []), _ = k((f) => {
|
|
1216
|
-
h((T) => {
|
|
1217
|
-
const S = new Map(T.map((L) => [L.id, L])), D = f.map((L) => S.get(L)).filter(Boolean);
|
|
1218
|
-
return D.length === T.length ? D : T;
|
|
1219
|
-
});
|
|
1220
|
-
}, []), N = s != null, w = N ? s : u, g = r != null ? w.map((f) => ({ ...f, active: f.id === r })) : [...w], x = n ?? (N ? void 0 : y), R = c ?? (N ? void 0 : m), $ = p ?? (N ? void 0 : v), P = o ?? (N ? void 0 : _), A = k(
|
|
1221
|
-
(f) => {
|
|
1222
|
-
N || h(f);
|
|
1223
|
-
},
|
|
1224
|
-
[N]
|
|
1225
|
-
), H = k(
|
|
1226
|
-
(f) => {
|
|
1227
|
-
const T = f[0]?.items.map((S) => S.id) ?? [];
|
|
1228
|
-
T.length > 0 && P && P(T);
|
|
1229
|
-
},
|
|
1230
|
-
[P]
|
|
1231
|
-
), q = g.map((f) => `${f.id}:${f.name}`).join("|"), G = P != null && g.length > 1 ? /* @__PURE__ */ a(
|
|
1232
|
-
De,
|
|
1233
|
-
{
|
|
1234
|
-
zones: [
|
|
1235
|
-
{
|
|
1236
|
-
zoneKey: "pm-pages",
|
|
1237
|
-
items: g.map((f) => ({ ...f, id: f.id }))
|
|
1238
|
-
}
|
|
1239
|
-
],
|
|
1240
|
-
onZoneChange: H,
|
|
1241
|
-
renderZone: (f, T, S) => /* @__PURE__ */ a("div", { className: "pm-list", role: "list", children: S }),
|
|
1242
|
-
renderItem: (f) => /* @__PURE__ */ a(
|
|
1243
|
-
me,
|
|
1244
|
-
{
|
|
1245
|
-
page: f,
|
|
1246
|
-
onSwitchPage: l
|
|
1247
|
-
},
|
|
1248
|
-
f.id
|
|
1249
|
-
)
|
|
1250
|
-
},
|
|
1251
|
-
q
|
|
1252
|
-
) : /* @__PURE__ */ a("div", { className: "pm-list", role: "list", children: g.map((f) => /* @__PURE__ */ a(
|
|
1253
|
-
me,
|
|
1254
|
-
{
|
|
1255
|
-
page: f,
|
|
1256
|
-
onSwitchPage: l
|
|
1257
|
-
},
|
|
1258
|
-
f.id
|
|
1259
|
-
)) }), Q = () => d?.dispatch({ type: "CLOSE_PANEL", reason: "header-x" });
|
|
1260
|
-
return /* @__PURE__ */ a(
|
|
1261
|
-
Te.Provider,
|
|
1262
|
-
{
|
|
1263
|
-
value: {
|
|
1264
|
-
pages: g,
|
|
1265
|
-
setPages: A,
|
|
1266
|
-
renamePage: x,
|
|
1267
|
-
duplicatePage: R,
|
|
1268
|
-
deletePage: $,
|
|
1269
|
-
// Sprint 2026-05-20 — propagate live create binding for footer.
|
|
1270
|
-
createPage: i
|
|
1271
|
-
},
|
|
1272
|
-
children: /* @__PURE__ */ a(
|
|
1273
|
-
z,
|
|
1274
|
-
{
|
|
1275
|
-
variant: "no-stage",
|
|
1276
|
-
title: "Manage pages",
|
|
1277
|
-
onClose: Q,
|
|
1278
|
-
footer: { right: /* @__PURE__ */ a(it, {}) },
|
|
1279
|
-
children: /* @__PURE__ */ a("div", { "data-shell": "page-management", "aria-hidden": !e, children: G })
|
|
1280
|
-
}
|
|
1281
|
-
)
|
|
1282
|
-
}
|
|
1283
|
-
);
|
|
410
|
+
const [n, a] = y(() => [...t]);
|
|
411
|
+
return /* @__PURE__ */ h(X.Provider, { value: { pages: n, setPages: a }, children: [
|
|
412
|
+
/* @__PURE__ */ h("div", { "data-shell": "page-management", "aria-hidden": !e, children: [
|
|
413
|
+
/* @__PURE__ */ s("h3", { children: "Manage pages" }),
|
|
414
|
+
/* @__PURE__ */ s("div", { className: "pm-list", role: "list", children: n.map((r) => /* @__PURE__ */ s(ie, { page: r }, r.id)) })
|
|
415
|
+
] }),
|
|
416
|
+
o
|
|
417
|
+
] });
|
|
1284
418
|
}
|
|
1285
|
-
const
|
|
419
|
+
const Me = {
|
|
1286
420
|
SETTINGS: "settings",
|
|
1287
421
|
CATALOG_ADD: "catalog-add",
|
|
1288
422
|
CATALOG_REPLACE: "catalog-replace",
|
|
1289
423
|
PAGE_MGMT: "page-management",
|
|
1290
424
|
NOTIFICATION_CENTER: "notification-center"
|
|
1291
|
-
},
|
|
425
|
+
}, pe = {
|
|
1292
426
|
position: "fixed",
|
|
1293
427
|
inset: 0,
|
|
1294
428
|
pointerEvents: "none",
|
|
1295
429
|
zIndex: 55
|
|
1296
|
-
},
|
|
430
|
+
}, me = {
|
|
1297
431
|
position: "absolute",
|
|
1298
432
|
inset: 0,
|
|
1299
433
|
zIndex: 1,
|
|
1300
434
|
// CR-03 fix: pass-through tint — scrim is visual-only and must not intercept
|
|
1301
|
-
// grid card clicks.
|
|
435
|
+
// grid card clicks. See PanelHost.tsx CR-03 comment for full rationale.
|
|
1302
436
|
pointerEvents: "none",
|
|
1303
437
|
background: "rgba(0, 0, 0, 0.04)"
|
|
1304
438
|
};
|
|
1305
|
-
function
|
|
1306
|
-
const { state: e, dispatch: t, getCloseLog:
|
|
439
|
+
function $e() {
|
|
440
|
+
const { state: e, dispatch: t, getCloseLog: o } = Z();
|
|
1307
441
|
F(() => {
|
|
1308
442
|
if (e.activePanelId == null) return;
|
|
1309
|
-
function
|
|
1310
|
-
|
|
443
|
+
function r(d) {
|
|
444
|
+
d.key === "Escape" && t({ type: "CLOSE_PANEL", reason: "escape-key" });
|
|
1311
445
|
}
|
|
1312
|
-
return document.addEventListener("keydown",
|
|
446
|
+
return document.addEventListener("keydown", r), () => document.removeEventListener("keydown", r);
|
|
1313
447
|
}, [e.activePanelId, t]);
|
|
1314
|
-
const
|
|
1315
|
-
|
|
1316
|
-
|
|
448
|
+
const n = B(e);
|
|
449
|
+
te(() => {
|
|
450
|
+
n.current = e;
|
|
1317
451
|
}), F(() => {
|
|
1318
452
|
if (process.env.NODE_ENV === "production") return;
|
|
1319
|
-
const
|
|
1320
|
-
return
|
|
453
|
+
const r = window;
|
|
454
|
+
return r.__panelsHostHandle && console.warn("[panels] multiple PanelHost/PanelHostShell instances mounted; dev handle is unreliable"), r.__panelsHostHandle = {
|
|
1321
455
|
dispatch: t,
|
|
1322
|
-
getState: () =>
|
|
1323
|
-
getCloseLog:
|
|
456
|
+
getState: () => n.current,
|
|
457
|
+
getCloseLog: o
|
|
1324
458
|
}, () => {
|
|
1325
|
-
|
|
459
|
+
r.__panelsHostHandle?.dispatch === t && delete window.__panelsHostHandle;
|
|
1326
460
|
};
|
|
1327
|
-
}, [t,
|
|
461
|
+
}, [t, o]);
|
|
462
|
+
const a = Y(() => {
|
|
463
|
+
t({ type: "CLOSE_PANEL", reason: "nav-escape-hatch" });
|
|
464
|
+
}, [t]);
|
|
465
|
+
return /* @__PURE__ */ s("div", { "data-panel-host": "true", style: pe, children: e.activePanelId != null && /* @__PURE__ */ s(
|
|
1328
466
|
"div",
|
|
1329
467
|
{
|
|
1330
468
|
"data-panel-scrim": "true",
|
|
1331
|
-
style:
|
|
469
|
+
style: me,
|
|
470
|
+
onClick: a
|
|
1332
471
|
}
|
|
1333
472
|
) });
|
|
1334
473
|
}
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
474
|
+
function De({ panelComponents: e }) {
|
|
475
|
+
const t = I();
|
|
476
|
+
if (t == null) return null;
|
|
477
|
+
const { state: o, dispatch: n } = t;
|
|
478
|
+
if (o.activePanelId == null) return null;
|
|
479
|
+
const a = e[o.activePanelId];
|
|
480
|
+
if (a == null)
|
|
481
|
+
return process.env.NODE_ENV !== "production" && console.error(
|
|
482
|
+
"[panels] No panel component registered for activePanelId:",
|
|
483
|
+
o.activePanelId
|
|
484
|
+
), null;
|
|
485
|
+
if (o.activePanelId === "settings")
|
|
486
|
+
return /* @__PURE__ */ s(N, { isOpen: !0, children: /* @__PURE__ */ s(
|
|
487
|
+
w,
|
|
488
|
+
{
|
|
489
|
+
isOpen: !0,
|
|
490
|
+
onClose: () => n({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
491
|
+
footer: /* @__PURE__ */ h(ee, { children: [
|
|
492
|
+
/* @__PURE__ */ s(
|
|
493
|
+
"button",
|
|
494
|
+
{
|
|
495
|
+
id: "settings-cancel",
|
|
496
|
+
type: "button",
|
|
497
|
+
className: "gloss-panel-chrome__footer-btn",
|
|
498
|
+
onClick: () => n({ type: "CLOSE_PANEL", reason: "cancel-button" }),
|
|
499
|
+
children: "Cancel"
|
|
500
|
+
}
|
|
501
|
+
),
|
|
502
|
+
/* @__PURE__ */ s(
|
|
503
|
+
"button",
|
|
504
|
+
{
|
|
505
|
+
id: "settings-apply",
|
|
506
|
+
type: "button",
|
|
507
|
+
className: "gloss-panel-chrome__footer-btn gloss-panel-chrome__footer-btn--primary",
|
|
508
|
+
onClick: () => n({ type: "CLOSE_PANEL", reason: "apply-button" }),
|
|
509
|
+
children: "Apply"
|
|
510
|
+
}
|
|
511
|
+
)
|
|
512
|
+
] }),
|
|
513
|
+
children: /* @__PURE__ */ s(a, { isOpen: !0 })
|
|
514
|
+
}
|
|
515
|
+
) });
|
|
516
|
+
if (o.activePanelId === "catalog-add" || o.activePanelId === "catalog-replace") {
|
|
517
|
+
const r = o.activePanelId === "catalog-replace" ? "replace" : "add";
|
|
518
|
+
return /* @__PURE__ */ s(N, { isOpen: !0, children: /* @__PURE__ */ s(
|
|
519
|
+
w,
|
|
520
|
+
{
|
|
521
|
+
isOpen: !0,
|
|
522
|
+
onClose: () => n({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
523
|
+
footer: null,
|
|
524
|
+
children: /* @__PURE__ */ s(
|
|
525
|
+
a,
|
|
526
|
+
{
|
|
527
|
+
isOpen: !0,
|
|
528
|
+
footerSlot: /* @__PURE__ */ s(le, { mode: r, dispatch: n })
|
|
529
|
+
}
|
|
530
|
+
)
|
|
531
|
+
}
|
|
532
|
+
) });
|
|
533
|
+
}
|
|
534
|
+
return o.activePanelId === "page-management" ? /* @__PURE__ */ s(N, { isOpen: !0, children: /* @__PURE__ */ s(
|
|
535
|
+
w,
|
|
536
|
+
{
|
|
537
|
+
isOpen: !0,
|
|
538
|
+
onClose: () => n({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
539
|
+
footer: null,
|
|
540
|
+
children: /* @__PURE__ */ s(a, { isOpen: !0, footerSlot: /* @__PURE__ */ s(de, {}) })
|
|
1342
541
|
}
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
542
|
+
) }) : /* @__PURE__ */ s(N, { isOpen: !0, children: /* @__PURE__ */ s(
|
|
543
|
+
w,
|
|
544
|
+
{
|
|
545
|
+
isOpen: !0,
|
|
546
|
+
onClose: () => n({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
547
|
+
footer: null,
|
|
548
|
+
children: /* @__PURE__ */ s(a, { isOpen: !0 })
|
|
1346
549
|
}
|
|
1347
|
-
|
|
1348
|
-
r(null), n.current = null;
|
|
1349
|
-
}, pt), () => {
|
|
1350
|
-
n.current != null && (clearTimeout(n.current), n.current = null);
|
|
1351
|
-
};
|
|
1352
|
-
}, [e, t]), F(() => {
|
|
1353
|
-
e != null && r(e);
|
|
1354
|
-
}, [e]), e != null ? { panelId: e, isOpen: !0 } : s != null ? { panelId: s, isOpen: !1 } : { panelId: null, isOpen: !1 };
|
|
1355
|
-
}
|
|
1356
|
-
function Kt({ panelComponents: e, children: t }) {
|
|
1357
|
-
const s = M(), r = s?.state.lastClose?.reason === "section-hidden", n = mt(s?.state.activePanelId ?? null, r);
|
|
1358
|
-
if (s == null || n.panelId == null) return null;
|
|
1359
|
-
const c = n.panelId, p = n.isOpen, o = e?.[c];
|
|
1360
|
-
return o == null && t == null ? (process.env.NODE_ENV !== "production" && console.error(
|
|
1361
|
-
"[panels] No panel component registered for activePanelId:",
|
|
1362
|
-
c
|
|
1363
|
-
), null) : /* @__PURE__ */ a(Le, { isOpen: p, children: o != null ? /* @__PURE__ */ a(o, { isOpen: p }) : t });
|
|
550
|
+
) });
|
|
1364
551
|
}
|
|
1365
|
-
function
|
|
552
|
+
function z(e) {
|
|
1366
553
|
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;
|
|
1367
554
|
}
|
|
1368
|
-
const
|
|
1369
|
-
function
|
|
555
|
+
const he = 685, V = 627, fe = "cubic-bezier(0.22, 1, 0.36, 1)", ve = 200;
|
|
556
|
+
function J(e, t) {
|
|
1370
557
|
if (typeof window > "u") return t;
|
|
1371
|
-
const
|
|
1372
|
-
if (!
|
|
1373
|
-
const
|
|
1374
|
-
return Number.isNaN(
|
|
558
|
+
const o = window.getComputedStyle(document.documentElement).getPropertyValue(e).trim();
|
|
559
|
+
if (!o) return t;
|
|
560
|
+
const n = parseFloat(o);
|
|
561
|
+
return Number.isNaN(n) ? t : o.endsWith("s") && !o.endsWith("ms") ? n * 1e3 : n;
|
|
1375
562
|
}
|
|
1376
|
-
function
|
|
563
|
+
function ge(e, t) {
|
|
1377
564
|
return typeof window > "u" ? t : window.getComputedStyle(document.documentElement).getPropertyValue(e).trim() || t;
|
|
1378
565
|
}
|
|
1379
|
-
function
|
|
566
|
+
function S(e) {
|
|
1380
567
|
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger });
|
|
1381
568
|
}
|
|
1382
|
-
function
|
|
1383
|
-
const { mountEl: t, chromeEl:
|
|
1384
|
-
if (t == null ||
|
|
1385
|
-
|
|
569
|
+
function ye(e) {
|
|
570
|
+
const { mountEl: t, chromeEl: o, reducedMotion: n, onAssert: a } = e;
|
|
571
|
+
if (t == null || o == null) {
|
|
572
|
+
S(e), a?.({ branch: "slide-fallback-no-dom", timestamp: Date.now() });
|
|
1386
573
|
return;
|
|
1387
574
|
}
|
|
1388
|
-
if (
|
|
1389
|
-
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }),
|
|
575
|
+
if (n) {
|
|
576
|
+
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }), a?.({ branch: "slide-reduced-motion", timestamp: Date.now() });
|
|
1390
577
|
return;
|
|
1391
578
|
}
|
|
1392
|
-
if (typeof
|
|
1393
|
-
|
|
579
|
+
if (typeof o.animate != "function") {
|
|
580
|
+
S(e), a?.({ branch: "slide-no-waapi", timestamp: Date.now() });
|
|
1394
581
|
return;
|
|
1395
582
|
}
|
|
1396
|
-
const
|
|
1397
|
-
|
|
1398
|
-
const
|
|
583
|
+
const r = o.cloneNode(!0);
|
|
584
|
+
r.id = "panel-chrome-frozen", r.style.cssText = "position:absolute;left:8px;right:8px;top:8px;z-index:1;pointer-events:none;", t.appendChild(r), o.style.zIndex = "2", e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger });
|
|
585
|
+
const d = J("--panel-open-dur", he), l = ge("--panel-easing", fe), i = o.animate(
|
|
1399
586
|
[{ transform: "translateY(100%)" }, { transform: "translateY(0)" }],
|
|
1400
|
-
{ duration:
|
|
587
|
+
{ duration: d, easing: l, fill: "forwards" }
|
|
1401
588
|
);
|
|
1402
589
|
i.addEventListener(
|
|
1403
590
|
"finish",
|
|
1404
591
|
() => {
|
|
1405
|
-
|
|
592
|
+
r.remove(), o.style.zIndex = "", i.cancel(), a?.({ branch: "slide-complete", frozen: "cleaned", timestamp: Date.now() });
|
|
1406
593
|
},
|
|
1407
594
|
{ once: !0 }
|
|
1408
595
|
);
|
|
1409
596
|
}
|
|
1410
|
-
function
|
|
1411
|
-
const { mountEl: t, onAssert:
|
|
597
|
+
function be(e) {
|
|
598
|
+
const { mountEl: t, onAssert: o } = e;
|
|
1412
599
|
if (t == null) {
|
|
1413
|
-
e.dispatch({ type: "CLOSE_PANEL", reason: "mutex-handoff" }), setTimeout(() =>
|
|
600
|
+
e.dispatch({ type: "CLOSE_PANEL", reason: "mutex-handoff" }), setTimeout(() => S(e), V), o?.({ branch: "handoff-fallback-no-mount", timestamp: Date.now() });
|
|
1414
601
|
return;
|
|
1415
602
|
}
|
|
1416
|
-
const
|
|
1417
|
-
let
|
|
1418
|
-
const
|
|
1419
|
-
i.target !== t || i.propertyName !== "max-height" ||
|
|
1420
|
-
},
|
|
1421
|
-
|
|
603
|
+
const n = J("--panel-close-dur", V);
|
|
604
|
+
let a = !1, r = null;
|
|
605
|
+
const d = (i) => {
|
|
606
|
+
i.target !== t || i.propertyName !== "max-height" || a || (a = !0, r != null && clearTimeout(r), t.removeEventListener("transitionend", d), e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }), o?.({ branch: "handoff-complete", timestamp: Date.now() }));
|
|
607
|
+
}, l = () => {
|
|
608
|
+
a || (a = !0, t.removeEventListener("transitionend", d), e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }), o?.({ branch: "handoff-forced", timestamp: Date.now() }));
|
|
1422
609
|
};
|
|
1423
|
-
t.addEventListener("transitionend",
|
|
610
|
+
t.addEventListener("transitionend", d), e.dispatch({ type: "CLOSE_PANEL", reason: "mutex-handoff" }), r = setTimeout(l, n + ve);
|
|
1424
611
|
}
|
|
1425
|
-
function
|
|
1426
|
-
const { state: t, onAssert:
|
|
612
|
+
function Pe(e) {
|
|
613
|
+
const { state: t, onAssert: o } = e;
|
|
1427
614
|
if (t.activePanelId && t.isDirty) {
|
|
1428
|
-
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }),
|
|
615
|
+
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }), o?.({ branch: "blocked-dirty", timestamp: Date.now() });
|
|
1429
616
|
return;
|
|
1430
617
|
}
|
|
1431
|
-
const
|
|
1432
|
-
if (!!t.activePanelId &&
|
|
1433
|
-
|
|
618
|
+
const n = z(t.activeTrigger), a = z(e.trigger);
|
|
619
|
+
if (!!t.activePanelId && n != null && n === a) {
|
|
620
|
+
ye(e);
|
|
1434
621
|
return;
|
|
1435
622
|
}
|
|
1436
623
|
if (t.activePanelId) {
|
|
1437
|
-
|
|
624
|
+
be(e);
|
|
1438
625
|
return;
|
|
1439
626
|
}
|
|
1440
|
-
|
|
627
|
+
S(e), o?.({ branch: "fresh-open", timestamp: Date.now() });
|
|
1441
628
|
}
|
|
1442
|
-
function
|
|
629
|
+
function Ce() {
|
|
1443
630
|
if (!(typeof window > "u"))
|
|
1444
631
|
return window.__panelsAsserter;
|
|
1445
632
|
}
|
|
1446
|
-
function
|
|
1447
|
-
const e =
|
|
1448
|
-
return
|
|
1449
|
-
(
|
|
633
|
+
function Re() {
|
|
634
|
+
const e = I(), t = q();
|
|
635
|
+
return Y(
|
|
636
|
+
(o, n) => {
|
|
1450
637
|
if (!e)
|
|
1451
638
|
return;
|
|
1452
|
-
const
|
|
1453
|
-
panelId:
|
|
1454
|
-
trigger:
|
|
639
|
+
const a = typeof document < "u" ? document.querySelector('[data-mount="panel"]') : null, r = typeof document < "u" ? document.querySelector('[data-chrome="panel"]') : null, d = {
|
|
640
|
+
panelId: o,
|
|
641
|
+
trigger: n,
|
|
1455
642
|
state: e.state,
|
|
1456
643
|
dispatch: e.dispatch,
|
|
1457
|
-
mountEl:
|
|
1458
|
-
chromeEl:
|
|
644
|
+
mountEl: a,
|
|
645
|
+
chromeEl: r,
|
|
1459
646
|
reducedMotion: t,
|
|
1460
|
-
onAssert: (
|
|
1461
|
-
|
|
647
|
+
onAssert: (l) => {
|
|
648
|
+
Ce()?.recordTransition?.(l);
|
|
1462
649
|
}
|
|
1463
650
|
};
|
|
1464
|
-
|
|
651
|
+
Pe(d);
|
|
1465
652
|
},
|
|
1466
653
|
[e, t]
|
|
1467
654
|
);
|
|
1468
655
|
}
|
|
1469
|
-
let
|
|
1470
|
-
function
|
|
656
|
+
let E = !1, _ = null;
|
|
657
|
+
function T() {
|
|
1471
658
|
const e = [];
|
|
1472
659
|
let t = "cleaned";
|
|
1473
660
|
document.querySelectorAll("#panel-chrome-frozen").length > 0 && (e.push("#panel-chrome-frozen"), t = "lingering");
|
|
1474
|
-
const
|
|
1475
|
-
|
|
1476
|
-
const
|
|
1477
|
-
|
|
1478
|
-
const
|
|
1479
|
-
if (
|
|
1480
|
-
const
|
|
1481
|
-
|
|
661
|
+
const n = document.querySelectorAll(".gloss-panel-mount");
|
|
662
|
+
n.length > 1 && e.push(`mount-count=${n.length}`);
|
|
663
|
+
const a = n[0] ?? null, r = a ? a.querySelectorAll(".gloss-panel-chrome") : [];
|
|
664
|
+
r.length > 1 && e.push(`chrome-count=${r.length}`);
|
|
665
|
+
const d = r[0] ?? null;
|
|
666
|
+
if (d) {
|
|
667
|
+
const u = d.style.zIndex;
|
|
668
|
+
u !== "" && u !== "2" && e.push(`chrome-zindex=${u}`);
|
|
1482
669
|
}
|
|
1483
|
-
const
|
|
670
|
+
const l = a ? "present" : "absent", i = d ? "present" : "absent";
|
|
1484
671
|
return {
|
|
1485
672
|
valid: e.length === 0,
|
|
1486
|
-
mount:
|
|
673
|
+
mount: l,
|
|
1487
674
|
chrome: i,
|
|
1488
675
|
frozen: t,
|
|
1489
676
|
orphans: e,
|
|
1490
677
|
timestamp: Date.now()
|
|
1491
678
|
};
|
|
1492
679
|
}
|
|
1493
|
-
const
|
|
1494
|
-
function
|
|
1495
|
-
return { id: e, constraint: t, expected:
|
|
680
|
+
const A = "8px 8px 0px", x = "64px", O = "inset(0px 0px 60px 0px)", L = "inset(0px -40px -40px -40px)";
|
|
681
|
+
function p(e, t, o, n, a) {
|
|
682
|
+
return { id: e, constraint: t, expected: o, actual: n, pass: a };
|
|
1496
683
|
}
|
|
1497
|
-
function
|
|
684
|
+
function P(e) {
|
|
1498
685
|
const t = parseInt(e, 10);
|
|
1499
686
|
return Number.isFinite(t) ? t : NaN;
|
|
1500
687
|
}
|
|
1501
|
-
function
|
|
1502
|
-
const e = [], t = document.querySelector(".gloss-panel-mount"),
|
|
688
|
+
function M() {
|
|
689
|
+
const e = [], t = document.querySelector(".gloss-panel-mount"), o = t?.querySelector(".gloss-panel-chrome") ?? null, n = document.querySelector(".gloss-panel-coordinator") ?? document.querySelector("[data-panel-coordinator]"), a = document.querySelector(".bell-cutout"), r = document.querySelector(".bell-popover"), d = document.querySelector(".gloss-bottom-toolbar");
|
|
1503
690
|
if (!t)
|
|
1504
|
-
e.push(
|
|
691
|
+
e.push(p("C1", "mount --reveal-y matches clip-path inset-bottom Npx", "mount present", "absent", !1));
|
|
1505
692
|
else {
|
|
1506
|
-
const
|
|
693
|
+
const l = getComputedStyle(t), i = l.getPropertyValue("--reveal-y").trim() || t.style.getPropertyValue("--reveal-y").trim(), c = l.clipPath || t.style.clipPath || "", u = c.match(/inset\(\s*0(?:px)?\s+0(?:px)?\s+(\d+)px\s+0(?:px)?\s*\)/), m = u ? parseInt(u[1], 10) : NaN, f = P(i), v = Number.isFinite(m) && Number.isFinite(f) && m === f;
|
|
1507
694
|
e.push(
|
|
1508
|
-
|
|
695
|
+
p(
|
|
1509
696
|
"C1",
|
|
1510
697
|
"mount --reveal-y matches clip-path inset-bottom Npx",
|
|
1511
|
-
`inset(0 0 ${
|
|
1512
|
-
`--reveal-y=${i || "n/a"} clip-path=${
|
|
1513
|
-
|
|
698
|
+
`inset(0 0 ${f}px 0) === --reveal-y(${f}px)`,
|
|
699
|
+
`--reveal-y=${i || "n/a"} clip-path=${c || "n/a"}`,
|
|
700
|
+
v
|
|
1514
701
|
)
|
|
1515
702
|
);
|
|
1516
703
|
}
|
|
1517
704
|
if (!t)
|
|
1518
|
-
e.push(
|
|
705
|
+
e.push(p("C2", "mount padding constant", A, "absent", !1));
|
|
1519
706
|
else {
|
|
1520
|
-
const
|
|
1521
|
-
e.push(
|
|
707
|
+
const l = t.style.padding, i = getComputedStyle(t), c = l || i.padding || "", u = c === A || c === "8px 8px 0px 8px";
|
|
708
|
+
e.push(p("C2", "mount padding constant", A, c || "n/a", u));
|
|
1522
709
|
}
|
|
1523
710
|
if (!t)
|
|
1524
|
-
e.push(
|
|
711
|
+
e.push(p("C3", "mount.bottom resolves to var(--tb-h)=64px", x, "absent", !1));
|
|
1525
712
|
else {
|
|
1526
|
-
const i = getComputedStyle(t).bottom || t.style.bottom || "",
|
|
1527
|
-
e.push(
|
|
713
|
+
const i = getComputedStyle(t).bottom || t.style.bottom || "", c = i === x;
|
|
714
|
+
e.push(p("C3", "mount.bottom resolves to var(--tb-h)=64px", x, i || "n/a", c));
|
|
1528
715
|
}
|
|
1529
|
-
if (!
|
|
1530
|
-
e.push(
|
|
716
|
+
if (!o)
|
|
717
|
+
e.push(p("C4", "panel-chrome height formula = (row-h*3)+(row-gap*3)-8px", "formula match", "absent", !1));
|
|
1531
718
|
else {
|
|
1532
|
-
const
|
|
1533
|
-
|
|
1534
|
-
),
|
|
1535
|
-
|
|
1536
|
-
),
|
|
719
|
+
const l = getComputedStyle(o), i = P(
|
|
720
|
+
l.getPropertyValue("--row-h").trim() || o.style.getPropertyValue("--row-h").trim() || "0"
|
|
721
|
+
), c = P(
|
|
722
|
+
l.getPropertyValue("--row-gap").trim() || o.style.getPropertyValue("--row-gap").trim() || "0"
|
|
723
|
+
), u = i * 3 + c * 3 - 8, m = P(l.height || o.style.height || ""), f = Number.isFinite(i) && Number.isFinite(c) && Number.isFinite(m) && Number.isFinite(u) && m === u;
|
|
1537
724
|
e.push(
|
|
1538
|
-
|
|
725
|
+
p(
|
|
1539
726
|
"C4",
|
|
1540
727
|
"panel-chrome height formula = (row-h*3)+(row-gap*3)-8px",
|
|
1541
|
-
`${
|
|
1542
|
-
`${
|
|
1543
|
-
|
|
728
|
+
`${u}px (rh=${i} rg=${c})`,
|
|
729
|
+
`${m}px`,
|
|
730
|
+
f
|
|
1544
731
|
)
|
|
1545
732
|
);
|
|
1546
733
|
}
|
|
1547
|
-
if (!
|
|
734
|
+
if (!n || !o)
|
|
1548
735
|
e.push(
|
|
1549
|
-
|
|
736
|
+
p(
|
|
1550
737
|
"C5",
|
|
1551
738
|
'coordinator perspective + origin "center bottom"; chrome perspective-style flat',
|
|
1552
739
|
"present",
|
|
1553
|
-
`coordinator=${
|
|
740
|
+
`coordinator=${n ? "present" : "absent"} chrome=${o ? "present" : "absent"}`,
|
|
1554
741
|
!1
|
|
1555
742
|
)
|
|
1556
743
|
);
|
|
1557
744
|
else {
|
|
1558
|
-
const
|
|
745
|
+
const l = getComputedStyle(n), i = getComputedStyle(o), c = l.perspective || n.style.perspective || "", u = (l.perspectiveOrigin || n.style.perspectiveOrigin || "").trim(), m = i.perspectiveStyle || o.style.perspectiveStyle || "", g = c !== "" && c !== "none" && (u === "center bottom" || u === "50% 100%") && m === "flat";
|
|
1559
746
|
e.push(
|
|
1560
|
-
|
|
747
|
+
p(
|
|
1561
748
|
"C5",
|
|
1562
749
|
'coordinator perspective + origin "center bottom"; chrome perspective-style flat',
|
|
1563
750
|
"perspective:not-none, origin:center bottom, chrome-style:flat",
|
|
1564
|
-
`perspective=${
|
|
1565
|
-
|
|
751
|
+
`perspective=${c} origin=${u} chrome-style=${m}`,
|
|
752
|
+
g
|
|
1566
753
|
)
|
|
1567
754
|
);
|
|
1568
755
|
}
|
|
1569
756
|
{
|
|
1570
|
-
let
|
|
757
|
+
let l = !1, i = "absent";
|
|
1571
758
|
try {
|
|
1572
|
-
for (const
|
|
1573
|
-
let
|
|
759
|
+
for (const c of Array.from(document.styleSheets)) {
|
|
760
|
+
let u = [];
|
|
1574
761
|
try {
|
|
1575
|
-
|
|
762
|
+
u = Array.from(c.cssRules ?? []);
|
|
1576
763
|
} catch {
|
|
1577
764
|
continue;
|
|
1578
765
|
}
|
|
1579
|
-
for (const
|
|
1580
|
-
if (
|
|
1581
|
-
const
|
|
1582
|
-
|
|
766
|
+
for (const m of u)
|
|
767
|
+
if (m.name === "stage-spin") {
|
|
768
|
+
const v = Array.from(m.cssRules), b = v.find((C) => C.keyText === "0%" || C.keyText === "from"), g = v.find((C) => C.keyText === "100%" || C.keyText === "to"), $ = b?.style.transform ?? "", D = g?.style.transform ?? "", R = /rotateY\(\s*0(?:deg)?\s*\)/;
|
|
769
|
+
l = R.test($) && R.test(D), i = `0%=${$ || "n/a"} 100%=${D || "n/a"}`;
|
|
1583
770
|
break;
|
|
1584
771
|
}
|
|
1585
772
|
if (i !== "absent") break;
|
|
@@ -1588,69 +775,69 @@ function re() {
|
|
|
1588
775
|
i = "inspection-error";
|
|
1589
776
|
}
|
|
1590
777
|
e.push(
|
|
1591
|
-
|
|
778
|
+
p(
|
|
1592
779
|
"C6",
|
|
1593
780
|
"@keyframes stage-spin 0% AND 100% anchor at rotateY(0)",
|
|
1594
781
|
"both frames rotateY(0)",
|
|
1595
782
|
i,
|
|
1596
|
-
|
|
783
|
+
l
|
|
1597
784
|
)
|
|
1598
785
|
);
|
|
1599
786
|
}
|
|
1600
787
|
{
|
|
1601
|
-
const
|
|
788
|
+
const l = document.documentElement, i = getComputedStyle(l), c = i.getPropertyValue("--panel-open-dur").trim() || l.style.getPropertyValue("--panel-open-dur").trim(), u = i.getPropertyValue("--panel-close-dur").trim() || l.style.getPropertyValue("--panel-close-dur").trim(), m = P(c) || parseFloat(c) * (c.endsWith("s") && !c.endsWith("ms") ? 1e3 : 1), f = P(u) || parseFloat(u) * (u.endsWith("s") && !u.endsWith("ms") ? 1e3 : 1), v = Number.isFinite(m) && Number.isFinite(f) && m > f;
|
|
1602
789
|
e.push(
|
|
1603
|
-
|
|
790
|
+
p("C7", "--panel-open-dur > --panel-close-dur", "open > close", `open=${c || "n/a"} close=${u || "n/a"}`, v)
|
|
1604
791
|
);
|
|
1605
792
|
}
|
|
1606
|
-
if (!
|
|
1607
|
-
e.push(
|
|
793
|
+
if (!a)
|
|
794
|
+
e.push(p("C8", "BellCutout zero computed animation/transition", "no inline timing", "absent", !1));
|
|
1608
795
|
else {
|
|
1609
|
-
const
|
|
796
|
+
const l = getComputedStyle(a), i = l.animationName || "", c = l.transitionProperty || "", u = (i === "" || i === "none") && (c === "" || c === "none" || c === "all");
|
|
1610
797
|
e.push(
|
|
1611
|
-
|
|
798
|
+
p(
|
|
1612
799
|
"C8",
|
|
1613
800
|
"BellCutout zero computed animation/transition",
|
|
1614
801
|
"animation:none AND transition:none",
|
|
1615
|
-
`animation=${i || "n/a"} transition=${
|
|
1616
|
-
|
|
802
|
+
`animation=${i || "n/a"} transition=${c || "n/a"}`,
|
|
803
|
+
u
|
|
1617
804
|
)
|
|
1618
805
|
);
|
|
1619
806
|
}
|
|
1620
807
|
if (!t)
|
|
1621
|
-
e.push(
|
|
808
|
+
e.push(p("C9", "mount closed-state clipPath", O, "absent", !1));
|
|
1622
809
|
else {
|
|
1623
|
-
const
|
|
1624
|
-
e.push(
|
|
810
|
+
const l = t.style.clipPath, i = getComputedStyle(t), c = l || i.clipPath || "", u = c === O;
|
|
811
|
+
e.push(p("C9", "mount closed-state clipPath", O, c || "n/a", u));
|
|
1625
812
|
}
|
|
1626
|
-
if (!
|
|
1627
|
-
e.push(
|
|
813
|
+
if (!r)
|
|
814
|
+
e.push(p("C10", "bell-popover parentElement === document.body (open)", "body", "absent", !1));
|
|
1628
815
|
else {
|
|
1629
|
-
const
|
|
816
|
+
const l = r.parentElement, i = l === document.body;
|
|
1630
817
|
e.push(
|
|
1631
|
-
|
|
818
|
+
p(
|
|
1632
819
|
"C10",
|
|
1633
820
|
"bell-popover parentElement === document.body (open)",
|
|
1634
821
|
"body",
|
|
1635
|
-
|
|
822
|
+
l === document.body ? "body" : l?.tagName ?? "n/a",
|
|
1636
823
|
i
|
|
1637
824
|
)
|
|
1638
825
|
);
|
|
1639
826
|
}
|
|
1640
|
-
if (!
|
|
1641
|
-
e.push(
|
|
827
|
+
if (!n)
|
|
828
|
+
e.push(p("C11", "coordinator overflow === visible", "visible", "absent", !1));
|
|
1642
829
|
else {
|
|
1643
|
-
const i = getComputedStyle(
|
|
1644
|
-
e.push(
|
|
830
|
+
const i = getComputedStyle(n).overflow || n.style.overflow || "", c = i === "visible";
|
|
831
|
+
e.push(p("C11", "coordinator overflow === visible", "visible", i || "n/a", c));
|
|
1645
832
|
}
|
|
1646
|
-
if (!
|
|
1647
|
-
e.push(
|
|
833
|
+
if (!d)
|
|
834
|
+
e.push(p("C12", "toolbar clipPath = inset(0 -40 -40 -40)", L, "absent", !1));
|
|
1648
835
|
else {
|
|
1649
|
-
const
|
|
1650
|
-
e.push(
|
|
836
|
+
const l = d.style.clipPath, i = getComputedStyle(d), c = l || i.clipPath || "", u = c === L;
|
|
837
|
+
e.push(p("C12", "toolbar clipPath = inset(0 -40 -40 -40)", L, c || "n/a", u));
|
|
1651
838
|
}
|
|
1652
839
|
return e.push(
|
|
1653
|
-
|
|
840
|
+
p(
|
|
1654
841
|
"C13",
|
|
1655
842
|
"same-position slide via WAAPI (mid-transition getAnimations().length > 0)",
|
|
1656
843
|
"WAAPI driver wired in orchestrator (source-proof)",
|
|
@@ -1658,7 +845,7 @@ function re() {
|
|
|
1658
845
|
"wiring_only"
|
|
1659
846
|
)
|
|
1660
847
|
), e.push(
|
|
1661
|
-
|
|
848
|
+
p(
|
|
1662
849
|
"C14",
|
|
1663
850
|
'cross-position handoff transitionend filtered by propertyName="max-height"',
|
|
1664
851
|
"transitionend filter wired in orchestrator (source-proof)",
|
|
@@ -1667,11 +854,11 @@ function re() {
|
|
|
1667
854
|
)
|
|
1668
855
|
), e;
|
|
1669
856
|
}
|
|
1670
|
-
function
|
|
1671
|
-
return
|
|
857
|
+
function Ne(e) {
|
|
858
|
+
return M().find((t) => t.id === e);
|
|
1672
859
|
}
|
|
1673
|
-
function
|
|
1674
|
-
const e =
|
|
860
|
+
function we() {
|
|
861
|
+
const e = T();
|
|
1675
862
|
return { q12: [
|
|
1676
863
|
{
|
|
1677
864
|
id: "Q12-12",
|
|
@@ -1680,84 +867,74 @@ function St() {
|
|
|
1680
867
|
actual: `valid=${e.valid} mount=${e.mount} chrome=${e.chrome} frozen=${e.frozen} orphans=[${e.orphans.join(",")}]`,
|
|
1681
868
|
pass: e.valid
|
|
1682
869
|
}
|
|
1683
|
-
], cc:
|
|
870
|
+
], cc: M() };
|
|
1684
871
|
}
|
|
1685
|
-
function
|
|
872
|
+
function Se() {
|
|
1686
873
|
return {
|
|
1687
|
-
enable:
|
|
1688
|
-
disable:
|
|
1689
|
-
isEnabled: () =>
|
|
1690
|
-
getLastReport: () =>
|
|
874
|
+
enable: Ee,
|
|
875
|
+
disable: _e,
|
|
876
|
+
isEnabled: () => E,
|
|
877
|
+
getLastReport: () => _,
|
|
1691
878
|
recordTransition: (e) => {
|
|
1692
|
-
|
|
879
|
+
E && (_ = { ...e, ...T() });
|
|
1693
880
|
},
|
|
1694
881
|
assertOnce: () => {
|
|
1695
|
-
const e =
|
|
1696
|
-
return
|
|
882
|
+
const e = T();
|
|
883
|
+
return _ = e, e;
|
|
1697
884
|
},
|
|
1698
|
-
assertCcOnly:
|
|
1699
|
-
getCcRowById:
|
|
1700
|
-
assertPanelTruths:
|
|
885
|
+
assertCcOnly: M,
|
|
886
|
+
getCcRowById: Ne,
|
|
887
|
+
assertPanelTruths: we
|
|
1701
888
|
};
|
|
1702
889
|
}
|
|
1703
|
-
function
|
|
1704
|
-
if (
|
|
1705
|
-
window.__panelsAsserter || (window.__panelsAsserter =
|
|
890
|
+
function Ee() {
|
|
891
|
+
if (E = !0, typeof window > "u") return;
|
|
892
|
+
window.__panelsAsserter || (window.__panelsAsserter = Se(), console.info(
|
|
1706
893
|
"[panels] asserter enabled (P3b Q12-12 + P6 W5 cc:C1..C14). Inspect via window.__panelsAsserter."
|
|
1707
894
|
));
|
|
1708
895
|
}
|
|
1709
|
-
function
|
|
1710
|
-
|
|
896
|
+
function _e() {
|
|
897
|
+
E = !1;
|
|
1711
898
|
}
|
|
1712
899
|
export {
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
rn as reducer,
|
|
1754
|
-
_t as transitionToPanel,
|
|
1755
|
-
oe as useCatalogState,
|
|
1756
|
-
Rt as useEditingCardId,
|
|
1757
|
-
we as usePageMgmtState,
|
|
1758
|
-
Me as usePanelContext,
|
|
1759
|
-
M as usePanelContextOptional,
|
|
1760
|
-
ln as usePanelCoordinator,
|
|
1761
|
-
ae as useReducedMotionPanel,
|
|
1762
|
-
qt as useTransitionToPanel
|
|
900
|
+
Ve as COMMITS,
|
|
901
|
+
Te as CatalogAddShell,
|
|
902
|
+
le as CatalogFooter,
|
|
903
|
+
Ie as CatalogReplaceShell,
|
|
904
|
+
k as CatalogStateContext,
|
|
905
|
+
oe as CloneCard,
|
|
906
|
+
ne as CloneStage,
|
|
907
|
+
G as MOCK_DEFAULT_LENS,
|
|
908
|
+
W as MOCK_LENSES,
|
|
909
|
+
ue as MOCK_PAGES,
|
|
910
|
+
Q as MOCK_TILES_BY_LENS,
|
|
911
|
+
Me as PANEL_IDS,
|
|
912
|
+
de as PageMgmtFooter,
|
|
913
|
+
ke as PageMgmtShell,
|
|
914
|
+
X as PageMgmtStateContext,
|
|
915
|
+
w as PanelChrome,
|
|
916
|
+
qe as PanelHost,
|
|
917
|
+
$e as PanelHostShell,
|
|
918
|
+
N as PanelMount,
|
|
919
|
+
Be as PanelProvider,
|
|
920
|
+
De as PanelSlot,
|
|
921
|
+
Le as SettingsShell,
|
|
922
|
+
M as assertCcOnly,
|
|
923
|
+
T as assertPanelDomShape,
|
|
924
|
+
we as assertPanelTruths,
|
|
925
|
+
He as deriveSurfaceState,
|
|
926
|
+
_e as disablePanelAsserter,
|
|
927
|
+
Ee as enablePanelAsserter,
|
|
928
|
+
Ne as getCcRowById,
|
|
929
|
+
Ue as initialState,
|
|
930
|
+
z as positionKey,
|
|
931
|
+
Ye as reducer,
|
|
932
|
+
Pe as transitionToPanel,
|
|
933
|
+
re as useCatalogState,
|
|
934
|
+
ce as usePageMgmtState,
|
|
935
|
+
Z as usePanelContext,
|
|
936
|
+
I as usePanelContextOptional,
|
|
937
|
+
Ke as usePanelCoordinator,
|
|
938
|
+
q as useReducedMotionPanel,
|
|
939
|
+
Re as useTransitionToPanel
|
|
1763
940
|
};
|