@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.
- package/dist/blocks/index.d.ts +0 -39
- package/dist/components/DataTable/DataTable.d.ts +1 -1
- package/dist/components/DataTable/DataTableAdvanced.d.ts +1 -1
- package/dist/components/DataTable/DataTableFilters.d.ts +3 -3
- package/dist/components/DataTable/DataTableSelection.d.ts +12 -17
- package/dist/components/DataTable/hooks/useDataTable.d.ts +1 -1
- package/dist/components/DataTable/hooks/useDataTableAdvanced.d.ts +6 -6
- package/dist/components/DataTable/hooks/useDataTableExport.d.ts +4 -15
- package/dist/components/DataTable/hooks/useDataTableImport.d.ts +2 -16
- package/dist/components/DataTable/hooks/useDataTableVirtualization.d.ts +1 -1
- package/dist/components/DataTable/index.d.ts +2 -48
- package/dist/components/DataTable/types.d.ts +25 -417
- package/dist/components/command/index.d.ts +2 -6
- package/dist/components/index.d.ts +0 -26
- package/dist/components/language-selector/index.d.ts +1 -19
- package/dist/components/theme-selector/index.d.ts +0 -10
- package/dist/components/typography/index.d.ts +1 -1
- package/dist/components/waka-spinner/index.d.ts +21 -57
- package/dist/components/waka-theme-creator/index.d.ts +22 -73
- package/dist/components/waka-theme-manager/index.d.ts +1 -14
- package/dist/context/admincrumb-context.d.ts +1 -118
- package/dist/context/index.d.ts +2 -2
- package/dist/context/language-context.d.ts +23 -177
- package/dist/context/theme-context.d.ts +3 -4
- package/dist/context/theme-provider.d.ts +19 -57
- package/dist/context/waka-provider.d.ts +7 -50
- package/dist/hooks/use-toast.d.ts +0 -116
- package/dist/hooks/use-translation.d.ts +1 -24
- package/dist/hooks/useToast.d.ts +0 -82
- package/dist/index.cjs.js +36 -61
- package/dist/index.d.ts +3 -35
- package/dist/index.es.js +7873 -23890
- package/dist/types/provider.d.ts +17 -48
- package/dist/ui.css +1 -1
- package/dist/utils/cn.d.ts +1 -15
- package/dist/utils/datetime-helpers.d.ts +33 -241
- package/dist/utils/index.d.ts +0 -4
- package/dist/utils/theme-loader.d.ts +30 -140
- package/dist/utils/tweak.d.ts +1 -14
- package/package.json +40 -107
- package/src/styles/datepicker.css +2 -9
- package/src/styles/globals.css +4 -4
- package/dist/charts.cjs.js +0 -1
- package/dist/charts.es.js +0 -16
- package/dist/cn-CAc3sAGM.js +0 -21
- package/dist/cn-zrNBeCrC.js +0 -1
- package/dist/components/DataTable/DataTableGroupRow.d.ts +0 -35
- package/dist/components/DataTable/DataTableRow.d.ts +0 -30
- package/dist/components/WakaKeycloakLogin/WakaKeycloakLogin.d.ts +0 -3
- package/dist/components/WakaKeycloakLogin/index.d.ts +0 -2
- package/dist/components/WakaKeycloakLogin/types.d.ts +0 -56
- package/dist/export.cjs.js +0 -1
- package/dist/export.es.js +0 -5
- package/dist/index-CENPre_9.js +0 -466
- package/dist/index-CHLjUBPo.js +0 -1
- package/dist/rich-text.cjs.js +0 -1
- package/dist/rich-text.es.js +0 -4
- package/dist/types-Bjy1Hy76.js +0 -1111
- package/dist/types-CHv7a1SP.js +0 -1
- package/dist/useDataTableImport-DqeEL4GC.js +0 -124
- package/dist/useDataTableImport-sQwBFAJ_.js +0 -775
- 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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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;
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
2
|
+
* Theme Loader pour charger dynamiquement les thèmes depuis S3 ou toute URL
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* URL de base où les thèmes sont stockés (S3, CDN, etc.)
|
|
10
|
+
*/
|
|
46
11
|
baseUrl: string;
|
|
47
|
-
/**
|
|
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
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Timeout en millisecondes pour le chargement d'un thème
|
|
18
|
+
*/
|
|
50
19
|
timeout?: number;
|
|
51
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Callback appelé en cas d'erreur de chargement
|
|
22
|
+
*/
|
|
52
23
|
onError?: (error: Error, themeName: string) => void;
|
|
53
|
-
/**
|
|
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
|
|
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é
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
|
59
|
+
* Vide complètement le cache
|
|
122
60
|
*/
|
|
123
61
|
clearCache(): void;
|
|
124
62
|
/**
|
|
125
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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>;
|
package/dist/utils/tweak.d.ts
CHANGED
|
@@ -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 };
|