@sentropic/design-system-svelte 0.34.52 → 0.34.57

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.
@@ -663,7 +663,7 @@
663
663
  color: var(--st-semantic-text-on-emphasis, var(--st-semantic-surface-default));
664
664
  }
665
665
 
666
- @media (max-width: 768px) {
666
+ @media (max-width: 767px) {
667
667
  .st-appChrome__utilityNav {
668
668
  display: none;
669
669
  }
@@ -676,4 +676,10 @@
676
676
  display: flex;
677
677
  }
678
678
  }
679
+
680
+ @media (min-width: 768px) {
681
+ .st-appChrome__burgerTrigger {
682
+ display: none;
683
+ }
684
+ }
679
685
  </style>
@@ -43,6 +43,12 @@
43
43
  actions?: Snippet;
44
44
  /** Contenu du tiroir compact (nav + langue + identité en accordéon). */
45
45
  drawer?: Snippet;
46
+ /**
47
+ * Alignement de la nav desktop.
48
+ * - `"start"` (défaut) : la nav occupe l'espace restant et pousse les actions à droite.
49
+ * - `"center"` : la nav est centrée absolument entre le logo et les actions.
50
+ */
51
+ navAlign?: "start" | "center";
46
52
  class?: string;
47
53
  }
48
54
 
@@ -74,6 +80,7 @@
74
80
  nav,
75
81
  actions,
76
82
  drawer,
83
+ navAlign = "start",
77
84
  class: className,
78
85
  }: AppHeaderProps = $props();
79
86
 
@@ -93,10 +100,18 @@
93
100
  );
94
101
 
95
102
  const classes = () => ["st-appHeader", className].filter(Boolean).join(" ");
103
+ const barClasses = () =>
104
+ ["st-appHeader__bar", navAlign === "center" ? "st-appHeader__bar--navCenter" : null]
105
+ .filter(Boolean)
106
+ .join(" ");
107
+ const navClasses = () =>
108
+ ["st-appHeader__nav", navAlign === "center" ? "st-appHeader__nav--center" : null]
109
+ .filter(Boolean)
110
+ .join(" ");
96
111
  </script>
97
112
 
98
113
  <header class={classes()}>
99
- <div class="st-appHeader__bar">
114
+ <div class={barClasses()}>
100
115
  <!-- Logo SENT à GAUCHE (+ sous-titre). -->
101
116
  {#if logo}
102
117
  <div class="st-appHeader__logo">{@render logo()}</div>
@@ -116,7 +131,7 @@
116
131
 
117
132
  <!-- Nav desktop (masquée en mode compact). -->
118
133
  {#if !compact}
119
- <nav class="st-appHeader__nav" aria-label="Primary">
134
+ <nav class={navClasses()} aria-label="Primary">
120
135
  {#if nav}{@render nav()}{/if}
121
136
  </nav>
122
137
 
@@ -172,7 +187,7 @@
172
187
  align-items: center;
173
188
  display: flex;
174
189
  gap: var(--st-spacing-4, 1rem);
175
- height: 3.5rem;
190
+ height: var(--st-component-appHeader-height, 3.5rem);
176
191
  justify-content: space-between;
177
192
  margin: 0 auto;
178
193
  max-width: 80rem;
@@ -180,6 +195,11 @@
180
195
  width: 100%;
181
196
  }
182
197
 
198
+ /* Quand navAlign="center" : position relative sur la bar pour ancrer la nav. */
199
+ .st-appHeader__bar--navCenter {
200
+ position: relative;
201
+ }
202
+
183
203
  .st-appHeader__nav {
184
204
  align-items: center;
185
205
  display: flex;
@@ -191,6 +211,14 @@
191
211
  min-width: 0;
192
212
  }
193
213
 
214
+ /* Nav centrée absolument : ne participe plus au flux flex. */
215
+ .st-appHeader__nav--center {
216
+ flex: 0 0 auto;
217
+ left: 50%;
218
+ position: absolute;
219
+ transform: translateX(-50%);
220
+ }
221
+
194
222
  .st-appHeader__burger {
195
223
  align-items: center;
196
224
  display: flex;
@@ -41,6 +41,12 @@ export interface AppHeaderProps {
41
41
  actions?: Snippet;
42
42
  /** Contenu du tiroir compact (nav + langue + identité en accordéon). */
43
43
  drawer?: Snippet;
44
+ /**
45
+ * Alignement de la nav desktop.
46
+ * - `"start"` (défaut) : la nav occupe l'espace restant et pousse les actions à droite.
47
+ * - `"center"` : la nav est centrée absolument entre le logo et les actions.
48
+ */
49
+ navAlign?: "start" | "center";
44
50
  class?: string;
45
51
  }
46
52
  declare const AppHeader: import("svelte").Component<AppHeaderProps, {}, "">;
@@ -1 +1 @@
1
- {"version":3,"file":"AppHeader.svelte.d.ts","sourceRoot":"","sources":["../src/lib/AppHeader.svelte.ts"],"names":[],"mappings":"AAGE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0DAA0D;IAC1D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+GH,QAAA,MAAM,SAAS,oDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"AppHeader.svelte.d.ts","sourceRoot":"","sources":["../src/lib/AppHeader.svelte.ts"],"names":[],"mappings":"AAGE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0DAA0D;IAC1D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwHH,QAAA,MAAM,SAAS,oDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
@@ -52,6 +52,7 @@
52
52
  sortBy?: DataTableSort | null;
53
53
  pageSize?: number;
54
54
  page?: number;
55
+ locale?: string;
55
56
  selectAllLabel?: string;
56
57
  selectRowLabel?: string;
57
58
  sortAscendingLabel?: string;
@@ -78,13 +79,14 @@
78
79
  sortBy = $bindable<DataTableSort | null>(null),
79
80
  pageSize,
80
81
  page = $bindable(1),
82
+ locale = "fr-FR",
81
83
  selectAllLabel = "Select all rows",
82
84
  selectRowLabel = "Select row",
83
85
  sortAscendingLabel = "Sorted ascending",
84
86
  sortDescendingLabel = "Sorted descending",
85
87
  sortNoneLabel = "Not sorted",
86
- previousLabel = "Previous",
87
- nextLabel = "Next",
88
+ previousLabel,
89
+ nextLabel,
88
90
  paginationLabel = "Pagination",
89
91
  rangeLabel = ({ start, end, total }) => `${start}–${end} of ${total}`,
90
92
  emptyLabel = "No data",
@@ -93,6 +95,10 @@
93
95
  ...rest
94
96
  }: DataTableProps = $props();
95
97
 
98
+ const isFr = $derived(locale.toLowerCase().startsWith("fr"));
99
+ const resolvedPreviousLabel = $derived(previousLabel ?? (isFr ? "Précédent" : "Previous"));
100
+ const resolvedNextLabel = $derived(nextLabel ?? (isFr ? "Suivant" : "Next"));
101
+
96
102
  const classes = () =>
97
103
  ["st-dataTable", `st-dataTable--${size}`, className].filter(Boolean).join(" ");
98
104
 
@@ -381,7 +387,7 @@
381
387
  disabled={safePage <= 1}
382
388
  onclick={() => goToPage(safePage - 1)}
383
389
  >
384
- {previousLabel}
390
+ {resolvedPreviousLabel}
385
391
  </button>
386
392
  <span class="st-dataTable__pagerStatus" aria-live="polite">
387
393
  {safePage} / {pageCount}
@@ -392,7 +398,7 @@
392
398
  disabled={safePage >= pageCount}
393
399
  onclick={() => goToPage(safePage + 1)}
394
400
  >
395
- {nextLabel}
401
+ {resolvedNextLabel}
396
402
  </button>
397
403
  </nav>
398
404
  </div>
@@ -40,6 +40,7 @@ type DataTableProps = Omit<HTMLTableAttributes, "class"> & {
40
40
  sortBy?: DataTableSort | null;
41
41
  pageSize?: number;
42
42
  page?: number;
43
+ locale?: string;
43
44
  selectAllLabel?: string;
44
45
  selectRowLabel?: string;
45
46
  sortAscendingLabel?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.svelte.d.ts","sourceRoot":"","sources":["../src/lib/DataTable.svelte.ts"],"names":[],"mappings":"AAGE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,YAAY;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,cAAc,GAAG,IAAI,CAAC;CACnF;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKzD,KAAK,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAAG;IACzD,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAwSJ,QAAA,MAAM,SAAS,mFAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"DataTable.svelte.d.ts","sourceRoot":"","sources":["../src/lib/DataTable.svelte.ts"],"names":[],"mappings":"AAGE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,YAAY;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,cAAc,GAAG,IAAI,CAAC;CACnF;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKzD,KAAK,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAAG;IACzD,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA6SJ,QAAA,MAAM,SAAS,mFAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
@@ -5,24 +5,27 @@
5
5
  type InlineLoadingProps = Omit<HTMLAttributes<HTMLDivElement>, "class"> & {
6
6
  label?: string;
7
7
  status?: "active" | "success" | "error" | "inactive";
8
+ locale?: string;
8
9
  class?: string;
9
10
  };
10
11
 
11
- const FALLBACK_LABELS = {
12
- active: "Loading",
13
- success: "Completed",
14
- error: "Error",
15
- inactive: "Inactive"
16
- } as const;
17
-
18
12
  let {
19
13
  label,
20
14
  status = "active",
15
+ locale = "fr-FR",
21
16
  class: className,
22
17
  "aria-label": ariaLabel,
23
18
  ...rest
24
19
  }: InlineLoadingProps = $props();
25
20
 
21
+ const isFr = $derived(locale.toLowerCase().startsWith("fr"));
22
+ const FALLBACK_LABELS = $derived({
23
+ active: isFr ? "Chargement" : "Loading",
24
+ success: isFr ? "Terminé" : "Completed",
25
+ error: isFr ? "Erreur" : "Error",
26
+ inactive: isFr ? "Inactif" : "Inactive",
27
+ });
28
+
26
29
  const classes = () =>
27
30
  ["st-inlineLoading", `st-inlineLoading--${status}`, className].filter(Boolean).join(" ");
28
31
 
@@ -2,6 +2,7 @@ import type { HTMLAttributes } from "svelte/elements";
2
2
  type InlineLoadingProps = Omit<HTMLAttributes<HTMLDivElement>, "class"> & {
3
3
  label?: string;
4
4
  status?: "active" | "success" | "error" | "inactive";
5
+ locale?: string;
5
6
  class?: string;
6
7
  };
7
8
  declare const InlineLoading: import("svelte").Component<InlineLoadingProps, {}, "">;
@@ -1 +1 @@
1
- {"version":3,"file":"InlineLoading.svelte.d.ts","sourceRoot":"","sources":["../src/lib/InlineLoading.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIpD,KAAK,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,GAAG;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA+CJ,QAAA,MAAM,aAAa,wDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"InlineLoading.svelte.d.ts","sourceRoot":"","sources":["../src/lib/InlineLoading.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIpD,KAAK,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,GAAG;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAiDJ,QAAA,MAAM,aAAa,wDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -143,7 +143,7 @@
143
143
  {#if selectedOptions.length === 0}
144
144
  <span class="st-multiSelect__placeholder">{resolvedPlaceholder}</span>
145
145
  {:else}
146
- <span class="st-multiSelect__count">{selectedOptions.length} selected</span>
146
+ <span class="st-multiSelect__count">{selectedOptions.length} {isFr ? "sélectionné(s)" : "selected"}</span>
147
147
  {/if}
148
148
  <span class="st-multiSelect__caret" aria-hidden="true">
149
149
  <ChevronDown
@@ -8,6 +8,7 @@
8
8
  message?: string;
9
9
  dismissible?: boolean;
10
10
  dismissLabel?: string;
11
+ locale?: string;
11
12
  onDismiss?: () => void;
12
13
  class?: string;
13
14
  actions?: Snippet;
@@ -19,7 +20,8 @@
19
20
  title,
20
21
  message,
21
22
  dismissible = false,
22
- dismissLabel = "Dismiss",
23
+ dismissLabel,
24
+ locale = "fr-FR",
23
25
  onDismiss,
24
26
  class: className,
25
27
  actions,
@@ -27,6 +29,9 @@
27
29
  ...rest
28
30
  }: NotificationProps = $props();
29
31
 
32
+ const isFr = $derived(locale.toLowerCase().startsWith("fr"));
33
+ const resolvedDismissLabel = $derived(dismissLabel ?? (isFr ? "Fermer" : "Dismiss"));
34
+
30
35
  const classes = () =>
31
36
  ["st-notification", `st-notification--${tone}`, className].filter(Boolean).join(" ");
32
37
 
@@ -54,8 +59,8 @@
54
59
  <button
55
60
  type="button"
56
61
  class="st-notification__close"
57
- aria-label={dismissLabel}
58
- title={dismissLabel}
62
+ aria-label={resolvedDismissLabel}
63
+ title={resolvedDismissLabel}
59
64
  onclick={onDismissClick}
60
65
  >
61
66
  ×
@@ -6,6 +6,7 @@ type NotificationProps = Omit<HTMLAttributes<HTMLElement>, "class"> & {
6
6
  message?: string;
7
7
  dismissible?: boolean;
8
8
  dismissLabel?: string;
9
+ locale?: string;
9
10
  onDismiss?: () => void;
10
11
  class?: string;
11
12
  actions?: Snippet;
@@ -1 +1 @@
1
- {"version":3,"file":"Notification.svelte.d.ts","sourceRoot":"","sources":["../src/lib/Notification.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpD,KAAK,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG;IACpE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAsDJ,QAAA,MAAM,YAAY,uDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"Notification.svelte.d.ts","sourceRoot":"","sources":["../src/lib/Notification.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpD,KAAK,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG;IACpE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AA0DJ,QAAA,MAAM,YAAY,uDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -4,6 +4,7 @@
4
4
  type PaginationProps = Omit<HTMLAttributes<HTMLElement>, "class"> & {
5
5
  page: number;
6
6
  pageCount: number;
7
+ locale?: string;
7
8
  previousLabel?: string;
8
9
  nextLabel?: string;
9
10
  class?: string;
@@ -13,13 +14,18 @@
13
14
  let {
14
15
  page,
15
16
  pageCount,
16
- previousLabel = "Previous",
17
- nextLabel = "Next",
17
+ locale = "fr-FR",
18
+ previousLabel,
19
+ nextLabel,
18
20
  class: className,
19
21
  onpagechange,
20
22
  ...rest
21
23
  }: PaginationProps = $props();
22
24
 
25
+ const isFr = $derived(locale.toLowerCase().startsWith("fr"));
26
+ const resolvedPreviousLabel = $derived(previousLabel ?? (isFr ? "Précédent" : "Previous"));
27
+ const resolvedNextLabel = $derived(nextLabel ?? (isFr ? "Suivant" : "Next"));
28
+
23
29
  const classes = () => ["st-pagination", className].filter(Boolean).join(" ");
24
30
  const pages = () => Array.from({ length: pageCount }, (_, index) => index + 1);
25
31
  const go = (target: number) => {
@@ -28,7 +34,7 @@
28
34
  </script>
29
35
 
30
36
  <nav {...rest} class={classes()} aria-label="Pagination">
31
- <button type="button" disabled={page <= 1} onclick={() => go(page - 1)}>{previousLabel}</button>
37
+ <button type="button" disabled={page <= 1} onclick={() => go(page - 1)}>{resolvedPreviousLabel}</button>
32
38
  {#each pages() as item}
33
39
  <button
34
40
  type="button"
@@ -40,7 +46,7 @@
40
46
  {item}
41
47
  </button>
42
48
  {/each}
43
- <button type="button" disabled={page >= pageCount} onclick={() => go(page + 1)}>{nextLabel}</button>
49
+ <button type="button" disabled={page >= pageCount} onclick={() => go(page + 1)}>{resolvedNextLabel}</button>
44
50
  </nav>
45
51
 
46
52
  <style>
@@ -2,6 +2,7 @@ import type { HTMLAttributes } from "svelte/elements";
2
2
  type PaginationProps = Omit<HTMLAttributes<HTMLElement>, "class"> & {
3
3
  page: number;
4
4
  pageCount: number;
5
+ locale?: string;
5
6
  previousLabel?: string;
6
7
  nextLabel?: string;
7
8
  class?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.svelte.d.ts","sourceRoot":"","sources":["../src/lib/Pagination.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpD,KAAK,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAoCJ,QAAA,MAAM,UAAU,qDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"Pagination.svelte.d.ts","sourceRoot":"","sources":["../src/lib/Pagination.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpD,KAAK,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAyCJ,QAAA,MAAM,UAAU,qDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
@@ -6,6 +6,8 @@
6
6
  width?: string;
7
7
  heading?: boolean;
8
8
  paragraph?: boolean;
9
+ locale?: string;
10
+ loadingLabel?: string;
9
11
  class?: string;
10
12
  };
11
13
 
@@ -14,10 +16,15 @@
14
16
  width,
15
17
  heading = false,
16
18
  paragraph = false,
19
+ locale = "fr-FR",
20
+ loadingLabel,
17
21
  class: className,
18
22
  ...rest
19
23
  }: SkeletonTextProps = $props();
20
24
 
25
+ const isFr = $derived(locale.toLowerCase().startsWith("fr"));
26
+ const resolvedLoadingLabel = $derived(loadingLabel ?? (isFr ? "Chargement…" : "Loading…"));
27
+
21
28
  const wrapperClasses = () => ["st-skeleton", className].filter(Boolean).join(" ");
22
29
  const lineClasses = () =>
23
30
  ["st-skeleton__line", heading ? "st-skeleton__line--heading" : null].filter(Boolean).join(" ");
@@ -30,7 +37,7 @@
30
37
  }
31
38
  </script>
32
39
 
33
- <div {...rest} class={wrapperClasses()} role="status" aria-label="Loading…" aria-busy="true">
40
+ <div {...rest} class={wrapperClasses()} role="status" aria-label={resolvedLoadingLabel} aria-busy="true">
34
41
  {#each Array.from({ length: lineCount() }) as _, i (i)}
35
42
  <span class={lineClasses()} style={lineWidth(i, lineCount()) ? `width:${lineWidth(i, lineCount())}` : undefined}></span>
36
43
  {/each}
@@ -4,6 +4,8 @@ type SkeletonTextProps = Omit<HTMLAttributes<HTMLDivElement>, "class"> & {
4
4
  width?: string;
5
5
  heading?: boolean;
6
6
  paragraph?: boolean;
7
+ locale?: string;
8
+ loadingLabel?: string;
7
9
  class?: string;
8
10
  };
9
11
  declare const SkeletonText: import("svelte").Component<SkeletonTextProps, {}, "">;
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonText.svelte.d.ts","sourceRoot":"","sources":["../src/lib/SkeletonText.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpD,KAAK,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,GAAG;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAoCJ,QAAA,MAAM,YAAY,uDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"SkeletonText.svelte.d.ts","sourceRoot":"","sources":["../src/lib/SkeletonText.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpD,KAAK,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,GAAG;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAyCJ,QAAA,MAAM,YAAY,uDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentropic/design-system-svelte",
3
- "version": "0.34.52",
3
+ "version": "0.34.57",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"