import { Plugin } from "vite"; //#region src/types.d.ts type Pattern = string | RegExp; type MaybeArray = T | T[]; type AttrValidator = (value: string) => boolean; type AttrNormalizer = (value: string) => string; type AttrOptions = { /** * Имя атрибута/пропа для сканирования. * * Примеры: * - color="#fa5a5a" * - :color="'#fa5a5a'" * - track-color="rgb(255, 90, 90)" */ attr: string; /** * Проверяет нормализованное значение атрибута перед генерацией utility candidates. */ validator: AttrValidator; /** * Utility-префиксы, которые генерируются из значения атрибута. * * Пример: prefixes ['bg', 'text'] со значением '#fff' создаёт * bg-[#fff] и text-[#fff]. */ prefixes: string[]; /** * Опциональная нормализация значения перед проверкой и генерацией классов. * * По умолчанию пробелы удаляются, как в color-пропах @vueland/ui: * rgb(255, 90, 90) -> bg-[rgb(255,90,90)]. */ normalize?: AttrNormalizer; }; type AttrRule = { attr: string; validator: AttrValidator; prefixes: string[]; normalize: AttrNormalizer; }; type VariantKind = 'pseudo' | 'media' | 'selector' | 'attribute'; type VariantDefinition = { kind: VariantKind; value: string | number; }; type VariantMap = Record; type JitOptions = { /** * Файлы, которые нужно анализировать. * * По умолчанию: * - .vue * - .js * - .ts * - .jsx * - .tsx * - .html * - .svelte * - .astro */ include?: Pattern[]; /** * Файлы и директории, которые нужно исключить. */ exclude?: Pattern[]; /** * Писать сгенерированный CSS в файл (для дебага / инспекции). * * По умолчанию CSS отдаётся виртуальным модулем `virtual:utils-jit.css` * без записи на диск. Включи, если хочешь видеть результат файлом. * * По умолчанию: false. */ emitFile?: boolean; /** * Путь к дебаг-файлу относительно Vite root (используется при emitFile). * * По умолчанию: src/.generated/utils-jit.css */ outFile?: string; /** * Breakpoints в px. * Используются для JIT-генерации адаптивных классов и для SCSS-утилит @vueland/ui. */ breakpoints?: Record; /** * Пользовательские атрибуты/пропы, значения которых разворачиваются * в arbitrary utility candidates. * * Пример: * defineAttr({ attr: 'size', validator: isSizeValue, prefixes: ['w', 'h'] }) * size="40px" -> w-[40px] / h-[40px] */ attrs?: AttrRule[]; /** * Пользовательские utility rules. */ rules?: UtilityRule[]; /** * Пользовательские variants. */ variants?: VariantMap; /** * Баннер в начале генерируемого CSS файла. */ banner?: string; /** * Писать файл даже если utilities не найдены. * * По умолчанию: true. */ emitEmptyFile?: boolean; /** * Выводить диагностические сообщения. * * По умолчанию: false. */ debug?: boolean; }; type ResolvedJitOptions = Required>; type ParsedToken = { raw: string; variants: string[]; utility: string; }; type CssBody = { declarations: string[]; }; type RuleMatch = { declarations: string[]; }; type UtilityRule = { name: string; match: (utility: string) => RuleMatch | null; }; type DeclarationValue = string | number; type DeclarationMap = Record; type DeclarationResult = DeclarationMap | string[]; type RuleOptions = { /** * Название rule для отладки и читаемости. */ name: string; /** * Matcher utility-части без variants. * * Примеры: * - class: hover:bg-[#fff] → matcher получает bg-[#fff] * - class: grid-cols-3 → matcher получает grid-cols-3 * - class: flex-center → matcher получает flex-center */ matcher: RegExp; /** * Проверка value. * * Если matcher содержит capture group, value равен первой группе. * Если capture group нет, value равен utility. */ validate?: (value: string, match: RegExpMatchArray) => boolean; /** * Генерация CSS declarations. * * Если matcher содержит capture group, value равен первой группе. * Если capture group нет, value равен utility. * * Можно возвращать JS-style object: * { * backgroundColor: value, * zIndex: 10, * } * * Можно использовать CSS variables: * { * '--vl-color': value, * } * * Можно вернуть готовые строки: * [ * `background-color: ${value};` * ] */ declaration: (value: string, match: RegExpMatchArray) => DeclarationResult; /** * Добавлять ли !important к object-based declarations. * * По умолчанию: true. * * Важно: если declaration возвращает string[], строки считаются уже готовым CSS * и important автоматически не добавляется. */ important?: boolean; }; //#endregion //#region src/core.d.ts declare const DEFAULT_INCLUDE: Pattern[]; declare const DEFAULT_EXCLUDE: Pattern[]; declare const DEFAULT_BREAKPOINTS: Record; declare const DEFAULT_VARIANTS: VariantMap; declare function shouldProcess(id: string, include?: Pattern[], exclude?: Pattern[]): boolean; declare function escapeCssSelector(value: string): string; declare function normalizeValue(value: string): string; declare function isSafeCssValue(value: string): boolean; declare function stripComments(code: string): string; declare function extractClassCandidates(code: string): string[]; declare function defineAttr(options: AttrOptions): AttrRule; declare function tokenize(code: string, attrs?: AttrRule[]): Set; declare function parseToken(token: string): ParsedToken | null; declare function camelToKebab(value: string): string; declare function defineRule(options: RuleOptions): UtilityRule; declare const createArbitraryRule: typeof defineRule; declare function resolveRule(utility: string, rules: UtilityRule[]): CssBody | null; declare function buildCssRule(parsed: ParsedToken, cssBody: CssBody, breakpoints?: Record, variants?: VariantMap): string | null; //#endregion //#region src/css-output.d.ts declare const VIRTUAL_CSS_ID = "virtual:utils-jit.css"; declare const RESOLVED_VIRTUAL_CSS_ID = "\0virtual:utils-jit.css"; //#endregion //#region src/plugin.d.ts declare function utilsJIT(options?: JitOptions): Plugin; //#endregion //#region src/rules.d.ts declare const defaultRules: UtilityRule[]; //#endregion //#region src/validators.d.ts declare function isNumberValue(value: string): boolean; declare function isZeroValue(value: string): boolean; declare function isCssGlobalValue(value: string): boolean; declare function isFunctionalCssValue(value: string): boolean; declare function isLengthLikeValue(value: string): boolean; declare function isLengthListValue(value: string, maxItems?: number): boolean; declare function isSizeValue(value: string): boolean; declare function isPaddingValue(value: string): boolean; declare function isMarginValue(value: string): boolean; declare function isRadiusValue(value: string): boolean; declare function isPositionValue(value: string): boolean; declare function isZIndexValue(value: string): boolean; declare function isOpacityValue(value: string): boolean; declare function isColorValue(value: string): boolean; //#endregion export { AttrNormalizer, AttrOptions, AttrRule, AttrValidator, CssBody, DEFAULT_BREAKPOINTS, DEFAULT_EXCLUDE, DEFAULT_INCLUDE, DEFAULT_VARIANTS, DeclarationMap, DeclarationResult, DeclarationValue, JitOptions, MaybeArray, ParsedToken, Pattern, RESOLVED_VIRTUAL_CSS_ID, ResolvedJitOptions, RuleMatch, RuleOptions, UtilityRule, VIRTUAL_CSS_ID, VariantDefinition, VariantKind, VariantMap, buildCssRule, camelToKebab, createArbitraryRule, defaultRules, defineAttr, defineRule, escapeCssSelector, extractClassCandidates, isColorValue, isCssGlobalValue, isFunctionalCssValue, isLengthLikeValue, isLengthListValue, isMarginValue, isNumberValue, isOpacityValue, isPaddingValue, isPositionValue, isRadiusValue, isSafeCssValue, isSizeValue, isZIndexValue, isZeroValue, normalizeValue, parseToken, resolveRule, shouldProcess, stripComments, tokenize, utilsJIT }; //# sourceMappingURL=index.d.mts.map