@wakastellar/ui 0.1.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 (113) hide show
  1. package/dist/blocks/footer/index.d.ts +19 -0
  2. package/dist/blocks/headtab/index.d.ts +27 -0
  3. package/dist/blocks/index.d.ts +5 -0
  4. package/dist/blocks/language-selector/index.d.ts +6 -0
  5. package/dist/blocks/layout/index.d.ts +28 -0
  6. package/dist/blocks/login/index.d.ts +13 -0
  7. package/dist/components/DataTable/DataTable.d.ts +17 -0
  8. package/dist/components/DataTable/DataTableAdvanced.d.ts +27 -0
  9. package/dist/components/DataTable/DataTableColumnResizer.d.ts +8 -0
  10. package/dist/components/DataTable/DataTableContextMenu.d.ts +47 -0
  11. package/dist/components/DataTable/DataTableEditCell.d.ts +29 -0
  12. package/dist/components/DataTable/DataTableFilters.d.ts +14 -0
  13. package/dist/components/DataTable/DataTableGrouping.d.ts +25 -0
  14. package/dist/components/DataTable/DataTablePagination.d.ts +8 -0
  15. package/dist/components/DataTable/DataTableSelection.d.ts +46 -0
  16. package/dist/components/DataTable/DataTableToolbar.d.ts +14 -0
  17. package/dist/components/DataTable/examples/EditExample.d.ts +2 -0
  18. package/dist/components/DataTable/hooks/useDataTable.d.ts +24 -0
  19. package/dist/components/DataTable/hooks/useDataTableAdvanced.d.ts +38 -0
  20. package/dist/components/DataTable/hooks/useDataTableEdit.d.ts +22 -0
  21. package/dist/components/DataTable/hooks/useDataTableExport.d.ts +15 -0
  22. package/dist/components/DataTable/hooks/useDataTableImport.d.ts +12 -0
  23. package/dist/components/DataTable/hooks/useDataTableTheme.d.ts +16 -0
  24. package/dist/components/DataTable/hooks/useDataTableVirtualization.d.ts +19 -0
  25. package/dist/components/DataTable/hooks/useTableLayout.d.ts +26 -0
  26. package/dist/components/DataTable/index.d.ts +37 -0
  27. package/dist/components/DataTable/types.d.ts +461 -0
  28. package/dist/components/DataTable/utils.d.ts +37 -0
  29. package/dist/components/accordion/index.d.ts +7 -0
  30. package/dist/components/alert/index.d.ts +8 -0
  31. package/dist/components/alert-dialog/index.d.ts +20 -0
  32. package/dist/components/aspect-ratio/index.d.ts +3 -0
  33. package/dist/components/avatar/index.d.ts +6 -0
  34. package/dist/components/badge/index.d.ts +9 -0
  35. package/dist/components/button/index.d.ts +11 -0
  36. package/dist/components/calendar/index.d.ts +8 -0
  37. package/dist/components/card/index.d.ts +8 -0
  38. package/dist/components/checkbox/index.d.ts +4 -0
  39. package/dist/components/code/index.d.ts +29 -0
  40. package/dist/components/collapsible/index.d.ts +5 -0
  41. package/dist/components/command/index.d.ts +51 -0
  42. package/dist/components/context-menu/index.d.ts +27 -0
  43. package/dist/components/dialog/index.d.ts +19 -0
  44. package/dist/components/dropdown-menu/index.d.ts +27 -0
  45. package/dist/components/form/index.d.ts +23 -0
  46. package/dist/components/hover-card/index.d.ts +6 -0
  47. package/dist/components/index.d.ts +52 -0
  48. package/dist/components/input/index.d.ts +5 -0
  49. package/dist/components/input-otp/index.d.ts +51 -0
  50. package/dist/components/label/index.d.ts +5 -0
  51. package/dist/components/language-selector/index.d.ts +40 -0
  52. package/dist/components/menubar/index.d.ts +28 -0
  53. package/dist/components/navigation-menu/index.d.ts +12 -0
  54. package/dist/components/popover/index.d.ts +6 -0
  55. package/dist/components/progress/index.d.ts +4 -0
  56. package/dist/components/radio-group/index.d.ts +5 -0
  57. package/dist/components/scroll-area/index.d.ts +5 -0
  58. package/dist/components/select/index.d.ts +13 -0
  59. package/dist/components/separator/index.d.ts +4 -0
  60. package/dist/components/sheet/index.d.ts +27 -0
  61. package/dist/components/skeleton/index.d.ts +2 -0
  62. package/dist/components/slider/index.d.ts +4 -0
  63. package/dist/components/switch/index.d.ts +4 -0
  64. package/dist/components/table/index.d.ts +10 -0
  65. package/dist/components/tabs/index.d.ts +7 -0
  66. package/dist/components/textarea/index.d.ts +5 -0
  67. package/dist/components/theme-selector/index.d.ts +8 -0
  68. package/dist/components/toast/index.d.ts +15 -0
  69. package/dist/components/toaster/index.d.ts +1 -0
  70. package/dist/components/toggle/index.d.ts +12 -0
  71. package/dist/components/tooltip/index.d.ts +7 -0
  72. package/dist/components/typography/index.d.ts +85 -0
  73. package/dist/components/waka-admincrumb/index.d.ts +41 -0
  74. package/dist/components/waka-carousel/index.d.ts +105 -0
  75. package/dist/components/waka-datetime-picker/index.d.ts +135 -0
  76. package/dist/components/waka-datetime-picker.form-integration/index.d.ts +69 -0
  77. package/dist/components/waka-notifications/index.d.ts +40 -0
  78. package/dist/components/waka-spinner/index.d.ts +46 -0
  79. package/dist/components/waka-theme-creator/index.d.ts +59 -0
  80. package/dist/components/waka-theme-manager/index.d.ts +62 -0
  81. package/dist/context/admincrumb-context.d.ts +34 -0
  82. package/dist/context/index.d.ts +8 -0
  83. package/dist/context/language-context.d.ts +57 -0
  84. package/dist/context/theme-context.d.ts +39 -0
  85. package/dist/context/theme-provider.d.ts +74 -0
  86. package/dist/context/waka-provider.d.ts +50 -0
  87. package/dist/hooks/index.d.ts +1 -0
  88. package/dist/hooks/use-toast.d.ts +44 -0
  89. package/dist/hooks/use-translation.d.ts +15 -0
  90. package/dist/hooks/useToast.d.ts +44 -0
  91. package/dist/index.cjs.js +70 -0
  92. package/dist/index.d.ts +20 -0
  93. package/dist/index.es.js +16379 -0
  94. package/dist/lib/i18n.d.ts +4 -0
  95. package/dist/types/provider.d.ts +108 -0
  96. package/dist/ui.css +1 -0
  97. package/dist/utils/cn.d.ts +1 -0
  98. package/dist/utils/datetime-helpers.d.ts +137 -0
  99. package/dist/utils/index.d.ts +5 -0
  100. package/dist/utils/theme-loader.d.ts +101 -0
  101. package/dist/utils/tweak.d.ts +18 -0
  102. package/package.json +118 -0
  103. package/src/styles/carousel.css +687 -0
  104. package/src/styles/code-highlight.css +232 -0
  105. package/src/styles/datepicker.css +420 -0
  106. package/src/styles/globals.css +84 -0
  107. package/src/styles/prism.css +261 -0
  108. package/src/styles/themes/forest.css +55 -0
  109. package/src/styles/themes/index.css +7 -0
  110. package/src/styles/themes/monochrome.css +55 -0
  111. package/src/styles/themes/perpetuity.css +55 -0
  112. package/src/styles/themes/sunset.css +55 -0
  113. package/src/styles/themes/twilight.css +55 -0
@@ -0,0 +1,687 @@
1
+ /* Styles pour le composant WakaCarousel - Version Professionnelle */
2
+
3
+ .waka-carousel {
4
+ position: relative;
5
+ overflow: hidden;
6
+ border-radius: 0.5rem;
7
+ background-color: #000;
8
+ user-select: none;
9
+ -webkit-user-select: none;
10
+ -moz-user-select: none;
11
+ -ms-user-select: none;
12
+ }
13
+
14
+ /* Mode plein écran */
15
+ .waka-carousel--fullscreen {
16
+ position: fixed;
17
+ top: 0;
18
+ left: 0;
19
+ right: 0;
20
+ bottom: 0;
21
+ z-index: 9999;
22
+ border-radius: 0;
23
+ background-color: #000;
24
+ }
25
+
26
+ /* Container d'image */
27
+ .waka-carousel__image-container {
28
+ position: relative;
29
+ width: 100%;
30
+ height: 100%;
31
+ overflow: hidden;
32
+ }
33
+
34
+ /* Image principale */
35
+ .waka-carousel__image {
36
+ width: 100%;
37
+ height: 100%;
38
+ object-fit: cover;
39
+ transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
40
+ will-change: opacity, transform;
41
+ }
42
+
43
+ /* Overlay avec contenu */
44
+ .waka-carousel__overlay {
45
+ position: absolute;
46
+ bottom: 0;
47
+ left: 0;
48
+ right: 0;
49
+ background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent);
50
+ padding: 1.5rem;
51
+ color: white;
52
+ z-index: 5;
53
+ }
54
+
55
+ .waka-carousel__title {
56
+ font-size: 1.25rem;
57
+ font-weight: 600;
58
+ margin-bottom: 0.5rem;
59
+ color: white;
60
+ line-height: 1.3;
61
+ }
62
+
63
+ .waka-carousel__description {
64
+ font-size: 0.875rem;
65
+ color: rgba(255, 255, 255, 0.9);
66
+ line-height: 1.4;
67
+ margin-bottom: 0.5rem;
68
+ }
69
+
70
+ .waka-carousel__caption {
71
+ font-size: 0.75rem;
72
+ color: rgba(255, 255, 255, 0.8);
73
+ font-style: italic;
74
+ }
75
+
76
+ /* Navigation */
77
+ .waka-carousel__navigation {
78
+ position: absolute;
79
+ top: 50%;
80
+ transform: translateY(-50%);
81
+ z-index: 10;
82
+ background: rgba(0, 0, 0, 0.6);
83
+ color: white;
84
+ padding: 0.75rem;
85
+ border-radius: 50%;
86
+ border: none;
87
+ cursor: pointer;
88
+ transition: all 0.2s ease;
89
+ display: flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ backdrop-filter: blur(4px);
93
+ -webkit-backdrop-filter: blur(4px);
94
+ }
95
+
96
+ .waka-carousel__navigation:hover {
97
+ background: rgba(0, 0, 0, 0.8);
98
+ transform: translateY(-50%) scale(1.1);
99
+ }
100
+
101
+ .waka-carousel__navigation:focus {
102
+ outline: 2px solid rgba(255, 255, 255, 0.8);
103
+ outline-offset: 2px;
104
+ }
105
+
106
+ .waka-carousel__navigation:active {
107
+ transform: translateY(-50%) scale(0.95);
108
+ }
109
+
110
+ .waka-carousel__navigation--prev {
111
+ left: 1rem;
112
+ }
113
+
114
+ .waka-carousel__navigation--next {
115
+ right: 1rem;
116
+ }
117
+
118
+ /* Tailles de navigation */
119
+ .waka-carousel__navigation--small {
120
+ padding: 0.5rem;
121
+ }
122
+
123
+ .waka-carousel__navigation--large {
124
+ padding: 1rem;
125
+ }
126
+
127
+ /* Boutons de contrôle */
128
+ .waka-carousel__control-button {
129
+ position: absolute;
130
+ top: 1rem;
131
+ z-index: 10;
132
+ background: rgba(0, 0, 0, 0.6);
133
+ color: white;
134
+ padding: 0.5rem;
135
+ border-radius: 50%;
136
+ border: none;
137
+ cursor: pointer;
138
+ transition: all 0.2s ease;
139
+ display: flex;
140
+ align-items: center;
141
+ justify-content: center;
142
+ backdrop-filter: blur(4px);
143
+ -webkit-backdrop-filter: blur(4px);
144
+ }
145
+
146
+ .waka-carousel__control-button:hover {
147
+ background: rgba(0, 0, 0, 0.8);
148
+ transform: scale(1.1);
149
+ }
150
+
151
+ .waka-carousel__control-button:focus {
152
+ outline: 2px solid rgba(255, 255, 255, 0.8);
153
+ outline-offset: 2px;
154
+ }
155
+
156
+ .waka-carousel__play-button {
157
+ right: 1rem;
158
+ }
159
+
160
+ .waka-carousel__fullscreen-button {
161
+ left: 1rem;
162
+ }
163
+
164
+ .waka-carousel__download-button {
165
+ right: 3.5rem;
166
+ }
167
+
168
+ .waka-carousel__share-button {
169
+ right: 6rem;
170
+ }
171
+
172
+ /* Compteur */
173
+ .waka-carousel__counter {
174
+ position: absolute;
175
+ top: 1rem;
176
+ left: 50%;
177
+ transform: translateX(-50%);
178
+ z-index: 10;
179
+ background: rgba(0, 0, 0, 0.6);
180
+ color: white;
181
+ padding: 0.5rem 1rem;
182
+ border-radius: 1rem;
183
+ font-size: 0.875rem;
184
+ font-weight: 500;
185
+ backdrop-filter: blur(4px);
186
+ -webkit-backdrop-filter: blur(4px);
187
+ }
188
+
189
+ /* Indicateurs */
190
+ .waka-carousel__indicators {
191
+ position: absolute;
192
+ bottom: 1rem;
193
+ left: 50%;
194
+ transform: translateX(-50%);
195
+ display: flex;
196
+ gap: 0.5rem;
197
+ z-index: 10;
198
+ }
199
+
200
+ .waka-carousel__indicator {
201
+ border: none;
202
+ cursor: pointer;
203
+ transition: all 0.2s ease;
204
+ background: rgba(255, 255, 255, 0.5);
205
+ backdrop-filter: blur(4px);
206
+ -webkit-backdrop-filter: blur(4px);
207
+ }
208
+
209
+ .waka-carousel__indicator:hover {
210
+ background: rgba(255, 255, 255, 0.7);
211
+ transform: scale(1.1);
212
+ }
213
+
214
+ .waka-carousel__indicator:focus {
215
+ outline: 2px solid rgba(255, 255, 255, 0.8);
216
+ outline-offset: 2px;
217
+ }
218
+
219
+ .waka-carousel__indicator--active {
220
+ background: white;
221
+ }
222
+
223
+ /* Formes d'indicateurs */
224
+ .waka-carousel__indicator--circle {
225
+ width: 0.5rem;
226
+ height: 0.5rem;
227
+ border-radius: 50%;
228
+ }
229
+
230
+ .waka-carousel__indicator--square {
231
+ width: 0.5rem;
232
+ height: 0.5rem;
233
+ border-radius: 0.125rem;
234
+ }
235
+
236
+ .waka-carousel__indicator--diamond {
237
+ width: 0.5rem;
238
+ height: 0.5rem;
239
+ border-radius: 0.125rem;
240
+ transform: rotate(45deg);
241
+ }
242
+
243
+ .waka-carousel__indicator--line {
244
+ height: 0.25rem;
245
+ border-radius: 0.125rem;
246
+ }
247
+
248
+ /* Tailles d'indicateurs */
249
+ .waka-carousel__indicator--small {
250
+ width: 0.375rem;
251
+ height: 0.375rem;
252
+ }
253
+
254
+ .waka-carousel__indicator--small.waka-carousel__indicator--line {
255
+ width: 1.5rem;
256
+ height: 0.1875rem;
257
+ }
258
+
259
+ .waka-carousel__indicator--medium {
260
+ width: 0.5rem;
261
+ height: 0.5rem;
262
+ }
263
+
264
+ .waka-carousel__indicator--medium.waka-carousel__indicator--line {
265
+ width: 2rem;
266
+ height: 0.25rem;
267
+ }
268
+
269
+ .waka-carousel__indicator--large {
270
+ width: 0.625rem;
271
+ height: 0.625rem;
272
+ }
273
+
274
+ .waka-carousel__indicator--large.waka-carousel__indicator--line {
275
+ width: 2.5rem;
276
+ height: 0.3125rem;
277
+ }
278
+
279
+ /* Miniatures */
280
+ .waka-carousel__thumbnails {
281
+ display: flex;
282
+ gap: 0.5rem;
283
+ padding: 1rem;
284
+ background-color: #f8fafc;
285
+ overflow-x: auto;
286
+ scrollbar-width: thin;
287
+ scrollbar-color: #cbd5e1 #f1f5f9;
288
+ border-top: 1px solid #e2e8f0;
289
+ }
290
+
291
+ .waka-carousel__thumbnails::-webkit-scrollbar {
292
+ height: 6px;
293
+ }
294
+
295
+ .waka-carousel__thumbnails::-webkit-scrollbar-track {
296
+ background: #f1f5f9;
297
+ border-radius: 3px;
298
+ }
299
+
300
+ .waka-carousel__thumbnails::-webkit-scrollbar-thumb {
301
+ background: #cbd5e1;
302
+ border-radius: 3px;
303
+ }
304
+
305
+ .waka-carousel__thumbnails::-webkit-scrollbar-thumb:hover {
306
+ background: #94a3b8;
307
+ }
308
+
309
+ .waka-carousel__thumbnail {
310
+ flex-shrink: 0;
311
+ border-radius: 0.375rem;
312
+ overflow: hidden;
313
+ border: 2px solid #d1d5db;
314
+ cursor: pointer;
315
+ transition: all 0.2s ease;
316
+ position: relative;
317
+ }
318
+
319
+ .waka-carousel__thumbnail:hover {
320
+ border-color: #9ca3af;
321
+ transform: scale(1.05);
322
+ }
323
+
324
+ .waka-carousel__thumbnail:focus {
325
+ outline: 2px solid #3b82f6;
326
+ outline-offset: 2px;
327
+ }
328
+
329
+ .waka-carousel__thumbnail--active {
330
+ border-color: #3b82f6;
331
+ box-shadow: 0 0 0 1px #3b82f6;
332
+ }
333
+
334
+ /* Tailles de miniatures */
335
+ .waka-carousel__thumbnail--small {
336
+ width: 3rem;
337
+ height: 3rem;
338
+ }
339
+
340
+ .waka-carousel__thumbnail--medium {
341
+ width: 4rem;
342
+ height: 4rem;
343
+ }
344
+
345
+ .waka-carousel__thumbnail--large {
346
+ width: 5rem;
347
+ height: 5rem;
348
+ }
349
+
350
+ .waka-carousel__thumbnail-image {
351
+ width: 100%;
352
+ height: 100%;
353
+ object-fit: cover;
354
+ transition: transform 0.2s ease;
355
+ }
356
+
357
+ .waka-carousel__thumbnail:hover .waka-carousel__thumbnail-image {
358
+ transform: scale(1.1);
359
+ }
360
+
361
+ /* Barre de progression */
362
+ .waka-carousel__progress {
363
+ position: absolute;
364
+ bottom: 0;
365
+ left: 0;
366
+ right: 0;
367
+ height: 0.25rem;
368
+ background: rgba(0, 0, 0, 0.3);
369
+ z-index: 5;
370
+ }
371
+
372
+ .waka-carousel__progress-bar {
373
+ height: 100%;
374
+ background: white;
375
+ transition: width 0.1s ease;
376
+ border-radius: 0 0.125rem 0.125rem 0;
377
+ }
378
+
379
+ /* Spinner de chargement */
380
+ .waka-carousel__loading {
381
+ position: absolute;
382
+ top: 50%;
383
+ left: 50%;
384
+ transform: translate(-50%, -50%);
385
+ z-index: 20;
386
+ background: rgba(0, 0, 0, 0.7);
387
+ color: white;
388
+ padding: 1rem;
389
+ border-radius: 0.5rem;
390
+ display: flex;
391
+ align-items: center;
392
+ justify-content: center;
393
+ backdrop-filter: blur(4px);
394
+ -webkit-backdrop-filter: blur(4px);
395
+ }
396
+
397
+ .waka-carousel__spinner {
398
+ width: 2rem;
399
+ height: 2rem;
400
+ border: 2px solid rgba(255, 255, 255, 0.3);
401
+ border-top: 2px solid white;
402
+ border-radius: 50%;
403
+ animation: spin 1s linear infinite;
404
+ }
405
+
406
+ /* Animations */
407
+ @keyframes fadeIn {
408
+ from {
409
+ opacity: 0;
410
+ }
411
+ to {
412
+ opacity: 1;
413
+ }
414
+ }
415
+
416
+ @keyframes slideIn {
417
+ from {
418
+ transform: translateX(100%);
419
+ }
420
+ to {
421
+ transform: translateX(0);
422
+ }
423
+ }
424
+
425
+ @keyframes slideOut {
426
+ from {
427
+ transform: translateX(0);
428
+ }
429
+ to {
430
+ transform: translateX(-100%);
431
+ }
432
+ }
433
+
434
+ @keyframes zoomIn {
435
+ from {
436
+ transform: scale(0.8);
437
+ opacity: 0;
438
+ }
439
+ to {
440
+ transform: scale(1);
441
+ opacity: 1;
442
+ }
443
+ }
444
+
445
+ @keyframes flip {
446
+ 0% {
447
+ transform: rotateY(0);
448
+ }
449
+ 50% {
450
+ transform: rotateY(90deg);
451
+ }
452
+ 100% {
453
+ transform: rotateY(0);
454
+ }
455
+ }
456
+
457
+ @keyframes spin {
458
+ 0% {
459
+ transform: rotate(0deg);
460
+ }
461
+ 100% {
462
+ transform: rotate(360deg);
463
+ }
464
+ }
465
+
466
+ /* Transitions */
467
+ .waka-carousel__image--fade {
468
+ animation: fadeIn 0.3s ease-in-out;
469
+ }
470
+
471
+ .waka-carousel__image--slide {
472
+ animation: slideIn 0.3s ease-in-out;
473
+ }
474
+
475
+ .waka-carousel__image--zoom {
476
+ animation: zoomIn 0.3s ease-in-out;
477
+ }
478
+
479
+ .waka-carousel__image--flip {
480
+ animation: flip 0.6s ease-in-out;
481
+ }
482
+
483
+ /* États de focus et hover */
484
+ .waka-carousel:focus-within {
485
+ outline: 2px solid #3b82f6;
486
+ outline-offset: 2px;
487
+ }
488
+
489
+ .waka-carousel__navigation:focus-visible,
490
+ .waka-carousel__control-button:focus-visible,
491
+ .waka-carousel__indicator:focus-visible,
492
+ .waka-carousel__thumbnail:focus-visible {
493
+ outline: 2px solid #3b82f6;
494
+ outline-offset: 2px;
495
+ }
496
+
497
+ /* Responsive */
498
+ @media (max-width: 768px) {
499
+ .waka-carousel__navigation {
500
+ padding: 0.5rem;
501
+ }
502
+
503
+ .waka-carousel__navigation svg {
504
+ width: 1rem;
505
+ height: 1rem;
506
+ }
507
+
508
+ .waka-carousel__control-button {
509
+ padding: 0.375rem;
510
+ }
511
+
512
+ .waka-carousel__control-button svg {
513
+ width: 0.875rem;
514
+ height: 0.875rem;
515
+ }
516
+
517
+ .waka-carousel__thumbnails {
518
+ padding: 0.75rem;
519
+ }
520
+
521
+ .waka-carousel__thumbnail--small {
522
+ width: 2.5rem;
523
+ height: 2.5rem;
524
+ }
525
+
526
+ .waka-carousel__thumbnail--medium {
527
+ width: 3rem;
528
+ height: 3rem;
529
+ }
530
+
531
+ .waka-carousel__thumbnail--large {
532
+ width: 3.5rem;
533
+ height: 3.5rem;
534
+ }
535
+
536
+ .waka-carousel__overlay {
537
+ padding: 1rem;
538
+ }
539
+
540
+ .waka-carousel__title {
541
+ font-size: 1rem;
542
+ }
543
+
544
+ .waka-carousel__description {
545
+ font-size: 0.8125rem;
546
+ }
547
+ }
548
+
549
+ @media (max-width: 480px) {
550
+ .waka-carousel__navigation {
551
+ padding: 0.375rem;
552
+ }
553
+
554
+ .waka-carousel__navigation--prev {
555
+ left: 0.5rem;
556
+ }
557
+
558
+ .waka-carousel__navigation--next {
559
+ right: 0.5rem;
560
+ }
561
+
562
+ .waka-carousel__control-button {
563
+ padding: 0.25rem;
564
+ }
565
+
566
+ .waka-carousel__control-button svg {
567
+ width: 0.75rem;
568
+ height: 0.75rem;
569
+ }
570
+
571
+ .waka-carousel__download-button {
572
+ right: 2.5rem;
573
+ }
574
+
575
+ .waka-carousel__share-button {
576
+ right: 4.5rem;
577
+ }
578
+ }
579
+
580
+ /* Mode sombre */
581
+ @media (prefers-color-scheme: dark) {
582
+ .waka-carousel__thumbnails {
583
+ background-color: #1f2937;
584
+ border-top-color: #374151;
585
+ }
586
+
587
+ .waka-carousel__thumbnail {
588
+ border-color: #374151;
589
+ }
590
+
591
+ .waka-carousel__thumbnail:hover {
592
+ border-color: #4b5563;
593
+ }
594
+
595
+ .waka-carousel__thumbnail--active {
596
+ border-color: #3b82f6;
597
+ box-shadow: 0 0 0 1px #3b82f6;
598
+ }
599
+ }
600
+
601
+ /* Mode sombre explicite */
602
+ .waka-carousel.dark .waka-carousel__thumbnails {
603
+ background-color: #1f2937;
604
+ border-top-color: #374151;
605
+ }
606
+
607
+ .waka-carousel.dark .waka-carousel__thumbnail {
608
+ border-color: #374151;
609
+ }
610
+
611
+ .waka-carousel.dark .waka-carousel__thumbnail:hover {
612
+ border-color: #4b5563;
613
+ }
614
+
615
+ .waka-carousel.dark .waka-carousel__thumbnail--active {
616
+ border-color: #3b82f6;
617
+ box-shadow: 0 0 0 1px #3b82f6;
618
+ }
619
+
620
+ /* Accessibilité - Réduction des animations */
621
+ @media (prefers-reduced-motion: reduce) {
622
+ .waka-carousel__image,
623
+ .waka-carousel__navigation,
624
+ .waka-carousel__control-button,
625
+ .waka-carousel__indicator,
626
+ .waka-carousel__thumbnail,
627
+ .waka-carousel__progress-bar {
628
+ transition: none;
629
+ animation: none;
630
+ }
631
+ }
632
+
633
+ /* Amélioration de la performance */
634
+ .waka-carousel__image {
635
+ will-change: opacity, transform;
636
+ }
637
+
638
+ .waka-carousel__navigation,
639
+ .waka-carousel__control-button,
640
+ .waka-carousel__indicator,
641
+ .waka-carousel__thumbnail {
642
+ will-change: transform, background-color;
643
+ }
644
+
645
+ /* Support des thèmes personnalisés */
646
+ .waka-carousel[data-theme="light"] {
647
+ background-color: #ffffff;
648
+ }
649
+
650
+ .waka-carousel[data-theme="dark"] {
651
+ background-color: #000000;
652
+ }
653
+
654
+ /* États d'erreur */
655
+ .waka-carousel__error {
656
+ position: absolute;
657
+ top: 50%;
658
+ left: 50%;
659
+ transform: translate(-50%, -50%);
660
+ z-index: 20;
661
+ background: rgba(239, 68, 68, 0.9);
662
+ color: white;
663
+ padding: 1rem;
664
+ border-radius: 0.5rem;
665
+ text-align: center;
666
+ backdrop-filter: blur(4px);
667
+ -webkit-backdrop-filter: blur(4px);
668
+ }
669
+
670
+ /* Amélioration de l'accessibilité */
671
+ .waka-carousel[aria-hidden="true"] {
672
+ display: none;
673
+ }
674
+
675
+ .waka-carousel__sr-only {
676
+ position: absolute;
677
+ width: 1px;
678
+ height: 1px;
679
+ padding: 0;
680
+ margin: -1px;
681
+ overflow: hidden;
682
+ clip: rect(0, 0, 0, 0);
683
+ white-space: nowrap;
684
+ border: 0;
685
+ }
686
+
687
+