@mt-gloss/ui 0.1.121 → 0.1.122
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 +145 -142
- 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/package.json +1 -1
- package/ui.css +1 -1
package/composites-panels.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { u as O, h as fe, j as
|
|
2
|
-
import { C as Ut, N as zt, o as Ht, d as Vt, p as Bt, l as Kt, c as Yt, n as Wt, P as Gt, m as Qt, f as qt, i as jt, r as Zt, e as Xt } from "./COMMITS-
|
|
3
|
-
import { jsx as n, jsxs as f, Fragment as
|
|
4
|
-
import
|
|
1
|
+
import { u as O, h as fe, j as B, g as we, S as Ee, b as Pe, k as xe } from "./COMMITS-C1VHNgld.js";
|
|
2
|
+
import { C as Ut, N as zt, o as Ht, d as Vt, p as Bt, l as Kt, c as Yt, n as Wt, P as Gt, m as Qt, f as qt, i as jt, r as Zt, e as Xt } from "./COMMITS-C1VHNgld.js";
|
|
3
|
+
import { jsx as n, jsxs as f, Fragment as K } from "react/jsx-runtime";
|
|
4
|
+
import z, { useState as x, useRef as Y, createContext as ge, useContext as be, useMemo as ie, useEffect as F, useCallback as D, useLayoutEffect as Ae } from "react";
|
|
5
5
|
import { useSensors as ke, useSensor as ce, PointerSensor as De, KeyboardSensor as Le, DndContext as Oe, closestCenter as Me } from "@dnd-kit/core";
|
|
6
6
|
import { sortableKeyboardCoordinates as Ie, SortableContext as $e, horizontalListSortingStrategy as Re, arrayMove as Fe, useSortable as Ue } from "@dnd-kit/sortable";
|
|
7
7
|
import { CSS as ze } from "@dnd-kit/utilities";
|
|
@@ -46,7 +46,7 @@ function Ve({
|
|
|
46
46
|
}
|
|
47
47
|
)
|
|
48
48
|
] }),
|
|
49
|
-
r ? /* @__PURE__ */ f(
|
|
49
|
+
r ? /* @__PURE__ */ f(K, { 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(
|
|
@@ -143,7 +143,7 @@ function Ye({ value: e, onChange: t }) {
|
|
|
143
143
|
const r = ke(
|
|
144
144
|
ce(De, { activationConstraint: { distance: 4 } }),
|
|
145
145
|
ce(Le, { coordinateGetter: Ie })
|
|
146
|
-
), l =
|
|
146
|
+
), l = z.useRef(!1), [a, i] = z.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);
|
|
@@ -182,7 +182,7 @@ function Ge({
|
|
|
182
182
|
}
|
|
183
183
|
)
|
|
184
184
|
] }),
|
|
185
|
-
r ? /* @__PURE__ */ f(
|
|
185
|
+
r ? /* @__PURE__ */ f(K, { children: [
|
|
186
186
|
/* @__PURE__ */ n("span", { className: "settings-shell__label", children: "Accent color" }),
|
|
187
187
|
/* @__PURE__ */ n("div", { className: "settings-shell__swatch-row", children: We.map((i) => {
|
|
188
188
|
const u = e === i;
|
|
@@ -213,11 +213,11 @@ function Pt({
|
|
|
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 = fe(), h = c?.span, b = t ?? h ?? 1, p = i[0] ?? "threshold", [
|
|
217
|
-
|
|
218
|
-
i.includes(
|
|
219
|
-
}, [i,
|
|
220
|
-
const v = d != null ? s?.state?.bufferByCard?.[d]?.changes ?? {} : {}, N = typeof v.threshold == "number" ? v.threshold : typeof o?.threshold == "number" ? o.threshold : 80, I = typeof v.timeframe == "number" ? v.timeframe : typeof o?.timeframe == "number" ? o.timeframe : 30, $ = typeof v.accent == "string" ? v.accent : typeof o?.accent == "string" ? o.accent : null,
|
|
216
|
+
const s = O(), c = s?.state.activeTrigger, d = c?.kind === "card-overflow" ? c.cardId : null, m = fe(), h = c?.span, b = t ?? h ?? 1, p = i[0] ?? "threshold", [_, E] = z.useState(u ?? p);
|
|
217
|
+
z.useEffect(() => {
|
|
218
|
+
i.includes(_) || E(p);
|
|
219
|
+
}, [i, _, p]);
|
|
220
|
+
const v = d != null ? s?.state?.bufferByCard?.[d]?.changes ?? {} : {}, N = typeof v.threshold == "number" ? v.threshold : typeof o?.threshold == "number" ? o.threshold : 80, I = typeof v.timeframe == "number" ? v.timeframe : typeof o?.timeframe == "number" ? o.timeframe : 30, $ = typeof v.accent == "string" ? v.accent : typeof o?.accent == "string" ? o.accent : null, R = Array.isArray(v.slots) ? v.slots : Array.isArray(o?.slots) ? o.slots : Qe, T = typeof v.thresholdEnabled == "boolean" ? v.thresholdEnabled : typeof o?.thresholdEnabled == "boolean" ? o.thresholdEnabled : !1, L = typeof v.accentEnabled == "boolean" ? v.accentEnabled : typeof o?.accentEnabled == "boolean" ? o.accentEnabled : !1, W = (P) => {
|
|
221
221
|
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "threshold", value: Number(P.target.value) });
|
|
222
222
|
}, G = (P) => {
|
|
223
223
|
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "timeframe", value: Number(P.target.value) });
|
|
@@ -229,13 +229,13 @@ function Pt({
|
|
|
229
229
|
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "thresholdEnabled", value: P });
|
|
230
230
|
}, g = (P) => {
|
|
231
231
|
d == null || s == null || s.dispatch({ type: "SET_BUFFER_VALUE", cardId: d, key: "accentEnabled", value: P });
|
|
232
|
-
}, C = s?.state.isDirty ?? !1,
|
|
232
|
+
}, C = s?.state.isDirty ?? !1, w = d;
|
|
233
233
|
return /* @__PURE__ */ n(
|
|
234
|
-
|
|
234
|
+
B,
|
|
235
235
|
{
|
|
236
236
|
variant: "with-stage",
|
|
237
237
|
onClose: () => s?.dispatch({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
238
|
-
stage: /* @__PURE__ */ n(He, { span: b, rotating: !m, children: a ?? /* @__PURE__ */ f(
|
|
238
|
+
stage: /* @__PURE__ */ n(He, { span: b, rotating: !m, children: a ?? /* @__PURE__ */ f(K, { 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,7 +243,7 @@ function Pt({
|
|
|
243
243
|
we,
|
|
244
244
|
{
|
|
245
245
|
dimensions: i,
|
|
246
|
-
activeTab:
|
|
246
|
+
activeTab: _,
|
|
247
247
|
onSelect: E,
|
|
248
248
|
reduced: m
|
|
249
249
|
}
|
|
@@ -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
|
-
|
|
286
|
+
_ === "threshold" && /* @__PURE__ */ n(
|
|
287
287
|
Ve,
|
|
288
288
|
{
|
|
289
289
|
value: N,
|
|
290
290
|
onChange: W,
|
|
291
|
-
enabled:
|
|
291
|
+
enabled: T,
|
|
292
292
|
onToggleEnabled: q
|
|
293
293
|
}
|
|
294
294
|
),
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
295
|
+
_ === "timeframe" && /* @__PURE__ */ n(Be, { value: I, onChange: G }),
|
|
296
|
+
_ === "slots" && /* @__PURE__ */ n(Ye, { value: R, onChange: Q }),
|
|
297
|
+
_ === "color" && /* @__PURE__ */ n(
|
|
298
298
|
Ge,
|
|
299
299
|
{
|
|
300
300
|
value: $,
|
|
301
301
|
onSelect: le,
|
|
302
|
-
enabled:
|
|
302
|
+
enabled: L,
|
|
303
303
|
onToggleEnabled: g
|
|
304
304
|
}
|
|
305
305
|
)
|
|
@@ -847,7 +847,7 @@ function je({
|
|
|
847
847
|
activeLens: t,
|
|
848
848
|
onLensChange: r
|
|
849
849
|
}) {
|
|
850
|
-
const [l, a] = x(!1), i =
|
|
850
|
+
const [l, a] = x(!1), i = Y(null), u = () => {
|
|
851
851
|
i.current != null && (window.clearTimeout(i.current), i.current = null);
|
|
852
852
|
}, o = () => {
|
|
853
853
|
u(), i.current = window.setTimeout(() => a(!1), 100);
|
|
@@ -1035,25 +1035,28 @@ function At({
|
|
|
1035
1035
|
defaultLens: r = ye,
|
|
1036
1036
|
tilesByLens: l = _e,
|
|
1037
1037
|
lensMeta: a = ae,
|
|
1038
|
-
renderTile: i
|
|
1038
|
+
renderTile: i,
|
|
1039
|
+
onAdd: u
|
|
1039
1040
|
}) {
|
|
1040
|
-
const
|
|
1041
|
-
() =>
|
|
1042
|
-
[
|
|
1043
|
-
),
|
|
1044
|
-
() => (
|
|
1045
|
-
[
|
|
1046
|
-
),
|
|
1041
|
+
const o = O(), [s, c] = x(r), [d, m] = x(null), [h, b] = x(null), [p, _] = x(""), E = l[s] ?? { primary: [] }, S = a[s], v = ie(
|
|
1042
|
+
() => E.primary.filter((T) => ue(T, p)),
|
|
1043
|
+
[E.primary, p]
|
|
1044
|
+
), N = ie(
|
|
1045
|
+
() => (E.secondary ?? []).filter((T) => ue(T, p)),
|
|
1046
|
+
[E.secondary, p]
|
|
1047
|
+
), I = () => {
|
|
1048
|
+
d != null && u?.(d), o?.dispatch({ type: "CLOSE_PANEL", reason: "apply-button" });
|
|
1049
|
+
}, $ = () => o?.dispatch({ type: "CLOSE_PANEL", reason: "header-x" }), R = d == null;
|
|
1047
1050
|
return /* @__PURE__ */ n(
|
|
1048
1051
|
se.Provider,
|
|
1049
1052
|
{
|
|
1050
|
-
value: { mode: "add", selectedTileId:
|
|
1053
|
+
value: { mode: "add", selectedTileId: d, description: h },
|
|
1051
1054
|
children: /* @__PURE__ */ n(
|
|
1052
|
-
|
|
1055
|
+
B,
|
|
1053
1056
|
{
|
|
1054
1057
|
variant: "no-stage",
|
|
1055
1058
|
title: "Add a metric",
|
|
1056
|
-
onClose:
|
|
1059
|
+
onClose: $,
|
|
1057
1060
|
footer: {
|
|
1058
1061
|
left: /* @__PURE__ */ n(Ze, {}),
|
|
1059
1062
|
right: /* @__PURE__ */ n(
|
|
@@ -1062,8 +1065,8 @@ function At({
|
|
|
1062
1065
|
id: "btn-cat-add",
|
|
1063
1066
|
type: "button",
|
|
1064
1067
|
className: "gloss-panel-chrome-v2__footer-btn gloss-panel-chrome-v2__footer-btn--primary",
|
|
1065
|
-
disabled:
|
|
1066
|
-
onClick:
|
|
1068
|
+
disabled: R,
|
|
1069
|
+
onClick: I,
|
|
1067
1070
|
children: "Add metric"
|
|
1068
1071
|
}
|
|
1069
1072
|
)
|
|
@@ -1076,54 +1079,54 @@ function At({
|
|
|
1076
1079
|
className: "cat-search-input",
|
|
1077
1080
|
placeholder: "Search metrics",
|
|
1078
1081
|
"aria-label": "Search metrics",
|
|
1079
|
-
value:
|
|
1080
|
-
onChange: (
|
|
1082
|
+
value: p,
|
|
1083
|
+
onChange: (T) => _(T.target.value)
|
|
1081
1084
|
}
|
|
1082
1085
|
) }),
|
|
1083
1086
|
/* @__PURE__ */ n(
|
|
1084
1087
|
Ce,
|
|
1085
1088
|
{
|
|
1086
1089
|
lenses: t,
|
|
1087
|
-
activeLens:
|
|
1090
|
+
activeLens: s,
|
|
1088
1091
|
lensMeta: a,
|
|
1089
1092
|
variant: "pills",
|
|
1090
|
-
onLensChange: (
|
|
1091
|
-
|
|
1093
|
+
onLensChange: (T) => {
|
|
1094
|
+
c(T), m(null), b(null), _("");
|
|
1092
1095
|
}
|
|
1093
1096
|
}
|
|
1094
1097
|
),
|
|
1095
|
-
|
|
1096
|
-
/* @__PURE__ */ n("h3", { className: "cat-lens-headline", children:
|
|
1097
|
-
/* @__PURE__ */ n("p", { className: "cat-lens-helper", children:
|
|
1098
|
+
S && /* @__PURE__ */ f("div", { className: "cat-lens-meta", children: [
|
|
1099
|
+
/* @__PURE__ */ n("h3", { className: "cat-lens-headline", children: S.headline }),
|
|
1100
|
+
/* @__PURE__ */ n("p", { className: "cat-lens-helper", children: S.helper })
|
|
1098
1101
|
] }),
|
|
1099
1102
|
/* @__PURE__ */ n(
|
|
1100
1103
|
te,
|
|
1101
1104
|
{
|
|
1102
|
-
tiles:
|
|
1103
|
-
selectedTileId:
|
|
1104
|
-
onSelectTile: (
|
|
1105
|
-
|
|
1105
|
+
tiles: v,
|
|
1106
|
+
selectedTileId: d,
|
|
1107
|
+
onSelectTile: (T, L) => {
|
|
1108
|
+
m(T), b(L);
|
|
1106
1109
|
},
|
|
1107
1110
|
renderTile: i
|
|
1108
1111
|
}
|
|
1109
1112
|
),
|
|
1110
|
-
|
|
1113
|
+
N.length > 0 && /* @__PURE__ */ f("div", { className: "cat-more-in-lens", children: [
|
|
1111
1114
|
/* @__PURE__ */ n("div", { className: "cat-more-in-lens__heading", children: "MORE IN THIS LENS" }),
|
|
1112
1115
|
/* @__PURE__ */ n(
|
|
1113
1116
|
te,
|
|
1114
1117
|
{
|
|
1115
|
-
tiles:
|
|
1116
|
-
selectedTileId:
|
|
1117
|
-
onSelectTile: (
|
|
1118
|
-
|
|
1118
|
+
tiles: N,
|
|
1119
|
+
selectedTileId: d,
|
|
1120
|
+
onSelectTile: (T, L) => {
|
|
1121
|
+
m(T), b(L);
|
|
1119
1122
|
},
|
|
1120
1123
|
renderTile: i
|
|
1121
1124
|
}
|
|
1122
1125
|
)
|
|
1123
1126
|
] }),
|
|
1124
|
-
|
|
1127
|
+
v.length === 0 && N.length === 0 && p.length > 0 && /* @__PURE__ */ f("div", { className: "cat-empty", children: [
|
|
1125
1128
|
'No metrics match "',
|
|
1126
|
-
|
|
1129
|
+
p,
|
|
1127
1130
|
'".'
|
|
1128
1131
|
] })
|
|
1129
1132
|
] })
|
|
@@ -1134,7 +1137,7 @@ function At({
|
|
|
1134
1137
|
}
|
|
1135
1138
|
function Xe() {
|
|
1136
1139
|
const t = re()?.description ?? null;
|
|
1137
|
-
return t == null ? /* @__PURE__ */ n("em", { children: "Tap a metric to see its description" }) : /* @__PURE__ */ n(
|
|
1140
|
+
return t == null ? /* @__PURE__ */ n("em", { children: "Tap a metric to see its description" }) : /* @__PURE__ */ n(K, { children: t });
|
|
1138
1141
|
}
|
|
1139
1142
|
function kt({
|
|
1140
1143
|
isOpen: e,
|
|
@@ -1144,13 +1147,13 @@ function kt({
|
|
|
1144
1147
|
tilesByLens: a = _e,
|
|
1145
1148
|
renderTile: i
|
|
1146
1149
|
}) {
|
|
1147
|
-
const u = O(), [o, s] = x(l), [c, d] = x(null), [m, h] = x(null), b = a[o] ?? { primary: [] }, p = [...b.primary, ...b.secondary ?? []],
|
|
1150
|
+
const u = O(), [o, s] = x(l), [c, d] = x(null), [m, h] = x(null), b = a[o] ?? { primary: [] }, p = [...b.primary, ...b.secondary ?? []], _ = () => u?.dispatch({ type: "CLOSE_PANEL", reason: "apply-button" }), E = () => u?.dispatch({ type: "CLOSE_PANEL", reason: "header-x" }), S = c == null;
|
|
1148
1151
|
return /* @__PURE__ */ n(
|
|
1149
1152
|
se.Provider,
|
|
1150
1153
|
{
|
|
1151
1154
|
value: { mode: "replace", selectedTileId: c, description: m },
|
|
1152
1155
|
children: /* @__PURE__ */ n(
|
|
1153
|
-
|
|
1156
|
+
B,
|
|
1154
1157
|
{
|
|
1155
1158
|
variant: "no-stage",
|
|
1156
1159
|
title: "Replace metric",
|
|
@@ -1163,8 +1166,8 @@ function kt({
|
|
|
1163
1166
|
id: "btn-cat-replace",
|
|
1164
1167
|
type: "button",
|
|
1165
1168
|
className: "gloss-panel-chrome-v2__footer-btn gloss-panel-chrome-v2__footer-btn--primary",
|
|
1166
|
-
disabled:
|
|
1167
|
-
onClick:
|
|
1169
|
+
disabled: S,
|
|
1170
|
+
onClick: _,
|
|
1168
1171
|
children: "Replace metric"
|
|
1169
1172
|
}
|
|
1170
1173
|
)
|
|
@@ -1238,11 +1241,11 @@ function Je(e = {}) {
|
|
|
1238
1241
|
);
|
|
1239
1242
|
}
|
|
1240
1243
|
function pe({ page: e, onRename: t, onKebab: r, onDragStart: l, onSwitchPage: a }) {
|
|
1241
|
-
const i = Te(), [u, o] = x(!1), s =
|
|
1242
|
-
|
|
1244
|
+
const i = Te(), [u, o] = x(!1), s = Y(null);
|
|
1245
|
+
F(() => {
|
|
1243
1246
|
if (!u) return;
|
|
1244
|
-
const p = (
|
|
1245
|
-
s.current && (s.current.contains(
|
|
1247
|
+
const p = (_) => {
|
|
1248
|
+
s.current && (s.current.contains(_.target) || o(!1));
|
|
1246
1249
|
};
|
|
1247
1250
|
return document.addEventListener("mousedown", p, !0), () => document.removeEventListener("mousedown", p, !0);
|
|
1248
1251
|
}, [u]);
|
|
@@ -1294,7 +1297,7 @@ function pe({ page: e, onRename: t, onKebab: r, onDragStart: l, onSwitchPage: a
|
|
|
1294
1297
|
onMouseDown: (p) => p.stopPropagation(),
|
|
1295
1298
|
onClick: (p) => {
|
|
1296
1299
|
if (p.stopPropagation(), r) return r(e.id);
|
|
1297
|
-
o((
|
|
1300
|
+
o((_) => !_);
|
|
1298
1301
|
},
|
|
1299
1302
|
children: "⋯"
|
|
1300
1303
|
}
|
|
@@ -1343,38 +1346,38 @@ function Dt({
|
|
|
1343
1346
|
onCreatePage: s,
|
|
1344
1347
|
onSwitchPage: c
|
|
1345
1348
|
}) {
|
|
1346
|
-
const d = O(), [m, h] = x(() => [...t]), b =
|
|
1347
|
-
h((
|
|
1348
|
-
}, []), p =
|
|
1349
|
+
const d = O(), [m, h] = x(() => [...t]), b = D((g, C) => {
|
|
1350
|
+
h((w) => w.map((A) => A.id === g ? { ...A, name: C } : A));
|
|
1351
|
+
}, []), p = D((g) => {
|
|
1349
1352
|
h((C) => {
|
|
1350
|
-
const
|
|
1351
|
-
if (!
|
|
1352
|
-
const
|
|
1353
|
-
id: `${
|
|
1354
|
-
name: `${
|
|
1353
|
+
const w = C.find((U) => U.id === g);
|
|
1354
|
+
if (!w) return C;
|
|
1355
|
+
const A = {
|
|
1356
|
+
id: `${w.id}-copy-${Date.now()}`,
|
|
1357
|
+
name: `${w.name} copy`,
|
|
1355
1358
|
active: !1
|
|
1356
|
-
},
|
|
1357
|
-
return [...C.slice(0,
|
|
1359
|
+
}, k = C.findIndex((U) => U.id === g);
|
|
1360
|
+
return [...C.slice(0, k + 1), A, ...C.slice(k + 1)];
|
|
1358
1361
|
});
|
|
1359
|
-
}, []),
|
|
1360
|
-
h((C) => C.filter((
|
|
1361
|
-
}, []), E =
|
|
1362
|
+
}, []), _ = D((g) => {
|
|
1363
|
+
h((C) => C.filter((w) => w.id !== g));
|
|
1364
|
+
}, []), E = D((g) => {
|
|
1362
1365
|
h((C) => {
|
|
1363
|
-
const
|
|
1364
|
-
return
|
|
1366
|
+
const w = new Map(C.map((k) => [k.id, k])), A = g.map((k) => w.get(k)).filter(Boolean);
|
|
1367
|
+
return A.length === C.length ? A : C;
|
|
1365
1368
|
});
|
|
1366
|
-
}, []),
|
|
1369
|
+
}, []), S = r != null, v = S ? r : m, N = l != null ? v.map((g) => ({ ...g, active: g.id === l })) : [...v], I = a ?? (S ? void 0 : b), $ = i ?? (S ? void 0 : p), R = u ?? (S ? void 0 : _), T = o ?? (S ? void 0 : E), L = D(
|
|
1367
1370
|
(g) => {
|
|
1368
|
-
|
|
1371
|
+
S || h(g);
|
|
1369
1372
|
},
|
|
1370
|
-
[
|
|
1371
|
-
), W =
|
|
1373
|
+
[S]
|
|
1374
|
+
), W = D(
|
|
1372
1375
|
(g) => {
|
|
1373
|
-
const C = g[0]?.items.map((
|
|
1374
|
-
C.length > 0 &&
|
|
1376
|
+
const C = g[0]?.items.map((w) => w.id) ?? [];
|
|
1377
|
+
C.length > 0 && T && T(C);
|
|
1375
1378
|
},
|
|
1376
|
-
[
|
|
1377
|
-
), G = N.map((g) => `${g.id}:${g.name}`).join("|"), Q =
|
|
1379
|
+
[T]
|
|
1380
|
+
), G = N.map((g) => `${g.id}:${g.name}`).join("|"), Q = T != null && N.length > 1 ? /* @__PURE__ */ n(
|
|
1378
1381
|
Ee,
|
|
1379
1382
|
{
|
|
1380
1383
|
zones: [
|
|
@@ -1384,7 +1387,7 @@ function Dt({
|
|
|
1384
1387
|
}
|
|
1385
1388
|
],
|
|
1386
1389
|
onZoneChange: W,
|
|
1387
|
-
renderZone: (g, C,
|
|
1390
|
+
renderZone: (g, C, w) => /* @__PURE__ */ n("div", { className: "pm-list", role: "list", children: w }),
|
|
1388
1391
|
renderItem: (g) => /* @__PURE__ */ n(
|
|
1389
1392
|
pe,
|
|
1390
1393
|
{
|
|
@@ -1408,15 +1411,15 @@ function Dt({
|
|
|
1408
1411
|
{
|
|
1409
1412
|
value: {
|
|
1410
1413
|
pages: N,
|
|
1411
|
-
setPages:
|
|
1414
|
+
setPages: L,
|
|
1412
1415
|
renamePage: I,
|
|
1413
1416
|
duplicatePage: $,
|
|
1414
|
-
deletePage:
|
|
1417
|
+
deletePage: R,
|
|
1415
1418
|
// Sprint 2026-05-20 — propagate live create binding for footer.
|
|
1416
1419
|
createPage: s
|
|
1417
1420
|
},
|
|
1418
1421
|
children: /* @__PURE__ */ n(
|
|
1419
|
-
|
|
1422
|
+
B,
|
|
1420
1423
|
{
|
|
1421
1424
|
variant: "no-stage",
|
|
1422
1425
|
title: "Manage pages",
|
|
@@ -1450,17 +1453,17 @@ const Lt = {
|
|
|
1450
1453
|
};
|
|
1451
1454
|
function Ot() {
|
|
1452
1455
|
const { state: e, dispatch: t, getCloseLog: r } = Pe();
|
|
1453
|
-
|
|
1456
|
+
F(() => {
|
|
1454
1457
|
if (e.activePanelId == null) return;
|
|
1455
1458
|
function i(u) {
|
|
1456
1459
|
u.key === "Escape" && t({ type: "CLOSE_PANEL", reason: "escape-key" });
|
|
1457
1460
|
}
|
|
1458
1461
|
return document.addEventListener("keydown", i), () => document.removeEventListener("keydown", i);
|
|
1459
1462
|
}, [e.activePanelId, t]);
|
|
1460
|
-
const l =
|
|
1463
|
+
const l = Y(e);
|
|
1461
1464
|
Ae(() => {
|
|
1462
1465
|
l.current = e;
|
|
1463
|
-
}),
|
|
1466
|
+
}), F(() => {
|
|
1464
1467
|
if (process.env.NODE_ENV === "production") return;
|
|
1465
1468
|
const i = window;
|
|
1466
1469
|
return i.__panelsHostHandle && console.warn("[panels] multiple PanelHost/PanelHostShell instances mounted; dev handle is unreliable"), i.__panelsHostHandle = {
|
|
@@ -1471,7 +1474,7 @@ function Ot() {
|
|
|
1471
1474
|
i.__panelsHostHandle?.dispatch === t && delete window.__panelsHostHandle;
|
|
1472
1475
|
};
|
|
1473
1476
|
}, [t, r]);
|
|
1474
|
-
const a =
|
|
1477
|
+
const a = D(() => {
|
|
1475
1478
|
t({ type: "CLOSE_PANEL", reason: "nav-escape-hatch" });
|
|
1476
1479
|
}, [t]);
|
|
1477
1480
|
return /* @__PURE__ */ n("div", { "data-panel-host": "true", style: tt, children: e.activePanelId != null && /* @__PURE__ */ n(
|
|
@@ -1485,8 +1488,8 @@ function Ot() {
|
|
|
1485
1488
|
}
|
|
1486
1489
|
const at = 700;
|
|
1487
1490
|
function st(e) {
|
|
1488
|
-
const [t, r] = x(null), l =
|
|
1489
|
-
return
|
|
1491
|
+
const [t, r] = x(null), l = Y(null);
|
|
1492
|
+
return F(() => {
|
|
1490
1493
|
if (e != null) {
|
|
1491
1494
|
l.current != null && (clearTimeout(l.current), l.current = null), r(null);
|
|
1492
1495
|
return;
|
|
@@ -1496,7 +1499,7 @@ function st(e) {
|
|
|
1496
1499
|
}, at), () => {
|
|
1497
1500
|
l.current != null && (clearTimeout(l.current), l.current = null);
|
|
1498
1501
|
};
|
|
1499
|
-
}, [e]),
|
|
1502
|
+
}, [e]), F(() => {
|
|
1500
1503
|
e != null && r(e);
|
|
1501
1504
|
}, [e]), e != null ? { panelId: e, isOpen: !0 } : t != null ? { panelId: t, isOpen: !1 } : { panelId: null, isOpen: !1 };
|
|
1502
1505
|
}
|
|
@@ -1523,13 +1526,13 @@ function Se(e, t) {
|
|
|
1523
1526
|
function it(e, t) {
|
|
1524
1527
|
return typeof window > "u" ? t : window.getComputedStyle(document.documentElement).getPropertyValue(e).trim() || t;
|
|
1525
1528
|
}
|
|
1526
|
-
function
|
|
1529
|
+
function H(e) {
|
|
1527
1530
|
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger });
|
|
1528
1531
|
}
|
|
1529
1532
|
function ct(e) {
|
|
1530
1533
|
const { mountEl: t, chromeEl: r, reducedMotion: l, onAssert: a } = e;
|
|
1531
1534
|
if (t == null || r == null) {
|
|
1532
|
-
|
|
1535
|
+
H(e), a?.({ branch: "slide-fallback-no-dom", timestamp: Date.now() });
|
|
1533
1536
|
return;
|
|
1534
1537
|
}
|
|
1535
1538
|
if (l) {
|
|
@@ -1537,7 +1540,7 @@ function ct(e) {
|
|
|
1537
1540
|
return;
|
|
1538
1541
|
}
|
|
1539
1542
|
if (typeof r.animate != "function") {
|
|
1540
|
-
|
|
1543
|
+
H(e), a?.({ branch: "slide-no-waapi", timestamp: Date.now() });
|
|
1541
1544
|
return;
|
|
1542
1545
|
}
|
|
1543
1546
|
const i = r.cloneNode(!0);
|
|
@@ -1557,7 +1560,7 @@ function ct(e) {
|
|
|
1557
1560
|
function dt(e) {
|
|
1558
1561
|
const { mountEl: t, onAssert: r } = e;
|
|
1559
1562
|
if (t == null) {
|
|
1560
|
-
e.dispatch({ type: "CLOSE_PANEL", reason: "mutex-handoff" }), setTimeout(() =>
|
|
1563
|
+
e.dispatch({ type: "CLOSE_PANEL", reason: "mutex-handoff" }), setTimeout(() => H(e), he), r?.({ branch: "handoff-fallback-no-mount", timestamp: Date.now() });
|
|
1561
1564
|
return;
|
|
1562
1565
|
}
|
|
1563
1566
|
const l = Se("--panel-close-dur", he);
|
|
@@ -1584,7 +1587,7 @@ function ut(e) {
|
|
|
1584
1587
|
dt(e);
|
|
1585
1588
|
return;
|
|
1586
1589
|
}
|
|
1587
|
-
|
|
1590
|
+
H(e), r?.({ branch: "fresh-open", timestamp: Date.now() });
|
|
1588
1591
|
}
|
|
1589
1592
|
function pt() {
|
|
1590
1593
|
if (!(typeof window > "u"))
|
|
@@ -1592,7 +1595,7 @@ function pt() {
|
|
|
1592
1595
|
}
|
|
1593
1596
|
function It() {
|
|
1594
1597
|
const e = O(), t = fe();
|
|
1595
|
-
return
|
|
1598
|
+
return D(
|
|
1596
1599
|
(r, l) => {
|
|
1597
1600
|
if (!e)
|
|
1598
1601
|
return;
|
|
@@ -1616,7 +1619,7 @@ function It() {
|
|
|
1616
1619
|
function $t({ children: e }) {
|
|
1617
1620
|
return /* @__PURE__ */ n("div", { className: "clone-stage", children: e });
|
|
1618
1621
|
}
|
|
1619
|
-
let
|
|
1622
|
+
let V = !1, j = null;
|
|
1620
1623
|
function ne() {
|
|
1621
1624
|
const e = [];
|
|
1622
1625
|
let t = "cleaned";
|
|
@@ -1641,7 +1644,7 @@ function ne() {
|
|
|
1641
1644
|
};
|
|
1642
1645
|
}
|
|
1643
1646
|
const Z = "8px 8px 0px", X = "64px", J = "inset(0px 0px 60px 0px)", ee = "inset(0px -40px -40px -40px)";
|
|
1644
|
-
function
|
|
1647
|
+
function y(e, t, r, l, a) {
|
|
1645
1648
|
return { id: e, constraint: t, expected: r, actual: l, pass: a };
|
|
1646
1649
|
}
|
|
1647
1650
|
function M(e) {
|
|
@@ -1651,11 +1654,11 @@ function M(e) {
|
|
|
1651
1654
|
function oe() {
|
|
1652
1655
|
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
1656
|
if (!t)
|
|
1654
|
-
e.push(
|
|
1657
|
+
e.push(y("C1", "mount --reveal-y matches clip-path inset-bottom Npx", "mount present", "absent", !1));
|
|
1655
1658
|
else {
|
|
1656
1659
|
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
1660
|
e.push(
|
|
1658
|
-
|
|
1661
|
+
y(
|
|
1659
1662
|
"C1",
|
|
1660
1663
|
"mount --reveal-y matches clip-path inset-bottom Npx",
|
|
1661
1664
|
`inset(0 0 ${h}px 0) === --reveal-y(${h}px)`,
|
|
@@ -1665,19 +1668,19 @@ function oe() {
|
|
|
1665
1668
|
);
|
|
1666
1669
|
}
|
|
1667
1670
|
if (!t)
|
|
1668
|
-
e.push(
|
|
1671
|
+
e.push(y("C2", "mount padding constant", Z, "absent", !1));
|
|
1669
1672
|
else {
|
|
1670
1673
|
const o = t.style.padding, s = getComputedStyle(t), c = o || s.padding || "", d = c === Z || c === "8px 8px 0px 8px";
|
|
1671
|
-
e.push(
|
|
1674
|
+
e.push(y("C2", "mount padding constant", Z, c || "n/a", d));
|
|
1672
1675
|
}
|
|
1673
1676
|
if (!t)
|
|
1674
|
-
e.push(
|
|
1677
|
+
e.push(y("C3", "mount.bottom resolves to var(--tb-h)=64px", X, "absent", !1));
|
|
1675
1678
|
else {
|
|
1676
1679
|
const s = getComputedStyle(t).bottom || t.style.bottom || "", c = s === X;
|
|
1677
|
-
e.push(
|
|
1680
|
+
e.push(y("C3", "mount.bottom resolves to var(--tb-h)=64px", X, s || "n/a", c));
|
|
1678
1681
|
}
|
|
1679
1682
|
if (!r)
|
|
1680
|
-
e.push(
|
|
1683
|
+
e.push(y("C4", "panel-chrome height formula = (row-h*3)+(row-gap*3)-8px", "formula match", "absent", !1));
|
|
1681
1684
|
else {
|
|
1682
1685
|
const o = getComputedStyle(r), s = M(
|
|
1683
1686
|
o.getPropertyValue("--row-h").trim() || r.style.getPropertyValue("--row-h").trim() || "0"
|
|
@@ -1685,7 +1688,7 @@ function oe() {
|
|
|
1685
1688
|
o.getPropertyValue("--row-gap").trim() || r.style.getPropertyValue("--row-gap").trim() || "0"
|
|
1686
1689
|
), 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
1690
|
e.push(
|
|
1688
|
-
|
|
1691
|
+
y(
|
|
1689
1692
|
"C4",
|
|
1690
1693
|
"panel-chrome height formula = (row-h*3)+(row-gap*3)-8px",
|
|
1691
1694
|
`${d}px (rh=${s} rg=${c})`,
|
|
@@ -1696,7 +1699,7 @@ function oe() {
|
|
|
1696
1699
|
}
|
|
1697
1700
|
if (!l || !r)
|
|
1698
1701
|
e.push(
|
|
1699
|
-
|
|
1702
|
+
y(
|
|
1700
1703
|
"C5",
|
|
1701
1704
|
'coordinator perspective + origin "center bottom"; chrome perspective-style flat',
|
|
1702
1705
|
"present",
|
|
@@ -1705,14 +1708,14 @@ function oe() {
|
|
|
1705
1708
|
)
|
|
1706
1709
|
);
|
|
1707
1710
|
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 || "",
|
|
1711
|
+
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
1712
|
e.push(
|
|
1710
|
-
|
|
1713
|
+
y(
|
|
1711
1714
|
"C5",
|
|
1712
1715
|
'coordinator perspective + origin "center bottom"; chrome perspective-style flat',
|
|
1713
1716
|
"perspective:not-none, origin:center bottom, chrome-style:flat",
|
|
1714
1717
|
`perspective=${c} origin=${d} chrome-style=${m}`,
|
|
1715
|
-
|
|
1718
|
+
_
|
|
1716
1719
|
)
|
|
1717
1720
|
);
|
|
1718
1721
|
}
|
|
@@ -1728,8 +1731,8 @@ function oe() {
|
|
|
1728
1731
|
}
|
|
1729
1732
|
for (const m of d)
|
|
1730
1733
|
if (m.name === "stage-spin") {
|
|
1731
|
-
const b = Array.from(m.cssRules), p = b.find((N) => N.keyText === "0%" || N.keyText === "from"),
|
|
1732
|
-
o = v.test(E) && v.test(
|
|
1734
|
+
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"), E = p?.style.transform ?? "", S = _?.style.transform ?? "", v = /rotateY\(\s*0(?:deg)?\s*\)/;
|
|
1735
|
+
o = v.test(E) && v.test(S), s = `0%=${E || "n/a"} 100%=${S || "n/a"}`;
|
|
1733
1736
|
break;
|
|
1734
1737
|
}
|
|
1735
1738
|
if (s !== "absent") break;
|
|
@@ -1738,7 +1741,7 @@ function oe() {
|
|
|
1738
1741
|
s = "inspection-error";
|
|
1739
1742
|
}
|
|
1740
1743
|
e.push(
|
|
1741
|
-
|
|
1744
|
+
y(
|
|
1742
1745
|
"C6",
|
|
1743
1746
|
"@keyframes stage-spin 0% AND 100% anchor at rotateY(0)",
|
|
1744
1747
|
"both frames rotateY(0)",
|
|
@@ -1750,15 +1753,15 @@ function oe() {
|
|
|
1750
1753
|
{
|
|
1751
1754
|
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
1755
|
e.push(
|
|
1753
|
-
|
|
1756
|
+
y("C7", "--panel-open-dur > --panel-close-dur", "open > close", `open=${c || "n/a"} close=${d || "n/a"}`, b)
|
|
1754
1757
|
);
|
|
1755
1758
|
}
|
|
1756
1759
|
if (!a)
|
|
1757
|
-
e.push(
|
|
1760
|
+
e.push(y("C8", "BellCutout zero computed animation/transition", "no inline timing", "absent", !1));
|
|
1758
1761
|
else {
|
|
1759
1762
|
const o = getComputedStyle(a), s = o.animationName || "", c = o.transitionProperty || "", d = (s === "" || s === "none") && (c === "" || c === "none" || c === "all");
|
|
1760
1763
|
e.push(
|
|
1761
|
-
|
|
1764
|
+
y(
|
|
1762
1765
|
"C8",
|
|
1763
1766
|
"BellCutout zero computed animation/transition",
|
|
1764
1767
|
"animation:none AND transition:none",
|
|
@@ -1768,17 +1771,17 @@ function oe() {
|
|
|
1768
1771
|
);
|
|
1769
1772
|
}
|
|
1770
1773
|
if (!t)
|
|
1771
|
-
e.push(
|
|
1774
|
+
e.push(y("C9", "mount closed-state clipPath", J, "absent", !1));
|
|
1772
1775
|
else {
|
|
1773
1776
|
const o = t.style.clipPath, s = getComputedStyle(t), c = o || s.clipPath || "", d = c === J;
|
|
1774
|
-
e.push(
|
|
1777
|
+
e.push(y("C9", "mount closed-state clipPath", J, c || "n/a", d));
|
|
1775
1778
|
}
|
|
1776
1779
|
if (!i)
|
|
1777
|
-
e.push(
|
|
1780
|
+
e.push(y("C10", "bell-popover parentElement === document.body (open)", "body", "absent", !1));
|
|
1778
1781
|
else {
|
|
1779
1782
|
const o = i.parentElement, s = o === document.body;
|
|
1780
1783
|
e.push(
|
|
1781
|
-
|
|
1784
|
+
y(
|
|
1782
1785
|
"C10",
|
|
1783
1786
|
"bell-popover parentElement === document.body (open)",
|
|
1784
1787
|
"body",
|
|
@@ -1788,19 +1791,19 @@ function oe() {
|
|
|
1788
1791
|
);
|
|
1789
1792
|
}
|
|
1790
1793
|
if (!l)
|
|
1791
|
-
e.push(
|
|
1794
|
+
e.push(y("C11", "coordinator overflow === visible", "visible", "absent", !1));
|
|
1792
1795
|
else {
|
|
1793
1796
|
const s = getComputedStyle(l).overflow || l.style.overflow || "", c = s === "visible";
|
|
1794
|
-
e.push(
|
|
1797
|
+
e.push(y("C11", "coordinator overflow === visible", "visible", s || "n/a", c));
|
|
1795
1798
|
}
|
|
1796
1799
|
if (!u)
|
|
1797
|
-
e.push(
|
|
1800
|
+
e.push(y("C12", "toolbar clipPath = inset(0 -40 -40 -40)", ee, "absent", !1));
|
|
1798
1801
|
else {
|
|
1799
1802
|
const o = u.style.clipPath, s = getComputedStyle(u), c = o || s.clipPath || "", d = c === ee;
|
|
1800
|
-
e.push(
|
|
1803
|
+
e.push(y("C12", "toolbar clipPath = inset(0 -40 -40 -40)", ee, c || "n/a", d));
|
|
1801
1804
|
}
|
|
1802
1805
|
return e.push(
|
|
1803
|
-
|
|
1806
|
+
y(
|
|
1804
1807
|
"C13",
|
|
1805
1808
|
"same-position slide via WAAPI (mid-transition getAnimations().length > 0)",
|
|
1806
1809
|
"WAAPI driver wired in orchestrator (source-proof)",
|
|
@@ -1808,7 +1811,7 @@ function oe() {
|
|
|
1808
1811
|
"wiring_only"
|
|
1809
1812
|
)
|
|
1810
1813
|
), e.push(
|
|
1811
|
-
|
|
1814
|
+
y(
|
|
1812
1815
|
"C14",
|
|
1813
1816
|
'cross-position handoff transitionend filtered by propertyName="max-height"',
|
|
1814
1817
|
"transitionend filter wired in orchestrator (source-proof)",
|
|
@@ -1836,10 +1839,10 @@ function ft() {
|
|
|
1836
1839
|
return {
|
|
1837
1840
|
enable: gt,
|
|
1838
1841
|
disable: bt,
|
|
1839
|
-
isEnabled: () =>
|
|
1842
|
+
isEnabled: () => V,
|
|
1840
1843
|
getLastReport: () => j,
|
|
1841
1844
|
recordTransition: (e) => {
|
|
1842
|
-
|
|
1845
|
+
V && (j = { ...e, ...ne() });
|
|
1843
1846
|
},
|
|
1844
1847
|
assertOnce: () => {
|
|
1845
1848
|
const e = ne();
|
|
@@ -1851,13 +1854,13 @@ function ft() {
|
|
|
1851
1854
|
};
|
|
1852
1855
|
}
|
|
1853
1856
|
function gt() {
|
|
1854
|
-
if (
|
|
1857
|
+
if (V = !0, typeof window > "u") return;
|
|
1855
1858
|
window.__panelsAsserter || (window.__panelsAsserter = ft(), console.info(
|
|
1856
1859
|
"[panels] asserter enabled (P3b Q12-12 + P6 W5 cc:C1..C14). Inspect via window.__panelsAsserter."
|
|
1857
1860
|
));
|
|
1858
1861
|
}
|
|
1859
1862
|
function bt() {
|
|
1860
|
-
|
|
1863
|
+
V = !1;
|
|
1861
1864
|
}
|
|
1862
1865
|
export {
|
|
1863
1866
|
Ut as COMMITS,
|
|
@@ -1879,7 +1882,7 @@ export {
|
|
|
1879
1882
|
Ne as PageMgmtStateContext,
|
|
1880
1883
|
Ht as PanelBody,
|
|
1881
1884
|
Vt as PanelChrome,
|
|
1882
|
-
|
|
1885
|
+
B as PanelChromeV2,
|
|
1883
1886
|
Bt as PanelFooter,
|
|
1884
1887
|
Et as PanelFooterMessage,
|
|
1885
1888
|
Kt as PanelHeader,
|