import React from 'react'; import { TokenTypes as DefaultTokens } from './variables'; export type DeepPartial = { [K in keyof T]?: T[K] extends Record ? DeepPartial : T[K]; }; export interface ThemeConfig { name: string; tokens?: DeepPartial; components?: any; } export type ThemeProviderConfig = { theme: string | { name?: string; tokens?: DeepPartial; }; children?: React.ReactElement; }; export type Css = Record; type ThemeComponent = (tokens: ThemeTokens) => Css; export interface Theme { name: string; tokens?: ThemeTokens; components?: Record; addComponent?: (id: string, component: ThemeComponent) => void; styles?: Css; } export type ThemeTokens = CustomTokens & DefaultTokens; export interface CustomTokens { [key: string]: any; } export {};