@wakastellar/ui 0.3.0 → 0.5.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.
@@ -0,0 +1,63 @@
1
+ export interface TranslationValue {
2
+ value: string;
3
+ updatedAt?: Date;
4
+ comment?: string;
5
+ }
6
+ export interface TranslationEntry {
7
+ key: string;
8
+ translations: Record<string, TranslationValue>;
9
+ }
10
+ export interface LanguageConfig {
11
+ code: string;
12
+ label: string;
13
+ flag?: string;
14
+ isSource?: boolean;
15
+ }
16
+ export interface I18nEditorConfig {
17
+ /** Langues disponibles */
18
+ languages: LanguageConfig[];
19
+ /** Code de la langue source */
20
+ sourceLanguage: string;
21
+ /** Séparateur pour les clés (ex: ".") */
22
+ keyPathSeparator?: string;
23
+ /** Activer l'auto-save */
24
+ autoSave?: boolean;
25
+ /** Délai de debounce pour l'auto-save en ms */
26
+ saveDebounceMs?: number;
27
+ /** Patterns de placeholders à valider */
28
+ placeholderPatterns?: string[];
29
+ /** Ratio max de longueur */
30
+ maxLengthRatio?: number;
31
+ }
32
+ export interface I18nEditorProps {
33
+ /** Configuration de l'éditeur */
34
+ config: I18nEditorConfig;
35
+ /** Données de traduction initiales */
36
+ translations: TranslationEntry[];
37
+ /** Callback quand une traduction change */
38
+ onChange?: (key: string, language: string, value: string) => void;
39
+ /** Callback pour sauvegarder */
40
+ onSave?: (translations: TranslationEntry[]) => Promise<void>;
41
+ /** Callback pour ajouter une clé */
42
+ onAddKey?: (key: string) => Promise<void>;
43
+ /** Callback pour supprimer une clé */
44
+ onDeleteKey?: (key: string) => Promise<void>;
45
+ /** Callback pour ajouter une langue */
46
+ onAddLanguage?: (language: LanguageConfig) => Promise<void>;
47
+ /** Callback pour exporter */
48
+ onExport?: (language?: string) => Promise<void>;
49
+ /** Callback pour importer */
50
+ onImport?: (file: File, language: string, strategy: "overwrite" | "merge") => Promise<void>;
51
+ /** État de chargement */
52
+ isLoading?: boolean;
53
+ /** État de sauvegarde */
54
+ isSaving?: boolean;
55
+ /** Classe CSS */
56
+ className?: string;
57
+ /** Titre */
58
+ title?: string;
59
+ /** Description */
60
+ description?: string;
61
+ }
62
+ export declare function WakaI18nEditor({ config, translations: initialTranslations, onChange, onSave, onAddKey, onDeleteKey, onAddLanguage, onExport, onImport, isLoading, isSaving, className, title, description, }: I18nEditorProps): import("react/jsx-runtime").JSX.Element;
63
+ export default WakaI18nEditor;
@@ -40,3 +40,5 @@ export { WakaFileManager, defaultFiles, defaultBreadcrumbs, } from './file-manag
40
40
  export type { WakaFileManagerProps, FileItem, FileType, BreadcrumbItem as FileManagerBreadcrumb, } from './file-manager';
41
41
  export { WakaThemeCreatorBlock, defaultThemes, } from './theme-creator-block';
42
42
  export type { WakaThemeCreatorBlockProps, ThemeCreatorBlockTheme, ThemeBlockColors, ThemeBlockAssets, ThemeColorGroup, } from './theme-creator-block';
43
+ export { WakaI18nEditor } from './i18n-editor';
44
+ export type { I18nEditorProps, I18nEditorConfig, TranslationEntry, TranslationValue, LanguageConfig, } from './i18n-editor';
@@ -14,8 +14,12 @@ declare const Command: React.ForwardRefExoticComponent<Omit<{
14
14
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
15
  interface CommandDialogProps extends DialogProps {
16
16
  children?: React.ReactNode;
17
+ /** Title for screen readers (visually hidden) */
18
+ title?: string;
19
+ /** Description for screen readers (visually hidden) */
20
+ description?: string;
17
21
  }
18
- declare const CommandDialog: ({ children, ...props }: CommandDialogProps) => import("react/jsx-runtime").JSX.Element;
22
+ declare const CommandDialog: ({ children, title, description, ...props }: CommandDialogProps) => import("react/jsx-runtime").JSX.Element;
19
23
  declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange" | "value" | "type"> & {
20
24
  value?: string;
21
25
  onValueChange?: (search: string) => void;
@@ -4,5 +4,15 @@ 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;
7
17
  }
8
18
  export declare const ThemeSelector: React.ForwardRefExoticComponent<ThemeSelectorProps & React.RefAttributes<HTMLDivElement>>;
@@ -35,8 +35,10 @@ export interface WakaImageProps {
35
35
  className?: string;
36
36
  /** Classes CSS pour le conteneur */
37
37
  containerClassName?: string;
38
+ /** Ratio d'aspect (ex: "16/9", "4/3", "1/1") */
39
+ aspectRatio?: string;
38
40
  }
39
- export declare function WakaImage({ src, alt, width, height, placeholder, placeholderColor, lazy, zoomable, maxZoom, objectFit, objectPosition, rounded, showLoader, onLoad, onError, onZoomChange, className, containerClassName, }: WakaImageProps): import("react/jsx-runtime").JSX.Element;
41
+ export declare function WakaImage({ src, alt, width, height, placeholder, placeholderColor, lazy, zoomable, maxZoom, objectFit, objectPosition, rounded, showLoader, onLoad, onError, onZoomChange, className, containerClassName, aspectRatio, }: WakaImageProps): import("react/jsx-runtime").JSX.Element;
40
42
  export interface WakaImageGalleryProps {
41
43
  /** Liste des images */
42
44
  images: Array<{