aliaset
Version:
twind monorepo
39 lines (30 loc) • 1.28 kB
text/typescript
import type { CSSBase, CSSObject, CSSValue } from './types'
import { tw as tw$ } from './runtime'
import { astish } from './internal/astish'
import { css } from './css'
export interface InjectGlobalFunction {
(style: CSSBase | string): void
(strings: TemplateStringsArray, ...interpolations: readonly CSSValue[]): void
bind(thisArg?: ((tokens: string) => string) | undefined | void): InjectGlobalFunction
call(thisArg: ((tokens: string) => string) | undefined | void, style: CSSBase | string): void
apply(thisArg: ((tokens: string) => string) | undefined | void, args: [CSSBase | string]): void
}
/**
* Injects styles into the global scope and is useful for applications such as gloabl styles, CSS resets or font faces.
*
* It **does not** return a class name, but adds the styles within the base layer to the stylesheet directly.
*
* @group Style Injectors
*/
export const injectGlobal: InjectGlobalFunction = function injectGlobal(
this: ((tokens: string) => string) | undefined | void,
strings: CSSBase | string | TemplateStringsArray,
...interpolations: readonly CSSValue[]
): void {
const tw = typeof this == 'function' ? this : tw$
tw(
css({
'@layer base': astish(strings as CSSObject, interpolations),
} as CSSObject),
)
}