@sentropic/design-system-vue 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/Avatar.d.ts +85 -0
  2. package/dist/Avatar.d.ts.map +1 -0
  3. package/dist/Avatar.js +36 -0
  4. package/dist/Avatar.js.map +1 -0
  5. package/dist/AvatarGroup.d.ts +53 -0
  6. package/dist/AvatarGroup.d.ts.map +1 -0
  7. package/dist/AvatarGroup.js +37 -0
  8. package/dist/AvatarGroup.js.map +1 -0
  9. package/dist/BarChart.d.ts +1 -1
  10. package/dist/Button.d.ts +1 -1
  11. package/dist/ButtonGroup.d.ts +75 -0
  12. package/dist/ButtonGroup.d.ts.map +1 -0
  13. package/dist/ButtonGroup.js +36 -0
  14. package/dist/ButtonGroup.js.map +1 -0
  15. package/dist/CheckboxGroup.d.ts +111 -0
  16. package/dist/CheckboxGroup.d.ts.map +1 -0
  17. package/dist/CheckboxGroup.js +59 -0
  18. package/dist/CheckboxGroup.js.map +1 -0
  19. package/dist/Collapsible.d.ts +61 -0
  20. package/dist/Collapsible.d.ts.map +1 -0
  21. package/dist/Collapsible.js +72 -0
  22. package/dist/Collapsible.js.map +1 -0
  23. package/dist/Container.d.ts +1 -1
  24. package/dist/DataTable.d.ts +1 -1
  25. package/dist/Flex.d.ts +1 -1
  26. package/dist/Footer.d.ts +1 -1
  27. package/dist/Header.d.ts +1 -1
  28. package/dist/Hidden.d.ts +1 -1
  29. package/dist/IconButton.d.ts +1 -1
  30. package/dist/Inline.d.ts +1 -1
  31. package/dist/RadioGroup.d.ts +109 -0
  32. package/dist/RadioGroup.d.ts.map +1 -0
  33. package/dist/RadioGroup.js +58 -0
  34. package/dist/RadioGroup.js.map +1 -0
  35. package/dist/Row.d.ts +1 -1
  36. package/dist/Stack.d.ts +1 -1
  37. package/dist/Stepper.d.ts +89 -0
  38. package/dist/Stepper.d.ts.map +1 -0
  39. package/dist/Stepper.js +91 -0
  40. package/dist/Stepper.js.map +1 -0
  41. package/dist/Typography.d.ts +85 -0
  42. package/dist/Typography.d.ts.map +1 -0
  43. package/dist/Typography.js +36 -0
  44. package/dist/Typography.js.map +1 -0
  45. package/dist/index.d.ts +16 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +8 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/styles.css +667 -0
  50. package/package.json +1 -1
@@ -0,0 +1,85 @@
1
+ export type AvatarSize = "sm" | "md" | "lg" | "xl";
2
+ export type AvatarShape = "circle" | "square";
3
+ export type AvatarTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
4
+ export type AvatarProps = {
5
+ /** Nom complet, utilisé pour dériver les initiales et l'étiquette a11y. */
6
+ name: string;
7
+ /** URL de la photo. Si absente, on rend un cercle d'initiales. */
8
+ src?: string;
9
+ /** Texte alternatif de l'image. Par défaut = `name`. */
10
+ alt?: string;
11
+ size?: AvatarSize;
12
+ shape?: AvatarShape;
13
+ /** Catégorie de couleur pour le fond des initiales. */
14
+ tone?: AvatarTone;
15
+ class?: string;
16
+ };
17
+ export declare const Avatar: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
18
+ name: {
19
+ type: StringConstructor;
20
+ required: true;
21
+ };
22
+ src: {
23
+ type: StringConstructor;
24
+ default: undefined;
25
+ };
26
+ alt: {
27
+ type: StringConstructor;
28
+ default: undefined;
29
+ };
30
+ size: {
31
+ type: () => AvatarSize;
32
+ default: string;
33
+ };
34
+ shape: {
35
+ type: () => AvatarShape;
36
+ default: string;
37
+ };
38
+ tone: {
39
+ type: () => AvatarTone;
40
+ default: string;
41
+ };
42
+ class: {
43
+ type: StringConstructor;
44
+ default: undefined;
45
+ };
46
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
47
+ [key: string]: any;
48
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
49
+ name: {
50
+ type: StringConstructor;
51
+ required: true;
52
+ };
53
+ src: {
54
+ type: StringConstructor;
55
+ default: undefined;
56
+ };
57
+ alt: {
58
+ type: StringConstructor;
59
+ default: undefined;
60
+ };
61
+ size: {
62
+ type: () => AvatarSize;
63
+ default: string;
64
+ };
65
+ shape: {
66
+ type: () => AvatarShape;
67
+ default: string;
68
+ };
69
+ tone: {
70
+ type: () => AvatarTone;
71
+ default: string;
72
+ };
73
+ class: {
74
+ type: StringConstructor;
75
+ default: undefined;
76
+ };
77
+ }>> & Readonly<{}>, {
78
+ class: string;
79
+ tone: AvatarTone;
80
+ src: string;
81
+ alt: string;
82
+ size: AvatarSize;
83
+ shape: AvatarShape;
84
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
85
+ //# sourceMappingURL=Avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../src/Avatar.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9C,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,WAAW,GAAG;IACxB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,uDAAuD;IACvD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;cAMS,MAAM,UAAU;;;;cACf,MAAM,WAAW;;;;cAClB,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;cAFhB,MAAM,UAAU;;;;cACf,MAAM,WAAW;;;;cAClB,MAAM,UAAU;;;;;;;;;;;;;;4EAqC1C,CAAC"}
package/dist/Avatar.js ADDED
@@ -0,0 +1,36 @@
1
+ import { defineComponent, h } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ import { deriveInitials } from "./Header.js";
4
+ export const Avatar = defineComponent({
5
+ name: "Avatar",
6
+ props: {
7
+ name: { type: String, required: true },
8
+ src: { type: String, default: undefined },
9
+ alt: { type: String, default: undefined },
10
+ size: { type: String, default: "md" },
11
+ shape: { type: String, default: "circle" },
12
+ tone: { type: String, default: "category1" },
13
+ class: { type: String, default: undefined },
14
+ },
15
+ setup(props, { attrs }) {
16
+ return () => {
17
+ const initials = deriveInitials(props.name);
18
+ const classes = classNames("st-avatar", `st-avatar--${props.size}`, `st-avatar--${props.shape}`, props.src ? "st-avatar--image" : `st-avatar--${props.tone}`, props.class);
19
+ return h("span", {
20
+ ...attrs,
21
+ class: classes,
22
+ role: "img",
23
+ "aria-label": props.alt ?? props.name,
24
+ }, [
25
+ props.src
26
+ ? h("img", {
27
+ class: "st-avatar__image",
28
+ src: props.src,
29
+ alt: props.alt ?? props.name,
30
+ })
31
+ : h("span", { class: "st-avatar__initials", "aria-hidden": "true" }, initials),
32
+ ]);
33
+ };
34
+ },
35
+ });
36
+ //# sourceMappingURL=Avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../src/Avatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA4B7C,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC;IACpC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE;QACL,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACtC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;QACzC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;QACzC,IAAI,EAAE,EAAE,IAAI,EAAE,MAA0B,EAAE,OAAO,EAAE,IAAI,EAAE;QACzD,KAAK,EAAE,EAAE,IAAI,EAAE,MAA2B,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC/D,IAAI,EAAE,EAAE,IAAI,EAAE,MAA0B,EAAE,OAAO,EAAE,WAAW,EAAE;QAChE,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,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,UAAU,CACxB,WAAW,EACX,cAAc,KAAK,CAAC,IAAI,EAAE,EAC1B,cAAc,KAAK,CAAC,KAAK,EAAE,EAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,IAAI,EAAE,EAC3D,KAAK,CAAC,KAAK,CACZ,CAAC;YACF,OAAO,CAAC,CACN,MAAM,EACN;gBACE,GAAG,KAAK;gBACR,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,KAAK;gBACX,YAAY,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI;aACtC,EACD;gBACE,KAAK,CAAC,GAAG;oBACP,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;wBACP,KAAK,EAAE,kBAAkB;wBACzB,GAAG,EAAE,KAAK,CAAC,GAAG;wBACd,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI;qBAC7B,CAAC;oBACJ,CAAC,CAAC,CAAC,CACC,MAAM,EACN,EAAE,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,EAAE,EACvD,QAAQ,CACT;aACN,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { AvatarSize } from "./Avatar.js";
2
+ export type AvatarGroupProps = {
3
+ /** Nombre maximum d'avatars visibles. Au-delà, un jeton « +N » est affiché. */
4
+ max?: number;
5
+ /** Taille appliquée au jeton de débordement (doit refléter les Avatar). */
6
+ size?: AvatarSize;
7
+ /** Nombre total réel d'éléments (sert à calculer le « +N » si > max). */
8
+ total?: number;
9
+ class?: string;
10
+ };
11
+ export declare const AvatarGroup: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
12
+ max: {
13
+ type: NumberConstructor;
14
+ default: undefined;
15
+ };
16
+ size: {
17
+ type: () => AvatarSize;
18
+ default: string;
19
+ };
20
+ total: {
21
+ type: NumberConstructor;
22
+ default: undefined;
23
+ };
24
+ class: {
25
+ type: StringConstructor;
26
+ default: undefined;
27
+ };
28
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
29
+ [key: string]: any;
30
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
31
+ max: {
32
+ type: NumberConstructor;
33
+ default: undefined;
34
+ };
35
+ size: {
36
+ type: () => AvatarSize;
37
+ default: string;
38
+ };
39
+ total: {
40
+ type: NumberConstructor;
41
+ default: undefined;
42
+ };
43
+ class: {
44
+ type: StringConstructor;
45
+ default: undefined;
46
+ };
47
+ }>> & Readonly<{}>, {
48
+ class: string;
49
+ max: number;
50
+ size: AvatarSize;
51
+ total: number;
52
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
53
+ //# sourceMappingURL=AvatarGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.d.ts","sourceRoot":"","sources":["../src/AvatarGroup.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;cAII,MAAM,UAAU;;;;;;;;;;;;;;;;;;;cAAhB,MAAM,UAAU;;;;;;;;;;;;;;;;4EA0C1C,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { defineComponent, h } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ export const AvatarGroup = defineComponent({
4
+ name: "AvatarGroup",
5
+ props: {
6
+ max: { type: Number, default: undefined },
7
+ size: { type: String, default: "md" },
8
+ total: { type: Number, default: undefined },
9
+ class: { type: String, default: undefined },
10
+ },
11
+ setup(props, { slots, attrs }) {
12
+ return () => {
13
+ const overflow = props.max != null && props.total != null && props.total > props.max
14
+ ? props.total - props.max
15
+ : 0;
16
+ const classes = classNames("st-avatarGroup", `st-avatarGroup--${props.size}`, props.class);
17
+ const style = {
18
+ ...attrs.style,
19
+ ["--st-avatar-group-max"]: props.max ?? "",
20
+ };
21
+ return h("div", {
22
+ ...attrs,
23
+ class: classes,
24
+ style,
25
+ }, [
26
+ slots.default?.(),
27
+ overflow > 0
28
+ ? h("span", {
29
+ class: "st-avatarGroup__overflow",
30
+ "aria-label": `+${overflow}`,
31
+ }, `+${overflow}`)
32
+ : null,
33
+ ]);
34
+ };
35
+ },
36
+ });
37
+ //# sourceMappingURL=AvatarGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.js","sourceRoot":"","sources":["../src/AvatarGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAa7C,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE;QACL,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;QACzC,IAAI,EAAE,EAAE,IAAI,EAAE,MAA0B,EAAE,OAAO,EAAE,IAAI,EAAE;QACzD,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,KAAK,EAAE;QAC3B,OAAO,GAAG,EAAE;YACV,MAAM,QAAQ,GACZ,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG;gBACjE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG;gBACzB,CAAC,CAAC,CAAC,CAAC;YACR,MAAM,OAAO,GAAG,UAAU,CACxB,gBAAgB,EAChB,mBAAmB,KAAK,CAAC,IAAI,EAAE,EAC/B,KAAK,CAAC,KAAK,CACZ,CAAC;YACF,MAAM,KAAK,GAAkB;gBAC3B,GAAI,KAAK,CAAC,KAAmC;gBAC7C,CAAC,uBAAiC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE;aACrD,CAAC;YACF,OAAO,CAAC,CACN,KAAK,EACL;gBACE,GAAG,KAAK;gBACR,KAAK,EAAE,OAAO;gBACd,KAAK;aACN,EACD;gBACE,KAAK,CAAC,OAAO,EAAE,EAAE;gBACjB,QAAQ,GAAG,CAAC;oBACV,CAAC,CAAC,CAAC,CACC,MAAM,EACN;wBACE,KAAK,EAAE,0BAA0B;wBACjC,YAAY,EAAE,IAAI,QAAQ,EAAE;qBAC7B,EACD,IAAI,QAAQ,EAAE,CACf;oBACH,CAAC,CAAC,IAAI;aACT,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -68,6 +68,6 @@ export declare const BarChart: import("vue").DefineComponent<import("vue").Extra
68
68
  class: string;
69
69
  width: number;
70
70
  height: number;
71
- orientation: "vertical" | "horizontal";
71
+ orientation: "horizontal" | "vertical";
72
72
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
73
73
  //# sourceMappingURL=BarChart.d.ts.map
package/dist/Button.d.ts CHANGED
@@ -55,7 +55,7 @@ export declare const Button: import("vue").DefineComponent<import("vue").Extract
55
55
  type: "button" | "reset" | "submit";
56
56
  class: string;
57
57
  disabled: boolean;
58
- variant: ButtonVariant;
59
58
  size: ButtonSize;
59
+ variant: ButtonVariant;
60
60
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
61
61
  //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1,75 @@
1
+ export type ButtonGroupOrientation = "horizontal" | "vertical";
2
+ export type ButtonGroupSize = "sm" | "md" | "lg";
3
+ export type ButtonGroupProps = {
4
+ orientation?: ButtonGroupOrientation;
5
+ /** Look segmenté joint (boutons collés, coins arrondis seulement aux extrémités). */
6
+ attached?: boolean;
7
+ /** Espacement entre boutons (échelle spacing), ignoré quand `attached`. */
8
+ gap?: number;
9
+ /** Taille indicative (transmise via data-attr pour styliser les enfants si besoin). */
10
+ size?: ButtonGroupSize;
11
+ /** Étiquette a11y du groupe. */
12
+ label?: string;
13
+ class?: string;
14
+ };
15
+ export declare const ButtonGroup: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
16
+ orientation: {
17
+ type: () => ButtonGroupOrientation;
18
+ default: string;
19
+ };
20
+ attached: {
21
+ type: BooleanConstructor;
22
+ default: boolean;
23
+ };
24
+ gap: {
25
+ type: NumberConstructor;
26
+ default: undefined;
27
+ };
28
+ size: {
29
+ type: () => ButtonGroupSize;
30
+ default: string;
31
+ };
32
+ label: {
33
+ type: StringConstructor;
34
+ default: undefined;
35
+ };
36
+ class: {
37
+ type: StringConstructor;
38
+ default: undefined;
39
+ };
40
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
41
+ [key: string]: any;
42
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
43
+ orientation: {
44
+ type: () => ButtonGroupOrientation;
45
+ default: string;
46
+ };
47
+ attached: {
48
+ type: BooleanConstructor;
49
+ default: boolean;
50
+ };
51
+ gap: {
52
+ type: NumberConstructor;
53
+ default: undefined;
54
+ };
55
+ size: {
56
+ type: () => ButtonGroupSize;
57
+ default: string;
58
+ };
59
+ label: {
60
+ type: StringConstructor;
61
+ default: undefined;
62
+ };
63
+ class: {
64
+ type: StringConstructor;
65
+ default: undefined;
66
+ };
67
+ }>> & Readonly<{}>, {
68
+ class: string;
69
+ label: string;
70
+ size: ButtonGroupSize;
71
+ gap: number;
72
+ orientation: ButtonGroupOrientation;
73
+ attached: boolean;
74
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
75
+ //# sourceMappingURL=ButtonGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../src/ButtonGroup.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,UAAU,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,WAAW;;cAIF,MAAM,sBAAsB;;;;;;;;;;;;cAKtB,MAAM,eAAe;;;;;;;;;;;;;;;cAL3B,MAAM,sBAAsB;;;;;;;;;;;;cAKtB,MAAM,eAAe;;;;;;;;;;;;;;;;;;4EAkC/C,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { defineComponent, h } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ export const ButtonGroup = defineComponent({
4
+ name: "ButtonGroup",
5
+ props: {
6
+ orientation: {
7
+ type: String,
8
+ default: "horizontal",
9
+ },
10
+ attached: { type: Boolean, default: false },
11
+ gap: { type: Number, default: undefined },
12
+ size: { type: String, default: "md" },
13
+ label: { type: String, default: undefined },
14
+ class: { type: String, default: undefined },
15
+ },
16
+ setup(props, { slots, attrs }) {
17
+ return () => {
18
+ const classes = classNames("st-buttonGroup", `st-buttonGroup--${props.orientation}`, props.attached && "st-buttonGroup--attached", props.class);
19
+ const gapValue = props.attached || props.gap == null
20
+ ? undefined
21
+ : `var(--st-spacing-${props.gap}, ${props.gap * 0.25}rem)`;
22
+ const style = gapValue != null
23
+ ? { ...attrs.style, gap: gapValue }
24
+ : attrs.style;
25
+ return h("div", {
26
+ ...attrs,
27
+ class: classes,
28
+ role: "group",
29
+ "aria-label": props.label,
30
+ "data-size": props.size,
31
+ style,
32
+ }, slots.default?.());
33
+ };
34
+ },
35
+ });
36
+ //# sourceMappingURL=ButtonGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonGroup.js","sourceRoot":"","sources":["../src/ButtonGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAkB7C,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE;QACL,WAAW,EAAE;YACX,IAAI,EAAE,MAAsC;YAC5C,OAAO,EAAE,YAAY;SACtB;QACD,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3C,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;QACzC,IAAI,EAAE,EAAE,IAAI,EAAE,MAA+B,EAAE,OAAO,EAAE,IAAI,EAAE;QAC9D,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,KAAK,EAAE;QAC3B,OAAO,GAAG,EAAE;YACV,MAAM,OAAO,GAAG,UAAU,CACxB,gBAAgB,EAChB,mBAAmB,KAAK,CAAC,WAAW,EAAE,EACtC,KAAK,CAAC,QAAQ,IAAI,0BAA0B,EAC5C,KAAK,CAAC,KAAK,CACZ,CAAC;YACF,MAAM,QAAQ,GACZ,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI;gBACjC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,oBAAoB,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC;YAC/D,MAAM,KAAK,GACT,QAAQ,IAAI,IAAI;gBACd,CAAC,CAAC,EAAE,GAAI,KAAK,CAAC,KAAmC,EAAE,GAAG,EAAE,QAAQ,EAAE;gBAClE,CAAC,CAAE,KAAK,CAAC,KAAmC,CAAC;YACjD,OAAO,CAAC,CACN,KAAK,EACL;gBACE,GAAG,KAAK;gBACR,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,KAAK,CAAC,KAAK;gBACzB,WAAW,EAAE,KAAK,CAAC,IAAI;gBACvB,KAAK;aACN,EACD,KAAK,CAAC,OAAO,EAAE,EAAE,CAClB,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,111 @@
1
+ import type { PropType } from "vue";
2
+ export interface CheckboxGroupOption {
3
+ label: string;
4
+ value: string;
5
+ disabled?: boolean;
6
+ helperText?: string;
7
+ }
8
+ export type CheckboxGroupProps = {
9
+ legend: string;
10
+ /** Valeurs cochées (liste contrôlée). */
11
+ value?: string[];
12
+ onChange?: (value: string[]) => void;
13
+ orientation?: "vertical" | "horizontal";
14
+ /** Nom partagé par les cases (utile pour la soumission de formulaire). */
15
+ name?: string;
16
+ options?: CheckboxGroupOption[];
17
+ /** Description optionnelle affichée sous la légende. */
18
+ helperText?: string;
19
+ /** Désactive le groupe entier. */
20
+ disabled?: boolean;
21
+ class?: string;
22
+ };
23
+ export declare const CheckboxGroup: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
24
+ legend: {
25
+ type: StringConstructor;
26
+ required: true;
27
+ };
28
+ value: {
29
+ type: PropType<string[]>;
30
+ default: () => never[];
31
+ };
32
+ onChange: {
33
+ type: PropType<(value: string[]) => void>;
34
+ default: undefined;
35
+ };
36
+ orientation: {
37
+ type: () => "vertical" | "horizontal";
38
+ default: string;
39
+ };
40
+ name: {
41
+ type: StringConstructor;
42
+ default: undefined;
43
+ };
44
+ options: {
45
+ type: PropType<CheckboxGroupOption[]>;
46
+ default: () => never[];
47
+ };
48
+ helperText: {
49
+ type: StringConstructor;
50
+ default: undefined;
51
+ };
52
+ disabled: {
53
+ type: BooleanConstructor;
54
+ default: boolean;
55
+ };
56
+ class: {
57
+ type: StringConstructor;
58
+ default: undefined;
59
+ };
60
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
61
+ [key: string]: any;
62
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "change"[], "change", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
63
+ legend: {
64
+ type: StringConstructor;
65
+ required: true;
66
+ };
67
+ value: {
68
+ type: PropType<string[]>;
69
+ default: () => never[];
70
+ };
71
+ onChange: {
72
+ type: PropType<(value: string[]) => void>;
73
+ default: undefined;
74
+ };
75
+ orientation: {
76
+ type: () => "vertical" | "horizontal";
77
+ default: string;
78
+ };
79
+ name: {
80
+ type: StringConstructor;
81
+ default: undefined;
82
+ };
83
+ options: {
84
+ type: PropType<CheckboxGroupOption[]>;
85
+ default: () => never[];
86
+ };
87
+ helperText: {
88
+ type: StringConstructor;
89
+ default: undefined;
90
+ };
91
+ disabled: {
92
+ type: BooleanConstructor;
93
+ default: boolean;
94
+ };
95
+ class: {
96
+ type: StringConstructor;
97
+ default: undefined;
98
+ };
99
+ }>> & Readonly<{
100
+ onChange?: ((...args: any[]) => any) | undefined;
101
+ }>, {
102
+ class: string;
103
+ name: string;
104
+ onChange: (value: string[]) => void;
105
+ disabled: boolean;
106
+ orientation: "horizontal" | "vertical";
107
+ value: string[];
108
+ helperText: string;
109
+ options: CheckboxGroupOption[];
110
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
111
+ //# sourceMappingURL=CheckboxGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxGroup.d.ts","sourceRoot":"","sources":["../src/CheckboxGroup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAIpC,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;cAIE,QAAQ,CAAC,MAAM,EAAE,CAAC;;;;cAEtB,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;;;;cAIrC,MAAM,UAAU,GAAG,YAAY;;;;;;;;cAKhC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;cAXxB,QAAQ,CAAC,MAAM,EAAE,CAAC;;;;cAEtB,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;;;;cAIrC,MAAM,UAAU,GAAG,YAAY;;;;;;;;cAKhC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;sBATX,MAAM,EAAE,KAAK,IAAI;;;;;;4EA+DxD,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { defineComponent, h } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ import { Checkbox } from "./Checkbox.js";
4
+ export const CheckboxGroup = defineComponent({
5
+ name: "CheckboxGroup",
6
+ props: {
7
+ legend: { type: String, required: true },
8
+ value: { type: Array, default: () => [] },
9
+ onChange: {
10
+ type: Function,
11
+ default: undefined,
12
+ },
13
+ orientation: {
14
+ type: String,
15
+ default: "vertical",
16
+ },
17
+ name: { type: String, default: undefined },
18
+ options: {
19
+ type: Array,
20
+ default: () => [],
21
+ },
22
+ helperText: { type: String, default: undefined },
23
+ disabled: { type: Boolean, default: false },
24
+ class: { type: String, default: undefined },
25
+ },
26
+ emits: ["change"],
27
+ setup(props, { slots, attrs, emit }) {
28
+ function toggle(optionValue, checked) {
29
+ const next = checked
30
+ ? [...props.value, optionValue]
31
+ : props.value.filter((v) => v !== optionValue);
32
+ props.onChange?.(next);
33
+ emit("change", next);
34
+ }
35
+ return () => {
36
+ const classes = classNames("st-checkboxGroup", `st-checkboxGroup--${props.orientation}`, props.class);
37
+ return h("fieldset", { ...attrs, class: classes, disabled: props.disabled }, [
38
+ h("legend", { class: "st-checkboxGroup__legend" }, props.legend),
39
+ props.helperText
40
+ ? h("p", { class: "st-checkboxGroup__help" }, props.helperText)
41
+ : null,
42
+ h("div", { class: "st-checkboxGroup__options" }, [
43
+ ...props.options.map((option) => h(Checkbox, {
44
+ key: option.value,
45
+ label: option.label,
46
+ helperText: option.helperText,
47
+ name: props.name,
48
+ value: option.value,
49
+ checked: props.value.includes(option.value),
50
+ disabled: option.disabled,
51
+ onChange: (event) => toggle(option.value, event.target.checked),
52
+ })),
53
+ slots.default?.(),
54
+ ]),
55
+ ]);
56
+ };
57
+ },
58
+ });
59
+ //# sourceMappingURL=CheckboxGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxGroup.js","sourceRoot":"","sources":["../src/CheckboxGroup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ export type CollapsibleProps = {
2
+ /** État ouvert (contrôlable). */
3
+ open?: boolean;
4
+ title: string;
5
+ disabled?: boolean;
6
+ onToggle?: (open: boolean) => void;
7
+ class?: string;
8
+ };
9
+ export declare const Collapsible: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
10
+ open: {
11
+ type: BooleanConstructor;
12
+ default: undefined;
13
+ };
14
+ title: {
15
+ type: StringConstructor;
16
+ required: true;
17
+ };
18
+ disabled: {
19
+ type: BooleanConstructor;
20
+ default: boolean;
21
+ };
22
+ onToggle: {
23
+ type: () => (open: boolean) => void;
24
+ default: undefined;
25
+ };
26
+ class: {
27
+ type: StringConstructor;
28
+ default: undefined;
29
+ };
30
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
31
+ [key: string]: any;
32
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "toggle"[], "toggle", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
33
+ open: {
34
+ type: BooleanConstructor;
35
+ default: undefined;
36
+ };
37
+ title: {
38
+ type: StringConstructor;
39
+ required: true;
40
+ };
41
+ disabled: {
42
+ type: BooleanConstructor;
43
+ default: boolean;
44
+ };
45
+ onToggle: {
46
+ type: () => (open: boolean) => void;
47
+ default: undefined;
48
+ };
49
+ class: {
50
+ type: StringConstructor;
51
+ default: undefined;
52
+ };
53
+ }>> & Readonly<{
54
+ onToggle?: ((...args: any[]) => any) | undefined;
55
+ }>, {
56
+ open: boolean;
57
+ class: string;
58
+ onToggle: (open: boolean) => void;
59
+ disabled: boolean;
60
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
61
+ //# sourceMappingURL=Collapsible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../src/Collapsible.ts"],"names":[],"mappings":"AAGA,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;AAuBF,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"}