import { default as React } from 'react'; /** * Critical CSS configuration */ export interface CriticalCSSConfig { /** Viewport height for critical path (default: 100vh) */ viewportHeight?: number; /** Enable automatic extraction */ autoExtract?: boolean; /** Cache extracted CSS */ cacheCSS?: boolean; /** Route patterns for route-specific CSS */ routePatterns?: Record; /** Enable debug logging */ debug?: boolean; } /** * CSS rule classification */ export type CSSRuleType = 'critical' | 'above-fold' | 'deferred' | 'unused'; /** * Analyzed CSS rule */ export interface AnalyzedCSSRule { /** CSS selector */ selector: string; /** CSS declarations */ declarations: string; /** Full rule text */ ruleText: string; /** Classification */ type: CSSRuleType; /** Specificity score */ specificity: number; /** Source stylesheet */ source?: string; } /** * Critical CSS result */ export interface CriticalCSSResult { /** Critical CSS for immediate inline */ critical: string; /** Above-fold CSS (important but can be slightly deferred) */ aboveFold: string; /** Deferred CSS (load async) */ deferred: string; /** Unused CSS (can be removed) */ unused: string; /** LCP element styles */ lcpStyles: string; /** Font preload hints */ fontPreloads: string[]; /** Extraction timestamp */ timestamp: number; } /** * Font resource */ export interface FontResource { /** Font family */ family: string; /** Font URL */ url: string; /** Font weight */ weight?: string; /** Font style */ style?: string; /** Unicode range */ unicodeRange?: string; /** Format */ format?: string; } /** * CSS containment options */ export interface ContainmentOptions { /** Layout containment */ layout?: boolean; /** Paint containment */ paint?: boolean; /** Size containment */ size?: boolean; /** Style containment */ style?: boolean; /** Content visibility */ contentVisibility?: 'auto' | 'hidden' | 'visible'; } /** * Extracts and categorizes critical CSS */ export declare class CriticalCSSExtractor { private static instance; private config; private analyzer; private cache; constructor(config?: CriticalCSSConfig); /** * Get singleton instance */ static getInstance(config?: CriticalCSSConfig): CriticalCSSExtractor; /** * Reset singleton (for testing) */ static reset(): void; /** * Extract critical CSS */ extract(routePath?: string): CriticalCSSResult; /** * Clear cache */ clearCache(): void; /** * Extract LCP element styles */ private extractLCPStyles; /** * Generate unique selector for element */ private generateSelector; /** * Extract font preload URLs */ private extractFontPreloads; /** * Minify CSS (simple minification) */ private minifyCSS; /** * Debug logging */ private log; } /** * Inject critical CSS inline */ export declare function injectCriticalCSS(css: string, id?: string): HTMLStyleElement; /** * Load CSS asynchronously */ export declare function loadCSSAsync(href: string, id?: string): Promise; /** * Preload font */ export declare function preloadFont(url: string, crossOrigin?: boolean): HTMLLinkElement; /** * Apply CSS containment to element */ export declare function applyContainment(element: HTMLElement, options: ContainmentOptions): void; /** * Hook for critical CSS extraction and injection */ export declare function useCriticalCSS(config?: CriticalCSSConfig): { result: CriticalCSSResult | null; extract: () => CriticalCSSResult; inject: () => void; isExtracted: boolean; }; /** * Hook for CSS containment */ export declare function useCSSContainment(options?: ContainmentOptions): React.RefObject; /** * Hook for deferred CSS loading */ export declare function useDeferredCSS(stylesheets: string[], options?: { loadOnIdle?: boolean; }): { loaded: boolean; load: () => Promise; }; /** * Get the global critical CSS extractor */ export declare function getCriticalCSSExtractor(config?: CriticalCSSConfig): CriticalCSSExtractor; /** * Reset the extractor (for testing) */ export declare function resetCriticalCSSExtractor(): void; /** * Extract and inject critical CSS in one call */ export declare function extractAndInjectCriticalCSS(config?: CriticalCSSConfig): CriticalCSSResult; declare const _default: { CriticalCSSExtractor: typeof CriticalCSSExtractor; getCriticalCSSExtractor: typeof getCriticalCSSExtractor; resetCriticalCSSExtractor: typeof resetCriticalCSSExtractor; extractAndInjectCriticalCSS: typeof extractAndInjectCriticalCSS; injectCriticalCSS: typeof injectCriticalCSS; loadCSSAsync: typeof loadCSSAsync; preloadFont: typeof preloadFont; applyContainment: typeof applyContainment; useCriticalCSS: typeof useCriticalCSS; useCSSContainment: typeof useCSSContainment; useDeferredCSS: typeof useDeferredCSS; }; export default _default;