1- import createPalette from './createPalette' ;
1+ import createPalette , { PaletteOptions } from './createPalette' ;
2+ import { ColorSystemOptions } from './createThemeFoundation' ;
23import createThemeWithVars , {
34 CssVarsThemeOptions ,
45 ColorSystem ,
56 DefaultColorScheme ,
67} from './createThemeWithVars' ;
7- import createThemeNoVars , { Theme , ThemeOptions } from './createThemeNoVars' ;
8+ import createThemeNoVars , {
9+ Theme ,
10+ CssThemeVariables ,
11+ ThemeOptions as ThemeNoVarsOptions ,
12+ } from './createThemeNoVars' ;
813
9- export type { ThemeOptions , Theme , CssThemeVariables } from './createThemeNoVars' ;
14+ export type { Theme , CssThemeVariables } from './createThemeNoVars' ;
15+
16+ type CssVarsOptions = CssThemeVariables extends {
17+ enabled : true ;
18+ }
19+ ? ColorSystemOptions
20+ : { } ;
21+
22+ type CssVarsConfigList =
23+ | 'colorSchemeSelector'
24+ | 'rootSelector'
25+ | 'disableCssColorScheme'
26+ | 'cssVarPrefix'
27+ | 'shouldSkipGeneratingVar'
28+ | 'nativeColor' ;
29+
30+ export interface ThemeOptions extends CssVarsOptions , Omit < CssVarsThemeOptions , CssVarsConfigList > {
31+ cssVariables ?: boolean | Pick < CssVarsThemeOptions , CssVarsConfigList > ;
32+ palette ?: PaletteOptions ;
33+ }
1034
1135// eslint-disable-next-line consistent-return
1236function attachColorScheme (
@@ -35,20 +59,7 @@ function attachColorScheme(
3559 * @returns A complete, ready-to-use theme object.
3660 */
3761export default function createTheme (
38- options : Omit < ThemeOptions , 'components' > &
39- Pick < CssVarsThemeOptions , 'defaultColorScheme' | 'colorSchemes' | 'components' > & {
40- cssVariables ?:
41- | boolean
42- | Pick <
43- CssVarsThemeOptions ,
44- | 'colorSchemeSelector'
45- | 'rootSelector'
46- | 'disableCssColorScheme'
47- | 'cssVarPrefix'
48- | 'shouldSkipGeneratingVar'
49- | 'nativeColor'
50- > ;
51- } = { } as any , // cast type to skip module augmentation test
62+ options : ThemeOptions = { } as any , // cast type to skip module augmentation test
5263 ...args : object [ ]
5364) : Theme {
5465 const {
@@ -75,7 +86,7 @@ export default function createTheme(
7586 if ( cssVariables === false ) {
7687 if ( ! ( 'colorSchemes' in options ) ) {
7788 // Behaves exactly as v5
78- return createThemeNoVars ( options as ThemeOptions , ...args ) ;
89+ return createThemeNoVars ( options as ThemeNoVarsOptions , ...args ) ;
7990 }
8091
8192 let paletteOptions = palette ;
@@ -91,7 +102,7 @@ export default function createTheme(
91102 }
92103
93104 const theme = createThemeNoVars (
94- { ...options , palette : paletteOptions } as ThemeOptions ,
105+ { ...options , palette : paletteOptions } as ThemeNoVarsOptions ,
95106 ...args ,
96107 ) as unknown as Theme & {
97108 defaultColorScheme ?: 'light' | 'dark' ;
0 commit comments