@space-man/react-theme-animation 2.3.0 → 3.0.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,4 @@
1
+ /** Decode SVG assets before capture. A pending/failed asset never delays a toggle. */
2
+ declare const preloadThemeLogo: (url: string) => Promise<void>;
3
+
4
+ export { preloadThemeLogo as p };
@@ -1,45 +1,46 @@
1
- import { UseThemeAnimationProps, UseThemeAnimationReturn, ThemeSwitcherProps, ThemeSelectorProps, Theme, ColorTheme, ThemeAnimationType, SystemThemeMode } from '../core/index.js';
2
- export { SlideDirection, getSystemTheme, injectBaseStyles, prefersReducedMotion, resolveTheme, resolveThemeForServer, supportsViewTransitions } from '../core/index.js';
1
+ import { U as UseThemeAnimationProps, l as UseThemeAnimationReturn, h as ThemeSwitcherProps, g as ThemeSelectorProps, c as Theme, C as ColorTheme, e as ThemeAnimationType, i as ThemeTransitionInput, a as ColorThemeToggle, b as SystemThemeMode } from '../animations-CaaRrn3-.js';
2
+ export { A as AnimationPosition, S as SlideDirection, T as TRANSITION_DIRECTIONS, d as ThemeAnimationOptions, f as ThemeLogoOptions, j as ThemeTransitionOptions, k as TransitionDirection, m as getSystemTheme, n as injectBaseStyles, p as prefersReducedMotion, r as resolveTheme, o as resolveThemeForServer, s as supportsViewTransitions } from '../animations-CaaRrn3-.js';
3
3
  import React, { ReactNode } from 'react';
4
+ export { p as preloadThemeLogo } from '../logo-DtwtRv4y.js';
4
5
 
5
- declare const useThemeAnimation: (props?: UseThemeAnimationProps) => UseThemeAnimationReturn;
6
+ declare const useThemeAnimation: (props?: Readonly<UseThemeAnimationProps>) => UseThemeAnimationReturn;
6
7
 
7
- declare const ThemeSwitcher: React.FC<ThemeSwitcherProps>;
8
+ declare function ThemeSwitcher(props: ThemeSwitcherProps): React.JSX.Element;
8
9
 
9
- declare const ThemeSelector: React.FC<ThemeSelectorProps>;
10
+ declare function ThemeSelector(props: ThemeSelectorProps): React.JSX.Element;
10
11
 
11
12
  /**
12
13
  * Context type for the Spaceman Theme Provider
13
14
  */
14
15
  interface SpacemanThemeContextType {
15
- ref: React.RefObject<HTMLButtonElement | null>;
16
- theme: Theme;
17
- colorTheme: ColorTheme;
18
- resolvedTheme: 'light' | 'dark';
19
- setTheme: (theme: Theme) => void;
20
- setColorTheme: (colorTheme: ColorTheme) => void;
21
- switchTheme: (theme: Theme) => Promise<void>;
22
- switchColorTheme: (colorTheme: string) => void;
23
- toggleTheme: () => Promise<void>;
24
- toggleLightTheme: () => Promise<void>;
25
- toggleDarkTheme: () => Promise<void>;
26
- toggleColorTheme: () => void;
27
- createColorThemeToggle: (targetColorTheme: string) => () => void;
28
- isColorThemeActive: (targetColorTheme: string) => boolean;
29
- switchThemeFromElement: (theme: Theme, element: HTMLButtonElement) => Promise<void>;
16
+ readonly ref: React.RefObject<HTMLButtonElement | null>;
17
+ readonly theme: Theme;
18
+ readonly colorTheme: ColorTheme;
19
+ readonly resolvedTheme: 'light' | 'dark';
20
+ readonly setTheme: (theme: Theme) => void;
21
+ readonly setColorTheme: (colorTheme: ColorTheme) => void;
22
+ readonly switchTheme: (theme: Theme, options?: ThemeTransitionInput) => Promise<void>;
23
+ readonly switchColorTheme: (colorTheme: string, options?: ThemeTransitionInput) => Promise<void>;
24
+ readonly toggleTheme: (options?: ThemeTransitionInput) => Promise<void>;
25
+ readonly toggleLightTheme: (options?: ThemeTransitionInput) => Promise<void>;
26
+ readonly toggleDarkTheme: (options?: ThemeTransitionInput) => Promise<void>;
27
+ readonly toggleColorTheme: ColorThemeToggle;
28
+ readonly createColorThemeToggle: (targetColorTheme: string) => ColorThemeToggle;
29
+ readonly isColorThemeActive: (targetColorTheme: string) => boolean;
30
+ readonly switchThemeFromElement: (theme: Theme, element: HTMLButtonElement) => Promise<void>;
30
31
  }
31
32
  /**
32
33
  * Props for the Spaceman Theme Provider
33
34
  */
34
- interface SpacemanThemeProviderProps {
35
- children: ReactNode;
36
- themes?: Theme[];
37
- colorThemes?: ColorTheme[];
38
- defaultTheme?: Theme;
39
- defaultColorTheme?: ColorTheme;
40
- animationType?: ThemeAnimationType;
41
- duration?: number;
42
- }
35
+ type SpacemanThemeProviderProps = UseThemeAnimationProps & {
36
+ readonly children: ReactNode;
37
+ readonly themes?: readonly Theme[];
38
+ readonly colorThemes?: readonly ColorTheme[];
39
+ readonly defaultTheme?: Theme;
40
+ readonly defaultColorTheme?: ColorTheme;
41
+ readonly animationType?: ThemeAnimationType;
42
+ readonly duration?: number;
43
+ };
43
44
  /**
44
45
  * Spaceman Theme Provider - Provides centralized theme state management
45
46
  *
@@ -52,9 +53,9 @@ interface SpacemanThemeProviderProps {
52
53
  * @param defaultTheme - Default theme to use (default: 'system')
53
54
  * @param defaultColorTheme - Default color theme to use (default: 'default')
54
55
  * @param animationType - Animation type for theme transitions (default: CIRCLE)
55
- * @param duration - Animation duration in milliseconds (default: 750)
56
+ * @param duration - Animation duration in milliseconds (default: 400)
56
57
  */
57
- declare const SpacemanThemeProvider: React.FC<SpacemanThemeProviderProps>;
58
+ declare function SpacemanThemeProvider({ children, themes, colorThemes, defaultTheme, defaultColorTheme, animationType, duration, ...animationOptions }: Readonly<SpacemanThemeProviderProps>): React.JSX.Element;
58
59
  /**
59
60
  * Hook to consume the Spaceman Theme context
60
61
  *
@@ -64,137 +65,138 @@ declare const SpacemanThemeProvider: React.FC<SpacemanThemeProviderProps>;
64
65
  declare const useSpacemanTheme: () => SpacemanThemeContextType;
65
66
 
66
67
  interface NextThemeContextType {
67
- ref: React.RefObject<HTMLButtonElement | null>;
68
- theme: Theme;
69
- colorTheme: ColorTheme;
70
- resolvedTheme: 'light' | 'dark';
71
- systemTheme: 'light' | 'dark';
72
- setTheme: (theme: Theme) => void;
73
- setColorTheme: (colorTheme: ColorTheme) => void;
74
- switchTheme: (theme: Theme, animationOff?: boolean) => Promise<void>;
75
- switchColorTheme: (colorTheme: string) => void;
76
- toggleTheme: (animationOff?: boolean) => Promise<void>;
77
- toggleLightTheme: (animationOff?: boolean) => Promise<void>;
78
- toggleDarkTheme: (animationOff?: boolean) => Promise<void>;
79
- toggleColorTheme: () => void;
80
- createColorThemeToggle: (targetColorTheme: string) => () => void;
81
- isColorThemeActive: (targetColorTheme: string) => boolean;
82
- switchThemeFromElement: (theme: Theme, element: HTMLButtonElement) => Promise<void>;
83
- }
84
- interface NextThemeProviderProps {
85
- children: React.ReactNode;
86
- themes?: Theme[];
87
- colorThemes?: ColorTheme[];
88
- defaultTheme?: Theme;
89
- defaultColorTheme?: ColorTheme;
90
- animationType?: ThemeAnimationType;
91
- duration?: number;
92
- storageKey?: string;
93
- colorStorageKey?: string;
94
- attribute?: 'class' | 'data-theme';
95
- value?: Record<string, string>;
96
- enableSystem?: boolean;
97
- enableColorScheme?: boolean;
98
- disableTransitionOnChange?: boolean;
99
- forcedTheme?: Theme;
100
- nonce?: string;
101
- scriptProps?: Omit<React.ScriptHTMLAttributes<HTMLScriptElement>, 'dangerouslySetInnerHTML' | 'nonce'>;
102
- colorThemePrefix?: string;
103
- globalClassName?: string;
104
- disableAnimationOnInit?: boolean;
105
- disablePreHydrationScript?: boolean;
106
- onThemeChange?: (theme: Theme) => void;
107
- onColorThemeChange?: (colorTheme: ColorTheme) => void;
68
+ readonly ref: React.RefObject<HTMLButtonElement | null>;
69
+ readonly theme: Theme;
70
+ readonly colorTheme: ColorTheme;
71
+ readonly resolvedTheme: 'light' | 'dark';
72
+ readonly systemTheme: 'light' | 'dark';
73
+ readonly setTheme: (theme: Theme) => void;
74
+ readonly setColorTheme: (colorTheme: ColorTheme) => void;
75
+ readonly switchTheme: (theme: Theme, options?: ThemeTransitionInput) => Promise<void>;
76
+ readonly switchColorTheme: (colorTheme: string, options?: ThemeTransitionInput) => Promise<void>;
77
+ readonly toggleTheme: (options?: ThemeTransitionInput) => Promise<void>;
78
+ readonly toggleLightTheme: (options?: ThemeTransitionInput) => Promise<void>;
79
+ readonly toggleDarkTheme: (options?: ThemeTransitionInput) => Promise<void>;
80
+ readonly toggleColorTheme: ColorThemeToggle;
81
+ readonly createColorThemeToggle: (targetColorTheme: string) => ColorThemeToggle;
82
+ readonly isColorThemeActive: (targetColorTheme: string) => boolean;
83
+ readonly switchThemeFromElement: (theme: Theme, element: HTMLButtonElement) => Promise<void>;
108
84
  }
109
- declare const NextThemeProvider: React.FC<NextThemeProviderProps>;
110
- declare const ThemeProvider: React.FC<NextThemeProviderProps>;
85
+ type NextThemeProviderProps = UseThemeAnimationProps & {
86
+ readonly children: React.ReactNode;
87
+ readonly themes?: readonly Theme[];
88
+ readonly colorThemes?: readonly ColorTheme[];
89
+ readonly defaultTheme?: Theme;
90
+ readonly defaultColorTheme?: ColorTheme;
91
+ readonly animationType?: ThemeAnimationType;
92
+ readonly duration?: number;
93
+ readonly storageKey?: string;
94
+ readonly colorStorageKey?: string;
95
+ readonly attribute?: 'class' | 'data-theme';
96
+ readonly value?: Record<string, string>;
97
+ readonly enableSystem?: boolean;
98
+ readonly enableColorScheme?: boolean;
99
+ readonly disableTransitionOnChange?: boolean;
100
+ readonly forcedTheme?: Theme;
101
+ readonly nonce?: string;
102
+ readonly scriptProps?: Omit<React.ScriptHTMLAttributes<HTMLScriptElement>, 'dangerouslySetInnerHTML' | 'nonce'>;
103
+ readonly colorThemePrefix?: string;
104
+ readonly globalClassName?: string;
105
+ readonly disableAnimationOnInit?: boolean;
106
+ readonly disablePreHydrationScript?: boolean;
107
+ readonly onThemeChange?: (theme: Theme) => void;
108
+ readonly onColorThemeChange?: (colorTheme: ColorTheme) => void;
109
+ };
110
+ declare function NextThemeProvider({ attribute, children, colorStorageKey, colorThemePrefix, colorThemes, defaultColorTheme, defaultTheme, disableAnimationOnInit, disablePreHydrationScript, disableTransitionOnChange, duration, enableColorScheme, enableSystem, forcedTheme, globalClassName, nonce, onColorThemeChange, onThemeChange, scriptProps, storageKey, themes, value, animationType, ...animationOptions }: Readonly<NextThemeProviderProps>): React.JSX.Element;
111
+ declare const ThemeProvider: typeof NextThemeProvider;
111
112
  declare const useNextTheme: () => NextThemeContextType;
112
113
  declare const useTheme: () => NextThemeContextType;
113
114
 
114
- interface TanStackThemeContextType {
115
- ref: React.RefObject<HTMLButtonElement | null>;
116
- theme: Theme;
117
- colorTheme: ColorTheme;
118
- resolvedTheme: 'light' | 'dark';
119
- systemTheme: 'light' | 'dark';
120
- isHydrated: boolean;
121
- setTheme: (theme: Theme) => void;
122
- setColorTheme: (colorTheme: ColorTheme) => void;
123
- switchTheme: (theme: Theme, animationOff?: boolean) => Promise<void>;
124
- switchColorTheme: (colorTheme: string) => void;
125
- toggleTheme: (animationOff?: boolean) => Promise<void>;
126
- toggleLightTheme: (animationOff?: boolean) => Promise<void>;
127
- toggleDarkTheme: (animationOff?: boolean) => Promise<void>;
128
- toggleColorTheme: () => void;
129
- createColorThemeToggle: (targetColorTheme: string) => () => void;
130
- isColorThemeActive: (targetColorTheme: string) => boolean;
131
- switchThemeFromElement: (theme: Theme, element: HTMLButtonElement) => Promise<void>;
132
- }
133
- interface TanStackThemeProviderProps {
134
- children: ReactNode;
135
- themes?: Theme[];
136
- colorThemes?: ColorTheme[];
137
- defaultTheme?: Theme;
138
- defaultColorTheme?: ColorTheme;
139
- animationType?: ThemeAnimationType;
140
- duration?: number;
141
- storageKey?: string;
142
- colorStorageKey?: string;
143
- globalClassName?: string;
144
- colorThemePrefix?: string;
145
- serverTheme?: 'light' | 'dark' | 'system';
146
- serverColorTheme?: ColorTheme;
147
- systemThemeMode?: SystemThemeMode;
148
- onServerThemeChange?: (theme: Theme) => Promise<void> | void;
149
- onServerColorThemeChange?: (colorTheme: ColorTheme) => Promise<void> | void;
150
- }
151
115
  interface TanStackStartThemeScriptProps {
152
- storageKey?: string;
153
- colorStorageKey?: string;
154
- defaultTheme?: Theme;
155
- defaultColorTheme?: ColorTheme;
156
- globalClassName?: string;
157
- colorThemePrefix?: string;
158
- nonce?: string;
159
- systemThemeMode?: SystemThemeMode;
116
+ readonly storageKey?: string;
117
+ readonly colorStorageKey?: string;
118
+ readonly defaultTheme?: Theme;
119
+ readonly defaultColorTheme?: ColorTheme;
120
+ readonly globalClassName?: string;
121
+ readonly colorThemePrefix?: string;
122
+ readonly nonce?: string;
123
+ readonly systemThemeMode?: SystemThemeMode;
160
124
  }
161
125
  declare const TanStackStartThemeScript: React.FC<TanStackStartThemeScriptProps>;
162
- declare const TanStackThemeProvider: React.FC<TanStackThemeProviderProps>;
126
+
127
+ interface TanStackThemeContextType {
128
+ readonly ref: React.RefObject<HTMLButtonElement | null>;
129
+ readonly theme: Theme;
130
+ readonly colorTheme: ColorTheme;
131
+ readonly resolvedTheme: 'light' | 'dark';
132
+ readonly systemTheme: 'light' | 'dark';
133
+ readonly isHydrated: boolean;
134
+ readonly setTheme: (theme: Theme) => void;
135
+ readonly setColorTheme: (colorTheme: ColorTheme) => void;
136
+ readonly switchTheme: (theme: Theme, options?: ThemeTransitionInput) => Promise<void>;
137
+ readonly switchColorTheme: (colorTheme: string, options?: ThemeTransitionInput) => Promise<void>;
138
+ readonly toggleTheme: (options?: ThemeTransitionInput) => Promise<void>;
139
+ readonly toggleLightTheme: (options?: ThemeTransitionInput) => Promise<void>;
140
+ readonly toggleDarkTheme: (options?: ThemeTransitionInput) => Promise<void>;
141
+ readonly toggleColorTheme: ColorThemeToggle;
142
+ readonly createColorThemeToggle: (targetColorTheme: string) => ColorThemeToggle;
143
+ readonly isColorThemeActive: (targetColorTheme: string) => boolean;
144
+ readonly switchThemeFromElement: (theme: Theme, element: HTMLButtonElement) => Promise<void>;
145
+ }
146
+ type TanStackThemeProviderProps = UseThemeAnimationProps & {
147
+ readonly children: ReactNode;
148
+ readonly themes?: readonly Theme[];
149
+ readonly colorThemes?: readonly ColorTheme[];
150
+ readonly defaultTheme?: Theme;
151
+ readonly defaultColorTheme?: ColorTheme;
152
+ readonly animationType?: ThemeAnimationType;
153
+ readonly duration?: number;
154
+ readonly storageKey?: string;
155
+ readonly colorStorageKey?: string;
156
+ readonly globalClassName?: string;
157
+ readonly colorThemePrefix?: string;
158
+ readonly serverTheme?: 'light' | 'dark' | 'system';
159
+ readonly serverColorTheme?: ColorTheme;
160
+ readonly systemThemeMode?: SystemThemeMode;
161
+ readonly onServerThemeChange?: (theme: Theme) => Promise<void> | void;
162
+ readonly onServerColorThemeChange?: (colorTheme: ColorTheme) => Promise<void> | void;
163
+ };
164
+ declare function TanStackThemeProvider({ children, themes, colorThemes, defaultTheme, defaultColorTheme, animationType, duration, storageKey, colorStorageKey, globalClassName, colorThemePrefix, serverTheme, serverColorTheme, systemThemeMode, onServerThemeChange, onServerColorThemeChange, ...animationOptions }: Readonly<TanStackThemeProviderProps>): React.JSX.Element;
163
165
  declare const useTanStackTheme: () => TanStackThemeContextType;
164
166
 
165
167
  interface ViteThemeContextType {
166
- ref: React.RefObject<HTMLButtonElement | null>;
167
- theme: Theme;
168
- colorTheme: ColorTheme;
169
- resolvedTheme: 'light' | 'dark';
170
- systemTheme: 'light' | 'dark';
171
- setTheme: (theme: Theme) => void;
172
- setColorTheme: (colorTheme: ColorTheme) => void;
173
- switchTheme: (theme: Theme, animationOff?: boolean) => Promise<void>;
174
- switchColorTheme: (colorTheme: string) => void;
175
- toggleTheme: (animationOff?: boolean) => Promise<void>;
176
- toggleLightTheme: (animationOff?: boolean) => Promise<void>;
177
- toggleDarkTheme: (animationOff?: boolean) => Promise<void>;
178
- toggleColorTheme: () => void;
179
- createColorThemeToggle: (targetColorTheme: string) => () => void;
180
- isColorThemeActive: (targetColorTheme: string) => boolean;
181
- switchThemeFromElement: (theme: Theme, element: HTMLButtonElement) => Promise<void>;
182
- }
183
- interface ViteThemeProviderProps {
184
- children: ReactNode;
185
- themes?: Theme[];
186
- colorThemes?: ColorTheme[];
187
- defaultTheme?: Theme;
188
- defaultColorTheme?: ColorTheme;
189
- animationType?: ThemeAnimationType;
190
- duration?: number;
191
- attribute?: 'class' | 'data-theme';
192
- disableTransitionOnChange?: boolean;
193
- storageKey?: string;
194
- colorStorageKey?: string;
195
- globalClassName?: string;
196
- colorThemePrefix?: string;
168
+ readonly ref: React.RefObject<HTMLButtonElement | null>;
169
+ readonly theme: Theme;
170
+ readonly colorTheme: ColorTheme;
171
+ readonly resolvedTheme: 'light' | 'dark';
172
+ readonly systemTheme: 'light' | 'dark';
173
+ readonly setTheme: (theme: Theme) => void;
174
+ readonly setColorTheme: (colorTheme: ColorTheme) => void;
175
+ readonly switchTheme: (theme: Theme, options?: ThemeTransitionInput) => Promise<void>;
176
+ readonly switchColorTheme: (colorTheme: string, options?: ThemeTransitionInput) => Promise<void>;
177
+ readonly toggleTheme: (options?: ThemeTransitionInput) => Promise<void>;
178
+ readonly toggleLightTheme: (options?: ThemeTransitionInput) => Promise<void>;
179
+ readonly toggleDarkTheme: (options?: ThemeTransitionInput) => Promise<void>;
180
+ readonly toggleColorTheme: ColorThemeToggle;
181
+ readonly createColorThemeToggle: (targetColorTheme: string) => ColorThemeToggle;
182
+ readonly isColorThemeActive: (targetColorTheme: string) => boolean;
183
+ readonly switchThemeFromElement: (theme: Theme, element: HTMLButtonElement) => Promise<void>;
197
184
  }
185
+ type ViteThemeProviderProps = UseThemeAnimationProps & {
186
+ readonly children: ReactNode;
187
+ readonly themes?: readonly Theme[];
188
+ readonly colorThemes?: readonly ColorTheme[];
189
+ readonly defaultTheme?: Theme;
190
+ readonly defaultColorTheme?: ColorTheme;
191
+ readonly animationType?: ThemeAnimationType;
192
+ readonly duration?: number;
193
+ readonly attribute?: 'class' | 'data-theme';
194
+ readonly disableTransitionOnChange?: boolean;
195
+ readonly storageKey?: string;
196
+ readonly colorStorageKey?: string;
197
+ readonly globalClassName?: string;
198
+ readonly colorThemePrefix?: string;
199
+ };
198
200
  /**
199
201
  * Vite Theme Provider - Optimized for Vite SPA applications
200
202
  *
@@ -218,7 +220,9 @@ interface ViteThemeProviderProps {
218
220
  * @param globalClassName - Class name for dark theme (when using 'class' attribute)
219
221
  * @param colorThemePrefix - Prefix for color theme classes
220
222
  */
221
- declare const ViteThemeProvider: React.FC<ViteThemeProviderProps>;
223
+ declare function ViteThemeProvider({ children, themes, colorThemes, defaultTheme, defaultColorTheme, animationType, duration, attribute, disableTransitionOnChange, storageKey, colorStorageKey, globalClassName, colorThemePrefix, ...animationOptions }: Readonly<ViteThemeProviderProps>): React.JSX.Element;
222
224
  declare const useViteTheme: () => ViteThemeContextType;
223
225
 
224
- export { ColorTheme, NextThemeProvider, SpacemanThemeProvider, SystemThemeMode, TanStackStartThemeScript, TanStackThemeProvider, Theme, ThemeAnimationType, ThemeProvider, ThemeSelector, ThemeSelectorProps, ThemeSwitcher, ThemeSwitcherProps, UseThemeAnimationProps, UseThemeAnimationReturn, ViteThemeProvider, useNextTheme, useSpacemanTheme, useTanStackTheme, useTheme, useThemeAnimation, useViteTheme };
226
+ declare function useHydrated(): boolean;
227
+
228
+ export { ColorTheme, ColorThemeToggle, NextThemeProvider, SpacemanThemeProvider, SystemThemeMode, TanStackStartThemeScript, TanStackThemeProvider, Theme, ThemeAnimationType, ThemeProvider, ThemeSelector, ThemeSelectorProps, ThemeSwitcher, ThemeSwitcherProps, ThemeTransitionInput, UseThemeAnimationProps, UseThemeAnimationReturn, ViteThemeProvider, useHydrated, useNextTheme, useSpacemanTheme, useTanStackTheme, useTheme, useThemeAnimation, useViteTheme };