import React, {createContext, ReactNode, useContext} from 'react' import {useStyle, CSSRule} from '@karma.run/react' import {defaultTheme} from './defaultTheme' export interface ThemeColors { primary: string primaryDark: string action: string actionDark: string success: string successDark: string alert: string alertDark: string gray: string grayDark: string grayLight: string light: string dark: string white: string black: string } export interface Theme { colors: ThemeColors } export const ThemeContext = createContext(defaultTheme) export interface ThemeProviderProps { theme?: Theme children?: ReactNode } export function ThemeProvider({theme, children}: ThemeProviderProps) { return {children} } export function useThemeStyle(): (...rules: CSSRule<{theme: Theme}>[]) => string export function useThemeStyle

(props: P): (...rules: CSSRule

[]) => string export function useThemeStyle

(props?: P): (...rules: CSSRule

[]) => string { const theme = useContext(ThemeContext) return useStyle({...props, theme} as P & {theme: Theme}) } export type CSSRuleWithTheme

= CSSRule

export function cssRuleWithTheme

(styleFn: CSSRuleWithTheme

): CSSRuleWithTheme

{ return styleFn } export function themeMiddleware() { return {theme: useContext(ThemeContext)} }