@geekyhawks/react-native-ui-components
Version:
Lightweight, reusable React Native UI components with built-in theming — including Text, TextInput, FloatingLabelTextInput, Button, and more. Fully typed with TypeScript and easy to integrate into any project.
72 lines • 3.08 kB
TypeScript
/**
* Theme Provider and Context
*
* Exposes a React Context for the theme and a ThemeProvider component.
* Allows library users to wrap their app and provide custom themes or use defaults.
* Includes a `useTheme` hook for easy access to theme properties inside components.
*
* Author: Geeky Hawks FZE LLC
*/
import React from "react";
import { Theme } from "./Theme";
import { ActivityIndicatorVariants, AppBarVariants, ButtonShapeVariants, ButtonSizeVariants, CheckBoxColorVariants, CheckBoxSizeVariants, FloatingLabelTextInputSizeVariants, FloatingLabelTextInputStyleVariants, LoaderModalVariants, RadioColorVariants, RadioSizeVariants, StatusBarVariants, SwitchColorVariants, TextInputSizeVariants, TextInputStyleVariants, TextVariants } from "./variants";
/**
* ThemeContextType
*
* Contains theme and textVariants for consumption in components.
*/
type ThemeContextType = {
activityIndicatorVariants: ActivityIndicatorVariants;
appBarVariants: AppBarVariants;
buttonShapeVariants: ButtonShapeVariants;
buttonSizeVariants: ButtonSizeVariants;
checkBoxColorVariants: CheckBoxColorVariants;
checkBoxSizeVariants: CheckBoxSizeVariants;
floatingLabelTextInputSizeVariants: FloatingLabelTextInputSizeVariants;
floatingLabelTextInputStyleVariants: FloatingLabelTextInputStyleVariants;
loaderModalVariants: LoaderModalVariants;
radioColorVariants: RadioColorVariants;
radioSizeVariants: RadioSizeVariants;
statusBarVariants: StatusBarVariants;
switchColorVariants: SwitchColorVariants;
textInputSizeVariants: TextInputSizeVariants;
textInputStyleVariants: TextInputStyleVariants;
textVariants: TextVariants;
theme: Theme;
};
/**
* useTheme
*
* Hook to access theme and textVariants in components.
*/
export declare const useTheme: () => ThemeContextType;
type ThemeProviderProps = {
activityIndicatorVariants?: ActivityIndicatorVariants;
appBarVariants?: AppBarVariants;
buttonShapeVariants?: ButtonShapeVariants;
buttonSizeVariants?: ButtonSizeVariants;
checkBoxColorVariants?: CheckBoxColorVariants;
checkBoxSizeVariants?: CheckBoxSizeVariants;
children: React.ReactNode;
floatingLabelTextInputSizeVariants?: FloatingLabelTextInputSizeVariants;
floatingLabelTextInputStyleVariants?: FloatingLabelTextInputStyleVariants;
loaderModalVariants?: LoaderModalVariants;
radioColorVariants?: RadioColorVariants;
radioSizeVariants?: RadioSizeVariants;
statusBarVariants?: StatusBarVariants;
switchColorVariants?: SwitchColorVariants;
textInputSizeVariants?: TextInputSizeVariants;
textInputStyleVariants?: TextInputStyleVariants;
textVariants?: TextVariants;
theme?: Theme;
};
/**
* ThemeProvider
*
* Wrap your app and optionally pass a custom theme, variants, or spacing.
* Only **replaces** the default values — no automatic merging.
* If users want defaults, they need to explicitly spread them.
*/
export declare const ThemeProvider: React.FC<ThemeProviderProps>;
export {};
//# sourceMappingURL=ThemeContext.d.ts.map