UNPKG

@atlaskit/primitives

Version:

Primitives are token-backed low-level building blocks.

42 lines (41 loc) 1.75 kB
import { css as cssEmotion } from '@emotion/react'; import type { CSSPropertiesWithMultiValues, SerializedStyles } from '@emotion/serialize'; import type * as CSS from 'csstype'; import type { MediaQuery } from '../responsive/types'; import { TokenisedProps } from './style-maps.partial'; declare const uniqueSymbol: unique symbol; /** * @internal used in primitives * @returns a collection of styles that can be applied to the respective primitive */ type ParsedXcss = ReturnType<typeof cssEmotion> | ReturnType<typeof cssEmotion>[]; export declare const parseXcss: (args: XCSS | (XCSS | false | undefined)[]) => ParsedXcss; type AllMedia = MediaQuery | '@media screen and (forced-colors: active), screen and (-ms-high-contrast: active)' | '@media (prefers-color-scheme: dark)' | '@media (prefers-color-scheme: light)' | '@media (prefers-reduced-motion: reduce)'; type CSSMediaQueries = { [MQ in AllMedia]?: Omit<SafeCSSObject, AllMedia>; }; type CSSPseudos = { [Pseudo in CSS.Pseudos]?: Omit<SafeCSSObject, CSS.Pseudos | AllMedia>; }; type AtRulesWithoutMedia = Exclude<CSS.AtRules, '@media'>; type CSSAtRules = { [AtRule in AtRulesWithoutMedia as `${AtRule}${string}`]?: Omit<SafeCSSObject, AtRulesWithoutMedia>; }; type SafeCSSObject = CSSPseudos & CSSAtRules & TokenisedProps & CSSMediaQueries & Omit<CSSPropertiesWithMultiValues, keyof TokenisedProps>; export type XCSS = ReturnType<typeof xcss>; /** * ### xcss * * `xcss` is a safer, tokens-first approach to CSS-in-JS. It allows token-backed values for * CSS application. * * ```tsx * const styles = xcss({ * padding: 'space.100' * }) * ``` */ export declare function xcss(style: SafeCSSObject): { readonly [uniqueSymbol]: SerializedStyles; }; export {};