Skip to content

Utils Partagés ​

Objectif ​

Le package @sia-ui/utils rassemble les helpers transverses que tes applications recodent souvent: classes CSS, montants, dates, nombres et texte.

Philosophie ​

  • API petite et prévisible
  • dépendances minimales
  • import global ou ciblé
  • zéro logique métier trop spécifique

Imports ​

Import global:

ts
import { cn, formatCurrency, formatDate, truncate } from "@sia-ui/utils";

Import ciblé:

ts
import { formatCurrency } from "@sia-ui/utils/currency";
import { formatDate } from "@sia-ui/utils/date";
import { truncate } from "@sia-ui/utils/string";

Les modules ​

classname ​

  • cn(...inputs)

But:

  • normaliser la composition de classes dans tous les composants

currency ​

  • formatCurrency
  • formatAmount
  • parseCurrency
  • minorToMajor
  • majorToMinor
  • getCurrencySymbol

But:

  • couvrir les écrans finance, paiement, caisse et reporting

Décision:

  • base Intl.NumberFormat

date ​

  • parseDate
  • diffInDays
  • formatDate
  • formatDateTime
  • formatRelativeDate
  • formatTimeAgo
  • formatDateRange
  • addDays
  • subDays
  • addMonths
  • subMonths
  • addYears
  • subYears
  • getFirstDayOfMonth
  • getLastDayOfMonth
  • isPastDate
  • toIsoDate
  • toDisplayDate

But:

  • unifier le rendu des dates avant d'introduire des besoins plus avancés

Décision:

  • base Intl
  • pas de dépendance date externe

Exemple:

ts
formatTimeAgo(createdAt, { locale: "fr-FR", prefix: "Créée" });
// "Créée il y a 10 minutes"

number ​

  • formatNumber
  • formatPercent
  • clamp
  • round
  • toNumber
  • parseDecimal
  • roundCurrency
  • formatRate
  • safeDivide

string ​

  • truncate
  • capitalize
  • titleCase
  • initials
  • slugify
  • normalizeIdentifier
  • normalizeSpaces
  • maskMiddle
  • isBlank

Règles d'évolution ​

  • ajouter un utilitaire seulement s'il répond à un besoin répété;
  • préférer les sous-modules stables à un gros fichier fourre-tout;
  • documenter et tester chaque nouveau domaine.

Publié sous licence MIT.