import { a as ClasspressoConfig, S as ScanResult, C as ClassOccurrence, e as FileLocation } from './index-BtYg-usR.js'; /** * Scanner - Extracts className patterns from build output */ /** * Check if pattern A's classes are a proper subset of pattern B's classes. * A is a proper subset of B if all classes in A are in B, and B has more classes. */ declare function isProperSubset(classesA: string[], classesB: string[]): boolean; /** * Detect patterns that appear in JS but are subsets of HTML patterns. * These are likely className props that get merged with component classes. */ declare function detectMergeablePatterns(occurrences: Map): Set; /** * Check if any class in a list contains a dynamic library prefix. * These are classes generated at runtime by libraries like lucide-react, heroicons, etc. */ declare function containsDynamicPrefix(classes: string[], dynamicPrefixes: string[]): boolean; /** * Check if a class occurrence is safe for SSR hydration. * A pattern is hydration-safe if it appears in BOTH: * - Server context (html or rsc) * - Client context (js) * * If a pattern only appears in one context, transforming it would cause * React hydration mismatches. */ declare function isHydrationSafe(occurrence: ClassOccurrence): boolean; /** * Returns true for classes whose CSS rule cannot be expressed as flat declarations * on a single-class selector — i.e., classes that require a media query wrapper, * an @container wrapper, or a combinator child selector to function correctly. * * Consolidating these into a plain `.cp-xxx { ... }` rule silently drops the * wrapping context, producing a visually broken build with no warning. * * Detected categories: * - Any variant prefix: md:, hover:, dark:, focus:, group-hover:, data-[x]:, etc. * - Container queries: @sm, @md, @[800px], etc. * - Combinator utilities: space-x-*, space-y-*, divide-x-*, divide-y-* */ declare function isNonFlattenableClass(className: string): boolean; /** * Check if a class should be excluded based on config */ declare function shouldExcludeClass(className: string, exclude: ClasspressoConfig['exclude']): boolean; /** * Normalize a class string for consistent comparison * - Splits into individual classes * - Removes excluded classes * - Sorts alphabetically * - Joins back together */ declare function normalizeClassString(classString: string, exclude: ClasspressoConfig['exclude'], excludeNonFlattenable?: boolean): { normalized: string; classes: string[]; excludedClasses: string[]; }; /** * Extract class strings from file content */ declare function extractClassStrings(content: string, filePath: string): Array<{ classString: string; location: FileLocation; }>; /** * Scan build directory for className patterns */ declare function scanBuildOutput(config: ClasspressoConfig): Promise; export { containsDynamicPrefix, detectMergeablePatterns, extractClassStrings, isHydrationSafe, isNonFlattenableClass, isProperSubset, normalizeClassString, scanBuildOutput, shouldExcludeClass };