react-native-themed-stylesheet
Version:
React Native StyleSheets with Theming Support
46 lines (45 loc) • 1.68 kB
TypeScript
import React from 'react';
import { ImageStyle, StyleSheet, TextStyle, ViewStyle } from 'react-native';
export interface BaseTheme {
}
declare type WithoutConstants = {
theme: object;
};
declare type WithConstants = {
theme: object;
constants: object;
};
declare type Theme = BaseTheme extends WithConstants ? BaseTheme['theme'] & BaseTheme['constants'] : BaseTheme extends WithoutConstants ? BaseTheme['theme'] : any;
declare type Themes = BaseTheme extends WithConstants ? {
light: BaseTheme['theme'];
dark: BaseTheme['theme'];
constants: BaseTheme['constants'];
} : BaseTheme extends WithoutConstants ? {
light: BaseTheme['theme'];
dark: BaseTheme['theme'];
} : any;
declare type ThemeMode = 'light' | 'dark' | 'auto';
declare type ThemeContext = {
mode: ThemeMode;
setMode: (newMode: ThemeMode) => void;
setThemes: (newThemes: Themes) => void;
theme: Theme;
themes: Themes;
};
declare type Styles = {
[prop: string]: ViewStyle | TextStyle | ImageStyle;
};
declare type UseMode = () => [ThemeContext['mode'], ThemeContext['setMode']];
declare type UseTheme = () => Theme;
declare type UseThemes = () => [ThemeContext['themes'], ThemeContext['setThemes']];
declare type UseCreateStyles = <S extends Styles>(createStyles: (theme: Theme) => S) => [StyleSheet.NamedStyles<S>, Theme];
declare type ThemeProviderProps = {
themes: Themes;
mode?: ThemeMode;
};
export declare const ThemeProvider: React.FC<ThemeProviderProps>;
export declare const useMode: UseMode;
export declare const useTheme: UseTheme;
export declare const useThemes: UseThemes;
export declare const useCreateStyles: UseCreateStyles;
export {};