UNPKG

1.51 kBTypeScriptView Raw
1import React from 'react';
2/**
3 * Override DefaultTheme to get accurate typings for your project.
4 *
5 * ```
6 * // create styled-components.d.ts in your project source
7 * // if it isn't being picked up, check tsconfig compilerOptions.types
8 * import type { CSSProp } from "styled-components";
9 * import Theme from './theme';
10 *
11 * type ThemeType = typeof Theme;
12 *
13 * declare module "styled-components" {
14 * export interface DefaultTheme extends ThemeType {}
15 * }
16 *
17 * declare module "react" {
18 * interface DOMAttributes<T> {
19 * css?: CSSProp;
20 * }
21 * }
22 * ```
23 */
24export interface DefaultTheme {
25 [key: string]: any;
26}
27type ThemeFn = (outerTheme?: DefaultTheme | undefined) => DefaultTheme;
28type ThemeArgument = DefaultTheme | ThemeFn;
29type Props = {
30 children?: React.ReactNode;
31 theme: ThemeArgument;
32};
33export declare const ThemeContext: React.Context<DefaultTheme | undefined>;
34export declare const ThemeConsumer: React.Consumer<DefaultTheme | undefined>;
35/**
36 * Returns the current theme (as provided by the closest ancestor `ThemeProvider`.)
37 *
38 * If no `ThemeProvider` is found, the function will error. If you need access to the theme in an
39 * uncertain composition scenario, `React.useContext(ThemeContext)` will not emit an error if there
40 * is no `ThemeProvider` ancestor.
41 */
42export declare function useTheme(): DefaultTheme;
43/**
44 * Provide a theme to an entire react component tree via context
45 */
46export default function ThemeProvider(props: Props): JSX.Element | null;
47export {};