@wakastellar/ui 0.5.0 → 1.0.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 (62) hide show
  1. package/dist/blocks/index.d.ts +0 -39
  2. package/dist/components/DataTable/DataTable.d.ts +1 -1
  3. package/dist/components/DataTable/DataTableAdvanced.d.ts +1 -1
  4. package/dist/components/DataTable/DataTableFilters.d.ts +3 -3
  5. package/dist/components/DataTable/DataTableSelection.d.ts +12 -17
  6. package/dist/components/DataTable/hooks/useDataTable.d.ts +1 -1
  7. package/dist/components/DataTable/hooks/useDataTableAdvanced.d.ts +6 -6
  8. package/dist/components/DataTable/hooks/useDataTableExport.d.ts +4 -15
  9. package/dist/components/DataTable/hooks/useDataTableImport.d.ts +2 -16
  10. package/dist/components/DataTable/hooks/useDataTableVirtualization.d.ts +1 -1
  11. package/dist/components/DataTable/index.d.ts +2 -48
  12. package/dist/components/DataTable/types.d.ts +25 -417
  13. package/dist/components/command/index.d.ts +2 -6
  14. package/dist/components/index.d.ts +0 -26
  15. package/dist/components/language-selector/index.d.ts +1 -19
  16. package/dist/components/theme-selector/index.d.ts +0 -10
  17. package/dist/components/typography/index.d.ts +1 -1
  18. package/dist/components/waka-spinner/index.d.ts +21 -57
  19. package/dist/components/waka-theme-creator/index.d.ts +22 -73
  20. package/dist/components/waka-theme-manager/index.d.ts +1 -14
  21. package/dist/context/admincrumb-context.d.ts +1 -118
  22. package/dist/context/index.d.ts +2 -2
  23. package/dist/context/language-context.d.ts +23 -177
  24. package/dist/context/theme-context.d.ts +3 -4
  25. package/dist/context/theme-provider.d.ts +19 -57
  26. package/dist/context/waka-provider.d.ts +7 -50
  27. package/dist/hooks/use-toast.d.ts +0 -116
  28. package/dist/hooks/use-translation.d.ts +1 -24
  29. package/dist/hooks/useToast.d.ts +0 -82
  30. package/dist/index.cjs.js +36 -61
  31. package/dist/index.d.ts +3 -35
  32. package/dist/index.es.js +7873 -23890
  33. package/dist/types/provider.d.ts +17 -48
  34. package/dist/ui.css +1 -1
  35. package/dist/utils/cn.d.ts +1 -15
  36. package/dist/utils/datetime-helpers.d.ts +33 -241
  37. package/dist/utils/index.d.ts +0 -4
  38. package/dist/utils/theme-loader.d.ts +30 -140
  39. package/dist/utils/tweak.d.ts +1 -14
  40. package/package.json +40 -107
  41. package/src/styles/datepicker.css +2 -9
  42. package/src/styles/globals.css +4 -4
  43. package/dist/charts.cjs.js +0 -1
  44. package/dist/charts.es.js +0 -16
  45. package/dist/cn-CAc3sAGM.js +0 -21
  46. package/dist/cn-zrNBeCrC.js +0 -1
  47. package/dist/components/DataTable/DataTableGroupRow.d.ts +0 -35
  48. package/dist/components/DataTable/DataTableRow.d.ts +0 -30
  49. package/dist/components/WakaKeycloakLogin/WakaKeycloakLogin.d.ts +0 -3
  50. package/dist/components/WakaKeycloakLogin/index.d.ts +0 -2
  51. package/dist/components/WakaKeycloakLogin/types.d.ts +0 -56
  52. package/dist/export.cjs.js +0 -1
  53. package/dist/export.es.js +0 -5
  54. package/dist/index-CENPre_9.js +0 -466
  55. package/dist/index-CHLjUBPo.js +0 -1
  56. package/dist/rich-text.cjs.js +0 -1
  57. package/dist/rich-text.es.js +0 -4
  58. package/dist/types-Bjy1Hy76.js +0 -1111
  59. package/dist/types-CHv7a1SP.js +0 -1
  60. package/dist/useDataTableImport-DqeEL4GC.js +0 -124
  61. package/dist/useDataTableImport-sQwBFAJ_.js +0 -775
  62. package/dist/utils/logger.d.ts +0 -60
@@ -1,160 +1,62 @@
1
1
  import { DatePreset, DateRange } from '../components/waka-datetime-picker';
2
2
  /**
3
- * Crée des presets pour les dates courantes (aujourd'hui, hier, semaine, mois, etc.)
4
- *
5
- * @param locale - Locale date-fns pour le calcul des semaines (défaut: fr)
6
- * @returns Tableau de presets configurés
7
- *
8
- * @example
9
- * ```tsx
10
- * <WakaDateTimePicker presets={createCommonPresets()} />
11
- * ```
3
+ * Créer des presets de dates courantes
12
4
  */
13
5
  export declare const createCommonPresets: (locale?: import('date-fns').Locale) => DatePreset[];
14
6
  /**
15
- * Crée des presets pour les 7, 30 et 90 derniers jours
16
- *
17
- * @returns Tableau de presets pour les périodes récentes
18
- *
19
- * @example
20
- * ```tsx
21
- * const presets = [...createCommonPresets(), ...createLastDaysPresets()]
22
- * ```
7
+ * Créer des presets pour les 7, 30, 90 derniers jours
23
8
  */
24
9
  export declare const createLastDaysPresets: () => DatePreset[];
25
10
  /**
26
- * Crée des presets pour les N prochains jours
27
- *
28
- * @param days - Tableau des nombres de jours (ex: [7, 14, 30])
29
- * @returns Tableau de presets pour les périodes futures
30
- *
31
- * @example
32
- * ```tsx
33
- * const futurePresets = createNextDaysPresets([7, 14, 30])
34
- * // Génère: "7 prochains jours", "14 prochains jours", "30 prochains jours"
35
- * ```
11
+ * Créer des presets pour les N prochains jours
36
12
  */
37
13
  export declare const createNextDaysPresets: (days: number[]) => DatePreset[];
38
14
  /**
39
- * Crée un preset de date personnalisé
40
- *
41
- * @param label - Libellé du preset
42
- * @param dateOrRange - Date, DateRange, ou fonction retournant l'un ou l'autre
43
- * @returns Preset configuré
44
- *
45
- * @example
46
- * ```tsx
47
- * // Preset avec date fixe
48
- * const christmas = createCustomPreset("Noël", new Date(2025, 11, 25))
49
- *
50
- * // Preset avec range dynamique
51
- * const fiscalYear = createCustomPreset("Année fiscale", () => ({
52
- * from: new Date(2025, 3, 1),
53
- * to: new Date(2026, 2, 31)
54
- * }))
55
- * ```
15
+ * Créer un preset personnalisé
56
16
  */
57
17
  export declare const createCustomPreset: (label: string, dateOrRange: Date | DateRange | (() => Date) | (() => DateRange)) => DatePreset;
58
18
  /**
59
- * Vérifie si une date est dans le futur (après aujourd'hui à minuit)
60
- *
61
- * @param date - Date à vérifier
62
- * @returns true si la date est dans le futur
19
+ * Validation : date dans le futur
63
20
  */
64
21
  export declare const isFutureDate: (date: Date) => boolean;
65
22
  /**
66
- * Vérifie si une date est dans le passé (avant aujourd'hui à minuit)
67
- *
68
- * @param date - Date à vérifier
69
- * @returns true si la date est dans le passé
23
+ * Validation : date dans le passé
70
24
  */
71
25
  export declare const isPastDate: (date: Date) => boolean;
72
26
  /**
73
- * Vérifie si une date correspond à aujourd'hui
74
- *
75
- * @param date - Date à vérifier
76
- * @returns true si la date est aujourd'hui
27
+ * Validation : date est aujourd'hui
77
28
  */
78
29
  export declare const isToday: (date: Date) => boolean;
79
30
  /**
80
- * Vérifie si une date est un jour de semaine (lundi à vendredi)
81
- *
82
- * @param date - Date à vérifier
83
- * @returns true si la date est un jour ouvrable
31
+ * Validation : date est un jour de semaine (lundi-vendredi)
84
32
  */
85
33
  export declare const isWeekday: (date: Date) => boolean;
86
34
  /**
87
- * Vérifie si une date tombe un weekend (samedi ou dimanche)
88
- *
89
- * @param date - Date à vérifier
90
- * @returns true si la date est un weekend
35
+ * Validation : date est un weekend (samedi-dimanche)
91
36
  */
92
37
  export declare const isWeekend: (date: Date) => boolean;
93
38
  /**
94
- * Vérifie si une date est un jour férié
95
- *
96
- * @param date - Date à vérifier
97
- * @param holidays - Liste des jours fériés
98
- * @returns true si la date est un jour férié
99
- *
100
- * @example
101
- * ```tsx
102
- * const holidays = getFrenchHolidays(2025)
103
- * if (isHoliday(selectedDate, holidays)) {
104
- * console.log("Jour férié!")
105
- * }
106
- * ```
39
+ * Validation : date est dans une liste de jours fériés
107
40
  */
108
41
  export declare const isHoliday: (date: Date, holidays: Date[]) => boolean;
109
42
  /**
110
- * Vérifie si une date est comprise dans un intervalle
111
- *
112
- * @param date - Date à vérifier
113
- * @param start - Début de l'intervalle
114
- * @param end - Fin de l'intervalle
115
- * @returns true si la date est dans l'intervalle (bornes incluses)
43
+ * Validation : date est dans un intervalle
116
44
  */
117
45
  export declare const isDateInRange: (date: Date, start: Date, end: Date) => boolean;
118
46
  /**
119
- * Crée un validateur d'âge minimum
120
- *
121
- * @param minAge - Âge minimum requis en années
122
- * @returns Fonction de validation retournant true ou un message d'erreur
123
- *
124
- * @example
125
- * ```tsx
126
- * const validateAdult = createMinAgeValidator(18)
127
- * const result = validateAdult(birthdate)
128
- * if (result !== true) console.error(result)
129
- * ```
47
+ * Validation : âge minimum
130
48
  */
131
49
  export declare const createMinAgeValidator: (minAge: number) => (birthdate: Date) => boolean | string;
132
50
  /**
133
- * Crée un validateur d'âge maximum
134
- *
135
- * @param maxAge - Âge maximum autorisé en années
136
- * @returns Fonction de validation retournant true ou un message d'erreur
51
+ * Validation : âge maximum
137
52
  */
138
53
  export declare const createMaxAgeValidator: (maxAge: number) => (birthdate: Date) => boolean | string;
139
54
  /**
140
- * Valide qu'une date n'est pas expirée (n'est pas dans le passé)
141
- *
142
- * @param date - Date à vérifier
143
- * @returns true si valide, message d'erreur sinon
55
+ * Validation : date d'expiration
144
56
  */
145
57
  export declare const isNotExpired: (date: Date) => boolean | string;
146
58
  /**
147
- * Calcule la durée entre deux dates en jours, semaines et mois
148
- *
149
- * @param from - Date de début
150
- * @param to - Date de fin
151
- * @returns Objet avec les durées en différentes unités
152
- *
153
- * @example
154
- * ```tsx
155
- * const duration = calculateDuration(startDate, endDate)
156
- * console.log(`${duration.days} jours (${duration.weeks} semaines)`)
157
- * ```
59
+ * Calculer la durée entre deux dates
158
60
  */
159
61
  export declare const calculateDuration: (from: Date, to: Date) => {
160
62
  days: number;
@@ -162,184 +64,74 @@ export declare const calculateDuration: (from: Date, to: Date) => {
162
64
  months: number;
163
65
  };
164
66
  /**
165
- * Formate une plage de dates en chaîne lisible
166
- *
167
- * @param range - Plage de dates à formater
168
- * @param formatStr - Format date-fns (défaut: "PPP" = "1 janvier 2025")
169
- * @param locale - Locale pour le formatage (défaut: fr)
170
- * @returns Chaîne formatée "date1 - date2"
171
- *
172
- * @example
173
- * ```tsx
174
- * formatDateRange({ from: start, to: end })
175
- * // => "1 janvier 2025 - 31 janvier 2025"
176
- * ```
67
+ * Formater une range de dates
177
68
  */
178
69
  export declare const formatDateRange: (range: DateRange, formatStr?: string, locale?: import('date-fns').Locale) => string;
179
70
  /**
180
- * Retourne la liste des jours fériés français pour une année donnée
181
- *
182
- * Note: N'inclut pas les fêtes mobiles (Pâques, Ascension, Pentecôte)
183
- *
184
- * @param year - Année concernée
185
- * @returns Tableau des dates de jours fériés
186
- *
187
- * @example
188
- * ```tsx
189
- * const holidays2025 = getFrenchHolidays(2025)
190
- * // Utiliser pour désactiver ces dates dans un calendrier
191
- * ```
71
+ * Obtenir les jours fériés français pour une année
192
72
  */
193
73
  export declare const getFrenchHolidays: (year: number) => Date[];
194
74
  /**
195
- * Retourne toutes les dates d'un mois donné
196
- *
197
- * @param year - Année
198
- * @param month - Mois (0-11, janvier = 0)
199
- * @returns Tableau de toutes les dates du mois
75
+ * Obtenir les dates d'un mois
200
76
  */
201
77
  export declare const getDatesInMonth: (year: number, month: number) => Date[];
202
78
  /**
203
- * Retourne tous les weekends d'un mois donné
204
- *
205
- * @param year - Année
206
- * @param month - Mois (0-11)
207
- * @returns Tableau des dates de weekend
79
+ * Obtenir tous les weekends d'un mois
208
80
  */
209
81
  export declare const getWeekendsInMonth: (year: number, month: number) => Date[];
210
82
  /**
211
- * Retourne tous les jours ouvrables d'un mois donné (lundi à vendredi)
212
- *
213
- * @param year - Année
214
- * @param month - Mois (0-11)
215
- * @returns Tableau des dates de jours ouvrables
83
+ * Obtenir tous les jours de semaine d'un mois
216
84
  */
217
85
  export declare const getWeekdaysInMonth: (year: number, month: number) => Date[];
218
86
  /**
219
- * Crée un validateur pour les dates d'expiration de carte bancaire
220
- *
221
- * Vérifie que la carte n'est pas expirée et avertit si elle expire bientôt.
222
- *
223
- * @returns Fonction de validation retournant true ou un message
87
+ * Créer un validateur de date d'expiration de carte bancaire
224
88
  */
225
89
  export declare const createCardExpiryValidator: () => (date: Date) => boolean | string;
226
90
  /**
227
- * Crée un validateur pour les réservations nécessitant un délai minimum
228
- *
229
- * @param minDaysInAdvance - Nombre de jours minimum avant la date
230
- * @returns Fonction de validation retournant true ou un message d'erreur
231
- *
232
- * @example
233
- * ```tsx
234
- * const validateBooking = createBookingDateValidator(3)
235
- * // Exige une réservation au moins 3 jours à l'avance
236
- * ```
91
+ * Créer un validateur de date de réservation (X jours d'avance minimum)
237
92
  */
238
93
  export declare const createBookingDateValidator: (minDaysInAdvance: number) => (date: Date) => boolean | string;
239
94
  /**
240
- * Crée un validateur limitant la durée maximale d'une plage de dates
241
- *
242
- * @param maxDays - Nombre maximum de jours autorisés
243
- * @returns Fonction de validation pour DateRange
244
- *
245
- * @example
246
- * ```tsx
247
- * const validateRange = createMaxRangeDaysValidator(30)
248
- * // Limite la sélection à 30 jours maximum
249
- * ```
95
+ * Créer un validateur de plage de dates maximum
250
96
  */
251
97
  export declare const createMaxRangeDaysValidator: (maxDays: number) => (range: DateRange) => boolean | string;
252
98
  /**
253
- * Vérifie si deux dates correspondent au même jour
254
- *
255
- * @param date1 - Première date
256
- * @param date2 - Seconde date
257
- * @returns true si les dates sont le même jour
99
+ * Vérifier si deux dates sont le même jour
258
100
  */
259
101
  export declare const isSameDay: (date1: Date, date2: Date) => boolean;
260
102
  /**
261
- * Calcule le nombre de jours ouvrés entre deux dates
262
- *
263
- * Exclut les weekends et optionnellement les jours fériés.
264
- *
265
- * @param from - Date de début
266
- * @param to - Date de fin
267
- * @param holidays - Liste optionnelle des jours fériés à exclure
268
- * @returns Nombre de jours ouvrés
269
- *
270
- * @example
271
- * ```tsx
272
- * const holidays = getFrenchHolidays(2025)
273
- * const workDays = getWorkingDays(startDate, endDate, holidays)
274
- * console.log(`${workDays} jours ouvrés`)
275
- * ```
103
+ * Obtenir le nombre de jours ouvrés entre deux dates
276
104
  */
277
105
  export declare const getWorkingDays: (from: Date, to: Date, holidays?: Date[]) => number;
278
106
  /**
279
- * Crée des presets pour les quatre trimestres d'une année
280
- *
281
- * @param year - Année cible (défaut: année courante)
282
- * @returns Tableau de presets T1, T2, T3, T4
283
- *
284
- * @example
285
- * ```tsx
286
- * const quarterPresets = createQuarterPresets(2025)
287
- * // => ["T1 2025", "T2 2025", "T3 2025", "T4 2025"]
288
- * ```
107
+ * Créer des presets pour les trimestres
289
108
  */
290
109
  export declare const createQuarterPresets: (year?: number) => DatePreset[];
291
110
  /**
292
- * Crée des presets pour les 12 mois d'une année
293
- *
294
- * @param year - Année cible (défaut: année courante)
295
- * @param locale - Locale pour le nom des mois (défaut: fr)
296
- * @returns Tableau de presets pour chaque mois
111
+ * Créer des presets pour les mois de l'année
297
112
  */
298
113
  export declare const createMonthlyPresets: (year?: number, locale?: import('date-fns').Locale) => DatePreset[];
299
114
  /**
300
- * Convertit une date en timestamp Unix (millisecondes)
301
- *
302
- * @param date - Date à convertir
303
- * @returns Timestamp en millisecondes
115
+ * Convertir une date en timestamp
304
116
  */
305
117
  export declare const dateToTimestamp: (date: Date) => number;
306
118
  /**
307
- * Convertit un timestamp Unix en objet Date
308
- *
309
- * @param timestamp - Timestamp en millisecondes
310
- * @returns Objet Date correspondant
119
+ * Convertir un timestamp en date
311
120
  */
312
121
  export declare const timestampToDate: (timestamp: number) => Date;
313
122
  /**
314
- * Normalise une date au début de la journée (00:00:00)
315
- *
316
- * Utile pour les comparaisons de dates sans tenir compte de l'heure.
317
- *
318
- * @param date - Date à normaliser
319
- * @returns Date normalisée à minuit
123
+ * Normaliser une date (début de journée)
320
124
  */
321
125
  export declare const normalizeDate: (date: Date) => Date;
322
126
  /**
323
- * Compare deux plages de dates pour vérifier leur égalité
324
- *
325
- * @param range1 - Première plage
326
- * @param range2 - Seconde plage
327
- * @returns true si les plages sont identiques (même jour de début et fin)
127
+ * Comparer deux ranges de dates
328
128
  */
329
129
  export declare const compareRanges: (range1: DateRange, range2: DateRange) => boolean;
330
130
  /**
331
- * Fusionne deux plages de dates si elles se chevauchent ou sont adjacentes
332
- *
333
- * @param range1 - Première plage
334
- * @param range2 - Seconde plage
335
- * @returns Plage fusionnée ou null si les plages ne se chevauchent pas
131
+ * Merger deux ranges de dates
336
132
  */
337
133
  export declare const mergeRanges: (range1: DateRange, range2: DateRange) => DateRange | null;
338
134
  /**
339
- * Vérifie si deux plages de dates se chevauchent
340
- *
341
- * @param range1 - Première plage
342
- * @param range2 - Seconde plage
343
- * @returns true si les plages ont au moins un jour en commun
135
+ * Vérifier si deux ranges se chevauchent
344
136
  */
345
137
  export declare const rangesOverlap: (range1: DateRange, range2: DateRange) => boolean;
@@ -3,7 +3,3 @@ export { tweak, type VariantProps } from './tweak';
3
3
  export * from './datetime-helpers';
4
4
  export { ThemeLoader, initThemeLoader, getThemeLoader, loadTheme, applyTheme, useThemeLoader } from './theme-loader';
5
5
  export type { ThemeLoaderConfig } from './theme-loader';
6
- export { logger, Logger } from './logger';
7
- export type { LoggerConfig, LogLevel } from './logger';
8
- export { WakaError, ErrorCode, handleError, tryCatch, tryCatchAsync, withErrorHandling, assertCondition, isWakaError, isErrorCode, createErrorFactory, retryAsync, } from './error-handling';
9
- export type { ErrorCodeType, ErrorHandlerOptions } from './error-handling';
@@ -1,130 +1,66 @@
1
1
  /**
2
- * @fileoverview Chargeur dynamique de thèmes pour WakaStart UI
2
+ * Theme Loader pour charger dynamiquement les thèmes depuis S3 ou toute URL
3
3
  *
4
- * Ce module permet de charger des thèmes CSS depuis n'importe quelle URL
5
- * (S3, CDN, serveur local) et de les appliquer dynamiquement.
6
- *
7
- * Fonctionnalités:
8
- * - Chargement asynchrone avec timeout configurable
9
- * - Cache des thèmes déjà chargés
10
- * - Préchargement de plusieurs thèmes en parallèle
11
- * - Persistance du thème actif dans localStorage
12
- * - Support de tous les formats de couleurs (hex, rgb, hsl, oklch)
13
- *
14
- * @module utils/theme-loader
15
- *
16
- * @example
17
- * ```tsx
18
- * // Initialisation
19
- * import { initThemeLoader, loadTheme } from '@wakastellar/ui'
20
- *
21
- * initThemeLoader({ baseUrl: 'https://cdn.example.com/themes' })
22
- *
23
- * // Charger et appliquer un thème
24
- * await loadTheme('dark')
25
- *
26
- * // Avec le hook React
27
- * const { loadTheme, currentTheme, isLoading } = useThemeLoader()
28
- * ```
29
- */
30
- /**
31
- * Configuration du chargeur de thèmes
32
- *
33
- * @example
34
- * ```tsx
35
- * const config: ThemeLoaderConfig = {
36
- * baseUrl: 'https://cdn.example.com/themes',
37
- * cache: true,
38
- * timeout: 5000,
39
- * onError: (err, name) => console.error(`Theme ${name} failed:`, err),
40
- * onSuccess: (name) => console.log(`Theme ${name} loaded`)
41
- * }
42
- * ```
4
+ * Supporte tous les formats de couleurs (hex, rgb, hsl, oklch, etc.)
5
+ * grâce au système TweakCN avec @theme inline
43
6
  */
44
7
  export interface ThemeLoaderConfig {
45
- /** URL de base où les fichiers CSS des thèmes sont stockés */
8
+ /**
9
+ * URL de base où les thèmes sont stockés (S3, CDN, etc.)
10
+ */
46
11
  baseUrl: string;
47
- /** Active le cache des thèmes chargés (défaut: true) */
12
+ /**
13
+ * Cache les thèmes déjà chargés pour éviter les requêtes répétées
14
+ */
48
15
  cache?: boolean;
49
- /** Timeout en ms pour le chargement d'un thème (défaut: 10000) */
16
+ /**
17
+ * Timeout en millisecondes pour le chargement d'un thème
18
+ */
50
19
  timeout?: number;
51
- /** Callback appelé en cas d'erreur de chargement */
20
+ /**
21
+ * Callback appelé en cas d'erreur de chargement
22
+ */
52
23
  onError?: (error: Error, themeName: string) => void;
53
- /** Callback appelé après chargement réussi d'un thème */
24
+ /**
25
+ * Callback appelé une fois le thème chargé avec succès
26
+ */
54
27
  onSuccess?: (themeName: string) => void;
55
28
  }
56
- /**
57
- * Classe principale pour le chargement dynamique des thèmes
58
- *
59
- * Gère le chargement, le cache et l'application des thèmes CSS.
60
- * Utilisez `initThemeLoader()` pour créer une instance globale.
61
- */
62
29
  declare class ThemeLoader {
63
30
  private config;
64
31
  private loadedThemes;
65
32
  private styleElements;
66
- /**
67
- * Crée une nouvelle instance du chargeur de thèmes
68
- * @param config - Configuration du chargeur
69
- */
70
33
  constructor(config: ThemeLoaderConfig);
71
34
  /**
72
- * Charge un thème depuis l'URL configurée et l'applique
73
- *
74
- * @param themeName - Nom du thème (sans extension .css)
75
- * @throws {Error} Si le chargement échoue ou timeout
76
- *
77
- * @example
78
- * ```tsx
79
- * await loader.loadTheme('dark')
80
- * ```
35
+ * Charge un thème depuis une URL
81
36
  */
82
37
  loadTheme(themeName: string): Promise<void>;
83
38
  /**
84
- * Applique un thème déjà chargé au document
85
- *
86
- * Met à jour l'attribut `data-theme` sur `<html>` et sauvegarde dans localStorage.
87
- *
88
- * @param themeName - Nom du thème à appliquer
39
+ * Applique un thème déjà chargé
89
40
  */
90
41
  applyTheme(themeName: string): void;
91
42
  /**
92
- * Récupère le nom du thème actuellement appliqué
93
- *
94
- * @returns Nom du thème ou null si aucun n'est défini
43
+ * Récupère le thème actuellement appliqué
95
44
  */
96
45
  getCurrentTheme(): string | null;
97
46
  /**
98
- * Récupère le dernier thème utilisé depuis localStorage
99
- *
100
- * @returns Nom du thème sauvegardé ou null
47
+ * Charge le dernier thème utilisé depuis localStorage
101
48
  */
102
49
  loadSavedTheme(): string | null;
103
50
  /**
104
- * Précharge plusieurs thèmes en parallèle pour un changement instantané
105
- *
106
- * @param themeNames - Liste des noms de thèmes à précharger
107
- *
108
- * @example
109
- * ```tsx
110
- * await loader.preloadThemes(['light', 'dark', 'forest'])
111
- * ```
51
+ * Précharge plusieurs thèmes en parallèle
112
52
  */
113
53
  preloadThemes(themeNames: string[]): Promise<void>;
114
54
  /**
115
55
  * Supprime un thème du cache et du DOM
116
- *
117
- * @param themeName - Nom du thème à décharger
118
56
  */
119
57
  unloadTheme(themeName: string): void;
120
58
  /**
121
- * Vide complètement le cache et supprime tous les styles injectés
59
+ * Vide complètement le cache
122
60
  */
123
61
  clearCache(): void;
124
62
  /**
125
- * Retourne la liste des noms de thèmes actuellement en cache
126
- *
127
- * @returns Tableau des noms de thèmes chargés
63
+ * Liste tous les thèmes chargés
128
64
  */
129
65
  getLoadedThemes(): string[];
130
66
  /**
@@ -137,69 +73,23 @@ declare class ThemeLoader {
137
73
  private injectThemeStyles;
138
74
  }
139
75
  /**
140
- * Initialise le chargeur de thèmes global avec la configuration fournie
141
- *
142
- * Cette fonction doit être appelée une fois au démarrage de l'application.
143
- *
144
- * @param config - Configuration du chargeur
145
- * @returns Instance du ThemeLoader
146
- *
147
- * @example
148
- * ```tsx
149
- * // Dans _app.tsx ou layout.tsx
150
- * initThemeLoader({
151
- * baseUrl: process.env.NEXT_PUBLIC_THEMES_URL,
152
- * onError: (err, name) => toast.error(`Échec du thème ${name}`)
153
- * })
154
- * ```
76
+ * Initialise le theme loader avec une configuration
155
77
  */
156
78
  export declare function initThemeLoader(config: ThemeLoaderConfig): ThemeLoader;
157
79
  /**
158
- * Récupère l'instance globale du chargeur de thèmes
159
- *
160
- * @throws {Error} Si initThemeLoader() n'a pas été appelé
161
- * @returns Instance du ThemeLoader
80
+ * Récupère l'instance globale du theme loader
162
81
  */
163
82
  export declare function getThemeLoader(): ThemeLoader;
164
83
  /**
165
- * Charge et applique un thème via l'instance globale
166
- *
167
- * @param themeName - Nom du thème à charger
168
- * @throws {Error} Si le loader n'est pas initialisé
84
+ * Charge un thème depuis l'instance globale
169
85
  */
170
86
  export declare function loadTheme(themeName: string): Promise<void>;
171
87
  /**
172
- * Applique un thème déjà chargé via l'instance globale
173
- *
174
- * @param themeName - Nom du thème à appliquer
88
+ * Applique un thème depuis l'instance globale
175
89
  */
176
90
  export declare function applyTheme(themeName: string): void;
177
91
  /**
178
- * Hook React pour charger et gérer les thèmes dynamiquement
179
- *
180
- * Fournit des méthodes pour charger et appliquer des thèmes,
181
- * ainsi que l'état de chargement et le thème actuel.
182
- *
183
- * @param config - Configuration optionnelle (utilise l'instance globale si non fournie)
184
- * @returns Objet avec méthodes et état du chargeur
185
- *
186
- * @example
187
- * ```tsx
188
- * function ThemeSwitcher() {
189
- * const { loadTheme, currentTheme, isLoading, loadedThemes } = useThemeLoader()
190
- *
191
- * return (
192
- * <select
193
- * value={currentTheme || ''}
194
- * onChange={(e) => loadTheme(e.target.value)}
195
- * disabled={isLoading}
196
- * >
197
- * <option value="light">Clair</option>
198
- * <option value="dark">Sombre</option>
199
- * </select>
200
- * )
201
- * }
202
- * ```
92
+ * Hook React pour charger des thèmes dynamiquement
203
93
  */
204
94
  export declare function useThemeLoader(config?: Partial<ThemeLoaderConfig>): {
205
95
  loadTheme: (themeName: string) => Promise<void>;
@@ -1,31 +1,18 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  import { VariantProps } from 'class-variance-authority';
3
- /**
4
- * Configuration des variantes pour un composant
5
- */
6
3
  export type ConfigVariants<T> = T extends Record<string, Record<string, string>> ? {
7
4
  [K in keyof T]?: keyof T[K];
8
5
  } : never;
9
- /**
10
- * Props pour les classes CSS additionnelles
11
- */
12
6
  export type ClassProp = {
13
7
  class?: ClassValue;
14
8
  className?: ClassValue;
15
9
  };
16
- /**
17
- * Fusionne des classes CSS en résolvant les conflits Tailwind.
18
- * Combine clsx pour la logique conditionnelle et tailwind-merge pour la résolution des conflits.
19
- *
20
- * @param inputs - Classes CSS à fusionner
21
- * @returns Chaîne de classes CSS fusionnée
22
- */
23
10
  export declare function tweak(...inputs: ClassValue[]): string;
24
11
  export declare namespace tweak {
25
12
  var variants: <T extends Record<string, Record<string, string>>, Defaults extends Partial<Record<keyof T, string>> = {}>(config: {
26
13
  base?: string;
27
14
  variants?: T;
28
15
  defaultVariants?: Defaults;
29
- }) => (options?: ConfigVariants<T> & ClassProp) => string;
16
+ }) => (options?: (ConfigVariants<T> & ClassProp)) => string;
30
17
  }
31
18
  export type { VariantProps };