@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.
- package/dist/blocks/footer/index.d.ts +19 -0
- package/dist/blocks/headtab/index.d.ts +27 -0
- package/dist/blocks/index.d.ts +5 -0
- package/dist/blocks/language-selector/index.d.ts +6 -0
- package/dist/blocks/layout/index.d.ts +28 -0
- package/dist/blocks/login/index.d.ts +13 -0
- package/dist/components/DataTable/DataTable.d.ts +17 -0
- package/dist/components/DataTable/DataTableAdvanced.d.ts +27 -0
- package/dist/components/DataTable/DataTableColumnResizer.d.ts +8 -0
- package/dist/components/DataTable/DataTableContextMenu.d.ts +47 -0
- package/dist/components/DataTable/DataTableEditCell.d.ts +29 -0
- package/dist/components/DataTable/DataTableFilters.d.ts +14 -0
- package/dist/components/DataTable/DataTableGrouping.d.ts +25 -0
- package/dist/components/DataTable/DataTablePagination.d.ts +8 -0
- package/dist/components/DataTable/DataTableSelection.d.ts +46 -0
- package/dist/components/DataTable/DataTableToolbar.d.ts +14 -0
- package/dist/components/DataTable/examples/EditExample.d.ts +2 -0
- package/dist/components/DataTable/hooks/useDataTable.d.ts +24 -0
- package/dist/components/DataTable/hooks/useDataTableAdvanced.d.ts +38 -0
- package/dist/components/DataTable/hooks/useDataTableEdit.d.ts +22 -0
- package/dist/components/DataTable/hooks/useDataTableExport.d.ts +15 -0
- package/dist/components/DataTable/hooks/useDataTableImport.d.ts +12 -0
- package/dist/components/DataTable/hooks/useDataTableTheme.d.ts +16 -0
- package/dist/components/DataTable/hooks/useDataTableVirtualization.d.ts +19 -0
- package/dist/components/DataTable/hooks/useTableLayout.d.ts +26 -0
- package/dist/components/DataTable/index.d.ts +37 -0
- package/dist/components/DataTable/types.d.ts +461 -0
- package/dist/components/DataTable/utils.d.ts +37 -0
- package/dist/components/accordion/index.d.ts +7 -0
- package/dist/components/alert/index.d.ts +8 -0
- package/dist/components/alert-dialog/index.d.ts +20 -0
- package/dist/components/aspect-ratio/index.d.ts +3 -0
- package/dist/components/avatar/index.d.ts +6 -0
- package/dist/components/badge/index.d.ts +9 -0
- package/dist/components/button/index.d.ts +11 -0
- package/dist/components/calendar/index.d.ts +8 -0
- package/dist/components/card/index.d.ts +8 -0
- package/dist/components/checkbox/index.d.ts +4 -0
- package/dist/components/code/index.d.ts +29 -0
- package/dist/components/collapsible/index.d.ts +5 -0
- package/dist/components/command/index.d.ts +51 -0
- package/dist/components/context-menu/index.d.ts +27 -0
- package/dist/components/dialog/index.d.ts +19 -0
- package/dist/components/dropdown-menu/index.d.ts +27 -0
- package/dist/components/form/index.d.ts +23 -0
- package/dist/components/hover-card/index.d.ts +6 -0
- package/dist/components/index.d.ts +52 -0
- package/dist/components/input/index.d.ts +5 -0
- package/dist/components/input-otp/index.d.ts +51 -0
- package/dist/components/label/index.d.ts +5 -0
- package/dist/components/language-selector/index.d.ts +40 -0
- package/dist/components/menubar/index.d.ts +28 -0
- package/dist/components/navigation-menu/index.d.ts +12 -0
- package/dist/components/popover/index.d.ts +6 -0
- package/dist/components/progress/index.d.ts +4 -0
- package/dist/components/radio-group/index.d.ts +5 -0
- package/dist/components/scroll-area/index.d.ts +5 -0
- package/dist/components/select/index.d.ts +13 -0
- package/dist/components/separator/index.d.ts +4 -0
- package/dist/components/sheet/index.d.ts +27 -0
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/slider/index.d.ts +4 -0
- package/dist/components/switch/index.d.ts +4 -0
- package/dist/components/table/index.d.ts +10 -0
- package/dist/components/tabs/index.d.ts +7 -0
- package/dist/components/textarea/index.d.ts +5 -0
- package/dist/components/theme-selector/index.d.ts +8 -0
- package/dist/components/toast/index.d.ts +15 -0
- package/dist/components/toaster/index.d.ts +1 -0
- package/dist/components/toggle/index.d.ts +12 -0
- package/dist/components/tooltip/index.d.ts +7 -0
- package/dist/components/typography/index.d.ts +85 -0
- package/dist/components/waka-admincrumb/index.d.ts +41 -0
- package/dist/components/waka-carousel/index.d.ts +105 -0
- package/dist/components/waka-datetime-picker/index.d.ts +135 -0
- package/dist/components/waka-datetime-picker.form-integration/index.d.ts +69 -0
- package/dist/components/waka-notifications/index.d.ts +40 -0
- package/dist/components/waka-spinner/index.d.ts +46 -0
- package/dist/components/waka-theme-creator/index.d.ts +59 -0
- package/dist/components/waka-theme-manager/index.d.ts +62 -0
- package/dist/context/admincrumb-context.d.ts +34 -0
- package/dist/context/index.d.ts +8 -0
- package/dist/context/language-context.d.ts +57 -0
- package/dist/context/theme-context.d.ts +39 -0
- package/dist/context/theme-provider.d.ts +74 -0
- package/dist/context/waka-provider.d.ts +50 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/use-toast.d.ts +44 -0
- package/dist/hooks/use-translation.d.ts +15 -0
- package/dist/hooks/useToast.d.ts +44 -0
- package/dist/index.cjs.js +70 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.es.js +16379 -0
- package/dist/lib/i18n.d.ts +4 -0
- package/dist/types/provider.d.ts +108 -0
- package/dist/ui.css +1 -0
- package/dist/utils/cn.d.ts +1 -0
- package/dist/utils/datetime-helpers.d.ts +137 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/theme-loader.d.ts +101 -0
- package/dist/utils/tweak.d.ts +18 -0
- package/package.json +118 -0
- package/src/styles/carousel.css +687 -0
- package/src/styles/code-highlight.css +232 -0
- package/src/styles/datepicker.css +420 -0
- package/src/styles/globals.css +84 -0
- package/src/styles/prism.css +261 -0
- package/src/styles/themes/forest.css +55 -0
- package/src/styles/themes/index.css +7 -0
- package/src/styles/themes/monochrome.css +55 -0
- package/src/styles/themes/perpetuity.css +55 -0
- package/src/styles/themes/sunset.css +55 -0
- package/src/styles/themes/twilight.css +55 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration d'un thème
|
|
3
|
+
*/
|
|
4
|
+
export interface ThemeConfigItem {
|
|
5
|
+
/** Identifiant du thème */
|
|
6
|
+
id: string;
|
|
7
|
+
/** Nom d'affichage */
|
|
8
|
+
label: string;
|
|
9
|
+
/** Description optionnelle */
|
|
10
|
+
description?: string;
|
|
11
|
+
/** Couleur représentative */
|
|
12
|
+
previewColor?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Configuration S3 pour les thèmes
|
|
16
|
+
*/
|
|
17
|
+
export interface ThemeS3Config {
|
|
18
|
+
/** URL de base du bucket S3 */
|
|
19
|
+
baseUrl: string;
|
|
20
|
+
/** Préfixe des fichiers (ex: "themes/") */
|
|
21
|
+
prefix?: string;
|
|
22
|
+
/** Extension des fichiers (défaut: "css") */
|
|
23
|
+
extension?: string;
|
|
24
|
+
/** Headers personnalisés */
|
|
25
|
+
headers?: Record<string, string>;
|
|
26
|
+
/** Timeout en millisecondes */
|
|
27
|
+
timeout?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Configuration du thème WakaStart
|
|
31
|
+
*/
|
|
32
|
+
export interface WakaThemeConfig {
|
|
33
|
+
/** Thème par défaut à appliquer */
|
|
34
|
+
defaultTheme?: string;
|
|
35
|
+
/** Activer le stockage du thème dans localStorage */
|
|
36
|
+
storageKey?: string;
|
|
37
|
+
/** Liste des thèmes disponibles */
|
|
38
|
+
themes?: ThemeConfigItem[];
|
|
39
|
+
/** Thème système (auto) */
|
|
40
|
+
enableSystem?: boolean;
|
|
41
|
+
/** Configuration S3 pour charger les thèmes */
|
|
42
|
+
s3Config?: ThemeS3Config;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Configuration S3 pour le chargement des traductions
|
|
46
|
+
*/
|
|
47
|
+
export interface WakaS3Config {
|
|
48
|
+
/** URL du bucket S3 */
|
|
49
|
+
bucketUrl: string;
|
|
50
|
+
/** Région AWS */
|
|
51
|
+
region?: string;
|
|
52
|
+
/** Clé d'accès (optionnel) */
|
|
53
|
+
accessKeyId?: string;
|
|
54
|
+
/** Clé secrète (optionnel) */
|
|
55
|
+
secretAccessKey?: string;
|
|
56
|
+
/** Dossier des traductions dans le bucket */
|
|
57
|
+
translationsPath?: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Configuration d'une langue
|
|
61
|
+
*/
|
|
62
|
+
export interface LanguageConfigItem {
|
|
63
|
+
/** Code de la langue */
|
|
64
|
+
code: string;
|
|
65
|
+
/** Nom d'affichage */
|
|
66
|
+
label: string;
|
|
67
|
+
/** Emoji drapeau */
|
|
68
|
+
flagEmoji?: string;
|
|
69
|
+
/** URL du drapeau */
|
|
70
|
+
flag?: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Configuration de la langue et des traductions
|
|
74
|
+
*/
|
|
75
|
+
export interface WakaLanguageConfig {
|
|
76
|
+
/** Langue par défaut */
|
|
77
|
+
defaultLanguage: string;
|
|
78
|
+
/** Langues supportées */
|
|
79
|
+
supportedLanguages: string[];
|
|
80
|
+
/** Liste des langues avec configuration */
|
|
81
|
+
languages?: LanguageConfigItem[];
|
|
82
|
+
/** Configuration S3 pour le chargement distant des traductions */
|
|
83
|
+
s3Config?: WakaS3Config;
|
|
84
|
+
/** Traductions locales (fallback ou complètes) */
|
|
85
|
+
resources?: Record<string, Record<string, Record<string, string>>>;
|
|
86
|
+
/** Activer le stockage de la langue dans localStorage */
|
|
87
|
+
storageKey?: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Configuration globale du WakaProvider
|
|
91
|
+
*/
|
|
92
|
+
export interface WakaProviderConfig {
|
|
93
|
+
/** Configuration du thème */
|
|
94
|
+
theme?: WakaThemeConfig;
|
|
95
|
+
/** Configuration de la langue */
|
|
96
|
+
language: WakaLanguageConfig;
|
|
97
|
+
/** Activer le mode debug */
|
|
98
|
+
debug?: boolean;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Props du WakaProvider
|
|
102
|
+
*/
|
|
103
|
+
export interface WakaProviderProps {
|
|
104
|
+
/** Configuration du provider */
|
|
105
|
+
config: WakaProviderConfig;
|
|
106
|
+
/** Children */
|
|
107
|
+
children: React.ReactNode;
|
|
108
|
+
}
|
package/dist/ui.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";.react-datepicker__navigation-icon:before,.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{border-color:#ccc;border-style:solid;border-width:3px 3px 0 0;content:"";display:block;height:9px;position:absolute;top:6px;width:9px}.react-datepicker__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.react-datepicker-wrapper{display:inline-block;padding:0;border:0}.react-datepicker{font-family:Helvetica Neue,helvetica,arial,sans-serif;font-size:.8rem;background-color:#fff;color:#000;border:1px solid #aeaeae;border-radius:.3rem;display:inline-block;position:relative;line-height:initial}.react-datepicker--time-only .react-datepicker__time-container{border-left:0}.react-datepicker--time-only .react-datepicker__time,.react-datepicker--time-only .react-datepicker__time-box{border-bottom-left-radius:.3rem;border-bottom-right-radius:.3rem}.react-datepicker-popper{z-index:1;line-height:0}.react-datepicker-popper .react-datepicker__triangle{stroke:#aeaeae}.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle{fill:#f0f0f0;color:#f0f0f0}.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle{fill:#fff;color:#fff}.react-datepicker__header{text-align:center;background-color:#f0f0f0;border-bottom:1px solid #aeaeae;border-top-left-radius:.3rem;padding:8px 0;position:relative}.react-datepicker__header--time{padding-bottom:8px;padding-left:5px;padding-right:5px}.react-datepicker__header--time:not(.react-datepicker__header--time--only){border-top-left-radius:0}.react-datepicker__header:not(.react-datepicker__header--has-time-select){border-top-right-radius:.3rem}.react-datepicker__year-dropdown-container--select,.react-datepicker__month-dropdown-container--select,.react-datepicker__month-year-dropdown-container--select,.react-datepicker__year-dropdown-container--scroll,.react-datepicker__month-dropdown-container--scroll,.react-datepicker__month-year-dropdown-container--scroll{display:inline-block;margin:0 15px}.react-datepicker__current-month,.react-datepicker-time__header,.react-datepicker-year-header{margin-top:0;color:#000;font-weight:700;font-size:.944rem}h2.react-datepicker__current-month{padding:0;margin:0}.react-datepicker-time__header{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.react-datepicker__navigation{align-items:center;background:none;display:flex;justify-content:center;text-align:center;cursor:pointer;position:absolute;top:2px;padding:0;border:none;z-index:1;height:32px;width:32px;text-indent:-999em;overflow:hidden}.react-datepicker__navigation--previous{left:2px}.react-datepicker__navigation--next{right:2px}.react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button){right:85px}.react-datepicker__navigation--years{position:relative;top:0;display:block;margin-left:auto;margin-right:auto}.react-datepicker__navigation--years-previous{top:4px}.react-datepicker__navigation--years-upcoming{top:-4px}.react-datepicker__navigation:hover *:before{border-color:#a6a6a6}.react-datepicker__navigation-icon{position:relative;top:-1px;font-size:20px;width:0}.react-datepicker__navigation-icon--next{left:-2px}.react-datepicker__navigation-icon--next:before{transform:rotate(45deg);left:-7px}.react-datepicker__navigation-icon--previous{right:-2px}.react-datepicker__navigation-icon--previous:before{transform:rotate(225deg);right:-7px}.react-datepicker__month-container{float:left}.react-datepicker__year{margin:.4rem;text-align:center}.react-datepicker__year-wrapper{display:flex;flex-wrap:wrap;max-width:180px}.react-datepicker__year .react-datepicker__year-text{display:inline-block;width:4rem;margin:2px}.react-datepicker__month{margin:.4rem;text-align:center}.react-datepicker__month .react-datepicker__month-text,.react-datepicker__month .react-datepicker__quarter-text{display:inline-block;width:4rem;margin:2px}.react-datepicker__input-time-container{clear:both;width:100%;float:left;margin:5px 0 10px 15px;text-align:left}.react-datepicker__input-time-container .react-datepicker-time__caption,.react-datepicker__input-time-container .react-datepicker-time__input-container{display:inline-block}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input{display:inline-block;margin-left:10px}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input{width:auto}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button,.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]{-moz-appearance:textfield}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter{margin-left:5px;display:inline-block}.react-datepicker__time-container{float:right;border-left:1px solid #aeaeae;width:85px}.react-datepicker__time-container--with-today-button{display:inline;border:1px solid #aeaeae;border-radius:.3rem;position:absolute;right:-87px;top:0}.react-datepicker__time-container .react-datepicker__time{position:relative;background:#fff;border-bottom-right-radius:.3rem}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box{width:85px;overflow-x:hidden;margin:0 auto;text-align:center;border-bottom-right-radius:.3rem}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list{list-style:none;margin:0;height:calc(195px + .85rem);overflow-y:scroll;padding-right:0;padding-left:0;width:100%;box-sizing:content-box}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item{height:30px;padding:5px 10px;white-space:nowrap}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover{cursor:pointer;background-color:#f0f0f0}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected{background-color:#216ba5;color:#fff;font-weight:700}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover{background-color:#216ba5}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled{color:#ccc}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover{cursor:default;background-color:transparent}.react-datepicker__week-number{color:#ccc;display:inline-block;width:1.7rem;line-height:1.7rem;text-align:center;margin:.166rem}.react-datepicker__week-number.react-datepicker__week-number--clickable{cursor:pointer}.react-datepicker__week-number.react-datepicker__week-number--clickable:not(.react-datepicker__week-number--selected):hover{border-radius:.3rem;background-color:#f0f0f0}.react-datepicker__week-number--selected{border-radius:.3rem;background-color:#216ba5;color:#fff}.react-datepicker__week-number--selected:hover{background-color:#1d5d90}.react-datepicker__day-names{white-space:nowrap;margin-bottom:-8px}.react-datepicker__week{white-space:nowrap}.react-datepicker__day-name,.react-datepicker__day,.react-datepicker__time-name{color:#000;display:inline-block;width:1.7rem;line-height:1.7rem;text-align:center;margin:.166rem}.react-datepicker__day,.react-datepicker__month-text,.react-datepicker__quarter-text,.react-datepicker__year-text{cursor:pointer}.react-datepicker__day:not([aria-disabled=true]):hover,.react-datepicker__month-text:not([aria-disabled=true]):hover,.react-datepicker__quarter-text:not([aria-disabled=true]):hover,.react-datepicker__year-text:not([aria-disabled=true]):hover{border-radius:.3rem;background-color:#f0f0f0}.react-datepicker__day--today,.react-datepicker__month-text--today,.react-datepicker__quarter-text--today,.react-datepicker__year-text--today{font-weight:700}.react-datepicker__day--highlighted,.react-datepicker__month-text--highlighted,.react-datepicker__quarter-text--highlighted,.react-datepicker__year-text--highlighted{border-radius:.3rem;background-color:#3dcc4a;color:#fff}.react-datepicker__day--highlighted:not([aria-disabled=true]):hover,.react-datepicker__month-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__year-text--highlighted:not([aria-disabled=true]):hover{background-color:#32be3f}.react-datepicker__day--highlighted-custom-1,.react-datepicker__month-text--highlighted-custom-1,.react-datepicker__quarter-text--highlighted-custom-1,.react-datepicker__year-text--highlighted-custom-1{color:#f0f}.react-datepicker__day--highlighted-custom-2,.react-datepicker__month-text--highlighted-custom-2,.react-datepicker__quarter-text--highlighted-custom-2,.react-datepicker__year-text--highlighted-custom-2{color:green}.react-datepicker__day--holidays,.react-datepicker__month-text--holidays,.react-datepicker__quarter-text--holidays,.react-datepicker__year-text--holidays{position:relative;border-radius:.3rem;background-color:#ff6803;color:#fff}.react-datepicker__day--holidays .overlay,.react-datepicker__month-text--holidays .overlay,.react-datepicker__quarter-text--holidays .overlay,.react-datepicker__year-text--holidays .overlay{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background-color:#333;color:#fff;padding:4px;border-radius:4px;white-space:nowrap;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s ease-in-out}.react-datepicker__day--holidays:not([aria-disabled=true]):hover,.react-datepicker__month-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__year-text--holidays:not([aria-disabled=true]):hover{background-color:#cf5300}.react-datepicker__day--holidays:hover .overlay,.react-datepicker__month-text--holidays:hover .overlay,.react-datepicker__quarter-text--holidays:hover .overlay,.react-datepicker__year-text--holidays:hover .overlay{visibility:visible;opacity:1}.react-datepicker__day--selected,.react-datepicker__day--in-selecting-range,.react-datepicker__day--in-range,.react-datepicker__month-text--selected,.react-datepicker__month-text--in-selecting-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--selected,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--selected,.react-datepicker__year-text--in-selecting-range,.react-datepicker__year-text--in-range{border-radius:.3rem;background-color:#216ba5;color:#fff}.react-datepicker__day--selected:not([aria-disabled=true]):hover,.react-datepicker__day--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__day--in-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-range:not([aria-disabled=true]):hover{background-color:#1d5d90}.react-datepicker__day--keyboard-selected,.react-datepicker__month-text--keyboard-selected,.react-datepicker__quarter-text--keyboard-selected,.react-datepicker__year-text--keyboard-selected{border-radius:.3rem;background-color:#bad9f1;color:#000}.react-datepicker__day--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--keyboard-selected:not([aria-disabled=true]):hover{background-color:#1d5d90}.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__month-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__quarter-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__year-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range){background-color:#216ba580}.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range){background-color:#f0f0f0;color:#000}.react-datepicker__day--disabled,.react-datepicker__month-text--disabled,.react-datepicker__quarter-text--disabled,.react-datepicker__year-text--disabled{cursor:default;color:#ccc}.react-datepicker__day--disabled .overlay,.react-datepicker__month-text--disabled .overlay,.react-datepicker__quarter-text--disabled .overlay,.react-datepicker__year-text--disabled .overlay{position:absolute;bottom:70%;left:50%;transform:translate(-50%);background-color:#333;color:#fff;padding:4px;border-radius:4px;white-space:nowrap;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s ease-in-out}.react-datepicker__input-container{position:relative;display:inline-block;width:100%}.react-datepicker__input-container .react-datepicker__calendar-icon{position:absolute;padding:.5rem;box-sizing:content-box}.react-datepicker__view-calendar-icon input{padding:6px 10px 5px 25px}.react-datepicker__year-read-view,.react-datepicker__month-read-view,.react-datepicker__month-year-read-view{border:1px solid transparent;border-radius:.3rem;position:relative}.react-datepicker__year-read-view:hover,.react-datepicker__month-read-view:hover,.react-datepicker__month-year-read-view:hover{cursor:pointer}.react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow{border-top-color:#b3b3b3}.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{transform:rotate(135deg);right:-16px;top:0}.react-datepicker__year-dropdown,.react-datepicker__month-dropdown,.react-datepicker__month-year-dropdown{background-color:#f0f0f0;position:absolute;width:50%;left:25%;top:30px;z-index:1;text-align:center;border-radius:.3rem;border:1px solid #aeaeae}.react-datepicker__year-dropdown:hover,.react-datepicker__month-dropdown:hover,.react-datepicker__month-year-dropdown:hover{cursor:pointer}.react-datepicker__year-dropdown--scrollable,.react-datepicker__month-dropdown--scrollable,.react-datepicker__month-year-dropdown--scrollable{height:150px;overflow-y:scroll}.react-datepicker__year-option,.react-datepicker__month-option,.react-datepicker__month-year-option{line-height:20px;width:100%;display:block;margin-left:auto;margin-right:auto}.react-datepicker__year-option:first-of-type,.react-datepicker__month-option:first-of-type,.react-datepicker__month-year-option:first-of-type{border-top-left-radius:.3rem;border-top-right-radius:.3rem}.react-datepicker__year-option:last-of-type,.react-datepicker__month-option:last-of-type,.react-datepicker__month-year-option:last-of-type{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-bottom-left-radius:.3rem;border-bottom-right-radius:.3rem}.react-datepicker__year-option:hover,.react-datepicker__month-option:hover,.react-datepicker__month-year-option:hover{background-color:#ccc}.react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming{border-bottom-color:#b3b3b3}.react-datepicker__year-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous{border-top-color:#b3b3b3}.react-datepicker__year-option--selected,.react-datepicker__month-option--selected,.react-datepicker__month-year-option--selected{position:absolute;left:15px}.react-datepicker__close-icon{cursor:pointer;background-color:transparent;border:0;outline:0;padding:0 6px 0 0;position:absolute;top:0;right:0;height:100%;display:table-cell;vertical-align:middle}.react-datepicker__close-icon:after{cursor:pointer;background-color:#216ba5;color:#fff;border-radius:50%;height:16px;width:16px;padding:2px;font-size:12px;line-height:1;text-align:center;display:table-cell;vertical-align:middle;content:"×"}.react-datepicker__close-icon--disabled{cursor:default}.react-datepicker__close-icon--disabled:after{cursor:default;background-color:#ccc}.react-datepicker__today-button{background:#f0f0f0;border-top:1px solid #aeaeae;cursor:pointer;text-align:center;font-weight:700;padding:5px 0;clear:left}.react-datepicker__portal{position:fixed;width:100vw;height:100vh;background-color:#000c;left:0;top:0;justify-content:center;align-items:center;display:flex;z-index:2147483647}.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__time-name{width:3rem;line-height:3rem}@media (max-width: 400px),(max-height: 550px){.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__time-name{width:2rem;line-height:2rem}}.react-datepicker__portal .react-datepicker__current-month,.react-datepicker__portal .react-datepicker-time__header{font-size:1.44rem}.react-datepicker__children-container{width:13.8rem;margin:.4rem;padding-right:.2rem;padding-left:.2rem;height:auto}.react-datepicker__aria-live{position:absolute;clip-path:circle(0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;width:1px;white-space:nowrap}.react-datepicker__calendar-icon{width:1em;height:1em;vertical-align:-.125em}.react-datepicker-wrapper,.react-datepicker__input-container{display:block!important;width:100%!important}.react-datepicker-popper{z-index:9999!important}.react-datepicker{font-family:inherit!important;font-size:.875rem!important;background-color:hsl(var(--popover))!important;color:hsl(var(--popover-foreground))!important;border:1px solid hsl(var(--border))!important;border-radius:.5rem!important;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d!important;display:inline-block!important;position:relative!important}.react-datepicker__header{text-align:center!important;background-color:hsl(var(--popover))!important;border-bottom:1px solid hsl(var(--border))!important;border-top-left-radius:.5rem!important;border-top-right-radius:.5rem!important;padding:.5rem 0!important;position:relative!important}.react-datepicker__current-month{margin-top:0!important;color:hsl(var(--foreground))!important;font-weight:600!important;font-size:.875rem!important}.react-datepicker__day-names{margin-bottom:-.5rem!important;display:flex!important;justify-content:space-around!important;padding:.5rem 0!important}.react-datepicker__day-name{color:hsl(var(--muted-foreground))!important;display:inline-block!important;width:2rem!important;line-height:2rem!important;text-align:center!important;margin:.166rem!important;font-weight:500!important;font-size:.75rem!important}.react-datepicker__navigation{background:none!important;border:none!important;line-height:1.7rem!important;text-align:center!important;cursor:pointer!important;position:absolute!important;top:.5rem!important;padding:0!important;z-index:1!important;height:2rem!important;width:2rem!important;text-indent:-999em!important;overflow:hidden!important;border-radius:.25rem!important}.react-datepicker__navigation:hover{background-color:hsl(var(--accent))!important}.react-datepicker__navigation--previous{left:.5rem!important;border-right-color:hsl(var(--foreground))!important}.react-datepicker__navigation--next{right:.5rem!important;border-left-color:hsl(var(--foreground))!important}.react-datepicker__navigation-icon:before{border-color:hsl(var(--foreground))!important;border-style:solid!important;border-width:2px 2px 0 0!important;content:""!important;display:block!important;height:9px!important;position:absolute!important;top:6px!important;width:9px!important}.react-datepicker__navigation-icon--previous:before{transform:rotate(225deg)!important;right:-2px!important}.react-datepicker__navigation-icon--next:before{transform:rotate(45deg)!important;left:-2px!important}.react-datepicker__month{margin:.4rem!important;text-align:center!important}.react-datepicker__week{display:flex!important;justify-content:space-around!important}.react-datepicker__day{cursor:pointer!important;display:inline-block!important;width:2rem!important;line-height:2rem!important;text-align:center!important;margin:.166rem!important;color:hsl(var(--foreground))!important;border-radius:.375rem!important;font-size:.875rem!important;background:transparent!important;transition:all .15s ease-in-out!important}.react-datepicker__day:hover{background-color:hsl(var(--accent))!important;color:hsl(var(--accent-foreground))!important}.react-datepicker__day--selected{background-color:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important;font-weight:600!important}.react-datepicker__day--selected:hover{background-color:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important}.react-datepicker__day--today{background-color:hsl(var(--accent))!important;color:hsl(var(--accent-foreground))!important;font-weight:600!important}.react-datepicker__day--keyboard-selected{background-color:hsl(var(--accent))!important;color:hsl(var(--accent-foreground))!important}.react-datepicker__day--outside-month{color:hsl(var(--muted-foreground))!important;opacity:.5!important}.react-datepicker__day--disabled{cursor:not-allowed!important;opacity:.3!important;color:hsl(var(--muted-foreground))!important}.react-datepicker__day--disabled:hover{background-color:transparent!important}.react-datepicker__day--in-range{background-color:hsl(var(--primary) / .2)!important;color:hsl(var(--primary))!important}.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range){background-color:hsl(var(--primary) / .1)!important}.react-datepicker__day--range-start,.react-datepicker__day--range-end{background-color:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important}.react-datepicker__time-container{float:right!important;border-left:1px solid hsl(var(--border))!important;width:85px!important}.react-datepicker__time{position:relative!important;background:hsl(var(--popover))!important;border-bottom-right-radius:.5rem!important}.react-datepicker__time-box{width:85px!important;overflow-x:hidden!important;margin:0 auto!important;text-align:center!important;border-bottom-right-radius:.5rem!important}.react-datepicker__time-list{height:calc(195px + .85rem)!important;overflow-y:scroll!important;margin:0!important;padding:0!important;list-style:none!important;background:hsl(var(--popover))!important}.react-datepicker__time-list-item{height:30px!important;padding:5px 10px!important;white-space:nowrap!important;cursor:pointer!important;color:hsl(var(--foreground))!important;font-size:.875rem!important}.react-datepicker__time-list-item:hover{background-color:hsl(var(--accent))!important;color:hsl(var(--accent-foreground))!important}.react-datepicker__time-list-item--selected{background-color:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important;font-weight:600!important}.react-datepicker__time-list-item--disabled{color:hsl(var(--muted-foreground))!important;opacity:.3!important;cursor:not-allowed!important}.react-datepicker__time-list-item--disabled:hover{background-color:transparent!important}.react-datepicker__input-container input{width:100%!important;border-radius:.375rem!important;border:1px solid hsl(var(--input))!important;background-color:hsl(var(--background))!important;padding:.5rem .75rem!important;font-size:.875rem!important;line-height:1.25rem!important;color:hsl(var(--foreground))!important}.react-datepicker__input-container input:focus{outline:none!important;box-shadow:0 0 0 2px hsl(var(--ring))!important;border-color:hsl(var(--ring))!important}.react-datepicker__input-container input::placeholder{color:hsl(var(--muted-foreground))!important}.react-datepicker__input-container input:disabled{cursor:not-allowed!important;opacity:.5!important}.react-datepicker__week-number{color:hsl(var(--muted-foreground))!important;display:inline-block!important;width:2rem!important;line-height:2rem!important;text-align:center!important;margin:.166rem!important;font-weight:500!important;font-size:.75rem!important}.react-datepicker__month-dropdown,.react-datepicker__year-dropdown{background-color:hsl(var(--popover))!important;position:absolute!important;width:50%!important;left:25%!important;top:30px!important;z-index:1!important;text-align:center!important;border-radius:.5rem!important;border:1px solid hsl(var(--border))!important;box-shadow:0 10px 15px -3px #0000001a!important}.react-datepicker__month-option,.react-datepicker__year-option{line-height:20px!important;width:100%!important;display:block!important;padding:.5rem!important;cursor:pointer!important;color:hsl(var(--foreground))!important}.react-datepicker__month-option:hover,.react-datepicker__year-option:hover{background-color:hsl(var(--accent))!important;color:hsl(var(--accent-foreground))!important}.react-datepicker__month-option--selected_month,.react-datepicker__year-option--selected_year{background-color:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important;font-weight:600!important}.react-datepicker__portal{position:fixed!important;width:100vw!important;height:100vh!important;background-color:#000c!important;left:0!important;top:0!important;justify-content:center!important;align-items:center!important;display:flex!important;z-index:2147483647!important}.react-datepicker__portal .react-datepicker{position:relative!important}.waka-datepicker-container{position:relative!important;display:block!important;width:100%!important}.waka-datepicker-container .react-datepicker-wrapper{display:block!important;width:100%!important}.waka-datepicker .highlighted-date{position:relative!important;background-color:hsl(var(--accent) / .5)!important;color:hsl(var(--accent-foreground))!important;font-weight:600!important}.waka-datepicker .highlighted-date:after{content:""!important;position:absolute!important;bottom:.25rem!important;left:50%!important;transform:translate(-50%)!important;width:.25rem!important;height:.25rem!important;border-radius:50%!important;background-color:hsl(var(--primary))!important}.waka-datepicker.no-animations *{transition:none!important;animation:none!important}.react-datepicker__month-container{float:left!important}.react-datepicker--time-only .react-datepicker__time-container{border-left:0!important}.react-datepicker--time-only .react-datepicker__time{border-radius:.5rem!important}.react-datepicker *{box-sizing:border-box!important}.react-datepicker button{border:none!important;cursor:pointer!important;background:transparent!important;padding:0!important}.waka-carousel{position:relative;overflow:hidden;border-radius:.5rem;background-color:#000;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.waka-carousel--fullscreen{position:fixed;inset:0;z-index:9999;border-radius:0;background-color:#000}.waka-carousel__image-container{position:relative;width:100%;height:100%;overflow:hidden}.waka-carousel__image{width:100%;height:100%;object-fit:cover;transition:opacity .3s ease-in-out,transform .3s ease-in-out;will-change:opacity,transform}.waka-carousel__overlay{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(to top,rgba(0,0,0,.8),transparent);padding:1.5rem;color:#fff;z-index:5}.waka-carousel__title{font-size:1.25rem;font-weight:600;margin-bottom:.5rem;color:#fff;line-height:1.3}.waka-carousel__description{font-size:.875rem;color:#ffffffe6;line-height:1.4;margin-bottom:.5rem}.waka-carousel__caption{font-size:.75rem;color:#fffc;font-style:italic}.waka-carousel__navigation{position:absolute;top:50%;transform:translateY(-50%);z-index:10;background:#0009;color:#fff;padding:.75rem;border-radius:50%;border:none;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.waka-carousel__navigation:hover{background:#000c;transform:translateY(-50%) scale(1.1)}.waka-carousel__navigation:focus{outline:2px solid rgba(255,255,255,.8);outline-offset:2px}.waka-carousel__navigation:active{transform:translateY(-50%) scale(.95)}.waka-carousel__navigation--prev{left:1rem}.waka-carousel__navigation--next{right:1rem}.waka-carousel__navigation--small{padding:.5rem}.waka-carousel__navigation--large{padding:1rem}.waka-carousel__control-button{position:absolute;top:1rem;z-index:10;background:#0009;color:#fff;padding:.5rem;border-radius:50%;border:none;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.waka-carousel__control-button:hover{background:#000c;transform:scale(1.1)}.waka-carousel__control-button:focus{outline:2px solid rgba(255,255,255,.8);outline-offset:2px}.waka-carousel__play-button{right:1rem}.waka-carousel__fullscreen-button{left:1rem}.waka-carousel__download-button{right:3.5rem}.waka-carousel__share-button{right:6rem}.waka-carousel__counter{position:absolute;top:1rem;left:50%;transform:translate(-50%);z-index:10;background:#0009;color:#fff;padding:.5rem 1rem;border-radius:1rem;font-size:.875rem;font-weight:500;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.waka-carousel__indicators{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);display:flex;gap:.5rem;z-index:10}.waka-carousel__indicator{border:none;cursor:pointer;transition:all .2s ease;background:#ffffff80;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.waka-carousel__indicator:hover{background:#ffffffb3;transform:scale(1.1)}.waka-carousel__indicator:focus{outline:2px solid rgba(255,255,255,.8);outline-offset:2px}.waka-carousel__indicator--active{background:#fff}.waka-carousel__indicator--circle{width:.5rem;height:.5rem;border-radius:50%}.waka-carousel__indicator--square{width:.5rem;height:.5rem;border-radius:.125rem}.waka-carousel__indicator--diamond{width:.5rem;height:.5rem;border-radius:.125rem;transform:rotate(45deg)}.waka-carousel__indicator--line{height:.25rem;border-radius:.125rem}.waka-carousel__indicator--small{width:.375rem;height:.375rem}.waka-carousel__indicator--small.waka-carousel__indicator--line{width:1.5rem;height:.1875rem}.waka-carousel__indicator--medium{width:.5rem;height:.5rem}.waka-carousel__indicator--medium.waka-carousel__indicator--line{width:2rem;height:.25rem}.waka-carousel__indicator--large{width:.625rem;height:.625rem}.waka-carousel__indicator--large.waka-carousel__indicator--line{width:2.5rem;height:.3125rem}.waka-carousel__thumbnails{display:flex;gap:.5rem;padding:1rem;background-color:#f8fafc;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#cbd5e1 #f1f5f9;border-top:1px solid #e2e8f0}.waka-carousel__thumbnails::-webkit-scrollbar{height:6px}.waka-carousel__thumbnails::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px}.waka-carousel__thumbnails::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.waka-carousel__thumbnails::-webkit-scrollbar-thumb:hover{background:#94a3b8}.waka-carousel__thumbnail{flex-shrink:0;border-radius:.375rem;overflow:hidden;border:2px solid #d1d5db;cursor:pointer;transition:all .2s ease;position:relative}.waka-carousel__thumbnail:hover{border-color:#9ca3af;transform:scale(1.05)}.waka-carousel__thumbnail:focus{outline:2px solid #3b82f6;outline-offset:2px}.waka-carousel__thumbnail--active{border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f6}.waka-carousel__thumbnail--small{width:3rem;height:3rem}.waka-carousel__thumbnail--medium{width:4rem;height:4rem}.waka-carousel__thumbnail--large{width:5rem;height:5rem}.waka-carousel__thumbnail-image{width:100%;height:100%;object-fit:cover;transition:transform .2s ease}.waka-carousel__thumbnail:hover .waka-carousel__thumbnail-image{transform:scale(1.1)}.waka-carousel__progress{position:absolute;bottom:0;left:0;right:0;height:.25rem;background:#0000004d;z-index:5}.waka-carousel__progress-bar{height:100%;background:#fff;transition:width .1s ease;border-radius:0 .125rem .125rem 0}.waka-carousel__loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:20;background:#000000b3;color:#fff;padding:1rem;border-radius:.5rem;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.waka-carousel__spinner{width:2rem;height:2rem;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin 1s linear infinite}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideOut{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes zoomIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes flip{0%{transform:rotateY(0)}50%{transform:rotateY(90deg)}to{transform:rotateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.waka-carousel__image--fade{animation:fadeIn .3s ease-in-out}.waka-carousel__image--slide{animation:slideIn .3s ease-in-out}.waka-carousel__image--zoom{animation:zoomIn .3s ease-in-out}.waka-carousel__image--flip{animation:flip .6s ease-in-out}.waka-carousel:focus-within{outline:2px solid #3b82f6;outline-offset:2px}.waka-carousel__navigation:focus-visible,.waka-carousel__control-button:focus-visible,.waka-carousel__indicator:focus-visible,.waka-carousel__thumbnail:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}@media (max-width: 768px){.waka-carousel__navigation{padding:.5rem}.waka-carousel__navigation svg{width:1rem;height:1rem}.waka-carousel__control-button{padding:.375rem}.waka-carousel__control-button svg{width:.875rem;height:.875rem}.waka-carousel__thumbnails{padding:.75rem}.waka-carousel__thumbnail--small{width:2.5rem;height:2.5rem}.waka-carousel__thumbnail--medium{width:3rem;height:3rem}.waka-carousel__thumbnail--large{width:3.5rem;height:3.5rem}.waka-carousel__overlay{padding:1rem}.waka-carousel__title{font-size:1rem}.waka-carousel__description{font-size:.8125rem}}@media (max-width: 480px){.waka-carousel__navigation{padding:.375rem}.waka-carousel__navigation--prev{left:.5rem}.waka-carousel__navigation--next{right:.5rem}.waka-carousel__control-button{padding:.25rem}.waka-carousel__control-button svg{width:.75rem;height:.75rem}.waka-carousel__download-button{right:2.5rem}.waka-carousel__share-button{right:4.5rem}}@media (prefers-color-scheme: dark){.waka-carousel__thumbnails{background-color:#1f2937;border-top-color:#374151}.waka-carousel__thumbnail{border-color:#374151}.waka-carousel__thumbnail:hover{border-color:#4b5563}.waka-carousel__thumbnail--active{border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f6}}.waka-carousel.dark .waka-carousel__thumbnails{background-color:#1f2937;border-top-color:#374151}.waka-carousel.dark .waka-carousel__thumbnail{border-color:#374151}.waka-carousel.dark .waka-carousel__thumbnail:hover{border-color:#4b5563}.waka-carousel.dark .waka-carousel__thumbnail--active{border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f6}@media (prefers-reduced-motion: reduce){.waka-carousel__image,.waka-carousel__navigation,.waka-carousel__control-button,.waka-carousel__indicator,.waka-carousel__thumbnail,.waka-carousel__progress-bar{transition:none;animation:none}}.waka-carousel__image{will-change:opacity,transform}.waka-carousel__navigation,.waka-carousel__control-button,.waka-carousel__indicator,.waka-carousel__thumbnail{will-change:transform,background-color}.waka-carousel[data-theme=light]{background-color:#fff}.waka-carousel[data-theme=dark]{background-color:#000}.waka-carousel__error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:20;background:#ef4444e6;color:#fff;padding:1rem;border-radius:.5rem;text-align:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.waka-carousel[aria-hidden=true]{display:none}.waka-carousel__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const cn: (...inputs: any[]) => string;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { DatePreset, DateRange } from '../components/waka-datetime-picker';
|
|
2
|
+
/**
|
|
3
|
+
* Créer des presets de dates courantes
|
|
4
|
+
*/
|
|
5
|
+
export declare const createCommonPresets: (locale?: import('date-fns').Locale) => DatePreset[];
|
|
6
|
+
/**
|
|
7
|
+
* Créer des presets pour les 7, 30, 90 derniers jours
|
|
8
|
+
*/
|
|
9
|
+
export declare const createLastDaysPresets: () => DatePreset[];
|
|
10
|
+
/**
|
|
11
|
+
* Créer des presets pour les N prochains jours
|
|
12
|
+
*/
|
|
13
|
+
export declare const createNextDaysPresets: (days: number[]) => DatePreset[];
|
|
14
|
+
/**
|
|
15
|
+
* Créer un preset personnalisé
|
|
16
|
+
*/
|
|
17
|
+
export declare const createCustomPreset: (label: string, dateOrRange: Date | DateRange | (() => Date) | (() => DateRange)) => DatePreset;
|
|
18
|
+
/**
|
|
19
|
+
* Validation : date dans le futur
|
|
20
|
+
*/
|
|
21
|
+
export declare const isFutureDate: (date: Date) => boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Validation : date dans le passé
|
|
24
|
+
*/
|
|
25
|
+
export declare const isPastDate: (date: Date) => boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Validation : date est aujourd'hui
|
|
28
|
+
*/
|
|
29
|
+
export declare const isToday: (date: Date) => boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Validation : date est un jour de semaine (lundi-vendredi)
|
|
32
|
+
*/
|
|
33
|
+
export declare const isWeekday: (date: Date) => boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Validation : date est un weekend (samedi-dimanche)
|
|
36
|
+
*/
|
|
37
|
+
export declare const isWeekend: (date: Date) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Validation : date est dans une liste de jours fériés
|
|
40
|
+
*/
|
|
41
|
+
export declare const isHoliday: (date: Date, holidays: Date[]) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Validation : date est dans un intervalle
|
|
44
|
+
*/
|
|
45
|
+
export declare const isDateInRange: (date: Date, start: Date, end: Date) => boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Validation : âge minimum
|
|
48
|
+
*/
|
|
49
|
+
export declare const createMinAgeValidator: (minAge: number) => (birthdate: Date) => boolean | string;
|
|
50
|
+
/**
|
|
51
|
+
* Validation : âge maximum
|
|
52
|
+
*/
|
|
53
|
+
export declare const createMaxAgeValidator: (maxAge: number) => (birthdate: Date) => boolean | string;
|
|
54
|
+
/**
|
|
55
|
+
* Validation : date d'expiration
|
|
56
|
+
*/
|
|
57
|
+
export declare const isNotExpired: (date: Date) => boolean | string;
|
|
58
|
+
/**
|
|
59
|
+
* Calculer la durée entre deux dates
|
|
60
|
+
*/
|
|
61
|
+
export declare const calculateDuration: (from: Date, to: Date) => {
|
|
62
|
+
days: number;
|
|
63
|
+
weeks: number;
|
|
64
|
+
months: number;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Formater une range de dates
|
|
68
|
+
*/
|
|
69
|
+
export declare const formatDateRange: (range: DateRange, formatStr?: string, locale?: import('date-fns').Locale) => string;
|
|
70
|
+
/**
|
|
71
|
+
* Obtenir les jours fériés français pour une année
|
|
72
|
+
*/
|
|
73
|
+
export declare const getFrenchHolidays: (year: number) => Date[];
|
|
74
|
+
/**
|
|
75
|
+
* Obtenir les dates d'un mois
|
|
76
|
+
*/
|
|
77
|
+
export declare const getDatesInMonth: (year: number, month: number) => Date[];
|
|
78
|
+
/**
|
|
79
|
+
* Obtenir tous les weekends d'un mois
|
|
80
|
+
*/
|
|
81
|
+
export declare const getWeekendsInMonth: (year: number, month: number) => Date[];
|
|
82
|
+
/**
|
|
83
|
+
* Obtenir tous les jours de semaine d'un mois
|
|
84
|
+
*/
|
|
85
|
+
export declare const getWeekdaysInMonth: (year: number, month: number) => Date[];
|
|
86
|
+
/**
|
|
87
|
+
* Créer un validateur de date d'expiration de carte bancaire
|
|
88
|
+
*/
|
|
89
|
+
export declare const createCardExpiryValidator: () => (date: Date) => boolean | string;
|
|
90
|
+
/**
|
|
91
|
+
* Créer un validateur de date de réservation (X jours d'avance minimum)
|
|
92
|
+
*/
|
|
93
|
+
export declare const createBookingDateValidator: (minDaysInAdvance: number) => (date: Date) => boolean | string;
|
|
94
|
+
/**
|
|
95
|
+
* Créer un validateur de plage de dates maximum
|
|
96
|
+
*/
|
|
97
|
+
export declare const createMaxRangeDaysValidator: (maxDays: number) => (range: DateRange) => boolean | string;
|
|
98
|
+
/**
|
|
99
|
+
* Vérifier si deux dates sont le même jour
|
|
100
|
+
*/
|
|
101
|
+
export declare const isSameDay: (date1: Date, date2: Date) => boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Obtenir le nombre de jours ouvrés entre deux dates
|
|
104
|
+
*/
|
|
105
|
+
export declare const getWorkingDays: (from: Date, to: Date, holidays?: Date[]) => number;
|
|
106
|
+
/**
|
|
107
|
+
* Créer des presets pour les trimestres
|
|
108
|
+
*/
|
|
109
|
+
export declare const createQuarterPresets: (year?: number) => DatePreset[];
|
|
110
|
+
/**
|
|
111
|
+
* Créer des presets pour les mois de l'année
|
|
112
|
+
*/
|
|
113
|
+
export declare const createMonthlyPresets: (year?: number, locale?: import('date-fns').Locale) => DatePreset[];
|
|
114
|
+
/**
|
|
115
|
+
* Convertir une date en timestamp
|
|
116
|
+
*/
|
|
117
|
+
export declare const dateToTimestamp: (date: Date) => number;
|
|
118
|
+
/**
|
|
119
|
+
* Convertir un timestamp en date
|
|
120
|
+
*/
|
|
121
|
+
export declare const timestampToDate: (timestamp: number) => Date;
|
|
122
|
+
/**
|
|
123
|
+
* Normaliser une date (début de journée)
|
|
124
|
+
*/
|
|
125
|
+
export declare const normalizeDate: (date: Date) => Date;
|
|
126
|
+
/**
|
|
127
|
+
* Comparer deux ranges de dates
|
|
128
|
+
*/
|
|
129
|
+
export declare const compareRanges: (range1: DateRange, range2: DateRange) => boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Merger deux ranges de dates
|
|
132
|
+
*/
|
|
133
|
+
export declare const mergeRanges: (range1: DateRange, range2: DateRange) => DateRange | null;
|
|
134
|
+
/**
|
|
135
|
+
* Vérifier si deux ranges se chevauchent
|
|
136
|
+
*/
|
|
137
|
+
export declare const rangesOverlap: (range1: DateRange, range2: DateRange) => boolean;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { cn } from './cn';
|
|
2
|
+
export { tweak, type VariantProps } from './tweak';
|
|
3
|
+
export * from './datetime-helpers';
|
|
4
|
+
export { ThemeLoader, initThemeLoader, getThemeLoader, loadTheme, applyTheme, useThemeLoader } from './theme-loader';
|
|
5
|
+
export type { ThemeLoaderConfig } from './theme-loader';
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme Loader pour charger dynamiquement les thèmes depuis S3 ou toute URL
|
|
3
|
+
*
|
|
4
|
+
* Supporte tous les formats de couleurs (hex, rgb, hsl, oklch, etc.)
|
|
5
|
+
* grâce au système TweakCN avec @theme inline
|
|
6
|
+
*/
|
|
7
|
+
export interface ThemeLoaderConfig {
|
|
8
|
+
/**
|
|
9
|
+
* URL de base où les thèmes sont stockés (S3, CDN, etc.)
|
|
10
|
+
*/
|
|
11
|
+
baseUrl: string;
|
|
12
|
+
/**
|
|
13
|
+
* Cache les thèmes déjà chargés pour éviter les requêtes répétées
|
|
14
|
+
*/
|
|
15
|
+
cache?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Timeout en millisecondes pour le chargement d'un thème
|
|
18
|
+
*/
|
|
19
|
+
timeout?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Callback appelé en cas d'erreur de chargement
|
|
22
|
+
*/
|
|
23
|
+
onError?: (error: Error, themeName: string) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Callback appelé une fois le thème chargé avec succès
|
|
26
|
+
*/
|
|
27
|
+
onSuccess?: (themeName: string) => void;
|
|
28
|
+
}
|
|
29
|
+
declare class ThemeLoader {
|
|
30
|
+
private config;
|
|
31
|
+
private loadedThemes;
|
|
32
|
+
private styleElements;
|
|
33
|
+
constructor(config: ThemeLoaderConfig);
|
|
34
|
+
/**
|
|
35
|
+
* Charge un thème depuis une URL
|
|
36
|
+
*/
|
|
37
|
+
loadTheme(themeName: string): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Applique un thème déjà chargé
|
|
40
|
+
*/
|
|
41
|
+
applyTheme(themeName: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Récupère le thème actuellement appliqué
|
|
44
|
+
*/
|
|
45
|
+
getCurrentTheme(): string | null;
|
|
46
|
+
/**
|
|
47
|
+
* Charge le dernier thème utilisé depuis localStorage
|
|
48
|
+
*/
|
|
49
|
+
loadSavedTheme(): string | null;
|
|
50
|
+
/**
|
|
51
|
+
* Précharge plusieurs thèmes en parallèle
|
|
52
|
+
*/
|
|
53
|
+
preloadThemes(themeNames: string[]): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Supprime un thème du cache et du DOM
|
|
56
|
+
*/
|
|
57
|
+
unloadTheme(themeName: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* Vide complètement le cache
|
|
60
|
+
*/
|
|
61
|
+
clearCache(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Liste tous les thèmes chargés
|
|
64
|
+
*/
|
|
65
|
+
getLoadedThemes(): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Construit l'URL complète d'un thème
|
|
68
|
+
*/
|
|
69
|
+
private buildThemeUrl;
|
|
70
|
+
/**
|
|
71
|
+
* Injecte les styles d'un thème dans le document
|
|
72
|
+
*/
|
|
73
|
+
private injectThemeStyles;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Initialise le theme loader avec une configuration
|
|
77
|
+
*/
|
|
78
|
+
export declare function initThemeLoader(config: ThemeLoaderConfig): ThemeLoader;
|
|
79
|
+
/**
|
|
80
|
+
* Récupère l'instance globale du theme loader
|
|
81
|
+
*/
|
|
82
|
+
export declare function getThemeLoader(): ThemeLoader;
|
|
83
|
+
/**
|
|
84
|
+
* Charge un thème depuis l'instance globale
|
|
85
|
+
*/
|
|
86
|
+
export declare function loadTheme(themeName: string): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Applique un thème depuis l'instance globale
|
|
89
|
+
*/
|
|
90
|
+
export declare function applyTheme(themeName: string): void;
|
|
91
|
+
/**
|
|
92
|
+
* Hook React pour charger des thèmes dynamiquement
|
|
93
|
+
*/
|
|
94
|
+
export declare function useThemeLoader(config?: Partial<ThemeLoaderConfig>): {
|
|
95
|
+
loadTheme: (themeName: string) => Promise<void>;
|
|
96
|
+
applyTheme: (themeName: string) => void;
|
|
97
|
+
currentTheme: string | null;
|
|
98
|
+
loadedThemes: string[];
|
|
99
|
+
isLoading: boolean;
|
|
100
|
+
};
|
|
101
|
+
export { ThemeLoader };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ClassValue } from 'clsx';
|
|
2
|
+
import { VariantProps } from 'class-variance-authority';
|
|
3
|
+
export type ConfigVariants<T> = T extends Record<string, Record<string, string>> ? {
|
|
4
|
+
[K in keyof T]?: keyof T[K];
|
|
5
|
+
} : never;
|
|
6
|
+
export type ClassProp = {
|
|
7
|
+
class?: ClassValue;
|
|
8
|
+
className?: ClassValue;
|
|
9
|
+
};
|
|
10
|
+
export declare function tweak(...inputs: ClassValue[]): string;
|
|
11
|
+
export declare namespace tweak {
|
|
12
|
+
var variants: <T extends Record<string, Record<string, string>>, Defaults extends Partial<Record<keyof T, string>> = {}>(config: {
|
|
13
|
+
base?: string;
|
|
14
|
+
variants?: T;
|
|
15
|
+
defaultVariants?: Defaults;
|
|
16
|
+
}) => (options?: (ConfigVariants<T> & ClassProp)) => string;
|
|
17
|
+
}
|
|
18
|
+
export type { VariantProps };
|
package/package.json
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@wakastellar/ui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "UI Library compatible TweakCN + i18n pour Next.js",
|
|
5
|
+
"keywords": ["ui", "interfaces"],
|
|
6
|
+
"publisher": "wakastellar",
|
|
7
|
+
"displayName": "Wakastellar - UI",
|
|
8
|
+
"main": "./dist/index.cjs.js",
|
|
9
|
+
"module": "./dist/index.es.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.es.js",
|
|
15
|
+
"require": "./dist/index.cjs.js"
|
|
16
|
+
},
|
|
17
|
+
"./styles": "./src/styles/globals.css",
|
|
18
|
+
"./styles/*": "./src/styles/*.css"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist",
|
|
22
|
+
"src/styles"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"dev": "vite build --watch --mode development",
|
|
26
|
+
"build": "vite build",
|
|
27
|
+
"demo": "cd demo && pnpm dev",
|
|
28
|
+
"lint": "eslint . --ext .ts,.tsx",
|
|
29
|
+
"test": "vitest --config vitest.config.unit.ts",
|
|
30
|
+
"test:watch": "vitest --config vitest.config.unit.ts --watch",
|
|
31
|
+
"test:coverage": "vitest --config vitest.config.unit.ts --coverage",
|
|
32
|
+
"test:ui": "vitest --config vitest.config.unit.ts --ui"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@radix-ui/react-accordion": "^1.1.2",
|
|
36
|
+
"@radix-ui/react-alert-dialog": "^1.0.5",
|
|
37
|
+
"@radix-ui/react-aspect-ratio": "^1.0.3",
|
|
38
|
+
"@radix-ui/react-avatar": "^1.0.4",
|
|
39
|
+
"@radix-ui/react-checkbox": "^1.0.4",
|
|
40
|
+
"@radix-ui/react-collapsible": "^1.0.3",
|
|
41
|
+
"@radix-ui/react-context-menu": "^2.1.5",
|
|
42
|
+
"@radix-ui/react-dialog": "^1.0.5",
|
|
43
|
+
"@radix-ui/react-dropdown-menu": "^2.0.6",
|
|
44
|
+
"@radix-ui/react-hover-card": "^1.0.7",
|
|
45
|
+
"@radix-ui/react-label": "^2.0.2",
|
|
46
|
+
"@radix-ui/react-menubar": "^1.0.4",
|
|
47
|
+
"@radix-ui/react-navigation-menu": "^1.1.4",
|
|
48
|
+
"@radix-ui/react-popover": "^1.0.7",
|
|
49
|
+
"@radix-ui/react-progress": "^1.0.3",
|
|
50
|
+
"@radix-ui/react-radio-group": "^1.1.3",
|
|
51
|
+
"@radix-ui/react-scroll-area": "^1.0.5",
|
|
52
|
+
"@radix-ui/react-select": "^2.0.0",
|
|
53
|
+
"@radix-ui/react-separator": "^1.0.3",
|
|
54
|
+
"@radix-ui/react-slider": "^1.1.2",
|
|
55
|
+
"@radix-ui/react-slot": "^1.0.2",
|
|
56
|
+
"@radix-ui/react-switch": "^1.0.3",
|
|
57
|
+
"@radix-ui/react-tabs": "^1.0.4",
|
|
58
|
+
"@radix-ui/react-toast": "^1.1.5",
|
|
59
|
+
"@radix-ui/react-toggle": "^1.0.3",
|
|
60
|
+
"@radix-ui/react-tooltip": "^1.0.7",
|
|
61
|
+
"@tanstack/react-table": "^8.21.3",
|
|
62
|
+
"@tanstack/react-virtual": "^3.13.12",
|
|
63
|
+
"@types/prismjs": "^1.26.5",
|
|
64
|
+
"class-variance-authority": "^0.7.1",
|
|
65
|
+
"clsx": "^2.1.1",
|
|
66
|
+
"cmdk": "^0.2.0",
|
|
67
|
+
"date-fns": "^4.1.0",
|
|
68
|
+
"i18next": "^23.7.0",
|
|
69
|
+
"lucide-react": "^0.293.0",
|
|
70
|
+
"next-i18next": "^15.2.0",
|
|
71
|
+
"prismjs": "^1.30.0",
|
|
72
|
+
"react": ">=19.1.0",
|
|
73
|
+
"react-datepicker": "^8.7.0",
|
|
74
|
+
"react-day-picker": "^9.11.1",
|
|
75
|
+
"react-dom": ">=18.0.0",
|
|
76
|
+
"react-i18next": "^13.2.0",
|
|
77
|
+
"tailwind-merge": "^3.3.1",
|
|
78
|
+
"tailwind-variants": "^0.1.18"
|
|
79
|
+
},
|
|
80
|
+
"peerDependencies": {
|
|
81
|
+
"next": ">=15.5.4",
|
|
82
|
+
"react": ">=19.1.0",
|
|
83
|
+
"react-dom": ">=18.0.0",
|
|
84
|
+
"react-hook-form": "^7.0.0"
|
|
85
|
+
},
|
|
86
|
+
"devDependencies": {
|
|
87
|
+
"@chromatic-com/storybook": "^4.1.1",
|
|
88
|
+
"@testing-library/jest-dom": "^6.1.5",
|
|
89
|
+
"@testing-library/react": "^14.1.2",
|
|
90
|
+
"@testing-library/user-event": "^14.5.1",
|
|
91
|
+
"@types/node": "^24.7.2",
|
|
92
|
+
"@types/react": "^18.3.26",
|
|
93
|
+
"@types/react-datepicker": "^7.0.0",
|
|
94
|
+
"@types/react-dom": "^18.3.5",
|
|
95
|
+
"@vitejs/plugin-react": "^4.2.1",
|
|
96
|
+
"@vitest/browser": "^3.2.4",
|
|
97
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
98
|
+
"@vitest/ui": "^3.2.4",
|
|
99
|
+
"autoprefixer": "^10.4.16",
|
|
100
|
+
"jsdom": "^23.0.1",
|
|
101
|
+
"playwright": "^1.56.0",
|
|
102
|
+
"postcss": "^8.4.31",
|
|
103
|
+
"react-hook-form": "^7.49.2",
|
|
104
|
+
"storybook": "^9.1.10",
|
|
105
|
+
"tailwindcss": "^3.4.0",
|
|
106
|
+
"tailwindcss-animate": "^1.0.7",
|
|
107
|
+
"typescript": "^5.5.0",
|
|
108
|
+
"vite": "^7.1.9",
|
|
109
|
+
"vite-plugin-dts": "^4.5.4",
|
|
110
|
+
"vitest": "^3.2.4"
|
|
111
|
+
},
|
|
112
|
+
"pnpm": {
|
|
113
|
+
"overrides": {
|
|
114
|
+
"@types/react": "^18.3.26",
|
|
115
|
+
"@types/react-dom": "^18.3.5"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|