-
-
Notifications
You must be signed in to change notification settings - Fork 100
/
install.ts
35 lines (29 loc) · 1011 Bytes
/
install.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import type { Twind, BaseTheme, TwindConfig, TwindUserConfig, Preset, ExtractThemes } from './types'
import { PROD } from 'distilt/env'
import { defineConfig } from './define-config'
import { setup } from './runtime'
import { getSheet } from './sheets'
/**
* @group Runtime
* @param config
* @param isProduction
*/
export function install<Theme extends BaseTheme = BaseTheme>(
config: TwindConfig<Theme>,
isProduction?: boolean,
): Twind<Theme & BaseTheme>
export function install<Theme = BaseTheme, Presets extends Preset<any>[] = Preset[]>(
config: TwindUserConfig<Theme, Presets>,
isProduction?: boolean,
): Twind<BaseTheme & ExtractThemes<Theme, Presets>>
export function install(config: TwindConfig | TwindUserConfig, isProduction = PROD): Twind {
const config$ = defineConfig(config as TwindUserConfig)
return setup(
{
...config$,
// in production use short hashed class names
hash: config$.hash ?? isProduction,
},
() => getSheet(!isProduction),
)
}