@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.
Files changed (44) hide show
  1. package/dist/Badge.d.ts +34 -0
  2. package/dist/Badge.d.ts.map +1 -1
  3. package/dist/Badge.js +3 -1
  4. package/dist/Badge.js.map +1 -1
  5. package/dist/Checkbox.d.ts +11 -0
  6. package/dist/Checkbox.d.ts.map +1 -1
  7. package/dist/Checkbox.js +50 -26
  8. package/dist/Checkbox.js.map +1 -1
  9. package/dist/Collapsible.d.ts.map +1 -1
  10. package/dist/Collapsible.js +6 -0
  11. package/dist/Collapsible.js.map +1 -1
  12. package/dist/NavActionStack.d.ts +105 -0
  13. package/dist/NavActionStack.d.ts.map +1 -0
  14. package/dist/NavActionStack.js +109 -0
  15. package/dist/NavActionStack.js.map +1 -0
  16. package/dist/NavItem.d.ts +189 -0
  17. package/dist/NavItem.d.ts.map +1 -0
  18. package/dist/NavItem.js +121 -0
  19. package/dist/NavItem.js.map +1 -0
  20. package/dist/NavSection.d.ts +109 -0
  21. package/dist/NavSection.d.ts.map +1 -0
  22. package/dist/NavSection.js +104 -0
  23. package/dist/NavSection.js.map +1 -0
  24. package/dist/Overline.d.ts +40 -0
  25. package/dist/Overline.d.ts.map +1 -0
  26. package/dist/Overline.js +20 -0
  27. package/dist/Overline.js.map +1 -0
  28. package/dist/Search.d.ts +11 -0
  29. package/dist/Search.d.ts.map +1 -1
  30. package/dist/Search.js +2 -1
  31. package/dist/Search.js.map +1 -1
  32. package/dist/SelectableRow.d.ts.map +1 -1
  33. package/dist/SelectableRow.js +14 -2
  34. package/dist/SelectableRow.js.map +1 -1
  35. package/dist/StatusDot.d.ts +87 -0
  36. package/dist/StatusDot.d.ts.map +1 -0
  37. package/dist/StatusDot.js +52 -0
  38. package/dist/StatusDot.js.map +1 -0
  39. package/dist/index.d.ts +11 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +5 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/styles.css +343 -0
  44. 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
@@ -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;;;;;;;;;;;cAAf,MAAM,SAAS;;;;;;;;;;4EAczC,CAAC"}
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;AAS7C,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,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,CAAC,UAAU,EAAE,aAAa,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;SACtE,EACD,KAAK,CAAC,OAAO,EAAE,EAAE,CAClB,CAAC;IACN,CAAC;CACF,CAAC,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"}
@@ -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>;
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../src/Checkbox.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,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;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA8CnB,CAAC"}
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
- return () => h("label", {
19
- class: classNames("st-choice", "st-choice--checkbox", props.class),
20
- }, [
21
- h("input", {
22
- ...attrs,
23
- class: "st-choice__input",
24
- type: "checkbox",
25
- name: props.name,
26
- value: props.value,
27
- checked: props.modelValue ?? props.checked,
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
- props.helperText
39
- ? h("span", { class: "st-choice__help" }, props.helperText)
40
- : null,
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
@@ -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;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAc7C,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC;IACtC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;QAChD,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC1C,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;QACjD,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;QAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;QAC1C,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,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAC;IACtC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QAC1B,OAAO,GAAG,EAAE,CACV,CAAC,CACC,OAAO,EACP;YACE,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,qBAAqB,EAAE,KAAK,CAAC,KAAK,CAAC;SACnE,EACD;YACE,CAAC,CAAC,OAAO,EAAE;gBACT,GAAG,KAAK;gBACR,KAAK,EAAE,kBAAkB;gBACzB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO;gBAC1C,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAClD,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE;oBACzB,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC;oBAC3D,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;oBACnC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACxB,CAAC;aACF,CAAC;YACF,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE;gBACzC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;gBACrD,KAAK,CAAC,UAAU;oBACd,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC;oBAC3D,CAAC,CAAC,IAAI;aACT,CAAC;SACH,CACF,CAAC;IACN,CAAC;CACF,CAAC,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;;4EAgE9D,CAAC"}
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"}
@@ -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
@@ -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":"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"}
@@ -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":"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"}