@sentropic/design-system-vue 0.36.43 → 0.36.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Badge.d.ts +34 -0
- package/dist/Badge.d.ts.map +1 -1
- package/dist/Badge.js +3 -1
- package/dist/Badge.js.map +1 -1
- package/dist/Checkbox.d.ts +11 -0
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +50 -26
- package/dist/Checkbox.js.map +1 -1
- package/dist/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible.js +6 -0
- package/dist/Collapsible.js.map +1 -1
- package/dist/NavActionStack.d.ts +105 -0
- package/dist/NavActionStack.d.ts.map +1 -0
- package/dist/NavActionStack.js +109 -0
- package/dist/NavActionStack.js.map +1 -0
- package/dist/NavItem.d.ts +189 -0
- package/dist/NavItem.d.ts.map +1 -0
- package/dist/NavItem.js +121 -0
- package/dist/NavItem.js.map +1 -0
- package/dist/NavSection.d.ts +109 -0
- package/dist/NavSection.d.ts.map +1 -0
- package/dist/NavSection.js +104 -0
- package/dist/NavSection.js.map +1 -0
- package/dist/Overline.d.ts +40 -0
- package/dist/Overline.d.ts.map +1 -0
- package/dist/Overline.js +20 -0
- package/dist/Overline.js.map +1 -0
- package/dist/Search.d.ts +11 -0
- package/dist/Search.d.ts.map +1 -1
- package/dist/Search.js +2 -1
- package/dist/Search.js.map +1 -1
- package/dist/SelectableRow.d.ts.map +1 -1
- package/dist/SelectableRow.js +14 -2
- package/dist/SelectableRow.js.map +1 -1
- package/dist/StatusDot.d.ts +87 -0
- package/dist/StatusDot.d.ts.map +1 -0
- package/dist/StatusDot.js +52 -0
- package/dist/StatusDot.js.map +1 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/styles.css +343 -0
- package/package.json +1 -1
package/dist/Badge.d.ts
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
export type BadgeTone = "neutral" | "success" | "warning" | "error" | "info";
|
|
2
|
+
/**
|
|
3
|
+
* Badge shape — `"pill"` (default) is the base render (radius pill, width grows
|
|
4
|
+
* with content). `"circle"` renders an equal-sided round bubble (tabular-nums) —
|
|
5
|
+
* best for ≤2-digit counts; 3+ digit content degrades gracefully to a
|
|
6
|
+
* rounded-rect (never clipped). Additive: with `shape` unset the badge renders
|
|
7
|
+
* byte-identically to before.
|
|
8
|
+
*/
|
|
9
|
+
export type BadgeShape = "pill" | "circle";
|
|
10
|
+
/**
|
|
11
|
+
* Density — `"md"` (default) is the base render. `"sm"` shrinks the font-size
|
|
12
|
+
* (the rail-bubble scale). Additive: with `size` unset the badge renders
|
|
13
|
+
* byte-identically to before.
|
|
14
|
+
*/
|
|
15
|
+
export type BadgeSize = "sm" | "md";
|
|
2
16
|
export type BadgeProps = {
|
|
3
17
|
tone?: BadgeTone;
|
|
18
|
+
shape?: BadgeShape;
|
|
19
|
+
size?: BadgeSize;
|
|
4
20
|
class?: string;
|
|
5
21
|
};
|
|
6
22
|
export declare const Badge: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
@@ -8,6 +24,14 @@ export declare const Badge: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
8
24
|
type: () => BadgeTone;
|
|
9
25
|
default: string;
|
|
10
26
|
};
|
|
27
|
+
shape: {
|
|
28
|
+
type: () => BadgeShape;
|
|
29
|
+
default: string;
|
|
30
|
+
};
|
|
31
|
+
size: {
|
|
32
|
+
type: () => BadgeSize;
|
|
33
|
+
default: string;
|
|
34
|
+
};
|
|
11
35
|
class: {
|
|
12
36
|
type: StringConstructor;
|
|
13
37
|
default: undefined;
|
|
@@ -19,12 +43,22 @@ export declare const Badge: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
19
43
|
type: () => BadgeTone;
|
|
20
44
|
default: string;
|
|
21
45
|
};
|
|
46
|
+
shape: {
|
|
47
|
+
type: () => BadgeShape;
|
|
48
|
+
default: string;
|
|
49
|
+
};
|
|
50
|
+
size: {
|
|
51
|
+
type: () => BadgeSize;
|
|
52
|
+
default: string;
|
|
53
|
+
};
|
|
22
54
|
class: {
|
|
23
55
|
type: StringConstructor;
|
|
24
56
|
default: undefined;
|
|
25
57
|
};
|
|
26
58
|
}>> & Readonly<{}>, {
|
|
59
|
+
size: BadgeSize;
|
|
27
60
|
class: string;
|
|
28
61
|
tone: BadgeTone;
|
|
62
|
+
shape: BadgeShape;
|
|
29
63
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
30
64
|
//# sourceMappingURL=Badge.d.ts.map
|
package/dist/Badge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../src/Badge.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7E,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,KAAK;;cAGU,MAAM,SAAS;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../src/Badge.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3C;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,KAAK;;cAGU,MAAM,SAAS;;;;cACd,MAAM,UAAU;;;;cACjB,MAAM,SAAS;;;;;;;;;;;cAFf,MAAM,SAAS;;;;cACd,MAAM,UAAU;;;;cACjB,MAAM,SAAS;;;;;;;;;;;;4EAoBzC,CAAC"}
|
package/dist/Badge.js
CHANGED
|
@@ -4,12 +4,14 @@ export const Badge = defineComponent({
|
|
|
4
4
|
name: "Badge",
|
|
5
5
|
props: {
|
|
6
6
|
tone: { type: String, default: "neutral" },
|
|
7
|
+
shape: { type: String, default: "pill" },
|
|
8
|
+
size: { type: String, default: "md" },
|
|
7
9
|
class: { type: String, default: undefined },
|
|
8
10
|
},
|
|
9
11
|
setup(props, { slots, attrs }) {
|
|
10
12
|
return () => h("span", {
|
|
11
13
|
...attrs,
|
|
12
|
-
class: classNames("st-badge", `st-badge--${props.tone}`, props.class),
|
|
14
|
+
class: classNames("st-badge", `st-badge--${props.tone}`, `st-badge--${props.shape}`, `st-badge--${props.size}`, props.class),
|
|
13
15
|
}, slots.default?.());
|
|
14
16
|
},
|
|
15
17
|
});
|
package/dist/Badge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.js","sourceRoot":"","sources":["../src/Badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"Badge.js","sourceRoot":"","sources":["../src/Badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA2B7C,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAC;IACnC,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACL,IAAI,EAAE,EAAE,IAAI,EAAE,MAAyB,EAAE,OAAO,EAAE,SAAS,EAAE;QAC7D,KAAK,EAAE,EAAE,IAAI,EAAE,MAA0B,EAAE,OAAO,EAAE,MAAM,EAAE;QAC5D,IAAI,EAAE,EAAE,IAAI,EAAE,MAAyB,EAAE,OAAO,EAAE,IAAI,EAAE;QACxD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;KAC5C;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,OAAO,GAAG,EAAE,CACV,CAAC,CACC,MAAM,EACN;YACE,GAAG,KAAK;YACR,KAAK,EAAE,UAAU,CACf,UAAU,EACV,aAAa,KAAK,CAAC,IAAI,EAAE,EACzB,aAAa,KAAK,CAAC,KAAK,EAAE,EAC1B,aAAa,KAAK,CAAC,IAAI,EAAE,EACzB,KAAK,CAAC,KAAK,CACZ;SACF,EACD,KAAK,CAAC,OAAO,EAAE,EAAE,CAClB,CAAC;IACN,CAAC;CACF,CAAC,CAAC"}
|
package/dist/Checkbox.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export type CheckboxProps = {
|
|
2
2
|
label: string;
|
|
3
3
|
helperText?: string;
|
|
4
|
+
/** Secondary muted description line under the label (e.g. a filter hint). */
|
|
5
|
+
description?: string;
|
|
4
6
|
invalid?: boolean;
|
|
5
7
|
modelValue?: boolean;
|
|
6
8
|
checked?: boolean;
|
|
@@ -18,6 +20,10 @@ export declare const Checkbox: import("vue").DefineComponent<import("vue").Extra
|
|
|
18
20
|
type: StringConstructor;
|
|
19
21
|
default: undefined;
|
|
20
22
|
};
|
|
23
|
+
description: {
|
|
24
|
+
type: StringConstructor;
|
|
25
|
+
default: undefined;
|
|
26
|
+
};
|
|
21
27
|
invalid: {
|
|
22
28
|
type: BooleanConstructor;
|
|
23
29
|
default: boolean;
|
|
@@ -57,6 +63,10 @@ export declare const Checkbox: import("vue").DefineComponent<import("vue").Extra
|
|
|
57
63
|
type: StringConstructor;
|
|
58
64
|
default: undefined;
|
|
59
65
|
};
|
|
66
|
+
description: {
|
|
67
|
+
type: StringConstructor;
|
|
68
|
+
default: undefined;
|
|
69
|
+
};
|
|
60
70
|
invalid: {
|
|
61
71
|
type: BooleanConstructor;
|
|
62
72
|
default: boolean;
|
|
@@ -95,6 +105,7 @@ export declare const Checkbox: import("vue").DefineComponent<import("vue").Extra
|
|
|
95
105
|
disabled: boolean;
|
|
96
106
|
value: string;
|
|
97
107
|
helperText: string;
|
|
108
|
+
description: string;
|
|
98
109
|
modelValue: boolean;
|
|
99
110
|
checked: boolean;
|
|
100
111
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
package/dist/Checkbox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../src/Checkbox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../src/Checkbox.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAOF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EAiFnB,CAAC"}
|
package/dist/Checkbox.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { defineComponent, h } from "vue";
|
|
1
|
+
import { defineComponent, h, ref } from "vue";
|
|
2
2
|
import { classNames } from "./classNames.js";
|
|
3
|
+
let _counter = 0;
|
|
4
|
+
function nextId() {
|
|
5
|
+
return `st-checkbox-${++_counter}`;
|
|
6
|
+
}
|
|
3
7
|
export const Checkbox = defineComponent({
|
|
4
8
|
name: "Checkbox",
|
|
5
9
|
props: {
|
|
6
10
|
label: { type: String, required: true },
|
|
7
11
|
helperText: { type: String, default: undefined },
|
|
12
|
+
description: { type: String, default: undefined },
|
|
8
13
|
invalid: { type: Boolean, default: false },
|
|
9
14
|
modelValue: { type: Boolean, default: undefined },
|
|
10
15
|
checked: { type: Boolean, default: undefined },
|
|
@@ -14,32 +19,51 @@ export const Checkbox = defineComponent({
|
|
|
14
19
|
class: { type: String, default: undefined },
|
|
15
20
|
},
|
|
16
21
|
emits: ["update:modelValue", "change"],
|
|
17
|
-
setup(props, { emit, attrs }) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
disabled: props.disabled,
|
|
29
|
-
"aria-invalid": props.invalid ? "true" : undefined,
|
|
30
|
-
onChange: (event) => {
|
|
31
|
-
const checked = event.target.checked;
|
|
32
|
-
emit("update:modelValue", checked);
|
|
33
|
-
emit("change", event);
|
|
34
|
-
},
|
|
35
|
-
}),
|
|
36
|
-
h("span", { class: "st-choice__content" }, [
|
|
22
|
+
setup(props, { emit, slots, attrs }) {
|
|
23
|
+
const autoId = ref(nextId());
|
|
24
|
+
return () => {
|
|
25
|
+
const descriptionId = `${autoId.value}-description`;
|
|
26
|
+
// Merge our description id with any consumer-provided aria-describedby so we
|
|
27
|
+
// never clobber an existing one.
|
|
28
|
+
const consumerDescribedBy = attrs["aria-describedby"];
|
|
29
|
+
const describedBy = props.description
|
|
30
|
+
? [consumerDescribedBy, descriptionId].filter(Boolean).join(" ")
|
|
31
|
+
: consumerDescribedBy;
|
|
32
|
+
const contentChildren = [
|
|
37
33
|
h("span", { class: "st-choice__label" }, props.label),
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
34
|
+
];
|
|
35
|
+
if (props.description) {
|
|
36
|
+
contentChildren.push(h("span", { class: "st-choice__description", id: descriptionId }, props.description));
|
|
37
|
+
}
|
|
38
|
+
if (props.helperText) {
|
|
39
|
+
contentChildren.push(h("span", { class: "st-choice__help" }, props.helperText));
|
|
40
|
+
}
|
|
41
|
+
const children = [
|
|
42
|
+
h("input", {
|
|
43
|
+
...attrs,
|
|
44
|
+
class: "st-choice__input",
|
|
45
|
+
type: "checkbox",
|
|
46
|
+
name: props.name,
|
|
47
|
+
value: props.value,
|
|
48
|
+
checked: props.modelValue ?? props.checked,
|
|
49
|
+
disabled: props.disabled,
|
|
50
|
+
"aria-invalid": props.invalid ? "true" : undefined,
|
|
51
|
+
"aria-describedby": describedBy,
|
|
52
|
+
onChange: (event) => {
|
|
53
|
+
const checked = event.target.checked;
|
|
54
|
+
emit("update:modelValue", checked);
|
|
55
|
+
emit("change", event);
|
|
56
|
+
},
|
|
57
|
+
}),
|
|
58
|
+
h("span", { class: "st-choice__content" }, contentChildren),
|
|
59
|
+
];
|
|
60
|
+
if (slots.trailing) {
|
|
61
|
+
children.push(h("span", { class: "st-choice__trailing" }, slots.trailing()));
|
|
62
|
+
}
|
|
63
|
+
return h("label", {
|
|
64
|
+
class: classNames("st-choice", "st-choice--checkbox", props.description ? "st-choice--described" : undefined, props.class),
|
|
65
|
+
}, children);
|
|
66
|
+
};
|
|
43
67
|
},
|
|
44
68
|
});
|
|
45
69
|
//# sourceMappingURL=Checkbox.js.map
|
package/dist/Checkbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../src/Checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../src/Checkbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../src/Collapsible.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;cAOW,MAAM,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;;;;cAA7B,MAAM,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI;;;;;;;;;;;;qBAAhB,OAAO,KAAK,IAAI;;
|
|
1
|
+
{"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../src/Collapsible.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;cAOW,MAAM,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;;;;cAA7B,MAAM,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI;;;;;;;;;;;;qBAAhB,OAAO,KAAK,IAAI;;4EAsE9D,CAAC"}
|
package/dist/Collapsible.js
CHANGED
|
@@ -42,6 +42,12 @@ export const Collapsible = defineComponent({
|
|
|
42
42
|
onClick: toggle,
|
|
43
43
|
}, [
|
|
44
44
|
h("span", { class: "st-collapsible__title" }, props.title),
|
|
45
|
+
// Trailing content rendered BETWEEN the title and the chevron (e.g. a
|
|
46
|
+
// count Badge). The chevron stays the rightmost affordance. If it
|
|
47
|
+
// carries SR-relevant info, set `aria-label` on the Collapsible.
|
|
48
|
+
slots.trailing
|
|
49
|
+
? h("span", { class: "st-collapsible__trailing" }, slots.trailing())
|
|
50
|
+
: null,
|
|
45
51
|
h("span", { class: "st-collapsible__icon", "aria-hidden": "true" }, [h(ChevronDown, { size: 18, strokeWidth: 2.25, "aria-hidden": "true" })]),
|
|
46
52
|
]),
|
|
47
53
|
open
|
package/dist/Collapsible.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collapsible.js","sourceRoot":"","sources":["../src/Collapsible.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Collapsible.js","sourceRoot":"","sources":["../src/Collapsible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAW7C,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAE3B,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE;QACL,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;QAC3C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3C,QAAQ,EAAE;YACR,IAAI,EAAE,QAAoD;YAC1D,OAAO,EAAE,SAAS;SACnB;QACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;KAC5C;IACD,KAAK,EAAE,CAAC,QAAQ,CAAC;IACjB,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QACjC,MAAM,GAAG,GAAG,kBAAkB,CAAC,kBAAkB,IAAI,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QAE9C,OAAO,GAAG,EAAE;YACV,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;YAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;YAE7D,MAAM,OAAO,GAAG,UAAU,CACxB,gBAAgB,EAChB,IAAI,IAAI,sBAAsB,EAC9B,KAAK,CAAC,KAAK,CACZ,CAAC;YAEF,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,IAAI,KAAK,CAAC,QAAQ;oBAAE,OAAO;gBAC3B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC;gBACnB,IAAI,CAAC,YAAY;oBAAE,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC;gBAC7C,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC;YAEF,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBAC5C,CAAC,CACC,QAAQ,EACR;oBACE,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,yBAAyB;oBAChC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;oBACxC,eAAe,EAAE,GAAG,GAAG,SAAS;oBAChC,EAAE,EAAE,GAAG,GAAG,UAAU;oBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,OAAO,EAAE,MAAM;iBAChB,EACD;oBACE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;oBAC1D,sEAAsE;oBACtE,kEAAkE;oBAClE,iEAAiE;oBACjE,KAAK,CAAC,QAAQ;wBACZ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACpE,CAAC,CAAC,IAAI;oBACR,CAAC,CACC,MAAM,EACN,EAAE,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,EAAE,EACxD,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CACzE;iBACF,CACF;gBACD,IAAI;oBACF,CAAC,CAAC,CAAC,CACC,KAAK,EACL;wBACE,KAAK,EAAE,wBAAwB;wBAC/B,IAAI,EAAE,QAAQ;wBACd,EAAE,EAAE,GAAG,GAAG,SAAS;wBACnB,iBAAiB,EAAE,GAAG,GAAG,UAAU;qBACpC,EACD,KAAK,CAAC,OAAO,EAAE,EAAE,CAClB;oBACH,CAAC,CAAC,IAAI;aACT,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { Component } from "vue";
|
|
2
|
+
/** Hiérarchie ENCODÉE DANS LE TYPE : une seule action `primary` est légitime
|
|
3
|
+
* dans une pile. `secondary` = action secondaire ; `ghost` = action discrète.
|
|
4
|
+
* La couleur sémantique (danger) n'est PAS un `kind` — elle vit dans
|
|
5
|
+
* `dangerZone`, rendue à part. Le mauvais chemin (4 « primaires » arc-en-ciel)
|
|
6
|
+
* devient ainsi impossible à exprimer proprement. */
|
|
7
|
+
export type NavActionKind = "primary" | "secondary" | "ghost";
|
|
8
|
+
export type NavAction = {
|
|
9
|
+
label: string;
|
|
10
|
+
/** Icône optionnelle (composant), rendue avant le libellé. */
|
|
11
|
+
icon?: Component;
|
|
12
|
+
onClick?: () => void;
|
|
13
|
+
href?: string;
|
|
14
|
+
kind?: NavActionKind;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
};
|
|
17
|
+
/** Action destructrice, isolée sous un séparateur + un overline « Zone
|
|
18
|
+
* sensible ». Toujours en ton danger, jamais alignée avec les actions
|
|
19
|
+
* normales. Pas de `kind` : c'est une zone, pas une catégorie de couleur. */
|
|
20
|
+
export type NavActionDangerZone = {
|
|
21
|
+
label: string;
|
|
22
|
+
icon?: Component;
|
|
23
|
+
onClick?: () => void;
|
|
24
|
+
href?: string;
|
|
25
|
+
};
|
|
26
|
+
export type NavActionStackOrientation = "vertical" | "horizontal";
|
|
27
|
+
export type NavActionStackProps = {
|
|
28
|
+
actions?: NavAction[];
|
|
29
|
+
dangerZone?: NavActionDangerZone;
|
|
30
|
+
/** Libellé de l'overline de la zone sensible. Défaut « Zone sensible ». */
|
|
31
|
+
dangerLabel?: string;
|
|
32
|
+
orientation?: NavActionStackOrientation;
|
|
33
|
+
/** Étiquette a11y du groupe d'actions. */
|
|
34
|
+
label?: string;
|
|
35
|
+
class?: string;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* NavActionStack — empile des actions en ENCODANT la hiérarchie dans le type.
|
|
39
|
+
* Au plus UN `kind:"primary"` (les suivants sont dégradés en secondary +
|
|
40
|
+
* console.warn). La couleur sémantique « danger » n'est pas détournée en
|
|
41
|
+
* catégorie : la `dangerZone` est rendue séparément, sous un Divider + un
|
|
42
|
+
* overline, en ton danger pleine largeur. Réutilise le Button du DS — aucun
|
|
43
|
+
* bouton n'est réimplémenté. Style token-only, aucun hex en dur.
|
|
44
|
+
*/
|
|
45
|
+
export declare const NavActionStack: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
46
|
+
actions: {
|
|
47
|
+
type: () => NavAction[];
|
|
48
|
+
default: () => never[];
|
|
49
|
+
};
|
|
50
|
+
dangerZone: {
|
|
51
|
+
type: () => NavActionDangerZone;
|
|
52
|
+
default: undefined;
|
|
53
|
+
};
|
|
54
|
+
dangerLabel: {
|
|
55
|
+
type: StringConstructor;
|
|
56
|
+
default: string;
|
|
57
|
+
};
|
|
58
|
+
orientation: {
|
|
59
|
+
type: () => NavActionStackOrientation;
|
|
60
|
+
default: string;
|
|
61
|
+
};
|
|
62
|
+
label: {
|
|
63
|
+
type: StringConstructor;
|
|
64
|
+
default: string;
|
|
65
|
+
};
|
|
66
|
+
class: {
|
|
67
|
+
type: StringConstructor;
|
|
68
|
+
default: undefined;
|
|
69
|
+
};
|
|
70
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
71
|
+
[key: string]: any;
|
|
72
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
73
|
+
actions: {
|
|
74
|
+
type: () => NavAction[];
|
|
75
|
+
default: () => never[];
|
|
76
|
+
};
|
|
77
|
+
dangerZone: {
|
|
78
|
+
type: () => NavActionDangerZone;
|
|
79
|
+
default: undefined;
|
|
80
|
+
};
|
|
81
|
+
dangerLabel: {
|
|
82
|
+
type: StringConstructor;
|
|
83
|
+
default: string;
|
|
84
|
+
};
|
|
85
|
+
orientation: {
|
|
86
|
+
type: () => NavActionStackOrientation;
|
|
87
|
+
default: string;
|
|
88
|
+
};
|
|
89
|
+
label: {
|
|
90
|
+
type: StringConstructor;
|
|
91
|
+
default: string;
|
|
92
|
+
};
|
|
93
|
+
class: {
|
|
94
|
+
type: StringConstructor;
|
|
95
|
+
default: undefined;
|
|
96
|
+
};
|
|
97
|
+
}>> & Readonly<{}>, {
|
|
98
|
+
class: string;
|
|
99
|
+
label: string;
|
|
100
|
+
orientation: NavActionStackOrientation;
|
|
101
|
+
actions: NavAction[];
|
|
102
|
+
dangerZone: NavActionDangerZone;
|
|
103
|
+
dangerLabel: string;
|
|
104
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
105
|
+
//# sourceMappingURL=NavActionStack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavActionStack.d.ts","sourceRoot":"","sources":["../src/NavActionStack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,KAAK,CAAC;AAKjD;;;;qDAIqD;AACrD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAE9D,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;6EAE6E;AAC7E,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,UAAU,GAAG,YAAY,CAAC;AAElE,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAKF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;cAGG,MAAM,SAAS,EAAE;;;;cACb,MAAM,mBAAmB;;;;;;;;cAGrC,MAAM,yBAAyB;;;;;;;;;;;;;;;cAJvB,MAAM,SAAS,EAAE;;;;cACb,MAAM,mBAAmB;;;;;;;;cAGrC,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;4EA6HnD,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { defineComponent, h } from "vue";
|
|
2
|
+
import { classNames } from "./classNames.js";
|
|
3
|
+
import { Button } from "./Button.js";
|
|
4
|
+
import { Divider } from "./Divider.js";
|
|
5
|
+
// kind → variant Button : primary→primary, secondary→secondary, ghost→ghost.
|
|
6
|
+
const variantFor = (kind) => kind;
|
|
7
|
+
/**
|
|
8
|
+
* NavActionStack — empile des actions en ENCODANT la hiérarchie dans le type.
|
|
9
|
+
* Au plus UN `kind:"primary"` (les suivants sont dégradés en secondary +
|
|
10
|
+
* console.warn). La couleur sémantique « danger » n'est pas détournée en
|
|
11
|
+
* catégorie : la `dangerZone` est rendue séparément, sous un Divider + un
|
|
12
|
+
* overline, en ton danger pleine largeur. Réutilise le Button du DS — aucun
|
|
13
|
+
* bouton n'est réimplémenté. Style token-only, aucun hex en dur.
|
|
14
|
+
*/
|
|
15
|
+
export const NavActionStack = defineComponent({
|
|
16
|
+
name: "NavActionStack",
|
|
17
|
+
props: {
|
|
18
|
+
actions: { type: Array, default: () => [] },
|
|
19
|
+
dangerZone: { type: Object, default: undefined },
|
|
20
|
+
dangerLabel: { type: String, default: "Zone sensible" },
|
|
21
|
+
orientation: {
|
|
22
|
+
type: String,
|
|
23
|
+
default: "vertical",
|
|
24
|
+
},
|
|
25
|
+
label: { type: String, default: "Actions" },
|
|
26
|
+
class: { type: String, default: undefined },
|
|
27
|
+
},
|
|
28
|
+
setup(props, { attrs }) {
|
|
29
|
+
return () => {
|
|
30
|
+
// La règle (un seul primary) appliquée AU RUNTIME en miroir du type : on
|
|
31
|
+
// garde le premier `primary`, on dégrade les suivants en `secondary` et on
|
|
32
|
+
// prévient.
|
|
33
|
+
let primarySeen = false;
|
|
34
|
+
const normalizedActions = props.actions.map((action) => {
|
|
35
|
+
const kind = action.kind ?? "secondary";
|
|
36
|
+
if (kind === "primary") {
|
|
37
|
+
if (primarySeen) {
|
|
38
|
+
console.warn(`[NavActionStack] Plusieurs actions « primary » fournies — « ${action.label} » dégradée en « secondary ». Une pile n'a qu'une action primaire.`);
|
|
39
|
+
return { ...action, kind: "secondary" };
|
|
40
|
+
}
|
|
41
|
+
primarySeen = true;
|
|
42
|
+
}
|
|
43
|
+
return { ...action, kind };
|
|
44
|
+
});
|
|
45
|
+
const renderActionChildren = (action) => {
|
|
46
|
+
const children = [];
|
|
47
|
+
if (action.icon)
|
|
48
|
+
children.push(h(action.icon));
|
|
49
|
+
children.push(action.label);
|
|
50
|
+
return children;
|
|
51
|
+
};
|
|
52
|
+
const actionNodes = normalizedActions.map((action) => {
|
|
53
|
+
if (action.href && !action.disabled) {
|
|
54
|
+
// Action-lien : porte les classes Button (réutilisation du style, pas
|
|
55
|
+
// de réimplémentation de la logique bouton).
|
|
56
|
+
return h("a", {
|
|
57
|
+
key: action.label,
|
|
58
|
+
class: `st-button st-button--${variantFor(action.kind)} st-button--md st-navActionStack__item`,
|
|
59
|
+
href: action.href,
|
|
60
|
+
onClick: action.onClick,
|
|
61
|
+
}, renderActionChildren(action));
|
|
62
|
+
}
|
|
63
|
+
return h(Button, {
|
|
64
|
+
key: action.label,
|
|
65
|
+
variant: variantFor(action.kind),
|
|
66
|
+
disabled: action.disabled,
|
|
67
|
+
onClick: action.onClick,
|
|
68
|
+
class: "st-navActionStack__item",
|
|
69
|
+
}, { default: () => renderActionChildren(action) });
|
|
70
|
+
});
|
|
71
|
+
const children = [
|
|
72
|
+
h("div", { class: "st-navActionStack__actions" }, actionNodes),
|
|
73
|
+
];
|
|
74
|
+
if (props.dangerZone) {
|
|
75
|
+
const dz = props.dangerZone;
|
|
76
|
+
// Zone sensible : SÉPARÉE des actions normales par un Divider, coiffée
|
|
77
|
+
// d'un overline token-only, rendue en ton danger pleine largeur. Jamais
|
|
78
|
+
// alignée avec la pile au-dessus.
|
|
79
|
+
const dangerAction = dz.href
|
|
80
|
+
? h("a", {
|
|
81
|
+
class: "st-button st-button--danger st-button--md st-navActionStack__item st-navActionStack__dangerAction",
|
|
82
|
+
href: dz.href,
|
|
83
|
+
onClick: dz.onClick,
|
|
84
|
+
}, renderActionChildren(dz))
|
|
85
|
+
: h(Button, {
|
|
86
|
+
variant: "danger",
|
|
87
|
+
onClick: dz.onClick,
|
|
88
|
+
class: "st-navActionStack__item st-navActionStack__dangerAction",
|
|
89
|
+
}, { default: () => renderActionChildren(dz) });
|
|
90
|
+
children.push(h("div", {
|
|
91
|
+
class: "st-navActionStack__danger",
|
|
92
|
+
role: "group",
|
|
93
|
+
"aria-label": props.dangerLabel,
|
|
94
|
+
}, [
|
|
95
|
+
h(Divider),
|
|
96
|
+
h("span", { class: "st-navActionStack__dangerLabel" }, props.dangerLabel),
|
|
97
|
+
dangerAction,
|
|
98
|
+
]));
|
|
99
|
+
}
|
|
100
|
+
return h("div", {
|
|
101
|
+
...attrs,
|
|
102
|
+
class: classNames("st-navActionStack", `st-navActionStack--${props.orientation}`, props.class),
|
|
103
|
+
role: "group",
|
|
104
|
+
"aria-label": props.label,
|
|
105
|
+
}, children);
|
|
106
|
+
};
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=NavActionStack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavActionStack.js","sourceRoot":"","sources":["../src/NavActionStack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA0CvC,6EAA6E;AAC7E,MAAM,UAAU,GAAG,CAAC,IAAmB,EAAqC,EAAE,CAAC,IAAI,CAAC;AAEpF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;IAC5C,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE;QACL,OAAO,EAAE,EAAE,IAAI,EAAE,KAA0B,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QAChE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAmC,EAAE,OAAO,EAAE,SAAS,EAAE;QAC7E,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE;QACvD,WAAW,EAAE;YACX,IAAI,EAAE,MAAyC;YAC/C,OAAO,EAAE,UAAU;SACpB;QACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;QAC3C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;KAC5C;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,OAAO,GAAG,EAAE;YACV,yEAAyE;YACzE,2EAA2E;YAC3E,YAAY;YACZ,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACrD,MAAM,IAAI,GAAkB,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC;gBACvD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,IAAI,WAAW,EAAE,CAAC;wBAChB,OAAO,CAAC,IAAI,CACV,+DAA+D,MAAM,CAAC,KAAK,oEAAoE,CAChJ,CAAC;wBACF,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,WAA4B,EAAE,CAAC;oBAC3D,CAAC;oBACD,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;gBACD,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,MAAM,oBAAoB,GAAG,CAC3B,MAAuC,EACzB,EAAE;gBAChB,MAAM,QAAQ,GAAiB,EAAE,CAAC;gBAClC,IAAI,MAAM,CAAC,IAAI;oBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5B,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;YAEF,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACnD,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACpC,sEAAsE;oBACtE,6CAA6C;oBAC7C,OAAO,CAAC,CACN,GAAG,EACH;wBACE,GAAG,EAAE,MAAM,CAAC,KAAK;wBACjB,KAAK,EAAE,wBAAwB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC;wBAC9F,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;qBACxB,EACD,oBAAoB,CAAC,MAAM,CAAC,CAC7B,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,CACN,MAAM,EACN;oBACE,GAAG,EAAE,MAAM,CAAC,KAAK;oBACjB,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;oBAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,KAAK,EAAE,yBAAyB;iBACjC,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAChD,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAiB;gBAC7B,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE,WAAW,CAAC;aAC/D,CAAC;YAEF,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC5B,uEAAuE;gBACvE,wEAAwE;gBACxE,kCAAkC;gBAClC,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI;oBAC1B,CAAC,CAAC,CAAC,CACC,GAAG,EACH;wBACE,KAAK,EAAE,mGAAmG;wBAC1G,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,OAAO,EAAE,EAAE,CAAC,OAAO;qBACpB,EACD,oBAAoB,CAAC,EAAE,CAAC,CACzB;oBACH,CAAC,CAAC,CAAC,CACC,MAAM,EACN;wBACE,OAAO,EAAE,QAAQ;wBACjB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,KAAK,EAAE,yDAAyD;qBACjE,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAC5C,CAAC;gBAEN,QAAQ,CAAC,IAAI,CACX,CAAC,CACC,KAAK,EACL;oBACE,KAAK,EAAE,2BAA2B;oBAClC,IAAI,EAAE,OAAO;oBACb,YAAY,EAAE,KAAK,CAAC,WAAW;iBAChC,EACD;oBACE,CAAC,CAAC,OAAO,CAAC;oBACV,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC;oBACzE,YAAY;iBACb,CACF,CACF,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,CACN,KAAK,EACL;gBACE,GAAG,KAAK;gBACR,KAAK,EAAE,UAAU,CACf,mBAAmB,EACnB,sBAAsB,KAAK,CAAC,WAAW,EAAE,EACzC,KAAK,CAAC,KAAK,CACZ;gBACD,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,KAAK,CAAC,KAAK;aAC1B,EACD,QAAQ,CACT,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|