@wakastellar/ui 0.6.0 → 1.0.2
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 +28 -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 +20 -24
- 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 +44 -57
- package/dist/index.d.ts +3 -35
- package/dist/index.es.js +17836 -21739
- 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,7 +1,6 @@
|
|
|
1
1
|
export interface Language {
|
|
2
2
|
code: string;
|
|
3
3
|
label: string;
|
|
4
|
-
shortLabel?: string;
|
|
5
4
|
flag?: string;
|
|
6
5
|
flagEmoji?: string;
|
|
7
6
|
}
|
|
@@ -26,22 +25,6 @@ export interface LanguageSelectorProps {
|
|
|
26
25
|
placeholder?: string;
|
|
27
26
|
/** Texte pour le screen reader */
|
|
28
27
|
ariaLabel?: string;
|
|
29
|
-
/** Titre pour le mode mobile fullscreen */
|
|
30
|
-
title?: string;
|
|
31
|
-
/** Label du bouton Continue pour le mode mobile */
|
|
32
|
-
continueLabel?: string;
|
|
33
|
-
/** Langues récemment utilisées (codes) */
|
|
34
|
-
recentLanguages?: string[];
|
|
35
|
-
/** Label pour la section "Récents" */
|
|
36
|
-
recentLabel?: string;
|
|
37
|
-
/** Label pour la section "Tous" */
|
|
38
|
-
allLabel?: string;
|
|
39
|
-
/** Placeholder de recherche */
|
|
40
|
-
searchPlaceholder?: string;
|
|
41
|
-
/** Breakpoint pour le mode mobile (en pixels) */
|
|
42
|
-
mobileBreakpoint?: number;
|
|
43
|
-
/** Désactiver le mode mobile fullscreen */
|
|
44
|
-
disableMobileFullscreen?: boolean;
|
|
45
28
|
}
|
|
46
29
|
/**
|
|
47
30
|
* LanguageSelector
|
|
@@ -51,8 +34,7 @@ export interface LanguageSelectorProps {
|
|
|
51
34
|
* Features:
|
|
52
35
|
* - Drapeaux emoji ou images
|
|
53
36
|
* - 3 variantes : default (select), compact (bouton), minimal (icon only)
|
|
54
|
-
* - Mode fullscreen automatique sur mobile
|
|
55
37
|
* - Support du chargement asynchrone
|
|
56
38
|
* - Intégration avec LanguageProvider pour S3
|
|
57
39
|
*/
|
|
58
|
-
export declare function LanguageSelector({ languages, value, onChange, showFlags, showLabels, variant, isLoading, className, placeholder, ariaLabel,
|
|
40
|
+
export declare function LanguageSelector({ languages, value, onChange, showFlags, showLabels, variant, isLoading, className, placeholder, ariaLabel, }: LanguageSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,15 +4,5 @@ export interface ThemeSelectorProps {
|
|
|
4
4
|
variant?: "default" | "full" | "compact" | "select";
|
|
5
5
|
/** Texte pour le screen reader */
|
|
6
6
|
ariaLabel?: string;
|
|
7
|
-
/** Titre pour le mode mobile fullscreen */
|
|
8
|
-
title?: string;
|
|
9
|
-
/** Label du bouton Appliquer pour le mode mobile */
|
|
10
|
-
applyLabel?: string;
|
|
11
|
-
/** Placeholder de recherche */
|
|
12
|
-
searchPlaceholder?: string;
|
|
13
|
-
/** Breakpoint pour le mode mobile (en pixels) */
|
|
14
|
-
mobileBreakpoint?: number;
|
|
15
|
-
/** Désactiver le mode mobile fullscreen */
|
|
16
|
-
disableMobileFullscreen?: boolean;
|
|
17
7
|
}
|
|
18
8
|
export declare const ThemeSelector: React.ForwardRefExoticComponent<ThemeSelectorProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -21,7 +21,7 @@ export interface TextProps extends React.HTMLAttributes<HTMLParagraphElement>, V
|
|
|
21
21
|
*/
|
|
22
22
|
declare const Text: React.ForwardRefExoticComponent<TextProps & React.RefAttributes<HTMLParagraphElement>>;
|
|
23
23
|
declare const headingVariants: (props?: ({
|
|
24
|
-
level?: "
|
|
24
|
+
level?: "h2" | "h3" | "h1" | "h4" | "h5" | "h6" | null | undefined;
|
|
25
25
|
variant?: "default" | "muted" | "gradient" | null | undefined;
|
|
26
26
|
} & import('class-variance-authority/dist/types').ClassProp) | undefined) => string;
|
|
27
27
|
export interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement>, VariantProps<typeof headingVariants> {
|
|
@@ -1,82 +1,46 @@
|
|
|
1
1
|
import { VariantProps } from 'class-variance-authority';
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
/**
|
|
4
|
-
* Variantes du spinner
|
|
4
|
+
* Variantes du spinner spatial WakaSpinner
|
|
5
|
+
* Définit les différentes tailles disponibles pour l'animation
|
|
5
6
|
*/
|
|
6
7
|
declare const spinnerVariants: (props?: ({
|
|
7
|
-
size?: "sm" | "lg" | "md" | "
|
|
8
|
+
size?: "sm" | "lg" | "md" | "xl" | null | undefined;
|
|
8
9
|
} & import('class-variance-authority/dist/types').ClassProp) | undefined) => string;
|
|
9
10
|
export interface WakaSpinnerProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof spinnerVariants> {
|
|
10
11
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* - "loading": Animation de chargement de données (visuellement différent pour indiquer une récupération)
|
|
14
|
-
* @default "infinite"
|
|
15
|
-
*/
|
|
16
|
-
mode?: "infinite" | "loading";
|
|
17
|
-
/**
|
|
18
|
-
* Label affiché au centre du spinner
|
|
19
|
-
*/
|
|
20
|
-
label?: string;
|
|
21
|
-
/**
|
|
22
|
-
* Sous-label affiché sous le label principal
|
|
12
|
+
* Affiche les astéroïdes en arrière-plan
|
|
13
|
+
* @default true
|
|
23
14
|
*/
|
|
24
|
-
|
|
15
|
+
showAsteroids?: boolean;
|
|
25
16
|
/**
|
|
26
|
-
* Vitesse de rotation (en secondes
|
|
27
|
-
* @default
|
|
17
|
+
* Vitesse de rotation de la fusée (en secondes)
|
|
18
|
+
* @default 2
|
|
28
19
|
*/
|
|
29
20
|
speed?: number;
|
|
30
21
|
/**
|
|
31
|
-
* Couleur
|
|
32
|
-
* @default "primary"
|
|
33
|
-
*/
|
|
34
|
-
color?: "primary" | "secondary" | "accent" | "destructive" | "muted" | string;
|
|
35
|
-
/**
|
|
36
|
-
* Nombre de cercles concentriques
|
|
37
|
-
* @default 3
|
|
22
|
+
* Couleur de la fusée (classe Tailwind ou couleur CSS)
|
|
23
|
+
* @default "text-primary"
|
|
38
24
|
*/
|
|
39
|
-
|
|
25
|
+
rocketColor?: string;
|
|
40
26
|
/**
|
|
41
|
-
*
|
|
42
|
-
* @default
|
|
27
|
+
* Couleur des astéroïdes (classe Tailwind ou couleur CSS)
|
|
28
|
+
* @default "text-muted-foreground"
|
|
43
29
|
*/
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Afficher le pulse central
|
|
47
|
-
* @default true
|
|
48
|
-
*/
|
|
49
|
-
showPulse?: boolean;
|
|
50
|
-
/**
|
|
51
|
-
* Opacité des anneaux (0-1)
|
|
52
|
-
* @default 0.6
|
|
53
|
-
*/
|
|
54
|
-
ringOpacity?: number;
|
|
30
|
+
asteroidColor?: string;
|
|
55
31
|
}
|
|
56
32
|
/**
|
|
57
|
-
* WakaSpinner - Composant de chargement
|
|
33
|
+
* WakaSpinner - Composant de chargement avec animation spatiale
|
|
58
34
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* - **loading** : Variante avec effet de scan pour indiquer une récupération de données
|
|
35
|
+
* Une fusée orbite autour d'un centre avec des astéroïdes flottants optionnels.
|
|
36
|
+
* Idéal pour les écrans de chargement avec une touche ludique.
|
|
62
37
|
*
|
|
63
38
|
* @example
|
|
64
39
|
* ```tsx
|
|
65
|
-
*
|
|
66
|
-
* <WakaSpinner
|
|
67
|
-
*
|
|
68
|
-
* // Mode loading avec sous-label
|
|
69
|
-
* <WakaSpinner mode="loading" label="Loading" subLabel="Fetching data..." />
|
|
70
|
-
*
|
|
71
|
-
* // Personnalisé
|
|
72
|
-
* <WakaSpinner
|
|
73
|
-
* mode="infinite"
|
|
74
|
-
* size="lg"
|
|
75
|
-
* rings={4}
|
|
76
|
-
* color="accent"
|
|
77
|
-
* label="JARVIS"
|
|
78
|
-
* />
|
|
40
|
+
* <WakaSpinner size="md" />
|
|
41
|
+
* <WakaSpinner size="lg" showAsteroids={true} speed={3} />
|
|
42
|
+
* <WakaSpinner rocketColor="text-blue-500" asteroidColor="text-gray-400" />
|
|
79
43
|
* ```
|
|
80
44
|
*/
|
|
81
45
|
export declare const WakaSpinner: React.ForwardRefExoticComponent<WakaSpinnerProps & React.RefAttributes<HTMLDivElement>>;
|
|
82
|
-
export
|
|
46
|
+
export {};
|
|
@@ -5,40 +5,6 @@ export interface ThemeVersion {
|
|
|
5
5
|
changelog?: string;
|
|
6
6
|
css: string;
|
|
7
7
|
}
|
|
8
|
-
/**
|
|
9
|
-
* Ressource personnalisée pour le thème
|
|
10
|
-
*/
|
|
11
|
-
export interface ThemeCustomResource {
|
|
12
|
-
/** Clé unique de la ressource */
|
|
13
|
-
key: string;
|
|
14
|
-
/** URL de la ressource (après upload S3) */
|
|
15
|
-
url: string;
|
|
16
|
-
/** Type de fichier */
|
|
17
|
-
type: "image" | "icon" | "font" | "other";
|
|
18
|
-
/** Nom du fichier original */
|
|
19
|
-
filename: string;
|
|
20
|
-
/** Taille en octets */
|
|
21
|
-
size?: number;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Configuration des assets du thème (login, etc.)
|
|
25
|
-
*/
|
|
26
|
-
export interface ThemeAssets {
|
|
27
|
-
/** Logo pour le mode clair */
|
|
28
|
-
logo_light?: string;
|
|
29
|
-
/** Logo pour le mode sombre */
|
|
30
|
-
logo_dark?: string;
|
|
31
|
-
/** Image de fond pour le mode clair */
|
|
32
|
-
background_light?: string;
|
|
33
|
-
/** Image de fond pour le mode sombre */
|
|
34
|
-
background_dark?: string;
|
|
35
|
-
/** Favicon */
|
|
36
|
-
favicon?: string;
|
|
37
|
-
/** Image de sponsor (mode clair) */
|
|
38
|
-
sponsor_light?: string;
|
|
39
|
-
/** Image de sponsor (mode sombre) */
|
|
40
|
-
sponsor_dark?: string;
|
|
41
|
-
}
|
|
42
8
|
export interface ThemeMetadata {
|
|
43
9
|
id: string;
|
|
44
10
|
label: string;
|
|
@@ -47,64 +13,47 @@ export interface ThemeMetadata {
|
|
|
47
13
|
author?: string;
|
|
48
14
|
versions: ThemeVersion[];
|
|
49
15
|
currentVersion: string;
|
|
50
|
-
/** Assets du thème (logos, backgrounds) */
|
|
51
|
-
assets?: ThemeAssets;
|
|
52
|
-
/** Ressources personnalisées */
|
|
53
|
-
customResources?: ThemeCustomResource[];
|
|
54
16
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Configuration de l'API pour le ThemeCreator
|
|
68
|
-
*/
|
|
69
|
-
export interface ThemeCreatorApiConfig {
|
|
70
|
-
/** Callback pour uploader un fichier (logo, background, etc.) */
|
|
71
|
-
onUploadFile: (file: File, themeId: string, assetType: string) => Promise<FileUploadResponse>;
|
|
72
|
-
/** Callback pour sauvegarder le thème complet */
|
|
73
|
-
onSaveTheme: (theme: ThemeMetadata) => Promise<void>;
|
|
74
|
-
/** Callback pour supprimer un thème */
|
|
75
|
-
onDeleteTheme?: (themeId: string) => Promise<void>;
|
|
76
|
-
/** Callback pour charger les détails d'un thème */
|
|
77
|
-
onLoadTheme?: (themeId: string) => Promise<ThemeMetadata | null>;
|
|
78
|
-
/** Callback pour supprimer un asset */
|
|
79
|
-
onDeleteAsset?: (themeId: string, assetType: string) => Promise<void>;
|
|
17
|
+
export interface S3UploadConfig {
|
|
18
|
+
/** URL de base du bucket S3 */
|
|
19
|
+
baseUrl: string;
|
|
20
|
+
/** Méthode HTTP pour l'upload (PUT ou POST) */
|
|
21
|
+
method?: "PUT" | "POST";
|
|
22
|
+
/** Headers personnalisés pour l'authentification */
|
|
23
|
+
headers?: Record<string, string>;
|
|
24
|
+
/** Préfixe des fichiers */
|
|
25
|
+
prefix?: string;
|
|
26
|
+
/** Extension des fichiers */
|
|
27
|
+
extension?: string;
|
|
80
28
|
}
|
|
81
29
|
export interface WakaThemeCreatorProps {
|
|
82
|
-
/** Configuration
|
|
83
|
-
|
|
84
|
-
/** Thèmes existants à charger */
|
|
85
|
-
existingThemes?: ThemeMetadata[];
|
|
30
|
+
/** Configuration S3 pour l'upload */
|
|
31
|
+
s3Config: S3UploadConfig;
|
|
86
32
|
/** Callback après sauvegarde réussie */
|
|
87
|
-
|
|
33
|
+
onSave?: (theme: ThemeMetadata) => void;
|
|
88
34
|
/** Callback après suppression */
|
|
89
|
-
|
|
35
|
+
onDelete?: (themeId: string) => void;
|
|
36
|
+
/** Callback pour charger un thème depuis S3 */
|
|
37
|
+
onLoadTheme?: (themeId: string) => Promise<ThemeMetadata | null>;
|
|
38
|
+
/** Thèmes existants à charger */
|
|
39
|
+
existingThemes?: ThemeMetadata[];
|
|
90
40
|
/** Classe CSS personnalisée */
|
|
91
41
|
className?: string;
|
|
92
42
|
}
|
|
93
43
|
/**
|
|
94
44
|
* WakaThemeCreator
|
|
95
45
|
*
|
|
96
|
-
* Composant d'administration pour créer, prévisualiser et publier des thèmes TweakCN.
|
|
46
|
+
* Composant d'administration pour créer, prévisualiser et publier des thèmes TweakCN sur S3.
|
|
97
47
|
*
|
|
98
48
|
* Features:
|
|
99
49
|
* - Création de thèmes avec CSS TweakCN
|
|
100
50
|
* - Prévisualisation en temps réel
|
|
101
51
|
* - Gestion des versions
|
|
102
|
-
* - Upload
|
|
103
|
-
* - Gestion des ressources (logos, backgrounds, custom)
|
|
52
|
+
* - Upload sur S3/MinIO
|
|
104
53
|
* - Historique des modifications
|
|
105
54
|
* - Validation du CSS
|
|
106
55
|
*/
|
|
107
|
-
export declare function WakaThemeCreator({
|
|
56
|
+
export declare function WakaThemeCreator({ s3Config, onSave, onDelete, onLoadTheme, existingThemes, className, }: WakaThemeCreatorProps): import("react/jsx-runtime").JSX.Element;
|
|
108
57
|
export declare namespace WakaThemeCreator {
|
|
109
58
|
var displayName: string;
|
|
110
59
|
}
|
|
@@ -3,9 +3,6 @@ import * as React from "react";
|
|
|
3
3
|
declare const themeManagerVariants: (props?: ({
|
|
4
4
|
size?: "base" | "sm" | "lg" | "full" | null | undefined;
|
|
5
5
|
} & import('class-variance-authority/dist/types').ClassProp) | undefined) => string;
|
|
6
|
-
/**
|
|
7
|
-
* Interface pour un thème au format simplifié (couleurs directes)
|
|
8
|
-
*/
|
|
9
6
|
export interface TweakCNTheme {
|
|
10
7
|
name: string;
|
|
11
8
|
description?: string;
|
|
@@ -39,27 +36,17 @@ export interface TweakCNTheme {
|
|
|
39
36
|
};
|
|
40
37
|
}
|
|
41
38
|
export interface WakaThemeManagerProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof themeManagerVariants> {
|
|
42
|
-
/** Callback lors du changement de thème */
|
|
43
39
|
onThemeChange?: (theme: TweakCNTheme) => void;
|
|
44
|
-
/** Callback lors du chargement d'un thème */
|
|
45
40
|
onThemeLoad?: (theme: TweakCNTheme) => void;
|
|
46
|
-
/** Callback lors de la sauvegarde d'un thème */
|
|
47
41
|
onThemeSave?: (theme: TweakCNTheme) => void;
|
|
48
|
-
/** Thème initial */
|
|
49
42
|
initialTheme?: TweakCNTheme;
|
|
50
|
-
/** Afficher la prévisualisation */
|
|
51
43
|
showPreview?: boolean;
|
|
52
|
-
/** Afficher l'export */
|
|
53
44
|
showExport?: boolean;
|
|
54
|
-
/** Afficher l'import */
|
|
55
45
|
showImport?: boolean;
|
|
56
|
-
/** Autoriser la modification des couleurs */
|
|
57
46
|
allowCustomColors?: boolean;
|
|
58
47
|
}
|
|
59
48
|
/**
|
|
60
|
-
* WakaThemeManager - Gestionnaire complet de thèmes
|
|
61
|
-
*
|
|
62
|
-
* Supporte le format shadcn/ui registry-item et peut charger des thèmes à la volée.
|
|
49
|
+
* WakaThemeManager - Gestionnaire complet de thèmes TweakCN
|
|
63
50
|
*
|
|
64
51
|
* @example
|
|
65
52
|
* ```tsx
|
|
@@ -1,151 +1,34 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Contexte pour la gestion de la navigation hiérarchique d'administration
|
|
3
|
-
*
|
|
4
|
-
* Ce contexte permet de gérer une sélection hiérarchique de type:
|
|
5
|
-
* Partner > Network > Customer
|
|
6
|
-
*
|
|
7
|
-
* Fonctionnalités:
|
|
8
|
-
* - Sélection hiérarchique avec cascade (changer le partner réinitialise network et customer)
|
|
9
|
-
* - Persistance automatique dans localStorage
|
|
10
|
-
* - Génération de requêtes de filtrage pour les API
|
|
11
|
-
* - Support de métadonnées personnalisées sur chaque niveau
|
|
12
|
-
*
|
|
13
|
-
* @module context/admincrumb-context
|
|
14
|
-
*/
|
|
15
1
|
import * as React from "react";
|
|
16
|
-
/**
|
|
17
|
-
* Représente un élément de la hiérarchie d'administration
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```ts
|
|
21
|
-
* const partner: AdmincrumbItem = {
|
|
22
|
-
* id: "partner-123",
|
|
23
|
-
* name: "Acme Corp",
|
|
24
|
-
* type: "partner",
|
|
25
|
-
* metadata: { logo: "https://..." }
|
|
26
|
-
* }
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
2
|
export interface AdmincrumbItem {
|
|
30
|
-
/** Identifiant unique de l'élément */
|
|
31
3
|
id: string;
|
|
32
|
-
/** Nom d'affichage */
|
|
33
4
|
name: string;
|
|
34
|
-
/** Type hiérarchique (partner > network > customer) */
|
|
35
5
|
type: "partner" | "network" | "customer";
|
|
36
|
-
|
|
37
|
-
metadata?: Record<string, unknown>;
|
|
6
|
+
metadata?: Record<string, any>;
|
|
38
7
|
}
|
|
39
|
-
/**
|
|
40
|
-
* État de sélection de la hiérarchie
|
|
41
|
-
*/
|
|
42
8
|
export interface AdmincrumbSelection {
|
|
43
|
-
/** Partenaire sélectionné (niveau 1) */
|
|
44
9
|
partner?: AdmincrumbItem;
|
|
45
|
-
/** Réseau sélectionné (niveau 2) */
|
|
46
10
|
network?: AdmincrumbItem;
|
|
47
|
-
/** Client sélectionné (niveau 3) */
|
|
48
11
|
customer?: AdmincrumbItem;
|
|
49
12
|
}
|
|
50
|
-
/**
|
|
51
|
-
* Valeur du contexte Admincrumb exposée aux composants
|
|
52
|
-
*/
|
|
53
13
|
export interface AdmincrumbContextValue {
|
|
54
|
-
/** État actuel de la sélection */
|
|
55
14
|
selection: AdmincrumbSelection;
|
|
56
|
-
/**
|
|
57
|
-
* Définit le partenaire sélectionné
|
|
58
|
-
* Note: Réinitialise network et customer
|
|
59
|
-
*/
|
|
60
15
|
setPartner: (item: AdmincrumbItem | undefined) => void;
|
|
61
|
-
/**
|
|
62
|
-
* Définit le réseau sélectionné
|
|
63
|
-
* Note: Réinitialise customer
|
|
64
|
-
*/
|
|
65
16
|
setNetwork: (item: AdmincrumbItem | undefined) => void;
|
|
66
|
-
/** Définit le client sélectionné */
|
|
67
17
|
setCustomer: (item: AdmincrumbItem | undefined) => void;
|
|
68
|
-
/** Réinitialise toute la sélection */
|
|
69
18
|
reset: () => void;
|
|
70
|
-
/** Indique si au moins un niveau est sélectionné */
|
|
71
19
|
isFiltered: boolean;
|
|
72
|
-
/**
|
|
73
|
-
* Génère un objet de requête avec les IDs sélectionnés
|
|
74
|
-
* Utile pour filtrer les appels API
|
|
75
|
-
*/
|
|
76
20
|
getFilterQuery: () => {
|
|
77
21
|
partnerId?: string;
|
|
78
22
|
networkId?: string;
|
|
79
23
|
customerId?: string;
|
|
80
24
|
};
|
|
81
25
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Props du provider Admincrumb
|
|
84
|
-
*/
|
|
85
26
|
export interface AdmincrumbProviderProps {
|
|
86
|
-
/** Composants enfants */
|
|
87
27
|
children: React.ReactNode;
|
|
88
|
-
/** Sélection initiale */
|
|
89
28
|
initialSelection?: AdmincrumbSelection;
|
|
90
|
-
/** Callback appelé à chaque changement de sélection */
|
|
91
29
|
onSelectionChange?: (selection: AdmincrumbSelection) => void;
|
|
92
|
-
/** Clé pour persister dans localStorage (défaut: "admincrumb-selection") */
|
|
93
30
|
persistKey?: string;
|
|
94
31
|
}
|
|
95
|
-
/**
|
|
96
|
-
* Provider pour la gestion de la navigation hiérarchique d'administration
|
|
97
|
-
*
|
|
98
|
-
* Gère automatiquement:
|
|
99
|
-
* - La cascade de sélection (Partner > Network > Customer)
|
|
100
|
-
* - La persistance dans localStorage
|
|
101
|
-
* - Les notifications de changement
|
|
102
|
-
*
|
|
103
|
-
* @example
|
|
104
|
-
* ```tsx
|
|
105
|
-
* <AdmincrumbProvider
|
|
106
|
-
* initialSelection={{ partner: defaultPartner }}
|
|
107
|
-
* onSelectionChange={(sel) => console.log('Selection:', sel)}
|
|
108
|
-
* >
|
|
109
|
-
* <App />
|
|
110
|
-
* </AdmincrumbProvider>
|
|
111
|
-
* ```
|
|
112
|
-
*/
|
|
113
32
|
export declare function AdmincrumbProvider({ children, initialSelection, onSelectionChange, persistKey }: AdmincrumbProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
114
|
-
/**
|
|
115
|
-
* Hook pour accéder au contexte Admincrumb
|
|
116
|
-
*
|
|
117
|
-
* @throws Error si utilisé en dehors d'un AdmincrumbProvider
|
|
118
|
-
*
|
|
119
|
-
* @example
|
|
120
|
-
* ```tsx
|
|
121
|
-
* function BreadcrumbNav() {
|
|
122
|
-
* const { selection, setPartner, reset } = useAdmincrumbContext()
|
|
123
|
-
*
|
|
124
|
-
* return (
|
|
125
|
-
* <nav>
|
|
126
|
-
* {selection.partner && <span>{selection.partner.name}</span>}
|
|
127
|
-
* <button onClick={reset}>Réinitialiser</button>
|
|
128
|
-
* </nav>
|
|
129
|
-
* )
|
|
130
|
-
* }
|
|
131
|
-
* ```
|
|
132
|
-
*/
|
|
133
33
|
export declare function useAdmincrumbContext(): AdmincrumbContextValue;
|
|
134
|
-
/**
|
|
135
|
-
* Hook optionnel pour utiliser le contexte sans erreur si le provider est manquant
|
|
136
|
-
*
|
|
137
|
-
* Utile pour les composants qui peuvent fonctionner avec ou sans le contexte
|
|
138
|
-
*
|
|
139
|
-
* @returns Le contexte ou undefined si pas de provider
|
|
140
|
-
*
|
|
141
|
-
* @example
|
|
142
|
-
* ```tsx
|
|
143
|
-
* function OptionalFilter() {
|
|
144
|
-
* const admincrumb = useAdmincrumbContextOptional()
|
|
145
|
-
*
|
|
146
|
-
* // Fonctionne même sans provider
|
|
147
|
-
* const partnerId = admincrumb?.selection.partner?.id
|
|
148
|
-
* }
|
|
149
|
-
* ```
|
|
150
|
-
*/
|
|
151
34
|
export declare function useAdmincrumbContextOptional(): AdmincrumbContextValue | undefined;
|
package/dist/context/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { ThemeProvider, useTheme } from './theme-provider';
|
|
2
|
-
export type { ThemeContextValue, ThemeProviderProps, ThemeConfig,
|
|
2
|
+
export type { ThemeContextValue, ThemeProviderProps, ThemeConfig, ThemeS3Config } from './theme-provider';
|
|
3
3
|
export { ThemeProvider as LegacyThemeProvider, useTheme as useLegacyTheme } from './theme-context';
|
|
4
4
|
export type { ThemeContextValue as LegacyThemeContextValue, ThemeProviderProps as LegacyThemeProviderProps } from './theme-context';
|
|
5
5
|
export { LanguageProvider, useLanguage } from './language-context';
|
|
6
|
-
export type { LanguageConfig, LanguageProviderProps, LanguageContextValue
|
|
6
|
+
export type { LanguageConfig, S3Config, LanguageProviderProps, LanguageContextValue } from './language-context';
|
|
7
7
|
export { WakaProvider, useWaka } from './waka-provider';
|
|
8
8
|
export type { WakaProviderConfig, WakaProviderProps } from './waka-provider';
|