design-zystem 1.0.410 → 1.0.412

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1312,7 +1312,7 @@ declare const optimizeImage: (file: File | null | undefined, desiredBaseName: st
1312
1312
 
1313
1313
  declare const getRelativeTime: (date: Date | string) => string;
1314
1314
 
1315
- declare const getElapsedTime: (date: Date | string) => string;
1315
+ declare const getElapsedTime: (date: Date | string, language?: string) => string;
1316
1316
 
1317
1317
  declare const formatTime: (time: string | null | undefined) => string;
1318
1318
 
package/dist/index.d.ts CHANGED
@@ -1312,7 +1312,7 @@ declare const optimizeImage: (file: File | null | undefined, desiredBaseName: st
1312
1312
 
1313
1313
  declare const getRelativeTime: (date: Date | string) => string;
1314
1314
 
1315
- declare const getElapsedTime: (date: Date | string) => string;
1315
+ declare const getElapsedTime: (date: Date | string, language?: string) => string;
1316
1316
 
1317
1317
  declare const formatTime: (time: string | null | undefined) => string;
1318
1318
 
package/dist/index.js CHANGED
@@ -7115,23 +7115,29 @@ var getRelativeTime = (date) => {
7115
7115
 
7116
7116
  // src/utils/date/getElapsedTime.ts
7117
7117
  var UNITS2 = [
7118
- { name: "an", seconds: 31536e3, pluralize: true },
7119
- { name: "mois", seconds: 2592e3, pluralize: false },
7120
- { name: "semaine", seconds: 604800, pluralize: true },
7121
- { name: "jour", seconds: 86400, pluralize: true }
7118
+ { unit: "year", seconds: 31536e3 },
7119
+ { unit: "month", seconds: 2592e3 },
7120
+ { unit: "week", seconds: 604800 },
7121
+ { unit: "day", seconds: 86400 }
7122
7122
  ];
7123
- var getElapsedTime = (date) => {
7123
+ var getElapsedTime = (date, language = "fr") => {
7124
7124
  const elapsedSeconds = Math.floor(
7125
7125
  (Date.now() - new Date(date).getTime()) / 1e3
7126
7126
  );
7127
- for (const unit of UNITS2) {
7128
- const interval = Math.floor(elapsedSeconds / unit.seconds);
7127
+ for (const { unit, seconds } of UNITS2) {
7128
+ const interval = Math.floor(elapsedSeconds / seconds);
7129
7129
  if (interval >= 1) {
7130
- const suffix = unit.pluralize && interval > 1 ? "s" : "";
7131
- return `${interval} ${unit.name}${suffix}`;
7130
+ return new Intl.NumberFormat(language, {
7131
+ style: "unit",
7132
+ unit,
7133
+ unitDisplay: "long"
7134
+ }).format(interval);
7132
7135
  }
7133
7136
  }
7134
- return "aujourd'hui";
7137
+ return new Intl.RelativeTimeFormat(language, { numeric: "auto" }).format(
7138
+ 0,
7139
+ "day"
7140
+ );
7135
7141
  };
7136
7142
 
7137
7143
  // src/utils/date/formatTime.ts
package/dist/index.mjs CHANGED
@@ -6992,23 +6992,29 @@ var getRelativeTime = (date) => {
6992
6992
 
6993
6993
  // src/utils/date/getElapsedTime.ts
6994
6994
  var UNITS2 = [
6995
- { name: "an", seconds: 31536e3, pluralize: true },
6996
- { name: "mois", seconds: 2592e3, pluralize: false },
6997
- { name: "semaine", seconds: 604800, pluralize: true },
6998
- { name: "jour", seconds: 86400, pluralize: true }
6995
+ { unit: "year", seconds: 31536e3 },
6996
+ { unit: "month", seconds: 2592e3 },
6997
+ { unit: "week", seconds: 604800 },
6998
+ { unit: "day", seconds: 86400 }
6999
6999
  ];
7000
- var getElapsedTime = (date) => {
7000
+ var getElapsedTime = (date, language = "fr") => {
7001
7001
  const elapsedSeconds = Math.floor(
7002
7002
  (Date.now() - new Date(date).getTime()) / 1e3
7003
7003
  );
7004
- for (const unit of UNITS2) {
7005
- const interval = Math.floor(elapsedSeconds / unit.seconds);
7004
+ for (const { unit, seconds } of UNITS2) {
7005
+ const interval = Math.floor(elapsedSeconds / seconds);
7006
7006
  if (interval >= 1) {
7007
- const suffix = unit.pluralize && interval > 1 ? "s" : "";
7008
- return `${interval} ${unit.name}${suffix}`;
7007
+ return new Intl.NumberFormat(language, {
7008
+ style: "unit",
7009
+ unit,
7010
+ unitDisplay: "long"
7011
+ }).format(interval);
7009
7012
  }
7010
7013
  }
7011
- return "aujourd'hui";
7014
+ return new Intl.RelativeTimeFormat(language, { numeric: "auto" }).format(
7015
+ 0,
7016
+ "day"
7017
+ );
7012
7018
  };
7013
7019
 
7014
7020
  // src/utils/date/formatTime.ts
@@ -1024,13 +1024,15 @@ interface SidebarUserMenuProps {
1024
1024
  email?: string;
1025
1025
  /** Ligne libre sous `email` (ex. le nom d'un client impersoné) — sur sa propre ligne, tronquée indépendamment, pour les valeurs potentiellement longues. */
1026
1026
  subtitle?: ReactNode;
1027
+ /** `subtitle` n'est affiché que dans le bouton fermé, pas répété en haut du panneau ouvert. Défaut `false` (affiché aux deux endroits). */
1028
+ hideSubtitleInPanel?: boolean;
1027
1029
  avatarSrc?: string | null;
1028
1030
  /** Groupes d'actions séparés par un trait (ex. `[[compte, facturation], [déconnexion]]`), comme le `NavUser` du sidebar shadcn/ui. */
1029
1031
  actionGroups: SidebarUserMenuAction[][];
1030
1032
  className?: string;
1031
1033
  }
1032
1034
  /** Bloc profil du `SidebarFooter` : avatar + nom/e-mail, ouvrant un menu d'actions groupées — calqué sur le `NavUser` du sidebar shadcn/ui (thème sombre propre au `Sidebar`, indépendant du `Popover` clair partagé). Une action avec `subActions` ouvre un panneau secondaire à droite (flyout), sur le même principe que le menu principal. Replié : seul l'avatar reste, le menu s'ouvre toujours au clic. */
1033
- declare const SidebarUserMenu: ({ name, email, subtitle, avatarSrc, actionGroups, className, }: SidebarUserMenuProps) => react.JSX.Element;
1035
+ declare const SidebarUserMenu: ({ name, email, subtitle, hideSubtitleInPanel, avatarSrc, actionGroups, className, }: SidebarUserMenuProps) => react.JSX.Element;
1034
1036
 
1035
1037
  interface TooltipProps extends Omit<ComponentPropsWithoutRef<typeof RadixTooltip.Trigger>, 'content' | 'children'> {
1036
1038
  children: ReactNode;
@@ -1778,7 +1780,7 @@ declare const formatName: (person?: {
1778
1780
 
1779
1781
  declare const getRelativeTime: (date: Date | string) => string;
1780
1782
 
1781
- declare const getElapsedTime: (date: Date | string) => string;
1783
+ declare const getElapsedTime: (date: Date | string, language?: string) => string;
1782
1784
 
1783
1785
  declare const formatTime: (time: string | null | undefined) => string;
1784
1786
 
@@ -1024,13 +1024,15 @@ interface SidebarUserMenuProps {
1024
1024
  email?: string;
1025
1025
  /** Ligne libre sous `email` (ex. le nom d'un client impersoné) — sur sa propre ligne, tronquée indépendamment, pour les valeurs potentiellement longues. */
1026
1026
  subtitle?: ReactNode;
1027
+ /** `subtitle` n'est affiché que dans le bouton fermé, pas répété en haut du panneau ouvert. Défaut `false` (affiché aux deux endroits). */
1028
+ hideSubtitleInPanel?: boolean;
1027
1029
  avatarSrc?: string | null;
1028
1030
  /** Groupes d'actions séparés par un trait (ex. `[[compte, facturation], [déconnexion]]`), comme le `NavUser` du sidebar shadcn/ui. */
1029
1031
  actionGroups: SidebarUserMenuAction[][];
1030
1032
  className?: string;
1031
1033
  }
1032
1034
  /** Bloc profil du `SidebarFooter` : avatar + nom/e-mail, ouvrant un menu d'actions groupées — calqué sur le `NavUser` du sidebar shadcn/ui (thème sombre propre au `Sidebar`, indépendant du `Popover` clair partagé). Une action avec `subActions` ouvre un panneau secondaire à droite (flyout), sur le même principe que le menu principal. Replié : seul l'avatar reste, le menu s'ouvre toujours au clic. */
1033
- declare const SidebarUserMenu: ({ name, email, subtitle, avatarSrc, actionGroups, className, }: SidebarUserMenuProps) => react.JSX.Element;
1035
+ declare const SidebarUserMenu: ({ name, email, subtitle, hideSubtitleInPanel, avatarSrc, actionGroups, className, }: SidebarUserMenuProps) => react.JSX.Element;
1034
1036
 
1035
1037
  interface TooltipProps extends Omit<ComponentPropsWithoutRef<typeof RadixTooltip.Trigger>, 'content' | 'children'> {
1036
1038
  children: ReactNode;
@@ -1778,7 +1780,7 @@ declare const formatName: (person?: {
1778
1780
 
1779
1781
  declare const getRelativeTime: (date: Date | string) => string;
1780
1782
 
1781
- declare const getElapsedTime: (date: Date | string) => string;
1783
+ declare const getElapsedTime: (date: Date | string, language?: string) => string;
1782
1784
 
1783
1785
  declare const formatTime: (time: string | null | undefined) => string;
1784
1786
 
package/dist/ui/index.js CHANGED
@@ -4877,6 +4877,7 @@ var SidebarUserMenu = ({
4877
4877
  name,
4878
4878
  email,
4879
4879
  subtitle,
4880
+ hideSubtitleInPanel = false,
4880
4881
  avatarSrc,
4881
4882
  actionGroups,
4882
4883
  className
@@ -4951,7 +4952,7 @@ var SidebarUserMenu = ({
4951
4952
  }
4952
4953
  ),
4953
4954
  email && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "truncate text-xs text-white/50", children: email }),
4954
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "truncate text-xs text-white/50", children: subtitle })
4955
+ subtitle && !hideSubtitleInPanel && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "truncate text-xs text-white/50", children: subtitle })
4955
4956
  ] })
4956
4957
  ] }),
4957
4958
  actionGroups.map((group, groupIndex) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
@@ -8340,23 +8341,29 @@ var getRelativeTime = (date) => {
8340
8341
 
8341
8342
  // src/utils/date/getElapsedTime.ts
8342
8343
  var UNITS2 = [
8343
- { name: "an", seconds: 31536e3, pluralize: true },
8344
- { name: "mois", seconds: 2592e3, pluralize: false },
8345
- { name: "semaine", seconds: 604800, pluralize: true },
8346
- { name: "jour", seconds: 86400, pluralize: true }
8344
+ { unit: "year", seconds: 31536e3 },
8345
+ { unit: "month", seconds: 2592e3 },
8346
+ { unit: "week", seconds: 604800 },
8347
+ { unit: "day", seconds: 86400 }
8347
8348
  ];
8348
- var getElapsedTime = (date) => {
8349
+ var getElapsedTime = (date, language = "fr") => {
8349
8350
  const elapsedSeconds = Math.floor(
8350
8351
  (Date.now() - new Date(date).getTime()) / 1e3
8351
8352
  );
8352
- for (const unit of UNITS2) {
8353
- const interval = Math.floor(elapsedSeconds / unit.seconds);
8353
+ for (const { unit, seconds } of UNITS2) {
8354
+ const interval = Math.floor(elapsedSeconds / seconds);
8354
8355
  if (interval >= 1) {
8355
- const suffix = unit.pluralize && interval > 1 ? "s" : "";
8356
- return `${interval} ${unit.name}${suffix}`;
8356
+ return new Intl.NumberFormat(language, {
8357
+ style: "unit",
8358
+ unit,
8359
+ unitDisplay: "long"
8360
+ }).format(interval);
8357
8361
  }
8358
8362
  }
8359
- return "aujourd'hui";
8363
+ return new Intl.RelativeTimeFormat(language, { numeric: "auto" }).format(
8364
+ 0,
8365
+ "day"
8366
+ );
8360
8367
  };
8361
8368
 
8362
8369
  // src/utils/date/formatTime.ts
package/dist/ui/index.mjs CHANGED
@@ -4697,6 +4697,7 @@ var SidebarUserMenu = ({
4697
4697
  name,
4698
4698
  email,
4699
4699
  subtitle,
4700
+ hideSubtitleInPanel = false,
4700
4701
  avatarSrc,
4701
4702
  actionGroups,
4702
4703
  className
@@ -4771,7 +4772,7 @@ var SidebarUserMenu = ({
4771
4772
  }
4772
4773
  ),
4773
4774
  email && /* @__PURE__ */ jsx62("span", { className: "truncate text-xs text-white/50", children: email }),
4774
- subtitle && /* @__PURE__ */ jsx62("span", { className: "truncate text-xs text-white/50", children: subtitle })
4775
+ subtitle && !hideSubtitleInPanel && /* @__PURE__ */ jsx62("span", { className: "truncate text-xs text-white/50", children: subtitle })
4775
4776
  ] })
4776
4777
  ] }),
4777
4778
  actionGroups.map((group, groupIndex) => /* @__PURE__ */ jsx62(
@@ -8181,23 +8182,29 @@ var getRelativeTime = (date) => {
8181
8182
 
8182
8183
  // src/utils/date/getElapsedTime.ts
8183
8184
  var UNITS2 = [
8184
- { name: "an", seconds: 31536e3, pluralize: true },
8185
- { name: "mois", seconds: 2592e3, pluralize: false },
8186
- { name: "semaine", seconds: 604800, pluralize: true },
8187
- { name: "jour", seconds: 86400, pluralize: true }
8185
+ { unit: "year", seconds: 31536e3 },
8186
+ { unit: "month", seconds: 2592e3 },
8187
+ { unit: "week", seconds: 604800 },
8188
+ { unit: "day", seconds: 86400 }
8188
8189
  ];
8189
- var getElapsedTime = (date) => {
8190
+ var getElapsedTime = (date, language = "fr") => {
8190
8191
  const elapsedSeconds = Math.floor(
8191
8192
  (Date.now() - new Date(date).getTime()) / 1e3
8192
8193
  );
8193
- for (const unit of UNITS2) {
8194
- const interval = Math.floor(elapsedSeconds / unit.seconds);
8194
+ for (const { unit, seconds } of UNITS2) {
8195
+ const interval = Math.floor(elapsedSeconds / seconds);
8195
8196
  if (interval >= 1) {
8196
- const suffix = unit.pluralize && interval > 1 ? "s" : "";
8197
- return `${interval} ${unit.name}${suffix}`;
8197
+ return new Intl.NumberFormat(language, {
8198
+ style: "unit",
8199
+ unit,
8200
+ unitDisplay: "long"
8201
+ }).format(interval);
8198
8202
  }
8199
8203
  }
8200
- return "aujourd'hui";
8204
+ return new Intl.RelativeTimeFormat(language, { numeric: "auto" }).format(
8205
+ 0,
8206
+ "day"
8207
+ );
8201
8208
  };
8202
8209
 
8203
8210
  // src/utils/date/formatTime.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "design-zystem",
3
- "version": "1.0.410",
3
+ "version": "1.0.412",
4
4
  "description": "A React design system of importable components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",