import type { CodeStringsConfig } from './parser'; export declare interface CompileClassConfig { enabled?: boolean trigger?: string classPrefix?: string layer?: string } export declare interface AttributifyConfig { enabled?: boolean prefix?: string ignoreAttributes?: string[] } export declare interface BracketSyntaxConfig { enabled?: boolean colonSyntax?: boolean aliases?: Record } /** * Web-font loading. ts-css maps `font-*` utilities to family stacks, but it * never loaded the actual font files — declare them here and ts-css emits the * `@import` / `@font-face` so the fonts render with zero extra wiring. */ export declare interface FontConfig { google?: string[] display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional' faces?: string[] } export declare interface CssConfig { content: string[] output: string minify: boolean watch: boolean verbose?: boolean includePreflight?: boolean darkMode?: 'class' | 'media' theme: Theme fonts?: FontConfig shortcuts: Record rules: CustomRule[] variants: VariantConfig safelist: string[] blocklist: string[] preflights: Preflight[] presets: Preset[] compileClass?: CompileClassConfig attributify?: AttributifyConfig bracketSyntax?: BracketSyntaxConfig codeStrings?: CodeStringsConfig cssVariables?: boolean colorVariables?: string[] styles?: string[] } export declare interface Theme { colors: Record> spacing: Record fontSize: Record fontFamily: Record lineHeight?: Record screens: Record containers: Record borderRadius: Record boxShadow: Record extend?: Partial> } export declare interface VariantConfig { 'responsive': boolean 'hover': boolean 'focus': boolean 'active': boolean 'disabled': boolean 'dark': boolean 'light': boolean 'group': boolean 'peer': boolean '*': boolean '**': boolean 'in': boolean 'before': boolean 'after': boolean 'marker': boolean 'first-letter': boolean 'first-line': boolean 'backdrop': boolean 'details-content': boolean 'first': boolean 'last': boolean 'odd': boolean 'even': boolean 'first-of-type': boolean 'last-of-type': boolean 'visited': boolean 'checked': boolean 'focus-within': boolean 'focus-visible': boolean 'placeholder': boolean 'selection': boolean 'file': boolean 'required': boolean 'valid': boolean 'invalid': boolean 'read-only': boolean 'autofill': boolean 'user-valid': boolean 'user-invalid': boolean 'in-range': boolean 'out-of-range': boolean 'placeholder-shown': boolean 'open': boolean 'closed': boolean 'empty': boolean 'enabled': boolean 'only': boolean 'target': boolean 'indeterminate': boolean 'default': boolean 'optional': boolean 'inert': boolean 'only-of-type': boolean 'aria': boolean 'data': boolean 'has': boolean 'not': boolean 'supports': boolean 'print': boolean 'landscape': boolean 'portrait': boolean 'forced-colors': boolean 'pointer-none': boolean 'pointer-coarse': boolean 'pointer-fine': boolean 'any-pointer-none': boolean 'any-pointer-coarse': boolean 'any-pointer-fine': boolean 'inverted-colors': boolean 'noscript': boolean 'starting': boolean 'rtl': boolean 'ltr': boolean 'motion-safe': boolean 'motion-reduce': boolean 'contrast-more': boolean 'contrast-less': boolean } export declare interface ParsedClass { raw: string base: string variants: string[] utility: string value?: string important: boolean arbitrary: boolean modifierArbitrary?: boolean typeHint?: string } export declare interface CSSRule { selector: string properties: Record mediaQuery?: string childSelector?: string } export declare interface UtilityRuleResult { properties: Record childSelector?: string pseudoElement?: string defaults?: boolean } export declare interface Preflight { getCSS: () => string } export declare interface Preset { name: string theme?: Partial rules?: CustomRule[] shortcuts?: Record variants?: Partial preflights?: Preflight[] } export type CustomRule = [RegExp, (_match: RegExpMatchArray) => Record | undefined]; declare type DeepPartial = { [P in keyof T]?: T[P] extends object ? DeepPartial : T[P] } export type CssOptions = DeepPartial;