UNPKG

react-native-themed-stylesheet

Version:
46 lines (45 loc) 1.68 kB
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 {};