@sentropic/design-system-svelte 0.34.51 → 0.34.56

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.
@@ -4,6 +4,7 @@
4
4
 
5
5
  type CopyButtonProps = Omit<HTMLButtonAttributes, "class" | "type"> & {
6
6
  value: string;
7
+ locale?: string;
7
8
  label?: string;
8
9
  copiedLabel?: string;
9
10
  feedbackTimeoutMs?: number;
@@ -15,8 +16,9 @@
15
16
 
16
17
  let {
17
18
  value,
18
- label = "Copy",
19
- copiedLabel = "Copied",
19
+ locale = "fr-FR",
20
+ label,
21
+ copiedLabel,
20
22
  feedbackTimeoutMs = 1500,
21
23
  size = "md",
22
24
  onCopied,
@@ -26,6 +28,10 @@
26
28
  ...rest
27
29
  }: CopyButtonProps = $props();
28
30
 
31
+ const isFr = $derived(locale.toLowerCase().startsWith("fr"));
32
+ const resolvedLabel = $derived(label ?? (isFr ? "Copier" : "Copy"));
33
+ const resolvedCopiedLabel = $derived(copiedLabel ?? (isFr ? "Copié" : "Copied"));
34
+
29
35
  let copied = $state(false);
30
36
  let timeoutId: ReturnType<typeof setTimeout> | undefined;
31
37
 
@@ -65,7 +71,7 @@
65
71
  <Copy size={14} strokeWidth={2} aria-hidden="true" />
66
72
  {/if}
67
73
  </span>
68
- <span class="st-copyButton__label">{copied ? copiedLabel : label}</span>
74
+ <span class="st-copyButton__label">{copied ? resolvedCopiedLabel : resolvedLabel}</span>
69
75
  </button>
70
76
 
71
77
  <style>
@@ -1,6 +1,7 @@
1
1
  import type { HTMLButtonAttributes } from "svelte/elements";
2
2
  type CopyButtonProps = Omit<HTMLButtonAttributes, "class" | "type"> & {
3
3
  value: string;
4
+ locale?: string;
4
5
  label?: string;
5
6
  copiedLabel?: string;
6
7
  feedbackTimeoutMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.svelte.d.ts","sourceRoot":"","sources":["../src/lib/CopyButton.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,KAAK,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA0DJ,QAAA,MAAM,UAAU,qDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"CopyButton.svelte.d.ts","sourceRoot":"","sources":["../src/lib/CopyButton.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,KAAK,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA+DJ,QAAA,MAAM,UAAU,qDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,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"}
@@ -12,6 +12,7 @@
12
12
  label: string;
13
13
  options: DropdownOption[];
14
14
  value?: string;
15
+ locale?: string;
15
16
  placeholder?: string;
16
17
  open?: boolean;
17
18
  class?: string;
@@ -22,13 +23,17 @@
22
23
  label,
23
24
  options,
24
25
  value,
25
- placeholder = "Select",
26
+ locale = "fr-FR",
27
+ placeholder,
26
28
  open = false,
27
29
  class: className,
28
30
  onselect,
29
31
  ...rest
30
32
  }: DropdownProps = $props();
31
33
 
34
+ const isFr = $derived(locale.toLowerCase().startsWith("fr"));
35
+ const resolvedPlaceholder = $derived(placeholder ?? (isFr ? "Sélectionner" : "Select"));
36
+
32
37
  let host: HTMLDivElement | undefined = $state();
33
38
  let buttonEl: HTMLButtonElement | undefined = $state();
34
39
  let expanded = $state(false);
@@ -38,7 +43,7 @@
38
43
  let listPos = $state({ top: 0, left: 0, width: 0 });
39
44
 
40
45
  const classes = () => ["st-dropdown", className].filter(Boolean).join(" ");
41
- const selectedLabel = () => options.find((option) => option.value === currentValue)?.label ?? placeholder;
46
+ const selectedLabel = () => options.find((option) => option.value === currentValue)?.label ?? resolvedPlaceholder;
42
47
 
43
48
  function updateListPos() {
44
49
  if (!buttonEl) return;
@@ -8,6 +8,7 @@ type DropdownProps = Omit<HTMLAttributes<HTMLDivElement>, "class" | "onselect">
8
8
  label: string;
9
9
  options: DropdownOption[];
10
10
  value?: string;
11
+ locale?: string;
11
12
  placeholder?: string;
12
13
  open?: boolean;
13
14
  class?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.svelte.d.ts","sourceRoot":"","sources":["../src/lib/Dropdown.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,KAAK,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,GAAG;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AA4GJ,QAAA,MAAM,QAAQ,mDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Dropdown.svelte.d.ts","sourceRoot":"","sources":["../src/lib/Dropdown.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,KAAK,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,GAAG;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AAgHJ,QAAA,MAAM,QAAQ,mDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,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"}
@@ -18,6 +18,7 @@
18
18
  size?: "sm" | "md" | "lg";
19
19
  options: MultiSelectOption[];
20
20
  selected?: string[];
21
+ locale?: string;
21
22
  placeholder?: string;
22
23
  searchPlaceholder?: string;
23
24
  noResultsLabel?: string;
@@ -37,11 +38,12 @@
37
38
  size = "md",
38
39
  options,
39
40
  selected = $bindable([]),
40
- placeholder = "Select items",
41
- searchPlaceholder = "Filter",
42
- noResultsLabel = "No results",
43
- toggleLabel = "Toggle options",
44
- removeLabel = "Remove",
41
+ locale = "fr-FR",
42
+ placeholder,
43
+ searchPlaceholder,
44
+ noResultsLabel,
45
+ toggleLabel,
46
+ removeLabel,
45
47
  listLabel,
46
48
  disabled = false,
47
49
  class: className,
@@ -49,6 +51,13 @@
49
51
  ...rest
50
52
  }: MultiSelectProps = $props();
51
53
 
54
+ const isFr = $derived(locale.toLowerCase().startsWith("fr"));
55
+ const resolvedPlaceholder = $derived(placeholder ?? (isFr ? "Sélectionner des éléments" : "Select items"));
56
+ const resolvedSearchPlaceholder = $derived(searchPlaceholder ?? (isFr ? "Filtrer" : "Filter"));
57
+ const resolvedNoResultsLabel = $derived(noResultsLabel ?? (isFr ? "Aucun résultat" : "No results"));
58
+ const resolvedToggleLabel = $derived(toggleLabel ?? (isFr ? "Afficher les options" : "Toggle options"));
59
+ const resolvedRemoveLabel = $derived(removeLabel ?? (isFr ? "Supprimer" : "Remove"));
60
+
52
61
  let expanded = $state(false);
53
62
  let query = $state("");
54
63
 
@@ -112,7 +121,7 @@
112
121
  <button
113
122
  type="button"
114
123
  class="st-multiSelect__tagRemove"
115
- aria-label={`${removeLabel} ${option.label}`}
124
+ aria-label={`${resolvedRemoveLabel} ${option.label}`}
116
125
  {disabled}
117
126
  onclick={() => removeOption(option.value)}
118
127
  >
@@ -132,9 +141,9 @@
132
141
  onclick={toggleOpen}
133
142
  >
134
143
  {#if selectedOptions.length === 0}
135
- <span class="st-multiSelect__placeholder">{placeholder}</span>
144
+ <span class="st-multiSelect__placeholder">{resolvedPlaceholder}</span>
136
145
  {:else}
137
- <span class="st-multiSelect__count">{selectedOptions.length} selected</span>
146
+ <span class="st-multiSelect__count">{selectedOptions.length} {isFr ? "sélectionné(s)" : "selected"}</span>
138
147
  {/if}
139
148
  <span class="st-multiSelect__caret" aria-hidden="true">
140
149
  <ChevronDown
@@ -143,7 +152,7 @@
143
152
  strokeWidth={2.25}
144
153
  />
145
154
  </span>
146
- <span class="st-visually-hidden">{toggleLabel}</span>
155
+ <span class="st-visually-hidden">{resolvedToggleLabel}</span>
147
156
  </button>
148
157
  </span>
149
158
  {#if expanded}
@@ -151,13 +160,13 @@
151
160
  <input
152
161
  type="search"
153
162
  class="st-multiSelect__search"
154
- placeholder={searchPlaceholder}
163
+ placeholder={resolvedSearchPlaceholder}
155
164
  bind:value={query}
156
- aria-label={searchPlaceholder}
165
+ aria-label={resolvedSearchPlaceholder}
157
166
  />
158
167
  <div class="st-multiSelect__list" role="listbox" aria-label={listLabel ?? label ?? "Options"} aria-multiselectable="true">
159
168
  {#if filtered.length === 0}
160
- <div class="st-multiSelect__empty">{noResultsLabel}</div>
169
+ <div class="st-multiSelect__empty">{resolvedNoResultsLabel}</div>
161
170
  {:else}
162
171
  {#each filtered as option (option.value)}
163
172
  {@const isSelected = selected.includes(option.value)}
@@ -12,6 +12,7 @@ type MultiSelectProps = Omit<HTMLAttributes<HTMLDivElement>, "class" | "onchange
12
12
  size?: "sm" | "md" | "lg";
13
13
  options: MultiSelectOption[];
14
14
  selected?: string[];
15
+ locale?: string;
15
16
  placeholder?: string;
16
17
  searchPlaceholder?: string;
17
18
  noResultsLabel?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelect.svelte.d.ts","sourceRoot":"","sources":["../src/lib/MultiSelect.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpD,KAAK,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,GAAG;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACzC,CAAC;AAqIJ,QAAA,MAAM,WAAW,8DAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"MultiSelect.svelte.d.ts","sourceRoot":"","sources":["../src/lib/MultiSelect.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpD,KAAK,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,GAAG;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACzC,CAAC;AA6IJ,QAAA,MAAM,WAAW,8DAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -87,8 +87,8 @@
87
87
  selected = $bindable(false),
88
88
  disabled = false,
89
89
  href,
90
- leading,
91
- trailing,
90
+ leading: leadingProp,
91
+ trailing: trailingProp,
92
92
  divider = false,
93
93
  class: className
94
94
  }: NavItemProps = $props();
@@ -150,8 +150,8 @@
150
150
  caption={caption ? captionSnippet : undefined}
151
151
  >
152
152
  {#snippet leading()}
153
- {#if leading}
154
- {@render leading()}
153
+ {#if leadingProp}
154
+ {@render leadingProp()}
155
155
  {:else if swatch}
156
156
  <!-- Tête : ColorSwatch pour une couleur arbitraire, sinon StatusDot pour
157
157
  un ton sémantique. Décoratif → aria géré par la primitive. -->
@@ -168,8 +168,8 @@
168
168
  {/snippet}
169
169
 
170
170
  {#snippet trailing()}
171
- {#if trailing}
172
- {@render trailing()}
171
+ {#if trailingProp}
172
+ {@render trailingProp()}
173
173
  {:else if count != null}
174
174
  <!-- Queue : bulle de compte. Badge shape="circle" size="sm" (tabular-nums),
175
175
  ton sémantique aligné sur le `status` de la rangée. aria-label explicite. -->
@@ -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,7 @@
6
6
  page: number;
7
7
  pageCount: number;
8
8
  siblings?: number;
9
+ locale?: string;
9
10
  label?: string;
10
11
  previousLabel?: string;
11
12
  nextLabel?: string;
@@ -17,14 +18,19 @@
17
18
  page = $bindable(1),
18
19
  pageCount,
19
20
  siblings = 1,
21
+ locale = "fr-FR",
20
22
  label = "Pagination",
21
- previousLabel = "Previous page",
22
- nextLabel = "Next page",
23
+ previousLabel,
24
+ nextLabel,
23
25
  class: className,
24
26
  onPageChange,
25
27
  ...rest
26
28
  }: PaginationNavProps = $props();
27
29
 
30
+ const isFr = $derived(locale.toLowerCase().startsWith("fr"));
31
+ const resolvedPreviousLabel = $derived(previousLabel ?? (isFr ? "Page précédente" : "Previous page"));
32
+ const resolvedNextLabel = $derived(nextLabel ?? (isFr ? "Page suivante" : "Next page"));
33
+
28
34
  type Slot = number | "ellipsis-start" | "ellipsis-end";
29
35
 
30
36
  const classes = () => ["st-paginationNav", className].filter(Boolean).join(" ");
@@ -86,7 +92,7 @@
86
92
  <button
87
93
  type="button"
88
94
  class="st-paginationNav__nav"
89
- aria-label={previousLabel}
95
+ aria-label={resolvedPreviousLabel}
90
96
  disabled={page <= 1 || pageCount <= 0}
91
97
  onclick={() => go(page - 1)}
92
98
  >
@@ -117,7 +123,7 @@
117
123
  <button
118
124
  type="button"
119
125
  class="st-paginationNav__nav"
120
- aria-label={nextLabel}
126
+ aria-label={resolvedNextLabel}
121
127
  disabled={page >= pageCount || pageCount <= 0}
122
128
  onclick={() => go(page + 1)}
123
129
  >
@@ -3,6 +3,7 @@ type PaginationNavProps = Omit<HTMLAttributes<HTMLElement>, "class"> & {
3
3
  page: number;
4
4
  pageCount: number;
5
5
  siblings?: number;
6
+ locale?: string;
6
7
  label?: string;
7
8
  previousLabel?: string;
8
9
  nextLabel?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"PaginationNav.svelte.d.ts","sourceRoot":"","sources":["../src/lib/PaginationNav.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIpD,KAAK,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,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;AA0GJ,QAAA,MAAM,aAAa,4DAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"PaginationNav.svelte.d.ts","sourceRoot":"","sources":["../src/lib/PaginationNav.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIpD,KAAK,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,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;AA+GJ,QAAA,MAAM,aAAa,4DAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,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.51",
3
+ "version": "0.34.56",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"