@wakastellar/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/blocks/footer/index.d.ts +19 -0
  2. package/dist/blocks/headtab/index.d.ts +27 -0
  3. package/dist/blocks/index.d.ts +5 -0
  4. package/dist/blocks/language-selector/index.d.ts +6 -0
  5. package/dist/blocks/layout/index.d.ts +28 -0
  6. package/dist/blocks/login/index.d.ts +13 -0
  7. package/dist/components/DataTable/DataTable.d.ts +17 -0
  8. package/dist/components/DataTable/DataTableAdvanced.d.ts +27 -0
  9. package/dist/components/DataTable/DataTableColumnResizer.d.ts +8 -0
  10. package/dist/components/DataTable/DataTableContextMenu.d.ts +47 -0
  11. package/dist/components/DataTable/DataTableEditCell.d.ts +29 -0
  12. package/dist/components/DataTable/DataTableFilters.d.ts +14 -0
  13. package/dist/components/DataTable/DataTableGrouping.d.ts +25 -0
  14. package/dist/components/DataTable/DataTablePagination.d.ts +8 -0
  15. package/dist/components/DataTable/DataTableSelection.d.ts +46 -0
  16. package/dist/components/DataTable/DataTableToolbar.d.ts +14 -0
  17. package/dist/components/DataTable/examples/EditExample.d.ts +2 -0
  18. package/dist/components/DataTable/hooks/useDataTable.d.ts +24 -0
  19. package/dist/components/DataTable/hooks/useDataTableAdvanced.d.ts +38 -0
  20. package/dist/components/DataTable/hooks/useDataTableEdit.d.ts +22 -0
  21. package/dist/components/DataTable/hooks/useDataTableExport.d.ts +15 -0
  22. package/dist/components/DataTable/hooks/useDataTableImport.d.ts +12 -0
  23. package/dist/components/DataTable/hooks/useDataTableTheme.d.ts +16 -0
  24. package/dist/components/DataTable/hooks/useDataTableVirtualization.d.ts +19 -0
  25. package/dist/components/DataTable/hooks/useTableLayout.d.ts +26 -0
  26. package/dist/components/DataTable/index.d.ts +37 -0
  27. package/dist/components/DataTable/types.d.ts +461 -0
  28. package/dist/components/DataTable/utils.d.ts +37 -0
  29. package/dist/components/accordion/index.d.ts +7 -0
  30. package/dist/components/alert/index.d.ts +8 -0
  31. package/dist/components/alert-dialog/index.d.ts +20 -0
  32. package/dist/components/aspect-ratio/index.d.ts +3 -0
  33. package/dist/components/avatar/index.d.ts +6 -0
  34. package/dist/components/badge/index.d.ts +9 -0
  35. package/dist/components/button/index.d.ts +11 -0
  36. package/dist/components/calendar/index.d.ts +8 -0
  37. package/dist/components/card/index.d.ts +8 -0
  38. package/dist/components/checkbox/index.d.ts +4 -0
  39. package/dist/components/code/index.d.ts +29 -0
  40. package/dist/components/collapsible/index.d.ts +5 -0
  41. package/dist/components/command/index.d.ts +51 -0
  42. package/dist/components/context-menu/index.d.ts +27 -0
  43. package/dist/components/dialog/index.d.ts +19 -0
  44. package/dist/components/dropdown-menu/index.d.ts +27 -0
  45. package/dist/components/form/index.d.ts +23 -0
  46. package/dist/components/hover-card/index.d.ts +6 -0
  47. package/dist/components/index.d.ts +52 -0
  48. package/dist/components/input/index.d.ts +5 -0
  49. package/dist/components/input-otp/index.d.ts +51 -0
  50. package/dist/components/label/index.d.ts +5 -0
  51. package/dist/components/language-selector/index.d.ts +40 -0
  52. package/dist/components/menubar/index.d.ts +28 -0
  53. package/dist/components/navigation-menu/index.d.ts +12 -0
  54. package/dist/components/popover/index.d.ts +6 -0
  55. package/dist/components/progress/index.d.ts +4 -0
  56. package/dist/components/radio-group/index.d.ts +5 -0
  57. package/dist/components/scroll-area/index.d.ts +5 -0
  58. package/dist/components/select/index.d.ts +13 -0
  59. package/dist/components/separator/index.d.ts +4 -0
  60. package/dist/components/sheet/index.d.ts +27 -0
  61. package/dist/components/skeleton/index.d.ts +2 -0
  62. package/dist/components/slider/index.d.ts +4 -0
  63. package/dist/components/switch/index.d.ts +4 -0
  64. package/dist/components/table/index.d.ts +10 -0
  65. package/dist/components/tabs/index.d.ts +7 -0
  66. package/dist/components/textarea/index.d.ts +5 -0
  67. package/dist/components/theme-selector/index.d.ts +8 -0
  68. package/dist/components/toast/index.d.ts +15 -0
  69. package/dist/components/toaster/index.d.ts +1 -0
  70. package/dist/components/toggle/index.d.ts +12 -0
  71. package/dist/components/tooltip/index.d.ts +7 -0
  72. package/dist/components/typography/index.d.ts +85 -0
  73. package/dist/components/waka-admincrumb/index.d.ts +41 -0
  74. package/dist/components/waka-carousel/index.d.ts +105 -0
  75. package/dist/components/waka-datetime-picker/index.d.ts +135 -0
  76. package/dist/components/waka-datetime-picker.form-integration/index.d.ts +69 -0
  77. package/dist/components/waka-notifications/index.d.ts +40 -0
  78. package/dist/components/waka-spinner/index.d.ts +46 -0
  79. package/dist/components/waka-theme-creator/index.d.ts +59 -0
  80. package/dist/components/waka-theme-manager/index.d.ts +62 -0
  81. package/dist/context/admincrumb-context.d.ts +34 -0
  82. package/dist/context/index.d.ts +8 -0
  83. package/dist/context/language-context.d.ts +57 -0
  84. package/dist/context/theme-context.d.ts +39 -0
  85. package/dist/context/theme-provider.d.ts +74 -0
  86. package/dist/context/waka-provider.d.ts +50 -0
  87. package/dist/hooks/index.d.ts +1 -0
  88. package/dist/hooks/use-toast.d.ts +44 -0
  89. package/dist/hooks/use-translation.d.ts +15 -0
  90. package/dist/hooks/useToast.d.ts +44 -0
  91. package/dist/index.cjs.js +70 -0
  92. package/dist/index.d.ts +20 -0
  93. package/dist/index.es.js +16379 -0
  94. package/dist/lib/i18n.d.ts +4 -0
  95. package/dist/types/provider.d.ts +108 -0
  96. package/dist/ui.css +1 -0
  97. package/dist/utils/cn.d.ts +1 -0
  98. package/dist/utils/datetime-helpers.d.ts +137 -0
  99. package/dist/utils/index.d.ts +5 -0
  100. package/dist/utils/theme-loader.d.ts +101 -0
  101. package/dist/utils/tweak.d.ts +18 -0
  102. package/package.json +118 -0
  103. package/src/styles/carousel.css +687 -0
  104. package/src/styles/code-highlight.css +232 -0
  105. package/src/styles/datepicker.css +420 -0
  106. package/src/styles/globals.css +84 -0
  107. package/src/styles/prism.css +261 -0
  108. package/src/styles/themes/forest.css +55 -0
  109. package/src/styles/themes/index.css +7 -0
  110. package/src/styles/themes/monochrome.css +55 -0
  111. package/src/styles/themes/perpetuity.css +55 -0
  112. package/src/styles/themes/sunset.css +55 -0
  113. package/src/styles/themes/twilight.css +55 -0
@@ -0,0 +1,8 @@
1
+ export { ThemeProvider, useTheme } from './theme-provider';
2
+ export type { ThemeContextValue, ThemeProviderProps, ThemeConfig, ThemeS3Config } from './theme-provider';
3
+ export { ThemeProvider as LegacyThemeProvider, useTheme as useLegacyTheme } from './theme-context';
4
+ export type { ThemeContextValue as LegacyThemeContextValue, ThemeProviderProps as LegacyThemeProviderProps } from './theme-context';
5
+ export { LanguageProvider, useLanguage } from './language-context';
6
+ export type { LanguageConfig, S3Config, LanguageProviderProps, LanguageContextValue } from './language-context';
7
+ export { WakaProvider, useWaka } from './waka-provider';
8
+ export type { WakaProviderConfig, WakaProviderProps } from './waka-provider';
@@ -0,0 +1,57 @@
1
+ import * as React from "react";
2
+ export interface S3Config {
3
+ /** URL de base du bucket S3 */
4
+ baseUrl: string;
5
+ /** Préfixe des fichiers (ex: "translations/") */
6
+ prefix?: string;
7
+ /** Extension des fichiers (défaut: "json") */
8
+ extension?: string;
9
+ /** Headers personnalisés pour les requêtes */
10
+ headers?: Record<string, string>;
11
+ }
12
+ export interface LanguageConfig {
13
+ code: string;
14
+ label: string;
15
+ flagEmoji?: string;
16
+ flag?: string;
17
+ }
18
+ export interface LanguageContextValue {
19
+ /** Langue courante */
20
+ currentLanguage: string;
21
+ /** Liste des langues disponibles */
22
+ languages: LanguageConfig[];
23
+ /** Changer de langue */
24
+ changeLanguage: (code: string) => Promise<void>;
25
+ /** État de chargement */
26
+ isLoading: boolean;
27
+ /** Traductions chargées */
28
+ loadedLanguages: Set<string>;
29
+ }
30
+ export interface LanguageProviderProps {
31
+ children: React.ReactNode;
32
+ /** Langues disponibles */
33
+ languages: LanguageConfig[];
34
+ /** Langue par défaut */
35
+ defaultLanguage?: string;
36
+ /** Configuration S3 (optionnel - si non fourni, utilise les traductions locales) */
37
+ s3Config?: S3Config;
38
+ /** Callback après changement de langue */
39
+ onLanguageChange?: (code: string) => void;
40
+ }
41
+ /**
42
+ * LanguageProvider
43
+ *
44
+ * Provider pour gérer les langues et charger les traductions depuis S3.
45
+ *
46
+ * Features:
47
+ * - Chargement dynamique des traductions depuis S3
48
+ * - Cache des traductions déjà chargées
49
+ * - Intégration avec i18next
50
+ * - Persistance dans localStorage
51
+ * - Support des traductions locales si pas de S3
52
+ */
53
+ export declare function LanguageProvider({ children, languages, defaultLanguage, s3Config, onLanguageChange, }: LanguageProviderProps): import("react/jsx-runtime").JSX.Element;
54
+ /**
55
+ * Hook pour utiliser le contexte de langue
56
+ */
57
+ export declare function useLanguage(): LanguageContextValue;
@@ -0,0 +1,39 @@
1
+ import { WakaThemeConfig, ThemeConfigItem } from '../types/provider';
2
+ import * as React from "react";
3
+ export interface ThemeContextValue {
4
+ theme: string;
5
+ setTheme: (theme: string) => void;
6
+ themes: ThemeConfigItem[];
7
+ systemTheme?: string;
8
+ isLoadingThemes?: boolean;
9
+ themesSource?: "config" | "s3" | "fallback";
10
+ }
11
+ export interface ThemeProviderProps {
12
+ children: React.ReactNode;
13
+ config?: WakaThemeConfig;
14
+ }
15
+ /**
16
+ * Provider de thème pour WakaStart UI
17
+ *
18
+ * Gère le thème actif, le stockage dans localStorage et la détection du thème système
19
+ * Charge automatiquement les thèmes depuis S3 si non fournis dans la config
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * <ThemeProvider config={{ defaultTheme: "light", themes: ["light", "dark"] }}>
24
+ * <App />
25
+ * </ThemeProvider>
26
+ * ```
27
+ */
28
+ export declare function ThemeProvider({ children, config }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
29
+ /**
30
+ * Hook pour accéder au contexte du thème
31
+ *
32
+ * @throws {Error} Si utilisé en dehors d'un ThemeProvider
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * const { theme, setTheme, themes } = useTheme()
37
+ * ```
38
+ */
39
+ export declare function useTheme(): ThemeContextValue;
@@ -0,0 +1,74 @@
1
+ import * as React from "react";
2
+ export interface ThemeS3Config {
3
+ /** URL de base du bucket S3 */
4
+ baseUrl: string;
5
+ /** Préfixe des fichiers (ex: "themes/") */
6
+ prefix?: string;
7
+ /** Extension des fichiers (défaut: "css") */
8
+ extension?: string;
9
+ /** Headers personnalisés pour les requêtes */
10
+ headers?: Record<string, string>;
11
+ /** Timeout en millisecondes */
12
+ timeout?: number;
13
+ }
14
+ export interface ThemeConfig {
15
+ /** Identifiant du thème (utilisé dans data-theme) */
16
+ id: string;
17
+ /** Nom d'affichage */
18
+ label: string;
19
+ /** Description optionnelle */
20
+ description?: string;
21
+ /** Couleur représentative du thème (pour preview) */
22
+ previewColor?: string;
23
+ }
24
+ export interface ThemeContextValue {
25
+ /** Thème courant */
26
+ currentTheme: string;
27
+ /** Liste des thèmes disponibles */
28
+ themes: ThemeConfig[];
29
+ /** Changer de thème */
30
+ changeTheme: (id: string) => Promise<void>;
31
+ /** État de chargement */
32
+ isLoading: boolean;
33
+ /** Thèmes chargés */
34
+ loadedThemes: Set<string>;
35
+ /** Mode dark actif */
36
+ isDarkMode: boolean;
37
+ /** Basculer le mode dark/light */
38
+ toggleDarkMode: () => void;
39
+ /** Précharger un thème */
40
+ preloadTheme: (id: string) => Promise<void>;
41
+ /** Vérifier si un thème est chargé */
42
+ isThemeLoaded: (id: string) => boolean;
43
+ }
44
+ export interface ThemeProviderProps {
45
+ children: React.ReactNode;
46
+ /** Thèmes disponibles */
47
+ themes: ThemeConfig[];
48
+ /** Thème par défaut */
49
+ defaultTheme?: string;
50
+ /** Configuration S3 (optionnel - si non fourni, utilise les thèmes locaux) */
51
+ s3Config?: ThemeS3Config;
52
+ /** Callback après changement de thème */
53
+ onThemeChange?: (id: string) => void;
54
+ /** Activer le mode sombre (optionnel) */
55
+ enableDarkMode?: boolean;
56
+ }
57
+ /**
58
+ * ThemeProvider
59
+ *
60
+ * Provider pour gérer les thèmes et charger les CSS depuis S3 avec support TweakCN.
61
+ *
62
+ * Features:
63
+ * - Chargement dynamique des thèmes depuis S3
64
+ * - Cache des thèmes déjà chargés
65
+ * - Support TweakCN avec data-theme
66
+ * - Persistance dans localStorage
67
+ * - Préchargement de thèmes
68
+ * - Support des thèmes locaux si pas de S3
69
+ */
70
+ export declare function ThemeProvider({ children, themes, defaultTheme, s3Config, onThemeChange, enableDarkMode, }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
71
+ /**
72
+ * Hook pour utiliser le ThemeProvider
73
+ */
74
+ export declare function useTheme(): ThemeContextValue;
@@ -0,0 +1,50 @@
1
+ import { WakaProviderConfig, WakaProviderProps } from '../types/provider';
2
+ /**
3
+ * WakaProvider - Provider principal pour WakaStart UI
4
+ *
5
+ * Centralise la configuration du thème, de la langue et des traductions S3
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * <WakaProvider config={{
10
+ * theme: {
11
+ * defaultTheme: "light",
12
+ * themes: ["light", "dark", "forest"],
13
+ * enableSystem: true
14
+ * },
15
+ * language: {
16
+ * defaultLanguage: "fr",
17
+ * supportedLanguages: ["fr", "en"],
18
+ * s3Config: {
19
+ * bucketUrl: "https://my-bucket.s3.amazonaws.com",
20
+ * translationsPath: "translations"
21
+ * }
22
+ * }
23
+ * }}>
24
+ * <App />
25
+ * </WakaProvider>
26
+ * ```
27
+ */
28
+ export declare function WakaProvider({ children, config }: WakaProviderProps): import("react/jsx-runtime").JSX.Element;
29
+ /**
30
+ * Hook pour accéder à la configuration du WakaProvider
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * const { changeLanguage, changeTheme, t } = useWaka()
35
+ * ```
36
+ */
37
+ export declare function useWaka(): {
38
+ currentLanguage: string;
39
+ changeLanguage: (lang: string) => Promise<void>;
40
+ languages: import('./language-context').LanguageConfig[];
41
+ isLanguageLoading: boolean;
42
+ currentTheme: string;
43
+ changeTheme: (id: string) => Promise<void>;
44
+ themes: import('./theme-provider').ThemeConfig[];
45
+ isThemeLoading: boolean;
46
+ preloadTheme: (id: string) => Promise<void>;
47
+ isThemeLoaded: (id: string) => boolean;
48
+ t: import('i18next').TFunction<"translation", undefined>;
49
+ };
50
+ export type { WakaProviderConfig, WakaProviderProps };
@@ -0,0 +1 @@
1
+ export { useToast, toast } from './use-toast';
@@ -0,0 +1,44 @@
1
+ import { ToastActionElement, ToastProps } from '../components/toast';
2
+ import * as React from "react";
3
+ type ToasterToast = ToastProps & {
4
+ id: string;
5
+ title?: React.ReactNode;
6
+ description?: React.ReactNode;
7
+ action?: ToastActionElement;
8
+ };
9
+ declare const actionTypes: {
10
+ readonly ADD_TOAST: "ADD_TOAST";
11
+ readonly UPDATE_TOAST: "UPDATE_TOAST";
12
+ readonly DISMISS_TOAST: "DISMISS_TOAST";
13
+ readonly REMOVE_TOAST: "REMOVE_TOAST";
14
+ };
15
+ type ActionType = typeof actionTypes;
16
+ type Action = {
17
+ type: ActionType["ADD_TOAST"];
18
+ toast: ToasterToast;
19
+ } | {
20
+ type: ActionType["UPDATE_TOAST"];
21
+ toast: Partial<ToasterToast>;
22
+ } | {
23
+ type: ActionType["DISMISS_TOAST"];
24
+ toastId?: ToasterToast["id"];
25
+ } | {
26
+ type: ActionType["REMOVE_TOAST"];
27
+ toastId?: ToasterToast["id"];
28
+ };
29
+ interface State {
30
+ toasts: ToasterToast[];
31
+ }
32
+ export declare const reducer: (state: State, action: Action) => State;
33
+ type Toast = Omit<ToasterToast, "id">;
34
+ declare function toast({ ...props }: Toast): {
35
+ id: string;
36
+ dismiss: () => void;
37
+ update: (props: ToasterToast) => void;
38
+ };
39
+ declare function useToast(): {
40
+ toast: typeof toast;
41
+ dismiss: (toastId?: string) => void;
42
+ toasts: ToasterToast[];
43
+ };
44
+ export { useToast, toast };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Hook pour utiliser les traductions dans les composants
3
+ *
4
+ * Wrapper autour de useTranslation de react-i18next qui s'assure
5
+ * que i18next est correctement initialisé avant de retourner les fonctions.
6
+ *
7
+ * Si i18next n'est pas encore prêt, retourne la clé de traduction telle quelle.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * const { t } = useTranslation()
12
+ * return <div>{t('hello')}</div>
13
+ * ```
14
+ */
15
+ export declare function useTranslation(): any;
@@ -0,0 +1,44 @@
1
+ import { ToastActionElement, ToastProps } from '../components/toast';
2
+ import * as React from "react";
3
+ type ToasterToast = ToastProps & {
4
+ id: string;
5
+ title?: React.ReactNode;
6
+ description?: React.ReactNode;
7
+ action?: ToastActionElement;
8
+ };
9
+ declare const actionTypes: {
10
+ readonly ADD_TOAST: "ADD_TOAST";
11
+ readonly UPDATE_TOAST: "UPDATE_TOAST";
12
+ readonly DISMISS_TOAST: "DISMISS_TOAST";
13
+ readonly REMOVE_TOAST: "REMOVE_TOAST";
14
+ };
15
+ type ActionType = typeof actionTypes;
16
+ type Action = {
17
+ type: ActionType["ADD_TOAST"];
18
+ toast: ToasterToast;
19
+ } | {
20
+ type: ActionType["UPDATE_TOAST"];
21
+ toast: Partial<ToasterToast>;
22
+ } | {
23
+ type: ActionType["DISMISS_TOAST"];
24
+ toastId?: ToasterToast["id"];
25
+ } | {
26
+ type: ActionType["REMOVE_TOAST"];
27
+ toastId?: ToasterToast["id"];
28
+ };
29
+ interface State {
30
+ toasts: ToasterToast[];
31
+ }
32
+ export declare const reducer: (state: State, action: Action) => State;
33
+ type Toast = Omit<ToasterToast, "id">;
34
+ declare function toast({ ...props }: Toast): {
35
+ id: string;
36
+ dismiss: () => void;
37
+ update: (props: ToasterToast) => void;
38
+ };
39
+ declare function useToast(): {
40
+ toast: typeof toast;
41
+ dismiss: (toastId?: string) => void;
42
+ toasts: ToasterToast[];
43
+ };
44
+ export { useToast, toast };