import type * as React from "react"; export type ThemePolarity = "dark" | "light" | "system"; export type ResolvedThemePolarity = "dark" | "light"; export type ThemeTint = "soft" | "hard" | "extreme"; export type Base16Key = | "base00" | "base01" | "base02" | "base03" | "base04" | "base05" | "base06" | "base07" | "base08" | "base09" | "base0A" | "base0B" | "base0C" | "base0D" | "base0E" | "base0F"; export type Base16Palette = Record; export type ThemeFontFamily = | "public-sans" | "inter" | "source-serif-4" | "jetbrains-mono" | "system"; export type ThemeDesign = { density: number; borderWidth: number; shadowStrength: number; fontScale: number; headingWeight: number; motion: number; fontFamily: ThemeFontFamily; }; export type ThemeDefaultValues = { borderRadius: number; design: ThemeDesign; }; export type ThemePreset = { id: string; title: string; logo: string; css: string; defaultValues?: ThemeDefaultValues; }; export type ThemeProviderProps = { children: React.ReactNode; defaultTheme?: ThemePolarity; defaultColor?: string; defaultPalette?: Base16Palette | null; defaultPrimaryColor?: string; defaultTint?: ThemeTint; defaultBorderRadius?: number; defaultCustomCss?: string; themes?: readonly ThemePreset[]; defaultParentThemeId?: string | null; defaultDesign?: ThemeDesign; storageKey?: string | null; colorStorageKey?: string | null; paletteStorageKey?: string | null; primaryColorStorageKey?: string | null; tintStorageKey?: string | null; borderRadiusStorageKey?: string | null; customCssStorageKey?: string | null; parentThemeStorageKey?: string | null; designStorageKey?: string | null; disableTransitionOnChange?: boolean; }; export type ThemeProviderState = { theme: ThemePolarity; setTheme: (theme: ThemePolarity) => void; themeColor: string; setThemeColor: (color: string) => void; themePalette: Base16Palette | null; setThemePalette: (palette: Base16Palette | null) => void; themePrimaryColor: string; setThemePrimaryColor: (color: string) => void; themePolarity: ThemePolarity; setThemePolarity: (polarity: ThemePolarity) => void; resolvedPolarity: ResolvedThemePolarity; themeTint: ThemeTint; setThemeTint: (tint: ThemeTint) => void; themeBorderRadius: number; setThemeBorderRadius: (radius: number) => void; themeCustomCss: string; setThemeCustomCss: (css: string) => void; themes: readonly ThemePreset[]; parentThemeId: string | null; parentTheme: ThemePreset | null; setParentThemeId: (id: string | null) => void; applyThemePreset: (id: string) => void; resetThemePreset: () => void; isThemeCustomized: boolean; themeDesign: ThemeDesign; setThemeDesign: ( design: ThemeDesign | ((current: ThemeDesign) => ThemeDesign), ) => void; }; export type HslColor = { h: number; s: number; l: number; };