import { FontMetrics } from "@capsizecss/core"; import { ButtonProps, Variants } from "design-system/components/Button"; import { ScreenBaseProps } from "design-system/components/Screen"; import { TextProps } from "design-system/components/Text"; import { BoxProps } from "design-system/primitives/Box/Box"; import { ColorThemeKeys, FontSizes, FontTypesAndWeights, FontWeights } from "design-system/theme/types"; import { ButtonVariantProps } from "./getButtonVariants"; type TextVariant = { [name: string]: FontTypesAndWeights & { size: FontSizes; color: ColorThemeKeys } }; export const createButtonVariantOverrides = >(variants: T) => variants; export const createTextVariants = (variants: T) => variants; type FontConfig = Partial< Record >; export type ThemeConfig = { spacing: Record; radius: Record; typography: { sizes: Record; fontMetrics: Record; fontConfig: Record; }; }; export const createThemeConfig = (config: T) => config; export type ThemeColorConfig = Record; export const createThemeColors = (config: { dark?: Partial>; light: ThemeColorConfig; }) => ({ light: config.light, dark: { ...config.light, ...config.dark } }); export type DefaultButton = Omit & { variant: Variants; themeColor: ColorThemeKeys; textVariant: TextProps["variant"]; }; export const createDefaults = (config: { Button: DefaultButton; Text: Omit & { variant: NonNullable }; Screen: Omit & { backgroundColor: ColorThemeKeys } & ScreenBaseProps; }) => config; export type CreateThemeConfig = { defaults: ReturnType; colors: ReturnType; config: ReturnType; variants: { Text: ReturnType; Button: ReturnType; }; }; export const createTheme = (config: T) => config;