@barocss/kit 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +103 -0
- package/dist/index.js +175 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/core/ast.ts","../src/core/registry.ts","../src/core/tokenizer.ts","../src/utils/cache.ts","../src/core/parser.ts","../src/core/astToCss.ts","../src/core/engine.ts","../src/core/incremental-parser.ts","../src/core/cssVars.ts","../src/css/preflight.ts","../src/core/context.ts","../src/core/utils.ts","../src/presets/interactivity.ts","../src/presets/transitions.ts","../src/presets/table.ts","../src/presets/filter.ts","../src/presets/backdrop-filter.ts","../src/presets/effects.ts","../src/presets/layout.ts","../src/presets/flexbox-grid.ts","../src/presets/spacing.ts","../src/presets/sizing.ts","../src/presets/typography.ts","../src/presets/background.ts","../src/presets/border.ts","../src/presets/transform.ts","../src/presets/svg.ts","../src/presets/accessibility.ts","../src/presets/variants/pseudo-classes.ts","../src/presets/variants/form-states.ts","../src/presets/variants/structural-selectors.ts","../src/presets/variants/media-features.ts","../src/presets/variants/attribute-selectors.ts","../src/presets/variants/basic-variants.ts","../src/presets/variants/utils.ts","../src/presets/variants/responsive.ts","../src/presets/variants/dark-mode.ts","../src/presets/variants/container-queries.ts","../src/presets/variants/has-variants.ts","../src/presets/variants/negation-variants.ts","../src/presets/variants/universal-selectors.ts","../src/presets/variants/arbitrary-variants.ts","../src/presets/variants/attribute-variants.ts","../src/presets/variants/nth-selectors.ts","../src/presets/variants/functional-selectors.ts","../src/presets/variants/at-rules.ts","../src/presets/variants/group-peer-extensions.ts"],"sourcesContent":["// AST node types for barocss\nexport type AstNode =\n | { type: \"wrap\"; items: AstNode[], source?: string }\n | { type: \"decl\"; prop: string; value: string | [string, string][], source?: string }\n | { type: \"at-rule\"; name: string; params: string; nodes: AstNode[], source?: string }\n | { type: \"style-rule\"; selector: string; nodes: AstNode[], source?: string }\n | { type: \"rule\"; selector: string; nodes: AstNode[], source?: string }\n | { type: \"at-root\"; nodes: AstNode[], source?: string }\n | { type: \"comment\"; text: string, source?: string }\n | { type: \"raw\"; value: string, source?: string };\n\nexport type HasNodes = { nodes?: AstNode[] };\nexport type HasSource = { source?: string };\nexport type HasSelector = { selector?: string };\nexport type HasName = { name?: string };\nexport type HasParams = { params?: string };\nexport type HasValue = { value?: string | [string, string][] };\nexport type HasProp = { prop?: string };\nexport type HasItems = { items?: AstNode[] };\nexport type HasText = { text?: string };\n\nexport function decl(\n prop: string,\n value: string | [string, string][],\n source?: string\n): AstNode {\n return { type: \"decl\", prop, value, source };\n}\nexport function atRoot(nodes: AstNode[], source?: string): AstNode {\n return {\n type: \"at-root\",\n nodes,\n source\n };\n}\n\nexport function atRule(\n name: string,\n params: string,\n nodes: AstNode[],\n source?: string\n): AstNode {\n return { type: \"at-rule\", name, params, nodes, source };\n}\nexport function styleRule(selector: string, nodes: AstNode[], source?: string): AstNode {\n return { type: \"style-rule\", selector, nodes, source };\n}\nexport function rule(selector: string, nodes: AstNode[], source?: string): AstNode {\n return { type: \"rule\", selector, nodes, source };\n}\nexport function comment(text: string, source?: string): AstNode {\n return { type: \"comment\", text, source };\n}\nexport function raw(value: string, source?: string): AstNode {\n return { type: \"raw\", value, source };\n}\n\nexport function property(name: string, initialValue?: string, syntax?: string, source?: string): AstNode {\n const nodes: AstNode[] = [\n decl(\"syntax\", `\"${syntax || \"*\"}\"`, source),\n decl(\"inherits\", \"false\", source),\n ];\n \n if (initialValue) {\n nodes.push(decl(\"initial-value\", initialValue, source));\n }\n \n return atRule(\"property\", name, nodes, source);\n}","import type { AstNode } from './ast';\nimport { decl, rule } from './ast';\nimport { Context } from './context';\nimport { ParsedModifier, ParsedUtility } from './parser';\n\n// Utility registration\nexport interface UtilityRegistration {\n /**\n * The name of the utility\n */\n name: string;\n /**\n * The match function for the utility\n * @param className The class name of the utility\n * @returns {boolean} Whether the utility matches the class name\n */\n match: (className: string) => boolean;\n /**\n * Handler for utility value\n * @param value Utility value (e.g. 'red-500')\n * @param ctx Context\n * @param token Parsed token\n * @param options Registration options\n */\n handler: (value: string, ctx: Context, token: ParsedUtility, options: UtilityRegistration) => AstNode[] | null | undefined;\n /**\n * The description of the utility\n * @example\n * ```\n * description: 'Custom utility description',\n * ```\n */\n description?: string;\n /**\n * The category of the utility\n * @example\n * ```\n * category: 'background',\n * ```\n */\n category?: string;\n /**\n * The priority of the utility\n * @example\n * ```\n * priority: 10,\n * ```\n */\n priority?: number;\n [key: string]: unknown;\n}\n\nconst utilityRegistry: UtilityRegistration[] = [];\nexport function registerUtility(util: UtilityRegistration) {\n utilityRegistry.push(util);\n}\n\nexport function getUtility(): UtilityRegistration[] {\n return utilityRegistry;\n}\n\n// --- Modifier Registration ---\nexport type ModifierRegistration = {\n match: (mod: string, context: Context) => boolean;\n modifySelector?: (params: { selector: string; fullClassName: string; mod: ParsedModifier; context: Context; variantChain?: ParsedModifier[]; index?: number }) => string | { selector: string; flatten?: boolean; wrappingType?: 'rule' | 'style-rule' | 'at-rule'; override?: boolean; source?: string };\n wrap?: (mod: ParsedModifier, context: Context) => AstNode[];\n astHandler?: (ast: AstNode[], mod: ParsedModifier, context: Context, variantChain?: ParsedModifier[], index?: number) => AstNode[];\n sort?: number;\n description?: string;\n source?: string;\n};\n\nexport const modifierRegistry: ModifierRegistration[] = [];\n\n/**\n * staticModifier: A helper that registers a modifier name and an array of CSS selectors directly to the registry\n * \n * @example\n * ```\n * staticModifier('disabled', ['&:disabled'], { source: 'pseudo' });\n * ```\n * \n * @param name The name of the modifier\n * @param selectors The selectors of the modifier\n * @param options The options of the modifier\n * \n * @returns {void}\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function staticModifier(name: string, selectors: string[], options: any = {}): void {\n modifierRegistry.push({\n match: (mod: string) => mod === name,\n modifySelector: ({ ..._rest }) => {\n return selectors.map(sel => ({\n selector: sel,\n source: options.source\n }));\n },\n ...options\n });\n}\n\nexport function functionalModifier(match: ModifierRegistration['match'], modifySelector: ModifierRegistration['modifySelector'], wrap?: ModifierRegistration['wrap'], options: Partial<ModifierRegistration> = {}) {\n modifierRegistry.push({ match, modifySelector, wrap, ...options });\n}\n\nexport function getModifier(): ModifierRegistration[] {\n return modifierRegistry;\n}\n\n// escapeClassName\nconst ESCAPE_REGEX = /[^A-Za-z0-9_-]/g;\nexport function escapeClassName(className: string) {\n return className.replace(ESCAPE_REGEX, (c) => {\n if (c === ' ') return '\\\\x20 ';\n if (c === '.') return '\\\\.';\n if (c === '/') return '\\\\/';\n if (c === ':') return '\\\\:';\n if (c === '[') return '\\\\[';\n if (c === ']') return '\\\\]';\n if (c === '(') return '\\\\(';\n if (c === ')') return '\\\\)';\n if (c === '%') return '\\\\%';\n if (c === '#') return '\\\\#';\n if (c === ',') return '\\\\,';\n if (c === '=') return '\\\\=';\n if (c === '&') return '\\\\&';\n if (c === '~') return '\\\\~';\n if (c === '*') return '\\\\*';\n if (c === '$') return '\\\\$';\n if (c === '^') return '\\\\^';\n if (c === '+') return '\\\\+';\n if (c === '?') return '\\\\?';\n if (c === '!') return '\\\\!';\n if (c === '@') return '\\\\@';\n if (c === \"'\") return \"\\\\'\";\n if (c === '\"') return '\\\\\"';\n if (c === '`') return '\\\\`';\n if (c === ';') return '\\\\;';\n if (c === '<') return '\\\\<';\n if (c === '>') return '\\\\>';\n if (c === '{') return '\\\\{';\n if (c === '}') return '\\\\}';\n if (c === '|') return '\\\\|';\n if (c === '\\\\') return '\\\\\\\\';\n return '\\\\' + c;\n });\n}\n\n// --- Utility Helper Factories ---\n\ntype StaticUtilityValue = \n | AstNode // ast\n | [string, string] // [prop, value]\n | [string, [string, string][]] // [selector, [prop, value][]]\n | ((value: string) => AstNode); // function\n\n\n/**\n * staticUtility: A helper that registers a utility name and an array of CSS declaration pairs directly to the registry\n *\n * @example\n * ```\n * staticUtility('block', [['display', 'block']]);\n * staticUtility('hidden', [['display', 'none']]);\n * staticUtility('space-x-px', [\n * [\n * '& > :not([hidden]) ~ :not([hidden])', // selector\n * [\n * ['margin-inline-start', '1px'], // [prop, value]\n * ['margin-inline-end', '1px'], // [prop, value]\n * ],\n * ],\n * ]);\n * ```\n * \n * @param name The name of the utility\n * @param decls The declarations of the utility\n * @param opts The options of the utility\n * \n * @returns {void}\n */\nexport function staticUtility(\n name: string,\n decls: StaticUtilityValue[],\n opts?: { description?: string; category?: string; priority?: number }\n): void {\n registerUtility({\n name,\n match: (className: string) => {\n return className === name;\n },\n handler: (value: string): AstNode[] | null | undefined => {\n return decls.flatMap((params) => {\n\n if ((params as AstNode).type) {\n return [params as AstNode];\n }\n\n if (typeof params === 'function') {\n const targetFunction = params as (value: string) => AstNode;\n return [targetFunction(value)];\n }\n const [a, b] = params as [string, string | [string, string][]];\n\n if (typeof b === 'string') {\n // [prop, value]\n return [decl(a, b)];\n } else if (Array.isArray(b)) {\n // selector, [prop, value][]\n return [rule(a, b.map(([prop, value]) => decl(prop, value)))];\n }\n return [];\n });\n },\n description: opts?.description,\n category: opts?.category,\n priority: opts?.priority,\n });\n}\n\nexport type FunctionalUtilityExtra = {\n opacity?: string;\n realThemeValue?: string;\n}\n\nexport type FunctionalUtilityOptions = {\n /**\n * The name of the utility\n * \n * prefix is automatically added to the name\n */\n name: string;\n /**\n * The CSS property to set\n * \n * css property is automatically added to the prop\n */\n prop?: string;\n /**\n * The theme key to look up values\n * \n * theme key is automatically added to the themeKey\n * \n * @example\n * ```\n * themeKey: 'colors'\n * ```\n */\n themeKey?: string;\n /**\n * The theme keys to look up values\n * \n * theme keys are automatically added to the themeKeys\n * \n * @example\n * ```\n * themeKeys: ['colors', 'spacing']\n * ```\n */\n themeKeys?: string[];\n /**\n * Whether to support arbitrary values\n * \n * `bg-[#ff0000]`\n * \n * @example\n * ```\n * supportsArbitrary: true\n * ```\n */\n supportsArbitrary?: boolean;\n /**\n * Whether to support fraction values\n * \n * `m-4`\n * \n * @example\n * ```\n * supportsFraction: true\n * ```\n */\n supportsFraction?: boolean;\n /**\n * Whether to support custom properties\n * \n * `bg-(--my-bg)`\n * \n * @example\n * ```\n * supportsCustomProperty: true\n * ```\n */\n supportsCustomProperty?: boolean;\n /**\n * Whether to support negative values\n * \n * `-m-4`\n * \n * @example\n * ```\n * supportsNegative: true\n * ```\n */\n supportsNegative?: boolean;\n /**\n * Whether to support opacity values\n */\n supportsOpacity?: boolean;\n /**\n * The handler function that processes values\n * \n * @example\n * ```\n * handle: (value, ctx, token, extra) => {\n * return [decl('background-color', value)];\n * }\n * ```\n * \n * @param value The value to process\n * @param ctx The context\n * @param token The parsed utility\n * @param extra The extra metadata\n * \n * @returns {AstNode[] | null | undefined} The AST nodes or null | undefined\n */\n handle?: (value: string, ctx: Context, token: ParsedUtility, extra?: FunctionalUtilityExtra) => AstNode[] | null | undefined;\n /**\n * The handler function that processes bare values\n * \n * @example\n * ```\n * handleBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * ```\n * \n * @param args The arguments\n * @param args.value The value to process\n * @param args.ctx The context\n * @param args.token The parsed utility\n * @param args.extra The extra metadata\n * \n * @returns {string | null | undefined} The processed value or null | undefined\n */\n handleBareValue?: (args: { value: string; ctx: Context; token: ParsedUtility, extra?: FunctionalUtilityExtra }) => string | null | undefined;\n /**\n * The handler function that processes negative bare values\n * \n * @example\n * ```\n * handleNegativeBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * ```\n */\n handleNegativeBareValue?: (args: { value: string; ctx: Context; token: ParsedUtility, extra?: FunctionalUtilityExtra }) => string | null | undefined;\n\n /**\n * The handler function that processes custom property values\n * \n * \n * @example\n * ```\n * handleCustomProperty: (value, ctx, token, extra) => [decl('background-color', value)],\n * ```\n * \n * @param args The arguments\n * @param args.value The value to process\n * @param args.ctx The context\n * @param args.token The parsed utility\n * @param args.extra The extra metadata\n * \n * @returns {AstNode[] | null | undefined} The AST nodes or null | undefined\n */\n handleCustomProperty?: (value: string, ctx: Context, token: ParsedUtility, extra?: FunctionalUtilityExtra) => AstNode[] | null | undefined;\n /**\n * The description of the utility\n * \n * @example\n * ```\n * description: 'Custom utility description',\n * ```\n */\n description?: string;\n /**\n * The category of the utility\n * \n * It is used to group utilities in the documentation and styles\n * \n * \n * @example\n * ```\n * category: 'background',\n * ```\n */\n category?: string;\n /**\n * The priority of the utility\n * \n * It is used to sort utilities in the styles\n * \n * @example\n * ```\n * priority: 10,\n * ```\n * \n * The higher the number, the higher the priority\n * \n * @default 0\n */\n priority?: number;\n}\n\n/**\n * functionalUtility: A helper that registers dynamic utilities (theme, arbitrary, custom, negative, fraction, etc.) directly\n *\n * Example:\n * functionalUtility({\n * name: 'z',\n * supportsNegative: true,\n * themeKeys: ['--z-index'],\n * handleBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * handle: (value) => [decl('z-index', value)],\n * description: 'z-index utility',\n * category: 'layout',\n * });\n */\nexport function functionalUtility(opts: FunctionalUtilityOptions) {\n registerUtility({\n name: opts.name,\n match: (className: string) => className.startsWith(opts.name + '-'),\n handler: (value, ctx, token, _options) => {\n let finalValue = value;\n const parsedUtility = token;\n const extra: FunctionalUtilityExtra = {\n opacity: token.opacity,\n };\n\n if (opts.supportsOpacity && !token.arbitrary && !token.customProperty && value.includes('/')) {\n const list = value.split('/');\n\n if (list.length >= 2) {\n extra.opacity = list.pop();\n finalValue = list.join('/');\n }\n }\n\n // 1. Arbitrary value - already parsed in parser.ts\n if (opts.supportsArbitrary && parsedUtility.arbitrary) {\n const processedValue = finalValue.replace(/_/g, ' ');\n // console.log('[functionalUtility] arbitrary', { processedValue });\n // 7. handle (custom AST generation)\n if (opts.handle) {\n const result = opts.handle(processedValue, ctx, token, extra);\n // console.log('[functionalUtility] arbitrary handle result', result);\n if (result) return result;\n }\n // 8. default decl\n if (opts.prop) {\n // console.log('[functionalUtility] arbitrary default decl', { prop: opts.prop, processedValue });\n return [decl(opts.prop, processedValue)];\n }\n return [];\n }\n // 2. Custom property - already parsed in parser.ts\n if (opts.supportsCustomProperty && parsedUtility.customProperty) {\n // console.log('[functionalUtility] customProperty', { finalValue });\n if (opts.handleCustomProperty) {\n const result = opts.handleCustomProperty(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] customProperty handleCustomProperty result', result);\n return result;\n }\n const customValue = `var(${finalValue})`;\n if (opts.handle) {\n const result = opts.handle(customValue, ctx, token, extra);\n // console.log('[functionalUtility] customProperty handle result', result);\n if (result) return result;\n }\n if (opts.prop) {\n // console.log('[functionalUtility] customProperty default decl', { prop: opts.prop, customValue });\n return [decl(opts.prop, customValue)];\n }\n return [];\n }\n // 3. Theme lookup (themeKey or themeKeys)\n let themeValue: string | undefined;\n if (opts.themeKey && ctx.theme) {\n themeValue = ctx.theme(opts.themeKey, finalValue) as string;\n // console.log('[functionalUtility] themeKey lookup', { themeKey: opts.themeKey, finalValue, themeValue });\n }\n if (!themeValue && opts.themeKeys && ctx.theme) {\n for (const key of opts.themeKeys) {\n themeValue = ctx.theme(key, finalValue) as string;\n // console.log('[functionalUtility] themeKeys lookup', { key, finalValue, themeValue });\n if (themeValue !== undefined) break;\n }\n }\n if (themeValue !== undefined) {\n extra.realThemeValue = finalValue;\n finalValue = themeValue;\n if (opts.prop) {\n // console.log('[functionalUtility] themeValue default decl', { prop: opts.prop, finalValue });\n return [decl(opts.prop, finalValue)];\n }\n if (opts.handle) {\n const result = opts.handle(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] themeValue handle result', result);\n if (result) return result;\n }\n return [];\n }\n // 4. Fraction value (e.g., 1/2, -2/5)\n // console.log('[functionalUtility] fraction', { value });\n if (opts.supportsFraction && /^-?\\d+\\/\\d+$/.test(value)) {\n finalValue = value;\n // console.log('[functionalUtility] fraction', { finalValue });\n }\n // 5. handleNegativeBareValue (only check negative bare value)\n if (parsedUtility.negative && opts.supportsNegative && opts.handleNegativeBareValue) {\n const bare = opts.handleNegativeBareValue({ value: String(finalValue).replace(/^-/, ''), ctx, token, extra });\n // console.log('[functionalUtility] negative bare', { bare });\n if (bare == null) return [];\n finalValue = bare;\n }\n // 6. handleBareValue (only check bare value) - only when negative is not true\n else if (opts.handleBareValue) {\n const bare = opts.handleBareValue({ value: finalValue, ctx, token, extra });\n // console.log('[functionalUtility] bare', { bare });\n if (bare == null) return [];\n finalValue = bare;\n }\n // 7. handle (custom AST generation)\n if (opts.handle) {\n // console.log('[functionalUtility] handle', { finalValue });\n const result = opts.handle(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] handle result', result);\n if (result) return result;\n }\n // 8. default decl\n if (opts.prop) {\n // console.log('[functionalUtility] default decl', { prop: opts.prop, finalValue });\n return [decl(opts.prop, finalValue)];\n }\n // console.log('[functionalUtility] fallback empty', { finalValue });\n return [];\n },\n description: opts.description,\n category: opts.category,\n priority: opts.priority,\n });\n}","export interface Token {\n value: string;\n start: number;\n end: number;\n}\n\n/**\n * Tokenizes a class name string into an array of tokens\n * Only handles separation by ':' while respecting brackets and parentheses\n * \n * Examples:\n * - 'hover:bg-red-500' → [{ value: 'hover' }, { value: 'bg-red-500' }]\n * - 'bg-[#ff0000]:hover' → [{ value: 'bg-[#ff0000]' }, { value: 'hover' }]\n * - 'text-[color:var(--foo)]' → [{ value: 'text-[color:var(--foo)]' }]\n * - '!bg-[red]' → [{ value: '!bg-[red]' }]\n */\nexport function tokenize(className: string): Token[] {\n const tokens: Token[] = [];\n let current = '';\n let start = 0;\n let inBracket = 0;\n let inParen = 0;\n \n for (let i = 0; i < className.length; i++) {\n const char = className[i];\n \n // Bracket tracking\n if (char === '[') inBracket++;\n if (char === ']') inBracket--;\n if (char === '(') inParen++;\n if (char === ')') inParen--;\n \n // Separator (only when not inside brackets or parentheses)\n if (char === ':' && inBracket === 0 && inParen === 0) {\n if (current) {\n tokens.push({\n value: current,\n start,\n end: i\n });\n }\n current = '';\n start = i + 1;\n } else {\n current += char;\n }\n }\n \n // Add remaining token\n if (current) {\n tokens.push({\n value: current,\n start,\n end: className.length\n });\n }\n \n return tokens;\n} ","import type { AstNode } from '../core/ast';\nimport { ParsedModifier, ParsedUtility } from '../core/parser';\n\n/**\n * AST cache management\n */\nexport class AstCache {\n private cache = new Map<string, AstNode[]>();\n private maxSize = 1000; // Prevent memory leaks\n \n set(key: string, ast: AstNode[]): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, ast);\n }\n \n get(key: string): AstNode[] | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global AST cache instance\nexport const astCache = new AstCache();\n\n/**\n * Parse result cache management\n */\nexport class ParseResultCache {\n private cache = new Map<string, { modifiers: ParsedModifier[]; utility: ParsedUtility | null }>();\n private maxSize = 2000; // Prevent memory leaks\n \n set(key: string, result: { modifiers: ParsedModifier[]; utility: ParsedUtility | null }): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, result);\n }\n \n get(key: string): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global parse result cache instance\nexport const parseResultCache = new ParseResultCache();\n\n/**\n * Utility cache management\n */\nexport class UtilityCache {\n private cache = new Map<string, boolean>();\n private maxSize = 1000; // Prevent memory leaks\n \n set(key: string, value: boolean): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, value);\n }\n \n get(key: string): boolean | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global utility cache instance\nexport const utilityCache = new UtilityCache();\n\n/**\n * Clear all caches (for context changes or testing)\n */\nexport function clearAllCaches(): void {\n astCache.clear();\n parseResultCache.clear();\n utilityCache.clear();\n // eslint-disable-next-line no-console\n console.log('[clearAllCaches] All caches cleared');\n}\n\n/**\n * WeakMap-based cache for memory optimization\n */\nexport class WeakCache<T> {\n private cache = new WeakMap<object, T>();\n private keyMap = new Map<string, object>();\n private maxSize = 1000;\n\n set(key: string, value: T): void {\n if (this.keyMap.size >= this.maxSize) {\n // Remove oldest entry\n const firstKey = this.keyMap.keys().next().value;\n if (firstKey) {\n const obj = this.keyMap.get(firstKey);\n if (obj) {\n this.cache.delete(obj);\n }\n this.keyMap.delete(firstKey);\n }\n }\n\n const obj = { key };\n this.cache.set(obj, value);\n this.keyMap.set(key, obj);\n }\n\n get(key: string): T | undefined {\n const obj = this.keyMap.get(key);\n if (obj) {\n return this.cache.get(obj);\n }\n return undefined;\n }\n\n has(key: string): boolean {\n return this.keyMap.has(key);\n }\n\n clear(): void {\n this.keyMap.clear();\n }\n\n getStats() {\n return {\n size: this.keyMap.size,\n maxSize: this.maxSize,\n hitRate: this.keyMap.size / this.maxSize\n };\n }\n}","// Types for parsed modifier and utility\nexport interface ParsedModifier {\n type: string;\n value?: string;\n negative?: boolean;\n arbitrary?: boolean;\n [key: string]: unknown;\n}\n\nexport interface ParsedUtility {\n category?: string;\n prefix: string;\n value?: string;\n arbitrary?: boolean;\n customProperty?: boolean;\n negative?: boolean;\n opacity?: string;\n priority?: number;\n important?: boolean;\n [key: string]: unknown;\n}\n\nimport { getUtility, getModifier, UtilityRegistration } from './registry';\nimport { tokenize, Token } from './tokenizer';\nimport { parseResultCache, utilityCache } from '../utils/cache';\n\n// Cache systems\n\n/**\n * Checks if a string is a utility prefix by checking against registered utilities\n * Optimized with prefix filtering and caching\n * @param str The string to check\n * @returns true if it's a utility prefix\n */\nfunction isUtilityPrefix(str: string): boolean {\n // Check cache\n if (utilityCache.has(str)) {\n return utilityCache.get(str)!;\n }\n \n const utilities = getUtility();\n const modifiers = getModifier();\n \n // 1. Fast prefix filtering (O(1) prefix check)\n const candidateUtilities = utilities.filter(util => {\n const prefix = util.name;\n return str.startsWith(prefix + '-') || str === prefix || str.startsWith(prefix);\n });\n \n // 2. Exact match check only on filtered candidates\n const isUtility = candidateUtilities.some(util => util.match(str));\n \n // 3. Filter modifiers similarly\n const candidateModifiers = modifiers.filter(mod => {\n // Use modifier name if available, otherwise extract from match function\n const modName = (mod as unknown as { name: string }).name || mod.match.toString().split('(')[0];\n return str.startsWith(modName + ':') || str === modName;\n });\n \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isModifier = candidateModifiers.some(mod => mod.match(str, {} as any));\n \n // 4. Calculate result\n const result = isUtility && !isModifier;\n \n // 5. Cache result\n utilityCache.set(str, result);\n \n return result;\n}\n\n/**\n * Parses a class name string into modifiers and utility using tokenization\n * Supports both directions:\n * - modifier:utility (traditional CSS)\n * - utility:modifier (Master CSS style)\n * \n * Examples:\n * - 'group-hover:sm:bg-[red]' → modifier:utility\n * - 'bg-red-500:hover' → utility:modifier\n * - 'text-[color:var(--foo)]' → utility only\n * \n * @param className e.g. 'group-hover:sm:bg-[red]', 'text-[color:var(--foo)]'\n * @returns { modifiers, utility }\n */\nexport function parseClassName(className: string): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } {\n // Check parse result cache first\n if (parseResultCache.has(className)) {\n return parseResultCache.get(className)!;\n }\n\n // Examples: !bg-[red]\n let important = false;\n let realClassName = className;\n if (className.startsWith('!')) {\n important = true;\n realClassName = className.slice(1);\n }\n \n // 1. Tokenize string into tokens\n const tokens = tokenize(realClassName);\n // 2. Convert tokens to parsed result\n const result = parseTokens(tokens);\n if (result.utility) {\n result.utility.important = important;\n }\n \n // Cache the result\n parseResultCache.set(className, result);\n \n return result;\n}\n\n/**\n * Parses tokens into modifiers and utility\n */\nfunction parseTokens(tokens: Token[]): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } {\n const modifiers: ParsedModifier[] = [];\n let utility: ParsedUtility | null = null;\n \n // Handle empty token array\n if (tokens.length === 0) {\n return { modifiers, utility: null };\n }\n \n // Determine token types and parse in both directions\n if (tokens.length === 1) {\n // utility only\n utility = parseUtility(tokens[0].value);\n } else if (tokens.length === 2) {\n const firstToken = tokens[0];\n const secondToken = tokens[1];\n const isFirstUtility = isUtilityPrefix(firstToken.value);\n \n if (isFirstUtility) {\n // utility:modifier form\n utility = parseUtility(firstToken.value);\n const parsed = parseModifier(secondToken.value);\n if (parsed) modifiers.push(parsed);\n } else {\n // modifier:utility form\n const parsed = parseModifier(firstToken.value);\n if (parsed) modifiers.push(parsed);\n utility = parseUtility(secondToken.value);\n }\n } else {\n // Multiple tokens\n // Check if the first token is a utility\n const isFirstUtility = isUtilityPrefix(tokens[0].value);\n \n if (isFirstUtility) {\n // utility:modifier:modifier form\n utility = parseUtility(tokens[0].value);\n for (let i = 1; i < tokens.length; i++) {\n const parsed = parseModifier(tokens[i].value);\n if (parsed) modifiers.push(parsed);\n }\n } else {\n // modifier:modifier:utility form\n for (let i = 0; i < tokens.length - 1; i++) {\n const parsed = parseModifier(tokens[i].value);\n if (parsed) modifiers.push(parsed);\n }\n utility = parseUtility(tokens[tokens.length - 1].value);\n }\n }\n return { modifiers, utility };\n}\n\n/**\n * Parse modifier token\n */\nfunction parseModifier(value: string): ParsedModifier | null {\n let negative = false;\n let modStr = value;\n \n if (modStr.startsWith('-')) {\n negative = true;\n modStr = modStr.slice(1);\n }\n \n // Arbitrary variant support\n if (modStr.startsWith('[') && modStr.endsWith(']')) {\n return { type: modStr, negative, arbitrary: true };\n }\n \n return { type: modStr, negative };\n}\n\nfunction nameSort(a: UtilityRegistration, b: UtilityRegistration): number {\n return b.name.length - a.name.length;\n}\n\n/**\n * Parse utility token\n */\nfunction parseUtility(value: string): ParsedUtility {\n // Examples: bg-[red], text-[color:var(--foo)], bg-(--my-bg), -m-4, -bg-[red]\n let prefix = '';\n let utilityValue = '';\n let arbitrary = false;\n let customProperty = false;\n let negative = false;\n let opacity = '';\n let category = '';\n let priority = 0;\n \n if (value.startsWith('-')) {\n negative = true;\n }\n \n // Handle arbitrary values\n if (value.includes('-[')) {\n [prefix, utilityValue] = value.split('-[');\n // Closing bracket position\n const closeIdx = utilityValue.lastIndexOf(']');\n if (closeIdx !== -1 && closeIdx < utilityValue.length - 1 && utilityValue[closeIdx + 1] === '/') {\n // If '/' follows the closing bracket, split opacity\n opacity = utilityValue.slice(closeIdx + 2); // after '/'\n utilityValue = utilityValue.slice(0, closeIdx); // keep inside brackets only\n } else {\n // If ends with ']', no opacity\n utilityValue = utilityValue.replace(/]$/, '');\n }\n arbitrary = true;\n } \n // Handle custom properties\n else if (value.includes('-(')) {\n [prefix, utilityValue] = value.split('-(');\n utilityValue = utilityValue.replace(/\\)$/, '');\n customProperty = true;\n } \n // Handle regular utilities\n else {\n const utilities = getUtility();\n const sortedUtilities = utilities.sort(nameSort);\n \n let matchedUtility = sortedUtilities.find(p => value === p.name);\n if (matchedUtility) {\n prefix = matchedUtility.name;\n utilityValue = \"\";\n negative = value.startsWith('-');\n category = matchedUtility.category!;\n priority = matchedUtility.priority!;\n } else {\n if (value.startsWith('-')) {\n negative = true;\n value = value.slice(1);\n }\n \n matchedUtility = sortedUtilities.find(p => value.startsWith(p.name + '-'));\n if (matchedUtility) {\n prefix = matchedUtility.name;\n utilityValue = value.slice(matchedUtility.name.length + 1);\n category = matchedUtility.category!;\n priority = matchedUtility.priority!;\n } else {\n const parts = value.split('-');\n prefix = parts[0];\n utilityValue = parts.slice(1).join('-');\n }\n }\n }\n \n return {\n prefix,\n value: utilityValue,\n arbitrary: !!arbitrary,\n customProperty: !!customProperty,\n negative: !!negative,\n opacity,\n category,\n priority,\n };\n}","import { type AstNode } from \"./ast\";\nimport { escapeClassName } from \"./registry\";\n\nconst importantPrefix = \"!important\";\n\n/**\n * Converts AST nodes to CSS string\n * @param ast { AstNode[] } - Array of AST nodes to convert\n * @param baseSelector { string } - Base selector for nested rules (e.g., \".parent\" for \".parent .child\")\n * @param opts { minify?: boolean } - Options for CSS generation\n * @param _indent { string } - Current indentation level for pretty formatting\n */\nfunction astToCss(\n ast: AstNode[],\n baseSelector?: string,\n opts?: { minify?: boolean, important?: boolean },\n _indent = \"\"\n): string {\n const minify = opts?.minify;\n const indent = _indent;\n const nextIndent = _indent + \" \"; // Next-level indentation: current + 2 spaces\n const important = opts?.important ?? false;\n const importantString = important ? ` ${importantPrefix}` : \"\";\n // Note: Caching is handled at a higher level (IncrementalParser); omit here\n\n // Debug logging for empty AST\n if (!ast || ast.length === 0) {\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Empty AST received:', { ast, baseSelector, minify });\n return '';\n }\n\n // Deduplication logic: remove duplicates only among CSS property declarations (decl)\n // \n // How it works:\n // 1. Iterate in reverse (the last defined property wins)\n // 2. Only check duplicates for decl nodes (skip rule/at-rule)\n // 3. Consider duplicates by property name (prop)\n // \n // Current limitations:\n // - Does not dedupe rule or at-rule nodes\n // - When background.ts returns @supports + decl together, dedupe may not apply\n // - This can yield duplicate CSS rules in output\n const dedupedAst = [];\n if (Array.isArray(ast)) {\n const seenProps = new Map(); // Tracks property names already seen\n \n // Reverse iteration: keep the last defined property\n // Example: [color: red, color: blue] → keep only [color: blue]\n for (let i = ast.length - 1; i >= 0; i--) {\n const node = ast[i];\n \n if (node.type === \"decl\") {\n // Handle CSS property declaration nodes\n // node.important is not present; handle safely\n const key = node.prop; // Property name (e.g., \"color\", \"background-color\")\n \n // Skip duplicate properties\n if (seenProps.has(key)) {\n continue;\n }\n \n // Record new property\n seenProps.set(key, true);\n }\n \n // Add node to result (use unshift to preserve original order)\n dedupedAst.unshift(node);\n }\n }\n\n // Generate CSS string from deduped AST\n const result = dedupedAst\n .map((node) => {\n switch (node.type) {\n case \"decl\": {\n // Handle CSS property declaration (e.g., color: red;)\n const value = node.value;\n // node.important is absent; ignore\n if (node.prop.startsWith(\"--\")) {\n // Handle CSS custom property (e.g., --primary-color: #007bff;)\n if (minify) {\n const css = `${node.prop}: ${value}${importantString};`;\n // console.log(\"[astToCss] decl custom property minify\", css);\n return css;\n } else {\n const css = `${indent}${node.prop}: ${value}${importantString};`;\n // console.log(\"[astToCss] decl custom property pretty\", css);\n return css;\n }\n } else {\n const localIndent = minify ? \"\" : indent;\n const css = `${localIndent}${node.prop}: ${value}${importantString};`;\n return css;\n }\n }\n case \"rule\": {\n // Handle nested rule (e.g., .parent .child { ... })\n // \n // baseSelector handling logic:\n // 1. If baseSelector exists: combine to form \".parent .child\"\n // 2. If no baseSelector: keep as standalone \".child\"\n // 3. Replace '&' with baseSelector\n // 4. Pseudo selectors (e.g., :hover) append after baseSelector\n let selector = node.selector;\n \n if (baseSelector) {\n // When baseSelector exists: create nested rule\n const escBase = \".\" + escapeClassName(baseSelector); // Convert baseSelector to class form\n \n if (selector && selector.includes(\"&\")) {\n // Replace '&' with baseSelector\n // Example: \"&:hover\" → \".parent:hover\"\n selector = selector.replace(/&/g, escBase);\n } else if (!selector.startsWith(escBase)) {\n // If it does not start with baseSelector: prepend it\n selector = selector\n .split(\",\") // Handle multiple selectors separated by comma\n .map((sel) => {\n sel = sel.trim();\n \n if (sel.startsWith(\":\") || sel.startsWith(\"::\")) {\n // Pseudo selector: append directly after baseSelector\n // Example: \":hover\" → \".parent:hover\"\n return escBase + sel;\n } else {\n // Normal selector: separate with space from baseSelector\n // Example: \".child\" → \".parent .child\"\n return escBase + (sel.startsWith(\".\") ? \"\" : \" \") + sel;\n }\n })\n .join(\", \");\n }\n }\n \n // Create CSS rule\n if (minify) {\n const css = `${indent}${selector}{${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] rule minify\", css);\n return css;\n } else {\n const css = `${indent}${selector} {\\n${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] rule pretty\", css);\n return css;\n }\n }\n case \"style-rule\": {\n // Handle style-rule: top-level rule with complete selector\n // \n // baseSelector handling:\n // - Currently: pass baseSelector as-is\n // - Caveat: nested rules may not handle baseSelector correctly\n // - Example: .bg-white/60 { .nested { ... } } → .bg-white/60 .nested { ... }\n if (minify) {\n const css = `${indent}${node.selector} {${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] style-rule minify\", css);\n return css;\n } else {\n const css = `${indent}${node.selector} {\\n${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] style-rule pretty\", css, JSON.stringify(node, null, 2));\n return css;\n }\n }\n case \"at-rule\": {\n // Handle at-rule: @media, @supports, etc.\n // \n // baseSelector handling:\n // - Pass baseSelector to inner nodes of the at-rule\n // - Ensure nested rules get correct selectors\n // - Example: @media (min-width: 768px) { .parent .child { ... } }\n if (minify) {\n const css = `${indent}@${node.name} ${node.params}{${astToCss(\n node.nodes, // Recursively process inner nodes of the at-rule\n baseSelector, // Always propagate baseSelector so '&' resolves inside at-rules\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] at-rule minify\", css);\n return css;\n } else {\n const css = `${indent}@${node.name} ${node.params} {\\n${astToCss(\n node.nodes, // Recursively process inner nodes of the at-rule\n baseSelector, // Always propagate baseSelector so '&' resolves inside at-rules\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] at-rule pretty\", css);\n return css;\n }\n }\n case \"comment\":\n // Handle CSS comments (removed in minify mode)\n return minify ? \"\" : `${indent}/* ${node.text} */`;\n case \"raw\":\n // Handle raw CSS code (output as-is)\n return `${indent}${node.value}`;\n default:\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Unknown node type:', node);\n return \"\";\n }\n })\n .filter(Boolean) // Remove empty strings\n .join(minify ? \"\" : \"\\n\"); // Join nodes (minify: no whitespace, pretty: newlines)\n\n // Add trailing newline for consistency with expected format\n const finalResult = result + (minify ? \"\" : \"\\n\");\n \n // Debug logging for empty result\n if (!finalResult || finalResult.trim() === '') {\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Empty result generated:', { \n ast, \n baseSelector, \n minify, \n result, \n finalResult,\n dedupedAst \n });\n }\n \n return finalResult;\n}\n\nfunction rootToCss(nodes: AstNode[]): string {\n // console.log(\"[rootToCss] input\", { nodes });\n const result = nodes\n .map((node) => {\n const list: string[] = [];\n\n if (node.type === \"decl\") {\n list.push(`${node.prop}: ${node.value};`);\n } else if (node.type === \"at-rule\") {\n // console.log(\"[rootToCss] at-rule\", node);\n list.push(`@${node.name} ${node.params} {\n${node.nodes.map((node) => {\n // console.log(\"[rootToCss] node\", node);\n if (node.type === \"decl\") {\n return `\\t${node.prop}: ${node.value};`;\n }\n})\n.join(\"\\n\")}\n}`\n );\n }\n\n return list.join(\"\\n\");\n })\n .join(\"\\n\");\n\n // console.log(\"[rootToCss] result\", { nodes, result });\n return result;\n}\n\nexport { astToCss, rootToCss };\n","import { HasItems, HasName, HasParams, HasSelector, type AstNode, type HasNodes } from \"./ast\";\nimport { parseClassName } from \"./parser\";\nimport { astCache, parseResultCache } from \"../utils/cache\";\nimport { getUtility, getModifier } from \"./registry\";\nimport { Context } from \"./context\";\nimport { astToCss, rootToCss } from \"./astToCss\";\nimport { clearAllCaches } from \"../utils/cache\";\n\n// Failure cache for invalid class names\nconst failureCache = new Map<string, boolean>();\n\n/**\n * decl-to-root path collection function (reused in normalizeAstOrder, etc.)\n */\nexport type PathNode = Partial<AstNode>;\nexport type DeclPath = PathNode[];\n\n/**\n * collectDeclPaths\n * Collects all paths from AST tree to decl(leaf) (including variant chains).\n * - Input: AST node array\n * - Output: decl-to-root path(variant chain) array\n * - Usage: Used for path extraction for AST optimization/merging in optimizeAst, declPathToAst, etc.\n *\n * @param nodes AstNode[] - AST tree\n * @param path PathNode[] - Recursive use (initial value omitted)\n * @returns DeclPath[] - Array of paths to decl (variant chains)\n */\nexport function collectDeclPaths(\n nodes: AstNode[] = [],\n path: PathNode[] = []\n): DeclPath[] {\n let result: DeclPath[] = [];\n for (const node of nodes) {\n const curr = { ...node} as HasNodes;\n delete curr.nodes;\n\n const nodes = (node as HasNodes).nodes;\n if (node.type === \"decl\") {\n result.push([...path, curr]);\n } else if (nodes && nodes.length > 0) {\n result = result.concat(\n collectDeclPaths(nodes, [...path, curr])\n );\n }\n }\n return result;\n}\n\n// Sort criteria: at-rule > style-rule > rule > decl, depth first, sibling order preserved\nfunction getPriority(type: string): number {\n if (type === \"at-root\") return -1;\n if (type === \"at-rule\") return 0;\n if (type === \"style-rule\") return 10;\n if (type === \"rule\") return 20;\n return 30; // decl\n}\n\nconst sourcePriority: Record<string, number> = {\n media: 0, // @media\n supports: 1, // @supports\n container: 2, // @container\n responsive: 10, // sm:, md: etc.\n group: 20, // .group:hover &\n peer: 30, // .peer:focus ~ &\n dark: 40, // dark:\n universal: 50, // :is(), :where()\n data: 60, // [data-state=...]\n aria: 70, // [aria-pressed=...]\n attribute: 80, // [type=...]\n pseudo: 90, // :hover, :focus\n base: 100, // &\n starting: 110, // (root)\n};\n\nfunction getRulePriority(rule: Partial<AstNode>): number {\n return sourcePriority[rule.source || \"base\"] || 100;\n}\n\nconst mergeSelectorsBySource = (source: string, nodes: Partial<AstNode>[]) => {\n if (source === \"pseudo\") {\n // Inside → outside (reduce)\n return nodes.reduce((acc, sel) => {\n const selector = (sel as HasSelector).selector as string;\n if (acc === \"\") return selector;\n if (selector?.includes(\"&\")) return selector.replace(/&/, acc);\n return selector + \" \" + acc;\n }, \"\");\n } else {\n // Outside → inside (reduceRight)\n return nodes.reduceRight((acc, sel) => {\n const selector = (sel as HasSelector).selector as string;\n if (acc === \"\") return selector;\n if (selector?.includes(\"&\")) return selector.replace(/&/, acc);\n return selector + \" \" + acc;\n }, \"\");\n }\n};\n\n/**\n * declPathToAst\n * Converts decl-to-root path(variant chain) to actual nested AST.\n * - Input: DeclPath(variant chain)\n * - Output: Nested AstNode[]\n * - Consecutive same variants (same key) are merged, nested in outside→inside order\n *\n * @param declPath DeclPath\n * @returns AstNode[]\n */\nexport function declPathToAst(declPath: DeclPath): AstNode[] {\n if (!declPath || declPath.length === 0) return [];\n // Log type/selector/source for each node in declPath\n // 1. Separate decl (leaf) and variant chain\n const variants = declPath.slice(0, -1);\n const decl = declPath[declPath.length - 1];\n\n // 2. Keep existing sort/merge (hoist) logic\n const sortedVariants = [...variants].sort(\n (a, b) => getPriority(a.type!) - getPriority(b.type!)\n );\n\n // Add default rule handling for decl\n // 1. If first element is decl, add rule('&', [decl])\n // 2. If rule lacks '&' while child is decl, add current rule and rule('&', [decl])\n if (sortedVariants.length === 0) {\n if (decl.type === \"decl\") {\n // If first element is decl, add rule('&', [decl])\n sortedVariants.push({\n type: \"rule\",\n selector: \"&\",\n source: \"base\",\n });\n }\n } else {\n const last = sortedVariants[sortedVariants.length - 1];\n if (\n (last.type == \"at-rule\" && last.name !== \"property\") ||\n last.type == \"style-rule\" ||\n (last.type === \"rule\" && last.selector?.includes(\"&\") === false)\n ) {\n // console.log(\"[declPathToAst] add rule\", last);\n sortedVariants.push({\n type: \"rule\",\n selector: \"&\",\n source: \"base\",\n });\n }\n }\n\n const mergedVariants: typeof sortedVariants = [];\n for (const v of sortedVariants) {\n if (mergedVariants.length === 0) {\n mergedVariants.push(v);\n } else {\n const prev = mergedVariants[mergedVariants.length - 1];\n const isSame =\n v.type === prev.type &&\n ((v.type === \"at-rule\" &&\n prev.type === \"at-rule\" &&\n v.name === prev.name &&\n v.params === prev.params) ||\n ((v.type === \"rule\" || v.type === \"style-rule\") &&\n v.selector === (prev as HasSelector).selector));\n if (!isSame) {\n mergedVariants.push(v);\n }\n // else: skip(merge)\n }\n }\n // 3. Gather only rule nodes (consecutive rules only)\n const ruleSelectors: Partial<AstNode>[] = [];\n const nonRuleVariants: Partial<AstNode>[] = [];\n for (const v of mergedVariants) {\n if (v.type === \"rule\") ruleSelectors.push(v);\n else nonRuleVariants.push(v);\n }\n\n // 5. Compose selector and create a single rule\n let node: Partial<AstNode> = { ...decl };\n const sortedRuleSelectors = [...ruleSelectors].sort(\n (a, b) => getRulePriority(a) - getRulePriority(b)\n );\n if (sortedRuleSelectors.length > 0) {\n const grouped = sortedRuleSelectors.reduce((acc, rule) => {\n const key = rule.source || \"base\";\n if (!acc[key]) acc[key] = [];\n acc[key].push(rule);\n return acc;\n }, {} as Record<string, Partial<AstNode>[]>);\n // Detailed grouped log\n\n // 1. Sort by sourcePriority\n const mergedBySource = Object.entries(grouped)\n .sort(\n ([a], [b]) => (sourcePriority[a] ?? 999) - (sourcePriority[b] ?? 999)\n )\n .map(([source, nodes]) => {\n const merged = mergeSelectorsBySource(source, nodes);\n return merged;\n });\n\n // 2. Reduce from outside→inside (pseudo is always innermost)\n let acc = \"\";\n for (let i = 0; i < mergedBySource.length; i++) {\n const sel = mergedBySource[i];\n if (acc === \"\") acc = sel;\n else if (sel.includes(\"&\")) acc = sel.replace(/&/, acc);\n else acc = sel + \" \" + acc;\n }\n const finalSelector = acc;\n node = { type: \"rule\", selector: finalSelector, nodes: [node as AstNode] };\n }\n\n // 6. Nest remaining variants (e.g., at-rule) outside\n for (let i = nonRuleVariants.length - 1; i >= 0; i--) {\n node = { ...nonRuleVariants[i], nodes: [node as AstNode] };\n }\n\n return [node as AstNode];\n}\n\n/**\n * extractAtRootNodes\n * Extracts at-root nodes from AST tree and returns them as an array.\n * - Input: AstNode[]\n * - Output: AstNode[]\n * - Usage: Used in parseClassToAst for at-root node extraction\n *\n * @param nodes AstNode[]\n * @param parent AstNode\n * @param atRootNodes AstNode[]\n */\nfunction extractAtRootNodes(\n nodes: AstNode[],\n parent?: AstNode,\n atRootNodes: AstNode[] = []\n) {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (node.type === \"at-root\") {\n atRootNodes.push(node);\n delete nodes[i];\n } else if (node.type === \"rule\" || node.type === \"style-rule\") {\n extractAtRootNodes(node.nodes, node, atRootNodes);\n }\n }\n\n if (parent) {\n (parent as HasNodes).nodes = nodes.filter(Boolean) as AstNode[];\n }\n}\n\n/**\n * parseClassToAst\n * Parses className(including variant chain) to generate AST tree.\n * - Input: className(string), Context\n * - Output: AstNode[] (multiple roots possible for variant wrapping path)\n * - Perfectly supports variant wrapping structure (Cartesian product, nesting, siblings, etc.)\n * - Accumulates wrappers in wrappers and applies them from right to left.\n * - Can return multiple root asts.\n *\n * @param fullClassName string (e.g., 'sm:dark:hover:bg-red-500')\n * @param ctx Context\n * @returns AstNode[]\n *\n * @example\n * const ast = parseClassToAst('sm:dark:hover:bg-red-500', ctx);\n * // ast is an AST tree with sm, dark, hover variants nested\n */\nexport function parseClassToAst(\n fullClassName: string,\n ctx: Context\n): AstNode[] {\n // Check failure cache first\n if (failureCache.has(fullClassName)) {\n return [];\n }\n\n // Check AST cache first\n // Simpler cache key: className + context hash\n const contextHash = JSON.stringify({\n darkMode: ctx.config(\"darkMode\"),\n darkModeSelector: ctx.config(\"darkModeSelector\"),\n theme: ctx.theme,\n });\n const cacheKey = `${fullClassName}:${contextHash}`;\n if (astCache.has(cacheKey)) {\n return astCache.get(cacheKey)!;\n }\n\n const { modifiers, utility } = parseClassName(fullClassName);\n\n // console.log('[parseClassToAst] modifiers', modifiers, utility);\n\n if (!utility) {\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Invalid class name format: \"${fullClassName}\"`);\n failureCache.set(fullClassName, true);\n return [];\n }\n\n const utilReg = getUtility().find((u) => {\n const fullClassName = utility.value\n ? `${utility.prefix}-${utility.value}`\n : utility.prefix;\n return u.match(fullClassName);\n });\n // console.log('[parseClassToAst] utilReg', utilReg);\n if (!utilReg) {\n const utilityName = utility.value\n ? `${utility.prefix}-${utility.value}`\n : utility.prefix;\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Unknown utility class: \"${utilityName}\" in \"${fullClassName}\"`);\n failureCache.set(fullClassName, true);\n return [];\n }\n\n let value = utility.value;\n if (utility.negative && value) value = \"-\" + value;\n // console.log('[parseClassToAst] value', value, utility);\n let ast = utilReg.handler(value!, ctx, utility, utilReg) || [];\n\n // console.log('[parseClassToAst] ast', ast);\n\n const wrappers = [];\n const selector = \"&\";\n\n for (let i = 0; i < modifiers.length; i++) {\n const variant = modifiers[i];\n\n const plugin = getModifier().find((p) => p.match(variant.type, ctx));\n\n if (!plugin) {\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Unknown variant: \"${variant.type}\" in \"${fullClassName}\"`);\n continue;\n }\n\n if (plugin.wrap) {\n const items = plugin.wrap(variant, ctx);\n wrappers.push({\n type: \"wrap\",\n items: items,\n });\n continue;\n }\n if (plugin.modifySelector) {\n const result = plugin.modifySelector({\n selector,\n fullClassName,\n mod: variant,\n context: ctx,\n variantChain: modifiers,\n index: i,\n });\n if (typeof result === \"string\" && result.includes(\"&\")) {\n wrappers.push({ type: \"rule\", selector: result });\n } else if (typeof result === \"object\" && result.selector) {\n const wrappingType = result.wrappingType || \"rule\";\n wrappers.push({\n type: wrappingType,\n selector: result.selector,\n flatten: result.flatten,\n source: result.source,\n });\n } else if (Array.isArray(result)) {\n wrappers.push({\n type: \"wrap\",\n items: result.map((r) => ({\n type: r.wrappingType || \"rule\",\n selector: r.selector,\n source: r.source,\n flatten: r.flatten,\n })),\n });\n }\n }\n }\n\n // Nest wrappers in N→0 (right→left) order\n for (let i = wrappers.length - 1; i >= 0; i--) {\n const wrap = wrappers[i];\n\n if (wrap.type === \"wrap\") {\n ast = ((wrap as HasItems).items as AstNode[]).map((item) => ({\n ...item,\n nodes: Array.isArray(ast) ? ast : [ast],\n }));\n } else if (wrap.type === \"style-rule\") {\n ast = [\n {\n type: \"style-rule\",\n selector: wrap.selector!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n } else if (wrap.type === \"at-rule\") {\n ast = [\n {\n type: \"at-rule\",\n name: (wrap as HasName).name || \"media\",\n params: (wrap as HasParams).params!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n } else if (wrap.type === \"rule\") {\n ast = [\n {\n type: \"rule\",\n selector: wrap.selector!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n }\n }\n\n // console.log(\"[parseClassToAst] ast\", ast);\n\n // ast 에서 at-root 노드만 추출해서 ast 앞으로 추가\n // ast 내부에서는 at-root 노드를 제거\n // 재귀적으로 실행되어야 함\n const atRootNodes: AstNode[] = [];\n\n extractAtRootNodes(ast, undefined, atRootNodes);\n\n ast = [...atRootNodes, ...ast].filter(Boolean);\n\n // console.log(\"[parseClassToAst] ast\", ast);\n // Cache the result\n astCache.set(cacheKey, ast);\n\n return ast;\n}\n\n/**\n * Clear all AST caches (mainly for testing)\n */\nexport function clearAstCache(): void {\n clearAllCaches();\n failureCache.clear();\n}\n\n/**\n * generateCss\n * Takes multiple classNames and generates CSS for each, joining them.\n * - Input: classList(string), Context, options\n * - Output: string (result of joining multiple CSS blocks)\n * - Processes internally parseClassToAst → optimizeAst → astToCss in sequence\n * - Supports options like dedup, minify\n *\n * @param classList string (e.g., 'bg-red-500 text-lg hover:bg-blue-500')\n * @param ctx Context\n * @param opts { minify?: boolean, dedup?: boolean }\n * @returns string\n *\n * @example\n * const css = generateCss('sm:dark:hover:bg-red-500 sm:focus:bg-blue-500', ctx);\n */\nexport function generateCss(\n classList: string,\n ctx: Context,\n opts?: { minify?: boolean; dedup?: boolean }\n): string {\n const seen = new Set<string>();\n const allAtRootNodes: AstNode[] = [];\n\n const results = classList\n .split(/\\s+/)\n .filter((cls) => {\n if (!cls) return false;\n if (opts?.dedup) {\n if (seen.has(cls)) return false;\n seen.add(cls);\n }\n return true;\n })\n .map((cls) => {\n const ast = parseClassToAst(cls, ctx);\n const parsedResult = parseResultCache.get(cls);\n const cleanAst = optimizeAst(ast);\n\n cleanAst.forEach((node) => {\n if (node.type === \"at-root\") {\n allAtRootNodes.push(...node.nodes);\n }\n });\n\n // If style-rule already has a complete selector, do not pass baseSelector\n const hasStyleRule = cleanAst.some((node) => node.type === \"style-rule\");\n const css = astToCss(cleanAst, hasStyleRule ? undefined : cls, {\n minify: opts?.minify,\n important: parsedResult?.utility?.important ?? false,\n }); // Conditional baseSelector\n\n const rootCss = rootToCss(allAtRootNodes);\n const result = `${rootCss ? `:root,:host {${rootCss}}` : \"\"}${css}`;\n\n // Debug logging for empty CSS\n if (!result || result.trim() === \"\") {\n // eslint-disable-next-line no-console\n console.warn(\"[generateCss] Empty CSS generated for class:\", {\n class: cls,\n ast: cleanAst,\n hasStyleRule,\n css,\n rootCss,\n result,\n });\n }\n\n return result;\n })\n .join(opts?.minify ? \"\" : \"\\n\");\n\n if (allAtRootNodes.length > 0) {\n // eslint-disable-next-line no-console\n console.log(\"[generateCss] All collected atRoot nodes:\", allAtRootNodes);\n }\n\n // Debug logging for final result\n if (!results || results.trim() === \"\") {\n // eslint-disable-next-line no-console\n console.warn(\"[generateCss] Empty final result:\", {\n classList,\n results,\n allAtRootNodes,\n });\n }\n\n return results;\n}\n\nexport type GenerateCssRulesResult = {\n cls: string;\n ast: AstNode[];\n css: string;\n cssList: string[];\n rootCss: string;\n rootCssList: string[];\n};\n\n/**\n * Returns an array of optimized results for multiple class names with dedup/filter.\n * - Each object: { cls, ast, css }\n * - Supports minify, dedup options\n * - Applies astToCss(cleanAst, cls, opts) per class\n * @param classList string (space-separated)\n * @param ctx Context\n * @param opts { minify?: boolean; dedup?: boolean }\n * @returns Array<{ cls: string; ast: AstNode[]; css: string }>\n */\nexport function generateCssRules(\n classList: string,\n ctx: Context,\n opts?: { minify?: boolean; dedup?: boolean }\n): Array<GenerateCssRulesResult> {\n const seen = new Set<string>();\n const options = {\n minify: opts?.minify,\n dedup: opts?.dedup,\n };\n return classList\n .split(/\\s+/)\n .filter((cls) => {\n if (!cls) return false;\n if (opts?.dedup) {\n if (seen.has(cls)) return false;\n seen.add(cls);\n }\n return true;\n })\n .map((cls) => {\n // console.log(\"[generateCssRules] cls\", cls);\n const ast = parseClassToAst(cls, ctx);\n const cleanAst = optimizeAst(ast);\n\n // console.log(\"[generateCssRules] cleanAst\", cleanAst);\n\n const allAtRootNodes: AstNode[] = cleanAst\n .filter(\n (node) => node.type === \"at-root\" && !node.source\n )\n .map((node) => (node as HasNodes).nodes || [])\n .flat();\n const allCleanAst: AstNode[] = cleanAst.filter(\n (node) =>\n node.type !== \"at-root\" ||\n (node.type === \"at-root\" && node.source)\n );\n\n\n const cssList = [];\n for (const node of allCleanAst) {\n if (node.type === \"at-root\") {\n node.nodes.forEach((node) => {\n const css = astToCss([node], \"\", options);\n cssList.push(css);\n });\n } else {\n const css = astToCss([node], cls, options);\n cssList.push(css);\n }\n }\n // console.log('[generateCssRules] css', cls);\n const rootCssList = [];\n for (const node of allAtRootNodes) {\n const css = rootToCss([node]);\n rootCssList.push(css);\n }\n // console.log(\"[generateCssRules] rootCss\", rootCssList, allAtRootNodes);\n return {\n cls,\n ast: allCleanAst,\n css: cssList.join(options.minify ? \"\" : \"\\n\"),\n cssList,\n rootCss: rootCssList.join(options.minify ? \"\" : \"\\n\"),\n rootCssList,\n };\n });\n}\n\n/**\n * mergeAstTreeList\n * Takes a list of declPathToAst results (AstNode[][]), merges same at-rule(name, params) etc., and returns the final AST tree.\n * - Input: AstNode[][] (nested ASTs of multiple decl-to-root paths)\n * @returns AstNode[]\n * - Usage: Used in optimizeAst for final AST merging/optimization\n *\n * @param astList AstNode[][]\n * @returns AstNode[]\n */\nexport function mergeAstTreeList(astList: AstNode[][]): AstNode[] {\n // AstNode[][] → DeclPath[]\n const declPaths: DeclPath[] = astList.map((ast) => {\n // declPathToAst always returns [rootNode]\n const path: AstNode[] = [];\n let node = ast[0];\n while (node) {\n path.push({ ...node, nodes: undefined } as AstNode & HasNodes);\n if ((node as HasNodes).nodes && (node as HasNodes)?.nodes?.length === 1)\n node = (node as HasNodes).nodes?.[0] as AstNode;\n else break;\n }\n return path;\n });\n // Recursive merge\n function merge(declPaths: DeclPath[], depth = 0): AstNode[] {\n if (declPaths.length === 0) return [];\n if (declPaths[0].length === depth + 1) {\n // All decls remain\n return declPaths.map((path) => path[depth]) as AstNode[];\n }\n // Group by variant(type+key) at current depth\n const groupMap = new Map<string, DeclPath[]>();\n for (const path of declPaths) {\n const node = path[depth];\n let key = node.type;\n if (node.type === \"at-rule\") key += \":\" + node.name + \":\" + node.params;\n else if (node.type === \"rule\" || node.type === \"style-rule\")\n key += \":\" + node.selector;\n else key += \":\" + JSON.stringify(node);\n if (!groupMap.has(key!)) groupMap.set(key!, []);\n groupMap.get(key!)!.push(path);\n }\n // Recursive merge for each group\n const result: AstNode[] = [];\n for (const [, group] of groupMap.entries()) {\n const node = group[0][depth];\n const children = merge(group, depth + 1);\n result.push(\n children.length\n ? ({ ...node, nodes: children as AstNode[] } as AstNode & HasNodes)\n : ({ ...node } as AstNode & HasNodes)\n );\n }\n return result;\n }\n const merged = merge(declPaths);\n return merged;\n}\n/**\n * optimizeAst\n * Merges/organizes AST generated by parseClassToAst into an optimized AST tree based on decl-to-root path.\n * - Input: AstNode[] (result of parseClassToAst)\n * - Output: Optimized AST tree (AstNode[])\n * - Uses collectDeclPaths, declPathToAst, mergeAstTreeList internally\n * - Reflects all variant wrapping structures (nesting, siblings, merging, etc.)\n *\n * @param ast AstNode[]\n * @returns AstNode[]\n */\nexport function optimizeAst(ast: AstNode[]): AstNode[] {\n // console.log(\"[optimizeAst] ast\", ast);\n const declPaths = collectDeclPaths(ast);\n // console.log(\"[optimizeAst] declPaths\", declPaths);\n const astList = declPaths.map(declPathToAst);\n // console.log(\"[optimizeAst] astList\", astList);\n const merged = mergeAstTreeList(astList);\n // console.log(\"[optimizeAst] merged\", merged);\n\n return merged;\n}\n","import { parseClassName } from './parser';\nimport { parseClassToAst, generateCssRules, GenerateCssRulesResult } from './engine';\nimport type { Context } from './context';\nimport { astCache } from '../utils/cache';\n\n/**\n * Incremental parsing system for efficient class processing\n * \n * This class provides an optimized approach to CSS class processing by:\n * - Tracking processed classes to avoid redundant work\n * - Batching multiple class operations for better performance\n * - Supporting both synchronous and asynchronous processing modes\n * \n * ## Usage Patterns\n * \n * ### Universal Usage (Node.js & Browser)\n * ```typescript\n * const parser = new IncrementalParser(ctx);\n * \n * // Process classes synchronously\n * const results = parser.processClasses(['bg-blue-500', 'text-lg']);\n * \n * // Process single class\n * const result = parser.processClass('bg-red-500');\n * \n * // Get statistics\n * const stats = parser.getStats();\n * ```\n * \n * ### Browser Integration\n * ```typescript\n * const parser = new IncrementalParser(ctx);\n * const BrowserRuntime = new BrowserRuntime();\n * \n * // Process classes and manually inject CSS\n * const results = parser.processClasses(['bg-blue-500', 'text-lg']);\n * results.forEach(result => {\n * if (result.css) {\n * BrowserRuntime.insertRule(result.css);\n * }\n * });\n * \n * // Use with ChangeDetector for automatic DOM monitoring\n * const detector = new ChangeDetector(parser);\n * detector.observe(document.body, { scan: true });\n * ```\n * \n * ## Architecture\n * \n * - **IncrementalParser**: Pure CSS processing (works in Node.js and browser)\n * - **ChangeDetector**: Browser-only DOM monitoring (uses MutationObserver)\n * - **BrowserRuntime**: Browser-only CSS injection (uses DOM APIs)\n */\nexport class IncrementalParser {\n /** Set of class names that have already been processed to avoid duplicates */\n private processedClasses = new Set<string>();\n \n /** BAROCSS context for theme and utility resolution */\n private ctx: Context;\n \n /** Maximum number of classes to process in a single batch */\n private batchSize = 50;\n \n /** Debounce delay for batch processing in milliseconds */\n private debounceMs = 16;\n \n /** Set of classes waiting to be processed */\n private pendingClasses = new Set<string>();\n \n /** Timer for debounced batch processing */\n private batchTimer: number | null = null;\n\n /**\n * Create a new IncrementalParser instance\n * \n * @param ctx - BAROCSS context for theme and utility resolution\n */\n constructor(ctx: Context) {\n this.ctx = ctx;\n }\n\n /**\n * Processes a single CSS class and generates its AST and CSS representation\n * \n * This method performs the complete pipeline for a single class:\n * 1. Checks if the class has already been processed\n * 2. Parses the class name to extract utility information\n * 3. Generates the Abstract Syntax Tree (AST)\n * 4. Converts the AST to CSS rules\n * 5. Marks the class as processed to avoid future duplicates\n * \n * @param className - The CSS class name to process (e.g., 'bg-blue-500')\n * @returns Object containing AST and CSS, or null if processing failed or class was already processed\n */\n processClass(className: string): GenerateCssRulesResult | null {\n // Check if already processed\n if (this.processedClasses.has(className)) {\n // console.log('[IncrementalParser] Class already processed:', className);\n return null; // Already processed\n }\n\n try { \n // Parse class\n const parseResult = parseClassName(className);\n \n if (!parseResult.utility) {\n return null;\n }\n\n // Generate AST\n const ast = parseClassToAst(className, this.ctx);\n\n // console.log('[IncrementalParser] ast', className, ast);\n \n if (ast.length === 0) {\n // eslint-disable-next-line no-console\n console.warn('[IncrementalParser] ast is empty', className);\n return null;\n }\n\n // Generate CSS using the same method as runtime\n const rules = generateCssRules(className, this.ctx, { dedup: false });\n \n if (rules.length === 0) {\n return null;\n }\n\n const rule = rules[0];\n if (!rule.css) {\n return null;\n }\n\n // Mark as processed\n this.processedClasses.add(className);\n\n return { \n cls: className, \n ast, \n css: rule.css, \n cssList: rule.cssList, \n rootCss: rule.rootCss,\n rootCssList: rule.rootCssList\n };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('[IncrementalParser] Failed to process class:', className, error);\n return null;\n }\n }\n\n /**\n * Processes multiple CSS classes in batches for optimal performance\n * \n * This method handles multiple classes efficiently by:\n * - Filtering out already processed classes to avoid redundant work\n * - Processing classes in configurable batch sizes\n * - Returning comprehensive results for each processed class\n * \n * @param classes - Array of CSS class names to process\n * @returns Array of processing results, each containing className, AST, and CSS\n */\n processClasses(classes: string[]): Array<GenerateCssRulesResult> {\n const results: Array<GenerateCssRulesResult> = [];\n const newClasses = classes.filter(cls => !this.processedClasses.has(cls));\n\n if (newClasses.length === 0) {\n return results; // All classes already processed\n }\n\n // Process in batches for better performance\n for (let i = 0; i < newClasses.length; i += this.batchSize) {\n const batch = newClasses.slice(i, i + this.batchSize);\n \n for (const className of batch) {\n const result = this.processClass(className);\n if (result) {\n results.push(result);\n }\n };\n }\n\n return results;\n }\n\n /**\n * Adds classes to the pending queue for asynchronous batch processing\n * \n * This method is used by the ChangeDetector when new classes are discovered\n * in the DOM. Classes are queued and processed together to minimize\n * performance impact from frequent DOM mutations.\n * \n * @param classes - Array of CSS class names to queue for processing\n */\n addToPending(classes: string[]): void {\n classes.forEach(cls => this.pendingClasses.add(cls));\n this.scheduleBatchProcessing();\n }\n\n /**\n * Schedule batch processing with debouncing\n * \n * This method uses setTimeout to debounce rapid class additions\n * and process them in batches for better performance.\n */\n private scheduleBatchProcessing(): void {\n if (this.batchTimer) {\n clearTimeout(this.batchTimer);\n }\n\n if (typeof window !== 'undefined') {\n this.batchTimer = window.setTimeout(() => {\n this.processPendingClasses();\n }, this.debounceMs);\n } else {\n // In server environment, process immediately\n this.processPendingClasses();\n }\n }\n\n /**\n * Process pending classes from the queue\n * \n * This method is called by the debounced timer to process\n * all classes that have been added to the pending queue.\n */\n private processPendingClasses(): void {\n if (this.pendingClasses.size === 0) return;\n\n const classesToProcess = Array.from(this.pendingClasses);\n this.pendingClasses.clear();\n\n // Use common method for processing\n this.applyClasses(classesToProcess);\n }\n\n /**\n * Core method that processes classes and marks them as processed\n * \n * This is the common processing logic used by both pending and synchronous\n * processing methods. It:\n * 1. Processes the provided classes using the batch processor\n * 2. Marks classes as processed to prevent duplicates\n * \n * @param classes - Array of CSS class names to process\n */\n private applyClasses(classes: string[]): void {\n this.processClasses(classes);\n \n // Mark classes as processed\n classes.forEach(cls => {\n this.markProcessed(cls);\n });\n }\n\n /**\n * Returns comprehensive statistics about the incremental parser's state\n * \n * This method provides detailed metrics including:\n * - Number of processed classes\n * - Number of pending classes\n * - Cache statistics from AST and CSS caches\n * \n * @returns Object containing processing statistics and cache information\n */\n getStats() {\n return {\n processedClasses: this.processedClasses.size,\n pendingClasses: this.pendingClasses.size,\n cacheStats: {\n ast: astCache.getStats(),\n css: {} // No CSS cache, so return empty object\n }\n };\n }\n\n /**\n * Clears all processed classes and pending queue\n * \n * This method is useful when the theme or configuration changes,\n * requiring all classes to be reprocessed. It:\n * - Clears the processed classes set\n * - Clears the pending classes queue\n * - Cancels any pending batch processing timer\n */\n clearProcessed(): void {\n this.processedClasses.clear();\n this.pendingClasses.clear();\n if (this.batchTimer && typeof window !== 'undefined') {\n clearTimeout(this.batchTimer);\n this.batchTimer = null;\n }\n }\n\n /**\n * Checks if a specific class has been processed\n * \n * @param cls - The CSS class name to check\n * @returns True if the class has been processed, false otherwise\n */\n isProcessed(cls: string): boolean {\n return this.processedClasses.has(cls);\n }\n\n /**\n * Marks a class as processed to prevent future duplicate processing\n * \n * @param cls - The CSS class name to mark as processed\n */\n markProcessed(cls: string): void {\n this.processedClasses.add(cls);\n }\n\n /**\n * Process classes synchronously and update BrowserRuntime cache\n * This method is used by ChangeDetector for scan operations\n */\n processClassesSync(classes: string[]): void {\n this.applyClasses(classes);\n }\n\n /**\n * Returns all currently processed class names\n * \n * This method is useful for debugging and monitoring purposes,\n * providing visibility into which classes have been processed.\n * \n * @returns Array of all processed class names\n */\n getProcessedClasses(): string[] {\n return Array.from(this.processedClasses);\n }\n}\n","// Collection of converters from theme categories to CSS variables (v4 style)\n// Each function takes a category theme object and returns Record<string, string>\n// Namespace/naming rules aligned with v4\n\nimport type { Theme } from './context';\n\n// Global CSS variable prefix helper\nlet CSS_VAR_PREFIX = '--bcss-';\n\nfunction normalizePrefix(prefix: string): string {\n let p = prefix.trim();\n if (!p.startsWith('--')) p = `--${p}`;\n if (!p.endsWith('-')) p = `${p}-`;\n return p;\n}\n\nexport function setVarPrefix(prefix: string | undefined): void {\n if (typeof prefix !== 'string' || prefix.trim() === '') {\n CSS_VAR_PREFIX = '--bcss-';\n return;\n }\n CSS_VAR_PREFIX = normalizePrefix(prefix);\n}\n\nexport function getVarName(key: string): string {\n return `${CSS_VAR_PREFIX}${key}`;\n}\n\n// Aliases for brevity\nexport const varName = getVarName;\nexport function v(key: string): string { return getVarName(key); }\n\nfunction escapeKey(key: string): string {\n return key.replace('.', '\\\\.');\n}\n\n/**\n * colors: { blue: { 500: '#123456' }, red: { 500: '#ff0000' } }\n * → { '--color-blue-500': '#123456', '--color-red-500': '#ff0000' }\n */\nexport function colorsToCssVars(colors?: Record<string, unknown>): Record<string, string> {\n if (!colors) return {};\n const result: Record<string, string> = {};\n function walk(obj: Record<string, unknown>, prefix: string[] = []) {\n for (const key in obj) {\n const value = obj[key] as unknown;\n if (typeof value === 'object' && value !== null) {\n walk(value as Record<string, unknown>, [...prefix, key]);\n } else {\n const varName = '--color-' + [...prefix, key].join('-');\n result[varName] = value as string;\n }\n }\n }\n walk(colors);\n return result;\n}\n\n/**\n * boxShadow: { lg: '0 10px 15px ...', ... }\n * → { '--shadow-lg': '...' }\n */\nexport function boxShadowToCssVars(boxShadow?: Record<string, unknown>): Record<string, string> {\n if (!boxShadow) return {};\n const result: Record<string, string> = {};\n for (const key in boxShadow) {\n result[`--shadow-${key}`] = boxShadow[key] as string;\n }\n return result;\n}\n\n/**\n * fontSize: { xs: ['0.75rem', '1rem'], ... }\n * → { '--text-xs': '0.75rem', '--text-xs--line-height': '1rem' }\n */\nexport function fontSizeToCssVars(fontSize?: Record<string, unknown>): Record<string, string> {\n if (!fontSize) return {};\n const result: Record<string, string> = {};\n for (const key in fontSize) {\n const value = fontSize[key] as unknown;\n if (Array.isArray(value)) {\n result[`--text-${key}`] = value[0] as string;\n if (value[1]) result[`--text-${key}--line-height`] = value[1];\n } else {\n result[`--text-${key}`] = value as string;\n }\n }\n // console.log('[fontSizeToCssVars] result', result);\n return result;\n}\n\n/**\n * fontWeight: { normal: '400', ... }\n * → { '--font-weight-normal': '400' }\n */\nexport function fontWeightToCssVars(fontWeight?: Record<string, unknown>): Record<string, string> {\n if (!fontWeight) return {};\n const result: Record<string, string> = {};\n for (const key in fontWeight) {\n result[`--font-weight-${key}`] = fontWeight[key] as string;\n }\n return result;\n}\n\n/**\n * fontFamily: { sans: ['ui-sans-serif', ...], ... }\n * → { '--font-sans-0': 'ui-sans-serif', ... }\n */\nexport function fontFamilyToCssVars(fontFamily?: Record<string, unknown>): Record<string, string> {\n if (!fontFamily) return {};\n const result: Record<string, string> = {};\n for (const key in fontFamily) {\n const value = fontFamily[key] as unknown;\n if (Array.isArray(value)) {\n result[`--font-${key}`] = value.join(', ');\n } else {\n result[`--font-${key}`] = value as string;\n }\n }\n return result;\n}\n\n/**\n * letterSpacing: { tight: '0.05em', ... }\n * → { '--letter-spacing-tight': '0.05em' }\n */\nexport function letterSpacingToCssVars(letterSpacing?: Record<string, unknown>): Record<string, string> {\n if (!letterSpacing) return {};\n const result: Record<string, string> = {};\n for (const key in letterSpacing) {\n result[`--letter-spacing-${key}`] = letterSpacing[key] as string;\n }\n return result;\n}\n\n/**\n * spacing: { 0: '0px', 1: '0.25rem', ... }\n * → { '--spacing-0': '0px', '--spacing-1': '0.25rem', ... }\n */\nexport function spacingToCssVars(spacing?: Record<string, unknown>): Record<string, string> {\n if (!spacing) return {};\n const result: Record<string, string> = {};\n for (const key in spacing) {\n result[`--spacing-${escapeKey(key)}`] = spacing[key] as string;\n }\n return result;\n}\n\n/**\n * borderRadius: { xl: '0.75rem', ... }\n * → { '--radius-xl': '0.75rem' }\n */\nexport function borderRadiusToCssVars(borderRadius?: Record<string, unknown>): Record<string, string> {\n if (!borderRadius) return {};\n const result: Record<string, string> = {};\n for (const key in borderRadius) {\n result[`--radius-${escapeKey(key)}`] = borderRadius[key] as string;\n }\n return result;\n}\n\n/**\n * zIndex: { 10: '10', ... }\n * → { '--z-10': '10' }\n */\nexport function zIndexToCssVars(zIndex?: Record<string, unknown>): Record<string, string> {\n if (!zIndex) return {};\n const result: Record<string, string> = {};\n for (const key in zIndex) {\n result[`--z-${escapeKey(key)}`] = String(zIndex[key] as number);\n }\n return result;\n}\n\n/**\n * opacity: { 50: '0.5', ... }\n * → { '--opacity-50': '0.5' }\n */\nexport function opacityToCssVars(opacity?: Record<string, unknown>): Record<string, string> {\n if (!opacity) return {};\n const result: Record<string, string> = {};\n for (const key in opacity) {\n result[`--opacity-${escapeKey(key)}`] = String(opacity[key] as number);\n }\n return result;\n}\n\n/**\n * animations: { spin: 'spin 1s linear infinite', ... }\n * → { '--animate-spin': 'spin 1s linear infinite' }\n */\nexport function animationToCssVars(animations?: Record<string, unknown>): Record<string, string> {\n if (!animations) return {};\n const result: Record<string, string> = {};\n for (const key in animations) {\n result[`--animate-${escapeKey(key)}`] = animations[key] as string;\n }\n return result;\n}\n\n/**\n * keyframes: { spin: { 'to': { transform: 'rotate(360deg)' } }, ... }\n * → Requires separate @keyframes block generation (variable conversion omitted here)\n */\nexport function keyframesToCss(keyframes?: Record<string, unknown>): string {\n if (!keyframes) return '';\n let css = '';\n for (const name in keyframes) {\n const frames = keyframes[name] as unknown;\n css += `@keyframes ${name} {\\n`;\n for (const step in frames as Record<string, unknown>) {\n css += ` ${step} {`;\n const props = (frames as Record<string, unknown>)[step] as Record<string, unknown>;\n for (const prop in props) {\n css += ` ${prop}: ${props[prop] as string};`;\n }\n css += ' }\\n';\n }\n css += '}\\n';\n }\n return css;\n}\n\n/**\n * transition: { duration: '150ms', ... }\n * → { '--transition-duration': '150ms' }\n */\nexport function transitionTimingFunctionToCssVars(transition: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in transition) {\n\n if (key === 'DEFAULT') {\n result[`--default-transition-timing-function`] = transition[key];\n } else {\n result[`--transition-timing-function-${escapeKey(key)}`] = transition[key];\n }\n }\n return result;\n}\n\n/**\n * transitionDuration: { DEFAULT: '150ms', ... }\n * → { '--default-transition-duration': '150ms' }\n */\nexport function transitionDurationToCssVars(transitionDuration: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in transitionDuration) {\n if (key === 'DEFAULT') {\n result[`--default-transition-duration`] = transitionDuration[key];\n } else {\n result[`--transition-duration-${escapeKey(key)}`] = transitionDuration[key];\n }\n }\n return result;\n}\n\n\n/**\n * transitionDelay: { DEFAULT: '0ms', ... }\n * → { '--default-transition-delay': '0ms' }\n */\nexport function transitionDelayToCssVars(transitionDelay: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const key in transitionDelay) {\n if (key === 'DEFAULT') {\n result[`--default-transition-delay`] = transitionDelay[key];\n } else {\n result[`--transition-delay-${escapeKey(key)}`] = transitionDelay[key];\n }\n } \n return result;\n}\n\n/**\n * blur: { DEFAULT: '0px', ... }\n * → { '--default-blur': '0px' }\n */\nexport function blurToCssVars(blur: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in blur) {\n if (key === 'DEFAULT') {\n result[`--default-blur`] = blur[key];\n } else {\n result[`--blur-${escapeKey(key)}`] = blur[key];\n }\n }\n return result;\n}\n\n/**\n * container: { 1: '1rem', ... }\n * → { '--container-1': '1rem' }\n */\nexport function containerToCssVars(container: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in container) {\n result[`--container-${escapeKey(key)}`] = container[key];\n }\n return result;\n}\n\n/**\n * themeToCssVarsAll: merge CSS variables from major theme categories\n */\nexport function themeToCssVarsAll(theme: Theme): Record<string, string> {\n return {\n ...colorsToCssVars(theme.colors! as Record<string, unknown>),\n ...boxShadowToCssVars(theme.boxShadow! as Record<string, unknown>),\n ...fontSizeToCssVars(theme.fontSize! as Record<string, unknown>),\n ...fontWeightToCssVars(theme.fontWeight! as Record<string, unknown>),\n ...fontFamilyToCssVars(theme.fontFamily! as Record<string, unknown>),\n ...letterSpacingToCssVars(theme.letterSpacing! as Record<string, unknown>),\n '--spacing': (theme.spacing! as Record<string, unknown>)['1'] as string,\n ...spacingToCssVars(theme.spacing! as Record<string, unknown>),\n ...containerToCssVars(theme.container! as Record<string, string>),\n ...borderRadiusToCssVars(theme.borderRadius! as Record<string, unknown>),\n ...zIndexToCssVars(theme.zIndex! as Record<string, unknown>),\n ...opacityToCssVars(theme.opacity! as Record<string, unknown>),\n ...animationToCssVars(theme.animations! as Record<string, unknown>),\n ...transitionTimingFunctionToCssVars(theme.transitionTimingFunction! as Record<string, string>),\n ...transitionDurationToCssVars(theme.transitionDuration! as Record<string, string>),\n ...transitionDelayToCssVars(theme.transitionDelay! as Record<string, string>),\n ...blurToCssVars(theme.blur! as Record<string, string>),\n // keyframes handled separately\n };\n}\n\n/**\n * toCssVarsBlock: convert Record<string, string> → :root { ... } CSS block string\n */\nexport function toCssVarsBlock(vars: Record<string, string>, extra: string = ''): string {\n return ':root,:host {\\n' + Object.entries(vars).map(([k, v]) => ` ${k}: ${v};`).join('\\n') + '\\n}\\n' + extra + '\\n';\n} ","// BaroCSS Preflight CSS as TypeScript variables\n// This eliminates the need for ?raw imports and improves compatibility\n\nexport const preflightMinimalCSS = `\n/* BaroCSS Preflight - Minimal Reset */\n/* ================================= */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n`;\n\nexport const preflightStandardCSS = `\n/* BaroCSS Preflight - Standard Reset */\n/* ================================== */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* Additional standard resets */\nhtml {\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n}\n\n/* Remove the gray background on active links in IE 10 */\na {\n background-color: transparent;\n}\n\n/* Add the correct font weight in Chrome, Edge, and Safari */\nb,\nstrong {\n font-weight: bolder;\n}\n\n/* Prevent sub and sup elements from affecting the line height */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Improve media defaults */\nsvg {\n vertical-align: middle;\n}\n\n/* Remove border on iframe */\niframe {\n border: 0;\n}\n\n/* Table defaults */\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n/* Form element defaults */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Remove the inner border and padding in Firefox */\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/* Restore the focus styles unset by the previous rule */\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Correct the padding in Firefox */\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/* Remove padding so developers aren't caught out when they zero out fieldset elements */\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\n/* Add the correct vertical alignment in Chrome, Firefox, and Opera */\nprogress {\n vertical-align: baseline;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n`;\n\nexport const preflightFullCSS = `\n/* BaroCSS Preflight - Full Reset */\n/* =============================== */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure, \nfooter, header, hgroup, menu, nav, section {\n display: block;\n}\n\n/* Additional full resets */\nhtml {\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n}\n\n/* Remove the gray background on active links in IE 10 */\na {\n background-color: transparent;\n text-decoration: none;\n color: inherit;\n}\n\n/* Add the correct font weight in Chrome, Edge, and Safari */\nb,\nstrong {\n font-weight: bolder;\n}\n\n/* Prevent sub and sup elements from affecting the line height */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Improve media defaults */\nsvg {\n vertical-align: middle;\n}\n\n/* Remove border on iframe */\niframe {\n border: 0;\n}\n\n/* Table defaults */\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n/* Form element defaults */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Remove the inner border and padding in Firefox */\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/* Restore the focus styles unset by the previous rule */\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Correct the padding in Firefox */\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/* Remove padding so developers aren't caught out when they zero out fieldset elements */\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\n/* Add the correct vertical alignment in Chrome, Firefox, and Opera */\nprogress {\n vertical-align: baseline;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Additional full reset styles */\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\n/* Add the correct font size in all browsers */\nsmall {\n font-size: 80%;\n}\n\n/* Prevent overflow of the container in all browsers */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Add the correct display in IE 9 */\naudio,\nvideo {\n display: inline-block;\n}\n\n/* Add the correct display in IE */\ntemplate {\n display: none;\n}\n\n/* Hidden attribute */\n[hidden] {\n display: none;\n}\n\n/* Focus styles */\n:focus {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n}\n\n/* Skip link for accessibility */\n.skip-link {\n position: absolute;\n top: -40px;\n left: 6px;\n background: #000;\n color: white;\n padding: 8px;\n text-decoration: none;\n z-index: 100;\n}\n\n.skip-link:focus {\n top: 6px;\n}\n\n/* Print styles */\n@media print {\n *,\n *::before,\n *::after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n \n a,\n a:visited {\n text-decoration: underline;\n }\n \n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n \n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n \n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n \n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n \n thead {\n display: table-header-group;\n }\n \n tr,\n img {\n page-break-inside: avoid;\n }\n \n img {\n max-width: 100% !important;\n }\n \n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n \n h2,\n h3 {\n page-break-after: avoid;\n }\n}\n`;\n","import { defaultTheme } from \"../theme\";\nimport { keyframesToCss, themeToCssVarsAll, toCssVarsBlock, setVarPrefix } from \"./cssVars\";\nimport { clearAllCaches } from \"../utils/cache\";\nimport { preflightMinimalCSS, preflightStandardCSS, preflightFullCSS } from \"../css/preflight\";\n\ntype PreflightLevel = 'minimal' | 'standard' | 'full' | true | false;\n\ntype Function = (...args: unknown[]) => unknown;\ntype ContextRecord = Record<string, unknown>;\n\nexport function getPreflightCSS(level: PreflightLevel = true): string {\n if (level === 'minimal') {\n return preflightMinimalCSS;\n } else if (level === 'standard') {\n return preflightStandardCSS;\n } else if (level === 'full') {\n return preflightFullCSS;\n } else if (level === true) {\n return preflightFullCSS;\n } else if (level === false) {\n return '';\n }\n return '';\n}\n\n// Types for theme/config/context\nexport interface Theme {\n extend?: Theme;\n [namespace: string]: unknown;\n}\n\nexport interface Config {\n prefix?: string; // prefix for class names, default is 'barocss-'\n cssVarPrefix?: string; // prefix for generated CSS custom properties, default '--bcss-'\n /**\n * Modern dark mode strategy\n * - 'media': uses @media (prefers-color-scheme: dark)\n * - 'class': uses .dark selector\n * - string[]: custom selectors (e.g. ['class', '[data-theme=\"dark\"]'])\n */\n darkMode?: 'media' | 'class' | string[];\n theme?: Theme;\n presets?: { theme: Theme }[];\n\n /**\n * Whether to include preflight CSS\n * - 'minimal': Minimal preflight CSS\n * - 'standard': Standard preflight CSS\n * - 'full': Full preflight CSS\n * - true: Full preflight CSS (default)\n * - false: No preflight CSS\n * \n * default: true (full preflight)\n */\n preflight?: PreflightLevel;\n /**\n * Whether to clear all caches when context is created/changed\n * - true (default): Clear all caches on context change\n * - false: Keep existing caches\n */\n clearCacheOnContextChange?: boolean;\n [key: string]: unknown;\n}\n\nexport const defaultConfig: Config = {\n prefix: 'barocss-',\n darkMode: 'media', // same as default\n};\n\nexport interface Context {\n hasPreset: (category: string, preset: string) => boolean;\n theme: (...path: (string|number)[]) => unknown;\n config: (...path: (string|number)[]) => unknown;\n themeToCssVars: (prefix?: string) => string;\n // Safe API for extending theme from plugins\n extendTheme: (category: string, values: Record<string, unknown> | Function) => void;\n getPreflightCSS: (level?: PreflightLevel) => string;\n}\n\n// Deep merge utility\nexport function deepMerge<T extends Record<string, unknown>>(base: T, override: Partial<T>): T {\n const result: Record<string, unknown> = {};\n const keys = new Set([\n ...Object.keys(base || {}),\n ...Object.keys(override || {}),\n ]);\n for (const key of keys) {\n const skey = String(key);\n const baseVal = base && typeof base === 'object' ? (base as T)[skey] : undefined;\n const overrideVal = override && typeof override === 'object' ? (override as T)[skey] : undefined;\n if (\n overrideVal &&\n typeof overrideVal === 'object' &&\n !Array.isArray(overrideVal)\n ) {\n result[skey] = deepMerge(\n (typeof baseVal === 'object' && baseVal !== null) ? baseVal as T : {} as T,\n overrideVal\n );\n } else if (overrideVal !== undefined) {\n result[skey] = overrideVal;\n } else {\n result[skey] = baseVal;\n }\n }\n return result as T;\n}\n\nexport type ThemeGetter = (...path: (string|number)[]) => unknown;\n\nlet staticInProgress: Set<string> | undefined;\n\n/**\n * Modern theme getter for BAROCSS\n *\n * - Supports category-level (first path segment) function values only.\n * - If the category (e.g., 'spacing', 'colors') is a function, it will be executed with the theme getter as argument.\n * - This allows dynamic theme extension and plugin-style patterns, e.g.:\n * spacing: (theme) => ({ ...theme('spacing'), '72': '18rem' })\n * - Leaf (property) functions are NOT supported and will be ignored (returns undefined).\n * - Infinite recursion is prevented: If the exact same path is being resolved recursively (directly or indirectly), undefined is returned for that call.\n * - Category-level functions can safely call theme('category.otherKey') for dynamic references.\n * - Only true recursion on the same path is blocked.\n * - All theme lookups (theme('category.key')) will always re-execute the category function if present, ensuring dynamic resolution.\n *\n * @param themeObj - The theme object (possibly with category functions)\n * @param path - Path segments (string or number), or dot-path string (e.g. 'colors.red.500')\n * @returns The resolved theme value, or undefined if not found or if a leaf function is encountered\n *\n * @example\n * const theme = {\n * spacing: (theme) => ({ 1: '0.25rem', 2: theme('spacing.1') }),\n * };\n * themeGetter(theme, 'spacing.2'); // '0.25rem'\n *\n * @example\n * // Infinite recursion is prevented:\n * const theme = {\n * spacing: (theme) => theme('spacing.1'),\n * };\n * themeGetter(theme, 'spacing.1'); // undefined\n */\nexport function themeGetter(themeObj: Theme, ...path: (string | number)[]): unknown {\n // The theme getter function itself, passed to category functions for dynamic resolution\n const theme: ThemeGetter = (...args: (string | number)[]) => themeGetter(themeObj, ...args);\n\n // Parse the path: support both dot-path string and array of segments\n let keys: (string | number)[] = [];\n if (path.length === 1 && typeof path[0] === 'string' && path[0].includes('.')) {\n keys = path[0].split('.');\n } else {\n if (path[0] === 'colors' && typeof path[1] === 'string' && path[1].includes('-')) {\n // colors.red-500 → colors.red.500 (only for color names with numbers)\n // But custom-blue should remain as custom-blue\n const colorKey = path[1] as string;\n if (colorKey.match(/^[a-zA-Z]+-\\d+$/)) {\n // Only split if it's a pattern like \"red-500\", \"blue-600\", etc.\n keys = colorKey.split('-');\n keys = [path[0], ...keys];\n } else {\n // For custom keys like \"custom-blue\", keep as is\n keys = path;\n }\n } else {\n keys = path;\n }\n }\n if (keys.length === 0) return undefined;\n\n // Infinite recursion protection: track currently resolving full paths\n // If the exact same path is being resolved recursively, return undefined\n staticInProgress = staticInProgress || new Set();\n const pathKey = keys.join('.');\n if (staticInProgress?.has(pathKey)) return undefined;\n staticInProgress?.add(pathKey);\n\n // Get the category value (could be a function or object)\n let value = themeObj[keys[0]];\n // console.log(`[themeGetter] category '${keys[0]}' value:`, value, `type:`, typeof value);\n \n // If the category is a function, execute it with the theme getter\n // This enables dynamic theme extension and plugin-style patterns\n if (typeof value === 'function') {\n // console.log(`[themeGetter] executing category function for '${keys[0]}'`);\n value = value(theme);\n // console.log(`[themeGetter] category function result:`, value);\n }\n\n // Traverse the rest of the path (leaf keys)\n for (let i = 1; i < keys.length; i++) {\n // console.log(`[themeGetter] traversing key '${keys[i]}', current value:`, value);\n if (value == null) {\n // console.log(`[themeGetter] value is null/undefined at key '${keys[i]}'`);\n staticInProgress?.delete(pathKey);\n return undefined;\n }\n value = (value as Record<string, unknown>)[keys[i]];\n // console.log(`[themeGetter] after accessing '${keys[i]}', value:`, value);\n }\n\n staticInProgress?.delete(pathKey);\n // If the final value is a function (leaf function), do NOT execute it\n // Only category-level functions are supported; leaf functions are ignored\n if (typeof value === 'function') {\n return undefined;\n }\n\n // Return the resolved value (static or dynamically generated)\n // console.log(`[themeGetter] final result:`, value);\n return value;\n}\n\n// config getter\nexport function configGetter(config: ContextRecord, ...path: (string|number)[]): unknown {\n let keys: (string|number)[] = [];\n if (path.length === 1 && typeof path[0] === 'string' && path[0].includes('.')) {\n keys = path[0].split('.');\n } else {\n keys = path;\n }\n return keys.reduce((acc: unknown, key) => (acc ? (acc as Record<string, unknown>)[key] : undefined), config) as unknown as ContextRecord;\n}\n\n// hasPreset\nexport function hasPreset(themeObj: Theme, category: string, preset: string): boolean {\n return (themeObj[category] as string[])?.includes?.(preset) as boolean;\n}\n\n// resolveTheme\nexport function resolveTheme(config: Config): Theme {\n let theme: Theme = {};\n if (config.presets) {\n for (const preset of config.presets) {\n if (preset.theme) {\n theme = deepMerge(theme, preset.theme);\n }\n }\n }\n if (config.theme) {\n const { extend, ...overrideTheme } = config.theme as Theme;\n theme = deepMerge(theme, overrideTheme); // switch from shallowMerge to deepMerge\n if (extend) {\n theme = deepMerge(theme, extend);\n }\n }\n return theme;\n}\n\n\nexport function themeToCssVars(theme: Theme): string {\n const vars = themeToCssVarsAll(theme);\n // console.log('[themeToCssVars] vars', vars);\n const result = toCssVarsBlock(vars, `\n${keyframesToCss((theme.keyframes || {}) as Record<string, unknown>)}\n`);\n\n// console.log('[themeToCssVars] result', result);\n\n return result;\n}\n\n// createContext\nexport function createContext(configObj: Config): Context {\n // Automatically include defaultTheme as the base preset\n const configWithDefaults = {\n presets: [\n { theme: defaultTheme }, // always include defaultTheme as base preset\n ...(configObj.presets || [])\n ],\n ...configObj\n };\n // Initialize global CSS var prefix\n setVarPrefix(configWithDefaults.cssVarPrefix || '--bcss-');\n \n const themeObj = resolveTheme(configWithDefaults);\n \n // Auto-clear caches on context change (optional)\n if (configObj.clearCacheOnContextChange !== false) {\n clearAllCaches();\n }\n\n // 1. Declare ctx first as an object\n const ctx: Context = {\n hasPreset: (category: string, preset: string): boolean => {\n const result = hasPreset(themeObj, category, preset);\n // console.log(`[hasPreset] category: ${category}, preset: ${preset} =>`, result);\n return result as boolean;\n },\n theme: (...args) => {\n const result = themeGetter(themeObj, ...args);\n // console.log(`[theme] path:`, args, `=>`, result);\n return result;\n },\n config: (...args) => {\n const result = configGetter(configWithDefaults, ...args);\n // console.log(`[config] path:`, args, `=>`, result);\n return result;\n },\n themeToCssVars: () => themeToCssVars(themeObj),\n // Safe API for theme extension from plugins\n extendTheme: (category: string, values: Record<string, unknown> | Function) => {\n // console.log(`[extendTheme] category: ${category}, values:`, values);\n \n if (typeof values === 'function') {\n // If it's a function, execute with theme getter\n const themeFunction = values as (theme: ThemeGetter) => unknown;\n const result = themeFunction(ctx.theme);\n if (result && typeof result === 'object') {\n // Merge with existing values\n const existingValues = themeObj[category] || {} as Record<string, unknown>;\n themeObj[category] = {\n ...existingValues,\n ...result\n };\n // console.log(`[extendTheme] function result merged for ${category}:`, themeObj[category]);\n }\n } else if (typeof values === 'object' && values !== null && !Array.isArray(values)) {\n // Get existing category values\n const existingValues = themeObj[category] || {} as Record<string, unknown>;\n \n // Merge existing and new values\n themeObj[category] = {\n ...existingValues,\n ...values\n };\n // console.log(`[extendTheme] merged ${category}:`, themeObj[category]);\n } else {\n // console.warn(`[extendTheme] Invalid values for category ${category}:`, values);\n }\n },\n getPreflightCSS: (level: PreflightLevel = true) => {\n return getPreflightCSS(level);\n }\n };\n\n // 2. Property assignment (functions reference themeObj, configWithDefaults, etc.)\n // ctx.hasPreset = (category: string, preset: string) => {\n // const result = hasPreset(themeObj, category, preset);\n // console.log(`[hasPreset] category: ${category}, preset: ${preset} =>`, result);\n // return result;\n // };\n // ctx.theme = (...args) => {\n // const value = themeGetter(themeObj, ...args);\n // console.log(`[theme] path:`, args, '=>', value);\n // return value;\n // };\n // ctx.config = (...args) => {\n // const value = configGetter(configWithDefaults, ...args);\n // console.log(`[config] path:`, args, '=>', value);\n // return value;\n // };\n // ctx.plugins = configWithDefaults.plugins ?? [];\n // ctx.themeToCssVars = () => themeToCssVars(themeObj);\n\n return ctx;\n} ","// Value parsing helpers inspired by value-parser.ts\n\n/**\n * Extracts the value from [arbitrary] syntax, or returns null if not arbitrary.\n */\nexport function parseArbitraryValue(input: string): string | null {\n return input.startsWith('[') && input.endsWith(']') ? input.slice(1, -1) : null;\n}\n\n/**\n * Parses a fraction string (e.g., '1/2') and returns a percentage string (e.g., '50%'), or null if not a valid fraction.\n */\nexport function parseFraction(input: string): string | null {\n if (input.includes('/')) {\n const [num, denom] = input.split('/').map(Number);\n if (!isNaN(num) && !isNaN(denom) && denom !== 0) {\n return `${(num / denom) * 100}%`;\n }\n }\n return null;\n}\n\n/**\n * Returns the input if it is a valid non-negative integer string, else null.\n * \n * @example\n * parseNumber(\"10\") // \"10\"\n * parseNumber(\"-10\") // \"-10\"\n * parseNumber(\"10.5\") // \"10.5\"\n */\nexport function parseNumber(input: string): string | null {\n // Accept integers and decimals (e.g., 1, -2, 1.5, -0.25)\n return /^-?\\d+(?:\\.\\d+)?$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input if it is a valid non-negative integer string, else null.\n * \n * @example\n * parseInteger(\"10\") // \"10\"\n * parseInteger(\"-10\") // null\n * parseInteger(\"10.5\") // null\n */\nexport function parseInteger(input: string): string | null {\n return /^-?\\d+$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input if it is a valid length string, else null.\n */\nexport function parseLength(input: string): string | null {\n return /^\\d+(px|em|rem|vh|vw|vmin|vmax|%|in|cm|mm|pt|pc|ex|ch|fr)$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input without a leading '-' if negative, else null.\n */\nexport function parseNegative(input: string): string | null {\n return input.startsWith('-') ? input.slice(1) : null;\n}\n\n/**\n * Returns the input if it is a valid CSS var() expression, else null.\n */\nexport function parseVar(input: string): string | null {\n return input.startsWith('var(') && input.endsWith(')') ? input : null;\n}\n\n/**\n * Unified parser for fraction or number, with options for percent or repeat syntax.\n * - percent: if true, returns percentage for fraction (e.g., '1/2' -> '50%')\n * - repeat: if true, returns repeat() for number (e.g., '3' -> 'repeat(3, minmax(0, 1fr))')\n */\nexport function parseFractionOrNumber(value: string, opts: { percent?: boolean; repeat?: boolean } = {}): string | null {\n if (/^\\d+$/.test(value)) {\n if (opts.repeat) return `repeat(${value}, minmax(0, 1fr))`;\n return value;\n }\n if (value.includes('/')) {\n const [numerator, denominator] = value.split('/').map(Number);\n if (!isNaN(numerator) && !isNaN(denominator) && denominator !== 0) {\n const result = numerator / denominator;\n if (opts.percent) return `${result * 100}%`;\n return result.toString();\n }\n }\n return null;\n} \n\nconst CSS_COLOR_NAMES = new Set([\n \"aliceblue\",\n \"antiquewhite\",\n \"aqua\",\n \"aquamarine\",\n \"azure\",\n \"beige\",\n \"bisque\",\n \"black\",\n \"blanchedalmond\",\n \"blue\",\n \"blueviolet\",\n \"brown\",\n \"burlywood\",\n \"cadetblue\",\n \"chartreuse\",\n \"chocolate\",\n \"coral\",\n \"cornflowerblue\",\n \"cornsilk\",\n \"crimson\",\n \"cyan\",\n \"darkblue\",\n \"darkcyan\",\n \"darkgoldenrod\",\n \"darkgray\",\n \"darkgreen\",\n \"darkgrey\",\n \"darkkhaki\",\n \"darkmagenta\",\n \"darkolivegreen\",\n \"darkorange\",\n \"darkorchid\",\n \"darkred\",\n \"darksalmon\",\n \"darkseagreen\",\n \"darkslateblue\",\n \"darkslategray\",\n \"darkslategrey\",\n \"darkturquoise\",\n \"darkviolet\",\n \"deeppink\",\n \"deepskyblue\",\n \"dimgray\",\n \"dimgrey\",\n \"dodgerblue\",\n \"firebrick\",\n \"floralwhite\",\n \"forestgreen\",\n \"fuchsia\",\n \"gainsboro\",\n \"ghostwhite\",\n \"gold\",\n \"goldenrod\",\n \"gray\",\n \"grey\",\n \"green\",\n \"greenyellow\",\n \"honeydew\",\n \"hotpink\",\n \"indianred\",\n \"indigo\",\n \"ivory\",\n \"khaki\",\n \"lavender\",\n \"lavenderblush\",\n \"lawngreen\",\n \"lemonchiffon\",\n \"lightblue\",\n \"lightcoral\",\n \"lightcyan\",\n \"lightgoldenrodyellow\",\n \"lightgray\",\n \"lightgreen\",\n \"lightgrey\",\n \"lightpink\",\n \"lightsalmon\",\n \"lightseagreen\",\n \"lightskyblue\",\n \"lightslategray\",\n \"lightslategrey\",\n \"lightsteelblue\",\n \"lightyellow\",\n \"lime\",\n \"limegreen\",\n \"linen\",\n \"magenta\",\n \"maroon\",\n \"mediumaquamarine\",\n \"mediumblue\",\n \"mediumorchid\",\n \"mediumpurple\",\n \"mediumseagreen\",\n \"mediumslateblue\",\n \"mediumspringgreen\",\n \"mediumturquoise\",\n \"mediumvioletred\",\n \"midnightblue\",\n \"mintcream\",\n \"mistyrose\",\n \"moccasin\",\n \"navajowhite\",\n \"navy\",\n \"oldlace\",\n \"olive\",\n \"olivedrab\",\n \"orange\",\n \"orangered\",\n \"orchid\",\n \"palegoldenrod\",\n \"palegreen\",\n \"paleturquoise\",\n \"palevioletred\",\n \"papayawhip\",\n \"peachpuff\",\n \"peru\",\n \"pink\",\n \"plum\",\n \"powderblue\",\n \"purple\",\n \"red\",\n \"rosybrown\",\n \"royalblue\",\n \"saddlebrown\",\n \"salmon\",\n \"sandybrown\",\n \"seagreen\",\n \"seashell\",\n \"sienna\",\n \"silver\",\n \"skyblue\",\n \"slateblue\",\n \"slategray\",\n \"slategrey\",\n \"snow\",\n \"springgreen\",\n \"steelblue\",\n \"tan\",\n \"teal\",\n \"thistle\",\n \"tomato\",\n \"turquoise\",\n \"violet\",\n \"wheat\",\n \"white\",\n \"whitesmoke\",\n \"yellow\",\n \"yellowgreen\",\n]);\n\n/**\n * Returns the input if it is a valid color string, else null.\n *\n * #rgb, #rgba, #rrggbb, #rrggbbaa, rgb(r, g, b), rgb(r, g, b, a), hsl(h, s, l), hsl(h, s, l, a), hwb(h, w, b), hwb(h, w, b, a), lab(l, a, b), lab(l, a, b, a), lch(l, c, h), lch(l, c, h, a), oklab(l, a, b), oklab(l, a, b, a), oklch(l, c, h), oklch(l, c, h, a), color-mix(in oklab, var(--color-blue-500) 60%, transparent)\n */\nexport function parseColor(input: string): string | null {\n\n // CSS named colors\n if (CSS_COLOR_NAMES.has(input.toLowerCase())) {\n return input;\n }\n\n if (input.startsWith('color:var(')) {\n return input.slice(6);\n }\n\n if (input.startsWith('color:')) {\n return parseColor(input.slice(6));\n }\n\n // hex\n if (input.startsWith('#') && input.length === 4) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 5) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 7) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 9) {\n return `#${input.slice(1)}`;\n }\n\n\n // rgb\n if (input.startsWith('rgb(')) {\n return input.slice(4, -1);\n }\n\n // rgba\n if (input.startsWith('rgba(')) {\n return input.slice(5, -1);\n }\n\n // hsl\n if (input.startsWith('hsl(')) {\n return input.slice(4, -1);\n }\n\n // hsla\n if (input.startsWith('hsla(')) {\n return input.slice(5, -1);\n }\n\n // hwb\n if (input.startsWith('hwb(')) {\n return input.slice(4, -1);\n }\n\n // lab\n if (input.startsWith('lab(')) {\n return input.slice(4, -1);\n }\n\n // lch\n if (input.startsWith('lch(')) {\n return input.slice(4, -1);\n }\n\n // oklab\n if (input.startsWith('oklab(')) {\n return input.slice(5, -1);\n }\n\n // oklch\n if (input.startsWith('oklch(')) {\n return input.slice(6, -1);\n }\n\n // color-mix\n if (input.startsWith('color-mix(')) {\n return input.slice(9, -1);\n }\n\n\n return null;\n}","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Accent Color Utilities ---\n// accent-color documentation\n\n// Theme color utilities (e.g. accent-inherit, accent-blue-500)\n// (Assume theme color registration is handled elsewhere, or extend as needed)\n\nstaticUtility(\"accent-inherit\", [[\"accent-color\", \"inherit\"]], { category: 'interactivity' });\nstaticUtility(\"accent-current\", [[\"accent-color\", \"currentColor\"]], { category: 'interactivity' });\nstaticUtility(\"accent-transparent\", [[\"accent-color\", \"transparent\"]], { category: 'interactivity' });\n\n// Functional: arbitrary value (accent-[value])\nfunctionalUtility({\n name: \"accent\",\n themeKeys: [\"colors\"],\n supportsOpacity: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"accent-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"accent-color\", value),\n ];\n }\n\n return [decl(\"accent-color\", `var(--color-${extra.realThemeValue})`)];\n }\n\n return [decl(\"accent-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"accent-color\", `var(${value})`)],\n description: \"accent-color utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Appearance Utilities ---\n// appearance documentation\n\n// appearance-none: removes native form control styling\nstaticUtility(\"appearance-none\", [[\"appearance\", \"none\"]], { category: 'interactivity' });\n// appearance-auto: restores default browser styling\nstaticUtility(\"appearance-auto\", [[\"appearance\", \"auto\"]], { category: 'interactivity' });\n\n// --- Caret Color Utilities ---\n// caret-color documentation\n\n// Static caret colors\nstaticUtility(\"caret-inherit\", [[\"caret-color\", \"inherit\"]], { category: 'interactivity' });\nstaticUtility(\"caret-current\", [[\"caret-color\", \"currentColor\"]], { category: 'interactivity' });\nstaticUtility(\"caret-transparent\", [[\"caret-color\", \"transparent\"]], { category: 'interactivity' });\n\n// Theme color utilities (e.g. caret-blue-500)\n// (Assume theme color registration is handled elsewhere)\n\n// Functional: arbitrary value (caret-[value]) and custom property (caret-(--my-caret))\nfunctionalUtility({\n name: \"caret\",\n themeKeys: [\"colors\"],\n supportsOpacity: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"caret-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"caret-color\", value),\n ];\n }\n\n return [decl(\"caret-color\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"caret-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"caret-color\", `var(${value})`)],\n description:\n \"caret-color utility (static, theme, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Color Scheme Utilities ---\n// color-scheme documentation\n\n// scheme-normal: color-scheme: normal;\nstaticUtility(\"scheme-normal\", [[\"color-scheme\", \"normal\"]], { category: 'interactivity' });\n// scheme-dark: color-scheme: dark;\nstaticUtility(\"scheme-dark\", [[\"color-scheme\", \"dark\"]], { category: 'interactivity' });\n// scheme-light: color-scheme: light;\nstaticUtility(\"scheme-light\", [[\"color-scheme\", \"light\"]], { category: 'interactivity' });\n// scheme-light-dark: color-scheme: light dark;\nstaticUtility(\"scheme-light-dark\", [[\"color-scheme\", \"light dark\"]], { category: 'interactivity' });\n// scheme-only-dark: color-scheme: only dark;\nstaticUtility(\"scheme-only-dark\", [[\"color-scheme\", \"only dark\"]], { category: 'interactivity' });\n// scheme-only-light: color-scheme: only light;\nstaticUtility(\"scheme-only-light\", [[\"color-scheme\", \"only light\"]], { category: 'interactivity' });\n\n// --- Cursor Utilities ---\n// cursor documentation\n\n// Static cursor values\n[\n \"auto\",\n \"default\",\n \"pointer\",\n \"wait\",\n \"text\",\n \"move\",\n \"help\",\n \"not-allowed\",\n \"none\",\n \"context-menu\",\n \"progress\",\n \"cell\",\n \"crosshair\",\n \"vertical-text\",\n \"alias\",\n \"copy\",\n \"no-drop\",\n \"grab\",\n \"grabbing\",\n \"all-scroll\",\n \"col-resize\",\n \"row-resize\",\n \"n-resize\",\n \"e-resize\",\n \"s-resize\",\n \"w-resize\",\n \"ne-resize\",\n \"nw-resize\",\n \"se-resize\",\n \"sw-resize\",\n \"ew-resize\",\n \"ns-resize\",\n \"nesw-resize\",\n \"nwse-resize\",\n \"zoom-in\",\n \"zoom-out\",\n].forEach((cursor) => {\n staticUtility(`cursor-${cursor}`, [[\"cursor\", cursor]], { category: 'interactivity' });\n});\n\n// Functional: custom property (cursor-(--my-cursor)) and arbitrary value (cursor-[value])\nfunctionalUtility({\n name: \"cursor\",\n prop: \"cursor\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"cursor utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Field Sizing Utilities ---\n// field-sizing documentation\n\n// field-sizing-fixed: field-sizing: fixed;\nstaticUtility(\"field-sizing-fixed\", [[\"field-sizing\", \"fixed\"]], { category: 'interactivity' });\n// field-sizing-content: field-sizing: content;\nstaticUtility(\"field-sizing-content\", [[\"field-sizing\", \"content\"]], { category: 'interactivity' });\n\n// --- Pointer Events Utilities ---\n// pointer-events documentation\n\n// pointer-events-auto: pointer-events: auto;\nstaticUtility(\"pointer-events-auto\", [[\"pointer-events\", \"auto\"]], { category: 'interactivity' });\n// pointer-events-none: pointer-events: none;\nstaticUtility(\"pointer-events-none\", [[\"pointer-events\", \"none\"]], { category: 'interactivity' });\n\n// --- Resize Utilities ---\n// resize documentation\n\n// resize: resize: both;\nstaticUtility(\"resize\", [[\"resize\", \"both\"]], { category: 'interactivity' });\n// resize-x: resize: horizontal;\nstaticUtility(\"resize-x\", [[\"resize\", \"horizontal\"]], { category: 'interactivity' });\n// resize-y: resize: vertical;\nstaticUtility(\"resize-y\", [[\"resize\", \"vertical\"]], { category: 'interactivity' });\n// resize-none: resize: none;\nstaticUtility(\"resize-none\", [[\"resize\", \"none\"]], { category: 'interactivity' });\n\n// --- Scroll Behavior Utilities ---\n// scroll-behavior documentation\n\n// scroll-auto: scroll-behavior: auto;\nstaticUtility(\"scroll-auto\", [[\"scroll-behavior\", \"auto\"]], { category: 'interactivity' });\n// scroll-smooth: scroll-behavior: smooth;\nstaticUtility(\"scroll-smooth\", [[\"scroll-behavior\", \"smooth\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Align Utilities ---\n// scroll-snap-align documentation\nstaticUtility(\"snap-start\", [[\"scroll-snap-align\", \"start\"]], { category: 'interactivity' });\nstaticUtility(\"snap-end\", [[\"scroll-snap-align\", \"end\"]], { category: 'interactivity' });\nstaticUtility(\"snap-center\", [[\"scroll-snap-align\", \"center\"]], { category: 'interactivity' });\nstaticUtility(\"snap-align-none\", [[\"scroll-snap-align\", \"none\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Stop Utilities ---\n// scroll-snap-stop documentation\nstaticUtility(\"snap-normal\", [[\"scroll-snap-stop\", \"normal\"]], { category: 'interactivity' });\nstaticUtility(\"snap-always\", [[\"scroll-snap-stop\", \"always\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Type Utilities ---\n// scroll-snap-type documentation\nstaticUtility(\"snap-none\", [[\"scroll-snap-type\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"snap-x\", [[\"scroll-snap-type\", \"x var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-y\", [[\"scroll-snap-type\", \"y var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-both\", [[\"scroll-snap-type\", \"both var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-mandatory\", [[\"--baro-scroll-snap-strictness\", \"mandatory\"]], { category: 'interactivity' });\nstaticUtility(\"snap-proximity\", [[\"--baro-scroll-snap-strictness\", \"proximity\"]], { category: 'interactivity' });\n\n\n[\n [\"mt\", \"scroll-margin-top\"],\n [\"mr\", \"scroll-margin-right\"],\n [\"mb\", \"scroll-margin-bottom\"],\n [\"ml\", \"scroll-margin-left\"],\n [\"mx\", \"scroll-margin-inline\"],\n [\"my\", \"scroll-margin-block\"],\n [\"ms\", \"scroll-margin-inline-start\"],\n [\"me\", \"scroll-margin-inline-end\"],\n [\"m\", \"scroll-margin\"],\n].forEach(([name, prop]) => {\n functionalUtility({\n name: `scroll-${name}`,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token, _extra) => {\n if (parseNumber(value) || token.negative) {\n return [decl(prop, `calc(var(--spacing) * ${value})`)];\n }\n return [decl(prop, value)];\n },\n handleCustomProperty: (value) => [decl(prop, `var(${value})`)],\n description: `${name} utility (static, arbitrary, custom property supported)`,\n category: \"interactivity\",\n });\n});\n\n\n\n\n\n[\n [\"pt\", \"scroll-padding-top\"],\n [\"pr\", \"scroll-padding-right\"],\n [\"pb\", \"scroll-padding-bottom\"],\n [\"pl\", \"scroll-padding-left\"],\n [\"px\", \"scroll-padding-inline\"],\n [\"py\", \"scroll-padding-block\"],\n [\"ps\", \"scroll-padding-inline-start\"],\n [\"pe\", \"scroll-padding-inline-end\"],\n [\"p\", \"scroll-padding\"],\n].forEach(([name, prop]) => {\n functionalUtility({\n name: `scroll-${name}`,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token, _extra) => {\n if (parseNumber(value) || token.negative) {\n return [decl(prop, `calc(var(--spacing) * ${value})`)];\n }\n return [decl(prop, value)];\n },\n handleCustomProperty: (value) => [decl(prop, `var(${value})`)],\n description: `scroll-${name} utility (static, arbitrary, custom property supported)`,\n category: \"interactivity\",\n });\n});\n\n// --- Touch Action Utilities ---\n// touch-action documentation\nstaticUtility(\"touch-auto\", [[\"touch-action\", \"auto\"]], { category: 'interactivity' });\nstaticUtility(\"touch-none\", [[\"touch-action\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-x\", [[\"touch-action\", \"pan-x\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-left\", [[\"touch-action\", \"pan-left\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-right\", [[\"touch-action\", \"pan-right\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-y\", [[\"touch-action\", \"pan-y\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-up\", [[\"touch-action\", \"pan-up\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-down\", [[\"touch-action\", \"pan-down\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pinch-zoom\", [[\"touch-action\", \"pinch-zoom\"]], { category: 'interactivity' });\nstaticUtility(\"touch-manipulation\", [[\"touch-action\", \"manipulation\"]], { category: 'interactivity' });\n\n// --- User Select Utilities ---\n// user-select documentation\nstaticUtility(\"select-none\", [[\"user-select\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"select-text\", [[\"user-select\", \"text\"]], { category: 'interactivity' });\nstaticUtility(\"select-all\", [[\"user-select\", \"all\"]], { category: 'interactivity' });\nstaticUtility(\"select-auto\", [[\"user-select\", \"auto\"]], { category: 'interactivity' });\n\n// --- Will Change Utilities ---\n// will-change documentation\nstaticUtility(\"will-change-auto\", [[\"will-change\", \"auto\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-scroll\", [[\"will-change\", \"scroll-position\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-contents\", [[\"will-change\", \"contents\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-transform\", [[\"will-change\", \"transform\"]], { category: 'interactivity' });\n\n// Functional: will-change-[value], will-change-(--custom-property)\nfunctionalUtility({\n name: \"will-change\",\n prop: \"will-change\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"will-change utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Transition Property Utilities ---\n// transition-property documentation\n\n// Default variable\nconst defaultTiming = \"var(--default-transition-timing-function)\"; // cubic-bezier(0.4, 0, 0.2, 1)\nconst defaultDuration = \"var(--default-transition-duration)\"; // 150ms\n\n// transition\nstaticUtility(\"transition\", [\n [\n \"transition-property\",\n \"color, background-color, border-color, text-decoration-color, fill, stroke, --baro-gradient-from, --baro-gradient-via, --baro-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter\",\n ],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-all\nstaticUtility(\"transition-all\", [\n [\"transition-property\", \"all\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-colors\nstaticUtility(\"transition-colors\", [\n [\n \"transition-property\",\n \"color, background-color, border-color, text-decoration-color, fill, stroke, --baro-gradient-from, --baro-gradient-via, --baro-gradient-to\",\n ],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-opacity\nstaticUtility(\"transition-opacity\", [\n [\"transition-property\", \"opacity\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-shadow\nstaticUtility(\"transition-shadow\", [\n [\"transition-property\", \"box-shadow\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-transform\nstaticUtility(\"transition-transform\", [\n [\"transition-property\", \"transform, translate, scale, rotate\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' } );\n\n\n// --- Transition Behavior ---\nstaticUtility(\"transition-normal\", [[\"transition-behavior\", \"normal\"]], { category: 'transitions' });\nstaticUtility(\"transition-discrete\", [[\"transition-behavior\", \"allow-discrete\"]], { category: 'transitions' }); \n\n// transition-none\nstaticUtility(\"transition-none\", [[\"transition-property\", \"none\"]], { category: 'transitions' });\n\n// transition-[value] (arbitrary value)\nfunctionalUtility({\n name: \"transition\",\n prop: \"transition-property\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n return [\n decl(\"transition-property\", value),\n decl(\"transition-timing-function\", defaultTiming),\n decl(\"transition-duration\", defaultDuration),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"transition-property\", `var(${value})`),\n decl(\"transition-timing-function\", defaultTiming),\n decl(\"transition-duration\", defaultDuration),\n ],\n description:\n \"transition-property utility (static, arbitrary value, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Duration ---\nstaticUtility(\"duration-initial\", [[\"transition-duration\", \"initial\"]], { category: 'transitions' });\n\nfunctionalUtility({\n name: \"duration\",\n prop: \"transition-duration\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"transition-duration\", `${value}ms`)];\n }\n return [decl(\"transition-duration\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-duration\", `var(${value})`)],\n description: \"transition-duration utility (static, number, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Timing Function ---\nstaticUtility(\"ease-linear\", [[\"transition-timing-function\", \"linear\"]], { category: 'transitions' });\nstaticUtility(\"ease-in\", [[\"transition-timing-function\", \"var(--ease-in)\"]], { category: 'transitions' });\nstaticUtility(\"ease-out\", [[\"transition-timing-function\", \"var(--ease-out)\"]], { category: 'transitions' });\nstaticUtility(\"ease-in-out\", [[\"transition-timing-function\", \"var(--ease-in-out)\"]], { category: 'transitions' });\nstaticUtility(\"ease-initial\", [[\"transition-timing-function\", \"initial\"]], { category: 'transitions' });\n\nfunctionalUtility({\n name: \"ease\",\n prop: \"transition-timing-function\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n return [decl(\"transition-timing-function\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-timing-function\", `var(${value})`)],\n description: \"transition-timing-function utility (static, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Delay ---\nfunctionalUtility({\n name: \"delay\",\n prop: \"transition-delay\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"transition-delay\", `${value}ms`)];\n }\n return [decl(\"transition-delay\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-delay\", `var(${value})`)],\n description: \"transition-delay utility (number, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Animation ---\nstaticUtility(\"animate-spin\", [\n [\"animation\", \"var(--animate-spin)\"],\n], { category: 'transitions' });\nstaticUtility(\"animate-ping\", [[\"animation\", \"var(--animate-ping)\"]], { category: 'transitions' });\nstaticUtility(\"animate-pulse\", [[\"animation\", \"var(--animate-pulse)\"]], { category: 'transitions' });\nstaticUtility(\"animate-bounce\", [[\"animation\", \"var(--animate-bounce)\"]], { category: 'transitions' });\nstaticUtility(\"animate-none\", [[\"animation\", \"none\"]], { category: 'transitions' } );\n\nfunctionalUtility({\n name: \"animate\",\n prop: \"animation\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.customProperty) {\n return [decl(\"animation\", `var(${value})`)];\n }\n return [decl(\"animation\", value)];\n },\n handleCustomProperty: (value) => [decl(\"animation\", `var(${value})`)],\n description: \"animation utility (static, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n","import { staticUtility } from \"../core/registry\";\nimport { functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Table Layout Utilities (border-collapse, border-separate) ---\nstaticUtility(\"border-collapse\", [[\"border-collapse\", \"collapse\"]], { category: 'table' });\nstaticUtility(\"border-separate\", [[\"border-collapse\", \"separate\"]], { category: 'table' });\n\n// --- Table Layout ---\nstaticUtility(\"table-auto\", [[\"table-layout\", \"auto\"]], { category: 'table' });\nstaticUtility(\"table-fixed\", [[\"table-layout\", \"fixed\"]], { category: 'table' });\n\n// --- Border Spacing ---\nfunctionalUtility({\n name: \"border-spacing-x\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `calc(var(--spacing) * ${value}) var(--baro-border-spacing-y)`)]\n }\n return [decl(\"border-spacing\", `${value} var(--baro-border-spacing-y)`)]\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(${value}) var(--baro-border-spacing-y)`)],\n description: \"border-spacing-x utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n});\n\nfunctionalUtility({\n name: \"border-spacing-y\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `var(--baro-border-spacing-x) calc(var(--spacing) * ${value})`)]\n }\n return [decl(\"border-spacing\", `var(--baro-border-spacing-x) ${value}`)]\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(--baro-border-spacing-x) var(${value})`)],\n description: \"border-spacing-y utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n}); \n\nfunctionalUtility({\n name: \"border-spacing\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `calc(var(--spacing) * ${value})`)];\n }\n return [decl(\"border-spacing\", value)];\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(${value})`)],\n description: \"border-spacing utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n });\n\n// --- Caption Side ---\nstaticUtility(\"caption-top\", [[\"caption-side\", \"top\"]], { category: 'table' });\nstaticUtility(\"caption-bottom\", [[\"caption-side\", \"bottom\"]], { category: 'table' });","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\nimport { parseColor } from \"../core/utils\";\n\n// --- Filter ---\nstaticUtility(\"filter-none\", [[\"filter\", \"none\"]], { category: 'effects' });\n\nfunctionalUtility({\n name: \"filter\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\nconst filters = () => {\n return decl(\"filter\", \"var(--baro-blur, ) var(--baro-brightness, ) var(--baro-contrast, ) var(--baro-grayscale, ) var(--baro-hue-rotate, ) var(--baro-invert, ) var(--baro-saturate, ) var(--baro-sepia, ) var(--baro-drop-shadow, )\");\n}\n\n// --- Blur ---\n[\n [\"blur-xs\", \"var(--blur-xs)\"],\n [\"blur-sm\", \"var(--blur-sm)\"],\n [\"blur-md\", \"var(--blur-md)\"],\n [\"blur-lg\", \"var(--blur-lg)\"],\n [\"blur-xl\", \"var(--blur-xl)\"],\n [\"blur-2xl\", \"var(--blur-2xl)\"],\n [\"blur-3xl\", \"var(--blur-3xl)\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [\n decl(\"--baro-blur\", `blur(${value})`),\n filters()\n ], { category: 'effects' });\n});\nstaticUtility(\"blur-none\", [decl(\"--baro-blur\", \"\"), filters()], { category: 'effects' });\n\nfunctionalUtility({\n name: \"blur\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.customProperty) return [decl(\"--baro-blur\", `blur(var(${value}))`), filters()];\n return [decl(\"--baro-blur\", `blur(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-blur\", `blur(var(${value}))`), filters()],\n description: \"blur filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Brightness ---\n\nfunctionalUtility({\n name: \"brightness\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.arbitrary) {\n return [decl(\"--baro-brightness\", `brightness(${value})`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-brightness\", `brightness(${value}%)`), filters()];\n }\n if (token.customProperty)\n return [decl(\"--baro-brightness\", `brightness(var(${value}))`), filters()];\n return [decl(\"--baro-brightness\", `brightness(${value})`), filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-brightness\", `brightness(var(${value}))`),\n filters()\n ],\n description:\n \"brightness filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Contrast ---\nfunctionalUtility({\n name: \"contrast\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [decl(\"--baro-contrast\", `contrast(${value})`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-contrast\", `contrast(${value}%)`), filters()];\n }\n if (token.customProperty)\n return [decl(\"--baro-contrast\", `contrast(var(${value}))`), filters()];\n return [decl(\"--baro-contrast\", `contrast(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-contrast\", `contrast(var(${value}))`), filters()],\n description:\n \"contrast filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Drop Shadow ---\n[\n [\"drop-shadow-xs\", \"xs\", '0 1px 1px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-sm\", \"sm\", '0 1px 2px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-md\", \"md\", '0 3px 3px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-lg\", \"lg\", '0 4px 4px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-xl\", \"xl\", '0 9px 7px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-2xl\", \"2xl\", '0 25px 25px var(--baro-drop-shadow-color, #0000001a)'],\n].forEach(([name, size, sizeValue]) => {\n staticUtility(name as string, [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(${sizeValue})`),\n decl(\"--baro-drop-shadow\", `var(--drop-shadow-${size})`),\n filters()\n ]);\n});\nstaticUtility(\"drop-shadow-none\", [decl(\"--baro-drop-shadow\", \"drop-shadow(0 0 #0000)\"), filters()]);\n\n// --- Drop Shadow Color ---\n// drop-shadow-inherit, drop-shadow-current, drop-shadow-transparent\n[\"inherit\", \"current\", \"transparent\"].forEach((name) => {\n staticUtility(`drop-shadow-${name}`, [\n decl(\"--baro-drop-shadow-color\", name === \"current\" ? \"currentColor\" : name),\n ]);\n});\n\n// drop-shadow-black, drop-shadow-white, drop-shadow-{color}-{shade}\n[\"black\", \"white\"].forEach((name) => {\n staticUtility(`drop-shadow-${name}`, [\n decl(\"--baro-drop-shadow-color\", `var(--color-${name})`),\n ]);\n});\n\n// drop-shadow-(color:--my-color)\nfunctionalUtility({\n name: \"drop-shadow\",\n themeKeys: ['colors'],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token, extra) => {\n if (extra?.realThemeValue) {\n return [decl(\"--baro-drop-shadow-color\", `var(--color-${extra.realThemeValue})`)];\n }\n\n if (parseColor(value)) {\n return [decl(\"--baro-drop-shadow-color\", value)];\n }\n\n return [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(${value})`),\n decl(\"--baro-drop-shadow\", `var(--baro-drop-shadow-size)`),\n ];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n return [\n decl(\"--baro-drop-shadow-color\", `var(${value.replace(\"color:\", \"\")})`),\n ];\n }\n\n return [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(var(${value}))`),\n decl(\"--baro-drop-shadow\", `var(--baro-drop-shadow-size)`),\n ];\n },\n description:\n \"drop-shadow filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Grayscale ---\nstaticUtility(\"grayscale\", [decl(\"--baro-grayscale\", \"grayscale(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"grayscale\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-grayscale\", `grayscale(${value}%)`), filters()];\n }\n return [decl(\"--baro-grayscale\", `grayscale(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-grayscale\", `grayscale(var(${value}))`), filters()],\n description: \"grayscale filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Hue Rotate ---\n\nfunctionalUtility({\n name: \"hue-rotate\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, _ctx, token) => {\n if (token.negative && parseNumber(token.value!)) {\n return [decl(\"--baro-hue-rotate\", `hue-rotate(calc(${token.value}deg * -1))`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-hue-rotate\", `hue-rotate(${value}deg)`), filters()];\n }\n if (token.customProperty) return [decl(\"--baro-hue-rotate\", `hue-rotate(var(${value}))`), filters()];\n return [decl(\"--baro-hue-rotate\", `hue-rotate(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-hue-rotate\", `hue-rotate(var(${value}))`), filters()],\n description: \"hue-rotate filter utility (static, negative, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Invert ---\nstaticUtility(\"invert\", [decl(\"--baro-invert\", \"invert(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"invert\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-invert\", `invert(${value}%)`), filters()];\n }\n\n return [decl(\"--baro-invert\", `invert(${value})`), filters()];\n },\n description: \"invert filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Saturate ---\nfunctionalUtility({\n name: \"saturate\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-saturate\", `saturate(${value}%)`), filters()];\n }\n return [decl(\"--baro-saturate\", `saturate(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-saturate\", `saturate(var(${value}))`), filters()],\n description: \"saturate filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Sepia ---\nstaticUtility(\"sepia\", [decl(\"--baro-sepia\", \"sepia(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"sepia\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-sepia\", `sepia(${value}%)`), filters()];\n }\n return [decl(\"--baro-sepia\", `sepia(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-sepia\", `sepia(var(${value}))`), filters()],\n description: \"sepia filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\nconst filters = () => {\n return [\n decl(\n \"-webkit-backdrop-filter\",\n \"var(--baro-backdrop-blur, ) var(--baro-backdrop-brightness, ) var(--baro-backdrop-contrast, ) var(--baro-backdrop-grayscale, ) var(--baro-backdrop-hue-rotate, ) var(--baro-backdrop-invert, ) var(--baro-backdrop-saturate, ) var(--baro-backdrop-sepia, )\"\n ),\n decl(\n \"backdrop-filter\",\n \"var(--baro-backdrop-blur, ) var(--baro-backdrop-brightness, ) var(--baro-backdrop-contrast, ) var(--baro-backdrop-grayscale, ) var(--baro-backdrop-hue-rotate, ) var(--baro-backdrop-invert, ) var(--baro-backdrop-saturate, ) var(--baro-backdrop-sepia, )\"\n ),\n ];\n};\n\n// --- Backdrop Filter ---\nstaticUtility(\n \"backdrop-filter\",\n [[\"backdrop-filter\", \"var(--baro-backdrop-filter)\"]],\n { category: \"effects\" }\n);\nstaticUtility(\"backdrop-filter-none\", [[\"backdrop-filter\", \"none\"]], {\n category: \"effects\",\n});\n\nfunctionalUtility({\n name: \"backdrop-filter\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Blur ---\n[\n [\"backdrop-blur-xs\", \"var(--blur-xs)\"],\n [\"backdrop-blur-sm\", \"var(--blur-sm)\"],\n [\"backdrop-blur-md\", \"var(--blur-md)\"],\n [\"backdrop-blur-lg\", \"var(--blur-lg)\"],\n [\"backdrop-blur-xl\", \"var(--blur-xl)\"],\n [\"backdrop-blur-2xl\", \"var(--blur-2xl)\"],\n [\"backdrop-blur-3xl\", \"var(--blur-3xl)\"],\n].forEach(([name, value]) => {\n staticUtility(\n name as string,\n [decl(\"--baro-backdrop-blur\", `blur(${value})`), ...filters()],\n { category: \"effects\" }\n );\n});\nstaticUtility(\n \"backdrop-blur-none\",\n [decl(\"--baro-backdrop-blur\", \"\"), ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-blur\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-blur\", `blur(var(${value}))`),\n ...filters(),\n ];\n return [decl(\"--baro-backdrop-blur\", `blur(${value})`), ...filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-blur\", `blur(var(${value}))`),\n ...filters(),\n ],\n description:\n \"blur filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Brightness ---\n\nfunctionalUtility({\n name: \"backdrop-brightness\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value})`),\n ...filters(),\n ];\n }\n\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value}%)`),\n ...filters(),\n ];\n }\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(var(${value}))`),\n ...filters(),\n ];\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-brightness\", `brightness(var(${value}))`),\n ...filters(),\n ],\n description:\n \"brightness filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Contrast ---\nfunctionalUtility({\n name: \"backdrop-contrast\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value})`),\n ...filters(),\n ];\n }\n\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value}%)`),\n ...filters(),\n ];\n }\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(var(${value}))`),\n ...filters(),\n ];\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-contrast\", `contrast(var(${value}))`),\n ...filters(),\n ],\n description:\n \"contrast filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Grayscale ---\nstaticUtility(\n \"backdrop-grayscale\",\n [[\"--baro-backdrop-grayscale\", \"grayscale(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-grayscale\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-grayscale\", `grayscale(${value}%)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-grayscale\", `grayscale(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-grayscale\", `grayscale(var(${value}))`),\n ...filters(),\n ],\n description:\n \"grayscale filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Hue Rotate ---\n\nfunctionalUtility({\n name: \"backdrop-hue-rotate\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, _ctx, token) => {\n if (token.negative && parseNumber(token.value!)) {\n return [\n decl(\n \"--baro-backdrop-hue-rotate\",\n `hue-rotate(calc(${token.value}deg * -1))`\n ),\n ...filters(),\n ];\n }\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(${value}deg)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(var(${value}))`),\n ...filters(),\n ],\n description:\n \"hue-rotate filter utility (static, negative, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Invert ---\nstaticUtility(\n \"backdrop-invert\",\n [[\"--baro-backdrop-invert\", \"invert(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-invert\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-invert\", `invert(${value}%)`),\n ...filters(),\n ];\n }\n\n return [decl(\"--baro-backdrop-invert\", `invert(${value})`), ...filters()];\n },\n description:\n \"invert filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Saturate ---\nfunctionalUtility({\n name: \"backdrop-saturate\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-saturate\", `saturate(${value}%)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-saturate\", `saturate(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-saturate\", `saturate(var(${value}))`),\n ...filters(),\n ],\n description:\n \"saturate filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Sepia ---\nstaticUtility(\n \"backdrop-sepia\",\n [[\"--baro-backdrop-sepia\", \"sepia(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-sepia\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-backdrop-sepia\", `sepia(${value}%)`), ...filters()];\n }\n return [decl(\"--baro-backdrop-sepia\", `sepia(${value})`), ...filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-sepia\", `sepia(var(${value}))`),\n ...filters(),\n ],\n description:\n \"sepia filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseColor, parseNumber } from \"../core/utils\";\n\n// --- Box Shadow ---\n// box-shadow documentation\n\n// Static shadow levels\n[\n [\"shadow-2xs\", \"var(--shadow-2xs)\"],\n [\"shadow-xs\", \"var(--shadow-xs)\"],\n [\"shadow-sm\", \"var(--shadow-sm)\"],\n [\"shadow\", \"var(--shadow-default)\"],\n [\"shadow-md\", \"var(--shadow-md)\"],\n [\"shadow-lg\", \"var(--shadow-lg)\"],\n [\"shadow-xl\", \"var(--shadow-xl)\"],\n [\"shadow-2xl\", \"var(--shadow-2xl)\"],\n [\"shadow-none\", \"0 0 #0000\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"box-shadow\", value as string]], { category: 'effects' });\n});\n\n// Static inset shadow levels\n[\n [\n \"inset-shadow-2xs\",\n \"inset 0 1px 2px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-xs\",\n \"inset 0 2px 4px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-sm\",\n \"inset 0 2px 4px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-md\",\n \"inset 0 4px 6px -1px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-lg\",\n \"inset 0 10px 15px -3px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-xl\",\n \"inset 0 20px 25px -5px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-2xl\",\n \"inset 0 25px 50px -12px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\"inset-shadow-none\", \"0 0 #0000\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [\n [\"--baro-inset-shadow\", value as string],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow), var(--baro-ring-shadow), var(--baro-shadow)\",\n ],\n ], { category: 'effects' });\n});\n\n// --- Box Shadow Color (with opacity, custom property, arbitrary) ---\n// shadow-red-500, shadow-red-500/50, shadow-[#bada55]/80, shadow-(color:--my-shadow), shadow-inherit, etc.\n\nfunction createShadowThemeColor(\n key: string,\n main: string,\n opacity: string | undefined,\n realThemeValue: string\n) {\n let fallbackColor = main;\n const colorVar = `var(--color-${realThemeValue})`;\n let colorValue = colorVar;\n if (opacity) {\n colorValue = `color-mix(in oklab, color-mix(in oklab, ${colorVar} ${opacity}%, transparent) var(--baro-shadow-alpha),transparent)`;\n if (parseColor(main)) {\n if (main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallbackColor = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallbackColor = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n }\n }\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(key, colorValue),\n ]),\n decl(key, fallbackColor),\n ];\n}\n\n// shadow-color utilities\nfunctionalUtility({\n name: \"shadow\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n\n // 1. Theme color (e.g. shadow-red-500/60)\n if (realThemeValue) {\n return createShadowThemeColor(\n \"--baro-shadow-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n\n // Custom property color: shadow-(color:--my-shadow)\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n if (opacity) {\n return [\n decl(\n \"--baro-shadow-color\",\n `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`\n ),\n ];\n }\n return [decl(\"--baro-shadow-color\", `var(${cp})`)];\n }\n\n // Arbitrary color: shadow-[#bada55] or shadow-[oklch(...)]\n if (token.arbitrary) {\n if (parseColor(main)) {\n if (opacity) {\n return [\n decl(\n \"--baro-shadow-color\",\n `color-mix(in oklab, ${main} ${opacity}%, transparent)`\n ),\n ];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n\n // Special cases\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\"--baro-shadow-color\", main === \"current\" ? \"currentColor\" : main),\n ];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"box-shadow\", `var(${value})`)],\n});\n\n// inset-shadow-color utilities\nfunctionalUtility({\n name: \"inset-shadow\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n\n // 1. Theme color (e.g. inset-shadow-red-500/60)\n if (realThemeValue) {\n return createShadowThemeColor(\n \"--baro-inset-shadow-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n\n // 2. Custom property color: inset-shadow-(color:--my-shadow)\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorValue = `var(${cp})`;\n if (opacity) {\n colorValue = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n }\n return [decl(\"--baro-inset-shadow-color\", colorValue)];\n }\n\n // 3. Arbitrary color: inset-shadow-[#bada55] or inset-shadow-[oklch(...)]\n if (token.arbitrary) {\n if (parseColor(main)) {\n let colorValue = main;\n if (opacity) {\n colorValue = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n }\n return [decl(\"--baro-inset-shadow-color\", colorValue)];\n }\n\n return [decl(\"box-shadow\", `inset ${main}`)];\n }\n\n // 4. Special cases\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\n \"--baro-inset-shadow-color\",\n main === \"current\" ? \"currentColor\" : main\n ),\n ];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"box-shadow\", `var(${value})`)],\n});\n\n// --- Ring ( multi-variable) ---\n// ring-width documentation\n\n// Static ring width utilities\n[\n [\"ring\", \"1px\"],\n [\"ring-0\", \"0px\"],\n [\"ring-1\", \"1px\"],\n [\"ring-2\", \"2px\"],\n [\"ring-4\", \"4px\"],\n [\"ring-8\", \"8px\"],\n].forEach(([name, px]) => {\n staticUtility(name as string, [\n [\"--baro-ring-inset\", \"\"],\n [\"--baro-ring-offset-width\", \"0px\"],\n [\"--baro-ring-offset-color\", \"#fff\"],\n [\"--baro-ring-color\", \"rgb(59 130 246 / 0.5)\"], // default blue-500/50\n [\n \"--baro-ring-shadow\",\n `var(--baro-ring-inset) 0 0 0 calc(${px} + var(--baro-ring-offset-width)) var(--baro-ring-color, currentcolor)`,\n ],\n [\"--baro-ring-offset-shadow\", `0 0 #0000`],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow), var(--baro-ring-shadow), var(--baro-shadow)\",\n ],\n ]);\n});\n\n// Inset ring width utilities\n[\n [\"inset-ring\", \"1px\"],\n [\"inset-ring-0\", \"0px\"],\n [\"inset-ring-1\", \"1px\"],\n [\"inset-ring-2\", \"2px\"],\n [\"inset-ring-4\", \"4px\"],\n [\"inset-ring-8\", \"8px\"],\n].forEach(([name, px]) => {\n staticUtility(name as string, [\n [\"--baro-ring-inset\", \"inset\"],\n [\"--baro-ring-offset-width\", \"0px\"],\n [\"--baro-ring-offset-color\", \"#fff\"],\n [\"--baro-inset-ring-color\", \"rgb(59 130 246 / 0.5)\"],\n [\n \"--baro-inset-ring-shadow\",\n `var(--baro-ring-inset) 0 0 0 calc(${px} + var(--baro-ring-offset-width)) var(--baro-inset-ring-color, currentcolor)`,\n ],\n [\"--baro-ring-offset-shadow\", `0 0 #0000`],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow), var(--baro-ring-shadow), var(--baro-shadow)\",\n ],\n ]);\n});\n\n// Ring inset\nstaticUtility(\"ring-inset\", [[\"--baro-ring-inset\", \"inset\"]], { category: 'effects' });\n\n// --- Ring color/opacity/arbitrary/custom property ( supports+fallback) ---\nfunction createRingColorDecls(\n key: string,\n main: string,\n opacity: string | undefined,\n realThemeValue: string\n) {\n const colorVar = `var(--color-${realThemeValue})`;\n let colorMix = colorVar;\n let fallback = colorVar;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${colorVar} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(key, colorMix),\n ]),\n decl(key, fallback),\n ];\n}\n\n// Ring color/opacity/arbitrary/custom property\nfunctionalUtility({\n name: \"ring\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n if (realThemeValue) {\n return createRingColorDecls(\n \"--baro-ring-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorMix = `var(${cp})`;\n let fallback = colorMix;\n if (opacity) {\n colorMix = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n fallback = colorMix;\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-ring-color\", colorMix),\n ]),\n decl(\"--baro-ring-color\", fallback),\n ];\n }\n if (token.arbitrary) {\n let colorMix = main;\n let fallback = main;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-ring-color\", colorMix),\n ]),\n decl(\"--baro-ring-color\", fallback),\n ];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\"--baro-ring-color\", main === \"current\" ? \"currentColor\" : main),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n const cp = value.replace(\"color:\", \"\");\n return [decl(\"--baro-ring-color\", `var(${cp})`)];\n }\n return [decl(\"--baro-ring-color\", `var(${value})`)];\n },\n});\n\n// Inset ring color/opacity/arbitrary/custom property ( supports+fallback)\nfunctionalUtility({\n name: \"inset-ring\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n if (realThemeValue) {\n return createRingColorDecls(\n \"--baro-inset-ring-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorMix = `var(${cp})`;\n let fallback = colorMix;\n if (opacity) {\n colorMix = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n fallback = colorMix;\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-inset-ring-color\", colorMix),\n ]),\n decl(\"--baro-inset-ring-color\", fallback),\n ];\n }\n if (token.arbitrary) {\n let colorMix = main;\n let fallback = main;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-inset-ring-color\", colorMix),\n ]),\n decl(\"--baro-inset-ring-color\", fallback),\n ];\n }\n\n return [decl(\"box-shadow\", `inset ${main}`)];\n }\n\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\n \"--baro-inset-ring-color\",\n main === \"current\" ? \"currentColor\" : main\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n const cp = value.replace(\"color:\", \"\");\n return [decl(\"--baro-inset-ring-color\", `var(${cp})`)];\n }\n return [decl(\"--baro-inset-ring-color\", `var(${value})`)];\n },\n});\n\n// --- Opacity ---\n\nfunctionalUtility({\n name: \"opacity\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n // opacity-100, opacity-75, etc.\n if (parseNumber(value)) {\n let num = Number(value);\n if (num > 1) num = num / 100;\n return [decl(\"opacity\", String(num))];\n }\n // opacity-[.67] → .67\n if (token.arbitrary) {\n return [decl(\"opacity\", value)];\n }\n return null;\n },\n handleCustomProperty: (value) => [decl(\"opacity\", `var(${value})`)],\n description: \"opacity utility (number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mix Blend Mode ---\n[\n [\"mix-blend-normal\", \"normal\"],\n [\"mix-blend-multiply\", \"multiply\"],\n [\"mix-blend-screen\", \"screen\"],\n [\"mix-blend-overlay\", \"overlay\"],\n [\"mix-blend-darken\", \"darken\"],\n [\"mix-blend-lighten\", \"lighten\"],\n [\"mix-blend-color-dodge\", \"color-dodge\"],\n [\"mix-blend-color-burn\", \"color-burn\"],\n [\"mix-blend-hard-light\", \"hard-light\"],\n [\"mix-blend-soft-light\", \"soft-light\"],\n [\"mix-blend-difference\", \"difference\"],\n [\"mix-blend-exclusion\", \"exclusion\"],\n [\"mix-blend-hue\", \"hue\"],\n [\"mix-blend-saturation\", \"saturation\"],\n [\"mix-blend-color\", \"color\"],\n [\"mix-blend-luminosity\", \"luminosity\"],\n [\"mix-blend-plus-darker\", \"plus-darker\"],\n [\"mix-blend-plus-lighter\", \"plus-lighter\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mix-blend-mode\", value as string]]);\n});\n\n// --- Background Blend Mode ---\n[\n [\"bg-blend-normal\", \"normal\"],\n [\"bg-blend-multiply\", \"multiply\"],\n [\"bg-blend-screen\", \"screen\"],\n [\"bg-blend-overlay\", \"overlay\"],\n [\"bg-blend-darken\", \"darken\"],\n [\"bg-blend-lighten\", \"lighten\"],\n [\"bg-blend-color-dodge\", \"color-dodge\"],\n [\"bg-blend-color-burn\", \"color-burn\"],\n [\"bg-blend-hard-light\", \"hard-light\"],\n [\"bg-blend-soft-light\", \"soft-light\"],\n [\"bg-blend-difference\", \"difference\"],\n [\"bg-blend-exclusion\", \"exclusion\"],\n [\"bg-blend-hue\", \"hue\"],\n [\"bg-blend-saturation\", \"saturation\"],\n [\"bg-blend-color\", \"color\"],\n [\"bg-blend-luminosity\", \"luminosity\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"background-blend-mode\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Clip ---\n[\n [\"mask-clip-border\", \"border-box\"],\n [\"mask-clip-padding\", \"padding-box\"],\n [\"mask-clip-content\", \"content-box\"],\n [\"mask-clip-fill\", \"fill-box\"],\n [\"mask-clip-stroke\", \"stroke-box\"],\n [\"mask-clip-view\", \"view-box\"],\n [\"mask-no-clip\", \"no-clip\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-clip\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Composite ---\n[\n [\"mask-add\", \"add\"],\n [\"mask-subtract\", \"subtract\"],\n [\"mask-intersect\", \"intersect\"],\n [\"mask-exclude\", \"exclude\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-composite\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Mode ---\n[\n [\"mask-alpha\", \"alpha\"],\n [\"mask-luminance\", \"luminance\"],\n [\"mask-match\", \"match-source\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-mode\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Origin ---\n[\n [\"mask-origin-border\", \"border-box\"],\n [\"mask-origin-padding\", \"padding-box\"],\n [\"mask-origin-content\", \"content-box\"],\n [\"mask-origin-fill\", \"fill-box\"],\n [\"mask-origin-stroke\", \"stroke-box\"],\n [\"mask-origin-view\", \"view-box\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-origin\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Position ---\n[\n [\"mask-top-left\", \"top left\"],\n [\"mask-top\", \"top\"],\n [\"mask-top-right\", \"top right\"],\n [\"mask-left\", \"left\"],\n [\"mask-center\", \"center\"],\n [\"mask-right\", \"right\"],\n [\"mask-bottom-left\", \"bottom left\"],\n [\"mask-bottom\", \"bottom\"],\n [\"mask-bottom-right\", \"bottom right\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-position\", value as string]], { category: 'effects' });\n});\nfunctionalUtility({\n name: \"mask-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.arbitrary) return [decl(\"mask-position\", value)];\n if (token.customProperty) return [decl(\"mask-position\", `var(${value})`)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"mask-position\", `var(${value})`)],\n description:\n \"mask-position utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mask Repeat ---\n[\n [\"mask-repeat\", \"repeat\"],\n [\"mask-no-repeat\", \"no-repeat\"],\n [\"mask-repeat-x\", \"repeat-x\"],\n [\"mask-repeat-y\", \"repeat-y\"],\n [\"mask-repeat-space\", \"space\"],\n [\"mask-repeat-round\", \"round\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-repeat\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Size ---\n[\n [\"mask-auto\", \"auto\"],\n [\"mask-cover\", \"cover\"],\n [\"mask-contain\", \"contain\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-size\", value as string]], { category: 'effects' });\n});\n\n\n// --- Mask Type ---\n[\n [\"mask-type-alpha\", \"alpha\"],\n [\"mask-type-luminance\", \"luminance\"],\n ].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-type\", value as string]], { category: 'effects' });\n });\n\n// mask-size-[value] (arbitrary) & mask-size-(--custom-property)\nfunctionalUtility({\n name: \"mask-size\",\n prop: \"mask-size\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"mask-size utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mask Image ---\nfunctionalUtility({\n name: \"mask\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (value === \"none\") return [decl(\"mask-image\", \"none\")];\n if (token.arbitrary) return [decl(\"mask-image\", value)];\n if (token.customProperty) return [decl(\"mask-image\", `var(${value})`)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"mask-image\", `var(${value})`)],\n description: \"mask-image utility (arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseNumber,\n parseFraction,\n} from \"../core/utils\";\n\n// --- Layout: Isolation ---\nstaticUtility(\"isolate\", [[\"isolation\", \"isolate\"]], { category: 'layout' });\nstaticUtility(\"isolation-auto\", [[\"isolation\", \"auto\"]], { category: 'layout' });\n\n// --- Layout: Z-Index ---\nstaticUtility(\"z-auto\", [[\"z-index\", \"auto\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"z\",\n prop: \"z-index\",\n themeKey: \"zIndex\",\n supportsNegative: true,\n supportsFraction: true,\n supportsArbitrary: true, // z-[999], z-[calc(var(--index)+1)] 등 지원\n supportsCustomProperty: true, // z-(--my-z) supported\n // but actual theme lookup is handled in ctx.theme\n handleBareValue: ({ value }) => {\n return parseNumber(value); // only allow integers\n },\n description: \"z-index utility\",\n category: \"layout\",\n});\n\n// --- Layout: Aspect Ratio ---\nstaticUtility(\"aspect-square\", [[\"aspect-ratio\", \"1 / 1\"]], { category: 'layout' });\nstaticUtility(\"aspect-video\", [[\"aspect-ratio\", \"var(--aspect-ratio-video)\"]], { category: 'layout' });\nstaticUtility(\"aspect-auto\", [[\"aspect-ratio\", \"auto\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"aspect\",\n prop: \"aspect-ratio\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n description:\n \"aspect-ratio utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Columns ---\nstaticUtility(\"columns-auto\", [[\"columns\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"columns-3xs\", [[\"columns\", \"var(--container-3xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-2xs\", [[\"columns\", \"var(--container-2xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-xs\", [[\"columns\", \"var(--container-xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-sm\", [[\"columns\", \"var(--container-sm)\"]], { category: 'layout' });\nstaticUtility(\"columns-md\", [[\"columns\", \"var(--container-md)\"]], { category: 'layout' });\nstaticUtility(\"columns-lg\", [[\"columns\", \"var(--container-lg)\"]], { category: 'layout' });\nstaticUtility(\"columns-xl\", [[\"columns\", \"var(--container-xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-2xl\", [[\"columns\", \"var(--container-2xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-3xl\", [[\"columns\", \"var(--container-3xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-4xl\", [[\"columns\", \"var(--container-4xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-5xl\", [[\"columns\", \"var(--container-5xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-6xl\", [[\"columns\", \"var(--container-6xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-7xl\", [[\"columns\", \"var(--container-7xl)\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"columns\",\n prop: \"columns\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => parseNumber(value),\n description:\n \"columns utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Break After ---\nstaticUtility(\"break-after-auto\", [[\"break-after\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-after-avoid\", [[\"break-after\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-after-all\", [[\"break-after\", \"all\"]], { category: 'layout' });\nstaticUtility(\"break-after-avoid-page\", [[\"break-after\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-after-page\", [[\"break-after\", \"page\"]], { category: 'layout' });\nstaticUtility(\"break-after-left\", [[\"break-after\", \"left\"]], { category: 'layout' });\nstaticUtility(\"break-after-right\", [[\"break-after\", \"right\"]], { category: 'layout' });\nstaticUtility(\"break-after-column\", [[\"break-after\", \"column\"]], { category: 'layout' });\n\n// --- Layout: Break Before ---\nstaticUtility(\"break-before-auto\", [[\"break-before\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-before-avoid\", [[\"break-before\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-before-all\", [[\"break-before\", \"all\"]], { category: 'layout' });\nstaticUtility(\"break-before-avoid-page\", [[\"break-before\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-before-page\", [[\"break-before\", \"page\"]], { category: 'layout' });\nstaticUtility(\"break-before-left\", [[\"break-before\", \"left\"]], { category: 'layout' });\nstaticUtility(\"break-before-right\", [[\"break-before\", \"right\"]], { category: 'layout' });\nstaticUtility(\"break-before-column\", [[\"break-before\", \"column\"]], { category: 'layout' });\n\n// --- Layout: Break Inside ---\nstaticUtility(\"break-inside-auto\", [[\"break-inside\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid\", [[\"break-inside\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid-page\", [[\"break-inside\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid-column\", [[\"break-inside\", \"avoid-column\"]], { category: 'layout' });\n\n// --- Layout: Box Decoration Break ---\nstaticUtility(\"box-decoration-slice\", [[\"box-decoration-break\", \"slice\"]], { category: 'layout' });\nstaticUtility(\"box-decoration-clone\", [[\"box-decoration-break\", \"clone\"]], { category: 'layout' });\n\n// --- Layout: Box Sizing ---\n staticUtility(\"box-border\", [[\"box-sizing\", \"border-box\"]], { category: 'layout' });\nstaticUtility(\"box-content\", [[\"box-sizing\", \"content-box\"]], { category: 'layout' });\n\n// --- Layout: Display ---\nstaticUtility(\"block\", [[\"display\", \"block\"]], { category: 'layout' });\nstaticUtility(\"inline\", [[\"display\", \"inline\"]], { category: 'layout' });\nstaticUtility(\"inline-block\", [[\"display\", \"inline-block\"]], { category: 'layout' });\nstaticUtility(\"flow-root\", [[\"display\", \"flow-root\"]], { category: 'layout' });\nstaticUtility(\"flex\", [[\"display\", \"flex\"]], { category: 'layout' });\nstaticUtility(\"inline-flex\", [[\"display\", \"inline-flex\"]], { category: 'layout' });\nstaticUtility(\"grid\", [[\"display\", \"grid\"]], { category: 'layout' });\nstaticUtility(\"inline-grid\", [[\"display\", \"inline-grid\"]], { category: 'layout' });\nstaticUtility(\"contents\", [[\"display\", \"contents\"]], { category: 'layout' });\nstaticUtility(\"table\", [[\"display\", \"table\"]], { category: 'layout' });\nstaticUtility(\"inline-table\", [[\"display\", \"inline-table\"]], { category: 'layout' });\nstaticUtility(\"table-caption\", [[\"display\", \"table-caption\"]], { category: 'layout' });\nstaticUtility(\"table-cell\", [[\"display\", \"table-cell\"]], { category: 'layout' });\nstaticUtility(\"table-column\", [[\"display\", \"table-column\"]], { category: 'layout' });\nstaticUtility(\"table-column-group\", [[\"display\", \"table-column-group\"]], { category: 'layout' });\nstaticUtility(\"table-footer-group\", [[\"display\", \"table-footer-group\"]], { category: 'layout' });\nstaticUtility(\"table-header-group\", [[\"display\", \"table-header-group\"]], { category: 'layout' });\nstaticUtility(\"table-row-group\", [[\"display\", \"table-row-group\"]], { category: 'layout' });\nstaticUtility(\"table-row\", [[\"display\", \"table-row\"]], { category: 'layout' });\nstaticUtility(\"list-item\", [[\"display\", \"list-item\"]], { category: 'layout' });\nstaticUtility(\"hidden\", [[\"display\", \"none\"]], { category: 'layout' });\nstaticUtility(\"sr-only\", [\n [\"position\", \"absolute\"],\n [\"width\", \"1px\"],\n [\"height\", \"1px\"],\n [\"margin\", \"-1px\"],\n [\"padding\", \"0\"],\n [\"overflow\", \"hidden\"],\n [\"clip\", \"rect(0, 0, 0, 0)\"],\n [\"white-space\", \"nowrap\"],\n [\"border-width\", \"0\"],\n], { category: 'layout' });\n\nstaticUtility(\"not-sr-only\", [\n [\"position\", \"static\"],\n [\"width\", \"auto\"],\n [\"height\", \"auto\"],\n [\"margin\", \"0\"],\n [\"padding\", \"0\"],\n [\"overflow\", \"visible\"],\n [\"clip\", \"auto\"],\n [\"white-space\", \"normal\"],\n], { category: 'layout' });\n\n// --- Layout: Float ---\nstaticUtility(\"float-right\", [[\"float\", \"right\"]], { category: 'layout' });\nstaticUtility(\"float-left\", [[\"float\", \"left\"]], { category: 'layout' });\nstaticUtility(\"float-start\", [[\"float\", \"inline-start\"]], { category: 'layout' });\nstaticUtility(\"float-end\", [[\"float\", \"inline-end\"]], { category: 'layout' });\nstaticUtility(\"float-none\", [[\"float\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Clear ---\nstaticUtility(\"clear-left\", [[\"clear\", \"left\"]], { category: 'layout' });\nstaticUtility(\"clear-right\", [[\"clear\", \"right\"]], { category: 'layout' });\nstaticUtility(\"clear-both\", [[\"clear\", \"both\"]], { category: 'layout' });\nstaticUtility(\"clear-start\", [[\"clear\", \"inline-start\"]], { category: 'layout' });\nstaticUtility(\"clear-end\", [[\"clear\", \"inline-end\"]], { category: 'layout' });\nstaticUtility(\"clear-none\", [[\"clear\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Object Fit ---\nstaticUtility(\"object-contain\", [[\"object-fit\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"object-cover\", [[\"object-fit\", \"cover\"]], { category: 'layout' });\nstaticUtility(\"object-fill\", [[\"object-fit\", \"fill\"]], { category: 'layout' });\nstaticUtility(\"object-none\", [[\"object-fit\", \"none\"]], { category: 'layout' });\nstaticUtility(\"object-scale-down\", [[\"object-fit\", \"scale-down\"]], { category: 'layout' });\n\n// --- Layout: Object Position ---\nstaticUtility(\"object-top-left\", [[\"object-position\", \"top left\"]], { category: 'layout' });\nstaticUtility(\"object-top\", [[\"object-position\", \"top\"]], { category: 'layout' });\nstaticUtility(\"object-top-right\", [[\"object-position\", \"top right\"]], { category: 'layout' });\nstaticUtility(\"object-left\", [[\"object-position\", \"left\"]], { category: 'layout' });\nstaticUtility(\"object-center\", [[\"object-position\", \"center\"]], { category: 'layout' });\nstaticUtility(\"object-right\", [[\"object-position\", \"right\"]], { category: 'layout' });\nstaticUtility(\"object-bottom-left\", [[\"object-position\", \"bottom left\"]], { category: 'layout' });\nstaticUtility(\"object-bottom\", [[\"object-position\", \"bottom\"]], { category: 'layout' });\nstaticUtility(\"object-bottom-right\", [[\"object-position\", \"bottom right\"]], { category: 'layout' });\n\nfunctionalUtility({\n name: \"object\",\n prop: \"object-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description:\n \"object-position utility (arbitrary value, custom property supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Overflow ---\n staticUtility(\"overflow-auto\", [[\"overflow\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-hidden\", [[\"overflow\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-clip\", [[\"overflow\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-visible\", [[\"overflow\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-scroll\", [[\"overflow\", \"scroll\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-auto\", [[\"overflow-x\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-auto\", [[\"overflow-y\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-hidden\", [[\"overflow-x\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-hidden\", [[\"overflow-y\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-clip\", [[\"overflow-x\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-clip\", [[\"overflow-y\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-visible\", [[\"overflow-x\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-visible\", [[\"overflow-y\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-scroll\", [[\"overflow-x\", \"scroll\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-scroll\", [[\"overflow-y\", \"scroll\"]], { category: 'layout' });\n\n// --- Layout: Overscroll Behavior ---\nstaticUtility(\"overscroll-auto\", [[\"overscroll-behavior\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-contain\", [[\"overscroll-behavior\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-none\", [[\"overscroll-behavior\", \"none\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-auto\", [[\"overscroll-behavior-x\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-contain\", [[\"overscroll-behavior-x\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-none\", [[\"overscroll-behavior-x\", \"none\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-auto\", [[\"overscroll-behavior-y\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-contain\", [[\"overscroll-behavior-y\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-none\", [[\"overscroll-behavior-y\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Position ---\nstaticUtility(\"static\", [[\"position\", \"static\"]], { category: 'layout' });\nstaticUtility(\"fixed\", [[\"position\", \"fixed\"]], { category: 'layout' });\nstaticUtility(\"absolute\", [[\"position\", \"absolute\"]], { category: 'layout' });\nstaticUtility(\"relative\", [[\"position\", \"relative\"]], { category: 'layout' });\nstaticUtility(\"sticky\", [[\"position\", \"sticky\"]], { category: 'layout' });\n\n// --- Layout: Inset/Top/Right/Bottom/Left ---\n[\n [\"inset-x\", \"inset-inline\"],\n [\"inset-y\", \"inset-block\"],\n [\"inset\", \"inset\"],\n [\"start\", \"inset-inline-start\"],\n [\"end\", \"inset-inline-end\"],\n [\"top\", \"top\"],\n [\"right\", \"right\"],\n [\"bottom\", \"bottom\"],\n [\"left\", \"left\"],\n].forEach(([name, prop]) => {\n // inset\n staticUtility(`${name}-auto`, [[prop, \"auto\"]], { category: 'layout' });\n staticUtility(`${name}-full`, [[prop, \"100%\"]], { category: 'layout' });\n staticUtility(`-${name}-full`, [[prop, \"-100%\"]], { category: 'layout' });\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'layout' });\n staticUtility(`-${name}-px`, [[prop, \"-1px\"]], { category: 'layout' });\n functionalUtility({\n name: name,\n prop: prop,\n supportsNegative: true,\n supportsFraction: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n const frac = parseFraction(value);\n if (frac) return frac;\n return null;\n },\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * -${value})`;\n }\n const frac = parseFraction(value);\n if (frac) return `-${frac}`;\n return null;\n },\n description: `${name} utility (spacing, fraction, px, full, auto, custom property, arbitrary, negative supported)`,\n category: \"layout\",\n });\n});\n\n// --- Layout: Visibility ---\nstaticUtility(\"visible\", [[\"visibility\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"invisible\", [[\"visibility\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"collapse\", [[\"visibility\", \"collapse\"]], { category: 'layout' });\n\n// --- Layout: Gap ---\nfunctionalUtility({\n name: \"gap-x\",\n prop: \"column-gap\",\n supportsArbitrary: true, // gap-x-[10vw]\n supportsCustomProperty: true, // gap-x-(--my-gap-x)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"column-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"column-gap\", `var(${value})`)],\n description: \"gap-x utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap-y\",\n prop: \"row-gap\",\n supportsArbitrary: true, // gap-y-[10vw]\n supportsCustomProperty: true, // gap-y-(--my-gap-y)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"row-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"row-gap\", `var(${value})`)],\n description: \"gap-y utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap\",\n prop: \"gap\",\n supportsArbitrary: true, // gap-[10vw]\n supportsCustomProperty: true, // gap-(--my-gap)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"gap\", `var(${value})`)],\n description: \"gap utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseFractionOrNumber,\n parseNumber,\n parseFraction,\n} from \"../core/utils\";\n\n\n// --- Flexbox & Grid: flex-basis ---\nstaticUtility(\"basis-full\", [[\"flex-basis\", \"100%\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-auto\", [[\"flex-basis\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-3xs\", [[\"flex-basis\", \"var(--container-3xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-2xs\", [[\"flex-basis\", \"var(--container-2xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-xs\", [[\"flex-basis\", \"var(--container-xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-sm\", [[\"flex-basis\", \"var(--container-sm)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-md\", [[\"flex-basis\", \"var(--container-md)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-lg\", [[\"flex-basis\", \"var(--container-lg)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-xl\", [[\"flex-basis\", \"var(--container-xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-2xl\", [[\"flex-basis\", \"var(--container-2xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-3xl\", [[\"flex-basis\", \"var(--container-3xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-4xl\", [[\"flex-basis\", \"var(--container-4xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-5xl\", [[\"flex-basis\", \"var(--container-5xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-6xl\", [[\"flex-basis\", \"var(--container-6xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-7xl\", [[\"flex-basis\", \"var(--container-7xl)\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"basis\",\n prop: \"flex-basis\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--container-${value}) * 1px)`;\n }\n const frac = parseFraction(value);\n if (frac) return frac;\n return null;\n },\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--container-${value}) * -1px)`;\n }\n const frac = parseFraction(value);\n if (frac) return `-${frac}`;\n return null;\n },\n description:\n \"flex-basis utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: flex-direction ---\nstaticUtility(\"flex-row\", [[\"flex-direction\", \"row\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-row-reverse\", [[\"flex-direction\", \"row-reverse\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-col\", [[\"flex-direction\", \"column\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-col-reverse\", [[\"flex-direction\", \"column-reverse\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: flex-wrap ---\nstaticUtility(\"flex-wrap\", [[\"flex-wrap\", \"wrap\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-wrap-reverse\", [[\"flex-wrap\", \"wrap-reverse\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-nowrap\", [[\"flex-wrap\", \"nowrap\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Flex ---\nstaticUtility(\"flex-auto\", [[\"flex\", \"1 1 auto\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-initial\", [[\"flex\", \"0 1 auto\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-none\", [[\"flex\", \"none\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"flex\",\n supportsArbitrary: true, // flex-[3_1_auto], flex-[2], flex-[0_0_100%], etc.\n supportsCustomProperty: true, // flex-(--my-flex)\n supportsFraction: true, // flex-1/2 → flex: 50%;\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return value;\n const frac = parseFraction(value);\n if (frac) return `calc(${frac})`;\n return null;\n },\n handle: (value) => [decl(\"flex\", value)],\n description:\n \"flex shorthand utility (number, fraction, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Flex Grow ---\nstaticUtility(\"grow\", [[\"flex-grow\", \"1\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grow\",\n prop: \"flex-grow\",\n supportsArbitrary: true, // grow-[25vw], grow-[2], grow-[var(--factor)], etc.\n supportsCustomProperty: true, // grow-(--my-grow)\n handleBareValue: ({ value }) => parseNumber(value),\n handle: (value) => [decl(\"flex-grow\", value)],\n description: \"flex-grow utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Flex Shrink ---\nstaticUtility(\"shrink\", [[\"flex-shrink\", \"1\"]], { category: 'flex-grid' });\nstaticUtility(\"shrink-0\", [[\"flex-shrink\", \"0\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"shrink\",\n prop: \"flex-shrink\",\n supportsArbitrary: true, // shrink-[2], shrink-[calc(100vw-var(--sidebar))], etc.\n supportsCustomProperty: true, // shrink-(--my-shrink)\n handleBareValue: ({ value }) => parseNumber(value),\n description: \"flex-shrink utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Order ---\nstaticUtility(\"order-first\", [[\"order\", \"calc(-infinity)\"]], { category: 'flex-grid' });\nstaticUtility(\"order-last\", [[\"order\", \"calc(infinity)\"]], { category: 'flex-grid' });\nstaticUtility(\"order-none\", [[\"order\", \"0\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"order\",\n prop: \"order\",\n supportsNegative: true, // -order-1 → order: calc(1 * -1)\n supportsArbitrary: true, // order-[min(var(--total-items),10)], etc.\n supportsCustomProperty: true, // order-(--my-order)\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"order utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Template Columns ---\nstaticUtility(\"grid-cols-none\", [[\"grid-template-columns\", \"none\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-cols-subgrid\", [[\"grid-template-columns\", \"subgrid\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grid-cols\",\n prop: \"grid-template-columns\",\n supportsArbitrary: true, // grid-cols-[200px_minmax(900px,_1fr)_100px], etc.\n supportsCustomProperty: true, // grid-cols-(--my-grid-cols)\n handleBareValue: ({ value }) =>\n parseFractionOrNumber(value, { repeat: true }),\n description:\n \"grid-template-columns utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Template Rows ---\nstaticUtility(\"grid-rows-none\", [[\"grid-template-rows\", \"none\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-rows-subgrid\", [[\"grid-template-rows\", \"subgrid\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grid-rows\",\n prop: \"grid-template-rows\",\n supportsArbitrary: true, // grid-rows-[200px_minmax(900px,_1fr)_100px], etc.\n supportsCustomProperty: true, // grid-rows-(--my-grid-rows)\n handleBareValue: ({ value }) =>\n parseFractionOrNumber(value, { repeat: true }),\n handle: (value) => {\n // grid-rows-[200px_minmax(900px,_1fr)_100px]\n // Just output as-is (spaces instead of underscores)\n if (typeof value === \"string\") {\n return [decl(\"grid-template-rows\", value.replace(/_/g, \" \"))];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\"grid-template-rows\", `var(${value})`),\n ],\n description:\n \"grid-template-rows utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Row ---\n// row-span utilities\nstaticUtility(\"row-span-full\", [[\"grid-row\", \"1 / -1\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-span\",\n prop: \"grid-row\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return `span ${value} / span ${value}`;\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\"grid-row\", `span var(${value}) / span var(${value})`),\n ],\n handle: (value) => {\n if (parseNumber(value))\n return [decl(\"grid-row\", `span ${value} / span ${value}`)];\n // arbitrary value: row-span-[5] → span 5 / span 5\n return null;\n },\n description:\n \"grid-row span utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-start utilities\nstaticUtility(\"row-start-auto\", [[\"grid-row-start\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-start\",\n prop: \"grid-row-start\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row-start\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row-start\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row-start\", value)];\n return null;\n },\n description:\n \"grid-row-start utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-end utilities\nstaticUtility(\"row-end-auto\", [[\"grid-row-end\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-end\",\n prop: \"grid-row-end\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row-end\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row-end\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row-end\", value)];\n return null;\n },\n description:\n \"grid-row-end utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-auto, row-<number>, -row-<number>, row-(<custom-property>), row-[value]\nstaticUtility(\"row-auto\", [[\"grid-row\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row\",\n prop: \"grid-row\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row\", value)];\n return null;\n },\n description:\n \"grid-row utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Auto Flow ---\n staticUtility(\"grid-flow-row\", [[\"grid-auto-flow\", \"row\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-col\", [[\"grid-auto-flow\", \"column\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-dense\", [[\"grid-auto-flow\", \"dense\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-row-dense\", [[\"grid-auto-flow\", \"row dense\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-col-dense\", [[\"grid-auto-flow\", \"column dense\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Grid Auto Columns ---\nstaticUtility(\"auto-cols-auto\", [[\"grid-auto-columns\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-min\", [[\"grid-auto-columns\", \"min-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-max\", [[\"grid-auto-columns\", \"max-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-fr\", [[\"grid-auto-columns\", \"minmax(0, 1fr)\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"auto-cols\",\n prop: \"grid-auto-columns\",\n supportsArbitrary: true, // auto-cols-[minmax(0,2fr)]\n supportsCustomProperty: true, // auto-cols-(--my-auto-cols)\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"grid-auto-columns\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-auto-columns\", `var(${value})`)],\n description:\n \"grid-auto-columns utility (static, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Auto Rows ---\nstaticUtility(\"auto-rows-auto\", [[\"grid-auto-rows\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-min\", [[\"grid-auto-rows\", \"min-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-max\", [[\"grid-auto-rows\", \"max-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-fr\", [[\"grid-auto-rows\", \"minmax(0, 1fr)\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"auto-rows\",\n prop: \"grid-auto-rows\",\n supportsArbitrary: true, // auto-rows-[minmax(0,2fr)]\n supportsCustomProperty: true, // auto-rows-(--my-auto-rows)\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"grid-auto-rows\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-auto-rows\", `var(${value})`)],\n description:\n \"grid-auto-rows utility (static, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Gap ---\nfunctionalUtility({\n name: \"gap-x\",\n prop: \"column-gap\",\n supportsArbitrary: true, // gap-x-[10vw]\n supportsCustomProperty: true, // gap-x-(--my-gap-x)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"column-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"column-gap\", `var(${value})`)],\n description: \"gap-x utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap-y\",\n prop: \"row-gap\",\n supportsArbitrary: true, // gap-y-[10vw]\n supportsCustomProperty: true, // gap-y-(--my-gap-y)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"row-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"row-gap\", `var(${value})`)],\n description: \"gap-y utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap\",\n prop: \"gap\",\n supportsArbitrary: true, // gap-[10vw]\n supportsCustomProperty: true, // gap-(--my-gap)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"gap\", `var(${value})`)],\n description: \"gap utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\n\n// --- Flexbox & Grid: Justify Content ---\nstaticUtility(\"justify-start\", [[\"justify-content\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-end\", [[\"justify-content\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-end-safe\", [[\"justify-content\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-center\", [[\"justify-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-center-safe\", [[\"justify-content\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-between\", [[\"justify-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-around\", [[\"justify-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-evenly\", [[\"justify-content\", \"space-evenly\"]], { category: 'flex-grid' });\n staticUtility(\"justify-stretch\", [[\"justify-content\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-baseline\", [[\"justify-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-normal\", [[\"justify-content\", \"normal\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Justify Items ---\nstaticUtility(\"justify-items-start\", [[\"justify-items\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-end\", [[\"justify-items\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-end-safe\", [[\"justify-items\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-center\", [[\"justify-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-center-safe\", [[\"justify-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-stretch\", [[\"justify-items\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-normal\", [[\"justify-items\", \"normal\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Justify Self ---\nstaticUtility(\"justify-self-auto\", [[\"justify-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-start\", [[\"justify-self\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-center\", [[\"justify-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-center-safe\", [[\"justify-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-end\", [[\"justify-self\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-end-safe\", [[\"justify-self\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-stretch\", [[\"justify-self\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Content ---\n staticUtility(\"content-normal\", [[\"align-content\", \"normal\"]], { category: 'flex-grid' });\nstaticUtility(\"content-center\", [[\"align-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"content-start\", [[\"align-content\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"content-end\", [[\"align-content\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"content-between\", [[\"align-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"content-around\", [[\"align-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"content-evenly\", [[\"align-content\", \"space-evenly\"]], { category: 'flex-grid' });\nstaticUtility(\"content-baseline\", [[\"align-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"content-stretch\", [[\"align-content\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Items ---\nstaticUtility(\"items-start\", [[\"align-items\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"items-end\", [[\"align-items\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"items-end-safe\", [[\"align-items\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"items-center\", [[\"align-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"items-center-safe\", [[\"align-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"items-baseline\", [[\"align-items\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"items-baseline-last\", [[\"align-items\", \"last baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"items-stretch\", [[\"align-items\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Self ---\nstaticUtility(\"self-auto\", [[\"align-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"self-start\", [[\"align-self\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"self-end\", [[\"align-self\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"self-end-safe\", [[\"align-self\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"self-center\", [[\"align-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"self-center-safe\", [[\"align-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"self-stretch\", [[\"align-self\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"self-baseline\", [[\"align-self\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"self-baseline-last\", [[\"align-self\", \"last baseline\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Place Content ---\nstaticUtility(\"place-content-center\", [[\"place-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-center-safe\", [[\"place-content\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-start\", [[\"place-content\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-end\", [[\"place-content\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-end-safe\", [[\"place-content\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-between\", [[\"place-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-around\", [[\"place-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-evenly\", [[\"place-content\", \"space-evenly\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-baseline\", [[\"place-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-stretch\", [[\"place-content\", \"stretch\"]], { category: 'flex-grid' } );\n\n// --- Flexbox & Grid: Place Items ---\nstaticUtility(\"place-items-start\", [[\"place-items\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-end\", [[\"place-items\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-end-safe\", [[\"place-items\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-center\", [[\"place-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-center-safe\", [[\"place-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-baseline\", [[\"place-items\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-stretch\", [[\"place-items\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Place Self ---\nstaticUtility(\"place-self-auto\", [[\"place-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-start\", [[\"place-self\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-end\", [[\"place-self\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-end-safe\", [[\"place-self\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-center\", [[\"place-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-center-safe\", [[\"place-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-stretch\", [[\"place-self\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Grid Column ---\n// col-span utilities\nstaticUtility(\"col-span-full\", [[\"grid-column\", \"1 / -1\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-span\",\n prop: \"grid-column\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return `span ${value} / span ${value}`;\n return null;\n },\n handleCustomProperty: (value, _ctx, _token) => {\n return [decl(\"grid-column\", `span var(${value}) / span var(${value})`)];\n },\n handle: (value, _ctx, _token) => {\n if (parseNumber(value))\n return [decl(\"grid-column\", `span ${value} / span ${value}`)];\n return null;\n },\n description:\n \"grid-column span utility (number, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-start utilities\nstaticUtility(\"col-start-auto\", [[\"grid-column-start\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-start\",\n prop: \"grid-column-start\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column-start utility (number, negative, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-end utilities\nstaticUtility(\"col-end-auto\", [[\"grid-column-end\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-end\",\n prop: \"grid-column-end\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column-end utility (number, negative, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-auto, col-<number>, -col-<number>, col-(<custom-property>), col-[value]\nstaticUtility(\"col-auto\", [[\"grid-column\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col\",\n prop: \"grid-column\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl, rule } from \"../core/ast\";\n\n// Padding utilities (p-*, px-*, py-*, ps-*, pe-*, pt-*, pr-*, pb-*, pl-*)\n[\n [\"px\", \"padding-inline\"],\n [\"py\", \"padding-block\"],\n [\"ps\", \"padding-inline-start\"],\n [\"pe\", \"padding-inline-end\"],\n [\"pt\", \"padding-top\"],\n [\"pr\", \"padding-right\"],\n [\"pb\", \"padding-bottom\"],\n [\"pl\", \"padding-left\"],\n [\"p\", \"padding\"],\n].forEach(([name, prop]) => {\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'spacing' });\n functionalUtility({\n name,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n description: `${name} utility (number, arbitrary, custom property supported)`,\n category: \"spacing\",\n });\n});\n\n// Margin utilities (m-*, mx-*, my-*, ms-*, me-*, mt-*, mr-*, mb-*, ml-*)\n[\n [\"mx\", \"margin-inline\"],\n [\"my\", \"margin-block\"],\n [\"ms\", \"margin-inline-start\"],\n [\"me\", \"margin-inline-end\"],\n [\"mt\", \"margin-top\"],\n [\"mr\", \"margin-right\"],\n [\"mb\", \"margin-bottom\"],\n [\"ml\", \"margin-left\"],\n [\"m\", \"margin\"],\n].forEach(([name, prop]) => {\n staticUtility(`${name}-auto`, [[prop, \"auto\"]], { category: 'spacing' });\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'spacing' });\n staticUtility(`-${name}-px`, [[prop, \"-1px\"]], { category: 'spacing' });\n functionalUtility({\n name,\n prop,\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n description: `${name} margin utility (number, negative, arbitrary, custom property, auto, px supported)`,\n category: \"spacing\",\n });\n});\n\n// --- Spacing: space-x, space-y, space-x-reverse, space-y-reverse ---\n// spacing utilities reference\n\n// space-x-*, -space-x-*, space-x-px, -space-x-px, space-x-[...], space-x-(...)\n\nstaticUtility(\"space-x-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-x-reverse\", \"0\"],\n [\n \"margin-inline-start\",\n \"calc(1px * calc(1 - var(--baro-space-x-reverse)))\",\n ],\n [\"margin-inline-end\", \"calc(1px * var(--baro-space-x-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"-space-x-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-x-reverse\", \"0\"],\n [\n \"margin-inline-start\",\n \"calc(-1px * calc(1 - var(--baro-space-x-reverse)))\",\n ],\n [\"margin-inline-end\", \"calc(-1px * var(--baro-space-x-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"space-x-reverse\", [\n [\"& > :not([hidden]) ~ :not([hidden])\", [[\"--baro-space-x-reverse\", \"1\"]]],\n], { category: 'spacing' });\n\nfunctionalUtility({\n name: \"space-x\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n handle: (value, ctx, token) => {\n let v = value;\n if (typeof v === \"number\" || /^-?\\d+(\\.\\d+)?$/.test(v)) {\n v = `calc(var(--spacing) * ${token.negative ? \"-\" : \"\"}${v})`;\n }\n return [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-x-reverse\", \"0\"),\n decl(\n \"margin-inline-start\",\n `calc(${v} * calc(1 - var(--baro-space-x-reverse)))`\n ),\n decl(\"margin-inline-end\", `calc(${v} * var(--baro-space-x-reverse))`),\n ]),\n ];\n },\n handleCustomProperty: (value) => [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-x-reverse\", \"0\"),\n decl(\n \"margin-inline-start\",\n `calc(var(${value}) * calc(1 - var(--baro-space-x-reverse)))`\n ),\n decl(\n \"margin-inline-end\",\n `calc(var(${value}) * var(--baro-space-x-reverse))`\n ),\n ]),\n ],\n description:\n \"space-x utility (number, negative, px, arbitrary, custom property, reverse supported)\",\n category: \"spacing\",\n});\n\n// space-y-*, -space-y-*, space-y-px, -space-y-px, space-y-[...], space-y-(...)\n\nstaticUtility(\"space-y-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-y-reverse\", \"0\"],\n [\"margin-block-start\", \"calc(1px * calc(1 - var(--baro-space-y-reverse)))\"],\n [\"margin-block-end\", \"calc(1px * var(--baro-space-y-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"-space-y-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-y-reverse\", \"0\"],\n [\n \"margin-block-start\",\n \"calc(-1px * calc(1 - var(--baro-space-y-reverse)))\",\n ],\n [\"margin-block-end\", \"calc(-1px * var(--baro-space-y-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"space-y-reverse\", [\n [\"& > :not([hidden]) ~ :not([hidden])\", [[\"--baro-space-y-reverse\", \"1\"]]],\n], { category: 'spacing' });\n\nfunctionalUtility({\n name: \"space-y\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n handle: (value, ctx, token) => {\n let v = value;\n if (typeof v === \"number\" || /^-?\\d+(\\.\\d+)?$/.test(v)) {\n v = `calc(var(--spacing) * ${token.negative ? \"-\" : \"\"}${v})`;\n }\n return [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-y-reverse\", \"0\"),\n decl(\n \"margin-block-start\",\n `calc(${v} * calc(1 - var(--baro-space-y-reverse)))`\n ),\n decl(\"margin-block-end\", `calc(${v} * var(--baro-space-y-reverse))`),\n ]),\n ];\n },\n handleCustomProperty: (value) => [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-y-reverse\", \"0\"),\n decl(\n \"margin-block-start\",\n `calc(var(${value}) * calc(1 - var(--baro-space-y-reverse)))`\n ),\n decl(\n \"margin-block-end\",\n `calc(var(${value}) * var(--baro-space-y-reverse))`\n ),\n ]),\n ],\n description:\n \"space-y utility (number, negative, px, arbitrary, custom property, reverse supported)\",\n category: \"spacing\",\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseFractionOrNumber,\n parseNumber,\n} from \"../core/utils\";\n\n// Import layout utilities\nimport \"./layout\";\nimport \"./flexbox-grid\";\nimport \"./spacing\";\n\n\n// --- Sizing: width (w-*) and size (size-*) ---\n// width documentation\n\n// w-* static values\n[\n ['w-auto', 'auto'],\n ['w-px', '1px'],\n ['w-full', '100%'],\n ['w-screen', '100vw'],\n ['w-dvw', '100dvw'],\n ['w-dvh', '100dvh'],\n ['w-lvw', '100lvw'],\n ['w-lvh', '100lvh'],\n ['w-svw', '100svw'],\n ['w-svh', '100svh'],\n ['w-min', 'min-content'],\n ['w-max', 'max-content'],\n ['w-fit', 'fit-content'],\n ['w-3xs', 'var(--container-3xs)'],\n ['w-2xs', 'var(--container-2xs)'],\n ['w-xs', 'var(--container-xs)'],\n ['w-sm', 'var(--container-sm)'],\n ['w-md', 'var(--container-md)'],\n ['w-lg', 'var(--container-lg)'],\n ['w-xl', 'var(--container-xl)'],\n ['w-2xl', 'var(--container-2xl)'],\n ['w-3xl', 'var(--container-3xl)'],\n ['w-4xl', 'var(--container-4xl)'],\n ['w-5xl', 'var(--container-5xl)'],\n ['w-6xl', 'var(--container-6xl)'],\n ['w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['width', value]]);\n});\n\n// w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'w',\n prop: 'width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n \n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'width utility (spacing, fraction, arbitrary, custom property, container scale, static supported)',\n category: 'sizing',\n});\n\n// size-* static values\n[\n ['size-auto', ['auto', 'auto']],\n ['size-px', ['1px', '1px']],\n ['size-full', ['100%', '100%']],\n ['size-dvw', ['100dvw', '100dvw']],\n ['size-dvh', ['100dvh', '100dvh']],\n ['size-lvw', ['100lvw', '100lvw']],\n ['size-lvh', ['100lvh', '100lvh']],\n ['size-svw', ['100svw', '100svw']],\n ['size-svh', ['100svh', '100svh']],\n ['size-min', ['min-content', 'min-content']],\n ['size-max', ['max-content', 'max-content']],\n ['size-fit', ['fit-content', 'fit-content']],\n].forEach(([name, [w, h]]) => {\n staticUtility(name as string, [['width', w], ['height', h]]);\n});\n\n// size-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'size',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n handle: (value) => {\n // arbitrary, custom property, etc.\n return [\n decl('width', value),\n decl('height', value),\n ];\n },\n handleCustomProperty: (value) => [\n decl('width', `var(${value})`),\n decl('height', `var(${value})`),\n ],\n description: 'size utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: height (h-*) ---\n// height documentation\n\n// h-* static values\n[\n ['h-auto', 'auto'],\n ['h-px', '1px'],\n ['h-full', '100%'],\n ['h-screen', '100vh'],\n ['h-dvh', '100dvh'],\n ['h-lvh', '100lvh'],\n ['h-svh', '100svh'],\n ['h-min', 'min-content'],\n ['h-max', 'max-content'],\n ['h-fit', 'fit-content'],\n].forEach(([name, value]) => {\n staticUtility(name, [['height', value]]);\n});\n\n// h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'h',\n prop: 'height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: min-height (min-h-*) ---\n// min-height documentation\n\n// min-h-* static values\n[\n ['min-h-0', '0px'],\n ['min-h-px', '1px'],\n ['min-h-full', '100%'],\n ['min-h-screen', '100vh'],\n ['min-h-dvh', '100dvh'],\n ['min-h-lvh', '100lvh'],\n ['min-h-svh', '100svh'],\n ['min-h-min', 'min-content'],\n ['min-h-max', 'max-content'],\n ['min-h-fit', 'fit-content'],\n].forEach(([name, value]) => {\n staticUtility(name, [['min-height', value]], { category: 'sizing' });\n});\n\n// min-h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'min-h',\n prop: 'min-height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'min-height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: max-height (max-h-*) ---\n// max-height documentation\n\n// max-h-* static values\n[\n ['max-h-px', '1px'],\n ['max-h-full', '100%'],\n ['max-h-screen', '100vh'],\n ['max-h-dvh', '100dvh'],\n ['max-h-lvh', '100lvh'],\n ['max-h-svh', '100svh'],\n ['max-h-min', 'min-content'],\n ['max-h-max', 'max-content'],\n ['max-h-fit', 'fit-content'],\n ['max-h-none', 'none'],\n].forEach(([name, value]) => {\n staticUtility(name, [['max-height', value]], { category: 'sizing' });\n});\n\n// max-h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'max-h',\n prop: 'max-height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'max-height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: min-width (min-w-*) ---\n// min-width documentation\n\n// min-w-* static values\n[\n ['min-w-auto', 'auto'],\n ['min-w-px', '1px'],\n ['min-w-full', '100%'],\n ['min-w-screen', '100vw'],\n ['min-w-dvw', '100dvw'],\n ['min-w-dvh', '100dvh'],\n ['min-w-lvw', '100lvw'],\n ['min-w-lvh', '100lvh'],\n ['min-w-svw', '100svw'],\n ['min-w-svh', '100svh'],\n ['min-w-min', 'min-content'],\n ['min-w-max', 'max-content'],\n ['min-w-fit', 'fit-content'],\n ['min-w-3xs', 'var(--container-3xs)'],\n ['min-w-2xs', 'var(--container-2xs)'],\n ['min-w-xs', 'var(--container-xs)'],\n ['min-w-sm', 'var(--container-sm)'],\n ['min-w-md', 'var(--container-md)'],\n ['min-w-lg', 'var(--container-lg)'],\n ['min-w-xl', 'var(--container-xl)'],\n ['min-w-2xl', 'var(--container-2xl)'],\n ['min-w-3xl', 'var(--container-3xl)'],\n ['min-w-4xl', 'var(--container-4xl)'],\n ['min-w-5xl', 'var(--container-5xl)'],\n ['min-w-6xl', 'var(--container-6xl)'],\n ['min-w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['min-width', value]], { category: 'sizing' });\n});\n\n// min-w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'min-w',\n prop: 'min-width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'min-width utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n\n// --- Sizing: max-width (max-w-*) ---\n// max-width documentation\n\n// max-w-* static values\n[\n ['max-w-none', 'none'],\n ['max-w-xs', 'var(--container-xs)'],\n ['max-w-sm', 'var(--container-sm)'],\n ['max-w-md', 'var(--container-md)'],\n ['max-w-lg', 'var(--container-lg)'],\n ['max-w-xl', 'var(--container-xl)'],\n ['max-w-2xl', 'var(--container-2xl)'],\n ['max-w-3xl', 'var(--container-3xl)'],\n ['max-w-4xl', 'var(--container-4xl)'],\n ['max-w-5xl', 'var(--container-5xl)'],\n ['max-w-6xl', 'var(--container-6xl)'],\n ['max-w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['max-width', value]], { category: 'sizing' });\n});\n\n// max-w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'max-w',\n prop: 'max-width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'max-width utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport {\n parseNumber,\n parseLength,\n} from \"../core/utils\";\n\n// --- Typography: Font Family ---\nstaticUtility(\"font-sans\", [[\"font-family\", \"var(--font-family-sans)\"]], { category: 'typography' });\nstaticUtility(\"font-serif\", [[\"font-family\", \"var(--font-family-serif)\"]], { category: 'typography' });\nstaticUtility(\"font-mono\", [[\"font-family\", \"var(--font-family-mono)\"]], { category: 'typography' });\n\n// --- Typography: Font Size ---\nstaticUtility(\"text-xs\", [[\"font-size\", \"var(--text-xs)\"], [\"line-height\", \"var(--text-xs--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-sm\", [[\"font-size\", \"var(--text-sm)\"], [\"line-height\", \"var(--text-sm--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-base\", [[\"font-size\", \"var(--text-base)\"], [\"line-height\", \"var(--text-base--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-lg\", [[\"font-size\", \"var(--text-lg)\"], [\"line-height\", \"var(--text-lg--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-xl\", [[\"font-size\", \"var(--text-xl)\"], [\"line-height\", \"var(--text-xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-2xl\", [[\"font-size\", \"var(--text-2xl)\"], [\"line-height\", \"var(--text-2xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-3xl\", [[\"font-size\", \"var(--text-3xl)\"], [\"line-height\", \"var(--text-3xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-4xl\", [[\"font-size\", \"var(--text-4xl)\"], [\"line-height\", \"var(--text-4xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-5xl\", [[\"font-size\", \"var(--text-5xl)\"], [\"line-height\", \"var(--text-5xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-6xl\", [[\"font-size\", \"var(--text-6xl)\"], [\"line-height\", \"var(--text-6xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-7xl\", [[\"font-size\", \"var(--text-7xl)\"], [\"line-height\", \"var(--text-7xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-8xl\", [[\"font-size\", \"var(--text-8xl)\"], [\"line-height\", \"var(--text-8xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-9xl\", [[\"font-size\", \"var(--text-9xl)\"], [\"line-height\", \"var(--text-9xl--line-height)\"]], { category: 'typography' });\n\n\n// --- Typography: Font Weight ---\nstaticUtility(\"font-thin\", [[\"font-weight\", \"var(--font-weight-thin)\"]], { category: 'typography' });\nstaticUtility(\"font-extralight\", [[\"font-weight\", \"var(--font-weight-extralight)\"]], { category: 'typography' });\nstaticUtility(\"font-light\", [[\"font-weight\", \"var(--font-weight-light)\"]], { category: 'typography' });\nstaticUtility(\"font-normal\", [[\"font-weight\", \"var(--font-weight-normal)\"]], { category: 'typography' });\nstaticUtility(\"font-medium\", [[\"font-weight\", \"var(--font-weight-medium)\"]], { category: 'typography' });\nstaticUtility(\"font-semibold\", [[\"font-weight\", \"var(--font-weight-semibold)\"]], { category: 'typography' });\nstaticUtility(\"font-bold\", [[\"font-weight\", \"var(--font-weight-bold)\"]], { category: 'typography' });\nstaticUtility(\"font-extrabold\", [[\"font-weight\", \"var(--font-weight-extrabold)\"]], { category: 'typography' });\nstaticUtility(\"font-black\", [[\"font-weight\", \"var(--font-weight-black)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"font\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"font-weight\", value)];\n }\n return [decl(\"font-family\", value)];\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"font-name:\")) {\n return [decl(\"font-family\", `var(${value.replace(\"font-name:\", \"\")})`)];\n }\n return [decl(\"font-weight\", `var(${value})`)];\n },\n description: \"font-weight utility (theme, number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Font Style ---\nstaticUtility(\"italic\", [[\"font-style\", \"italic\"]], { category: 'typography' });\nstaticUtility(\"not-italic\", [[\"font-style\", \"normal\"]], { category: 'typography' });\n\n// --- Typography: Letter Spacing ---\nstaticUtility(\"tracking-tighter\", [[\"letter-spacing\", \"var(--letter-spacing-tighter)\"]], { category: 'typography' });\nstaticUtility(\"tracking-tight\", [[\"letter-spacing\", \"var(--letter-spacing-tight)\"]], { category: 'typography' });\nstaticUtility(\"tracking-normal\", [[\"letter-spacing\", \"var(--letter-spacing-normal)\"]], { category: 'typography' });\nstaticUtility(\"tracking-wide\", [[\"letter-spacing\", \"var(--letter-spacing-wide)\"]], { category: 'typography' });\nstaticUtility(\"tracking-wider\", [[\"letter-spacing\", \"var(--letter-spacing-wider)\"]], { category: 'typography' });\nstaticUtility(\"tracking-widest\", [[\"letter-spacing\", \"var(--letter-spacing-widest)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"tracking\",\n prop: \"letter-spacing\",\n themeKey: \"letterSpacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"letter-spacing utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Line Height ---\nstaticUtility(\"leading-none\", [[\"line-height\", \"var(--line-height-none)\"]], { category: 'typography' });\nstaticUtility(\"leading-tight\", [[\"line-height\", \"var(--line-height-tight)\"]], { category: 'typography' });\nstaticUtility(\"leading-snug\", [[\"line-height\", \"var(--line-height-snug)\"]], { category: 'typography' });\nstaticUtility(\"leading-normal\", [[\"line-height\", \"var(--line-height-normal)\"]], { category: 'typography' });\nstaticUtility(\"leading-relaxed\", [[\"line-height\", \"var(--line-height-relaxed)\"]], { category: 'typography' });\nstaticUtility(\"leading-loose\", [[\"line-height\", \"var(--line-height-loose)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"leading\",\n prop: \"line-height\",\n themeKey: \"lineHeight\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n description: \"line-height utility (theme, number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Align ---\nstaticUtility(\"text-left\", [[\"text-align\", \"left\"]], { category: 'typography' });\nstaticUtility(\"text-center\", [[\"text-align\", \"center\"]], { category: 'typography' });\nstaticUtility(\"text-right\", [[\"text-align\", \"right\"]], { category: 'typography' });\nstaticUtility(\"text-justify\", [[\"text-align\", \"justify\"]], { category: 'typography' });\nstaticUtility(\"text-start\", [[\"text-align\", \"start\"]], { category: 'typography' });\nstaticUtility(\"text-end\", [[\"text-align\", \"end\"]], { category: 'typography' });\n\n// --- Typography: Text Color ---\nstaticUtility(\"text-inherit\", [[\"color\", \"inherit\"]], { category: 'typography' });\nstaticUtility(\"text-current\", [[\"color\", \"currentColor\"]], { category: 'typography' });\nstaticUtility(\"text-transparent\", [[\"color\", \"transparent\"]], { category: 'typography' });\n\n// --- Typography: Text Overflow ---\nstaticUtility(\"truncate\", [[\"overflow\", \"hidden\"], [\"text-overflow\", \"ellipsis\"], [\"white-space\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"text-ellipsis\", [[\"text-overflow\", \"ellipsis\"]], { category: 'typography' });\nstaticUtility(\"text-clip\", [[\"text-overflow\", \"clip\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"text\", \n themeKey: \"colors\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n\n return [decl(\"color\", value)];\n }\n\n if (parseLength(value)) {\n return [decl(\"font-size\", value)];\n }\n return [decl(\"color\", value)];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n return [decl(\"color\", `var(${value.replace(\"color:\", \"\")})`)];\n }\n return [decl(\"font-size\", `var(${value})`)];\n },\n description: \"text color utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n\nfunctionalUtility({\n name: \"text\",\n themeKey: \"fontSize\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n // Check if it's a theme value first\n const themeValue = ctx.theme(\"fontSize\", value) as string | [string, string];\n if (themeValue) {\n if (Array.isArray(themeValue)) {\n // [fontSize, lineHeight] format\n return [\n decl(\"font-size\", themeValue[0]),\n decl(\"line-height\", themeValue[1])\n ];\n } else {\n return [decl(\"font-size\", themeValue as string)];\n }\n }\n\n // Handle arbitrary values\n if (token.arbitrary) {\n return [decl(\"font-size\", value)];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"font-size\", `var(${value})`)],\n description: \"font-size utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Transform ---\nstaticUtility(\"uppercase\", [[\"text-transform\", \"uppercase\"]], { category: 'typography' });\nstaticUtility(\"lowercase\", [[\"text-transform\", \"lowercase\"]], { category: 'typography' });\nstaticUtility(\"capitalize\", [[\"text-transform\", \"capitalize\"]], { category: 'typography' });\nstaticUtility(\"normal-case\", [[\"text-transform\", \"none\"]], { category: 'typography' });\n\n// --- Typography: Text Decoration ---\nstaticUtility(\"underline\", [[\"text-decoration-line\", \"underline\"]], { category: 'typography' });\nstaticUtility(\"overline\", [[\"text-decoration-line\", \"overline\"]], { category: 'typography' });\nstaticUtility(\"line-through\", [[\"text-decoration-line\", \"line-through\"]], { category: 'typography' });\nstaticUtility(\"no-underline\", [[\"text-decoration-line\", \"none\"]], { category: 'typography' });\n\n\n\n// --- Typography: Whitespace ---\nstaticUtility(\"whitespace-normal\", [[\"white-space\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"whitespace-nowrap\", [[\"white-space\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre\", [[\"white-space\", \"pre\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre-line\", [[\"white-space\", \"pre-line\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre-wrap\", [[\"white-space\", \"pre-wrap\"]], { category: 'typography' });\nstaticUtility(\"whitespace-break-spaces\", [[\"white-space\", \"break-spaces\"]], { category: 'typography' });\n\n// --- Typography: Word Break ---\nstaticUtility(\"break-normal\", [[\"overflow-wrap\", \"normal\"], [\"word-break\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"break-words\", [[\"overflow-wrap\", \"break-word\"]], { category: 'typography' });\nstaticUtility(\"break-all\", [[\"word-break\", \"break-all\"]], { category: 'typography' });\nstaticUtility(\"break-keep\", [[\"word-break\", \"keep-all\"]], { category: 'typography' });\n\n// --- Typography: Font Smoothing ---\nstaticUtility(\"antialiased\", [[\"-webkit-font-smoothing\", \"antialiased\"], [\"-moz-osx-font-smoothing\", \"grayscale\"]], { category: 'typography' });\nstaticUtility(\"subpixel-antialiased\", [[\"-webkit-font-smoothing\", \"auto\"], [\"-moz-osx-font-smoothing\", \"auto\"]], { category: 'typography' });\n\n// --- Typography: Font Stretch ---\nstaticUtility(\"font-stretch-normal\", [[\"font-stretch\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-ultra-condensed\", [[\"font-stretch\", \"ultra-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-extra-condensed\", [[\"font-stretch\", \"extra-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-condensed\", [[\"font-stretch\", \"condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-semi-condensed\", [[\"font-stretch\", \"semi-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-semi-expanded\", [[\"font-stretch\", \"semi-expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-expanded\", [[\"font-stretch\", \"expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-extra-expanded\", [[\"font-stretch\", \"extra-expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-ultra-expanded\", [[\"font-stretch\", \"ultra-expanded\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"font-stretch\",\n prop: \"font-stretch\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"font-stretch utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Font Variant Numeric ---\nstaticUtility(\"normal-nums\", [[\"font-variant-numeric\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"ordinal\", [[\"font-variant-numeric\", \"ordinal\"]], { category: 'typography' });\nstaticUtility(\"slashed-zero\", [[\"font-variant-numeric\", \"slashed-zero\"]], { category: 'typography' });\nstaticUtility(\"lining-nums\", [[\"font-variant-numeric\", \"lining-nums\"]], { category: 'typography' });\nstaticUtility(\"oldstyle-nums\", [[\"font-variant-numeric\", \"oldstyle-nums\"]], { category: 'typography' });\nstaticUtility(\"proportional-nums\", [[\"font-variant-numeric\", \"proportional-nums\"]], { category: 'typography' });\nstaticUtility(\"tabular-nums\", [[\"font-variant-numeric\", \"tabular-nums\"]], { category: 'typography' });\nstaticUtility(\"diagonal-fractions\", [[\"font-variant-numeric\", \"diagonal-fractions\"]], { category: 'typography' });\nstaticUtility(\"stacked-fractions\", [[\"font-variant-numeric\", \"stacked-fractions\"]], { category: 'typography' });\n\n// --- Typography: Line Clamp ---\nstaticUtility(\"line-clamp-none\", [[\"-webkit-line-clamp\", \"none\"]], { category: 'typography' });\nfunctionalUtility({\n name: \"line-clamp\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handle: (value) => [\n decl(\"overflow\", \"hidden\"),\n decl(\"display\", \"-webkit-box\"),\n decl(\"-webkit-box-orient\", \"vertical\"),\n decl(\"-webkit-line-clamp\", value)\n ],\n handleCustomProperty: (value) => [\n decl(\"overflow\", \"hidden\"),\n decl(\"display\", \"-webkit-box\"),\n decl(\"-webkit-box-orient\", \"vertical\"),\n decl(\"-webkit-line-clamp\", `var(${value})`)\n ],\n description: \"line-clamp utility (number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: List Style Type ---\nstaticUtility(\"list-none\", [[\"list-style-type\", \"none\"]], { category: 'typography' });\nstaticUtility(\"list-disc\", [[\"list-style-type\", \"disc\"]], { category: 'typography' });\nstaticUtility(\"list-decimal\", [[\"list-style-type\", \"decimal\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"list\",\n prop: \"list-style-type\",\n themeKey: \"listStyleType\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"list-style-type utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: List Style Position ---\nstaticUtility(\"list-inside\", [[\"list-style-position\", \"inside\"]], { category: 'typography' });\nstaticUtility(\"list-outside\", [[\"list-style-position\", \"outside\"]], { category: 'typography' });\n\n// --- Typography: List Style Image ---\nstaticUtility(\"list-image-none\", [[\"list-style-image\", \"none\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"list-image\",\n prop: \"list-style-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"list-style-image\", `url(${value})`)],\n handleCustomProperty: (value) => [decl(\"list-style-image\", `var(${value})`)],\n description: \"list-style-image utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Decoration Color ---\nfunctionalUtility({\n name: \"decoration\",\n themeKey: \"colors\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"text-decoration-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"text-decoration-color\", value),\n ];\n }\n return [decl(\"text-decoration-color\", value)];\n }\n return [decl(\"text-decoration-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"text-decoration-color\", `var(${value})`)],\n description: \"text-decoration-color utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Decoration Style ---\n staticUtility(\"decoration-solid\", [[\"text-decoration-style\", \"solid\"]], { category: 'typography' });\nstaticUtility(\"decoration-double\", [[\"text-decoration-style\", \"double\"]], { category: 'typography' });\nstaticUtility(\"decoration-dotted\", [[\"text-decoration-style\", \"dotted\"]], { category: 'typography' });\nstaticUtility(\"decoration-dashed\", [[\"text-decoration-style\", \"dashed\"]], { category: 'typography' });\nstaticUtility(\"decoration-wavy\", [[\"text-decoration-style\", \"wavy\"]], { category: 'typography' });\n\n// --- Typography: Text Decoration Thickness ---\nstaticUtility(\"decoration-auto\", [[\"text-decoration-thickness\", \"auto\"]], { category: 'typography' });\nstaticUtility(\"decoration-from-font\", [[\"text-decoration-thickness\", \"from-font\"]], { category: 'typography' });\nstaticUtility(\"decoration-0\", [[\"text-decoration-thickness\", \"0px\"]], { category: 'typography' });\nstaticUtility(\"decoration-1\", [[\"text-decoration-thickness\", \"1px\"]], { category: 'typography' });\nstaticUtility(\"decoration-2\", [[\"text-decoration-thickness\", \"2px\"]], { category: 'typography' });\nstaticUtility(\"decoration-4\", [[\"text-decoration-thickness\", \"4px\"]], { category: 'typography' });\nstaticUtility(\"decoration-8\", [[\"text-decoration-thickness\", \"8px\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"decoration\",\n prop: \"text-decoration-thickness\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `${value}px`,\n description: \"text-decoration-thickness utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Underline Offset ---\nstaticUtility(\"underline-offset-auto\", [[\"text-underline-offset\", \"auto\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-0\", [[\"text-underline-offset\", \"0px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-1\", [[\"text-underline-offset\", \"1px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-2\", [[\"text-underline-offset\", \"2px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-4\", [[\"text-underline-offset\", \"4px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-8\", [[\"text-underline-offset\", \"8px\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"underline-offset\",\n prop: \"text-underline-offset\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `${value}px`,\n description: \"text-underline-offset utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Wrap ---\nstaticUtility(\"text-wrap\", [[\"text-wrap\", \"wrap\"]], { category: 'typography' });\nstaticUtility(\"text-nowrap\", [[\"text-wrap\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"text-balance\", [[\"text-wrap\", \"balance\"]], { category: 'typography' });\nstaticUtility(\"text-pretty\", [[\"text-wrap\", \"pretty\"]], { category: 'typography' });\n\n// --- Typography: Text Indent ---\nfunctionalUtility({\n name: \"indent\",\n prop: \"text-indent\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n description: \"text-indent utility (spacing, negative, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Vertical Align ---\nstaticUtility(\"align-baseline\", [[\"vertical-align\", \"baseline\"]], { category: 'typography' });\nstaticUtility(\"align-top\", [[\"vertical-align\", \"top\"]], { category: 'typography' });\nstaticUtility(\"align-middle\", [[\"vertical-align\", \"middle\"]], { category: 'typography' });\nstaticUtility(\"align-bottom\", [[\"vertical-align\", \"bottom\"]], { category: 'typography' });\nstaticUtility(\"align-text-top\", [[\"vertical-align\", \"text-top\"]], { category: 'typography' });\nstaticUtility(\"align-text-bottom\", [[\"vertical-align\", \"text-bottom\"]], { category: 'typography' });\nstaticUtility(\"align-sub\", [[\"vertical-align\", \"sub\"]], { category: 'typography' });\nstaticUtility(\"align-super\", [[\"vertical-align\", \"super\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"align\",\n prop: \"vertical-align\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"vertical-align utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Hyphens ---\nstaticUtility(\"hyphens-none\", [[\"hyphens\", \"none\"]], { category: 'typography' });\nstaticUtility(\"hyphens-manual\", [[\"hyphens\", \"manual\"]], { category: 'typography' });\nstaticUtility(\"hyphens-auto\", [[\"hyphens\", \"auto\"]], { category: 'typography' });\n\n// --- Typography: Content ---\nstaticUtility(\"content-none\", [[\"content\", \"none\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"content\",\n prop: \"content\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"content\", `\"${value}\"`)],\n handleCustomProperty: (value) => [decl(\"content\", `var(${value})`)],\n description: \"content utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { AstNode, atRoot, atRule, decl, property, styleRule } from \"../core/ast\";\nimport { parseColor, parseLength, parseNumber } from \"../core/utils\";\n\nconst gradientStopProperties = () => {\n return atRoot([\n property('--baro-gradient-position'),\n property('--baro-gradient-from', '#0000', '<color>'),\n property('--baro-gradient-via', '#0000', '<color>'),\n property('--baro-gradient-to', '#0000', '<color>'),\n property('--baro-gradient-stops', \"transparent\"),\n property('--baro-gradient-from-position', '0%', '<length-percentage>'),\n property('--baro-gradient-via-position', '50%', '<length-percentage>'),\n property('--baro-gradient-to-position', '100%', '<length-percentage>'),\n ], \"background\")\n}\n\n\n// --- Background Attachment ---\nstaticUtility(\"bg-fixed\", [[\"background-attachment\", \"fixed\"]], { category: 'background' });\nstaticUtility(\"bg-local\", [[\"background-attachment\", \"local\"]], { category: 'background' });\nstaticUtility(\"bg-scroll\", [[\"background-attachment\", \"scroll\"]], { category: 'background' });\n\n// --- Background Clip ---\nstaticUtility(\"bg-clip-border\", [[\"background-clip\", \"border-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-padding\", [[\"background-clip\", \"padding-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-content\", [[\"background-clip\", \"content-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-text\", [[\"background-clip\", \"text\"]], { category: 'background' });\n\n// --- Background Color ---\nstaticUtility(\"bg-inherit\", [[\"background-color\", \"inherit\"]], { category: 'background' });\nstaticUtility(\"bg-current\", [[\"background-color\", \"currentColor\"]], { category: 'background' });\nstaticUtility(\"bg-transparent\", [[\"background-color\", \"transparent\"]], { category: 'background' });\n\n// --- Background Image ---\nstaticUtility(\"bg-none\", [[\"background-image\", \"none\"]], { category: 'background' });\n\n// --- Background Origin ---\nstaticUtility(\"bg-origin-border\", [[\"background-origin\", \"border-box\"]], { category: 'background' });\nstaticUtility(\"bg-origin-padding\", [[\"background-origin\", \"padding-box\"]], { category: 'background' });\nstaticUtility(\"bg-origin-content\", [[\"background-origin\", \"content-box\"]], { category: 'background' });\n\n// --- Background Position ---\n[\n [\"bg-bottom\", \"bottom\"],\n [\"bg-center\", \"center\"],\n [\"bg-left\", \"left\"],\n [\"bg-left-bottom\", \"left bottom\"],\n [\"bg-left-top\", \"left top\"],\n [\"bg-right\", \"right\"],\n [\"bg-right-bottom\", \"right bottom\"],\n [\"bg-right-top\", \"right top\"],\n [\"bg-top\", \"top\"],\n].forEach(([name, value]) => {\n staticUtility(name, [[\"background-position\", value]], { category: 'background' });\n});\n\n/**\n * background-position utility (arbitrary, custom property supported)\n *\n * bg-position-[length] → background-position: [length]\n * bg-position-[length] → background-position: [length]\n */\nfunctionalUtility({\n name: \"bg-position\",\n prop: \"background-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"background-position utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Repeat ---\nstaticUtility(\"bg-repeat\", [[\"background-repeat\", \"repeat\"]], { category: 'background' });\nstaticUtility(\"bg-no-repeat\", [[\"background-repeat\", \"no-repeat\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-x\", [[\"background-repeat\", \"repeat-x\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-y\", [[\"background-repeat\", \"repeat-y\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-round\", [[\"background-repeat\", \"round\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-space\", [[\"background-repeat\", \"space\"]], { category: 'background' });\n\n// --- Background Size ---\nstaticUtility(\"bg-auto\", [[\"background-size\", \"auto\"]], { category: 'background' });\nstaticUtility(\"bg-cover\", [[\"background-size\", \"cover\"]], { category: 'background' });\nstaticUtility(\"bg-contain\", [[\"background-size\", \"contain\"]], { category: 'background' });\n\nfunctionalUtility({\n name: \"bg-size\",\n prop: \"background-size\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"background-size utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Linear ---\nconst positionValue = (position: string) => {\n return [\n decl(\"--baro-gradient-position\", position), \n styleRule(\"@supports (background-image: linear-gradient(in lab, red, red))\", [\n decl(\"--baro-gradient-position\", `${position} in oklab`),\n ]),\n decl(\n \"background-image\",\n `linear-gradient(${position}, var(--baro-gradient-stops))`\n ),\n ];\n};\n\n[\n [\"bg-linear-to-t\", positionValue(\"to top\")],\n [\"bg-linear-to-tr\", positionValue(\"to top right\")],\n [\"bg-linear-to-r\", positionValue(\"to right\")],\n [\"bg-linear-to-br\", positionValue(\"to bottom right\")],\n [\"bg-linear-to-b\", positionValue(\"to bottom\")],\n [\"bg-linear-to-bl\", positionValue(\"to bottom left\")],\n [\"bg-linear-to-l\", positionValue(\"to left\")],\n [\"bg-linear-to-tl\", positionValue(\"to top left\")],\n\n // fallback , legacy CSS compatibility\n [\"bg-gradient-to-t\", positionValue(\"to top\")],\n [\"bg-gradient-to-tr\", positionValue(\"to top right\")],\n [\"bg-gradient-to-r\", positionValue(\"to right\")],\n [\"bg-gradient-to-br\", positionValue(\"to bottom right\")],\n [\"bg-gradient-to-b\", positionValue(\"to bottom\")],\n [\"bg-gradient-to-bl\", positionValue(\"to bottom left\")],\n [\"bg-gradient-to-l\", positionValue(\"to left\")],\n [\"bg-gradient-to-tl\", positionValue(\"to top left\")],\n].forEach(([name, value]) => {\n staticUtility(name as string, value as AstNode[], { category: 'background', priority: 1000 });\n});\n// bg-linear-<angle> (e.g., bg-linear-45)\nfunctionalUtility({\n name: \"bg-linear\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (parseNumber(value)) {\n // bg-linear-45 → linear-gradient(45deg in oklab, var(--baro-gradient-stops))\n return [\n decl(\n \"background-image\",\n `linear-gradient(${value}deg in oklab, var(--baro-gradient-stops))`\n ),\n ];\n }\n if (token.arbitrary) {\n // bg-linear-[25deg,red_5%,yellow_60%,lime_90%,teal]\n return [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, ${value}))`\n ),\n ];\n }\n if (token.customProperty) {\n // bg-linear-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ],\n description:\n \"linear-gradient background-image utility (angle, arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Radial ---\nstaticUtility(\"bg-radial\", [\n [\"background-image\", \"radial-gradient(in oklab, var(--baro-gradient-stops))\"],\n], { category: 'background' });\nfunctionalUtility({\n name: \"bg-radial\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (token.arbitrary) {\n // bg-radial-[at_50%_75%]\n return [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, ${value}))`\n ),\n ];\n }\n if (token.customProperty) {\n // bg-radial-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ],\n description:\n \"radial-gradient background-image utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Conic ---\nstaticUtility(\"bg-conic\", [\n [\n \"background-image\",\n \"conic-gradient(from 0deg in oklab, var(--baro-gradient-stops))\",\n ],\n], { category: 'background' });\nfunctionalUtility({\n name: \"bg-conic\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (parseNumber(value)) {\n // bg-conic-180 → conic-gradient(from 180deg in oklab, var(--baro-gradient-stops))\n return [\n decl(\n \"background-image\",\n `conic-gradient(from ${value}deg in oklab, var(--baro-gradient-stops))`\n ),\n ];\n }\n if (token.arbitrary) {\n // bg-conic-[at_50%_75%]\n return [decl(\"background-image\", `${value}`)];\n }\n if (token.customProperty) {\n // bg-conic-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `conic-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [decl(\"background-image\", `var(${value})`)],\n description:\n \"conic-gradient background-image utility (angle, arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Gradient Stops ---\n\n\n\n// from-*, via-*, to-* (color, percentage, custom property, arbitrary)\n[\"from\", \"via\", \"to\"].forEach((stop) => {\n functionalUtility({\n name: stop,\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, context, token, extra) => {\n // console.log('[gradient stop] value', value, context, token, extra);\n if (extra?.realThemeValue) {\n if (stop === \"from\") {\n\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-from`, color),\n // decl(`--baro-gradient-to`, \"var(--baro-gradient-to, transparent)\"),\n decl(`--baro-gradient-stops`, \"var(--baro-gradient-from),var(--baro-gradient-to)\")\n ];\n }\n\n if (stop === \"via\") {\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, color),\n decl(`--baro-gradient-stops`, `var(--baro-gradient-from), ${value} var(--baro-gradient-via-position), var(--baro-gradient-to)`) // via 포함 stops\n ];\n }\n\n if (stop === \"to\") {\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, color),\n ];\n }\n }\n\n // to-50% → --baro-gradient-to-position: 50%\n if (parseLength(value)) {\n return [decl(`--baro-gradient-${stop}-position`, value)];\n }\n\n // to-50% → --baro-gradient-to-position: 50%\n if (parseNumber(value)) {\n return [decl(`--baro-gradient-${stop}-position`, `${value}%`)];\n }\n\n // to-red-500 → --baro-gradient-to: red-500\n if (parseColor(value)) {\n\n if (stop === \"from\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-from`, value),\n decl(`--baro-gradient-to`, \"transparent\"),\n decl(`--baro-gradient-stops`, \"var(--baro-gradient-from),var(--baro-gradient-to)\")\n ];\n }\n\n if (stop === \"via\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, value),\n decl(`--baro-gradient-stops`, `var(--baro-gradient-from), ${value} var(--baro-gradient-via-position), var(--baro-gradient-to)`) // via 포함 stops\n ];\n }\n\n if (stop === \"to\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, value),\n ];\n }\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(`--baro-gradient-${stop}`, `var(${value})`),\n ],\n description: `${stop} gradient stop utility (color, percent, custom property, arbitrary supported)`,\n category: \"background\",\n });\n // position variant: from-10%, via-30%, to-90%\n functionalUtility({\n name: `${stop}-position`,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(`--baro-gradient-${stop}-position`, value)],\n handleCustomProperty: (value) => [\n decl(`--baro-gradient-${stop}-position`, `var(${value})`),\n ],\n description: `${stop}-position gradient stop position utility (percent, custom property, arbitrary supported)`,\n category: \"background\",\n });\n});\n\n/**\n * background-size utility (arbitrary, custom property supported)\n * bg-[length] → background-size: [length]\n * bg-[length] → background-size: [length]\n * bg-[color] → background-color: [color]\n * bg-[url] → background-image: [url]\n * bg-[radial-gradient()] → background-image: radial-gradient(var(--baro-gradient-stops))\n * bg-red-500 → background-color: var(--color-red-500)\n */\nfunctionalUtility({\n name: \"bg\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, context, token, extra) => {\n if (value.startsWith(\"url(\")) {\n return [decl(\"background-image\", value)];\n }\n\n // if (value.startsWith(\"radial-gradient(\")) {\n // return [decl(\"background-image\", value)];\n // }\n\n if (value.startsWith(\"length:\")) {\n return [decl(\"background-size\", value.replace(\"length:\", \"\"))];\n }\n\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"background-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"background-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n return [decl(\"background-color\", value)];\n }\n\n if (parseColor(value)) {\n const parsedColor = parseColor(value);\n\n if (value.startsWith(\"color:\")) {\n return [decl(\"background-color\", parsedColor || value)];\n }\n\n return [decl(\"background-color\", value)];\n }\n\n if (parseLength(value)) {\n return [decl(\"background-size\", value)];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"background-size\", `var(${value})`)],\n description: \"background-size utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseNumber, parseLength, parseColor } from \"../core/utils\";\n\n// --- Border Radius ---\n// border-radius documentation\n\n// Static border radius utilities\nstaticUtility(\"rounded-none\", [[\"border-radius\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"rounded-sm\", [[\"border-radius\", \"var(--radius-sm)\"]], { category: 'borders' });\nstaticUtility(\"rounded\", [[\"border-radius\", \"var(--radius)\"]], { category: 'borders' });\nstaticUtility(\"rounded-md\", [[\"border-radius\", \"var(--radius-md)\"]], { category: 'borders' });\nstaticUtility(\"rounded-lg\", [[\"border-radius\", \"var(--radius-lg)\"]], { category: 'borders' });\nstaticUtility(\"rounded-xl\", [[\"border-radius\", \"var(--radius-xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-2xl\", [[\"border-radius\", \"var(--radius-2xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-3xl\", [[\"border-radius\", \"var(--radius-3xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-full\", [[\"border-radius\", \"9999px\"]], { category: 'borders' });\n\n\n// Individual corner radius utilities\n[\n [\"rounded-t\", [\"border-top-left-radius\", \"border-top-right-radius\"]],\n [\"rounded-r\", [\"border-top-right-radius\", \"border-bottom-right-radius\"]],\n [\"rounded-b\", [\"border-bottom-right-radius\", \"border-bottom-left-radius\"]],\n [\"rounded-l\", [\"border-top-left-radius\", \"border-bottom-left-radius\"]],\n [\"rounded-tl\", [\"border-top-left-radius\"]],\n [\"rounded-tr\", [\"border-top-right-radius\"]],\n [\"rounded-br\", [\"border-bottom-right-radius\"]],\n [\"rounded-bl\", [\"border-bottom-left-radius\"]],\n].forEach(([name, props]) => {\n const propList = props as string[];\n // Static utilities\n staticUtility(`${name}-none`, propList.map(prop => [prop, \"0px\"]), { category: 'borders' });\n staticUtility(`${name}-sm`, propList.map(prop => [prop, \"var(--radius-sm)\"]), { category: 'borders' });\n staticUtility(`${name}`, propList.map(prop => [prop, \"var(--radius)\"]), { category: 'borders' });\n staticUtility(`${name}-md`, propList.map(prop => [prop, \"var(--radius-md)\"]), { category: 'borders' });\n staticUtility(`${name}-lg`, propList.map(prop => [prop, \"var(--radius-lg)\"]), { category: 'borders' });\n staticUtility(`${name}-xl`, propList.map(prop => [prop, \"var(--radius-xl)\"]), { category: 'borders' });\n staticUtility(`${name}-2xl`, propList.map(prop => [prop, \"var(--radius-2xl)\"]), { category: 'borders' });\n staticUtility(`${name}-3xl`, propList.map(prop => [prop, \"var(--radius-3xl)\"]), { category: 'borders' });\n staticUtility(`${name}-full`, propList.map(prop => [prop, \"9999px\"]), { category: 'borders' });\n\n // Functional utility\n functionalUtility({\n name: name as string,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n return null;\n },\n handle: (value) => propList.map(prop => decl(prop, value)),\n description: `${name} utility (spacing, arbitrary, custom property support)`,\n category: \"borders\",\n });\n});\n\n\n// Functional border radius utility\nfunctionalUtility({\n name: \"rounded\",\n prop: \"border-radius\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n return null;\n },\n description: \"border-radius utility (spacing, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n// --- Border Width ---\n// border-width documentation\n\n// Static border width utilities\nstaticUtility(\"border-0\", [[\"border-width\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"border-2\", [[\"border-width\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"border-4\", [[\"border-width\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"border-8\", [[\"border-width\", \"8px\"]], { category: 'borders' });\nstaticUtility(\"border\", [[\"border-width\", \"1px\"]], { category: 'borders' });\n\n\n\n// Individual side border width utilities\n[\n [\"border-x\", [\"border-left-width\", \"border-right-width\"]],\n [\"border-y\", [\"border-top-width\", \"border-bottom-width\"]],\n [\"border-t\", [\"border-top-width\"]],\n [\"border-r\", [\"border-right-width\"]],\n [\"border-b\", [\"border-bottom-width\"]],\n [\"border-l\", [\"border-left-width\"]],\n].forEach(([name, props]) => {\n const propList = props as string[];\n // Static utilities\n staticUtility(`${name}-0`, propList.map(prop => [prop, \"0px\"]));\n staticUtility(`${name}-2`, propList.map(prop => [prop, \"2px\"]));\n staticUtility(`${name}-4`, propList.map(prop => [prop, \"4px\"]));\n staticUtility(`${name}-8`, propList.map(prop => [prop, \"8px\"]));\n staticUtility(`${name}`, propList.map(prop => [prop, \"1px\"]));\n\n // Functional utility\n functionalUtility({\n name: name as string,\n themeKeys: [\"borderWidth\", \"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n handle: (value, ctx, token) => {\n if (parseColor(value)) {\n return propList.map(prop => decl(prop.replace(\"width\", \"color\"), value));\n }\n if (token.arbitrary) {\n return propList.map(prop => decl(prop, value));\n }\n return null;\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"length:\")) {\n return propList.map(prop => decl(prop, `var(${value.replace(\"length:\", \"\")})`));\n }\n\n return propList.map(prop => decl(prop.replace(\"width\", \"color\"), `var(${value})`));\n },\n description: `${name} utility (number, arbitrary, custom property support)`,\n category: \"borders\",\n });\n});\n\n// --- Border Color ---\n// border-color documentation\n\n// Static border color utilities\nstaticUtility(\"border-inherit\", [[\"border-color\", \"inherit\"]], { category: 'borders' });\nstaticUtility(\"border-current\", [[\"border-color\", \"currentColor\"]], { category: 'borders' });\nstaticUtility(\"border-transparent\", [[\"border-color\", \"transparent\"]], { category: 'borders' });\n\n// --- Border Style ---\n// border-style documentation\n\n// Static border style utilities\nstaticUtility(\"border-solid\", [[\"border-style\", \"solid\"]], { category: 'borders' });\nstaticUtility(\"border-dashed\", [[\"border-style\", \"dashed\"]], { category: 'borders' });\nstaticUtility(\"border-dotted\", [[\"border-style\", \"dotted\"]], { category: 'borders' });\nstaticUtility(\"border-double\", [[\"border-style\", \"double\"]], { category: 'borders' });\nstaticUtility(\"border-hidden\", [[\"border-style\", \"hidden\"]], { category: 'borders' });\nstaticUtility(\"border-none\", [[\"border-style\", \"none\"]], { category: 'borders' });\n\n\n// Functional border width utility\nfunctionalUtility({\n name: \"border\",\n themeKeys: [\"colors\", \"borderWidth\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"border-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"border-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n return [decl(\"border-color\", value)];\n }\n\n if (token.arbitrary) {\n if (parseLength(value)) {\n return [decl(\"border-width\", value)];\n }\n return [decl(\"border-color\", value)];\n }\n\n if (parseNumber(value)) {\n return [decl(\"border-width\", `${value}px`)];\n }\n if (parseColor(value)) {\n return [decl(\"border-color\", value)];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"length:\")) {\n return [decl(\"border-width\", `var(${value.replace(\"length:\", \"\")})`)];\n }\n return [decl(\"border-color\", `var(${value})`)];\n },\n description: \"border-width utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n// --- Outline Width ---\n// outline-width documentation\n\n// Static outline width utilities\nstaticUtility(\"outline-0\", [[\"outline-width\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"outline-1\", [[\"outline-width\", \"1px\"]], { category: 'borders' });\nstaticUtility(\"outline-2\", [[\"outline-width\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline-4\", [[\"outline-width\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"outline-8\", [[\"outline-width\", \"8px\"]], { category: 'borders' });\n\n// --- Outline Color ---\n// outline-color documentation\n\n// Static outline color utilities\nstaticUtility(\"outline-inherit\", [[\"outline-color\", \"inherit\"]], { category: 'borders' });\nstaticUtility(\"outline-current\", [[\"outline-color\", \"currentColor\"]], { category: 'borders' });\nstaticUtility(\"outline-transparent\", [[\"outline-color\", \"transparent\"]], { category: 'borders' });\n\n\n// --- Outline Style ---\n// outline-style documentation\n\n// Static outline style utilities\nstaticUtility(\"outline-none\", [[\"outline\", \"2px solid transparent\"], [\"outline-offset\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline\", [[\"outline-style\", \"solid\"]], { category: 'borders' });\nstaticUtility(\"outline-dashed\", [[\"outline-style\", \"dashed\"]], { category: 'borders' });\nstaticUtility(\"outline-dotted\", [[\"outline-style\", \"dotted\"]], { category: 'borders' });\nstaticUtility(\"outline-double\", [[\"outline-style\", \"double\"]], { category: 'borders' });\n\n// --- Outline Offset ---\n// outline-offset documentation\n\n// Static outline offset utilities\nstaticUtility(\"outline-offset-0\", [[\"outline-offset\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-1\", [[\"outline-offset\", \"1px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-2\", [[\"outline-offset\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-4\", [[\"outline-offset\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-8\", [[\"outline-offset\", \"8px\"]], { category: 'borders' });\n\n// Functional outline offset utility\nfunctionalUtility({\n name: \"outline-offset\",\n prop: \"outline-offset\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n description: \"outline-offset utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n\n// Functional outline color utility\nfunctionalUtility({\n name: \"outline\",\n themeKeys: [\"colors\", \"borderWidth\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n\n if (parseColor(value)) {\n return [decl(\"outline-color\", value)];\n }\n\n if (parseNumber(value)) {\n return [decl(\"outline-width\", `${value}px`)];\n }\n\n // Handle arbitrary values\n if (token.arbitrary) {\n\n if (parseLength(value)) {\n return [decl(\"outline-width\", value)];\n }\n\n return [decl(\"outline-color\", value)];\n }\n\n\n\n return null;\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"color:\")) {\n return [decl(\"outline-color\", value.replace(\"color:\", \"\"))];\n }\n\n if (value.startsWith(\"length:\")) {\n return [decl(\"outline-width\", `var(${value.replace(\"length:\", \"\")})`)];\n }\n\n return [decl(\"outline-color\", `var(${value})`)];\n },\n description: \"outline-color utility (theme colors, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n\n// Functional outline width utility\nfunctionalUtility({\n name: \"outline\",\n prop: \"outline-width\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n description: \"outline-width utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n","// --- Transform Utilities ---\nimport { atRoot, decl, property } from \"../core/ast\";\nimport { staticUtility, functionalUtility } from \"../core/registry\";\nimport { parseFractionOrNumber, parseNumber } from \"../core/utils\";\n\n// --- Transform ---\n// transform-none: disables all transforms\nstaticUtility(\"transform-none\", [[\"transform\", \"none\"]], {\n category: \"transform\",\n});\n\n// transform-gpu: enables GPU acceleration for transforms\n// Output: transform: translateZ(0) var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y);\nstaticUtility(\n \"transform-gpu\",\n [\n [\n \"transform\",\n \"translateZ(0) var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y)\",\n ],\n ],\n { category: \"transform\" }\n);\n\n// transform-cpu: disables GPU acceleration, uses only CPU transforms\n// Output: transform: var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y);\nstaticUtility(\"transform-cpu\", [\n [\n \"transform\",\n \"var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y)\",\n ],\n]);\n\n// --- Transform Style ---\n// transform-style documentation\n\n// transform-3d: transform-style: preserve-3d;\nstaticUtility(\"transform-3d\", [[\"transform-style\", \"preserve-3d\"]], {\n category: \"transform\",\n});\n// transform-flat: transform-style: flat;\nstaticUtility(\"transform-flat\", [[\"transform-style\", \"flat\"]], {\n category: \"transform\",\n});\n\n// transform-(<custom-property>): sets transform to a CSS custom property value\n// Example: transform-(--my-transform) → transform: var(--my-transform);\nfunctionalUtility({\n name: \"transform\",\n prop: \"transform\",\n supportsCustomProperty: true,\n handleCustomProperty: (value) => [decl(\"transform\", `var(${value})`)],\n description:\n \"transform utility for custom property (transform-(--my-transform))\",\n category: \"transform\",\n});\n\n// transform-[<value>]: sets transform to an arbitrary value\n// Example: transform-[matrix(1,2,3,4,5,6)] → transform: matrix(1,2,3,4,5,6);\nfunctionalUtility({\n name: \"transform\",\n prop: \"transform\",\n supportsArbitrary: true,\n handle: (value) => [decl(\"transform\", value)],\n description: \"transform utility for arbitrary value (transform-[...])\",\n category: \"transform\",\n});\n\n// --- Backface Visibility ---\n// backface-visibility documentation\nstaticUtility(\"backface-hidden\", [[\"backface-visibility\", \"hidden\"]], {\n category: \"transform\",\n});\nstaticUtility(\"backface-visible\", [[\"backface-visibility\", \"visible\"]], {\n category: \"transform\",\n});\n\n// --- Perspective ---\n// perspective documentation\nstaticUtility(\n \"perspective-dramatic\",\n [[\"perspective\", \"var(--perspective-dramatic)\"]],\n { category: \"transform\" }\n); // 100px\nstaticUtility(\n \"perspective-near\",\n [[\"perspective\", \"var(--perspective-near)\"]],\n { category: \"transform\" }\n); // 300px\nstaticUtility(\n \"perspective-normal\",\n [[\"perspective\", \"var(--perspective-normal)\"]],\n { category: \"transform\" }\n); // 500px\nstaticUtility(\n \"perspective-midrange\",\n [[\"perspective\", \"var(--perspective-midrange)\"]],\n { category: \"transform\" }\n); // 800px\nstaticUtility(\n \"perspective-distant\",\n [[\"perspective\", \"var(--perspective-distant)\"]],\n { category: \"transform\" }\n); // 1200px\nstaticUtility(\"perspective-none\", [[\"perspective\", \"none\"]], {\n category: \"transform\",\n});\n\n// --- Perspective Origin ---\n// perspective-origin documentation\nstaticUtility(\"perspective-origin-center\", [[\"perspective-origin\", \"center\"]], {\n category: \"transform\",\n});\nstaticUtility(\"perspective-origin-top\", [[\"perspective-origin\", \"top\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-top-right\",\n [[\"perspective-origin\", \"top right\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-right\", [[\"perspective-origin\", \"right\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-bottom-right\",\n [[\"perspective-origin\", \"bottom right\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-bottom\", [[\"perspective-origin\", \"bottom\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-bottom-left\",\n [[\"perspective-origin\", \"bottom left\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-left\", [[\"perspective-origin\", \"left\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-top-left\",\n [[\"perspective-origin\", \"top left\"]],\n { category: \"transform\" }\n);\n\nfunctionalUtility({\n name: \"perspective-origin\",\n prop: \"perspective-origin\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"perspective-origin\", value)],\n handleCustomProperty: (value) => [\n decl(\"perspective-origin\", `var(${value})`),\n ],\n description:\n \"perspective-origin utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// perspective-(<custom-property>) → perspective: var(--custom-property)\nfunctionalUtility({\n name: \"perspective\",\n prop: \"perspective\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n // perspective-[750px] → perspective: 750px\n return [decl(\"perspective\", value)];\n },\n handleCustomProperty: (value) => [decl(\"perspective\", `var(${value})`)],\n description:\n \"perspective utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Rotate ---\n// rotate documentation\n\n// rotate-none\nstaticUtility(\"rotate-none\", [[\"rotate\", \"none\"]], { category: \"transform\" });\n\n// rotate-x-<number>, -rotate-x-<number>, rotate-x-(<custom-property>), rotate-x-[<value>]\nfunctionalUtility({\n name: \"rotate-x\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-x-45 → transform: rotateX(45deg) var(--baro-rotate-y)\n // -rotate-x-45 → transform: rotateX(-45deg) var(--baro-rotate-y)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `rotateX(${sign}${deg}) var(--baro-rotate-y)`)];\n }\n // rotate-x-[3.142rad] → transform: rotateX(3.142rad) var(--baro-rotate-y)\n return [decl(\"transform\", `rotateX(${value}) var(--baro-rotate-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `rotateX(var(${value})) var(--baro-rotate-y)`),\n ],\n description: \"rotate-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-y-<number>, -rotate-y-<number>, rotate-y-(<custom-property>), rotate-y-[<value>]\nfunctionalUtility({\n name: \"rotate-y\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-y-45 → transform: var(--baro-rotate-x) rotateY(45deg)\n // -rotate-y-45 → transform: var(--baro-rotate-x) rotateY(-45deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `var(--baro-rotate-x) rotateY(${sign}${deg})`)];\n }\n // rotate-y-[3.142rad] → transform: var(--baro-rotate-x) rotateY(3.142rad)\n return [decl(\"transform\", `var(--baro-rotate-x) rotateY(${value})`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `var(--baro-rotate-x) rotateY(var(${value}))`),\n ],\n description: \"rotate-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-z-<number>, -rotate-z-<number>, rotate-z-(<custom-property>), rotate-z-[<value>]\nfunctionalUtility({\n name: \"rotate-z\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-z-45 → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(45deg)\n // -rotate-z-45 → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(-45deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(${sign}${deg})`\n ),\n ];\n }\n // rotate-z-[3.142rad] → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(3.142rad)\n return [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(${value})`\n ),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(var(${value}))`\n ),\n ],\n description: \"rotate-z utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-<number>, -rotate-<number>, rotate-(<custom-property>), rotate-[<value>]\nfunctionalUtility({\n name: \"rotate\",\n prop: \"rotate\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-45 → rotate: 45deg\n // -rotate-45 → rotate: calc(45deg * -1)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n if (negative || String(value).startsWith(\"-\")) {\n return [decl(\"rotate\", `calc(${deg} * -1)`)];\n }\n\n return [decl(\"rotate\", deg)];\n }\n // rotate-[3.142rad] → rotate: 3.142rad\n return [decl(\"rotate\", value)];\n },\n handleCustomProperty: (value) => [decl(\"rotate\", `var(${value})`)],\n description: \"rotate utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Scale ---\n// scale documentation\n\n// scale-none\nstaticUtility(\"scale-none\", [[\"scale\", \"none\"]], { category: \"transform\" });\n// scale-3d\nstaticUtility(\n \"scale-3d\",\n [[\"scale\", \"var(--baro-scale-x) var(--baro-scale-y) var(--baro-scale-z)\"]],\n { category: \"transform\" }\n);\n\n// scale-x-<number>, -scale-x-<number>, scale-x-(<custom-property>), scale-x-[<value>]\nfunctionalUtility({\n name: \"scale-x\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `${value}`)];\n }\n\n // scale-x-75 → scale: 75% var(--baro-scale-y)\n // -scale-x-75 → scale: calc(75% * -1) var(--baro-scale-y)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"scale\", `calc(${pct} * ${sign}1) var(--baro-scale-y)`)];\n }\n // scale-x-[1.7] → scale: 1.7 var(--baro-scale-y)\n return [decl(\"scale\", `${value} var(--baro-scale-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(${value}) var(--baro-scale-y)`),\n ],\n description: \"scale-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-y-<number>, -scale-y-<number>, scale-y-(<custom-property>), scale-y-[<value>]\nfunctionalUtility({\n name: \"scale-y\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `var(--baro-scale-x) ${value}`)];\n }\n\n // scale-y-75 → scale: var(--baro-scale-x) 75%\n // -scale-y-75 → scale: var(--baro-scale-x) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"scale\", `var(--baro-scale-x) calc(${pct} * ${sign}1)`)];\n }\n // scale-y-[1.7] → scale: var(--baro-scale-x) 1.7\n return [decl(\"scale\", `var(--baro-scale-x) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(--baro-scale-x) var(${value})`),\n ],\n description: \"scale-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-z-<number>, -scale-z-<number>, scale-z-(<custom-property>), scale-z-[<value>]\nfunctionalUtility({\n name: \"scale-z\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [\n decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) ${value}`),\n ];\n }\n\n // scale-z-75 → scale: var(--baro-scale-x) var(--baro-scale-y) 75%\n // -scale-z-75 → scale: var(--baro-scale-x) var(--baro-scale-y) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [\n decl(\n \"scale\",\n `var(--baro-scale-x) var(--baro-scale-y) calc(${pct} * ${sign}1)`\n ),\n ];\n }\n // scale-z-[1.7] → scale: var(--baro-scale-x) var(--baro-scale-y) 1.7\n return [decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) var(${value})`),\n ],\n description: \"scale-z utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-<number>, -scale-<number>, scale-(<custom-property>), scale-[<value>]\nfunctionalUtility({\n name: \"scale\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `${value}`)];\n }\n\n // scale-75 → scale: 75% 75%\n // -scale-75 → scale: calc(75% * -1) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n if (negative || String(value).startsWith(\"-\")) {\n return [decl(\"scale\", `calc(${pct} * -1) calc(${pct} * -1)`)];\n }\n return [decl(\"scale\", `${pct} ${pct}`)];\n }\n // scale-[1.7] → scale: 1.7\n return [decl(\"scale\", value)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(${value}) var(${value})`),\n ],\n description: \"scale utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Skew ---\n// skew documentation\n\n// skew-x-<number>, -skew-x-<number>, skew-x-(<custom-property>), skew-x-[<value>]\nfunctionalUtility({\n name: \"skew-x\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-x-4 → transform: skewX(4deg)\n // -skew-x-4 → transform: skewX(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewX(${sign}${deg})`)];\n }\n // skew-x-[3.142rad] → transform: skewX(3.142rad)\n return [decl(\"transform\", `skewX(${value})`)];\n },\n handleCustomProperty: (value) => [decl(\"transform\", `skewX(var(${value}))`)],\n description: \"skew-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// skew-y-<number>, -skew-y-<number>, skew-y-(<custom-property>), skew-y-[<value>]\nfunctionalUtility({\n name: \"skew-y\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-y-4 → transform: skewY(4deg)\n // -skew-y-4 → transform: skewY(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewY(${sign}${deg})`)];\n }\n // skew-y-[3.142rad] → transform: skewY(3.142rad)\n return [decl(\"transform\", `skewY(${value})`)];\n },\n handleCustomProperty: (value) => [decl(\"transform\", `skewY(var(${value}))`)],\n description: \"skew-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// skew-<number>, -skew-<number>, skew-(<custom-property>), skew-[<value>]\nfunctionalUtility({\n name: \"skew\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-4 → transform: skewX(4deg) skewY(4deg)\n // -skew-4 → transform: skewX(-4deg) skewY(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewX(${sign}${deg}) skewY(${sign}${deg})`)];\n }\n // skew-[3.142rad] → transform: skewX(3.142rad) skewY(3.142rad)\n return [decl(\"transform\", `skewX(${value}) skewY(${value})`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `skewX(var(${value})) skewY(var(${value}))`),\n ],\n description: \"skew utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Transform Origin ---\n// transform-origin documentation\n\n// origin-center: transform-origin: center;\nstaticUtility(\"origin-center\", [[\"transform-origin\", \"center\"]], {\n category: \"transform\",\n});\n// origin-top: transform-origin: top;\nstaticUtility(\"origin-top\", [[\"transform-origin\", \"top\"]], {\n category: \"transform\",\n});\n// origin-top-right: transform-origin: top right;\nstaticUtility(\"origin-top-right\", [[\"transform-origin\", \"top right\"]], {\n category: \"transform\",\n});\n// origin-right: transform-origin: right;\nstaticUtility(\"origin-right\", [[\"transform-origin\", \"right\"]], {\n category: \"transform\",\n});\n// origin-bottom-right: transform-origin: bottom right;\nstaticUtility(\"origin-bottom-right\", [[\"transform-origin\", \"bottom right\"]], {\n category: \"transform\",\n});\n// origin-bottom: transform-origin: bottom;\nstaticUtility(\"origin-bottom\", [[\"transform-origin\", \"bottom\"]], {\n category: \"transform\",\n});\n// origin-bottom-left: transform-origin: bottom left;\nstaticUtility(\"origin-bottom-left\", [[\"transform-origin\", \"bottom left\"]], {\n category: \"transform\",\n});\n// origin-left: transform-origin: left;\nstaticUtility(\"origin-left\", [[\"transform-origin\", \"left\"]], {\n category: \"transform\",\n});\n// origin-top-left: transform-origin: top left;\nstaticUtility(\"origin-top-left\", [[\"transform-origin\", \"top left\"]], {\n category: \"transform\",\n});\n\n// origin-(<custom-property>): transform-origin: var(--custom-property);\nfunctionalUtility({\n name: \"origin\",\n prop: \"transform-origin\",\n supportsCustomProperty: true,\n supportsArbitrary: true,\n description:\n \"transform-origin utility for custom property (origin-(--my-transform-origin))\",\n category: \"transform\",\n});\n\n// --- Translate ---\n// translate documentation\n\nconst translateProperties = () =>\n atRoot([\n property(\"--baro-translate-x\", \"0\"),\n property(\"--baro-translate-y\", \"0\"),\n property(\"--baro-translate-z\", \"0\"),\n ]);\n\n// --- Static translate utilities ---\n// translate-none: disables all translation\nstaticUtility(\"translate-none\", [[\"translate\", \"none\"]], {\n category: \"transform\",\n});\n\n// translate-px, -translate-px, translate-full, -translate-full\nstaticUtility(\"translate-px\", [[\"translate\", \"1px 1px\"]], {\n category: \"transform\",\n});\nstaticUtility(\"-translate-px\", [[\"translate\", \"-1px -1px\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"translate-full\",\n [\n translateProperties,\n [\"--baro-translate-x\", \"100%\"],\n [\"--baro-translate-y\", \"100%\"],\n [\"translate\", \"var(--baro-translate-x) var(--baro-translate-y)\"],\n ],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-full\",\n [\n translateProperties,\n [\"--baro-translate-x\", \"-100%\"],\n [\"--baro-translate-y\", \"-100%\"],\n [\"translate\", \"var(--baro-translate-x) var(--baro-translate-y)\"],\n ],\n { category: \"transform\" }\n);\n\n// translate-x-px, -translate-x-px, translate-x-full, -translate-x-full\nstaticUtility(\n \"translate-x-px\",\n [[\"translate\", \"1px var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-x-px\",\n [[\"translate\", \"-1px var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"translate-x-full\",\n [[\"translate\", \"100% var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-x-full\",\n [[\"translate\", \"-100% var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\n\n// translate-y-px, -translate-y-px, translate-y-full, -translate-y-full\nstaticUtility(\n \"translate-y-px\",\n [[\"translate\", \"var(--baro-translate-x) 1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-y-px\",\n [[\"translate\", \"var(--baro-translate-x) -1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"translate-y-full\",\n [[\"translate\", \"var(--baro-translate-x) 100%\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-y-full\",\n [[\"translate\", \"var(--baro-translate-x) -100%\"]],\n { category: \"transform\" }\n);\n\n// translate-z-px, -translate-z-px\nstaticUtility(\n \"translate-z-px\",\n [[\"translate\", \"var(--baro-translate-x) var(--baro-translate-y) 1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-z-px\",\n [[\"translate\", \"var(--baro-translate-x) var(--baro-translate-y) -1px\"]],\n { category: \"transform\" }\n);\n\n// --- Functional translate utilities ---\n\n// translate-x-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-x\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `${v} var(--baro-translate-y)`)];\n }\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `${v} var(--baro-translate-y)`)];\n }\n return [decl(\"translate\", `${value} var(--baro-translate-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(${value}) var(--baro-translate-y)`),\n ],\n description:\n \"translate-x utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-y-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-y\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `var(--baro-translate-x) ${v}`)];\n }\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `var(--baro-translate-x) ${v}`)];\n }\n return [decl(\"translate\", `var(--baro-translate-x) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(--baro-translate-x) var(${value})`),\n ],\n description:\n \"translate-y utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-z-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-z\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${v}`\n ),\n ];\n }\n\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${v}`\n ),\n ];\n }\n\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${value}`\n ),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) var(${value})`\n ),\n ],\n description:\n \"translate-z utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n // Fraction\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `${v} ${v}`)];\n }\n // Number (spacing scale)\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `${v} ${v}`)];\n }\n // Arbitrary value\n return [decl(\"translate\", `${value} ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(${value}) var(${value})`),\n ],\n description:\n \"translate utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n","import { decl } from \"../core/ast\";\nimport { staticUtility, functionalUtility } from \"../core/registry\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Fill Utilities ---\n// fill documentation\n\n// Static fill values\nstaticUtility(\"fill-inherit\", [[\"fill\", \"inherit\"]], { category: 'svg' });\nstaticUtility(\"fill-current\", [[\"fill\", \"currentColor\"]], { category: 'svg' });\nstaticUtility(\"fill-transparent\", [[\"fill\", \"transparent\"]], { category: 'svg' });\nstaticUtility(\"fill-black\", [[\"fill\", \"#000\"]], { category: 'svg' });\nstaticUtility(\"fill-white\", [[\"fill\", \"#fff\"]], { category: 'svg' });\n\n// Functional: theme color, arbitrary, custom property\nfunctionalUtility({\n name: \"fill\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n return [decl(\"fill\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"fill\", value)];\n },\n description: \"fill utility (static, theme, arbitrary, custom property supported)\",\n category: \"svg\",\n});\n\n// --- Stroke Utilities ---\n// stroke documentation\nstaticUtility(\"stroke-inherit\", [[\"stroke\", \"inherit\"]], { category: 'svg' });\nstaticUtility(\"stroke-current\", [[\"stroke\", \"currentColor\"]], { category: 'svg' });\nstaticUtility(\"stroke-transparent\", [[\"stroke\", \"transparent\"]], { category: 'svg' });\nstaticUtility(\"stroke-black\", [[\"stroke\", \"#000\"]], { category: 'svg' });\nstaticUtility(\"stroke-white\", [[\"stroke\", \"#fff\"]], { category: 'svg' });\n\nfunctionalUtility({\n name: \"stroke\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n\n if (parseNumber(value)) {\n return [decl(\"stroke-width\", value)];\n }\n\n if (extra?.realThemeValue) {\n return [decl(\"stroke\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"stroke\", value)];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"length:\")) {\n const cp = value.replace(\"length:\", \"\");\n return [decl(\"stroke-width\", `var(${cp})`)];\n }\n return [decl(\"stroke\", `var(${value})`)];\n },\n description: \"stroke utility (static, theme, arbitrary, custom property supported)\",\n category: \"svg\",\n});\n\n","import { staticUtility } from \"../core/registry\";\n\n// --- Forced Color Adjust Utilities ---\n// forced-color-adjust documentation\nstaticUtility(\"forced-color-adjust-auto\", [[\"forced-color-adjust\", \"auto\"]], { category: 'accessibility' });\nstaticUtility(\"forced-color-adjust-none\", [[\"forced-color-adjust\", \"none\"]], { category: 'accessibility' }); ","import { staticModifier } from \"../../core/registry\";\n\n// --- Basic pseudo-class variants ---\nstaticModifier('hover', ['&:hover'], { order: 50, source: 'pseudo' });\nstaticModifier('focus', ['&:focus'], { order: 50, source: 'pseudo' });\nstaticModifier('active', ['&:active'], { order: 50, source: 'pseudo' });\nstaticModifier('visited', ['&:visited'], { order: 50, source: 'pseudo' });\nstaticModifier('focus-visible', ['&:focus-visible'], { order: 50, source: 'pseudo' });\nstaticModifier('focus-within', ['&:focus-within'], { order: 50, source: 'pseudo' }); ","import { staticModifier } from \"../../core/registry\";\n\n// --- Form state variants ---\nstaticModifier('disabled', ['&:disabled'], { source: 'pseudo' });\nstaticModifier('checked', ['&:checked'], { source: 'pseudo' });\nstaticModifier('required', ['&:required'], { source: 'pseudo' });\nstaticModifier('invalid', ['&:invalid'], { source: 'pseudo' });\nstaticModifier('enabled', ['&:enabled'], { source: 'pseudo' });\nstaticModifier('indeterminate', ['&:indeterminate'], { source: 'pseudo' });\nstaticModifier('default', ['&:default'], { source: 'pseudo' });\nstaticModifier('optional', ['&:optional'], { source: 'pseudo' });\nstaticModifier('valid', ['&:valid'], { source: 'pseudo' });\nstaticModifier('user-valid', ['&:user-valid'], { source: 'pseudo' });\nstaticModifier('user-invalid', ['&:user-invalid'], { source: 'pseudo' });\nstaticModifier('in-range', ['&:in-range'], { source: 'pseudo' });\nstaticModifier('out-of-range', ['&:out-of-range'], { source: 'pseudo' });\nstaticModifier('placeholder-shown', ['&:placeholder-shown'], { source: 'pseudo' });\nstaticModifier('autofill', ['&:autofill'], { source: 'pseudo' });\nstaticModifier('read-only', ['&:read-only'], { source: 'pseudo' }); ","import { staticModifier } from \"../../core/registry\";\n\n// --- Structural selector variants ---\nstaticModifier('first', ['&:first-child'], { source: 'pseudo' });\nstaticModifier('last', ['&:last-child'], { source: 'pseudo' });\nstaticModifier('only', ['&:only-child'], { source: 'pseudo' });\nstaticModifier('odd', ['&:nth-child(odd)'], { source: 'pseudo' });\nstaticModifier('even', ['&:nth-child(even)'], { source: 'pseudo' });\nstaticModifier('first-of-type', ['&:first-of-type'], { source: 'pseudo' });\nstaticModifier('last-of-type', ['&:last-of-type'], { source: 'pseudo' });\nstaticModifier('only-of-type', ['&:only-of-type'], { source: 'pseudo' });\nstaticModifier('empty', ['&:empty'], { source: 'pseudo' }); ","import { staticModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\n\n// --- Media feature variants ---\nstaticModifier('prefers-contrast-more', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-contrast: more)', [], 'media')],\n source: 'media'\n});\nstaticModifier('prefers-contrast-less', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-contrast: less)', [], 'media')],\n source: 'media'\n});\nstaticModifier('forced-colors', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(forced-colors: active)', [], 'media')],\n source: 'media'\n});\nstaticModifier('pointer-coarse', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(pointer: coarse)', [], 'media')],\n source: 'media'\n});\nstaticModifier('pointer-fine', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(pointer: fine)', [], 'media')],\n source: 'media'\n});\nstaticModifier('any-pointer-coarse', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(any-pointer: coarse)', [], 'media')],\n source: 'media'\n});\nstaticModifier('any-pointer-fine', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(any-pointer: fine)', [], 'media')],\n source: 'media'\n});\n\n// Motion variants\nstaticModifier('motion-safe', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-reduced-motion: no-preference)', [], 'media')],\n source: 'media'\n});\nstaticModifier('motion-reduce', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-reduced-motion: reduce)', [], 'media')],\n source: 'media'\n});\n\n// Print and orientation variants\nstaticModifier('print', ['&'], {\n order: 5,\n wrap: () => [atRule('media', 'print', [], 'media')],\n source: 'media'\n});\nstaticModifier('portrait', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(orientation: portrait)', [], 'media')],\n source: 'media'\n});\nstaticModifier('landscape', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(orientation: landscape)', [], 'media')],\n source: 'media'\n}); ","import { staticModifier } from \"../../core/registry\";\n \n// --- Attribute selector variants ---\nstaticModifier('rtl', ['&[dir=rtl]'], { order: 20, source: 'attribute' });\nstaticModifier('ltr', ['&[dir=ltr]'], { order: 20, source: 'attribute' });\nstaticModifier('inert', ['&[inert]'], { order: 40, source: 'attribute' });\nstaticModifier('open', ['&:is([open], :popover-open, :open)'], { order: 40, source: 'attribute' }); ","import { staticModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\n\n// Import separated variant modules\nimport \"./pseudo-classes\";\nimport \"./form-states\";\nimport \"./structural-selectors\";\nimport \"./media-features\";\nimport \"./attribute-selectors\";\n\n// --- Pseudo-elements (cross-browser) ---\nstaticModifier('before', ['&::before'], { source: 'pseudo' });\nstaticModifier('after', ['&::after'], { source: 'pseudo' });\nstaticModifier('placeholder', [\n '&::placeholder',\n '&::-webkit-input-placeholder',\n '&::-moz-placeholder',\n '&:-ms-input-placeholder',\n], { source: 'pseudo' });\nstaticModifier('selection', [\n '&::selection',\n '&::-moz-selection',\n], { source: 'pseudo' });\nstaticModifier('file', [\n '&::file-selector-button',\n '&::-webkit-file-upload-button',\n], { source: 'pseudo' });\nstaticModifier('marker', [\n '&::marker',\n '&::-webkit-details-marker',\n '&::-moz-list-bullet',\n '&::-moz-list-number',\n], { source: 'pseudo' });\nstaticModifier('details-content', ['&::details-content'], { source: 'pseudo' });\nstaticModifier('first-line', ['&::first-line'], { source: 'pseudo' });\nstaticModifier('first-letter', ['&::first-letter'], { source: 'pseudo' });\nstaticModifier('backdrop', ['&::backdrop'], { source: 'pseudo' });\n\n// --- starting: variant (maps to @starting-style) ---\nstaticModifier('starting', ['&'], {\n wrap: () => [atRule('starting-style', '', [], 'starting')],\n source: 'starting'\n}); ","import { AstNode } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\n\n/**\n * Create container query parameters\n */\nexport function createContainerParams(type: 'min' | 'max', value: string, name?: string): string {\n const condition = type === 'min' ? 'width >=' : 'width <';\n return name ? `${name} (${condition} ${value})` : `(${condition} ${value})`;\n}\n\n/**\n * Create media query parameters\n */\nexport function createMediaParams(type: 'min' | 'max', value: string): string {\n return type === 'min' ? `(min-width: ${value})` : `(width < ${value})`;\n}\n\n/**\n * Get size value from theme\n */\nexport function getThemeSize(ctx: Context, key: string): string | undefined {\n return ctx.theme('container.' + key) as string || ctx.theme('breakpoint.' + key) as string;\n}\n\n/**\n * Create container query AST\n */\nexport function createContainerRule(params: string, ast: AstNode | AstNode[]): AstNode {\n return {\n type: 'at-rule',\n name: 'container',\n params,\n nodes: Array.isArray(ast) ? ast : [ast],\n source: 'container'\n };\n}\n\n/**\n * Create media query AST\n */\nexport function createMediaRule(params: string, ast: AstNode | AstNode[]): AstNode {\n return {\n type: 'at-rule',\n name: 'media',\n params,\n nodes: Array.isArray(ast) ? ast : [ast],\n };\n}\n\n// Default breakpoint values (fallback)\nexport function getDefaultBreakpoint(breakpoint: string): string {\n const defaults: Record<string, string> = {\n 'sm': '(min-width: 640px)',\n 'md': '(min-width: 768px)', \n 'lg': '(min-width: 1024px)',\n 'xl': '(min-width: 1280px)',\n '2xl': '(min-width: 1536px)'\n };\n return defaults[breakpoint] || `(min-width: ${breakpoint})`;\n} ","import { functionalModifier } from \"../../core/registry\";\nimport { atRule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\nimport { getDefaultBreakpoint } from \"./utils\";\n\n// responsive (media queries) - dynamic breakpoint support\nfunctionalModifier(\n (mod: string, context: Context) => {\n // 1. Check breakpoints defined in config (matches actual implementation)\n const breakpoints = context.theme('breakpoints') || context.config('theme.breakpoints') || {};\n const breakpointKeys = Object.keys(breakpoints);\n \n // 2. Check basic breakpoints (all breakpoints defined in config)\n if (breakpointKeys.includes(mod)) {\n return true;\n }\n \n // 3. Check max-width breakpoint (max-{breakpoint})\n if (mod.startsWith('max-')) {\n const baseBreakpoint = mod.replace('max-', '');\n // 3-1. When it is a defined breakpoint\n if (breakpointKeys.includes(baseBreakpoint)) {\n return true;\n }\n // 3-2. When it is an arbitrary max-width (max-[960px])\n if (/^\\[.*\\]$/.test(baseBreakpoint)) {\n return true;\n }\n }\n \n // 4. Check arbitrary min-width (min-[600px])\n if (/^min-\\[.*\\]$/.test(mod)) {\n return true; // arbitrary values are always valid\n }\n \n // 5. Check arbitrary max-width (max-[960px])\n if (/^max-\\[.*\\]$/.test(mod)) {\n return true; // arbitrary values are always valid\n }\n \n return false;\n },\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const breakpoint = mod.type;\n \n // 1. Handle breakpoints defined in config (v4.1 standard)\n const breakpoints = context.theme('breakpoints') || context.config('theme.breakpoints') || {};\n \n // 2. Handle basic breakpoints (all breakpoints defined in config)\n if (Object.keys(breakpoints).includes(breakpoint)) {\n let mediaQuery: string = context.theme(`breakpoints.${breakpoint}`) as string || \n getDefaultBreakpoint(breakpoint);\n // If only a number (px/em/rem etc.) is provided, wrap with (min-width: ...)\n if (/^\\d+(px|em|rem)?$/.test(mediaQuery)) {\n mediaQuery = `(min-width: ${mediaQuery})`;\n }\n return [atRule('media', mediaQuery, [], 'responsive')];\n }\n \n // 3. Handle max-width breakpoint (max-{breakpoint})\n if (breakpoint.startsWith('max-')) {\n const baseBreakpoint = breakpoint.replace('max-', '');\n \n // 3-1. When it is a defined breakpoint (max-sm, max-md, etc.)\n if (Object.keys(breakpoints).includes(baseBreakpoint)) {\n let mediaQuery = context.theme(`breakpoints.${baseBreakpoint}`) as string || \n getDefaultBreakpoint(baseBreakpoint);\n \n // Convert min-width to max-width\n if (mediaQuery.includes('min-width:')) {\n const value = mediaQuery.match(/min-width:\\s*([^)]+)/)?.[1];\n if (value) {\n mediaQuery = `(width < ${value})`;\n }\n } else if (mediaQuery.includes('width >=')) {\n const value = mediaQuery.match(/width >=\\s*([^)]+)/)?.[1];\n if (value) {\n mediaQuery = `(width < ${value})`;\n }\n }\n \n return [atRule('media', mediaQuery, [], 'responsive')];\n }\n \n // 3-2. When it is an arbitrary max-width (max-[960px])\n if (/^\\[(.*)\\]$/.test(baseBreakpoint)) {\n const value = baseBreakpoint.match(/^\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width < ${value})`, [], 'responsive')];\n }\n }\n }\n \n // 4. Handle arbitrary min-width (min-[600px])\n if (/^min-\\[(.*)\\]$/.test(breakpoint)) {\n const value = breakpoint.match(/^min-\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width >= ${value})`, [], 'responsive')];\n }\n }\n \n // 5. Handle arbitrary max-width (max-[960px])\n if (/^max-\\[(.*)\\]$/.test(breakpoint)) {\n const value = breakpoint.match(/^max-\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width < ${value})`, [], 'responsive')];\n }\n }\n return [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\nimport { AstNode, atRule, rule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\n\n// Dark variant plugin\nconst getDarkSelectors = (ctx: Context) => {\n const mode = ctx.config(\"darkMode\") || \"media\";\n const custom = ctx.config(\"darkModeSelector\");\n const selectors: { type: \"media\" | \"selector\"; value: string }[] = [];\n\n if (mode === \"media\") {\n selectors.push({ type: \"media\", value: \"(prefers-color-scheme: dark)\" });\n if (custom) {\n const joined = Array.isArray(custom) ? custom.join(\", \") : custom;\n selectors.push({ type: \"selector\", value: joined as string });\n }\n return selectors;\n }\n if (mode === \"class\") {\n if (custom) {\n const joined = Array.isArray(custom) ? custom.join(\", \") : custom;\n selectors.push({ type: \"selector\", value: joined as string });\n return selectors;\n }\n selectors.push({ type: \"selector\", value: \".dark\" });\n return selectors;\n }\n selectors.push({ type: \"selector\", value: \".dark\" });\n return selectors;\n};\n\nfunctionalModifier(\n (mod: string) => mod === \"dark\",\n undefined, // modifySelector is not used\n (_mod: ParsedModifier, ctx: Context) => {\n const selectors = getDarkSelectors(ctx);\n \n const result: AstNode[] = [];\n\n selectors.forEach((sel) => {\n if (sel.type === \"media\") {\n const atRuleNode = atRule(\"media\", sel.value, [], 'dark');\n result.push(atRuleNode);\n } else {\n const ruleNode = rule(sel.value, [], 'dark');\n result.push(ruleNode);\n }\n });\n\n return result;\n }\n); \n","import { functionalModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\nimport { createContainerRule, createContainerParams, getThemeSize } from \"./utils\";\n\n// --- @container query variants ---\n\n// 1. @container/main - named container\nfunctionalModifier(\n (mod: string) => /^@container\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const containerMatch = /^@container\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (containerMatch) {\n const name = containerMatch[1];\n const params = name; // Just the name, no condition\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 2. @container/size - named container with arbitrary size\nfunctionalModifier(\n (mod: string) => /^@container\\/([a-zA-Z0-9_-]+)\\s+\\(([^)]+)\\)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const containerSizeMatch = /^@container\\/([a-zA-Z0-9_-]+)\\s+\\(([^)]+)\\)$/.exec(mod.type);\n if (containerSizeMatch) {\n const [, name, size] = containerSizeMatch;\n const params = createContainerParams('min', size, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 3. @container/size - theme size with named container\nfunctionalModifier(\n (mod: string) => /^@(sm|md|lg|xl|2xl)\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const namedSizeMatch = /^@(sm|md|lg|xl|2xl)\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (namedSizeMatch) {\n const [, size, name] = namedSizeMatch;\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('min', sizeValue, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 4. @container/size - theme size without named container\nfunctionalModifier(\n (mod: string) => /^@(sm|md|lg|xl|2xl)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const themeSizeMatch = /^@(sm|md|lg|xl|2xl)$/.exec(mod.type);\n if (themeSizeMatch) {\n const size = themeSizeMatch[1];\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('min', sizeValue);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 4.5. @max-container/size - max theme size without named container\nfunctionalModifier(\n (mod: string) => /^@max-(sm|md|lg|xl|2xl)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const themeSizeMatch = /^@max-(sm|md|lg|xl|2xl)$/.exec(mod.type);\n if (themeSizeMatch) {\n const size = themeSizeMatch[1];\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('max', sizeValue);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 5. @container/size - arbitrary size\nfunctionalModifier(\n (mod: string) => /^@(min|max)-\\[.*\\]$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const arbitraryMatch = /^@(min|max)-\\[(.+)\\]$/.exec(mod.type);\n if (arbitraryMatch) {\n const [, type, value] = arbitraryMatch;\n const params = createContainerParams(type as 'min' | 'max', value);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 6. @container/size - arbitrary size with named container\nfunctionalModifier(\n (mod: string) => /^@(min|max)-\\[.*\\]\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const arbitraryNamedMatch = /^@(min|max)-\\[(.+)\\]\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (arbitraryNamedMatch) {\n const [, type, value, name] = arbitraryNamedMatch;\n const params = createContainerParams(type as 'min' | 'max', value, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// has-[]: functionalModifier\nfunctionalModifier(\n (mod: string) => /^has-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^has-\\[(.+)\\]$/.exec(mod.type);\n\n if (m && m[1].startsWith('.')) {\n return {\n selector: `&:has(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n\n return m ? {\n selector: `&:has(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined,\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// not-[]: functionalModifier for arbitrary negation\nfunctionalModifier(\n (mod: string) => /^not-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^not-\\[(.+)\\]$/.exec(mod.type);\n if (m) {\n\n if (m[1].startsWith('.')) {\n return {\n selector: `&:not(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n\n return {\n selector: `&:not([${m[1]}])`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n \n return {\n selector,\n source: 'attribute'\n };\n }\n);\n\n// not-: functionalModifier for pseudo-class negation\nfunctionalModifier(\n (mod: string) => /^not-/.test(mod),\n ({ selector, mod }) => {\n const m = /^not-(.+)$/.exec(mod.type);\n return {\n selector: m ? `&:not(:${m[1]})` : selector,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n); ","import { functionalModifier, escapeClassName } from \"../../core/registry\";\n\n// --- Universal selector variants ( 4.x style, supports chaining/:is wrapping) ---\nfunctionalModifier(\n (mod) => mod === '*',\n ({ selector, fullClassName, variantChain }) => {\n const isSingle = !variantChain || variantChain.length === 1;\n return {\n selector: `:is(.${escapeClassName(fullClassName)} > *)`,\n flatten: true,\n wrappingType: isSingle ? 'rule' : 'style-rule',\n source: 'universal'\n };\n },\n undefined,\n);\n\nfunctionalModifier(\n (mod) => mod === '**',\n ({ selector, fullClassName }) => {\n return {\n selector: `:is(.${escapeClassName(fullClassName)} *)`,\n flatten: false,\n wrappingType: 'style-rule',\n source: 'universal'\n };\n },\n undefined,\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// Master CSS-style arbitrary variant ([...]) support (order: 999, always last)\nfunctionalModifier(\n (mod: string) => /^\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^\\[(.+)\\]$/.exec(mod.type);\n if (!m) return { selector };\n const inner = m[1].trim();\n // For attribute selectors (attr=val) or simple attributes ([open]), wrap with brackets\n if (/^[a-zA-Z0-9_-]+(=.+)?$/.test(inner)) {\n return { selector: `&[${inner}]`, wrappingType: 'rule', source: 'attribute' };\n }\n\n if (inner === '&>*') {\n return { selector: `${inner}`, wrappingType: 'style-rule', source: 'peer' };\n }\n\n if (inner.startsWith('&')) {\n return { selector: `${inner}`, wrappingType: 'rule', source: 'pseudo' };\n }\n\n return { selector: `${inner} &`.trim(), wrappingType: 'rule', source: 'base' };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Standard aria and not- variants ---\nfunctionalModifier(\n (mod: string) => /^aria-/.test(mod),\n ({ selector, mod }) => {\n // aria-[expanded=true] → &[aria-expanded=\"true\"] { ... }\n const bracket = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(mod.type);\n if (bracket) {\n const key = bracket[1];\n const value = bracket[2] ?? 'true';\n return {\n selector: `&[aria-${key}=\"${value}\"]`,\n source: 'aria'\n };\n }\n // aria-pressed → &[aria-pressed=\"true\"] { ... }\n const m2 = /^aria-([a-zA-Z0-9_]+)$/.exec(mod.type);\n if (m2) {\n const key = m2[1];\n return {\n selector: `&[aria-${key}=\"true\"]`,\n source: 'aria'\n };\n }\n return {\n selector,\n source: 'aria'\n };\n },\n undefined\n);\n\nfunctionalModifier(\n (mod: string) => mod.startsWith('not-'),\n ({ selector, mod }) => {\n const pseudo = mod.type.replace('not-', '');\n if (pseudo.startsWith('[')) {\n const inner = pseudo.slice(1, -1);\n // Attribute pattern: identifier(=value)? (e.g., open, dir=rtl, aria-pressed=true)\n if (/^[a-zA-Z0-9_-]+(=.+)?$/.test(inner)) {\n return {\n selector: `&:not([${inner}])`,\n source: 'attribute'\n };\n } else {\n // Otherwise, treat as a selector\n return {\n selector: `&:not(${inner})`,\n source: 'attribute'\n };\n }\n } else {\n // not-hover → :not(:hover)\n return {\n selector: `&:not(:${pseudo})`,\n source: 'attribute'\n };\n }\n },\n undefined\n);\n\n// --- Standard data- variants (similar to aria-) ---\nfunctionalModifier(\n (mod: string) => /^data-/.test(mod),\n ({ selector, mod }) => {\n \n // data-[state=open] → [data-state=\"open\"] & { ... }\n const bracket = /^data-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(mod.type);\n if (bracket) {\n const key = bracket[1];\n const value = bracket[2] ?? 'true';\n return {\n selector: `&[data-${key}=\"${value}\"]`,\n source: 'data'\n };\n }\n // data-avatar → [data-avatar] & { ... }\n const m2 = /^data-([a-zA-Z0-9_]+)$/.exec(mod.type);\n if (m2) {\n const key = m2[1];\n return {\n selector: `&[data-${key}]`,\n source: 'data'\n };\n }\n return {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Nth-child, nth-last-child, nth-of-type, nth-last-of-type (숫자/패턴 기반) ---\nfunctionalModifier(\n (mod: string) => /^nth-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-child(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-last-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-last-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-last-child(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-of-type-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-of-type-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-of-type(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-last-of-type-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-last-of-type-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-last-of-type(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Functional selector variants ---\nfunctionalModifier(\n (mod: string) => /^is-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^is-\\[(.+)\\]$/.exec(mod.type);\n return m ? {\n selector: `&:is(${m[1]})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^where-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^where-\\[(.+)\\]$/.exec(mod.type);\n return m ? {\n selector: `&:where(${m[1]})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\nimport { atRule } from \"../../core/ast\";\n\n// --- At-rule variants ---\n\n// supports-[]: functionalModifier\nfunctionalModifier(\n (mod: string) => /^supports-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^supports-\\[(.+)\\]$/.exec(mod.type);\n if (m) {\n return [atRule('supports', `(${m[1]})`, [], 'supports')];\n }\n return [];\n }\n);\n\n// --- layer-[]: @layer 쿼리 variant ---\nfunctionalModifier(\n (mod: string) => /^layer-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^layer-\\[(.+)\\]$/.exec(mod.type);\n return m ? [atRule('layer', m[1], [])] : [];\n }\n);\n\n// --- scope-[]: @scope 쿼리 variant ---\nfunctionalModifier(\n (mod: string) => /^scope-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^scope-\\[(.+)\\]$/.exec(mod.type);\n return m ? [atRule('scope', m[1], [])] : [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- group/peer/parent/child extensions (examples: group-focus, peer-active, etc.) ---\nfunctionalModifier(\n (mod: string) => /^group-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^group-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n const value = m?.[1].slice(1, -1).replace(/_/g, '');\n return {\n selector: `&:is(:where(.group):is(${value}) *)`,\n wrappingType: 'rule',\n source: 'group'\n };\n }\n\n if (m?.[1]?.startsWith('has-')) {\n const pattern = /^has-\\[([a-zA-Z0-9_-]+)\\]$/.exec(m?.[1]);\n if (pattern) {\n const value = pattern[1];\n return {\n selector: `&:is(:where(.group):has(:is(${value})) *)`,\n source: 'group'\n };\n }\n return {\n selector: `&:is(:where(.group):has(:is(${m?.[1].slice(4, -1)})) *)`,\n source: 'group'\n };\n }\n\n if (m?.[1]?.startsWith('aria-')) {\n const pattern = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(m?.[1]);\n if (pattern) {\n const value = pattern[1];\n if (pattern[2]) {\n return {\n selector: `&:is(:where(.group)[aria-${value}=\"${pattern[2]}\"] *)`,\n source: 'group'\n };\n } else {\n return {\n selector: `&:is(:where(.group)[aria-${value}] *)`,\n source: 'group'\n };\n }\n }\n }\n\n return m ? {\n selector: `&:is(:where(.group):${m[1]} *)`,\n wrappingType: 'rule',\n source: 'group'\n } : {\n selector,\n source: 'group'\n };\n },\n undefined,\n);\n\nfunctionalModifier(\n (mod: string) => /^peer-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^peer-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n const value = m?.[1].slice(1, -1).replace(/_/g, '');\n return {\n selector: `&:is(:where(.peer):is(${value})~*)`,\n wrappingType: 'rule',\n source: 'peer'\n };\n }\n\n const value = m?.[1];\n\n // has-xxxx, not-xxxx, aria-xxxx\n\n if (value?.startsWith('has-')) {\n return {\n selector: `&:is(:where(.peer):has(:${value.slice(4)})~*)`,\n source: 'peer'\n };\n }\n\n if (value?.startsWith('not-')) {\n return {\n selector: `&:is(:where(.peer):not(:${value.slice(4)})~*)`,\n source: 'peer'\n };\n }\n \n if (value?.startsWith('aria-')) {\n\n let pattern = /^aria-([a-zA-Z0-9_]+)$/.exec(value);\n if (pattern) {\n const key = pattern[1];\n return {\n selector: `&:is(:where(.peer)[aria-${key}]~*)`,\n source: 'peer'\n };\n }\n\n pattern = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(value);\n if (pattern) {\n const key = pattern[1];\n const value = pattern[2];\n\n if (pattern[2]) {\n return {\n selector: `&:is(:where(.peer)[aria-${key}=\"${value}\"]~*)`,\n source: 'peer'\n };\n } else {\n return {\n selector: `&:is(:where(.peer)[aria-${key}]~*)`,\n source: 'peer'\n };\n }\n }\n }\n\n return m ? {\n selector: `&:is(:where(.peer):${value}~*)`,\n source: 'peer'\n } : {\n selector,\n source: 'peer'\n };\n },\n undefined,\n);\n\n// --- parent/child extensions (not in the actual spec, but extensibility example) ---\nfunctionalModifier(\n (mod: string) => /^parent-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^parent-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n return {\n selector: `.parent\\\\:\\\\[${m[1].slice(1, -1)}\\\\] &`,\n wrappingType: 'rule',\n source: 'parent'\n };\n }\n\n return m ? {\n selector: `.parent:${m[1]} &`,\n source: 'parent'\n } : {\n selector,\n source: 'parent'\n };\n },\n undefined,\n);\nfunctionalModifier(\n (mod: string) => /^child-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^child-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n return {\n selector: `& > .child\\\\:\\\\[${m[1].slice(1, -1)}\\\\]`,\n wrappingType: 'rule',\n source: 'child'\n };\n }\n return m ? {\n selector: `& > .child:${m[1]}`,\n source: 'child'\n } : {\n selector,\n source: 'child'\n };\n },\n undefined,\n); "],"names":["value","obj","node","nodes","rule","decl","acc","fullClassName","declPaths","varName","v","filters"],"mappings":"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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2O7B,MAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAOM,SAAS,WAAW,OAA8B;AAGvD,MAAI,gBAAgB,IAAI,MAAM,YAAA,CAAa,GAAG;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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/core/ast.ts","../src/core/registry.ts","../src/core/tokenizer.ts","../src/utils/cache.ts","../src/core/parser.ts","../src/core/astToCss.ts","../src/core/engine.ts","../src/core/incremental-parser.ts","../src/core/cssVars.ts","../src/css/preflight.ts","../src/core/context.ts","../src/core/jsonToAst.ts","../src/core/utils.ts","../src/presets/interactivity.ts","../src/presets/transitions.ts","../src/presets/table.ts","../src/presets/filter.ts","../src/presets/backdrop-filter.ts","../src/presets/effects.ts","../src/presets/layout.ts","../src/presets/flexbox-grid.ts","../src/presets/spacing.ts","../src/presets/sizing.ts","../src/presets/typography.ts","../src/presets/background.ts","../src/presets/border.ts","../src/presets/transform.ts","../src/presets/svg.ts","../src/presets/accessibility.ts","../src/presets/variants/pseudo-classes.ts","../src/presets/variants/form-states.ts","../src/presets/variants/structural-selectors.ts","../src/presets/variants/media-features.ts","../src/presets/variants/attribute-selectors.ts","../src/presets/variants/basic-variants.ts","../src/presets/variants/utils.ts","../src/presets/variants/responsive.ts","../src/presets/variants/dark-mode.ts","../src/presets/variants/container-queries.ts","../src/presets/variants/has-variants.ts","../src/presets/variants/negation-variants.ts","../src/presets/variants/universal-selectors.ts","../src/presets/variants/arbitrary-variants.ts","../src/presets/variants/attribute-variants.ts","../src/presets/variants/nth-selectors.ts","../src/presets/variants/functional-selectors.ts","../src/presets/variants/at-rules.ts","../src/presets/variants/group-peer-extensions.ts"],"sourcesContent":["// AST node types for barocss\nexport type AstNode =\n | { type: \"wrap\"; items: AstNode[], source?: string }\n | { type: \"decl\"; prop: string; value: string | [string, string][], source?: string }\n | { type: \"at-rule\"; name: string; params: string; nodes: AstNode[], source?: string }\n | { type: \"style-rule\"; selector: string; nodes: AstNode[], source?: string }\n | { type: \"rule\"; selector: string; nodes: AstNode[], source?: string }\n | { type: \"at-root\"; nodes: AstNode[], source?: string }\n | { type: \"comment\"; text: string, source?: string }\n | { type: \"raw\"; value: string, source?: string };\n\nexport type HasNodes = { nodes?: AstNode[] };\nexport type HasSource = { source?: string };\nexport type HasSelector = { selector?: string };\nexport type HasName = { name?: string };\nexport type HasParams = { params?: string };\nexport type HasValue = { value?: string | [string, string][] };\nexport type HasProp = { prop?: string };\nexport type HasItems = { items?: AstNode[] };\nexport type HasText = { text?: string };\n\nexport function decl(\n prop: string,\n value: string | [string, string][],\n source?: string\n): AstNode {\n return { type: \"decl\", prop, value, source };\n}\nexport function atRoot(nodes: AstNode[], source?: string): AstNode {\n return {\n type: \"at-root\",\n nodes,\n source\n };\n}\n\nexport function atRule(\n name: string,\n params: string,\n nodes: AstNode[],\n source?: string\n): AstNode {\n return { type: \"at-rule\", name, params, nodes, source };\n}\nexport function styleRule(selector: string, nodes: AstNode[], source?: string): AstNode {\n return { type: \"style-rule\", selector, nodes, source };\n}\nexport function rule(selector: string, nodes: AstNode[], source?: string): AstNode {\n return { type: \"rule\", selector, nodes, source };\n}\nexport function comment(text: string, source?: string): AstNode {\n return { type: \"comment\", text, source };\n}\nexport function raw(value: string, source?: string): AstNode {\n return { type: \"raw\", value, source };\n}\n\nexport function property(name: string, initialValue?: string, syntax?: string, source?: string): AstNode {\n const nodes: AstNode[] = [\n decl(\"syntax\", `\"${syntax || \"*\"}\"`, source),\n decl(\"inherits\", \"false\", source),\n ];\n \n if (initialValue) {\n nodes.push(decl(\"initial-value\", initialValue, source));\n }\n \n return atRule(\"property\", name, nodes, source);\n}","import type { AstNode } from './ast';\nimport { decl, rule } from './ast';\nimport { Context } from './context';\nimport { ParsedModifier, ParsedUtility } from './parser';\n\n// Utility registration\nexport interface UtilityRegistration {\n /**\n * The name of the utility\n */\n name: string;\n /**\n * The match function for the utility\n * @param className The class name of the utility\n * @returns {boolean} Whether the utility matches the class name\n */\n match: (className: string) => boolean;\n /**\n * Handler for utility value\n * @param value Utility value (e.g. 'red-500')\n * @param ctx Context\n * @param token Parsed token\n * @param options Registration options\n */\n handler: (value: string, ctx: Context, token: ParsedUtility, options: UtilityRegistration) => AstNode[] | null | undefined;\n /**\n * The description of the utility\n * @example\n * ```\n * description: 'Custom utility description',\n * ```\n */\n description?: string;\n /**\n * The category of the utility\n * @example\n * ```\n * category: 'background',\n * ```\n */\n category?: string;\n /**\n * The priority of the utility\n * @example\n * ```\n * priority: 10,\n * ```\n */\n priority?: number;\n [key: string]: unknown;\n}\n\nconst utilityRegistry: UtilityRegistration[] = [];\nexport function registerUtility(util: UtilityRegistration) {\n utilityRegistry.push(util);\n}\n\nexport function getUtility(): UtilityRegistration[] {\n return utilityRegistry;\n}\n\n// --- Modifier Registration ---\nexport type ModifierRegistration = {\n match: (mod: string, context: Context) => boolean;\n modifySelector?: (params: { selector: string; fullClassName: string; mod: ParsedModifier; context: Context; variantChain?: ParsedModifier[]; index?: number }) => string | { selector: string; flatten?: boolean; wrappingType?: 'rule' | 'style-rule' | 'at-rule'; override?: boolean; source?: string };\n wrap?: (mod: ParsedModifier, context: Context) => AstNode[];\n astHandler?: (ast: AstNode[], mod: ParsedModifier, context: Context, variantChain?: ParsedModifier[], index?: number) => AstNode[];\n sort?: number;\n description?: string;\n source?: string;\n};\n\nexport const modifierRegistry: ModifierRegistration[] = [];\n\n/**\n * staticModifier: A helper that registers a modifier name and an array of CSS selectors directly to the registry\n * \n * @example\n * ```\n * staticModifier('disabled', ['&:disabled'], { source: 'pseudo' });\n * ```\n * \n * @param name The name of the modifier\n * @param selectors The selectors of the modifier\n * @param options The options of the modifier\n * \n * @returns {void}\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function staticModifier(name: string, selectors: string[], options: any = {}): void {\n modifierRegistry.push({\n match: (mod: string) => mod === name,\n modifySelector: ({ ..._rest }) => {\n return selectors.map(sel => ({\n selector: sel,\n source: options.source\n }));\n },\n ...options\n });\n}\n\nexport function functionalModifier(match: ModifierRegistration['match'], modifySelector: ModifierRegistration['modifySelector'], wrap?: ModifierRegistration['wrap'], options: Partial<ModifierRegistration> = {}) {\n modifierRegistry.push({ match, modifySelector, wrap, ...options });\n}\n\nexport function getModifier(): ModifierRegistration[] {\n return modifierRegistry;\n}\n\n// escapeClassName\nconst ESCAPE_REGEX = /[^A-Za-z0-9_-]/g;\nexport function escapeClassName(className: string) {\n return className.replace(ESCAPE_REGEX, (c) => {\n if (c === ' ') return '\\\\x20 ';\n if (c === '.') return '\\\\.';\n if (c === '/') return '\\\\/';\n if (c === ':') return '\\\\:';\n if (c === '[') return '\\\\[';\n if (c === ']') return '\\\\]';\n if (c === '(') return '\\\\(';\n if (c === ')') return '\\\\)';\n if (c === '%') return '\\\\%';\n if (c === '#') return '\\\\#';\n if (c === ',') return '\\\\,';\n if (c === '=') return '\\\\=';\n if (c === '&') return '\\\\&';\n if (c === '~') return '\\\\~';\n if (c === '*') return '\\\\*';\n if (c === '$') return '\\\\$';\n if (c === '^') return '\\\\^';\n if (c === '+') return '\\\\+';\n if (c === '?') return '\\\\?';\n if (c === '!') return '\\\\!';\n if (c === '@') return '\\\\@';\n if (c === \"'\") return \"\\\\'\";\n if (c === '\"') return '\\\\\"';\n if (c === '`') return '\\\\`';\n if (c === ';') return '\\\\;';\n if (c === '<') return '\\\\<';\n if (c === '>') return '\\\\>';\n if (c === '{') return '\\\\{';\n if (c === '}') return '\\\\}';\n if (c === '|') return '\\\\|';\n if (c === '\\\\') return '\\\\\\\\';\n return '\\\\' + c;\n });\n}\n\n// --- Utility Helper Factories ---\n\ntype StaticUtilityValue = \n | AstNode // ast\n | [string, string] // [prop, value]\n | [string, [string, string][]] // [selector, [prop, value][]]\n | ((value: string) => AstNode); // function\n\n\n/**\n * staticUtility: A helper that registers a utility name and an array of CSS declaration pairs directly to the registry\n *\n * @example\n * ```\n * staticUtility('block', [['display', 'block']]);\n * staticUtility('hidden', [['display', 'none']]);\n * staticUtility('space-x-px', [\n * [\n * '& > :not([hidden]) ~ :not([hidden])', // selector\n * [\n * ['margin-inline-start', '1px'], // [prop, value]\n * ['margin-inline-end', '1px'], // [prop, value]\n * ],\n * ],\n * ]);\n * ```\n * \n * @param name The name of the utility\n * @param decls The declarations of the utility\n * @param opts The options of the utility\n * \n * @returns {void}\n */\nexport function staticUtility(\n name: string,\n decls: StaticUtilityValue[],\n opts?: { description?: string; category?: string; priority?: number }\n): void {\n registerUtility({\n name,\n match: (className: string) => {\n return className === name;\n },\n handler: (value: string): AstNode[] | null | undefined => {\n return decls.flatMap((params) => {\n\n if ((params as AstNode).type) {\n return [params as AstNode];\n }\n\n if (typeof params === 'function') {\n const targetFunction = params as (value: string) => AstNode;\n return [targetFunction(value)];\n }\n const [a, b] = params as [string, string | [string, string][]];\n\n if (typeof b === 'string') {\n // [prop, value]\n return [decl(a, b)];\n } else if (Array.isArray(b)) {\n // selector, [prop, value][]\n return [rule(a, b.map(([prop, value]) => decl(prop, value)))];\n }\n return [];\n });\n },\n description: opts?.description,\n category: opts?.category,\n priority: opts?.priority,\n });\n}\n\nexport type FunctionalUtilityExtra = {\n opacity?: string;\n realThemeValue?: string;\n}\n\nexport type FunctionalUtilityOptions = {\n /**\n * The name of the utility\n * \n * prefix is automatically added to the name\n */\n name: string;\n /**\n * The CSS property to set\n * \n * css property is automatically added to the prop\n */\n prop?: string;\n /**\n * The theme key to look up values\n * \n * theme key is automatically added to the themeKey\n * \n * @example\n * ```\n * themeKey: 'colors'\n * ```\n */\n themeKey?: string;\n /**\n * The theme keys to look up values\n * \n * theme keys are automatically added to the themeKeys\n * \n * @example\n * ```\n * themeKeys: ['colors', 'spacing']\n * ```\n */\n themeKeys?: string[];\n /**\n * Whether to support arbitrary values\n * \n * `bg-[#ff0000]`\n * \n * @example\n * ```\n * supportsArbitrary: true\n * ```\n */\n supportsArbitrary?: boolean;\n /**\n * Whether to support fraction values\n * \n * `m-4`\n * \n * @example\n * ```\n * supportsFraction: true\n * ```\n */\n supportsFraction?: boolean;\n /**\n * Whether to support custom properties\n * \n * `bg-(--my-bg)`\n * \n * @example\n * ```\n * supportsCustomProperty: true\n * ```\n */\n supportsCustomProperty?: boolean;\n /**\n * Whether to support negative values\n * \n * `-m-4`\n * \n * @example\n * ```\n * supportsNegative: true\n * ```\n */\n supportsNegative?: boolean;\n /**\n * Whether to support opacity values\n */\n supportsOpacity?: boolean;\n /**\n * The handler function that processes values\n * \n * @example\n * ```\n * handle: (value, ctx, token, extra) => {\n * return [decl('background-color', value)];\n * }\n * ```\n * \n * @param value The value to process\n * @param ctx The context\n * @param token The parsed utility\n * @param extra The extra metadata\n * \n * @returns {AstNode[] | null | undefined} The AST nodes or null | undefined\n */\n handle?: (value: string, ctx: Context, token: ParsedUtility, extra?: FunctionalUtilityExtra) => AstNode[] | null | undefined;\n /**\n * The handler function that processes bare values\n * \n * @example\n * ```\n * handleBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * ```\n * \n * @param args The arguments\n * @param args.value The value to process\n * @param args.ctx The context\n * @param args.token The parsed utility\n * @param args.extra The extra metadata\n * \n * @returns {string | null | undefined} The processed value or null | undefined\n */\n handleBareValue?: (args: { value: string; ctx: Context; token: ParsedUtility, extra?: FunctionalUtilityExtra }) => string | null | undefined;\n /**\n * The handler function that processes negative bare values\n * \n * @example\n * ```\n * handleNegativeBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * ```\n */\n handleNegativeBareValue?: (args: { value: string; ctx: Context; token: ParsedUtility, extra?: FunctionalUtilityExtra }) => string | null | undefined;\n\n /**\n * The handler function that processes custom property values\n * \n * \n * @example\n * ```\n * handleCustomProperty: (value, ctx, token, extra) => [decl('background-color', value)],\n * ```\n * \n * @param args The arguments\n * @param args.value The value to process\n * @param args.ctx The context\n * @param args.token The parsed utility\n * @param args.extra The extra metadata\n * \n * @returns {AstNode[] | null | undefined} The AST nodes or null | undefined\n */\n handleCustomProperty?: (value: string, ctx: Context, token: ParsedUtility, extra?: FunctionalUtilityExtra) => AstNode[] | null | undefined;\n /**\n * The description of the utility\n * \n * @example\n * ```\n * description: 'Custom utility description',\n * ```\n */\n description?: string;\n /**\n * The category of the utility\n * \n * It is used to group utilities in the documentation and styles\n * \n * \n * @example\n * ```\n * category: 'background',\n * ```\n */\n category?: string;\n /**\n * The priority of the utility\n * \n * It is used to sort utilities in the styles\n * \n * @example\n * ```\n * priority: 10,\n * ```\n * \n * The higher the number, the higher the priority\n * \n * @default 0\n */\n priority?: number;\n}\n\n/**\n * functionalUtility: A helper that registers dynamic utilities (theme, arbitrary, custom, negative, fraction, etc.) directly\n *\n * Example:\n * functionalUtility({\n * name: 'z',\n * supportsNegative: true,\n * themeKeys: ['--z-index'],\n * handleBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * handle: (value) => [decl('z-index', value)],\n * description: 'z-index utility',\n * category: 'layout',\n * });\n */\nexport function functionalUtility(opts: FunctionalUtilityOptions) {\n registerUtility({\n name: opts.name,\n match: (className: string) => className.startsWith(opts.name + '-'),\n handler: (value, ctx, token, _options) => {\n let finalValue = value;\n const parsedUtility = token;\n const extra: FunctionalUtilityExtra = {\n opacity: token.opacity,\n };\n\n if (opts.supportsOpacity && !token.arbitrary && !token.customProperty && value.includes('/')) {\n const list = value.split('/');\n\n if (list.length >= 2) {\n extra.opacity = list.pop();\n finalValue = list.join('/');\n }\n }\n\n // 1. Arbitrary value - already parsed in parser.ts\n if (opts.supportsArbitrary && parsedUtility.arbitrary) {\n const processedValue = finalValue.replace(/_/g, ' ');\n // console.log('[functionalUtility] arbitrary', { processedValue });\n // 7. handle (custom AST generation)\n if (opts.handle) {\n const result = opts.handle(processedValue, ctx, token, extra);\n // console.log('[functionalUtility] arbitrary handle result', result);\n if (result) return result;\n }\n // 8. default decl\n if (opts.prop) {\n // console.log('[functionalUtility] arbitrary default decl', { prop: opts.prop, processedValue });\n return [decl(opts.prop, processedValue)];\n }\n return [];\n }\n // 2. Custom property - already parsed in parser.ts\n if (opts.supportsCustomProperty && parsedUtility.customProperty) {\n // console.log('[functionalUtility] customProperty', { finalValue });\n if (opts.handleCustomProperty) {\n const result = opts.handleCustomProperty(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] customProperty handleCustomProperty result', result);\n return result;\n }\n const customValue = `var(${finalValue})`;\n if (opts.handle) {\n const result = opts.handle(customValue, ctx, token, extra);\n // console.log('[functionalUtility] customProperty handle result', result);\n if (result) return result;\n }\n if (opts.prop) {\n // console.log('[functionalUtility] customProperty default decl', { prop: opts.prop, customValue });\n return [decl(opts.prop, customValue)];\n }\n return [];\n }\n // 3. Theme lookup (themeKey or themeKeys)\n let themeValue: string | undefined;\n if (opts.themeKey && ctx.theme) {\n themeValue = ctx.theme(opts.themeKey, finalValue) as string;\n // console.log('[functionalUtility] themeKey lookup', { themeKey: opts.themeKey, finalValue, themeValue });\n }\n if (!themeValue && opts.themeKeys && ctx.theme) {\n for (const key of opts.themeKeys) {\n themeValue = ctx.theme(key, finalValue) as string;\n // console.log('[functionalUtility] themeKeys lookup', { key, finalValue, themeValue });\n if (themeValue !== undefined) break;\n }\n }\n if (themeValue !== undefined) {\n extra.realThemeValue = finalValue;\n finalValue = themeValue;\n if (opts.prop) {\n // console.log('[functionalUtility] themeValue default decl', { prop: opts.prop, finalValue });\n return [decl(opts.prop, finalValue)];\n }\n if (opts.handle) {\n const result = opts.handle(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] themeValue handle result', result);\n if (result) return result;\n }\n return [];\n }\n // 4. Fraction value (e.g., 1/2, -2/5)\n // console.log('[functionalUtility] fraction', { value });\n if (opts.supportsFraction && /^-?\\d+\\/\\d+$/.test(value)) {\n finalValue = value;\n // console.log('[functionalUtility] fraction', { finalValue });\n }\n // 5. handleNegativeBareValue (only check negative bare value)\n if (parsedUtility.negative && opts.supportsNegative && opts.handleNegativeBareValue) {\n const bare = opts.handleNegativeBareValue({ value: String(finalValue).replace(/^-/, ''), ctx, token, extra });\n // console.log('[functionalUtility] negative bare', { bare });\n if (bare == null) return [];\n finalValue = bare;\n }\n // 6. handleBareValue (only check bare value) - only when negative is not true\n else if (opts.handleBareValue) {\n const bare = opts.handleBareValue({ value: finalValue, ctx, token, extra });\n // console.log('[functionalUtility] bare', { bare });\n if (bare == null) return [];\n finalValue = bare;\n }\n // 7. handle (custom AST generation)\n if (opts.handle) {\n // console.log('[functionalUtility] handle', { finalValue });\n const result = opts.handle(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] handle result', result);\n if (result) return result;\n }\n // 8. default decl\n if (opts.prop) {\n // console.log('[functionalUtility] default decl', { prop: opts.prop, finalValue });\n return [decl(opts.prop, finalValue)];\n }\n // console.log('[functionalUtility] fallback empty', { finalValue });\n return [];\n },\n description: opts.description,\n category: opts.category,\n priority: opts.priority,\n });\n}","export interface Token {\n value: string;\n start: number;\n end: number;\n}\n\n/**\n * Tokenizes a class name string into an array of tokens\n * Only handles separation by ':' while respecting brackets and parentheses\n * \n * Examples:\n * - 'hover:bg-red-500' → [{ value: 'hover' }, { value: 'bg-red-500' }]\n * - 'bg-[#ff0000]:hover' → [{ value: 'bg-[#ff0000]' }, { value: 'hover' }]\n * - 'text-[color:var(--foo)]' → [{ value: 'text-[color:var(--foo)]' }]\n * - '!bg-[red]' → [{ value: '!bg-[red]' }]\n */\nexport function tokenize(className: string): Token[] {\n const tokens: Token[] = [];\n let current = '';\n let start = 0;\n let inBracket = 0;\n let inParen = 0;\n \n for (let i = 0; i < className.length; i++) {\n const char = className[i];\n \n // Bracket tracking\n if (char === '[') inBracket++;\n if (char === ']') inBracket--;\n if (char === '(') inParen++;\n if (char === ')') inParen--;\n \n // Separator (only when not inside brackets or parentheses)\n if (char === ':' && inBracket === 0 && inParen === 0) {\n if (current) {\n tokens.push({\n value: current,\n start,\n end: i\n });\n }\n current = '';\n start = i + 1;\n } else {\n current += char;\n }\n }\n \n // Add remaining token\n if (current) {\n tokens.push({\n value: current,\n start,\n end: className.length\n });\n }\n \n return tokens;\n} ","import type { AstNode } from '../core/ast';\nimport { ParsedModifier, ParsedUtility } from '../core/parser';\n\n/**\n * AST cache management\n */\nexport class AstCache {\n private cache = new Map<string, AstNode[]>();\n private maxSize = 1000; // Prevent memory leaks\n \n set(key: string, ast: AstNode[]): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, ast);\n }\n \n get(key: string): AstNode[] | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global AST cache instance\nexport const astCache = new AstCache();\n\n/**\n * Parse result cache management\n */\nexport class ParseResultCache {\n private cache = new Map<string, { modifiers: ParsedModifier[]; utility: ParsedUtility | null }>();\n private maxSize = 2000; // Prevent memory leaks\n \n set(key: string, result: { modifiers: ParsedModifier[]; utility: ParsedUtility | null }): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, result);\n }\n \n get(key: string): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global parse result cache instance\nexport const parseResultCache = new ParseResultCache();\n\n/**\n * Utility cache management\n */\nexport class UtilityCache {\n private cache = new Map<string, boolean>();\n private maxSize = 1000; // Prevent memory leaks\n \n set(key: string, value: boolean): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, value);\n }\n \n get(key: string): boolean | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global utility cache instance\nexport const utilityCache = new UtilityCache();\n\n/**\n * Clear all caches (for context changes or testing)\n */\nexport function clearAllCaches(): void {\n astCache.clear();\n parseResultCache.clear();\n utilityCache.clear();\n // eslint-disable-next-line no-console\n console.log('[clearAllCaches] All caches cleared');\n}\n\n/**\n * WeakMap-based cache for memory optimization\n */\nexport class WeakCache<T> {\n private cache = new WeakMap<object, T>();\n private keyMap = new Map<string, object>();\n private maxSize = 1000;\n\n set(key: string, value: T): void {\n if (this.keyMap.size >= this.maxSize) {\n // Remove oldest entry\n const firstKey = this.keyMap.keys().next().value;\n if (firstKey) {\n const obj = this.keyMap.get(firstKey);\n if (obj) {\n this.cache.delete(obj);\n }\n this.keyMap.delete(firstKey);\n }\n }\n\n const obj = { key };\n this.cache.set(obj, value);\n this.keyMap.set(key, obj);\n }\n\n get(key: string): T | undefined {\n const obj = this.keyMap.get(key);\n if (obj) {\n return this.cache.get(obj);\n }\n return undefined;\n }\n\n has(key: string): boolean {\n return this.keyMap.has(key);\n }\n\n clear(): void {\n this.keyMap.clear();\n }\n\n getStats() {\n return {\n size: this.keyMap.size,\n maxSize: this.maxSize,\n hitRate: this.keyMap.size / this.maxSize\n };\n }\n}","// Types for parsed modifier and utility\nexport interface ParsedModifier {\n type: string;\n value?: string;\n negative?: boolean;\n arbitrary?: boolean;\n [key: string]: unknown;\n}\n\nexport interface ParsedUtility {\n category?: string;\n prefix: string;\n value?: string;\n arbitrary?: boolean;\n customProperty?: boolean;\n negative?: boolean;\n opacity?: string;\n priority?: number;\n important?: boolean;\n [key: string]: unknown;\n}\n\nimport { getUtility, getModifier, UtilityRegistration } from './registry';\nimport { tokenize, Token } from './tokenizer';\nimport { parseResultCache, utilityCache } from '../utils/cache';\n\n// Cache systems\n\n/**\n * Checks if a string is a utility prefix by checking against registered utilities\n * Optimized with prefix filtering and caching\n * @param str The string to check\n * @returns true if it's a utility prefix\n */\nfunction isUtilityPrefix(str: string): boolean {\n // Check cache\n if (utilityCache.has(str)) {\n return utilityCache.get(str)!;\n }\n \n const utilities = getUtility();\n const modifiers = getModifier();\n \n // 1. Fast prefix filtering (O(1) prefix check)\n const candidateUtilities = utilities.filter(util => {\n const prefix = util.name;\n return str.startsWith(prefix + '-') || str === prefix || str.startsWith(prefix);\n });\n \n // 2. Exact match check only on filtered candidates\n const isUtility = candidateUtilities.some(util => util.match(str));\n \n // 3. Filter modifiers similarly\n const candidateModifiers = modifiers.filter(mod => {\n // Use modifier name if available, otherwise extract from match function\n const modName = (mod as unknown as { name: string }).name || mod.match.toString().split('(')[0];\n return str.startsWith(modName + ':') || str === modName;\n });\n \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isModifier = candidateModifiers.some(mod => mod.match(str, {} as any));\n \n // 4. Calculate result\n const result = isUtility && !isModifier;\n \n // 5. Cache result\n utilityCache.set(str, result);\n \n return result;\n}\n\n/**\n * Parses a class name string into modifiers and utility using tokenization\n * Supports both directions:\n * - modifier:utility (traditional CSS)\n * - utility:modifier (Master CSS style)\n * \n * Examples:\n * - 'group-hover:sm:bg-[red]' → modifier:utility\n * - 'bg-red-500:hover' → utility:modifier\n * - 'text-[color:var(--foo)]' → utility only\n * \n * @param className e.g. 'group-hover:sm:bg-[red]', 'text-[color:var(--foo)]'\n * @returns { modifiers, utility }\n */\nexport function parseClassName(className: string): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } {\n // Check parse result cache first\n if (parseResultCache.has(className)) {\n return parseResultCache.get(className)!;\n }\n\n // Examples: !bg-[red]\n let important = false;\n let realClassName = className;\n if (className.startsWith('!')) {\n important = true;\n realClassName = className.slice(1);\n }\n \n // 1. Tokenize string into tokens\n const tokens = tokenize(realClassName);\n // 2. Convert tokens to parsed result\n const result = parseTokens(tokens);\n if (result.utility) {\n result.utility.important = important;\n }\n \n // Cache the result\n parseResultCache.set(className, result);\n \n return result;\n}\n\n/**\n * Parses tokens into modifiers and utility\n */\nfunction parseTokens(tokens: Token[]): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } {\n const modifiers: ParsedModifier[] = [];\n let utility: ParsedUtility | null = null;\n \n // Handle empty token array\n if (tokens.length === 0) {\n return { modifiers, utility: null };\n }\n \n // Determine token types and parse in both directions\n if (tokens.length === 1) {\n // utility only\n utility = parseUtility(tokens[0].value);\n } else if (tokens.length === 2) {\n const firstToken = tokens[0];\n const secondToken = tokens[1];\n const isFirstUtility = isUtilityPrefix(firstToken.value);\n \n if (isFirstUtility) {\n // utility:modifier form\n utility = parseUtility(firstToken.value);\n const parsed = parseModifier(secondToken.value);\n if (parsed) modifiers.push(parsed);\n } else {\n // modifier:utility form\n const parsed = parseModifier(firstToken.value);\n if (parsed) modifiers.push(parsed);\n utility = parseUtility(secondToken.value);\n }\n } else {\n // Multiple tokens\n // Check if the first token is a utility\n const isFirstUtility = isUtilityPrefix(tokens[0].value);\n \n if (isFirstUtility) {\n // utility:modifier:modifier form\n utility = parseUtility(tokens[0].value);\n for (let i = 1; i < tokens.length; i++) {\n const parsed = parseModifier(tokens[i].value);\n if (parsed) modifiers.push(parsed);\n }\n } else {\n // modifier:modifier:utility form\n for (let i = 0; i < tokens.length - 1; i++) {\n const parsed = parseModifier(tokens[i].value);\n if (parsed) modifiers.push(parsed);\n }\n utility = parseUtility(tokens[tokens.length - 1].value);\n }\n }\n return { modifiers, utility };\n}\n\n/**\n * Parse modifier token\n */\nfunction parseModifier(value: string): ParsedModifier | null {\n let negative = false;\n let modStr = value;\n \n if (modStr.startsWith('-')) {\n negative = true;\n modStr = modStr.slice(1);\n }\n \n // Arbitrary variant support\n if (modStr.startsWith('[') && modStr.endsWith(']')) {\n return { type: modStr, negative, arbitrary: true };\n }\n \n return { type: modStr, negative };\n}\n\nfunction nameSort(a: UtilityRegistration, b: UtilityRegistration): number {\n return b.name.length - a.name.length;\n}\n\n/**\n * Parse utility token\n */\nfunction parseUtility(value: string): ParsedUtility {\n // Examples: bg-[red], text-[color:var(--foo)], bg-(--my-bg), -m-4, -bg-[red]\n let prefix = '';\n let utilityValue = '';\n let arbitrary = false;\n let customProperty = false;\n let negative = false;\n let opacity = '';\n let category = '';\n let priority = 0;\n \n if (value.startsWith('-')) {\n negative = true;\n }\n \n // Handle arbitrary values\n if (value.includes('-[')) {\n [prefix, utilityValue] = value.split('-[');\n // Closing bracket position\n const closeIdx = utilityValue.lastIndexOf(']');\n if (closeIdx !== -1 && closeIdx < utilityValue.length - 1 && utilityValue[closeIdx + 1] === '/') {\n // If '/' follows the closing bracket, split opacity\n opacity = utilityValue.slice(closeIdx + 2); // after '/'\n utilityValue = utilityValue.slice(0, closeIdx); // keep inside brackets only\n } else {\n // If ends with ']', no opacity\n utilityValue = utilityValue.replace(/]$/, '');\n }\n arbitrary = true;\n } \n // Handle custom properties\n else if (value.includes('-(')) {\n [prefix, utilityValue] = value.split('-(');\n utilityValue = utilityValue.replace(/\\)$/, '');\n customProperty = true;\n } \n // Handle regular utilities\n else {\n const utilities = getUtility();\n const sortedUtilities = utilities.sort(nameSort);\n \n let matchedUtility = sortedUtilities.find(p => value === p.name);\n if (matchedUtility) {\n prefix = matchedUtility.name;\n utilityValue = \"\";\n negative = value.startsWith('-');\n category = matchedUtility.category!;\n priority = matchedUtility.priority!;\n } else {\n if (value.startsWith('-')) {\n negative = true;\n value = value.slice(1);\n }\n \n matchedUtility = sortedUtilities.find(p => value.startsWith(p.name + '-'));\n if (matchedUtility) {\n prefix = matchedUtility.name;\n utilityValue = value.slice(matchedUtility.name.length + 1);\n category = matchedUtility.category!;\n priority = matchedUtility.priority!;\n } else {\n const parts = value.split('-');\n prefix = parts[0];\n utilityValue = parts.slice(1).join('-');\n }\n }\n }\n \n return {\n prefix,\n value: utilityValue,\n arbitrary: !!arbitrary,\n customProperty: !!customProperty,\n negative: !!negative,\n opacity,\n category,\n priority,\n };\n}","import { type AstNode } from \"./ast\";\nimport { escapeClassName } from \"./registry\";\n\nconst importantPrefix = \"!important\";\n\n/**\n * Converts AST nodes to CSS string\n * @param ast { AstNode[] } - Array of AST nodes to convert\n * @param baseSelector { string } - Base selector for nested rules (e.g., \".parent\" for \".parent .child\")\n * @param opts { minify?: boolean } - Options for CSS generation\n * @param _indent { string } - Current indentation level for pretty formatting\n */\nfunction astToCss(\n ast: AstNode[],\n baseSelector?: string,\n opts?: { minify?: boolean, important?: boolean },\n _indent = \"\"\n): string {\n const minify = opts?.minify;\n const indent = _indent;\n const nextIndent = _indent + \" \"; // Next-level indentation: current + 2 spaces\n const important = opts?.important ?? false;\n const importantString = important ? ` ${importantPrefix}` : \"\";\n // Note: Caching is handled at a higher level (IncrementalParser); omit here\n\n // Debug logging for empty AST\n if (!ast || ast.length === 0) {\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Empty AST received:', { ast, baseSelector, minify });\n return '';\n }\n\n // Deduplication logic: remove duplicates only among CSS property declarations (decl)\n // \n // How it works:\n // 1. Iterate in reverse (the last defined property wins)\n // 2. Only check duplicates for decl nodes (skip rule/at-rule)\n // 3. Consider duplicates by property name (prop)\n // \n // Current limitations:\n // - Does not dedupe rule or at-rule nodes\n // - When background.ts returns @supports + decl together, dedupe may not apply\n // - This can yield duplicate CSS rules in output\n const dedupedAst = [];\n if (Array.isArray(ast)) {\n const seenProps = new Map(); // Tracks property names already seen\n \n // Reverse iteration: keep the last defined property\n // Example: [color: red, color: blue] → keep only [color: blue]\n for (let i = ast.length - 1; i >= 0; i--) {\n const node = ast[i];\n \n if (node.type === \"decl\") {\n // Handle CSS property declaration nodes\n // node.important is not present; handle safely\n const key = node.prop; // Property name (e.g., \"color\", \"background-color\")\n \n // Skip duplicate properties\n if (seenProps.has(key)) {\n continue;\n }\n \n // Record new property\n seenProps.set(key, true);\n }\n \n // Add node to result (use unshift to preserve original order)\n dedupedAst.unshift(node);\n }\n }\n\n // Generate CSS string from deduped AST\n const result = dedupedAst\n .map((node) => {\n switch (node.type) {\n case \"decl\": {\n // Handle CSS property declaration (e.g., color: red;)\n const value = node.value;\n // node.important is absent; ignore\n if (node.prop.startsWith(\"--\")) {\n // Handle CSS custom property (e.g., --primary-color: #007bff;)\n if (minify) {\n const css = `${node.prop}: ${value}${importantString};`;\n // console.log(\"[astToCss] decl custom property minify\", css);\n return css;\n } else {\n const css = `${indent}${node.prop}: ${value}${importantString};`;\n // console.log(\"[astToCss] decl custom property pretty\", css);\n return css;\n }\n } else {\n const localIndent = minify ? \"\" : indent;\n const css = `${localIndent}${node.prop}: ${value}${importantString};`;\n return css;\n }\n }\n case \"rule\": {\n // Handle nested rule (e.g., .parent .child { ... })\n // \n // baseSelector handling logic:\n // 1. If baseSelector exists: combine to form \".parent .child\"\n // 2. If no baseSelector: keep as standalone \".child\"\n // 3. Replace '&' with baseSelector\n // 4. Pseudo selectors (e.g., :hover) append after baseSelector\n let selector = node.selector;\n \n if (baseSelector) {\n // When baseSelector exists: create nested rule\n const escBase = \".\" + escapeClassName(baseSelector); // Convert baseSelector to class form\n \n if (selector && selector.includes(\"&\")) {\n // Replace '&' with baseSelector\n // Example: \"&:hover\" → \".parent:hover\"\n selector = selector.replace(/&/g, escBase);\n } else if (!selector.startsWith(escBase)) {\n // If it does not start with baseSelector: prepend it\n selector = selector\n .split(\",\") // Handle multiple selectors separated by comma\n .map((sel) => {\n sel = sel.trim();\n \n if (sel.startsWith(\":\") || sel.startsWith(\"::\")) {\n // Pseudo selector: append directly after baseSelector\n // Example: \":hover\" → \".parent:hover\"\n return escBase + sel;\n } else {\n // Normal selector: separate with space from baseSelector\n // Example: \".child\" → \".parent .child\"\n return escBase + (sel.startsWith(\".\") ? \"\" : \" \") + sel;\n }\n })\n .join(\", \");\n }\n }\n \n // Create CSS rule\n if (minify) {\n const css = `${indent}${selector}{${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] rule minify\", css);\n return css;\n } else {\n const css = `${indent}${selector} {\\n${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] rule pretty\", css);\n return css;\n }\n }\n case \"style-rule\": {\n // Handle style-rule: top-level rule with complete selector\n // \n // baseSelector handling:\n // - Currently: pass baseSelector as-is\n // - Caveat: nested rules may not handle baseSelector correctly\n // - Example: .bg-white/60 { .nested { ... } } → .bg-white/60 .nested { ... }\n if (minify) {\n const css = `${indent}${node.selector} {${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] style-rule minify\", css);\n return css;\n } else {\n const css = `${indent}${node.selector} {\\n${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] style-rule pretty\", css, JSON.stringify(node, null, 2));\n return css;\n }\n }\n case \"at-rule\": {\n // Handle at-rule: @media, @supports, etc.\n // \n // baseSelector handling:\n // - Pass baseSelector to inner nodes of the at-rule\n // - Ensure nested rules get correct selectors\n // - Example: @media (min-width: 768px) { .parent .child { ... } }\n if (minify) {\n const css = `${indent}@${node.name} ${node.params}{${astToCss(\n node.nodes, // Recursively process inner nodes of the at-rule\n baseSelector, // Always propagate baseSelector so '&' resolves inside at-rules\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] at-rule minify\", css);\n return css;\n } else {\n const css = `${indent}@${node.name} ${node.params} {\\n${astToCss(\n node.nodes, // Recursively process inner nodes of the at-rule\n baseSelector, // Always propagate baseSelector so '&' resolves inside at-rules\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] at-rule pretty\", css);\n return css;\n }\n }\n case \"comment\":\n // Handle CSS comments (removed in minify mode)\n return minify ? \"\" : `${indent}/* ${node.text} */`;\n case \"raw\":\n // Handle raw CSS code (output as-is)\n return `${indent}${node.value}`;\n default:\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Unknown node type:', node);\n return \"\";\n }\n })\n .filter(Boolean) // Remove empty strings\n .join(minify ? \"\" : \"\\n\"); // Join nodes (minify: no whitespace, pretty: newlines)\n\n // Add trailing newline for consistency with expected format\n const finalResult = result + (minify ? \"\" : \"\\n\");\n \n // Debug logging for empty result\n if (!finalResult || finalResult.trim() === '') {\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Empty result generated:', { \n ast, \n baseSelector, \n minify, \n result, \n finalResult,\n dedupedAst \n });\n }\n \n return finalResult;\n}\n\nfunction rootToCss(nodes: AstNode[]): string {\n // console.log(\"[rootToCss] input\", { nodes });\n const result = nodes\n .map((node) => {\n const list: string[] = [];\n\n if (node.type === \"decl\") {\n list.push(`${node.prop}: ${node.value};`);\n } else if (node.type === \"at-rule\") {\n // console.log(\"[rootToCss] at-rule\", node);\n list.push(`@${node.name} ${node.params} {\n${node.nodes.map((node) => {\n // console.log(\"[rootToCss] node\", node);\n if (node.type === \"decl\") {\n return `\\t${node.prop}: ${node.value};`;\n }\n})\n.join(\"\\n\")}\n}`\n );\n }\n\n return list.join(\"\\n\");\n })\n .join(\"\\n\");\n\n // console.log(\"[rootToCss] result\", { nodes, result });\n return result;\n}\n\nexport { astToCss, rootToCss };\n","import { HasItems, HasName, HasParams, HasSelector, type AstNode, type HasNodes } from \"./ast\";\nimport { parseClassName } from \"./parser\";\nimport { astCache, parseResultCache } from \"../utils/cache\";\nimport { getUtility, getModifier } from \"./registry\";\nimport { Context } from \"./context\";\nimport { astToCss, rootToCss } from \"./astToCss\";\nimport { clearAllCaches } from \"../utils/cache\";\n\n// Failure cache for invalid class names\nconst failureCache = new Map<string, boolean>();\n\n/**\n * decl-to-root path collection function (reused in normalizeAstOrder, etc.)\n */\nexport type PathNode = Partial<AstNode>;\nexport type DeclPath = PathNode[];\n\n/**\n * collectDeclPaths\n * Collects all paths from AST tree to decl(leaf) (including variant chains).\n * - Input: AST node array\n * - Output: decl-to-root path(variant chain) array\n * - Usage: Used for path extraction for AST optimization/merging in optimizeAst, declPathToAst, etc.\n *\n * @param nodes AstNode[] - AST tree\n * @param path PathNode[] - Recursive use (initial value omitted)\n * @returns DeclPath[] - Array of paths to decl (variant chains)\n */\nexport function collectDeclPaths(\n nodes: AstNode[] = [],\n path: PathNode[] = []\n): DeclPath[] {\n let result: DeclPath[] = [];\n for (const node of nodes) {\n const curr = { ...node} as HasNodes;\n delete curr.nodes;\n\n const nodes = (node as HasNodes).nodes;\n if (node.type === \"decl\") {\n result.push([...path, curr]);\n } else if (nodes && nodes.length > 0) {\n result = result.concat(\n collectDeclPaths(nodes, [...path, curr])\n );\n }\n }\n return result;\n}\n\n// Sort criteria: at-rule > style-rule > rule > decl, depth first, sibling order preserved\nfunction getPriority(type: string): number {\n if (type === \"at-root\") return -1;\n if (type === \"at-rule\") return 0;\n if (type === \"style-rule\") return 10;\n if (type === \"rule\") return 20;\n return 30; // decl\n}\n\nconst sourcePriority: Record<string, number> = {\n media: 0, // @media\n supports: 1, // @supports\n container: 2, // @container\n responsive: 10, // sm:, md: etc.\n group: 20, // .group:hover &\n peer: 30, // .peer:focus ~ &\n dark: 40, // dark:\n universal: 50, // :is(), :where()\n data: 60, // [data-state=...]\n aria: 70, // [aria-pressed=...]\n attribute: 80, // [type=...]\n pseudo: 90, // :hover, :focus\n base: 100, // &\n starting: 110, // (root)\n};\n\nfunction getRulePriority(rule: Partial<AstNode>): number {\n return sourcePriority[rule.source || \"base\"] || 100;\n}\n\nconst mergeSelectorsBySource = (source: string, nodes: Partial<AstNode>[]) => {\n if (source === \"pseudo\") {\n // Inside → outside (reduce)\n return nodes.reduce((acc, sel) => {\n const selector = (sel as HasSelector).selector as string;\n if (acc === \"\") return selector;\n if (selector?.includes(\"&\")) return selector.replace(/&/, acc);\n return selector + \" \" + acc;\n }, \"\");\n } else {\n // Outside → inside (reduceRight)\n return nodes.reduceRight((acc, sel) => {\n const selector = (sel as HasSelector).selector as string;\n if (acc === \"\") return selector;\n if (selector?.includes(\"&\")) return selector.replace(/&/, acc);\n return selector + \" \" + acc;\n }, \"\");\n }\n};\n\n/**\n * declPathToAst\n * Converts decl-to-root path(variant chain) to actual nested AST.\n * - Input: DeclPath(variant chain)\n * - Output: Nested AstNode[]\n * - Consecutive same variants (same key) are merged, nested in outside→inside order\n *\n * @param declPath DeclPath\n * @returns AstNode[]\n */\nexport function declPathToAst(declPath: DeclPath): AstNode[] {\n if (!declPath || declPath.length === 0) return [];\n // Log type/selector/source for each node in declPath\n // 1. Separate decl (leaf) and variant chain\n const variants = declPath.slice(0, -1);\n const decl = declPath[declPath.length - 1];\n\n // 2. Keep existing sort/merge (hoist) logic\n const sortedVariants = [...variants].sort(\n (a, b) => getPriority(a.type!) - getPriority(b.type!)\n );\n\n // Add default rule handling for decl\n // 1. If first element is decl, add rule('&', [decl])\n // 2. If rule lacks '&' while child is decl, add current rule and rule('&', [decl])\n if (sortedVariants.length === 0) {\n if (decl.type === \"decl\") {\n // If first element is decl, add rule('&', [decl])\n sortedVariants.push({\n type: \"rule\",\n selector: \"&\",\n source: \"base\",\n });\n }\n } else {\n const last = sortedVariants[sortedVariants.length - 1];\n if (\n (last.type == \"at-rule\" && last.name !== \"property\") ||\n last.type == \"style-rule\" ||\n (last.type === \"rule\" && last.selector?.includes(\"&\") === false)\n ) {\n // console.log(\"[declPathToAst] add rule\", last);\n sortedVariants.push({\n type: \"rule\",\n selector: \"&\",\n source: \"base\",\n });\n }\n }\n\n const mergedVariants: typeof sortedVariants = [];\n for (const v of sortedVariants) {\n if (mergedVariants.length === 0) {\n mergedVariants.push(v);\n } else {\n const prev = mergedVariants[mergedVariants.length - 1];\n const isSame =\n v.type === prev.type &&\n ((v.type === \"at-rule\" &&\n prev.type === \"at-rule\" &&\n v.name === prev.name &&\n v.params === prev.params) ||\n ((v.type === \"rule\" || v.type === \"style-rule\") &&\n v.selector === (prev as HasSelector).selector));\n if (!isSame) {\n mergedVariants.push(v);\n }\n // else: skip(merge)\n }\n }\n // 3. Gather only rule nodes (consecutive rules only)\n const ruleSelectors: Partial<AstNode>[] = [];\n const nonRuleVariants: Partial<AstNode>[] = [];\n for (const v of mergedVariants) {\n if (v.type === \"rule\") ruleSelectors.push(v);\n else nonRuleVariants.push(v);\n }\n\n // 5. Compose selector and create a single rule\n let node: Partial<AstNode> = { ...decl };\n const sortedRuleSelectors = [...ruleSelectors].sort(\n (a, b) => getRulePriority(a) - getRulePriority(b)\n );\n if (sortedRuleSelectors.length > 0) {\n const grouped = sortedRuleSelectors.reduce((acc, rule) => {\n const key = rule.source || \"base\";\n if (!acc[key]) acc[key] = [];\n acc[key].push(rule);\n return acc;\n }, {} as Record<string, Partial<AstNode>[]>);\n // Detailed grouped log\n\n // 1. Sort by sourcePriority\n const mergedBySource = Object.entries(grouped)\n .sort(\n ([a], [b]) => (sourcePriority[a] ?? 999) - (sourcePriority[b] ?? 999)\n )\n .map(([source, nodes]) => {\n const merged = mergeSelectorsBySource(source, nodes);\n return merged;\n });\n\n // 2. Reduce from outside→inside (pseudo is always innermost)\n let acc = \"\";\n for (let i = 0; i < mergedBySource.length; i++) {\n const sel = mergedBySource[i];\n if (acc === \"\") acc = sel;\n else if (sel.includes(\"&\")) acc = sel.replace(/&/, acc);\n else acc = sel + \" \" + acc;\n }\n const finalSelector = acc;\n node = { type: \"rule\", selector: finalSelector, nodes: [node as AstNode] };\n }\n\n // 6. Nest remaining variants (e.g., at-rule) outside\n for (let i = nonRuleVariants.length - 1; i >= 0; i--) {\n node = { ...nonRuleVariants[i], nodes: [node as AstNode] };\n }\n\n return [node as AstNode];\n}\n\n/**\n * extractAtRootNodes\n * Extracts at-root nodes from AST tree and returns them as an array.\n * - Input: AstNode[]\n * - Output: AstNode[]\n * - Usage: Used in parseClassToAst for at-root node extraction\n *\n * @param nodes AstNode[]\n * @param parent AstNode\n * @param atRootNodes AstNode[]\n */\nfunction extractAtRootNodes(\n nodes: AstNode[],\n parent?: AstNode,\n atRootNodes: AstNode[] = []\n) {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (node.type === \"at-root\") {\n atRootNodes.push(node);\n delete nodes[i];\n } else if (node.type === \"rule\" || node.type === \"style-rule\") {\n extractAtRootNodes(node.nodes, node, atRootNodes);\n }\n }\n\n if (parent) {\n (parent as HasNodes).nodes = nodes.filter(Boolean) as AstNode[];\n }\n}\n\n/**\n * parseClassToAst\n * Parses className(including variant chain) to generate AST tree.\n * - Input: className(string), Context\n * - Output: AstNode[] (multiple roots possible for variant wrapping path)\n * - Perfectly supports variant wrapping structure (Cartesian product, nesting, siblings, etc.)\n * - Accumulates wrappers in wrappers and applies them from right to left.\n * - Can return multiple root asts.\n *\n * @param fullClassName string (e.g., 'sm:dark:hover:bg-red-500')\n * @param ctx Context\n * @returns AstNode[]\n *\n * @example\n * const ast = parseClassToAst('sm:dark:hover:bg-red-500', ctx);\n * // ast is an AST tree with sm, dark, hover variants nested\n */\nexport function parseClassToAst(\n fullClassName: string,\n ctx: Context\n): AstNode[] {\n // Check failure cache first\n if (failureCache.has(fullClassName)) {\n return [];\n }\n\n // Check AST cache first\n // Simpler cache key: className + context hash\n const contextHash = JSON.stringify({\n darkMode: ctx.config(\"darkMode\"),\n darkModeSelector: ctx.config(\"darkModeSelector\"),\n theme: ctx.theme,\n });\n const cacheKey = `${fullClassName}:${contextHash}`;\n if (astCache.has(cacheKey)) {\n return astCache.get(cacheKey)!;\n }\n\n const { modifiers, utility } = parseClassName(fullClassName);\n\n // console.log('[parseClassToAst] modifiers', modifiers, utility);\n\n if (!utility) {\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Invalid class name format: \"${fullClassName}\"`);\n failureCache.set(fullClassName, true);\n return [];\n }\n\n const utilReg = getUtility().find((u) => {\n const fullClassName = utility.value\n ? `${utility.prefix}-${utility.value}`\n : utility.prefix;\n return u.match(fullClassName);\n });\n // console.log('[parseClassToAst] utilReg', utilReg);\n if (!utilReg) {\n const utilityName = utility.value\n ? `${utility.prefix}-${utility.value}`\n : utility.prefix;\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Unknown utility class: \"${utilityName}\" in \"${fullClassName}\"`);\n failureCache.set(fullClassName, true);\n return [];\n }\n\n let value = utility.value;\n if (utility.negative && value) value = \"-\" + value;\n // console.log('[parseClassToAst] value', value, utility);\n let ast = utilReg.handler(value!, ctx, utility, utilReg) || [];\n\n // console.log('[parseClassToAst] ast', ast);\n\n const wrappers = [];\n const selector = \"&\";\n\n for (let i = 0; i < modifiers.length; i++) {\n const variant = modifiers[i];\n\n const plugin = getModifier().find((p) => p.match(variant.type, ctx));\n\n if (!plugin) {\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Unknown variant: \"${variant.type}\" in \"${fullClassName}\"`);\n continue;\n }\n\n if (plugin.wrap) {\n const items = plugin.wrap(variant, ctx);\n wrappers.push({\n type: \"wrap\",\n items: items,\n });\n continue;\n }\n if (plugin.modifySelector) {\n const result = plugin.modifySelector({\n selector,\n fullClassName,\n mod: variant,\n context: ctx,\n variantChain: modifiers,\n index: i,\n });\n if (typeof result === \"string\" && result.includes(\"&\")) {\n wrappers.push({ type: \"rule\", selector: result });\n } else if (typeof result === \"object\" && result.selector) {\n const wrappingType = result.wrappingType || \"rule\";\n wrappers.push({\n type: wrappingType,\n selector: result.selector,\n flatten: result.flatten,\n source: result.source,\n });\n } else if (Array.isArray(result)) {\n wrappers.push({\n type: \"wrap\",\n items: result.map((r) => ({\n type: r.wrappingType || \"rule\",\n selector: r.selector,\n source: r.source,\n flatten: r.flatten,\n })),\n });\n }\n }\n }\n\n // Nest wrappers in N→0 (right→left) order\n for (let i = wrappers.length - 1; i >= 0; i--) {\n const wrap = wrappers[i];\n\n if (wrap.type === \"wrap\") {\n ast = ((wrap as HasItems).items as AstNode[]).map((item) => ({\n ...item,\n nodes: Array.isArray(ast) ? ast : [ast],\n }));\n } else if (wrap.type === \"style-rule\") {\n ast = [\n {\n type: \"style-rule\",\n selector: wrap.selector!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n } else if (wrap.type === \"at-rule\") {\n ast = [\n {\n type: \"at-rule\",\n name: (wrap as HasName).name || \"media\",\n params: (wrap as HasParams).params!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n } else if (wrap.type === \"rule\") {\n ast = [\n {\n type: \"rule\",\n selector: wrap.selector!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n }\n }\n\n // console.log(\"[parseClassToAst] ast\", ast);\n\n // ast 에서 at-root 노드만 추출해서 ast 앞으로 추가\n // ast 내부에서는 at-root 노드를 제거\n // 재귀적으로 실행되어야 함\n const atRootNodes: AstNode[] = [];\n\n extractAtRootNodes(ast, undefined, atRootNodes);\n\n ast = [...atRootNodes, ...ast].filter(Boolean);\n\n // console.log(\"[parseClassToAst] ast\", ast);\n // Cache the result\n astCache.set(cacheKey, ast);\n\n return ast;\n}\n\n/**\n * Clear all AST caches (mainly for testing)\n */\nexport function clearAstCache(): void {\n clearAllCaches();\n failureCache.clear();\n}\n\n/**\n * generateCss\n * Takes multiple classNames and generates CSS for each, joining them.\n * - Input: classList(string), Context, options\n * - Output: string (result of joining multiple CSS blocks)\n * - Processes internally parseClassToAst → optimizeAst → astToCss in sequence\n * - Supports options like dedup, minify\n *\n * @param classList string (e.g., 'bg-red-500 text-lg hover:bg-blue-500')\n * @param ctx Context\n * @param opts { minify?: boolean, dedup?: boolean }\n * @returns string\n *\n * @example\n * const css = generateCss('sm:dark:hover:bg-red-500 sm:focus:bg-blue-500', ctx);\n */\nexport function generateCss(\n classList: string,\n ctx: Context,\n opts?: { minify?: boolean; dedup?: boolean }\n): string {\n const seen = new Set<string>();\n const allAtRootNodes: AstNode[] = [];\n\n const results = classList\n .split(/\\s+/)\n .filter((cls) => {\n if (!cls) return false;\n if (opts?.dedup) {\n if (seen.has(cls)) return false;\n seen.add(cls);\n }\n return true;\n })\n .map((cls) => {\n const ast = parseClassToAst(cls, ctx);\n const parsedResult = parseResultCache.get(cls);\n const cleanAst = optimizeAst(ast);\n\n cleanAst.forEach((node) => {\n if (node.type === \"at-root\") {\n allAtRootNodes.push(...node.nodes);\n }\n });\n\n // If style-rule already has a complete selector, do not pass baseSelector\n const hasStyleRule = cleanAst.some((node) => node.type === \"style-rule\");\n const css = astToCss(cleanAst, hasStyleRule ? undefined : cls, {\n minify: opts?.minify,\n important: parsedResult?.utility?.important ?? false,\n }); // Conditional baseSelector\n\n const rootCss = rootToCss(allAtRootNodes);\n const result = `${rootCss ? `:root,:host {${rootCss}}` : \"\"}${css}`;\n\n // Debug logging for empty CSS\n if (!result || result.trim() === \"\") {\n // eslint-disable-next-line no-console\n console.warn(\"[generateCss] Empty CSS generated for class:\", {\n class: cls,\n ast: cleanAst,\n hasStyleRule,\n css,\n rootCss,\n result,\n });\n }\n\n return result;\n })\n .join(opts?.minify ? \"\" : \"\\n\");\n\n if (allAtRootNodes.length > 0) {\n // eslint-disable-next-line no-console\n console.log(\"[generateCss] All collected atRoot nodes:\", allAtRootNodes);\n }\n\n // Debug logging for final result\n if (!results || results.trim() === \"\") {\n // eslint-disable-next-line no-console\n console.warn(\"[generateCss] Empty final result:\", {\n classList,\n results,\n allAtRootNodes,\n });\n }\n\n return results;\n}\n\nexport type GenerateCssRulesResult = {\n cls: string;\n ast: AstNode[];\n css: string;\n cssList: string[];\n rootCss: string;\n rootCssList: string[];\n};\n\n/**\n * Returns an array of optimized results for multiple class names with dedup/filter.\n * - Each object: { cls, ast, css }\n * - Supports minify, dedup options\n * - Applies astToCss(cleanAst, cls, opts) per class\n * @param classList string (space-separated)\n * @param ctx Context\n * @param opts { minify?: boolean; dedup?: boolean }\n * @returns Array<{ cls: string; ast: AstNode[]; css: string }>\n */\nexport function generateCssRules(\n classList: string,\n ctx: Context,\n opts?: { minify?: boolean; dedup?: boolean }\n): Array<GenerateCssRulesResult> {\n const seen = new Set<string>();\n const options = {\n minify: opts?.minify,\n dedup: opts?.dedup,\n };\n return classList\n .split(/\\s+/)\n .filter((cls) => {\n if (!cls) return false;\n if (opts?.dedup) {\n if (seen.has(cls)) return false;\n seen.add(cls);\n }\n return true;\n })\n .map((cls) => {\n // console.log(\"[generateCssRules] cls\", cls);\n const ast = parseClassToAst(cls, ctx);\n const cleanAst = optimizeAst(ast);\n\n // console.log(\"[generateCssRules] cleanAst\", cleanAst);\n\n const allAtRootNodes: AstNode[] = cleanAst\n .filter(\n (node) => node.type === \"at-root\" && !node.source\n )\n .map((node) => (node as HasNodes).nodes || [])\n .flat();\n const allCleanAst: AstNode[] = cleanAst.filter(\n (node) =>\n node.type !== \"at-root\" ||\n (node.type === \"at-root\" && node.source)\n );\n\n\n const cssList = [];\n for (const node of allCleanAst) {\n if (node.type === \"at-root\") {\n node.nodes.forEach((node) => {\n const css = astToCss([node], \"\", options);\n cssList.push(css);\n });\n } else {\n const css = astToCss([node], cls, options);\n cssList.push(css);\n }\n }\n // console.log('[generateCssRules] css', cls);\n const rootCssList = [];\n for (const node of allAtRootNodes) {\n const css = rootToCss([node]);\n rootCssList.push(css);\n }\n // console.log(\"[generateCssRules] rootCss\", rootCssList, allAtRootNodes);\n return {\n cls,\n ast: allCleanAst,\n css: cssList.join(options.minify ? \"\" : \"\\n\"),\n cssList,\n rootCss: rootCssList.join(options.minify ? \"\" : \"\\n\"),\n rootCssList,\n };\n });\n}\n\n/**\n * mergeAstTreeList\n * Takes a list of declPathToAst results (AstNode[][]), merges same at-rule(name, params) etc., and returns the final AST tree.\n * - Input: AstNode[][] (nested ASTs of multiple decl-to-root paths)\n * @returns AstNode[]\n * - Usage: Used in optimizeAst for final AST merging/optimization\n *\n * @param astList AstNode[][]\n * @returns AstNode[]\n */\nexport function mergeAstTreeList(astList: AstNode[][]): AstNode[] {\n // AstNode[][] → DeclPath[]\n const declPaths: DeclPath[] = astList.map((ast) => {\n // declPathToAst always returns [rootNode]\n const path: AstNode[] = [];\n let node = ast[0];\n while (node) {\n path.push({ ...node, nodes: undefined } as AstNode & HasNodes);\n if ((node as HasNodes).nodes && (node as HasNodes)?.nodes?.length === 1)\n node = (node as HasNodes).nodes?.[0] as AstNode;\n else break;\n }\n return path;\n });\n // Recursive merge\n function merge(declPaths: DeclPath[], depth = 0): AstNode[] {\n if (declPaths.length === 0) return [];\n if (declPaths[0].length === depth + 1) {\n // All decls remain\n return declPaths.map((path) => path[depth]) as AstNode[];\n }\n // Group by variant(type+key) at current depth\n const groupMap = new Map<string, DeclPath[]>();\n for (const path of declPaths) {\n const node = path[depth];\n let key = node.type;\n if (node.type === \"at-rule\") key += \":\" + node.name + \":\" + node.params;\n else if (node.type === \"rule\" || node.type === \"style-rule\")\n key += \":\" + node.selector;\n else key += \":\" + JSON.stringify(node);\n if (!groupMap.has(key!)) groupMap.set(key!, []);\n groupMap.get(key!)!.push(path);\n }\n // Recursive merge for each group\n const result: AstNode[] = [];\n for (const [, group] of groupMap.entries()) {\n const node = group[0][depth];\n const children = merge(group, depth + 1);\n result.push(\n children.length\n ? ({ ...node, nodes: children as AstNode[] } as AstNode & HasNodes)\n : ({ ...node } as AstNode & HasNodes)\n );\n }\n return result;\n }\n const merged = merge(declPaths);\n return merged;\n}\n/**\n * optimizeAst\n * Merges/organizes AST generated by parseClassToAst into an optimized AST tree based on decl-to-root path.\n * - Input: AstNode[] (result of parseClassToAst)\n * - Output: Optimized AST tree (AstNode[])\n * - Uses collectDeclPaths, declPathToAst, mergeAstTreeList internally\n * - Reflects all variant wrapping structures (nesting, siblings, merging, etc.)\n *\n * @param ast AstNode[]\n * @returns AstNode[]\n */\nexport function optimizeAst(ast: AstNode[]): AstNode[] {\n // console.log(\"[optimizeAst] ast\", ast);\n const declPaths = collectDeclPaths(ast);\n // console.log(\"[optimizeAst] declPaths\", declPaths);\n const astList = declPaths.map(declPathToAst);\n // console.log(\"[optimizeAst] astList\", astList);\n const merged = mergeAstTreeList(astList);\n // console.log(\"[optimizeAst] merged\", merged);\n\n return merged;\n}\n","import { parseClassName } from './parser';\nimport { parseClassToAst, generateCssRules, GenerateCssRulesResult } from './engine';\nimport type { Context } from './context';\nimport { astCache } from '../utils/cache';\n\n/**\n * Incremental parsing system for efficient class processing\n * \n * This class provides an optimized approach to CSS class processing by:\n * - Tracking processed classes to avoid redundant work\n * - Batching multiple class operations for better performance\n * - Supporting both synchronous and asynchronous processing modes\n * \n * ## Usage Patterns\n * \n * ### Universal Usage (Node.js & Browser)\n * ```typescript\n * const parser = new IncrementalParser(ctx);\n * \n * // Process classes synchronously\n * const results = parser.processClasses(['bg-blue-500', 'text-lg']);\n * \n * // Process single class\n * const result = parser.processClass('bg-red-500');\n * \n * // Get statistics\n * const stats = parser.getStats();\n * ```\n * \n * ### Browser Integration\n * ```typescript\n * const parser = new IncrementalParser(ctx);\n * const BrowserRuntime = new BrowserRuntime();\n * \n * // Process classes and manually inject CSS\n * const results = parser.processClasses(['bg-blue-500', 'text-lg']);\n * results.forEach(result => {\n * if (result.css) {\n * BrowserRuntime.insertRule(result.css);\n * }\n * });\n * \n * // Use with ChangeDetector for automatic DOM monitoring\n * const detector = new ChangeDetector(parser);\n * detector.observe(document.body, { scan: true });\n * ```\n * \n * ## Architecture\n * \n * - **IncrementalParser**: Pure CSS processing (works in Node.js and browser)\n * - **ChangeDetector**: Browser-only DOM monitoring (uses MutationObserver)\n * - **BrowserRuntime**: Browser-only CSS injection (uses DOM APIs)\n */\nexport class IncrementalParser {\n /** Set of class names that have already been processed to avoid duplicates */\n private processedClasses = new Set<string>();\n \n /** BAROCSS context for theme and utility resolution */\n private ctx: Context;\n \n /** Maximum number of classes to process in a single batch */\n private batchSize = 50;\n \n /** Debounce delay for batch processing in milliseconds */\n private debounceMs = 16;\n \n /** Set of classes waiting to be processed */\n private pendingClasses = new Set<string>();\n \n /** Timer for debounced batch processing */\n private batchTimer: number | null = null;\n\n /**\n * Create a new IncrementalParser instance\n * \n * @param ctx - BAROCSS context for theme and utility resolution\n */\n constructor(ctx: Context) {\n this.ctx = ctx;\n }\n\n /**\n * Processes a single CSS class and generates its AST and CSS representation\n * \n * This method performs the complete pipeline for a single class:\n * 1. Checks if the class has already been processed\n * 2. Parses the class name to extract utility information\n * 3. Generates the Abstract Syntax Tree (AST)\n * 4. Converts the AST to CSS rules\n * 5. Marks the class as processed to avoid future duplicates\n * \n * @param className - The CSS class name to process (e.g., 'bg-blue-500')\n * @returns Object containing AST and CSS, or null if processing failed or class was already processed\n */\n processClass(className: string): GenerateCssRulesResult | null {\n // Check if already processed\n if (this.processedClasses.has(className)) {\n // console.log('[IncrementalParser] Class already processed:', className);\n return null; // Already processed\n }\n\n try { \n // Parse class\n const parseResult = parseClassName(className);\n \n if (!parseResult.utility) {\n return null;\n }\n\n // Generate AST\n const ast = parseClassToAst(className, this.ctx);\n\n // console.log('[IncrementalParser] ast', className, ast);\n \n if (ast.length === 0) {\n // eslint-disable-next-line no-console\n console.warn('[IncrementalParser] ast is empty', className);\n return null;\n }\n\n // Generate CSS using the same method as runtime\n const rules = generateCssRules(className, this.ctx, { dedup: false });\n \n if (rules.length === 0) {\n return null;\n }\n\n const rule = rules[0];\n if (!rule.css) {\n return null;\n }\n\n // Mark as processed\n this.processedClasses.add(className);\n\n return { \n cls: className, \n ast, \n css: rule.css, \n cssList: rule.cssList, \n rootCss: rule.rootCss,\n rootCssList: rule.rootCssList\n };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('[IncrementalParser] Failed to process class:', className, error);\n return null;\n }\n }\n\n /**\n * Processes multiple CSS classes in batches for optimal performance\n * \n * This method handles multiple classes efficiently by:\n * - Filtering out already processed classes to avoid redundant work\n * - Processing classes in configurable batch sizes\n * - Returning comprehensive results for each processed class\n * \n * @param classes - Array of CSS class names to process\n * @returns Array of processing results, each containing className, AST, and CSS\n */\n processClasses(classes: string[]): Array<GenerateCssRulesResult> {\n const results: Array<GenerateCssRulesResult> = [];\n const newClasses = classes.filter(cls => !this.processedClasses.has(cls));\n\n if (newClasses.length === 0) {\n return results; // All classes already processed\n }\n\n // Process in batches for better performance\n for (let i = 0; i < newClasses.length; i += this.batchSize) {\n const batch = newClasses.slice(i, i + this.batchSize);\n \n for (const className of batch) {\n const result = this.processClass(className);\n if (result) {\n results.push(result);\n }\n };\n }\n\n return results;\n }\n\n /**\n * Adds classes to the pending queue for asynchronous batch processing\n * \n * This method is used by the ChangeDetector when new classes are discovered\n * in the DOM. Classes are queued and processed together to minimize\n * performance impact from frequent DOM mutations.\n * \n * @param classes - Array of CSS class names to queue for processing\n */\n addToPending(classes: string[]): void {\n classes.forEach(cls => this.pendingClasses.add(cls));\n this.scheduleBatchProcessing();\n }\n\n /**\n * Schedule batch processing with debouncing\n * \n * This method uses setTimeout to debounce rapid class additions\n * and process them in batches for better performance.\n */\n private scheduleBatchProcessing(): void {\n if (this.batchTimer) {\n clearTimeout(this.batchTimer);\n }\n\n if (typeof window !== 'undefined') {\n this.batchTimer = window.setTimeout(() => {\n this.processPendingClasses();\n }, this.debounceMs);\n } else {\n // In server environment, process immediately\n this.processPendingClasses();\n }\n }\n\n /**\n * Process pending classes from the queue\n * \n * This method is called by the debounced timer to process\n * all classes that have been added to the pending queue.\n */\n private processPendingClasses(): void {\n if (this.pendingClasses.size === 0) return;\n\n const classesToProcess = Array.from(this.pendingClasses);\n this.pendingClasses.clear();\n\n // Use common method for processing\n this.applyClasses(classesToProcess);\n }\n\n /**\n * Core method that processes classes and marks them as processed\n * \n * This is the common processing logic used by both pending and synchronous\n * processing methods. It:\n * 1. Processes the provided classes using the batch processor\n * 2. Marks classes as processed to prevent duplicates\n * \n * @param classes - Array of CSS class names to process\n */\n private applyClasses(classes: string[]): void {\n this.processClasses(classes);\n \n // Mark classes as processed\n classes.forEach(cls => {\n this.markProcessed(cls);\n });\n }\n\n /**\n * Returns comprehensive statistics about the incremental parser's state\n * \n * This method provides detailed metrics including:\n * - Number of processed classes\n * - Number of pending classes\n * - Cache statistics from AST and CSS caches\n * \n * @returns Object containing processing statistics and cache information\n */\n getStats() {\n return {\n processedClasses: this.processedClasses.size,\n pendingClasses: this.pendingClasses.size,\n cacheStats: {\n ast: astCache.getStats(),\n css: {} // No CSS cache, so return empty object\n }\n };\n }\n\n /**\n * Clears all processed classes and pending queue\n * \n * This method is useful when the theme or configuration changes,\n * requiring all classes to be reprocessed. It:\n * - Clears the processed classes set\n * - Clears the pending classes queue\n * - Cancels any pending batch processing timer\n */\n clearProcessed(): void {\n this.processedClasses.clear();\n this.pendingClasses.clear();\n if (this.batchTimer && typeof window !== 'undefined') {\n clearTimeout(this.batchTimer);\n this.batchTimer = null;\n }\n }\n\n /**\n * Checks if a specific class has been processed\n * \n * @param cls - The CSS class name to check\n * @returns True if the class has been processed, false otherwise\n */\n isProcessed(cls: string): boolean {\n return this.processedClasses.has(cls);\n }\n\n /**\n * Marks a class as processed to prevent future duplicate processing\n * \n * @param cls - The CSS class name to mark as processed\n */\n markProcessed(cls: string): void {\n this.processedClasses.add(cls);\n }\n\n /**\n * Process classes synchronously and update BrowserRuntime cache\n * This method is used by ChangeDetector for scan operations\n */\n processClassesSync(classes: string[]): void {\n this.applyClasses(classes);\n }\n\n /**\n * Returns all currently processed class names\n * \n * This method is useful for debugging and monitoring purposes,\n * providing visibility into which classes have been processed.\n * \n * @returns Array of all processed class names\n */\n getProcessedClasses(): string[] {\n return Array.from(this.processedClasses);\n }\n}\n","// Collection of converters from theme categories to CSS variables (v4 style)\n// Each function takes a category theme object and returns Record<string, string>\n// Namespace/naming rules aligned with v4\n\nimport type { Theme } from './context';\n\n// Global CSS variable prefix helper\nlet CSS_VAR_PREFIX = '--bcss-';\n\nfunction normalizePrefix(prefix: string): string {\n let p = prefix.trim();\n if (!p.startsWith('--')) p = `--${p}`;\n if (!p.endsWith('-')) p = `${p}-`;\n return p;\n}\n\nexport function setVarPrefix(prefix: string | undefined): void {\n if (typeof prefix !== 'string' || prefix.trim() === '') {\n CSS_VAR_PREFIX = '--bcss-';\n return;\n }\n CSS_VAR_PREFIX = normalizePrefix(prefix);\n}\n\nexport function getVarName(key: string): string {\n return `${CSS_VAR_PREFIX}${key}`;\n}\n\n// Aliases for brevity\nexport const varName = getVarName;\nexport function v(key: string): string { return getVarName(key); }\n\nfunction escapeKey(key: string): string {\n return key.replace('.', '\\\\.');\n}\n\n/**\n * colors: { blue: { 500: '#123456' }, red: { 500: '#ff0000' } }\n * → { '--color-blue-500': '#123456', '--color-red-500': '#ff0000' }\n */\nexport function colorsToCssVars(colors?: Record<string, unknown>): Record<string, string> {\n if (!colors) return {};\n const result: Record<string, string> = {};\n function walk(obj: Record<string, unknown>, prefix: string[] = []) {\n for (const key in obj) {\n const value = obj[key] as unknown;\n if (typeof value === 'object' && value !== null) {\n walk(value as Record<string, unknown>, [...prefix, key]);\n } else {\n const varName = '--color-' + [...prefix, key].join('-');\n result[varName] = value as string;\n }\n }\n }\n walk(colors);\n return result;\n}\n\n/**\n * boxShadow: { lg: '0 10px 15px ...', ... }\n * → { '--shadow-lg': '...' }\n */\nexport function boxShadowToCssVars(boxShadow?: Record<string, unknown>): Record<string, string> {\n if (!boxShadow) return {};\n const result: Record<string, string> = {};\n for (const key in boxShadow) {\n result[`--shadow-${key}`] = boxShadow[key] as string;\n }\n return result;\n}\n\n/**\n * fontSize: { xs: ['0.75rem', '1rem'], ... }\n * → { '--text-xs': '0.75rem', '--text-xs--line-height': '1rem' }\n */\nexport function fontSizeToCssVars(fontSize?: Record<string, unknown>): Record<string, string> {\n if (!fontSize) return {};\n const result: Record<string, string> = {};\n for (const key in fontSize) {\n const value = fontSize[key] as unknown;\n if (Array.isArray(value)) {\n result[`--text-${key}`] = value[0] as string;\n if (value[1]) result[`--text-${key}--line-height`] = value[1];\n } else {\n result[`--text-${key}`] = value as string;\n }\n }\n // console.log('[fontSizeToCssVars] result', result);\n return result;\n}\n\n/**\n * fontWeight: { normal: '400', ... }\n * → { '--font-weight-normal': '400' }\n */\nexport function fontWeightToCssVars(fontWeight?: Record<string, unknown>): Record<string, string> {\n if (!fontWeight) return {};\n const result: Record<string, string> = {};\n for (const key in fontWeight) {\n result[`--font-weight-${key}`] = fontWeight[key] as string;\n }\n return result;\n}\n\n/**\n * fontFamily: { sans: ['ui-sans-serif', ...], ... }\n * → { '--font-sans-0': 'ui-sans-serif', ... }\n */\nexport function fontFamilyToCssVars(fontFamily?: Record<string, unknown>): Record<string, string> {\n if (!fontFamily) return {};\n const result: Record<string, string> = {};\n for (const key in fontFamily) {\n const value = fontFamily[key] as unknown;\n if (Array.isArray(value)) {\n result[`--font-${key}`] = value.join(', ');\n } else {\n result[`--font-${key}`] = value as string;\n }\n }\n return result;\n}\n\n/**\n * letterSpacing: { tight: '0.05em', ... }\n * → { '--letter-spacing-tight': '0.05em' }\n */\nexport function letterSpacingToCssVars(letterSpacing?: Record<string, unknown>): Record<string, string> {\n if (!letterSpacing) return {};\n const result: Record<string, string> = {};\n for (const key in letterSpacing) {\n result[`--letter-spacing-${key}`] = letterSpacing[key] as string;\n }\n return result;\n}\n\n/**\n * spacing: { 0: '0px', 1: '0.25rem', ... }\n * → { '--spacing-0': '0px', '--spacing-1': '0.25rem', ... }\n */\nexport function spacingToCssVars(spacing?: Record<string, unknown>): Record<string, string> {\n if (!spacing) return {};\n const result: Record<string, string> = {};\n for (const key in spacing) {\n result[`--spacing-${escapeKey(key)}`] = spacing[key] as string;\n }\n return result;\n}\n\n/**\n * borderRadius: { xl: '0.75rem', ... }\n * → { '--radius-xl': '0.75rem' }\n */\nexport function borderRadiusToCssVars(borderRadius?: Record<string, unknown>): Record<string, string> {\n if (!borderRadius) return {};\n const result: Record<string, string> = {};\n for (const key in borderRadius) {\n result[`--radius-${escapeKey(key)}`] = borderRadius[key] as string;\n }\n return result;\n}\n\n/**\n * zIndex: { 10: '10', ... }\n * → { '--z-10': '10' }\n */\nexport function zIndexToCssVars(zIndex?: Record<string, unknown>): Record<string, string> {\n if (!zIndex) return {};\n const result: Record<string, string> = {};\n for (const key in zIndex) {\n result[`--z-${escapeKey(key)}`] = String(zIndex[key] as number);\n }\n return result;\n}\n\n/**\n * opacity: { 50: '0.5', ... }\n * → { '--opacity-50': '0.5' }\n */\nexport function opacityToCssVars(opacity?: Record<string, unknown>): Record<string, string> {\n if (!opacity) return {};\n const result: Record<string, string> = {};\n for (const key in opacity) {\n result[`--opacity-${escapeKey(key)}`] = String(opacity[key] as number);\n }\n return result;\n}\n\n/**\n * animations: { spin: 'spin 1s linear infinite', ... }\n * → { '--animate-spin': 'spin 1s linear infinite' }\n */\nexport function animationToCssVars(animations?: Record<string, unknown>): Record<string, string> {\n if (!animations) return {};\n const result: Record<string, string> = {};\n for (const key in animations) {\n result[`--animate-${escapeKey(key)}`] = animations[key] as string;\n }\n return result;\n}\n\n/**\n * keyframes: { spin: { 'to': { transform: 'rotate(360deg)' } }, ... }\n * → Requires separate @keyframes block generation (variable conversion omitted here)\n */\nexport function keyframesToCss(keyframes?: Record<string, unknown>): string {\n if (!keyframes) return '';\n let css = '';\n for (const name in keyframes) {\n const frames = keyframes[name] as unknown;\n css += `@keyframes ${name} {\\n`;\n for (const step in frames as Record<string, unknown>) {\n css += ` ${step} {`;\n const props = (frames as Record<string, unknown>)[step] as Record<string, unknown>;\n for (const prop in props) {\n css += ` ${prop}: ${props[prop] as string};`;\n }\n css += ' }\\n';\n }\n css += '}\\n';\n }\n return css;\n}\n\n/**\n * transition: { duration: '150ms', ... }\n * → { '--transition-duration': '150ms' }\n */\nexport function transitionTimingFunctionToCssVars(transition: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in transition) {\n\n if (key === 'DEFAULT') {\n result[`--default-transition-timing-function`] = transition[key];\n } else {\n result[`--transition-timing-function-${escapeKey(key)}`] = transition[key];\n }\n }\n return result;\n}\n\n/**\n * transitionDuration: { DEFAULT: '150ms', ... }\n * → { '--default-transition-duration': '150ms' }\n */\nexport function transitionDurationToCssVars(transitionDuration: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in transitionDuration) {\n if (key === 'DEFAULT') {\n result[`--default-transition-duration`] = transitionDuration[key];\n } else {\n result[`--transition-duration-${escapeKey(key)}`] = transitionDuration[key];\n }\n }\n return result;\n}\n\n\n/**\n * transitionDelay: { DEFAULT: '0ms', ... }\n * → { '--default-transition-delay': '0ms' }\n */\nexport function transitionDelayToCssVars(transitionDelay: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const key in transitionDelay) {\n if (key === 'DEFAULT') {\n result[`--default-transition-delay`] = transitionDelay[key];\n } else {\n result[`--transition-delay-${escapeKey(key)}`] = transitionDelay[key];\n }\n } \n return result;\n}\n\n/**\n * blur: { DEFAULT: '0px', ... }\n * → { '--default-blur': '0px' }\n */\nexport function blurToCssVars(blur: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in blur) {\n if (key === 'DEFAULT') {\n result[`--default-blur`] = blur[key];\n } else {\n result[`--blur-${escapeKey(key)}`] = blur[key];\n }\n }\n return result;\n}\n\n/**\n * container: { 1: '1rem', ... }\n * → { '--container-1': '1rem' }\n */\nexport function containerToCssVars(container: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in container) {\n result[`--container-${escapeKey(key)}`] = container[key];\n }\n return result;\n}\n\n/**\n * themeToCssVarsAll: merge CSS variables from major theme categories\n */\nexport function themeToCssVarsAll(theme: Theme): Record<string, string> {\n return {\n ...colorsToCssVars(theme.colors! as Record<string, unknown>),\n ...boxShadowToCssVars(theme.boxShadow! as Record<string, unknown>),\n ...fontSizeToCssVars(theme.fontSize! as Record<string, unknown>),\n ...fontWeightToCssVars(theme.fontWeight! as Record<string, unknown>),\n ...fontFamilyToCssVars(theme.fontFamily! as Record<string, unknown>),\n ...letterSpacingToCssVars(theme.letterSpacing! as Record<string, unknown>),\n '--spacing': (theme.spacing! as Record<string, unknown>)['1'] as string,\n ...spacingToCssVars(theme.spacing! as Record<string, unknown>),\n ...containerToCssVars(theme.container! as Record<string, string>),\n ...borderRadiusToCssVars(theme.borderRadius! as Record<string, unknown>),\n ...zIndexToCssVars(theme.zIndex! as Record<string, unknown>),\n ...opacityToCssVars(theme.opacity! as Record<string, unknown>),\n ...animationToCssVars(theme.animations! as Record<string, unknown>),\n ...transitionTimingFunctionToCssVars(theme.transitionTimingFunction! as Record<string, string>),\n ...transitionDurationToCssVars(theme.transitionDuration! as Record<string, string>),\n ...transitionDelayToCssVars(theme.transitionDelay! as Record<string, string>),\n ...blurToCssVars(theme.blur! as Record<string, string>),\n // keyframes handled separately\n };\n}\n\n/**\n * toCssVarsBlock: convert Record<string, string> → :root { ... } CSS block string\n */\nexport function toCssVarsBlock(vars: Record<string, string>, extra: string = ''): string {\n return ':root,:host {\\n' + Object.entries(vars).map(([k, v]) => ` ${k}: ${v};`).join('\\n') + '\\n}\\n' + extra + '\\n';\n} ","// BaroCSS Preflight CSS as TypeScript variables\n// This eliminates the need for ?raw imports and improves compatibility\n\nexport const preflightMinimalCSS = `\n/* BaroCSS Preflight - Minimal Reset */\n/* ================================= */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n`;\n\nexport const preflightStandardCSS = `\n/* BaroCSS Preflight - Standard Reset */\n/* ================================== */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* Additional standard resets */\nhtml {\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n}\n\n/* Remove the gray background on active links in IE 10 */\na {\n background-color: transparent;\n}\n\n/* Add the correct font weight in Chrome, Edge, and Safari */\nb,\nstrong {\n font-weight: bolder;\n}\n\n/* Prevent sub and sup elements from affecting the line height */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Improve media defaults */\nsvg {\n vertical-align: middle;\n}\n\n/* Remove border on iframe */\niframe {\n border: 0;\n}\n\n/* Table defaults */\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n/* Form element defaults */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Remove the inner border and padding in Firefox */\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/* Restore the focus styles unset by the previous rule */\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Correct the padding in Firefox */\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/* Remove padding so developers aren't caught out when they zero out fieldset elements */\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\n/* Add the correct vertical alignment in Chrome, Firefox, and Opera */\nprogress {\n vertical-align: baseline;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n`;\n\nexport const preflightFullCSS = `\n/* BaroCSS Preflight - Full Reset */\n/* =============================== */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure, \nfooter, header, hgroup, menu, nav, section {\n display: block;\n}\n\n/* Additional full resets */\nhtml {\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n}\n\n/* Remove the gray background on active links in IE 10 */\na {\n background-color: transparent;\n text-decoration: none;\n color: inherit;\n}\n\n/* Add the correct font weight in Chrome, Edge, and Safari */\nb,\nstrong {\n font-weight: bolder;\n}\n\n/* Prevent sub and sup elements from affecting the line height */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Improve media defaults */\nsvg {\n vertical-align: middle;\n}\n\n/* Remove border on iframe */\niframe {\n border: 0;\n}\n\n/* Table defaults */\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n/* Form element defaults */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Remove the inner border and padding in Firefox */\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/* Restore the focus styles unset by the previous rule */\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Correct the padding in Firefox */\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/* Remove padding so developers aren't caught out when they zero out fieldset elements */\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\n/* Add the correct vertical alignment in Chrome, Firefox, and Opera */\nprogress {\n vertical-align: baseline;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Additional full reset styles */\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\n/* Add the correct font size in all browsers */\nsmall {\n font-size: 80%;\n}\n\n/* Prevent overflow of the container in all browsers */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Add the correct display in IE 9 */\naudio,\nvideo {\n display: inline-block;\n}\n\n/* Add the correct display in IE */\ntemplate {\n display: none;\n}\n\n/* Hidden attribute */\n[hidden] {\n display: none;\n}\n\n/* Focus styles */\n:focus {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n}\n\n/* Skip link for accessibility */\n.skip-link {\n position: absolute;\n top: -40px;\n left: 6px;\n background: #000;\n color: white;\n padding: 8px;\n text-decoration: none;\n z-index: 100;\n}\n\n.skip-link:focus {\n top: 6px;\n}\n\n/* Print styles */\n@media print {\n *,\n *::before,\n *::after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n \n a,\n a:visited {\n text-decoration: underline;\n }\n \n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n \n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n \n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n \n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n \n thead {\n display: table-header-group;\n }\n \n tr,\n img {\n page-break-inside: avoid;\n }\n \n img {\n max-width: 100% !important;\n }\n \n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n \n h2,\n h3 {\n page-break-after: avoid;\n }\n}\n`;\n","import { defaultTheme } from \"../theme\";\nimport { keyframesToCss, themeToCssVarsAll, toCssVarsBlock, setVarPrefix } from \"./cssVars\";\nimport { clearAllCaches } from \"../utils/cache\";\nimport { preflightMinimalCSS, preflightStandardCSS, preflightFullCSS } from \"../css/preflight\";\n\ntype PreflightLevel = 'minimal' | 'standard' | 'full' | true | false;\n\ntype Function = (...args: unknown[]) => unknown;\ntype ContextRecord = Record<string, unknown>;\n\nexport function getPreflightCSS(level: PreflightLevel = true): string {\n if (level === 'minimal') {\n return preflightMinimalCSS;\n } else if (level === 'standard') {\n return preflightStandardCSS;\n } else if (level === 'full') {\n return preflightFullCSS;\n } else if (level === true) {\n return preflightFullCSS;\n } else if (level === false) {\n return '';\n }\n return '';\n}\n\n// Types for theme/config/context\nexport interface Theme {\n extend?: Theme;\n [namespace: string]: unknown;\n}\n\nexport interface Config {\n prefix?: string; // prefix for class names, default is 'barocss-'\n cssVarPrefix?: string; // prefix for generated CSS custom properties, default '--bcss-'\n /**\n * Modern dark mode strategy\n * - 'media': uses @media (prefers-color-scheme: dark)\n * - 'class': uses .dark selector\n * - string[]: custom selectors (e.g. ['class', '[data-theme=\"dark\"]'])\n */\n darkMode?: 'media' | 'class' | string[];\n theme?: Theme;\n presets?: { theme: Theme }[];\n\n /**\n * Whether to include preflight CSS\n * - 'minimal': Minimal preflight CSS\n * - 'standard': Standard preflight CSS\n * - 'full': Full preflight CSS\n * - true: Full preflight CSS (default)\n * - false: No preflight CSS\n * \n * default: true (full preflight)\n */\n preflight?: PreflightLevel;\n /**\n * Whether to clear all caches when context is created/changed\n * - true (default): Clear all caches on context change\n * - false: Keep existing caches\n */\n clearCacheOnContextChange?: boolean;\n [key: string]: unknown;\n}\n\nexport const defaultConfig: Config = {\n prefix: 'barocss-',\n darkMode: 'media', // same as default\n};\n\nexport interface Context {\n hasPreset: (category: string, preset: string) => boolean;\n theme: (...path: (string|number)[]) => unknown;\n config: (...path: (string|number)[]) => unknown;\n themeToCssVars: (prefix?: string) => string;\n // Safe API for extending theme from plugins\n extendTheme: (category: string, values: Record<string, unknown> | Function) => void;\n getPreflightCSS: (level?: PreflightLevel) => string;\n}\n\n// Deep merge utility\nexport function deepMerge<T extends Record<string, unknown>>(base: T, override: Partial<T>): T {\n const result: Record<string, unknown> = {};\n const keys = new Set([\n ...Object.keys(base || {}),\n ...Object.keys(override || {}),\n ]);\n for (const key of keys) {\n const skey = String(key);\n const baseVal = base && typeof base === 'object' ? (base as T)[skey] : undefined;\n const overrideVal = override && typeof override === 'object' ? (override as T)[skey] : undefined;\n if (\n overrideVal &&\n typeof overrideVal === 'object' &&\n !Array.isArray(overrideVal)\n ) {\n result[skey] = deepMerge(\n (typeof baseVal === 'object' && baseVal !== null) ? baseVal as T : {} as T,\n overrideVal\n );\n } else if (overrideVal !== undefined) {\n result[skey] = overrideVal;\n } else {\n result[skey] = baseVal;\n }\n }\n return result as T;\n}\n\nexport type ThemeGetter = (...path: (string|number)[]) => unknown;\n\nlet staticInProgress: Set<string> | undefined;\n\n/**\n * Modern theme getter for BAROCSS\n *\n * - Supports category-level (first path segment) function values only.\n * - If the category (e.g., 'spacing', 'colors') is a function, it will be executed with the theme getter as argument.\n * - This allows dynamic theme extension and plugin-style patterns, e.g.:\n * spacing: (theme) => ({ ...theme('spacing'), '72': '18rem' })\n * - Leaf (property) functions are NOT supported and will be ignored (returns undefined).\n * - Infinite recursion is prevented: If the exact same path is being resolved recursively (directly or indirectly), undefined is returned for that call.\n * - Category-level functions can safely call theme('category.otherKey') for dynamic references.\n * - Only true recursion on the same path is blocked.\n * - All theme lookups (theme('category.key')) will always re-execute the category function if present, ensuring dynamic resolution.\n *\n * @param themeObj - The theme object (possibly with category functions)\n * @param path - Path segments (string or number), or dot-path string (e.g. 'colors.red.500')\n * @returns The resolved theme value, or undefined if not found or if a leaf function is encountered\n *\n * @example\n * const theme = {\n * spacing: (theme) => ({ 1: '0.25rem', 2: theme('spacing.1') }),\n * };\n * themeGetter(theme, 'spacing.2'); // '0.25rem'\n *\n * @example\n * // Infinite recursion is prevented:\n * const theme = {\n * spacing: (theme) => theme('spacing.1'),\n * };\n * themeGetter(theme, 'spacing.1'); // undefined\n */\nexport function themeGetter(themeObj: Theme, ...path: (string | number)[]): unknown {\n // The theme getter function itself, passed to category functions for dynamic resolution\n const theme: ThemeGetter = (...args: (string | number)[]) => themeGetter(themeObj, ...args);\n\n // Parse the path: support both dot-path string and array of segments\n let keys: (string | number)[] = [];\n if (path.length === 1 && typeof path[0] === 'string' && path[0].includes('.')) {\n keys = path[0].split('.');\n } else {\n if (path[0] === 'colors' && typeof path[1] === 'string' && path[1].includes('-')) {\n // colors.red-500 → colors.red.500 (only for color names with numbers)\n // But custom-blue should remain as custom-blue\n const colorKey = path[1] as string;\n if (colorKey.match(/^[a-zA-Z]+-\\d+$/)) {\n // Only split if it's a pattern like \"red-500\", \"blue-600\", etc.\n keys = colorKey.split('-');\n keys = [path[0], ...keys];\n } else {\n // For custom keys like \"custom-blue\", keep as is\n keys = path;\n }\n } else {\n keys = path;\n }\n }\n if (keys.length === 0) return undefined;\n\n // Infinite recursion protection: track currently resolving full paths\n // If the exact same path is being resolved recursively, return undefined\n staticInProgress = staticInProgress || new Set();\n const pathKey = keys.join('.');\n if (staticInProgress?.has(pathKey)) return undefined;\n staticInProgress?.add(pathKey);\n\n // Get the category value (could be a function or object)\n let value = themeObj[keys[0]];\n // console.log(`[themeGetter] category '${keys[0]}' value:`, value, `type:`, typeof value);\n \n // If the category is a function, execute it with the theme getter\n // This enables dynamic theme extension and plugin-style patterns\n if (typeof value === 'function') {\n // console.log(`[themeGetter] executing category function for '${keys[0]}'`);\n value = value(theme);\n // console.log(`[themeGetter] category function result:`, value);\n }\n\n // Traverse the rest of the path (leaf keys)\n for (let i = 1; i < keys.length; i++) {\n // console.log(`[themeGetter] traversing key '${keys[i]}', current value:`, value);\n if (value == null) {\n // console.log(`[themeGetter] value is null/undefined at key '${keys[i]}'`);\n staticInProgress?.delete(pathKey);\n return undefined;\n }\n value = (value as Record<string, unknown>)[keys[i]];\n // console.log(`[themeGetter] after accessing '${keys[i]}', value:`, value);\n }\n\n staticInProgress?.delete(pathKey);\n // If the final value is a function (leaf function), do NOT execute it\n // Only category-level functions are supported; leaf functions are ignored\n if (typeof value === 'function') {\n return undefined;\n }\n\n // Return the resolved value (static or dynamically generated)\n // console.log(`[themeGetter] final result:`, value);\n return value;\n}\n\n// config getter\nexport function configGetter(config: ContextRecord, ...path: (string|number)[]): unknown {\n let keys: (string|number)[] = [];\n if (path.length === 1 && typeof path[0] === 'string' && path[0].includes('.')) {\n keys = path[0].split('.');\n } else {\n keys = path;\n }\n return keys.reduce((acc: unknown, key) => (acc ? (acc as Record<string, unknown>)[key] : undefined), config) as unknown as ContextRecord;\n}\n\n// hasPreset\nexport function hasPreset(themeObj: Theme, category: string, preset: string): boolean {\n return (themeObj[category] as string[])?.includes?.(preset) as boolean;\n}\n\n// resolveTheme\nexport function resolveTheme(config: Config): Theme {\n let theme: Theme = {};\n if (config.presets) {\n for (const preset of config.presets) {\n if (preset.theme) {\n theme = deepMerge(theme, preset.theme);\n }\n }\n }\n if (config.theme) {\n const { extend, ...overrideTheme } = config.theme as Theme;\n theme = deepMerge(theme, overrideTheme); // switch from shallowMerge to deepMerge\n if (extend) {\n theme = deepMerge(theme, extend);\n }\n }\n return theme;\n}\n\n\nexport function themeToCssVars(theme: Theme): string {\n const vars = themeToCssVarsAll(theme);\n // console.log('[themeToCssVars] vars', vars);\n const result = toCssVarsBlock(vars, `\n${keyframesToCss((theme.keyframes || {}) as Record<string, unknown>)}\n`);\n\n// console.log('[themeToCssVars] result', result);\n\n return result;\n}\n\n// createContext\nexport function createContext(configObj: Config): Context {\n // Automatically include defaultTheme as the base preset\n const configWithDefaults = {\n presets: [\n { theme: defaultTheme }, // always include defaultTheme as base preset\n ...(configObj.presets || [])\n ],\n ...configObj\n };\n // Initialize global CSS var prefix\n setVarPrefix(configWithDefaults.cssVarPrefix || '--bcss-');\n \n const themeObj = resolveTheme(configWithDefaults);\n \n // Auto-clear caches on context change (optional)\n if (configObj.clearCacheOnContextChange !== false) {\n clearAllCaches();\n }\n\n // 1. Declare ctx first as an object\n const ctx: Context = {\n hasPreset: (category: string, preset: string): boolean => {\n const result = hasPreset(themeObj, category, preset);\n // console.log(`[hasPreset] category: ${category}, preset: ${preset} =>`, result);\n return result as boolean;\n },\n theme: (...args) => {\n const result = themeGetter(themeObj, ...args);\n // console.log(`[theme] path:`, args, `=>`, result);\n return result;\n },\n config: (...args) => {\n const result = configGetter(configWithDefaults, ...args);\n // console.log(`[config] path:`, args, `=>`, result);\n return result;\n },\n themeToCssVars: () => themeToCssVars(themeObj),\n // Safe API for theme extension from plugins\n extendTheme: (category: string, values: Record<string, unknown> | Function) => {\n // console.log(`[extendTheme] category: ${category}, values:`, values);\n \n if (typeof values === 'function') {\n // If it's a function, execute with theme getter\n const themeFunction = values as (theme: ThemeGetter) => unknown;\n const result = themeFunction(ctx.theme);\n if (result && typeof result === 'object') {\n // Merge with existing values\n const existingValues = themeObj[category] || {} as Record<string, unknown>;\n themeObj[category] = {\n ...existingValues,\n ...result\n };\n // console.log(`[extendTheme] function result merged for ${category}:`, themeObj[category]);\n }\n } else if (typeof values === 'object' && values !== null && !Array.isArray(values)) {\n // Get existing category values\n const existingValues = themeObj[category] || {} as Record<string, unknown>;\n \n // Merge existing and new values\n themeObj[category] = {\n ...existingValues,\n ...values\n };\n // console.log(`[extendTheme] merged ${category}:`, themeObj[category]);\n } else {\n // console.warn(`[extendTheme] Invalid values for category ${category}:`, values);\n }\n },\n getPreflightCSS: (level: PreflightLevel = true) => {\n return getPreflightCSS(level);\n }\n };\n\n // 2. Property assignment (functions reference themeObj, configWithDefaults, etc.)\n // ctx.hasPreset = (category: string, preset: string) => {\n // const result = hasPreset(themeObj, category, preset);\n // console.log(`[hasPreset] category: ${category}, preset: ${preset} =>`, result);\n // return result;\n // };\n // ctx.theme = (...args) => {\n // const value = themeGetter(themeObj, ...args);\n // console.log(`[theme] path:`, args, '=>', value);\n // return value;\n // };\n // ctx.config = (...args) => {\n // const value = configGetter(configWithDefaults, ...args);\n // console.log(`[config] path:`, args, '=>', value);\n // return value;\n // };\n // ctx.plugins = configWithDefaults.plugins ?? [];\n // ctx.themeToCssVars = () => themeToCssVars(themeObj);\n\n return ctx;\n} ","import { AstNode } from \"./ast\";\nimport { Context } from \"./context\";\nimport { getModifier, getUtility } from \"./registry\";\nimport { ParsedUtility, ParsedModifier } from \"./parser\";\nimport { astToCss, rootToCss } from \"./astToCss\";\nimport { optimizeAst } from \"./engine\";\n\n/**\n * The structured input format for BaroCSS engine.\n * Designed to be easily generated by AI models.\n */\nexport type BaroJsonInput = {\n /**\n * The core utility to apply.\n * Corresponds to the utility class name in Tailwind (e.g., 'bg-red-500', 'p-4').\n */\n utility: {\n /**\n * The utility prefix.\n * @example 'bg', 'text', 'p', 'm', 'flex', 'hidden'\n */\n name: string;\n\n /**\n * The value of the utility.\n * Optional for boolean utilities like 'flex', 'hidden'.\n * @example 'red-500', '4', 'lg', '#123456'\n */\n value?: string;\n\n /**\n * Whether the value is an arbitrary value (JIT).\n * @default false\n * @example true for 'bg-[#123456]'\n */\n arbitrary?: boolean;\n\n /**\n * Whether the value is negative.\n * @default false\n * @example true for '-m-4'\n */\n negative?: boolean;\n\n /**\n * Opacity modifier for colors.\n * @example '50' for 'bg-red-500/50'\n */\n opacity?: string;\n\n /**\n * Whether the value is a custom property.\n * @default false\n * @example true for 'bg-(--my-bg)'\n */\n customProperty?: boolean;\n\n /**\n * Whether the utility is marked as important (!).\n * @default false\n * @example true for '!bg-red-500'\n */\n important?: boolean;\n };\n\n /**\n * List of variants/modifiers to apply.\n * Applied from outside to inside (left to right in string format).\n * @example ['hover', 'focus'] for 'hover:focus:bg-red-500'\n */\n variants?: Array<string | BaroVariant>;\n};\n\n/**\n * Detailed configuration for a variant.\n */\nexport type BaroVariant = {\n /**\n * The name of the variant.\n * @example 'hover', 'focus', 'sm', 'data', 'group-hover'\n */\n name: string;\n\n /**\n * The value for parameterized variants.\n * @example 'open' for 'data-[state=open]'\n */\n value?: string;\n\n /**\n * Whether the variant is arbitrary.\n * @default false\n * @example true for 'min-[320px]'\n */\n arbitrary?: boolean;\n};\n\n/**\n * Converts a single BaroJsonInput object into an AST tree.\n * Bypasses string parsing and directly invokes utility/modifier handlers.\n *\n * @param input BaroJsonInput object\n * @param ctx Context\n * @returns AstNode[]\n */\nexport function jsonToAst(input: BaroJsonInput, ctx: Context): AstNode[] {\n // 1. Find Utility Handler\n // Try to find exact match first (e.g. 'text-center' from { name: 'text', value: 'center' })\n let utilReg = getUtility().find((u) => u.name === input.utility.name);\n\n if (input.utility.value && !input.utility.arbitrary && !input.utility.customProperty) {\n const fullName = `${input.utility.name}-${input.utility.value}`;\n const exactMatch = getUtility().find((u) => u.name === fullName);\n if (exactMatch) {\n utilReg = exactMatch;\n // If exact match found, the value is consumed by the name, so we pass empty string or the value itself depending on handler\n // Static utilities usually ignore the value argument if they are exact matches.\n }\n }\n\n if (!utilReg) {\n // eslint-disable-next-line no-console\n console.warn(`[jsonToAst] Unknown utility: \"${input.utility.name}\"`);\n return [];\n }\n\n // 2. Construct ParsedUtility object (mocking the parser output)\n const parsedUtility: ParsedUtility = {\n prefix: input.utility.name,\n value: input.utility.value,\n arbitrary: input.utility.arbitrary,\n negative: input.utility.negative,\n opacity: input.utility.opacity,\n important: input.utility.important,\n customProperty: input.utility.customProperty,\n category: utilReg.category,\n priority: utilReg.priority,\n };\n\n // 3. Generate Initial AST\n // Handle negative value logic if needed (similar to parser)\n let value = input.utility.value;\n if (input.utility.negative && value) {\n value = \"-\" + value;\n }\n\n // If we found an exact match (e.g. text-center), the handler might expect the value to be part of the name or handled differently.\n // Static utilities (like text-center) usually don't use the value argument.\n // Functional utilities (like text) use the value argument.\n // We pass the value as is.\n let ast = utilReg.handler(value || \"\", ctx, parsedUtility, utilReg) || [];\n\n // 4. Apply Variants (Modifiers)\n // Variants are applied from right to left (inner to outer) in the string representation\n // e.g., sm:hover:bg-red-500 -> hover wraps bg, then sm wraps hover\n // In JSON, variants are usually listed [sm, hover].\n // To wrap correctly (sm(hover(bg))), we process from right to left (hover then sm).\n\n type Wrapper = {\n type: string;\n items?: AstNode[];\n selector?: string;\n flatten?: boolean;\n source?: string;\n name?: string;\n params?: string;\n };\n\n if (input.variants && input.variants.length > 0) {\n const wrappers: Wrapper[] = [];\n const selector = \"&\"; // Base selector\n\n // Process variants from right to left\n for (let i = input.variants.length - 1; i >= 0; i--) {\n const variantInput = input.variants[i];\n const variantName =\n typeof variantInput === \"string\" ? variantInput : variantInput.name;\n const variantValue =\n typeof variantInput === \"string\" ? undefined : variantInput.value;\n const variantArbitrary =\n typeof variantInput === \"string\" ? false : variantInput.arbitrary;\n\n // Construct ParsedModifier object\n const parsedModifier: ParsedModifier = {\n type: variantName,\n value: variantValue,\n arbitrary: variantArbitrary,\n };\n\n let matchKey = variantName;\n\n // Arbitrary variant handling (e.g. min-[320px] or [dir=\"rtl\"])\n if (variantArbitrary && variantValue) {\n if (variantName) {\n // Named arbitrary variant: min-[320px]\n matchKey = `${variantName}-[${variantValue}]`;\n parsedModifier.type = matchKey;\n } else {\n // Pure arbitrary variant: [dir=\"rtl\"]\n matchKey = `[${variantValue}]`;\n parsedModifier.type = matchKey;\n }\n } else if (variantValue) {\n // Parameterized variant (e.g. data-[state=open])\n // The registry match function usually expects the full string like 'data-[state=open]'\n matchKey = `${variantName}-[${variantValue}]`;\n parsedModifier.type = matchKey;\n }\n\n const plugin = getModifier().find((p) => p.match(matchKey, ctx));\n\n if (!plugin) {\n // eslint-disable-next-line no-console\n console.warn(`[jsonToAst] Unknown variant: \"${matchKey}\"`);\n continue;\n }\n\n // Apply Modifier Logic (Wrap or Modify Selector)\n // This logic mirrors parseClassToAst in engine.ts\n if (plugin.wrap) {\n const items = plugin.wrap(parsedModifier, ctx);\n wrappers.push({\n type: \"wrap\",\n items: items,\n });\n continue;\n }\n\n if (plugin.modifySelector) {\n const result = plugin.modifySelector({\n selector,\n fullClassName: \"JSON_GENERATED\", // Placeholder\n mod: parsedModifier,\n context: ctx,\n variantChain: [], // We might need to pass the full chain if needed\n index: i,\n });\n\n if (typeof result === \"string\" && result.includes(\"&\")) {\n wrappers.push({ type: \"rule\", selector: result });\n } else if (typeof result === \"object\" && !Array.isArray(result) && (result as { selector?: string }).selector) {\n const r = result as { selector: string; wrappingType?: string; flatten?: boolean; source?: string };\n const wrappingType = r.wrappingType || \"rule\";\n wrappers.push({\n type: wrappingType,\n selector: r.selector,\n flatten: r.flatten,\n source: r.source,\n });\n } else if (Array.isArray(result)) {\n // result is array of objects\n wrappers.push({\n type: \"wrap\",\n items: (result as any[]).map((r) => ({\n type: r.wrappingType || \"rule\",\n selector: r.selector,\n source: r.source,\n nodes: [], // Placeholder, will be filled when wrapping\n } as unknown as AstNode)),\n });\n }\n }\n }\n\n // Nest wrappers (Wrappers are collected in reverse order of application, so we iterate to apply)\n for (let i = 0; i < wrappers.length; i++) {\n const wrap = wrappers[i];\n // Application logic same as engine.ts\n if (wrap.type === \"wrap\") {\n ast = (wrap.items as AstNode[]).map((item) => ({\n ...item,\n nodes: Array.isArray(ast) ? ast : [ast],\n }));\n } else if (wrap.type === \"style-rule\") {\n ast = [\n {\n type: \"style-rule\",\n selector: wrap.selector!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n } else if (wrap.type === \"at-rule\") {\n ast = [\n {\n type: \"at-rule\",\n name: wrap.name || \"media\",\n params: wrap.params!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n } else if (wrap.type === \"rule\") {\n ast = [\n {\n type: \"rule\",\n selector: wrap.selector!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n }\n }\n }\n\n return ast;\n}\n\n/**\n * Generates CSS from a list of BaroJsonInput objects.\n *\n * @param inputs Array of BaroJsonInput\n * @param ctx Context\n * @param opts Options (minify, etc.)\n * @returns CSS string\n */\nexport function generateCssFromJson(\n inputs: BaroJsonInput[],\n ctx: Context,\n opts?: { minify?: boolean }\n): string {\n const allAtRootNodes: AstNode[] = [];\n const cssList: string[] = [];\n\n inputs.forEach((input) => {\n // 1. Convert JSON to AST\n const ast = jsonToAst(input, ctx);\n\n // 2. Optimize AST (dedup, merge, sort)\n const cleanAst = optimizeAst(ast);\n\n // 3. Extract at-root nodes\n cleanAst.forEach((node) => {\n if (node.type === \"at-root\") {\n allAtRootNodes.push(...node.nodes);\n }\n });\n\n // 4. Generate CSS for this block\n // We need a class name for the selector if it's not self-contained.\n // However, jsonToAst typically generates generic structures.\n // astToCss needs a baseSelector if the AST doesn't have one (e.g. style-rule).\n // But wait, standard utilities usually generate a rule with '&' or similar.\n // optimizeAst merges them.\n // If we don't provide a baseSelector to astToCss, it might fail if the rule is just '&'.\n // We need to decide:\n // A. Generate a hash class name?\n // B. Expect the user to provide a class name in JSON?\n // C. Use a generic class name?\n //\n // For now, let's assume the user wants the pure CSS properties or the AST is self-contained.\n // BUT, standard Tailwind utilities rely on the class name selector (e.g. .bg-red-500).\n // If we generate CSS, we need a selector.\n //\n // Let's auto-generate a class name based on the input if possible, or use a placeholder.\n // For this implementation, let's reconstruct a class-like name for the selector.\n\n let reconstructedName = input.utility.name;\n if (input.utility.value) reconstructedName += `-${input.utility.value}`;\n if (input.utility.arbitrary) reconstructedName = `${input.utility.name}-[${input.utility.value}]`;\n if (input.variants) {\n const variantsStr = input.variants.map(v => typeof v === 'string' ? v : v.name).join(':');\n reconstructedName = `${variantsStr}:${reconstructedName}`;\n }\n // Escape it\n // We can use a simple placeholder if we don't care about the class name matching exactly.\n // But for \"generateCss\", usually we want the class definition.\n\n const hasStyleRule = cleanAst.some((node) => node.type === \"style-rule\");\n const css = astToCss(cleanAst, hasStyleRule ? undefined : `.${reconstructedName.replace(/[^a-zA-Z0-9-_]/g, '\\\\$&')}`, {\n minify: opts?.minify,\n important: input.utility.important ?? false,\n });\n\n if (css) cssList.push(css);\n });\n\n const rootCss = rootToCss(allAtRootNodes);\n const finalCss = `${rootCss ? `:root,:host {${rootCss}}` : \"\"}${cssList.join(opts?.minify ? \"\" : \"\\n\")}`;\n\n return finalCss;\n}\n","// Value parsing helpers inspired by value-parser.ts\n\n/**\n * Extracts the value from [arbitrary] syntax, or returns null if not arbitrary.\n */\nexport function parseArbitraryValue(input: string): string | null {\n return input.startsWith('[') && input.endsWith(']') ? input.slice(1, -1) : null;\n}\n\n/**\n * Parses a fraction string (e.g., '1/2') and returns a percentage string (e.g., '50%'), or null if not a valid fraction.\n */\nexport function parseFraction(input: string): string | null {\n if (input.includes('/')) {\n const [num, denom] = input.split('/').map(Number);\n if (!isNaN(num) && !isNaN(denom) && denom !== 0) {\n return `${(num / denom) * 100}%`;\n }\n }\n return null;\n}\n\n/**\n * Returns the input if it is a valid non-negative integer string, else null.\n * \n * @example\n * parseNumber(\"10\") // \"10\"\n * parseNumber(\"-10\") // \"-10\"\n * parseNumber(\"10.5\") // \"10.5\"\n */\nexport function parseNumber(input: string): string | null {\n // Accept integers and decimals (e.g., 1, -2, 1.5, -0.25)\n return /^-?\\d+(?:\\.\\d+)?$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input if it is a valid non-negative integer string, else null.\n * \n * @example\n * parseInteger(\"10\") // \"10\"\n * parseInteger(\"-10\") // null\n * parseInteger(\"10.5\") // null\n */\nexport function parseInteger(input: string): string | null {\n return /^-?\\d+$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input if it is a valid length string, else null.\n */\nexport function parseLength(input: string): string | null {\n return /^\\d+(px|em|rem|vh|vw|vmin|vmax|%|in|cm|mm|pt|pc|ex|ch|fr)$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input without a leading '-' if negative, else null.\n */\nexport function parseNegative(input: string): string | null {\n return input.startsWith('-') ? input.slice(1) : null;\n}\n\n/**\n * Returns the input if it is a valid CSS var() expression, else null.\n */\nexport function parseVar(input: string): string | null {\n return input.startsWith('var(') && input.endsWith(')') ? input : null;\n}\n\n/**\n * Unified parser for fraction or number, with options for percent or repeat syntax.\n * - percent: if true, returns percentage for fraction (e.g., '1/2' -> '50%')\n * - repeat: if true, returns repeat() for number (e.g., '3' -> 'repeat(3, minmax(0, 1fr))')\n */\nexport function parseFractionOrNumber(value: string, opts: { percent?: boolean; repeat?: boolean } = {}): string | null {\n if (/^\\d+$/.test(value)) {\n if (opts.repeat) return `repeat(${value}, minmax(0, 1fr))`;\n return value;\n }\n if (value.includes('/')) {\n const [numerator, denominator] = value.split('/').map(Number);\n if (!isNaN(numerator) && !isNaN(denominator) && denominator !== 0) {\n const result = numerator / denominator;\n if (opts.percent) return `${result * 100}%`;\n return result.toString();\n }\n }\n return null;\n} \n\nconst CSS_COLOR_NAMES = new Set([\n \"aliceblue\",\n \"antiquewhite\",\n \"aqua\",\n \"aquamarine\",\n \"azure\",\n \"beige\",\n \"bisque\",\n \"black\",\n \"blanchedalmond\",\n \"blue\",\n \"blueviolet\",\n \"brown\",\n \"burlywood\",\n \"cadetblue\",\n \"chartreuse\",\n \"chocolate\",\n \"coral\",\n \"cornflowerblue\",\n \"cornsilk\",\n \"crimson\",\n \"cyan\",\n \"darkblue\",\n \"darkcyan\",\n \"darkgoldenrod\",\n \"darkgray\",\n \"darkgreen\",\n \"darkgrey\",\n \"darkkhaki\",\n \"darkmagenta\",\n \"darkolivegreen\",\n \"darkorange\",\n \"darkorchid\",\n \"darkred\",\n \"darksalmon\",\n \"darkseagreen\",\n \"darkslateblue\",\n \"darkslategray\",\n \"darkslategrey\",\n \"darkturquoise\",\n \"darkviolet\",\n \"deeppink\",\n \"deepskyblue\",\n \"dimgray\",\n \"dimgrey\",\n \"dodgerblue\",\n \"firebrick\",\n \"floralwhite\",\n \"forestgreen\",\n \"fuchsia\",\n \"gainsboro\",\n \"ghostwhite\",\n \"gold\",\n \"goldenrod\",\n \"gray\",\n \"grey\",\n \"green\",\n \"greenyellow\",\n \"honeydew\",\n \"hotpink\",\n \"indianred\",\n \"indigo\",\n \"ivory\",\n \"khaki\",\n \"lavender\",\n \"lavenderblush\",\n \"lawngreen\",\n \"lemonchiffon\",\n \"lightblue\",\n \"lightcoral\",\n \"lightcyan\",\n \"lightgoldenrodyellow\",\n \"lightgray\",\n \"lightgreen\",\n \"lightgrey\",\n \"lightpink\",\n \"lightsalmon\",\n \"lightseagreen\",\n \"lightskyblue\",\n \"lightslategray\",\n \"lightslategrey\",\n \"lightsteelblue\",\n \"lightyellow\",\n \"lime\",\n \"limegreen\",\n \"linen\",\n \"magenta\",\n \"maroon\",\n \"mediumaquamarine\",\n \"mediumblue\",\n \"mediumorchid\",\n \"mediumpurple\",\n \"mediumseagreen\",\n \"mediumslateblue\",\n \"mediumspringgreen\",\n \"mediumturquoise\",\n \"mediumvioletred\",\n \"midnightblue\",\n \"mintcream\",\n \"mistyrose\",\n \"moccasin\",\n \"navajowhite\",\n \"navy\",\n \"oldlace\",\n \"olive\",\n \"olivedrab\",\n \"orange\",\n \"orangered\",\n \"orchid\",\n \"palegoldenrod\",\n \"palegreen\",\n \"paleturquoise\",\n \"palevioletred\",\n \"papayawhip\",\n \"peachpuff\",\n \"peru\",\n \"pink\",\n \"plum\",\n \"powderblue\",\n \"purple\",\n \"red\",\n \"rosybrown\",\n \"royalblue\",\n \"saddlebrown\",\n \"salmon\",\n \"sandybrown\",\n \"seagreen\",\n \"seashell\",\n \"sienna\",\n \"silver\",\n \"skyblue\",\n \"slateblue\",\n \"slategray\",\n \"slategrey\",\n \"snow\",\n \"springgreen\",\n \"steelblue\",\n \"tan\",\n \"teal\",\n \"thistle\",\n \"tomato\",\n \"turquoise\",\n \"violet\",\n \"wheat\",\n \"white\",\n \"whitesmoke\",\n \"yellow\",\n \"yellowgreen\",\n]);\n\n/**\n * Returns the input if it is a valid color string, else null.\n *\n * #rgb, #rgba, #rrggbb, #rrggbbaa, rgb(r, g, b), rgb(r, g, b, a), hsl(h, s, l), hsl(h, s, l, a), hwb(h, w, b), hwb(h, w, b, a), lab(l, a, b), lab(l, a, b, a), lch(l, c, h), lch(l, c, h, a), oklab(l, a, b), oklab(l, a, b, a), oklch(l, c, h), oklch(l, c, h, a), color-mix(in oklab, var(--color-blue-500) 60%, transparent)\n */\nexport function parseColor(input: string): string | null {\n\n // CSS named colors\n if (CSS_COLOR_NAMES.has(input.toLowerCase())) {\n return input;\n }\n\n if (input.startsWith('color:var(')) {\n return input.slice(6);\n }\n\n if (input.startsWith('color:')) {\n return parseColor(input.slice(6));\n }\n\n // hex\n if (input.startsWith('#') && input.length === 4) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 5) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 7) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 9) {\n return `#${input.slice(1)}`;\n }\n\n\n // rgb\n if (input.startsWith('rgb(')) {\n return input.slice(4, -1);\n }\n\n // rgba\n if (input.startsWith('rgba(')) {\n return input.slice(5, -1);\n }\n\n // hsl\n if (input.startsWith('hsl(')) {\n return input.slice(4, -1);\n }\n\n // hsla\n if (input.startsWith('hsla(')) {\n return input.slice(5, -1);\n }\n\n // hwb\n if (input.startsWith('hwb(')) {\n return input.slice(4, -1);\n }\n\n // lab\n if (input.startsWith('lab(')) {\n return input.slice(4, -1);\n }\n\n // lch\n if (input.startsWith('lch(')) {\n return input.slice(4, -1);\n }\n\n // oklab\n if (input.startsWith('oklab(')) {\n return input.slice(5, -1);\n }\n\n // oklch\n if (input.startsWith('oklch(')) {\n return input.slice(6, -1);\n }\n\n // color-mix\n if (input.startsWith('color-mix(')) {\n return input.slice(9, -1);\n }\n\n\n return null;\n}","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Accent Color Utilities ---\n// accent-color documentation\n\n// Theme color utilities (e.g. accent-inherit, accent-blue-500)\n// (Assume theme color registration is handled elsewhere, or extend as needed)\n\nstaticUtility(\"accent-inherit\", [[\"accent-color\", \"inherit\"]], { category: 'interactivity' });\nstaticUtility(\"accent-current\", [[\"accent-color\", \"currentColor\"]], { category: 'interactivity' });\nstaticUtility(\"accent-transparent\", [[\"accent-color\", \"transparent\"]], { category: 'interactivity' });\n\n// Functional: arbitrary value (accent-[value])\nfunctionalUtility({\n name: \"accent\",\n themeKeys: [\"colors\"],\n supportsOpacity: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"accent-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"accent-color\", value),\n ];\n }\n\n return [decl(\"accent-color\", `var(--color-${extra.realThemeValue})`)];\n }\n\n return [decl(\"accent-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"accent-color\", `var(${value})`)],\n description: \"accent-color utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Appearance Utilities ---\n// appearance documentation\n\n// appearance-none: removes native form control styling\nstaticUtility(\"appearance-none\", [[\"appearance\", \"none\"]], { category: 'interactivity' });\n// appearance-auto: restores default browser styling\nstaticUtility(\"appearance-auto\", [[\"appearance\", \"auto\"]], { category: 'interactivity' });\n\n// --- Caret Color Utilities ---\n// caret-color documentation\n\n// Static caret colors\nstaticUtility(\"caret-inherit\", [[\"caret-color\", \"inherit\"]], { category: 'interactivity' });\nstaticUtility(\"caret-current\", [[\"caret-color\", \"currentColor\"]], { category: 'interactivity' });\nstaticUtility(\"caret-transparent\", [[\"caret-color\", \"transparent\"]], { category: 'interactivity' });\n\n// Theme color utilities (e.g. caret-blue-500)\n// (Assume theme color registration is handled elsewhere)\n\n// Functional: arbitrary value (caret-[value]) and custom property (caret-(--my-caret))\nfunctionalUtility({\n name: \"caret\",\n themeKeys: [\"colors\"],\n supportsOpacity: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"caret-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"caret-color\", value),\n ];\n }\n\n return [decl(\"caret-color\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"caret-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"caret-color\", `var(${value})`)],\n description:\n \"caret-color utility (static, theme, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Color Scheme Utilities ---\n// color-scheme documentation\n\n// scheme-normal: color-scheme: normal;\nstaticUtility(\"scheme-normal\", [[\"color-scheme\", \"normal\"]], { category: 'interactivity' });\n// scheme-dark: color-scheme: dark;\nstaticUtility(\"scheme-dark\", [[\"color-scheme\", \"dark\"]], { category: 'interactivity' });\n// scheme-light: color-scheme: light;\nstaticUtility(\"scheme-light\", [[\"color-scheme\", \"light\"]], { category: 'interactivity' });\n// scheme-light-dark: color-scheme: light dark;\nstaticUtility(\"scheme-light-dark\", [[\"color-scheme\", \"light dark\"]], { category: 'interactivity' });\n// scheme-only-dark: color-scheme: only dark;\nstaticUtility(\"scheme-only-dark\", [[\"color-scheme\", \"only dark\"]], { category: 'interactivity' });\n// scheme-only-light: color-scheme: only light;\nstaticUtility(\"scheme-only-light\", [[\"color-scheme\", \"only light\"]], { category: 'interactivity' });\n\n// --- Cursor Utilities ---\n// cursor documentation\n\n// Static cursor values\n[\n \"auto\",\n \"default\",\n \"pointer\",\n \"wait\",\n \"text\",\n \"move\",\n \"help\",\n \"not-allowed\",\n \"none\",\n \"context-menu\",\n \"progress\",\n \"cell\",\n \"crosshair\",\n \"vertical-text\",\n \"alias\",\n \"copy\",\n \"no-drop\",\n \"grab\",\n \"grabbing\",\n \"all-scroll\",\n \"col-resize\",\n \"row-resize\",\n \"n-resize\",\n \"e-resize\",\n \"s-resize\",\n \"w-resize\",\n \"ne-resize\",\n \"nw-resize\",\n \"se-resize\",\n \"sw-resize\",\n \"ew-resize\",\n \"ns-resize\",\n \"nesw-resize\",\n \"nwse-resize\",\n \"zoom-in\",\n \"zoom-out\",\n].forEach((cursor) => {\n staticUtility(`cursor-${cursor}`, [[\"cursor\", cursor]], { category: 'interactivity' });\n});\n\n// Functional: custom property (cursor-(--my-cursor)) and arbitrary value (cursor-[value])\nfunctionalUtility({\n name: \"cursor\",\n prop: \"cursor\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"cursor utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Field Sizing Utilities ---\n// field-sizing documentation\n\n// field-sizing-fixed: field-sizing: fixed;\nstaticUtility(\"field-sizing-fixed\", [[\"field-sizing\", \"fixed\"]], { category: 'interactivity' });\n// field-sizing-content: field-sizing: content;\nstaticUtility(\"field-sizing-content\", [[\"field-sizing\", \"content\"]], { category: 'interactivity' });\n\n// --- Pointer Events Utilities ---\n// pointer-events documentation\n\n// pointer-events-auto: pointer-events: auto;\nstaticUtility(\"pointer-events-auto\", [[\"pointer-events\", \"auto\"]], { category: 'interactivity' });\n// pointer-events-none: pointer-events: none;\nstaticUtility(\"pointer-events-none\", [[\"pointer-events\", \"none\"]], { category: 'interactivity' });\n\n// --- Resize Utilities ---\n// resize documentation\n\n// resize: resize: both;\nstaticUtility(\"resize\", [[\"resize\", \"both\"]], { category: 'interactivity' });\n// resize-x: resize: horizontal;\nstaticUtility(\"resize-x\", [[\"resize\", \"horizontal\"]], { category: 'interactivity' });\n// resize-y: resize: vertical;\nstaticUtility(\"resize-y\", [[\"resize\", \"vertical\"]], { category: 'interactivity' });\n// resize-none: resize: none;\nstaticUtility(\"resize-none\", [[\"resize\", \"none\"]], { category: 'interactivity' });\n\n// --- Scroll Behavior Utilities ---\n// scroll-behavior documentation\n\n// scroll-auto: scroll-behavior: auto;\nstaticUtility(\"scroll-auto\", [[\"scroll-behavior\", \"auto\"]], { category: 'interactivity' });\n// scroll-smooth: scroll-behavior: smooth;\nstaticUtility(\"scroll-smooth\", [[\"scroll-behavior\", \"smooth\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Align Utilities ---\n// scroll-snap-align documentation\nstaticUtility(\"snap-start\", [[\"scroll-snap-align\", \"start\"]], { category: 'interactivity' });\nstaticUtility(\"snap-end\", [[\"scroll-snap-align\", \"end\"]], { category: 'interactivity' });\nstaticUtility(\"snap-center\", [[\"scroll-snap-align\", \"center\"]], { category: 'interactivity' });\nstaticUtility(\"snap-align-none\", [[\"scroll-snap-align\", \"none\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Stop Utilities ---\n// scroll-snap-stop documentation\nstaticUtility(\"snap-normal\", [[\"scroll-snap-stop\", \"normal\"]], { category: 'interactivity' });\nstaticUtility(\"snap-always\", [[\"scroll-snap-stop\", \"always\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Type Utilities ---\n// scroll-snap-type documentation\nstaticUtility(\"snap-none\", [[\"scroll-snap-type\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"snap-x\", [[\"scroll-snap-type\", \"x var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-y\", [[\"scroll-snap-type\", \"y var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-both\", [[\"scroll-snap-type\", \"both var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-mandatory\", [[\"--baro-scroll-snap-strictness\", \"mandatory\"]], { category: 'interactivity' });\nstaticUtility(\"snap-proximity\", [[\"--baro-scroll-snap-strictness\", \"proximity\"]], { category: 'interactivity' });\n\n\n[\n [\"mt\", \"scroll-margin-top\"],\n [\"mr\", \"scroll-margin-right\"],\n [\"mb\", \"scroll-margin-bottom\"],\n [\"ml\", \"scroll-margin-left\"],\n [\"mx\", \"scroll-margin-inline\"],\n [\"my\", \"scroll-margin-block\"],\n [\"ms\", \"scroll-margin-inline-start\"],\n [\"me\", \"scroll-margin-inline-end\"],\n [\"m\", \"scroll-margin\"],\n].forEach(([name, prop]) => {\n functionalUtility({\n name: `scroll-${name}`,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token, _extra) => {\n if (parseNumber(value) || token.negative) {\n return [decl(prop, `calc(var(--spacing) * ${value})`)];\n }\n return [decl(prop, value)];\n },\n handleCustomProperty: (value) => [decl(prop, `var(${value})`)],\n description: `${name} utility (static, arbitrary, custom property supported)`,\n category: \"interactivity\",\n });\n});\n\n\n\n\n\n[\n [\"pt\", \"scroll-padding-top\"],\n [\"pr\", \"scroll-padding-right\"],\n [\"pb\", \"scroll-padding-bottom\"],\n [\"pl\", \"scroll-padding-left\"],\n [\"px\", \"scroll-padding-inline\"],\n [\"py\", \"scroll-padding-block\"],\n [\"ps\", \"scroll-padding-inline-start\"],\n [\"pe\", \"scroll-padding-inline-end\"],\n [\"p\", \"scroll-padding\"],\n].forEach(([name, prop]) => {\n functionalUtility({\n name: `scroll-${name}`,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token, _extra) => {\n if (parseNumber(value) || token.negative) {\n return [decl(prop, `calc(var(--spacing) * ${value})`)];\n }\n return [decl(prop, value)];\n },\n handleCustomProperty: (value) => [decl(prop, `var(${value})`)],\n description: `scroll-${name} utility (static, arbitrary, custom property supported)`,\n category: \"interactivity\",\n });\n});\n\n// --- Touch Action Utilities ---\n// touch-action documentation\nstaticUtility(\"touch-auto\", [[\"touch-action\", \"auto\"]], { category: 'interactivity' });\nstaticUtility(\"touch-none\", [[\"touch-action\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-x\", [[\"touch-action\", \"pan-x\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-left\", [[\"touch-action\", \"pan-left\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-right\", [[\"touch-action\", \"pan-right\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-y\", [[\"touch-action\", \"pan-y\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-up\", [[\"touch-action\", \"pan-up\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-down\", [[\"touch-action\", \"pan-down\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pinch-zoom\", [[\"touch-action\", \"pinch-zoom\"]], { category: 'interactivity' });\nstaticUtility(\"touch-manipulation\", [[\"touch-action\", \"manipulation\"]], { category: 'interactivity' });\n\n// --- User Select Utilities ---\n// user-select documentation\nstaticUtility(\"select-none\", [[\"user-select\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"select-text\", [[\"user-select\", \"text\"]], { category: 'interactivity' });\nstaticUtility(\"select-all\", [[\"user-select\", \"all\"]], { category: 'interactivity' });\nstaticUtility(\"select-auto\", [[\"user-select\", \"auto\"]], { category: 'interactivity' });\n\n// --- Will Change Utilities ---\n// will-change documentation\nstaticUtility(\"will-change-auto\", [[\"will-change\", \"auto\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-scroll\", [[\"will-change\", \"scroll-position\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-contents\", [[\"will-change\", \"contents\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-transform\", [[\"will-change\", \"transform\"]], { category: 'interactivity' });\n\n// Functional: will-change-[value], will-change-(--custom-property)\nfunctionalUtility({\n name: \"will-change\",\n prop: \"will-change\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"will-change utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Transition Property Utilities ---\n// transition-property documentation\n\n// Default variable\nconst defaultTiming = \"var(--default-transition-timing-function)\"; // cubic-bezier(0.4, 0, 0.2, 1)\nconst defaultDuration = \"var(--default-transition-duration)\"; // 150ms\n\n// transition\nstaticUtility(\"transition\", [\n [\n \"transition-property\",\n \"color, background-color, border-color, text-decoration-color, fill, stroke, --baro-gradient-from, --baro-gradient-via, --baro-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter\",\n ],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-all\nstaticUtility(\"transition-all\", [\n [\"transition-property\", \"all\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-colors\nstaticUtility(\"transition-colors\", [\n [\n \"transition-property\",\n \"color, background-color, border-color, text-decoration-color, fill, stroke, --baro-gradient-from, --baro-gradient-via, --baro-gradient-to\",\n ],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-opacity\nstaticUtility(\"transition-opacity\", [\n [\"transition-property\", \"opacity\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-shadow\nstaticUtility(\"transition-shadow\", [\n [\"transition-property\", \"box-shadow\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-transform\nstaticUtility(\"transition-transform\", [\n [\"transition-property\", \"transform, translate, scale, rotate\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' } );\n\n\n// --- Transition Behavior ---\nstaticUtility(\"transition-normal\", [[\"transition-behavior\", \"normal\"]], { category: 'transitions' });\nstaticUtility(\"transition-discrete\", [[\"transition-behavior\", \"allow-discrete\"]], { category: 'transitions' }); \n\n// transition-none\nstaticUtility(\"transition-none\", [[\"transition-property\", \"none\"]], { category: 'transitions' });\n\n// transition-[value] (arbitrary value)\nfunctionalUtility({\n name: \"transition\",\n prop: \"transition-property\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n return [\n decl(\"transition-property\", value),\n decl(\"transition-timing-function\", defaultTiming),\n decl(\"transition-duration\", defaultDuration),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"transition-property\", `var(${value})`),\n decl(\"transition-timing-function\", defaultTiming),\n decl(\"transition-duration\", defaultDuration),\n ],\n description:\n \"transition-property utility (static, arbitrary value, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Duration ---\nstaticUtility(\"duration-initial\", [[\"transition-duration\", \"initial\"]], { category: 'transitions' });\n\nfunctionalUtility({\n name: \"duration\",\n prop: \"transition-duration\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"transition-duration\", `${value}ms`)];\n }\n return [decl(\"transition-duration\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-duration\", `var(${value})`)],\n description: \"transition-duration utility (static, number, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Timing Function ---\nstaticUtility(\"ease-linear\", [[\"transition-timing-function\", \"linear\"]], { category: 'transitions' });\nstaticUtility(\"ease-in\", [[\"transition-timing-function\", \"var(--ease-in)\"]], { category: 'transitions' });\nstaticUtility(\"ease-out\", [[\"transition-timing-function\", \"var(--ease-out)\"]], { category: 'transitions' });\nstaticUtility(\"ease-in-out\", [[\"transition-timing-function\", \"var(--ease-in-out)\"]], { category: 'transitions' });\nstaticUtility(\"ease-initial\", [[\"transition-timing-function\", \"initial\"]], { category: 'transitions' });\n\nfunctionalUtility({\n name: \"ease\",\n prop: \"transition-timing-function\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n return [decl(\"transition-timing-function\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-timing-function\", `var(${value})`)],\n description: \"transition-timing-function utility (static, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Delay ---\nfunctionalUtility({\n name: \"delay\",\n prop: \"transition-delay\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"transition-delay\", `${value}ms`)];\n }\n return [decl(\"transition-delay\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-delay\", `var(${value})`)],\n description: \"transition-delay utility (number, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Animation ---\nstaticUtility(\"animate-spin\", [\n [\"animation\", \"var(--animate-spin)\"],\n], { category: 'transitions' });\nstaticUtility(\"animate-ping\", [[\"animation\", \"var(--animate-ping)\"]], { category: 'transitions' });\nstaticUtility(\"animate-pulse\", [[\"animation\", \"var(--animate-pulse)\"]], { category: 'transitions' });\nstaticUtility(\"animate-bounce\", [[\"animation\", \"var(--animate-bounce)\"]], { category: 'transitions' });\nstaticUtility(\"animate-none\", [[\"animation\", \"none\"]], { category: 'transitions' } );\n\nfunctionalUtility({\n name: \"animate\",\n prop: \"animation\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.customProperty) {\n return [decl(\"animation\", `var(${value})`)];\n }\n return [decl(\"animation\", value)];\n },\n handleCustomProperty: (value) => [decl(\"animation\", `var(${value})`)],\n description: \"animation utility (static, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n","import { staticUtility } from \"../core/registry\";\nimport { functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Table Layout Utilities (border-collapse, border-separate) ---\nstaticUtility(\"border-collapse\", [[\"border-collapse\", \"collapse\"]], { category: 'table' });\nstaticUtility(\"border-separate\", [[\"border-collapse\", \"separate\"]], { category: 'table' });\n\n// --- Table Layout ---\nstaticUtility(\"table-auto\", [[\"table-layout\", \"auto\"]], { category: 'table' });\nstaticUtility(\"table-fixed\", [[\"table-layout\", \"fixed\"]], { category: 'table' });\n\n// --- Border Spacing ---\nfunctionalUtility({\n name: \"border-spacing-x\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `calc(var(--spacing) * ${value}) var(--baro-border-spacing-y)`)]\n }\n return [decl(\"border-spacing\", `${value} var(--baro-border-spacing-y)`)]\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(${value}) var(--baro-border-spacing-y)`)],\n description: \"border-spacing-x utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n});\n\nfunctionalUtility({\n name: \"border-spacing-y\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `var(--baro-border-spacing-x) calc(var(--spacing) * ${value})`)]\n }\n return [decl(\"border-spacing\", `var(--baro-border-spacing-x) ${value}`)]\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(--baro-border-spacing-x) var(${value})`)],\n description: \"border-spacing-y utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n}); \n\nfunctionalUtility({\n name: \"border-spacing\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `calc(var(--spacing) * ${value})`)];\n }\n return [decl(\"border-spacing\", value)];\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(${value})`)],\n description: \"border-spacing utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n });\n\n// --- Caption Side ---\nstaticUtility(\"caption-top\", [[\"caption-side\", \"top\"]], { category: 'table' });\nstaticUtility(\"caption-bottom\", [[\"caption-side\", \"bottom\"]], { category: 'table' });","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\nimport { parseColor } from \"../core/utils\";\n\n// --- Filter ---\nstaticUtility(\"filter-none\", [[\"filter\", \"none\"]], { category: 'effects' });\n\nfunctionalUtility({\n name: \"filter\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\nconst filters = () => {\n return decl(\"filter\", \"var(--baro-blur, ) var(--baro-brightness, ) var(--baro-contrast, ) var(--baro-grayscale, ) var(--baro-hue-rotate, ) var(--baro-invert, ) var(--baro-saturate, ) var(--baro-sepia, ) var(--baro-drop-shadow, )\");\n}\n\n// --- Blur ---\n[\n [\"blur-xs\", \"var(--blur-xs)\"],\n [\"blur-sm\", \"var(--blur-sm)\"],\n [\"blur-md\", \"var(--blur-md)\"],\n [\"blur-lg\", \"var(--blur-lg)\"],\n [\"blur-xl\", \"var(--blur-xl)\"],\n [\"blur-2xl\", \"var(--blur-2xl)\"],\n [\"blur-3xl\", \"var(--blur-3xl)\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [\n decl(\"--baro-blur\", `blur(${value})`),\n filters()\n ], { category: 'effects' });\n});\nstaticUtility(\"blur-none\", [decl(\"--baro-blur\", \"\"), filters()], { category: 'effects' });\n\nfunctionalUtility({\n name: \"blur\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.customProperty) return [decl(\"--baro-blur\", `blur(var(${value}))`), filters()];\n return [decl(\"--baro-blur\", `blur(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-blur\", `blur(var(${value}))`), filters()],\n description: \"blur filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Brightness ---\n\nfunctionalUtility({\n name: \"brightness\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.arbitrary) {\n return [decl(\"--baro-brightness\", `brightness(${value})`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-brightness\", `brightness(${value}%)`), filters()];\n }\n if (token.customProperty)\n return [decl(\"--baro-brightness\", `brightness(var(${value}))`), filters()];\n return [decl(\"--baro-brightness\", `brightness(${value})`), filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-brightness\", `brightness(var(${value}))`),\n filters()\n ],\n description:\n \"brightness filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Contrast ---\nfunctionalUtility({\n name: \"contrast\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [decl(\"--baro-contrast\", `contrast(${value})`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-contrast\", `contrast(${value}%)`), filters()];\n }\n if (token.customProperty)\n return [decl(\"--baro-contrast\", `contrast(var(${value}))`), filters()];\n return [decl(\"--baro-contrast\", `contrast(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-contrast\", `contrast(var(${value}))`), filters()],\n description:\n \"contrast filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Drop Shadow ---\n[\n [\"drop-shadow-xs\", \"xs\", '0 1px 1px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-sm\", \"sm\", '0 1px 2px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-md\", \"md\", '0 3px 3px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-lg\", \"lg\", '0 4px 4px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-xl\", \"xl\", '0 9px 7px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-2xl\", \"2xl\", '0 25px 25px var(--baro-drop-shadow-color, #0000001a)'],\n].forEach(([name, size, sizeValue]) => {\n staticUtility(name as string, [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(${sizeValue})`),\n decl(\"--baro-drop-shadow\", `var(--drop-shadow-${size})`),\n filters()\n ]);\n});\nstaticUtility(\"drop-shadow-none\", [decl(\"--baro-drop-shadow\", \"drop-shadow(0 0 #0000)\"), filters()]);\n\n// --- Drop Shadow Color ---\n// drop-shadow-inherit, drop-shadow-current, drop-shadow-transparent\n[\"inherit\", \"current\", \"transparent\"].forEach((name) => {\n staticUtility(`drop-shadow-${name}`, [\n decl(\"--baro-drop-shadow-color\", name === \"current\" ? \"currentColor\" : name),\n ]);\n});\n\n// drop-shadow-black, drop-shadow-white, drop-shadow-{color}-{shade}\n[\"black\", \"white\"].forEach((name) => {\n staticUtility(`drop-shadow-${name}`, [\n decl(\"--baro-drop-shadow-color\", `var(--color-${name})`),\n ]);\n});\n\n// drop-shadow-(color:--my-color)\nfunctionalUtility({\n name: \"drop-shadow\",\n themeKeys: ['colors'],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token, extra) => {\n if (extra?.realThemeValue) {\n return [decl(\"--baro-drop-shadow-color\", `var(--color-${extra.realThemeValue})`)];\n }\n\n if (parseColor(value)) {\n return [decl(\"--baro-drop-shadow-color\", value)];\n }\n\n return [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(${value})`),\n decl(\"--baro-drop-shadow\", `var(--baro-drop-shadow-size)`),\n ];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n return [\n decl(\"--baro-drop-shadow-color\", `var(${value.replace(\"color:\", \"\")})`),\n ];\n }\n\n return [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(var(${value}))`),\n decl(\"--baro-drop-shadow\", `var(--baro-drop-shadow-size)`),\n ];\n },\n description:\n \"drop-shadow filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Grayscale ---\nstaticUtility(\"grayscale\", [decl(\"--baro-grayscale\", \"grayscale(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"grayscale\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-grayscale\", `grayscale(${value}%)`), filters()];\n }\n return [decl(\"--baro-grayscale\", `grayscale(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-grayscale\", `grayscale(var(${value}))`), filters()],\n description: \"grayscale filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Hue Rotate ---\n\nfunctionalUtility({\n name: \"hue-rotate\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, _ctx, token) => {\n if (token.negative && parseNumber(token.value!)) {\n return [decl(\"--baro-hue-rotate\", `hue-rotate(calc(${token.value}deg * -1))`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-hue-rotate\", `hue-rotate(${value}deg)`), filters()];\n }\n if (token.customProperty) return [decl(\"--baro-hue-rotate\", `hue-rotate(var(${value}))`), filters()];\n return [decl(\"--baro-hue-rotate\", `hue-rotate(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-hue-rotate\", `hue-rotate(var(${value}))`), filters()],\n description: \"hue-rotate filter utility (static, negative, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Invert ---\nstaticUtility(\"invert\", [decl(\"--baro-invert\", \"invert(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"invert\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-invert\", `invert(${value}%)`), filters()];\n }\n\n return [decl(\"--baro-invert\", `invert(${value})`), filters()];\n },\n description: \"invert filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Saturate ---\nfunctionalUtility({\n name: \"saturate\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-saturate\", `saturate(${value}%)`), filters()];\n }\n return [decl(\"--baro-saturate\", `saturate(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-saturate\", `saturate(var(${value}))`), filters()],\n description: \"saturate filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Sepia ---\nstaticUtility(\"sepia\", [decl(\"--baro-sepia\", \"sepia(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"sepia\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-sepia\", `sepia(${value}%)`), filters()];\n }\n return [decl(\"--baro-sepia\", `sepia(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-sepia\", `sepia(var(${value}))`), filters()],\n description: \"sepia filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\nconst filters = () => {\n return [\n decl(\n \"-webkit-backdrop-filter\",\n \"var(--baro-backdrop-blur, ) var(--baro-backdrop-brightness, ) var(--baro-backdrop-contrast, ) var(--baro-backdrop-grayscale, ) var(--baro-backdrop-hue-rotate, ) var(--baro-backdrop-invert, ) var(--baro-backdrop-saturate, ) var(--baro-backdrop-sepia, )\"\n ),\n decl(\n \"backdrop-filter\",\n \"var(--baro-backdrop-blur, ) var(--baro-backdrop-brightness, ) var(--baro-backdrop-contrast, ) var(--baro-backdrop-grayscale, ) var(--baro-backdrop-hue-rotate, ) var(--baro-backdrop-invert, ) var(--baro-backdrop-saturate, ) var(--baro-backdrop-sepia, )\"\n ),\n ];\n};\n\n// --- Backdrop Filter ---\nstaticUtility(\n \"backdrop-filter\",\n [[\"backdrop-filter\", \"var(--baro-backdrop-filter)\"]],\n { category: \"effects\" }\n);\nstaticUtility(\"backdrop-filter-none\", [[\"backdrop-filter\", \"none\"]], {\n category: \"effects\",\n});\n\nfunctionalUtility({\n name: \"backdrop-filter\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Blur ---\n[\n [\"backdrop-blur-xs\", \"var(--blur-xs)\"],\n [\"backdrop-blur-sm\", \"var(--blur-sm)\"],\n [\"backdrop-blur-md\", \"var(--blur-md)\"],\n [\"backdrop-blur-lg\", \"var(--blur-lg)\"],\n [\"backdrop-blur-xl\", \"var(--blur-xl)\"],\n [\"backdrop-blur-2xl\", \"var(--blur-2xl)\"],\n [\"backdrop-blur-3xl\", \"var(--blur-3xl)\"],\n].forEach(([name, value]) => {\n staticUtility(\n name as string,\n [decl(\"--baro-backdrop-blur\", `blur(${value})`), ...filters()],\n { category: \"effects\" }\n );\n});\nstaticUtility(\n \"backdrop-blur-none\",\n [decl(\"--baro-backdrop-blur\", \"\"), ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-blur\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-blur\", `blur(var(${value}))`),\n ...filters(),\n ];\n return [decl(\"--baro-backdrop-blur\", `blur(${value})`), ...filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-blur\", `blur(var(${value}))`),\n ...filters(),\n ],\n description:\n \"blur filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Brightness ---\n\nfunctionalUtility({\n name: \"backdrop-brightness\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value})`),\n ...filters(),\n ];\n }\n\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value}%)`),\n ...filters(),\n ];\n }\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(var(${value}))`),\n ...filters(),\n ];\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-brightness\", `brightness(var(${value}))`),\n ...filters(),\n ],\n description:\n \"brightness filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Contrast ---\nfunctionalUtility({\n name: \"backdrop-contrast\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value})`),\n ...filters(),\n ];\n }\n\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value}%)`),\n ...filters(),\n ];\n }\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(var(${value}))`),\n ...filters(),\n ];\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-contrast\", `contrast(var(${value}))`),\n ...filters(),\n ],\n description:\n \"contrast filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Grayscale ---\nstaticUtility(\n \"backdrop-grayscale\",\n [[\"--baro-backdrop-grayscale\", \"grayscale(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-grayscale\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-grayscale\", `grayscale(${value}%)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-grayscale\", `grayscale(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-grayscale\", `grayscale(var(${value}))`),\n ...filters(),\n ],\n description:\n \"grayscale filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Hue Rotate ---\n\nfunctionalUtility({\n name: \"backdrop-hue-rotate\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, _ctx, token) => {\n if (token.negative && parseNumber(token.value!)) {\n return [\n decl(\n \"--baro-backdrop-hue-rotate\",\n `hue-rotate(calc(${token.value}deg * -1))`\n ),\n ...filters(),\n ];\n }\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(${value}deg)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(var(${value}))`),\n ...filters(),\n ],\n description:\n \"hue-rotate filter utility (static, negative, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Invert ---\nstaticUtility(\n \"backdrop-invert\",\n [[\"--baro-backdrop-invert\", \"invert(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-invert\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-invert\", `invert(${value}%)`),\n ...filters(),\n ];\n }\n\n return [decl(\"--baro-backdrop-invert\", `invert(${value})`), ...filters()];\n },\n description:\n \"invert filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Saturate ---\nfunctionalUtility({\n name: \"backdrop-saturate\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-saturate\", `saturate(${value}%)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-saturate\", `saturate(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-saturate\", `saturate(var(${value}))`),\n ...filters(),\n ],\n description:\n \"saturate filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Sepia ---\nstaticUtility(\n \"backdrop-sepia\",\n [[\"--baro-backdrop-sepia\", \"sepia(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-sepia\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-backdrop-sepia\", `sepia(${value}%)`), ...filters()];\n }\n return [decl(\"--baro-backdrop-sepia\", `sepia(${value})`), ...filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-sepia\", `sepia(var(${value}))`),\n ...filters(),\n ],\n description:\n \"sepia filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseColor, parseNumber } from \"../core/utils\";\n\n// --- Box Shadow ---\n// box-shadow documentation\n\n// Static shadow levels\n[\n [\"shadow-2xs\", \"var(--shadow-2xs)\"],\n [\"shadow-xs\", \"var(--shadow-xs)\"],\n [\"shadow-sm\", \"var(--shadow-sm)\"],\n [\"shadow\", \"var(--shadow-default)\"],\n [\"shadow-md\", \"var(--shadow-md)\"],\n [\"shadow-lg\", \"var(--shadow-lg)\"],\n [\"shadow-xl\", \"var(--shadow-xl)\"],\n [\"shadow-2xl\", \"var(--shadow-2xl)\"],\n [\"shadow-none\", \"0 0 #0000\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"box-shadow\", value as string]], { category: 'effects' });\n});\n\n// Static inset shadow levels\n[\n [\n \"inset-shadow-2xs\",\n \"inset 0 1px 2px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-xs\",\n \"inset 0 2px 4px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-sm\",\n \"inset 0 2px 4px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-md\",\n \"inset 0 4px 6px -1px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-lg\",\n \"inset 0 10px 15px -3px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-xl\",\n \"inset 0 20px 25px -5px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-2xl\",\n \"inset 0 25px 50px -12px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\"inset-shadow-none\", \"0 0 #0000\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [\n [\"--baro-inset-shadow\", value as string],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow), var(--baro-ring-shadow), var(--baro-shadow)\",\n ],\n ], { category: 'effects' });\n});\n\n// --- Box Shadow Color (with opacity, custom property, arbitrary) ---\n// shadow-red-500, shadow-red-500/50, shadow-[#bada55]/80, shadow-(color:--my-shadow), shadow-inherit, etc.\n\nfunction createShadowThemeColor(\n key: string,\n main: string,\n opacity: string | undefined,\n realThemeValue: string\n) {\n let fallbackColor = main;\n const colorVar = `var(--color-${realThemeValue})`;\n let colorValue = colorVar;\n if (opacity) {\n colorValue = `color-mix(in oklab, color-mix(in oklab, ${colorVar} ${opacity}%, transparent) var(--baro-shadow-alpha),transparent)`;\n if (parseColor(main)) {\n if (main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallbackColor = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallbackColor = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n }\n }\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(key, colorValue),\n ]),\n decl(key, fallbackColor),\n ];\n}\n\n// shadow-color utilities\nfunctionalUtility({\n name: \"shadow\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n\n // 1. Theme color (e.g. shadow-red-500/60)\n if (realThemeValue) {\n return createShadowThemeColor(\n \"--baro-shadow-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n\n // Custom property color: shadow-(color:--my-shadow)\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n if (opacity) {\n return [\n decl(\n \"--baro-shadow-color\",\n `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`\n ),\n ];\n }\n return [decl(\"--baro-shadow-color\", `var(${cp})`)];\n }\n\n // Arbitrary color: shadow-[#bada55] or shadow-[oklch(...)]\n if (token.arbitrary) {\n if (parseColor(main)) {\n if (opacity) {\n return [\n decl(\n \"--baro-shadow-color\",\n `color-mix(in oklab, ${main} ${opacity}%, transparent)`\n ),\n ];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n\n // Special cases\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\"--baro-shadow-color\", main === \"current\" ? \"currentColor\" : main),\n ];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"box-shadow\", `var(${value})`)],\n});\n\n// inset-shadow-color utilities\nfunctionalUtility({\n name: \"inset-shadow\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n\n // 1. Theme color (e.g. inset-shadow-red-500/60)\n if (realThemeValue) {\n return createShadowThemeColor(\n \"--baro-inset-shadow-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n\n // 2. Custom property color: inset-shadow-(color:--my-shadow)\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorValue = `var(${cp})`;\n if (opacity) {\n colorValue = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n }\n return [decl(\"--baro-inset-shadow-color\", colorValue)];\n }\n\n // 3. Arbitrary color: inset-shadow-[#bada55] or inset-shadow-[oklch(...)]\n if (token.arbitrary) {\n if (parseColor(main)) {\n let colorValue = main;\n if (opacity) {\n colorValue = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n }\n return [decl(\"--baro-inset-shadow-color\", colorValue)];\n }\n\n return [decl(\"box-shadow\", `inset ${main}`)];\n }\n\n // 4. Special cases\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\n \"--baro-inset-shadow-color\",\n main === \"current\" ? \"currentColor\" : main\n ),\n ];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"box-shadow\", `var(${value})`)],\n});\n\n// --- Ring ( multi-variable) ---\n// ring-width documentation\n\n// Static ring width utilities\n[\n [\"ring\", \"1px\"],\n [\"ring-0\", \"0px\"],\n [\"ring-1\", \"1px\"],\n [\"ring-2\", \"2px\"],\n [\"ring-4\", \"4px\"],\n [\"ring-8\", \"8px\"],\n].forEach(([name, px]) => {\n staticUtility(name as string, [\n [\"--baro-ring-inset\", \"\"],\n [\"--baro-ring-offset-width\", \"0px\"],\n [\"--baro-ring-offset-color\", \"#fff\"],\n [\"--baro-ring-color\", \"rgb(59 130 246 / 0.5)\"], // default blue-500/50\n [\n \"--baro-ring-shadow\",\n `var(--baro-ring-inset) 0 0 0 calc(${px} + var(--baro-ring-offset-width)) var(--baro-ring-color, currentcolor)`,\n ],\n [\"--baro-ring-offset-shadow\", `0 0 #0000`],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow), var(--baro-ring-shadow), var(--baro-shadow)\",\n ],\n ]);\n});\n\n// Inset ring width utilities\n[\n [\"inset-ring\", \"1px\"],\n [\"inset-ring-0\", \"0px\"],\n [\"inset-ring-1\", \"1px\"],\n [\"inset-ring-2\", \"2px\"],\n [\"inset-ring-4\", \"4px\"],\n [\"inset-ring-8\", \"8px\"],\n].forEach(([name, px]) => {\n staticUtility(name as string, [\n [\"--baro-ring-inset\", \"inset\"],\n [\"--baro-ring-offset-width\", \"0px\"],\n [\"--baro-ring-offset-color\", \"#fff\"],\n [\"--baro-inset-ring-color\", \"rgb(59 130 246 / 0.5)\"],\n [\n \"--baro-inset-ring-shadow\",\n `var(--baro-ring-inset) 0 0 0 calc(${px} + var(--baro-ring-offset-width)) var(--baro-inset-ring-color, currentcolor)`,\n ],\n [\"--baro-ring-offset-shadow\", `0 0 #0000`],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow), var(--baro-ring-shadow), var(--baro-shadow)\",\n ],\n ]);\n});\n\n// Ring inset\nstaticUtility(\"ring-inset\", [[\"--baro-ring-inset\", \"inset\"]], { category: 'effects' });\n\n// --- Ring color/opacity/arbitrary/custom property ( supports+fallback) ---\nfunction createRingColorDecls(\n key: string,\n main: string,\n opacity: string | undefined,\n realThemeValue: string\n) {\n const colorVar = `var(--color-${realThemeValue})`;\n let colorMix = colorVar;\n let fallback = colorVar;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${colorVar} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(key, colorMix),\n ]),\n decl(key, fallback),\n ];\n}\n\n// Ring color/opacity/arbitrary/custom property\nfunctionalUtility({\n name: \"ring\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n if (realThemeValue) {\n return createRingColorDecls(\n \"--baro-ring-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorMix = `var(${cp})`;\n let fallback = colorMix;\n if (opacity) {\n colorMix = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n fallback = colorMix;\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-ring-color\", colorMix),\n ]),\n decl(\"--baro-ring-color\", fallback),\n ];\n }\n if (token.arbitrary) {\n let colorMix = main;\n let fallback = main;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-ring-color\", colorMix),\n ]),\n decl(\"--baro-ring-color\", fallback),\n ];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\"--baro-ring-color\", main === \"current\" ? \"currentColor\" : main),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n const cp = value.replace(\"color:\", \"\");\n return [decl(\"--baro-ring-color\", `var(${cp})`)];\n }\n return [decl(\"--baro-ring-color\", `var(${value})`)];\n },\n});\n\n// Inset ring color/opacity/arbitrary/custom property ( supports+fallback)\nfunctionalUtility({\n name: \"inset-ring\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n if (realThemeValue) {\n return createRingColorDecls(\n \"--baro-inset-ring-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorMix = `var(${cp})`;\n let fallback = colorMix;\n if (opacity) {\n colorMix = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n fallback = colorMix;\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-inset-ring-color\", colorMix),\n ]),\n decl(\"--baro-inset-ring-color\", fallback),\n ];\n }\n if (token.arbitrary) {\n let colorMix = main;\n let fallback = main;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-inset-ring-color\", colorMix),\n ]),\n decl(\"--baro-inset-ring-color\", fallback),\n ];\n }\n\n return [decl(\"box-shadow\", `inset ${main}`)];\n }\n\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\n \"--baro-inset-ring-color\",\n main === \"current\" ? \"currentColor\" : main\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n const cp = value.replace(\"color:\", \"\");\n return [decl(\"--baro-inset-ring-color\", `var(${cp})`)];\n }\n return [decl(\"--baro-inset-ring-color\", `var(${value})`)];\n },\n});\n\n// --- Opacity ---\n\nfunctionalUtility({\n name: \"opacity\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n // opacity-100, opacity-75, etc.\n if (parseNumber(value)) {\n let num = Number(value);\n if (num > 1) num = num / 100;\n return [decl(\"opacity\", String(num))];\n }\n // opacity-[.67] → .67\n if (token.arbitrary) {\n return [decl(\"opacity\", value)];\n }\n return null;\n },\n handleCustomProperty: (value) => [decl(\"opacity\", `var(${value})`)],\n description: \"opacity utility (number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mix Blend Mode ---\n[\n [\"mix-blend-normal\", \"normal\"],\n [\"mix-blend-multiply\", \"multiply\"],\n [\"mix-blend-screen\", \"screen\"],\n [\"mix-blend-overlay\", \"overlay\"],\n [\"mix-blend-darken\", \"darken\"],\n [\"mix-blend-lighten\", \"lighten\"],\n [\"mix-blend-color-dodge\", \"color-dodge\"],\n [\"mix-blend-color-burn\", \"color-burn\"],\n [\"mix-blend-hard-light\", \"hard-light\"],\n [\"mix-blend-soft-light\", \"soft-light\"],\n [\"mix-blend-difference\", \"difference\"],\n [\"mix-blend-exclusion\", \"exclusion\"],\n [\"mix-blend-hue\", \"hue\"],\n [\"mix-blend-saturation\", \"saturation\"],\n [\"mix-blend-color\", \"color\"],\n [\"mix-blend-luminosity\", \"luminosity\"],\n [\"mix-blend-plus-darker\", \"plus-darker\"],\n [\"mix-blend-plus-lighter\", \"plus-lighter\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mix-blend-mode\", value as string]]);\n});\n\n// --- Background Blend Mode ---\n[\n [\"bg-blend-normal\", \"normal\"],\n [\"bg-blend-multiply\", \"multiply\"],\n [\"bg-blend-screen\", \"screen\"],\n [\"bg-blend-overlay\", \"overlay\"],\n [\"bg-blend-darken\", \"darken\"],\n [\"bg-blend-lighten\", \"lighten\"],\n [\"bg-blend-color-dodge\", \"color-dodge\"],\n [\"bg-blend-color-burn\", \"color-burn\"],\n [\"bg-blend-hard-light\", \"hard-light\"],\n [\"bg-blend-soft-light\", \"soft-light\"],\n [\"bg-blend-difference\", \"difference\"],\n [\"bg-blend-exclusion\", \"exclusion\"],\n [\"bg-blend-hue\", \"hue\"],\n [\"bg-blend-saturation\", \"saturation\"],\n [\"bg-blend-color\", \"color\"],\n [\"bg-blend-luminosity\", \"luminosity\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"background-blend-mode\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Clip ---\n[\n [\"mask-clip-border\", \"border-box\"],\n [\"mask-clip-padding\", \"padding-box\"],\n [\"mask-clip-content\", \"content-box\"],\n [\"mask-clip-fill\", \"fill-box\"],\n [\"mask-clip-stroke\", \"stroke-box\"],\n [\"mask-clip-view\", \"view-box\"],\n [\"mask-no-clip\", \"no-clip\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-clip\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Composite ---\n[\n [\"mask-add\", \"add\"],\n [\"mask-subtract\", \"subtract\"],\n [\"mask-intersect\", \"intersect\"],\n [\"mask-exclude\", \"exclude\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-composite\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Mode ---\n[\n [\"mask-alpha\", \"alpha\"],\n [\"mask-luminance\", \"luminance\"],\n [\"mask-match\", \"match-source\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-mode\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Origin ---\n[\n [\"mask-origin-border\", \"border-box\"],\n [\"mask-origin-padding\", \"padding-box\"],\n [\"mask-origin-content\", \"content-box\"],\n [\"mask-origin-fill\", \"fill-box\"],\n [\"mask-origin-stroke\", \"stroke-box\"],\n [\"mask-origin-view\", \"view-box\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-origin\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Position ---\n[\n [\"mask-top-left\", \"top left\"],\n [\"mask-top\", \"top\"],\n [\"mask-top-right\", \"top right\"],\n [\"mask-left\", \"left\"],\n [\"mask-center\", \"center\"],\n [\"mask-right\", \"right\"],\n [\"mask-bottom-left\", \"bottom left\"],\n [\"mask-bottom\", \"bottom\"],\n [\"mask-bottom-right\", \"bottom right\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-position\", value as string]], { category: 'effects' });\n});\nfunctionalUtility({\n name: \"mask-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.arbitrary) return [decl(\"mask-position\", value)];\n if (token.customProperty) return [decl(\"mask-position\", `var(${value})`)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"mask-position\", `var(${value})`)],\n description:\n \"mask-position utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mask Repeat ---\n[\n [\"mask-repeat\", \"repeat\"],\n [\"mask-no-repeat\", \"no-repeat\"],\n [\"mask-repeat-x\", \"repeat-x\"],\n [\"mask-repeat-y\", \"repeat-y\"],\n [\"mask-repeat-space\", \"space\"],\n [\"mask-repeat-round\", \"round\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-repeat\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Size ---\n[\n [\"mask-auto\", \"auto\"],\n [\"mask-cover\", \"cover\"],\n [\"mask-contain\", \"contain\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-size\", value as string]], { category: 'effects' });\n});\n\n\n// --- Mask Type ---\n[\n [\"mask-type-alpha\", \"alpha\"],\n [\"mask-type-luminance\", \"luminance\"],\n ].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-type\", value as string]], { category: 'effects' });\n });\n\n// mask-size-[value] (arbitrary) & mask-size-(--custom-property)\nfunctionalUtility({\n name: \"mask-size\",\n prop: \"mask-size\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"mask-size utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mask Image ---\nfunctionalUtility({\n name: \"mask\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (value === \"none\") return [decl(\"mask-image\", \"none\")];\n if (token.arbitrary) return [decl(\"mask-image\", value)];\n if (token.customProperty) return [decl(\"mask-image\", `var(${value})`)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"mask-image\", `var(${value})`)],\n description: \"mask-image utility (arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseNumber,\n parseFraction,\n} from \"../core/utils\";\n\n// --- Layout: Isolation ---\nstaticUtility(\"isolate\", [[\"isolation\", \"isolate\"]], { category: 'layout' });\nstaticUtility(\"isolation-auto\", [[\"isolation\", \"auto\"]], { category: 'layout' });\n\n// --- Layout: Z-Index ---\nstaticUtility(\"z-auto\", [[\"z-index\", \"auto\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"z\",\n prop: \"z-index\",\n themeKey: \"zIndex\",\n supportsNegative: true,\n supportsFraction: true,\n supportsArbitrary: true, // z-[999], z-[calc(var(--index)+1)] 등 지원\n supportsCustomProperty: true, // z-(--my-z) supported\n // but actual theme lookup is handled in ctx.theme\n handleBareValue: ({ value }) => {\n return parseNumber(value); // only allow integers\n },\n description: \"z-index utility\",\n category: \"layout\",\n});\n\n// --- Layout: Aspect Ratio ---\nstaticUtility(\"aspect-square\", [[\"aspect-ratio\", \"1 / 1\"]], { category: 'layout' });\nstaticUtility(\"aspect-video\", [[\"aspect-ratio\", \"var(--aspect-ratio-video)\"]], { category: 'layout' });\nstaticUtility(\"aspect-auto\", [[\"aspect-ratio\", \"auto\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"aspect\",\n prop: \"aspect-ratio\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n description:\n \"aspect-ratio utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Columns ---\nstaticUtility(\"columns-auto\", [[\"columns\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"columns-3xs\", [[\"columns\", \"var(--container-3xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-2xs\", [[\"columns\", \"var(--container-2xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-xs\", [[\"columns\", \"var(--container-xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-sm\", [[\"columns\", \"var(--container-sm)\"]], { category: 'layout' });\nstaticUtility(\"columns-md\", [[\"columns\", \"var(--container-md)\"]], { category: 'layout' });\nstaticUtility(\"columns-lg\", [[\"columns\", \"var(--container-lg)\"]], { category: 'layout' });\nstaticUtility(\"columns-xl\", [[\"columns\", \"var(--container-xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-2xl\", [[\"columns\", \"var(--container-2xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-3xl\", [[\"columns\", \"var(--container-3xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-4xl\", [[\"columns\", \"var(--container-4xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-5xl\", [[\"columns\", \"var(--container-5xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-6xl\", [[\"columns\", \"var(--container-6xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-7xl\", [[\"columns\", \"var(--container-7xl)\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"columns\",\n prop: \"columns\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => parseNumber(value),\n description:\n \"columns utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Break After ---\nstaticUtility(\"break-after-auto\", [[\"break-after\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-after-avoid\", [[\"break-after\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-after-all\", [[\"break-after\", \"all\"]], { category: 'layout' });\nstaticUtility(\"break-after-avoid-page\", [[\"break-after\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-after-page\", [[\"break-after\", \"page\"]], { category: 'layout' });\nstaticUtility(\"break-after-left\", [[\"break-after\", \"left\"]], { category: 'layout' });\nstaticUtility(\"break-after-right\", [[\"break-after\", \"right\"]], { category: 'layout' });\nstaticUtility(\"break-after-column\", [[\"break-after\", \"column\"]], { category: 'layout' });\n\n// --- Layout: Break Before ---\nstaticUtility(\"break-before-auto\", [[\"break-before\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-before-avoid\", [[\"break-before\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-before-all\", [[\"break-before\", \"all\"]], { category: 'layout' });\nstaticUtility(\"break-before-avoid-page\", [[\"break-before\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-before-page\", [[\"break-before\", \"page\"]], { category: 'layout' });\nstaticUtility(\"break-before-left\", [[\"break-before\", \"left\"]], { category: 'layout' });\nstaticUtility(\"break-before-right\", [[\"break-before\", \"right\"]], { category: 'layout' });\nstaticUtility(\"break-before-column\", [[\"break-before\", \"column\"]], { category: 'layout' });\n\n// --- Layout: Break Inside ---\nstaticUtility(\"break-inside-auto\", [[\"break-inside\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid\", [[\"break-inside\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid-page\", [[\"break-inside\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid-column\", [[\"break-inside\", \"avoid-column\"]], { category: 'layout' });\n\n// --- Layout: Box Decoration Break ---\nstaticUtility(\"box-decoration-slice\", [[\"box-decoration-break\", \"slice\"]], { category: 'layout' });\nstaticUtility(\"box-decoration-clone\", [[\"box-decoration-break\", \"clone\"]], { category: 'layout' });\n\n// --- Layout: Box Sizing ---\n staticUtility(\"box-border\", [[\"box-sizing\", \"border-box\"]], { category: 'layout' });\nstaticUtility(\"box-content\", [[\"box-sizing\", \"content-box\"]], { category: 'layout' });\n\n// --- Layout: Display ---\nstaticUtility(\"block\", [[\"display\", \"block\"]], { category: 'layout' });\nstaticUtility(\"inline\", [[\"display\", \"inline\"]], { category: 'layout' });\nstaticUtility(\"inline-block\", [[\"display\", \"inline-block\"]], { category: 'layout' });\nstaticUtility(\"flow-root\", [[\"display\", \"flow-root\"]], { category: 'layout' });\nstaticUtility(\"flex\", [[\"display\", \"flex\"]], { category: 'layout' });\nstaticUtility(\"inline-flex\", [[\"display\", \"inline-flex\"]], { category: 'layout' });\nstaticUtility(\"grid\", [[\"display\", \"grid\"]], { category: 'layout' });\nstaticUtility(\"inline-grid\", [[\"display\", \"inline-grid\"]], { category: 'layout' });\nstaticUtility(\"contents\", [[\"display\", \"contents\"]], { category: 'layout' });\nstaticUtility(\"table\", [[\"display\", \"table\"]], { category: 'layout' });\nstaticUtility(\"inline-table\", [[\"display\", \"inline-table\"]], { category: 'layout' });\nstaticUtility(\"table-caption\", [[\"display\", \"table-caption\"]], { category: 'layout' });\nstaticUtility(\"table-cell\", [[\"display\", \"table-cell\"]], { category: 'layout' });\nstaticUtility(\"table-column\", [[\"display\", \"table-column\"]], { category: 'layout' });\nstaticUtility(\"table-column-group\", [[\"display\", \"table-column-group\"]], { category: 'layout' });\nstaticUtility(\"table-footer-group\", [[\"display\", \"table-footer-group\"]], { category: 'layout' });\nstaticUtility(\"table-header-group\", [[\"display\", \"table-header-group\"]], { category: 'layout' });\nstaticUtility(\"table-row-group\", [[\"display\", \"table-row-group\"]], { category: 'layout' });\nstaticUtility(\"table-row\", [[\"display\", \"table-row\"]], { category: 'layout' });\nstaticUtility(\"list-item\", [[\"display\", \"list-item\"]], { category: 'layout' });\nstaticUtility(\"hidden\", [[\"display\", \"none\"]], { category: 'layout' });\nstaticUtility(\"sr-only\", [\n [\"position\", \"absolute\"],\n [\"width\", \"1px\"],\n [\"height\", \"1px\"],\n [\"margin\", \"-1px\"],\n [\"padding\", \"0\"],\n [\"overflow\", \"hidden\"],\n [\"clip\", \"rect(0, 0, 0, 0)\"],\n [\"white-space\", \"nowrap\"],\n [\"border-width\", \"0\"],\n], { category: 'layout' });\n\nstaticUtility(\"not-sr-only\", [\n [\"position\", \"static\"],\n [\"width\", \"auto\"],\n [\"height\", \"auto\"],\n [\"margin\", \"0\"],\n [\"padding\", \"0\"],\n [\"overflow\", \"visible\"],\n [\"clip\", \"auto\"],\n [\"white-space\", \"normal\"],\n], { category: 'layout' });\n\n// --- Layout: Float ---\nstaticUtility(\"float-right\", [[\"float\", \"right\"]], { category: 'layout' });\nstaticUtility(\"float-left\", [[\"float\", \"left\"]], { category: 'layout' });\nstaticUtility(\"float-start\", [[\"float\", \"inline-start\"]], { category: 'layout' });\nstaticUtility(\"float-end\", [[\"float\", \"inline-end\"]], { category: 'layout' });\nstaticUtility(\"float-none\", [[\"float\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Clear ---\nstaticUtility(\"clear-left\", [[\"clear\", \"left\"]], { category: 'layout' });\nstaticUtility(\"clear-right\", [[\"clear\", \"right\"]], { category: 'layout' });\nstaticUtility(\"clear-both\", [[\"clear\", \"both\"]], { category: 'layout' });\nstaticUtility(\"clear-start\", [[\"clear\", \"inline-start\"]], { category: 'layout' });\nstaticUtility(\"clear-end\", [[\"clear\", \"inline-end\"]], { category: 'layout' });\nstaticUtility(\"clear-none\", [[\"clear\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Object Fit ---\nstaticUtility(\"object-contain\", [[\"object-fit\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"object-cover\", [[\"object-fit\", \"cover\"]], { category: 'layout' });\nstaticUtility(\"object-fill\", [[\"object-fit\", \"fill\"]], { category: 'layout' });\nstaticUtility(\"object-none\", [[\"object-fit\", \"none\"]], { category: 'layout' });\nstaticUtility(\"object-scale-down\", [[\"object-fit\", \"scale-down\"]], { category: 'layout' });\n\n// --- Layout: Object Position ---\nstaticUtility(\"object-top-left\", [[\"object-position\", \"top left\"]], { category: 'layout' });\nstaticUtility(\"object-top\", [[\"object-position\", \"top\"]], { category: 'layout' });\nstaticUtility(\"object-top-right\", [[\"object-position\", \"top right\"]], { category: 'layout' });\nstaticUtility(\"object-left\", [[\"object-position\", \"left\"]], { category: 'layout' });\nstaticUtility(\"object-center\", [[\"object-position\", \"center\"]], { category: 'layout' });\nstaticUtility(\"object-right\", [[\"object-position\", \"right\"]], { category: 'layout' });\nstaticUtility(\"object-bottom-left\", [[\"object-position\", \"bottom left\"]], { category: 'layout' });\nstaticUtility(\"object-bottom\", [[\"object-position\", \"bottom\"]], { category: 'layout' });\nstaticUtility(\"object-bottom-right\", [[\"object-position\", \"bottom right\"]], { category: 'layout' });\n\nfunctionalUtility({\n name: \"object\",\n prop: \"object-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description:\n \"object-position utility (arbitrary value, custom property supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Overflow ---\n staticUtility(\"overflow-auto\", [[\"overflow\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-hidden\", [[\"overflow\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-clip\", [[\"overflow\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-visible\", [[\"overflow\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-scroll\", [[\"overflow\", \"scroll\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-auto\", [[\"overflow-x\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-auto\", [[\"overflow-y\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-hidden\", [[\"overflow-x\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-hidden\", [[\"overflow-y\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-clip\", [[\"overflow-x\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-clip\", [[\"overflow-y\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-visible\", [[\"overflow-x\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-visible\", [[\"overflow-y\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-scroll\", [[\"overflow-x\", \"scroll\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-scroll\", [[\"overflow-y\", \"scroll\"]], { category: 'layout' });\n\n// --- Layout: Overscroll Behavior ---\nstaticUtility(\"overscroll-auto\", [[\"overscroll-behavior\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-contain\", [[\"overscroll-behavior\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-none\", [[\"overscroll-behavior\", \"none\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-auto\", [[\"overscroll-behavior-x\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-contain\", [[\"overscroll-behavior-x\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-none\", [[\"overscroll-behavior-x\", \"none\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-auto\", [[\"overscroll-behavior-y\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-contain\", [[\"overscroll-behavior-y\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-none\", [[\"overscroll-behavior-y\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Position ---\nstaticUtility(\"static\", [[\"position\", \"static\"]], { category: 'layout' });\nstaticUtility(\"fixed\", [[\"position\", \"fixed\"]], { category: 'layout' });\nstaticUtility(\"absolute\", [[\"position\", \"absolute\"]], { category: 'layout' });\nstaticUtility(\"relative\", [[\"position\", \"relative\"]], { category: 'layout' });\nstaticUtility(\"sticky\", [[\"position\", \"sticky\"]], { category: 'layout' });\n\n// --- Layout: Inset/Top/Right/Bottom/Left ---\n[\n [\"inset-x\", \"inset-inline\"],\n [\"inset-y\", \"inset-block\"],\n [\"inset\", \"inset\"],\n [\"start\", \"inset-inline-start\"],\n [\"end\", \"inset-inline-end\"],\n [\"top\", \"top\"],\n [\"right\", \"right\"],\n [\"bottom\", \"bottom\"],\n [\"left\", \"left\"],\n].forEach(([name, prop]) => {\n // inset\n staticUtility(`${name}-auto`, [[prop, \"auto\"]], { category: 'layout' });\n staticUtility(`${name}-full`, [[prop, \"100%\"]], { category: 'layout' });\n staticUtility(`-${name}-full`, [[prop, \"-100%\"]], { category: 'layout' });\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'layout' });\n staticUtility(`-${name}-px`, [[prop, \"-1px\"]], { category: 'layout' });\n functionalUtility({\n name: name,\n prop: prop,\n supportsNegative: true,\n supportsFraction: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n const frac = parseFraction(value);\n if (frac) return frac;\n return null;\n },\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * -${value})`;\n }\n const frac = parseFraction(value);\n if (frac) return `-${frac}`;\n return null;\n },\n description: `${name} utility (spacing, fraction, px, full, auto, custom property, arbitrary, negative supported)`,\n category: \"layout\",\n });\n});\n\n// --- Layout: Visibility ---\nstaticUtility(\"visible\", [[\"visibility\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"invisible\", [[\"visibility\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"collapse\", [[\"visibility\", \"collapse\"]], { category: 'layout' });\n\n// --- Layout: Gap ---\nfunctionalUtility({\n name: \"gap-x\",\n prop: \"column-gap\",\n supportsArbitrary: true, // gap-x-[10vw]\n supportsCustomProperty: true, // gap-x-(--my-gap-x)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"column-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"column-gap\", `var(${value})`)],\n description: \"gap-x utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap-y\",\n prop: \"row-gap\",\n supportsArbitrary: true, // gap-y-[10vw]\n supportsCustomProperty: true, // gap-y-(--my-gap-y)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"row-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"row-gap\", `var(${value})`)],\n description: \"gap-y utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap\",\n prop: \"gap\",\n supportsArbitrary: true, // gap-[10vw]\n supportsCustomProperty: true, // gap-(--my-gap)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"gap\", `var(${value})`)],\n description: \"gap utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseFractionOrNumber,\n parseNumber,\n parseFraction,\n} from \"../core/utils\";\n\n\n// --- Flexbox & Grid: flex-basis ---\nstaticUtility(\"basis-full\", [[\"flex-basis\", \"100%\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-auto\", [[\"flex-basis\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-3xs\", [[\"flex-basis\", \"var(--container-3xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-2xs\", [[\"flex-basis\", \"var(--container-2xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-xs\", [[\"flex-basis\", \"var(--container-xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-sm\", [[\"flex-basis\", \"var(--container-sm)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-md\", [[\"flex-basis\", \"var(--container-md)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-lg\", [[\"flex-basis\", \"var(--container-lg)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-xl\", [[\"flex-basis\", \"var(--container-xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-2xl\", [[\"flex-basis\", \"var(--container-2xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-3xl\", [[\"flex-basis\", \"var(--container-3xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-4xl\", [[\"flex-basis\", \"var(--container-4xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-5xl\", [[\"flex-basis\", \"var(--container-5xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-6xl\", [[\"flex-basis\", \"var(--container-6xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-7xl\", [[\"flex-basis\", \"var(--container-7xl)\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"basis\",\n prop: \"flex-basis\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--container-${value}) * 1px)`;\n }\n const frac = parseFraction(value);\n if (frac) return frac;\n return null;\n },\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--container-${value}) * -1px)`;\n }\n const frac = parseFraction(value);\n if (frac) return `-${frac}`;\n return null;\n },\n description:\n \"flex-basis utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: flex-direction ---\nstaticUtility(\"flex-row\", [[\"flex-direction\", \"row\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-row-reverse\", [[\"flex-direction\", \"row-reverse\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-col\", [[\"flex-direction\", \"column\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-col-reverse\", [[\"flex-direction\", \"column-reverse\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: flex-wrap ---\nstaticUtility(\"flex-wrap\", [[\"flex-wrap\", \"wrap\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-wrap-reverse\", [[\"flex-wrap\", \"wrap-reverse\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-nowrap\", [[\"flex-wrap\", \"nowrap\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Flex ---\nstaticUtility(\"flex-auto\", [[\"flex\", \"1 1 auto\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-initial\", [[\"flex\", \"0 1 auto\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-none\", [[\"flex\", \"none\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"flex\",\n supportsArbitrary: true, // flex-[3_1_auto], flex-[2], flex-[0_0_100%], etc.\n supportsCustomProperty: true, // flex-(--my-flex)\n supportsFraction: true, // flex-1/2 → flex: 50%;\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return value;\n const frac = parseFraction(value);\n if (frac) return `calc(${frac})`;\n return null;\n },\n handle: (value) => [decl(\"flex\", value)],\n description:\n \"flex shorthand utility (number, fraction, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Flex Grow ---\nstaticUtility(\"grow\", [[\"flex-grow\", \"1\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grow\",\n prop: \"flex-grow\",\n supportsArbitrary: true, // grow-[25vw], grow-[2], grow-[var(--factor)], etc.\n supportsCustomProperty: true, // grow-(--my-grow)\n handleBareValue: ({ value }) => parseNumber(value),\n handle: (value) => [decl(\"flex-grow\", value)],\n description: \"flex-grow utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Flex Shrink ---\nstaticUtility(\"shrink\", [[\"flex-shrink\", \"1\"]], { category: 'flex-grid' });\nstaticUtility(\"shrink-0\", [[\"flex-shrink\", \"0\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"shrink\",\n prop: \"flex-shrink\",\n supportsArbitrary: true, // shrink-[2], shrink-[calc(100vw-var(--sidebar))], etc.\n supportsCustomProperty: true, // shrink-(--my-shrink)\n handleBareValue: ({ value }) => parseNumber(value),\n description: \"flex-shrink utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Order ---\nstaticUtility(\"order-first\", [[\"order\", \"calc(-infinity)\"]], { category: 'flex-grid' });\nstaticUtility(\"order-last\", [[\"order\", \"calc(infinity)\"]], { category: 'flex-grid' });\nstaticUtility(\"order-none\", [[\"order\", \"0\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"order\",\n prop: \"order\",\n supportsNegative: true, // -order-1 → order: calc(1 * -1)\n supportsArbitrary: true, // order-[min(var(--total-items),10)], etc.\n supportsCustomProperty: true, // order-(--my-order)\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"order utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Template Columns ---\nstaticUtility(\"grid-cols-none\", [[\"grid-template-columns\", \"none\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-cols-subgrid\", [[\"grid-template-columns\", \"subgrid\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grid-cols\",\n prop: \"grid-template-columns\",\n supportsArbitrary: true, // grid-cols-[200px_minmax(900px,_1fr)_100px], etc.\n supportsCustomProperty: true, // grid-cols-(--my-grid-cols)\n handleBareValue: ({ value }) =>\n parseFractionOrNumber(value, { repeat: true }),\n description:\n \"grid-template-columns utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Template Rows ---\nstaticUtility(\"grid-rows-none\", [[\"grid-template-rows\", \"none\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-rows-subgrid\", [[\"grid-template-rows\", \"subgrid\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grid-rows\",\n prop: \"grid-template-rows\",\n supportsArbitrary: true, // grid-rows-[200px_minmax(900px,_1fr)_100px], etc.\n supportsCustomProperty: true, // grid-rows-(--my-grid-rows)\n handleBareValue: ({ value }) =>\n parseFractionOrNumber(value, { repeat: true }),\n handle: (value) => {\n // grid-rows-[200px_minmax(900px,_1fr)_100px]\n // Just output as-is (spaces instead of underscores)\n if (typeof value === \"string\") {\n return [decl(\"grid-template-rows\", value.replace(/_/g, \" \"))];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\"grid-template-rows\", `var(${value})`),\n ],\n description:\n \"grid-template-rows utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Row ---\n// row-span utilities\nstaticUtility(\"row-span-full\", [[\"grid-row\", \"1 / -1\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-span\",\n prop: \"grid-row\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return `span ${value} / span ${value}`;\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\"grid-row\", `span var(${value}) / span var(${value})`),\n ],\n handle: (value) => {\n if (parseNumber(value))\n return [decl(\"grid-row\", `span ${value} / span ${value}`)];\n // arbitrary value: row-span-[5] → span 5 / span 5\n return null;\n },\n description:\n \"grid-row span utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-start utilities\nstaticUtility(\"row-start-auto\", [[\"grid-row-start\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-start\",\n prop: \"grid-row-start\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row-start\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row-start\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row-start\", value)];\n return null;\n },\n description:\n \"grid-row-start utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-end utilities\nstaticUtility(\"row-end-auto\", [[\"grid-row-end\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-end\",\n prop: \"grid-row-end\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row-end\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row-end\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row-end\", value)];\n return null;\n },\n description:\n \"grid-row-end utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-auto, row-<number>, -row-<number>, row-(<custom-property>), row-[value]\nstaticUtility(\"row-auto\", [[\"grid-row\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row\",\n prop: \"grid-row\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row\", value)];\n return null;\n },\n description:\n \"grid-row utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Auto Flow ---\n staticUtility(\"grid-flow-row\", [[\"grid-auto-flow\", \"row\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-col\", [[\"grid-auto-flow\", \"column\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-dense\", [[\"grid-auto-flow\", \"dense\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-row-dense\", [[\"grid-auto-flow\", \"row dense\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-col-dense\", [[\"grid-auto-flow\", \"column dense\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Grid Auto Columns ---\nstaticUtility(\"auto-cols-auto\", [[\"grid-auto-columns\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-min\", [[\"grid-auto-columns\", \"min-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-max\", [[\"grid-auto-columns\", \"max-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-fr\", [[\"grid-auto-columns\", \"minmax(0, 1fr)\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"auto-cols\",\n prop: \"grid-auto-columns\",\n supportsArbitrary: true, // auto-cols-[minmax(0,2fr)]\n supportsCustomProperty: true, // auto-cols-(--my-auto-cols)\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"grid-auto-columns\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-auto-columns\", `var(${value})`)],\n description:\n \"grid-auto-columns utility (static, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Auto Rows ---\nstaticUtility(\"auto-rows-auto\", [[\"grid-auto-rows\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-min\", [[\"grid-auto-rows\", \"min-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-max\", [[\"grid-auto-rows\", \"max-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-fr\", [[\"grid-auto-rows\", \"minmax(0, 1fr)\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"auto-rows\",\n prop: \"grid-auto-rows\",\n supportsArbitrary: true, // auto-rows-[minmax(0,2fr)]\n supportsCustomProperty: true, // auto-rows-(--my-auto-rows)\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"grid-auto-rows\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-auto-rows\", `var(${value})`)],\n description:\n \"grid-auto-rows utility (static, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Gap ---\nfunctionalUtility({\n name: \"gap-x\",\n prop: \"column-gap\",\n supportsArbitrary: true, // gap-x-[10vw]\n supportsCustomProperty: true, // gap-x-(--my-gap-x)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"column-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"column-gap\", `var(${value})`)],\n description: \"gap-x utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap-y\",\n prop: \"row-gap\",\n supportsArbitrary: true, // gap-y-[10vw]\n supportsCustomProperty: true, // gap-y-(--my-gap-y)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"row-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"row-gap\", `var(${value})`)],\n description: \"gap-y utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap\",\n prop: \"gap\",\n supportsArbitrary: true, // gap-[10vw]\n supportsCustomProperty: true, // gap-(--my-gap)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"gap\", `var(${value})`)],\n description: \"gap utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\n\n// --- Flexbox & Grid: Justify Content ---\nstaticUtility(\"justify-start\", [[\"justify-content\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-end\", [[\"justify-content\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-end-safe\", [[\"justify-content\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-center\", [[\"justify-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-center-safe\", [[\"justify-content\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-between\", [[\"justify-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-around\", [[\"justify-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-evenly\", [[\"justify-content\", \"space-evenly\"]], { category: 'flex-grid' });\n staticUtility(\"justify-stretch\", [[\"justify-content\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-baseline\", [[\"justify-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-normal\", [[\"justify-content\", \"normal\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Justify Items ---\nstaticUtility(\"justify-items-start\", [[\"justify-items\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-end\", [[\"justify-items\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-end-safe\", [[\"justify-items\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-center\", [[\"justify-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-center-safe\", [[\"justify-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-stretch\", [[\"justify-items\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-normal\", [[\"justify-items\", \"normal\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Justify Self ---\nstaticUtility(\"justify-self-auto\", [[\"justify-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-start\", [[\"justify-self\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-center\", [[\"justify-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-center-safe\", [[\"justify-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-end\", [[\"justify-self\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-end-safe\", [[\"justify-self\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-stretch\", [[\"justify-self\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Content ---\n staticUtility(\"content-normal\", [[\"align-content\", \"normal\"]], { category: 'flex-grid' });\nstaticUtility(\"content-center\", [[\"align-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"content-start\", [[\"align-content\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"content-end\", [[\"align-content\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"content-between\", [[\"align-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"content-around\", [[\"align-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"content-evenly\", [[\"align-content\", \"space-evenly\"]], { category: 'flex-grid' });\nstaticUtility(\"content-baseline\", [[\"align-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"content-stretch\", [[\"align-content\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Items ---\nstaticUtility(\"items-start\", [[\"align-items\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"items-end\", [[\"align-items\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"items-end-safe\", [[\"align-items\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"items-center\", [[\"align-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"items-center-safe\", [[\"align-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"items-baseline\", [[\"align-items\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"items-baseline-last\", [[\"align-items\", \"last baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"items-stretch\", [[\"align-items\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Self ---\nstaticUtility(\"self-auto\", [[\"align-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"self-start\", [[\"align-self\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"self-end\", [[\"align-self\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"self-end-safe\", [[\"align-self\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"self-center\", [[\"align-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"self-center-safe\", [[\"align-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"self-stretch\", [[\"align-self\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"self-baseline\", [[\"align-self\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"self-baseline-last\", [[\"align-self\", \"last baseline\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Place Content ---\nstaticUtility(\"place-content-center\", [[\"place-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-center-safe\", [[\"place-content\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-start\", [[\"place-content\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-end\", [[\"place-content\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-end-safe\", [[\"place-content\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-between\", [[\"place-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-around\", [[\"place-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-evenly\", [[\"place-content\", \"space-evenly\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-baseline\", [[\"place-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-stretch\", [[\"place-content\", \"stretch\"]], { category: 'flex-grid' } );\n\n// --- Flexbox & Grid: Place Items ---\nstaticUtility(\"place-items-start\", [[\"place-items\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-end\", [[\"place-items\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-end-safe\", [[\"place-items\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-center\", [[\"place-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-center-safe\", [[\"place-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-baseline\", [[\"place-items\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-stretch\", [[\"place-items\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Place Self ---\nstaticUtility(\"place-self-auto\", [[\"place-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-start\", [[\"place-self\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-end\", [[\"place-self\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-end-safe\", [[\"place-self\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-center\", [[\"place-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-center-safe\", [[\"place-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-stretch\", [[\"place-self\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Grid Column ---\n// col-span utilities\nstaticUtility(\"col-span-full\", [[\"grid-column\", \"1 / -1\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-span\",\n prop: \"grid-column\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return `span ${value} / span ${value}`;\n return null;\n },\n handleCustomProperty: (value, _ctx, _token) => {\n return [decl(\"grid-column\", `span var(${value}) / span var(${value})`)];\n },\n handle: (value, _ctx, _token) => {\n if (parseNumber(value))\n return [decl(\"grid-column\", `span ${value} / span ${value}`)];\n return null;\n },\n description:\n \"grid-column span utility (number, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-start utilities\nstaticUtility(\"col-start-auto\", [[\"grid-column-start\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-start\",\n prop: \"grid-column-start\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column-start utility (number, negative, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-end utilities\nstaticUtility(\"col-end-auto\", [[\"grid-column-end\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-end\",\n prop: \"grid-column-end\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column-end utility (number, negative, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-auto, col-<number>, -col-<number>, col-(<custom-property>), col-[value]\nstaticUtility(\"col-auto\", [[\"grid-column\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col\",\n prop: \"grid-column\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl, rule } from \"../core/ast\";\n\n// Padding utilities (p-*, px-*, py-*, ps-*, pe-*, pt-*, pr-*, pb-*, pl-*)\n[\n [\"px\", \"padding-inline\"],\n [\"py\", \"padding-block\"],\n [\"ps\", \"padding-inline-start\"],\n [\"pe\", \"padding-inline-end\"],\n [\"pt\", \"padding-top\"],\n [\"pr\", \"padding-right\"],\n [\"pb\", \"padding-bottom\"],\n [\"pl\", \"padding-left\"],\n [\"p\", \"padding\"],\n].forEach(([name, prop]) => {\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'spacing' });\n functionalUtility({\n name,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n description: `${name} utility (number, arbitrary, custom property supported)`,\n category: \"spacing\",\n });\n});\n\n// Margin utilities (m-*, mx-*, my-*, ms-*, me-*, mt-*, mr-*, mb-*, ml-*)\n[\n [\"mx\", \"margin-inline\"],\n [\"my\", \"margin-block\"],\n [\"ms\", \"margin-inline-start\"],\n [\"me\", \"margin-inline-end\"],\n [\"mt\", \"margin-top\"],\n [\"mr\", \"margin-right\"],\n [\"mb\", \"margin-bottom\"],\n [\"ml\", \"margin-left\"],\n [\"m\", \"margin\"],\n].forEach(([name, prop]) => {\n staticUtility(`${name}-auto`, [[prop, \"auto\"]], { category: 'spacing' });\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'spacing' });\n staticUtility(`-${name}-px`, [[prop, \"-1px\"]], { category: 'spacing' });\n functionalUtility({\n name,\n prop,\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n description: `${name} margin utility (number, negative, arbitrary, custom property, auto, px supported)`,\n category: \"spacing\",\n });\n});\n\n// --- Spacing: space-x, space-y, space-x-reverse, space-y-reverse ---\n// spacing utilities reference\n\n// space-x-*, -space-x-*, space-x-px, -space-x-px, space-x-[...], space-x-(...)\n\nstaticUtility(\"space-x-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-x-reverse\", \"0\"],\n [\n \"margin-inline-start\",\n \"calc(1px * calc(1 - var(--baro-space-x-reverse)))\",\n ],\n [\"margin-inline-end\", \"calc(1px * var(--baro-space-x-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"-space-x-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-x-reverse\", \"0\"],\n [\n \"margin-inline-start\",\n \"calc(-1px * calc(1 - var(--baro-space-x-reverse)))\",\n ],\n [\"margin-inline-end\", \"calc(-1px * var(--baro-space-x-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"space-x-reverse\", [\n [\"& > :not([hidden]) ~ :not([hidden])\", [[\"--baro-space-x-reverse\", \"1\"]]],\n], { category: 'spacing' });\n\nfunctionalUtility({\n name: \"space-x\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n handle: (value, ctx, token) => {\n let v = value;\n if (typeof v === \"number\" || /^-?\\d+(\\.\\d+)?$/.test(v)) {\n v = `calc(var(--spacing) * ${token.negative ? \"-\" : \"\"}${v})`;\n }\n return [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-x-reverse\", \"0\"),\n decl(\n \"margin-inline-start\",\n `calc(${v} * calc(1 - var(--baro-space-x-reverse)))`\n ),\n decl(\"margin-inline-end\", `calc(${v} * var(--baro-space-x-reverse))`),\n ]),\n ];\n },\n handleCustomProperty: (value) => [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-x-reverse\", \"0\"),\n decl(\n \"margin-inline-start\",\n `calc(var(${value}) * calc(1 - var(--baro-space-x-reverse)))`\n ),\n decl(\n \"margin-inline-end\",\n `calc(var(${value}) * var(--baro-space-x-reverse))`\n ),\n ]),\n ],\n description:\n \"space-x utility (number, negative, px, arbitrary, custom property, reverse supported)\",\n category: \"spacing\",\n});\n\n// space-y-*, -space-y-*, space-y-px, -space-y-px, space-y-[...], space-y-(...)\n\nstaticUtility(\"space-y-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-y-reverse\", \"0\"],\n [\"margin-block-start\", \"calc(1px * calc(1 - var(--baro-space-y-reverse)))\"],\n [\"margin-block-end\", \"calc(1px * var(--baro-space-y-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"-space-y-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-y-reverse\", \"0\"],\n [\n \"margin-block-start\",\n \"calc(-1px * calc(1 - var(--baro-space-y-reverse)))\",\n ],\n [\"margin-block-end\", \"calc(-1px * var(--baro-space-y-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"space-y-reverse\", [\n [\"& > :not([hidden]) ~ :not([hidden])\", [[\"--baro-space-y-reverse\", \"1\"]]],\n], { category: 'spacing' });\n\nfunctionalUtility({\n name: \"space-y\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n handle: (value, ctx, token) => {\n let v = value;\n if (typeof v === \"number\" || /^-?\\d+(\\.\\d+)?$/.test(v)) {\n v = `calc(var(--spacing) * ${token.negative ? \"-\" : \"\"}${v})`;\n }\n return [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-y-reverse\", \"0\"),\n decl(\n \"margin-block-start\",\n `calc(${v} * calc(1 - var(--baro-space-y-reverse)))`\n ),\n decl(\"margin-block-end\", `calc(${v} * var(--baro-space-y-reverse))`),\n ]),\n ];\n },\n handleCustomProperty: (value) => [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-y-reverse\", \"0\"),\n decl(\n \"margin-block-start\",\n `calc(var(${value}) * calc(1 - var(--baro-space-y-reverse)))`\n ),\n decl(\n \"margin-block-end\",\n `calc(var(${value}) * var(--baro-space-y-reverse))`\n ),\n ]),\n ],\n description:\n \"space-y utility (number, negative, px, arbitrary, custom property, reverse supported)\",\n category: \"spacing\",\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseFractionOrNumber,\n parseNumber,\n} from \"../core/utils\";\n\n// Import layout utilities\nimport \"./layout\";\nimport \"./flexbox-grid\";\nimport \"./spacing\";\n\n\n// --- Sizing: width (w-*) and size (size-*) ---\n// width documentation\n\n// w-* static values\n[\n ['w-auto', 'auto'],\n ['w-px', '1px'],\n ['w-full', '100%'],\n ['w-screen', '100vw'],\n ['w-dvw', '100dvw'],\n ['w-dvh', '100dvh'],\n ['w-lvw', '100lvw'],\n ['w-lvh', '100lvh'],\n ['w-svw', '100svw'],\n ['w-svh', '100svh'],\n ['w-min', 'min-content'],\n ['w-max', 'max-content'],\n ['w-fit', 'fit-content'],\n ['w-3xs', 'var(--container-3xs)'],\n ['w-2xs', 'var(--container-2xs)'],\n ['w-xs', 'var(--container-xs)'],\n ['w-sm', 'var(--container-sm)'],\n ['w-md', 'var(--container-md)'],\n ['w-lg', 'var(--container-lg)'],\n ['w-xl', 'var(--container-xl)'],\n ['w-2xl', 'var(--container-2xl)'],\n ['w-3xl', 'var(--container-3xl)'],\n ['w-4xl', 'var(--container-4xl)'],\n ['w-5xl', 'var(--container-5xl)'],\n ['w-6xl', 'var(--container-6xl)'],\n ['w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['width', value]]);\n});\n\n// w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'w',\n prop: 'width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n \n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'width utility (spacing, fraction, arbitrary, custom property, container scale, static supported)',\n category: 'sizing',\n});\n\n// size-* static values\n[\n ['size-auto', ['auto', 'auto']],\n ['size-px', ['1px', '1px']],\n ['size-full', ['100%', '100%']],\n ['size-dvw', ['100dvw', '100dvw']],\n ['size-dvh', ['100dvh', '100dvh']],\n ['size-lvw', ['100lvw', '100lvw']],\n ['size-lvh', ['100lvh', '100lvh']],\n ['size-svw', ['100svw', '100svw']],\n ['size-svh', ['100svh', '100svh']],\n ['size-min', ['min-content', 'min-content']],\n ['size-max', ['max-content', 'max-content']],\n ['size-fit', ['fit-content', 'fit-content']],\n].forEach(([name, [w, h]]) => {\n staticUtility(name as string, [['width', w], ['height', h]]);\n});\n\n// size-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'size',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n handle: (value) => {\n // arbitrary, custom property, etc.\n return [\n decl('width', value),\n decl('height', value),\n ];\n },\n handleCustomProperty: (value) => [\n decl('width', `var(${value})`),\n decl('height', `var(${value})`),\n ],\n description: 'size utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: height (h-*) ---\n// height documentation\n\n// h-* static values\n[\n ['h-auto', 'auto'],\n ['h-px', '1px'],\n ['h-full', '100%'],\n ['h-screen', '100vh'],\n ['h-dvh', '100dvh'],\n ['h-lvh', '100lvh'],\n ['h-svh', '100svh'],\n ['h-min', 'min-content'],\n ['h-max', 'max-content'],\n ['h-fit', 'fit-content'],\n].forEach(([name, value]) => {\n staticUtility(name, [['height', value]]);\n});\n\n// h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'h',\n prop: 'height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: min-height (min-h-*) ---\n// min-height documentation\n\n// min-h-* static values\n[\n ['min-h-0', '0px'],\n ['min-h-px', '1px'],\n ['min-h-full', '100%'],\n ['min-h-screen', '100vh'],\n ['min-h-dvh', '100dvh'],\n ['min-h-lvh', '100lvh'],\n ['min-h-svh', '100svh'],\n ['min-h-min', 'min-content'],\n ['min-h-max', 'max-content'],\n ['min-h-fit', 'fit-content'],\n].forEach(([name, value]) => {\n staticUtility(name, [['min-height', value]], { category: 'sizing' });\n});\n\n// min-h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'min-h',\n prop: 'min-height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'min-height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: max-height (max-h-*) ---\n// max-height documentation\n\n// max-h-* static values\n[\n ['max-h-px', '1px'],\n ['max-h-full', '100%'],\n ['max-h-screen', '100vh'],\n ['max-h-dvh', '100dvh'],\n ['max-h-lvh', '100lvh'],\n ['max-h-svh', '100svh'],\n ['max-h-min', 'min-content'],\n ['max-h-max', 'max-content'],\n ['max-h-fit', 'fit-content'],\n ['max-h-none', 'none'],\n].forEach(([name, value]) => {\n staticUtility(name, [['max-height', value]], { category: 'sizing' });\n});\n\n// max-h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'max-h',\n prop: 'max-height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'max-height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: min-width (min-w-*) ---\n// min-width documentation\n\n// min-w-* static values\n[\n ['min-w-auto', 'auto'],\n ['min-w-px', '1px'],\n ['min-w-full', '100%'],\n ['min-w-screen', '100vw'],\n ['min-w-dvw', '100dvw'],\n ['min-w-dvh', '100dvh'],\n ['min-w-lvw', '100lvw'],\n ['min-w-lvh', '100lvh'],\n ['min-w-svw', '100svw'],\n ['min-w-svh', '100svh'],\n ['min-w-min', 'min-content'],\n ['min-w-max', 'max-content'],\n ['min-w-fit', 'fit-content'],\n ['min-w-3xs', 'var(--container-3xs)'],\n ['min-w-2xs', 'var(--container-2xs)'],\n ['min-w-xs', 'var(--container-xs)'],\n ['min-w-sm', 'var(--container-sm)'],\n ['min-w-md', 'var(--container-md)'],\n ['min-w-lg', 'var(--container-lg)'],\n ['min-w-xl', 'var(--container-xl)'],\n ['min-w-2xl', 'var(--container-2xl)'],\n ['min-w-3xl', 'var(--container-3xl)'],\n ['min-w-4xl', 'var(--container-4xl)'],\n ['min-w-5xl', 'var(--container-5xl)'],\n ['min-w-6xl', 'var(--container-6xl)'],\n ['min-w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['min-width', value]], { category: 'sizing' });\n});\n\n// min-w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'min-w',\n prop: 'min-width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'min-width utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n\n// --- Sizing: max-width (max-w-*) ---\n// max-width documentation\n\n// max-w-* static values\n[\n ['max-w-none', 'none'],\n ['max-w-xs', 'var(--container-xs)'],\n ['max-w-sm', 'var(--container-sm)'],\n ['max-w-md', 'var(--container-md)'],\n ['max-w-lg', 'var(--container-lg)'],\n ['max-w-xl', 'var(--container-xl)'],\n ['max-w-2xl', 'var(--container-2xl)'],\n ['max-w-3xl', 'var(--container-3xl)'],\n ['max-w-4xl', 'var(--container-4xl)'],\n ['max-w-5xl', 'var(--container-5xl)'],\n ['max-w-6xl', 'var(--container-6xl)'],\n ['max-w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['max-width', value]], { category: 'sizing' });\n});\n\n// max-w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'max-w',\n prop: 'max-width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'max-width utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport {\n parseNumber,\n parseLength,\n} from \"../core/utils\";\n\n// --- Typography: Font Family ---\nstaticUtility(\"font-sans\", [[\"font-family\", \"var(--font-family-sans)\"]], { category: 'typography' });\nstaticUtility(\"font-serif\", [[\"font-family\", \"var(--font-family-serif)\"]], { category: 'typography' });\nstaticUtility(\"font-mono\", [[\"font-family\", \"var(--font-family-mono)\"]], { category: 'typography' });\n\n// --- Typography: Font Size ---\nstaticUtility(\"text-xs\", [[\"font-size\", \"var(--text-xs)\"], [\"line-height\", \"var(--text-xs--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-sm\", [[\"font-size\", \"var(--text-sm)\"], [\"line-height\", \"var(--text-sm--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-base\", [[\"font-size\", \"var(--text-base)\"], [\"line-height\", \"var(--text-base--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-lg\", [[\"font-size\", \"var(--text-lg)\"], [\"line-height\", \"var(--text-lg--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-xl\", [[\"font-size\", \"var(--text-xl)\"], [\"line-height\", \"var(--text-xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-2xl\", [[\"font-size\", \"var(--text-2xl)\"], [\"line-height\", \"var(--text-2xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-3xl\", [[\"font-size\", \"var(--text-3xl)\"], [\"line-height\", \"var(--text-3xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-4xl\", [[\"font-size\", \"var(--text-4xl)\"], [\"line-height\", \"var(--text-4xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-5xl\", [[\"font-size\", \"var(--text-5xl)\"], [\"line-height\", \"var(--text-5xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-6xl\", [[\"font-size\", \"var(--text-6xl)\"], [\"line-height\", \"var(--text-6xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-7xl\", [[\"font-size\", \"var(--text-7xl)\"], [\"line-height\", \"var(--text-7xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-8xl\", [[\"font-size\", \"var(--text-8xl)\"], [\"line-height\", \"var(--text-8xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-9xl\", [[\"font-size\", \"var(--text-9xl)\"], [\"line-height\", \"var(--text-9xl--line-height)\"]], { category: 'typography' });\n\n\n// --- Typography: Font Weight ---\nstaticUtility(\"font-thin\", [[\"font-weight\", \"var(--font-weight-thin)\"]], { category: 'typography' });\nstaticUtility(\"font-extralight\", [[\"font-weight\", \"var(--font-weight-extralight)\"]], { category: 'typography' });\nstaticUtility(\"font-light\", [[\"font-weight\", \"var(--font-weight-light)\"]], { category: 'typography' });\nstaticUtility(\"font-normal\", [[\"font-weight\", \"var(--font-weight-normal)\"]], { category: 'typography' });\nstaticUtility(\"font-medium\", [[\"font-weight\", \"var(--font-weight-medium)\"]], { category: 'typography' });\nstaticUtility(\"font-semibold\", [[\"font-weight\", \"var(--font-weight-semibold)\"]], { category: 'typography' });\nstaticUtility(\"font-bold\", [[\"font-weight\", \"var(--font-weight-bold)\"]], { category: 'typography' });\nstaticUtility(\"font-extrabold\", [[\"font-weight\", \"var(--font-weight-extrabold)\"]], { category: 'typography' });\nstaticUtility(\"font-black\", [[\"font-weight\", \"var(--font-weight-black)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"font\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"font-weight\", value)];\n }\n return [decl(\"font-family\", value)];\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"font-name:\")) {\n return [decl(\"font-family\", `var(${value.replace(\"font-name:\", \"\")})`)];\n }\n return [decl(\"font-weight\", `var(${value})`)];\n },\n description: \"font-weight utility (theme, number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Font Style ---\nstaticUtility(\"italic\", [[\"font-style\", \"italic\"]], { category: 'typography' });\nstaticUtility(\"not-italic\", [[\"font-style\", \"normal\"]], { category: 'typography' });\n\n// --- Typography: Letter Spacing ---\nstaticUtility(\"tracking-tighter\", [[\"letter-spacing\", \"var(--letter-spacing-tighter)\"]], { category: 'typography' });\nstaticUtility(\"tracking-tight\", [[\"letter-spacing\", \"var(--letter-spacing-tight)\"]], { category: 'typography' });\nstaticUtility(\"tracking-normal\", [[\"letter-spacing\", \"var(--letter-spacing-normal)\"]], { category: 'typography' });\nstaticUtility(\"tracking-wide\", [[\"letter-spacing\", \"var(--letter-spacing-wide)\"]], { category: 'typography' });\nstaticUtility(\"tracking-wider\", [[\"letter-spacing\", \"var(--letter-spacing-wider)\"]], { category: 'typography' });\nstaticUtility(\"tracking-widest\", [[\"letter-spacing\", \"var(--letter-spacing-widest)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"tracking\",\n prop: \"letter-spacing\",\n themeKey: \"letterSpacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"letter-spacing utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Line Height ---\nstaticUtility(\"leading-none\", [[\"line-height\", \"var(--line-height-none)\"]], { category: 'typography' });\nstaticUtility(\"leading-tight\", [[\"line-height\", \"var(--line-height-tight)\"]], { category: 'typography' });\nstaticUtility(\"leading-snug\", [[\"line-height\", \"var(--line-height-snug)\"]], { category: 'typography' });\nstaticUtility(\"leading-normal\", [[\"line-height\", \"var(--line-height-normal)\"]], { category: 'typography' });\nstaticUtility(\"leading-relaxed\", [[\"line-height\", \"var(--line-height-relaxed)\"]], { category: 'typography' });\nstaticUtility(\"leading-loose\", [[\"line-height\", \"var(--line-height-loose)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"leading\",\n prop: \"line-height\",\n themeKey: \"lineHeight\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n description: \"line-height utility (theme, number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Align ---\nstaticUtility(\"text-left\", [[\"text-align\", \"left\"]], { category: 'typography' });\nstaticUtility(\"text-center\", [[\"text-align\", \"center\"]], { category: 'typography' });\nstaticUtility(\"text-right\", [[\"text-align\", \"right\"]], { category: 'typography' });\nstaticUtility(\"text-justify\", [[\"text-align\", \"justify\"]], { category: 'typography' });\nstaticUtility(\"text-start\", [[\"text-align\", \"start\"]], { category: 'typography' });\nstaticUtility(\"text-end\", [[\"text-align\", \"end\"]], { category: 'typography' });\n\n// --- Typography: Text Color ---\nstaticUtility(\"text-inherit\", [[\"color\", \"inherit\"]], { category: 'typography' });\nstaticUtility(\"text-current\", [[\"color\", \"currentColor\"]], { category: 'typography' });\nstaticUtility(\"text-transparent\", [[\"color\", \"transparent\"]], { category: 'typography' });\n\n// --- Typography: Text Overflow ---\nstaticUtility(\"truncate\", [[\"overflow\", \"hidden\"], [\"text-overflow\", \"ellipsis\"], [\"white-space\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"text-ellipsis\", [[\"text-overflow\", \"ellipsis\"]], { category: 'typography' });\nstaticUtility(\"text-clip\", [[\"text-overflow\", \"clip\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"text\", \n themeKey: \"colors\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n\n return [decl(\"color\", value)];\n }\n\n if (parseLength(value)) {\n return [decl(\"font-size\", value)];\n }\n return [decl(\"color\", value)];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n return [decl(\"color\", `var(${value.replace(\"color:\", \"\")})`)];\n }\n return [decl(\"font-size\", `var(${value})`)];\n },\n description: \"text color utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n\nfunctionalUtility({\n name: \"text\",\n themeKey: \"fontSize\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n // Check if it's a theme value first\n const themeValue = ctx.theme(\"fontSize\", value) as string | [string, string];\n if (themeValue) {\n if (Array.isArray(themeValue)) {\n // [fontSize, lineHeight] format\n return [\n decl(\"font-size\", themeValue[0]),\n decl(\"line-height\", themeValue[1])\n ];\n } else {\n return [decl(\"font-size\", themeValue as string)];\n }\n }\n\n // Handle arbitrary values\n if (token.arbitrary) {\n return [decl(\"font-size\", value)];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"font-size\", `var(${value})`)],\n description: \"font-size utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Transform ---\nstaticUtility(\"uppercase\", [[\"text-transform\", \"uppercase\"]], { category: 'typography' });\nstaticUtility(\"lowercase\", [[\"text-transform\", \"lowercase\"]], { category: 'typography' });\nstaticUtility(\"capitalize\", [[\"text-transform\", \"capitalize\"]], { category: 'typography' });\nstaticUtility(\"normal-case\", [[\"text-transform\", \"none\"]], { category: 'typography' });\n\n// --- Typography: Text Decoration ---\nstaticUtility(\"underline\", [[\"text-decoration-line\", \"underline\"]], { category: 'typography' });\nstaticUtility(\"overline\", [[\"text-decoration-line\", \"overline\"]], { category: 'typography' });\nstaticUtility(\"line-through\", [[\"text-decoration-line\", \"line-through\"]], { category: 'typography' });\nstaticUtility(\"no-underline\", [[\"text-decoration-line\", \"none\"]], { category: 'typography' });\n\n\n\n// --- Typography: Whitespace ---\nstaticUtility(\"whitespace-normal\", [[\"white-space\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"whitespace-nowrap\", [[\"white-space\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre\", [[\"white-space\", \"pre\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre-line\", [[\"white-space\", \"pre-line\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre-wrap\", [[\"white-space\", \"pre-wrap\"]], { category: 'typography' });\nstaticUtility(\"whitespace-break-spaces\", [[\"white-space\", \"break-spaces\"]], { category: 'typography' });\n\n// --- Typography: Word Break ---\nstaticUtility(\"break-normal\", [[\"overflow-wrap\", \"normal\"], [\"word-break\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"break-words\", [[\"overflow-wrap\", \"break-word\"]], { category: 'typography' });\nstaticUtility(\"break-all\", [[\"word-break\", \"break-all\"]], { category: 'typography' });\nstaticUtility(\"break-keep\", [[\"word-break\", \"keep-all\"]], { category: 'typography' });\n\n// --- Typography: Font Smoothing ---\nstaticUtility(\"antialiased\", [[\"-webkit-font-smoothing\", \"antialiased\"], [\"-moz-osx-font-smoothing\", \"grayscale\"]], { category: 'typography' });\nstaticUtility(\"subpixel-antialiased\", [[\"-webkit-font-smoothing\", \"auto\"], [\"-moz-osx-font-smoothing\", \"auto\"]], { category: 'typography' });\n\n// --- Typography: Font Stretch ---\nstaticUtility(\"font-stretch-normal\", [[\"font-stretch\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-ultra-condensed\", [[\"font-stretch\", \"ultra-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-extra-condensed\", [[\"font-stretch\", \"extra-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-condensed\", [[\"font-stretch\", \"condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-semi-condensed\", [[\"font-stretch\", \"semi-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-semi-expanded\", [[\"font-stretch\", \"semi-expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-expanded\", [[\"font-stretch\", \"expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-extra-expanded\", [[\"font-stretch\", \"extra-expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-ultra-expanded\", [[\"font-stretch\", \"ultra-expanded\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"font-stretch\",\n prop: \"font-stretch\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"font-stretch utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Font Variant Numeric ---\nstaticUtility(\"normal-nums\", [[\"font-variant-numeric\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"ordinal\", [[\"font-variant-numeric\", \"ordinal\"]], { category: 'typography' });\nstaticUtility(\"slashed-zero\", [[\"font-variant-numeric\", \"slashed-zero\"]], { category: 'typography' });\nstaticUtility(\"lining-nums\", [[\"font-variant-numeric\", \"lining-nums\"]], { category: 'typography' });\nstaticUtility(\"oldstyle-nums\", [[\"font-variant-numeric\", \"oldstyle-nums\"]], { category: 'typography' });\nstaticUtility(\"proportional-nums\", [[\"font-variant-numeric\", \"proportional-nums\"]], { category: 'typography' });\nstaticUtility(\"tabular-nums\", [[\"font-variant-numeric\", \"tabular-nums\"]], { category: 'typography' });\nstaticUtility(\"diagonal-fractions\", [[\"font-variant-numeric\", \"diagonal-fractions\"]], { category: 'typography' });\nstaticUtility(\"stacked-fractions\", [[\"font-variant-numeric\", \"stacked-fractions\"]], { category: 'typography' });\n\n// --- Typography: Line Clamp ---\nstaticUtility(\"line-clamp-none\", [[\"-webkit-line-clamp\", \"none\"]], { category: 'typography' });\nfunctionalUtility({\n name: \"line-clamp\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handle: (value) => [\n decl(\"overflow\", \"hidden\"),\n decl(\"display\", \"-webkit-box\"),\n decl(\"-webkit-box-orient\", \"vertical\"),\n decl(\"-webkit-line-clamp\", value)\n ],\n handleCustomProperty: (value) => [\n decl(\"overflow\", \"hidden\"),\n decl(\"display\", \"-webkit-box\"),\n decl(\"-webkit-box-orient\", \"vertical\"),\n decl(\"-webkit-line-clamp\", `var(${value})`)\n ],\n description: \"line-clamp utility (number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: List Style Type ---\nstaticUtility(\"list-none\", [[\"list-style-type\", \"none\"]], { category: 'typography' });\nstaticUtility(\"list-disc\", [[\"list-style-type\", \"disc\"]], { category: 'typography' });\nstaticUtility(\"list-decimal\", [[\"list-style-type\", \"decimal\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"list\",\n prop: \"list-style-type\",\n themeKey: \"listStyleType\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"list-style-type utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: List Style Position ---\nstaticUtility(\"list-inside\", [[\"list-style-position\", \"inside\"]], { category: 'typography' });\nstaticUtility(\"list-outside\", [[\"list-style-position\", \"outside\"]], { category: 'typography' });\n\n// --- Typography: List Style Image ---\nstaticUtility(\"list-image-none\", [[\"list-style-image\", \"none\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"list-image\",\n prop: \"list-style-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"list-style-image\", `url(${value})`)],\n handleCustomProperty: (value) => [decl(\"list-style-image\", `var(${value})`)],\n description: \"list-style-image utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Decoration Color ---\nfunctionalUtility({\n name: \"decoration\",\n themeKey: \"colors\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"text-decoration-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"text-decoration-color\", value),\n ];\n }\n return [decl(\"text-decoration-color\", value)];\n }\n return [decl(\"text-decoration-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"text-decoration-color\", `var(${value})`)],\n description: \"text-decoration-color utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Decoration Style ---\n staticUtility(\"decoration-solid\", [[\"text-decoration-style\", \"solid\"]], { category: 'typography' });\nstaticUtility(\"decoration-double\", [[\"text-decoration-style\", \"double\"]], { category: 'typography' });\nstaticUtility(\"decoration-dotted\", [[\"text-decoration-style\", \"dotted\"]], { category: 'typography' });\nstaticUtility(\"decoration-dashed\", [[\"text-decoration-style\", \"dashed\"]], { category: 'typography' });\nstaticUtility(\"decoration-wavy\", [[\"text-decoration-style\", \"wavy\"]], { category: 'typography' });\n\n// --- Typography: Text Decoration Thickness ---\nstaticUtility(\"decoration-auto\", [[\"text-decoration-thickness\", \"auto\"]], { category: 'typography' });\nstaticUtility(\"decoration-from-font\", [[\"text-decoration-thickness\", \"from-font\"]], { category: 'typography' });\nstaticUtility(\"decoration-0\", [[\"text-decoration-thickness\", \"0px\"]], { category: 'typography' });\nstaticUtility(\"decoration-1\", [[\"text-decoration-thickness\", \"1px\"]], { category: 'typography' });\nstaticUtility(\"decoration-2\", [[\"text-decoration-thickness\", \"2px\"]], { category: 'typography' });\nstaticUtility(\"decoration-4\", [[\"text-decoration-thickness\", \"4px\"]], { category: 'typography' });\nstaticUtility(\"decoration-8\", [[\"text-decoration-thickness\", \"8px\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"decoration\",\n prop: \"text-decoration-thickness\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `${value}px`,\n description: \"text-decoration-thickness utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Underline Offset ---\nstaticUtility(\"underline-offset-auto\", [[\"text-underline-offset\", \"auto\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-0\", [[\"text-underline-offset\", \"0px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-1\", [[\"text-underline-offset\", \"1px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-2\", [[\"text-underline-offset\", \"2px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-4\", [[\"text-underline-offset\", \"4px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-8\", [[\"text-underline-offset\", \"8px\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"underline-offset\",\n prop: \"text-underline-offset\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `${value}px`,\n description: \"text-underline-offset utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Wrap ---\nstaticUtility(\"text-wrap\", [[\"text-wrap\", \"wrap\"]], { category: 'typography' });\nstaticUtility(\"text-nowrap\", [[\"text-wrap\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"text-balance\", [[\"text-wrap\", \"balance\"]], { category: 'typography' });\nstaticUtility(\"text-pretty\", [[\"text-wrap\", \"pretty\"]], { category: 'typography' });\n\n// --- Typography: Text Indent ---\nfunctionalUtility({\n name: \"indent\",\n prop: \"text-indent\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n description: \"text-indent utility (spacing, negative, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Vertical Align ---\nstaticUtility(\"align-baseline\", [[\"vertical-align\", \"baseline\"]], { category: 'typography' });\nstaticUtility(\"align-top\", [[\"vertical-align\", \"top\"]], { category: 'typography' });\nstaticUtility(\"align-middle\", [[\"vertical-align\", \"middle\"]], { category: 'typography' });\nstaticUtility(\"align-bottom\", [[\"vertical-align\", \"bottom\"]], { category: 'typography' });\nstaticUtility(\"align-text-top\", [[\"vertical-align\", \"text-top\"]], { category: 'typography' });\nstaticUtility(\"align-text-bottom\", [[\"vertical-align\", \"text-bottom\"]], { category: 'typography' });\nstaticUtility(\"align-sub\", [[\"vertical-align\", \"sub\"]], { category: 'typography' });\nstaticUtility(\"align-super\", [[\"vertical-align\", \"super\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"align\",\n prop: \"vertical-align\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"vertical-align utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Hyphens ---\nstaticUtility(\"hyphens-none\", [[\"hyphens\", \"none\"]], { category: 'typography' });\nstaticUtility(\"hyphens-manual\", [[\"hyphens\", \"manual\"]], { category: 'typography' });\nstaticUtility(\"hyphens-auto\", [[\"hyphens\", \"auto\"]], { category: 'typography' });\n\n// --- Typography: Content ---\nstaticUtility(\"content-none\", [[\"content\", \"none\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"content\",\n prop: \"content\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"content\", `\"${value}\"`)],\n handleCustomProperty: (value) => [decl(\"content\", `var(${value})`)],\n description: \"content utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { AstNode, atRoot, atRule, decl, property, styleRule } from \"../core/ast\";\nimport { parseColor, parseLength, parseNumber } from \"../core/utils\";\n\nconst gradientStopProperties = () => {\n return atRoot([\n property('--baro-gradient-position'),\n property('--baro-gradient-from', '#0000', '<color>'),\n property('--baro-gradient-via', '#0000', '<color>'),\n property('--baro-gradient-to', '#0000', '<color>'),\n property('--baro-gradient-stops', \"transparent\"),\n property('--baro-gradient-from-position', '0%', '<length-percentage>'),\n property('--baro-gradient-via-position', '50%', '<length-percentage>'),\n property('--baro-gradient-to-position', '100%', '<length-percentage>'),\n ], \"background\")\n}\n\n\n// --- Background Attachment ---\nstaticUtility(\"bg-fixed\", [[\"background-attachment\", \"fixed\"]], { category: 'background' });\nstaticUtility(\"bg-local\", [[\"background-attachment\", \"local\"]], { category: 'background' });\nstaticUtility(\"bg-scroll\", [[\"background-attachment\", \"scroll\"]], { category: 'background' });\n\n// --- Background Clip ---\nstaticUtility(\"bg-clip-border\", [[\"background-clip\", \"border-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-padding\", [[\"background-clip\", \"padding-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-content\", [[\"background-clip\", \"content-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-text\", [[\"background-clip\", \"text\"]], { category: 'background' });\n\n// --- Background Color ---\nstaticUtility(\"bg-inherit\", [[\"background-color\", \"inherit\"]], { category: 'background' });\nstaticUtility(\"bg-current\", [[\"background-color\", \"currentColor\"]], { category: 'background' });\nstaticUtility(\"bg-transparent\", [[\"background-color\", \"transparent\"]], { category: 'background' });\n\n// --- Background Image ---\nstaticUtility(\"bg-none\", [[\"background-image\", \"none\"]], { category: 'background' });\n\n// --- Background Origin ---\nstaticUtility(\"bg-origin-border\", [[\"background-origin\", \"border-box\"]], { category: 'background' });\nstaticUtility(\"bg-origin-padding\", [[\"background-origin\", \"padding-box\"]], { category: 'background' });\nstaticUtility(\"bg-origin-content\", [[\"background-origin\", \"content-box\"]], { category: 'background' });\n\n// --- Background Position ---\n[\n [\"bg-bottom\", \"bottom\"],\n [\"bg-center\", \"center\"],\n [\"bg-left\", \"left\"],\n [\"bg-left-bottom\", \"left bottom\"],\n [\"bg-left-top\", \"left top\"],\n [\"bg-right\", \"right\"],\n [\"bg-right-bottom\", \"right bottom\"],\n [\"bg-right-top\", \"right top\"],\n [\"bg-top\", \"top\"],\n].forEach(([name, value]) => {\n staticUtility(name, [[\"background-position\", value]], { category: 'background' });\n});\n\n/**\n * background-position utility (arbitrary, custom property supported)\n *\n * bg-position-[length] → background-position: [length]\n * bg-position-[length] → background-position: [length]\n */\nfunctionalUtility({\n name: \"bg-position\",\n prop: \"background-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"background-position utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Repeat ---\nstaticUtility(\"bg-repeat\", [[\"background-repeat\", \"repeat\"]], { category: 'background' });\nstaticUtility(\"bg-no-repeat\", [[\"background-repeat\", \"no-repeat\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-x\", [[\"background-repeat\", \"repeat-x\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-y\", [[\"background-repeat\", \"repeat-y\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-round\", [[\"background-repeat\", \"round\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-space\", [[\"background-repeat\", \"space\"]], { category: 'background' });\n\n// --- Background Size ---\nstaticUtility(\"bg-auto\", [[\"background-size\", \"auto\"]], { category: 'background' });\nstaticUtility(\"bg-cover\", [[\"background-size\", \"cover\"]], { category: 'background' });\nstaticUtility(\"bg-contain\", [[\"background-size\", \"contain\"]], { category: 'background' });\n\nfunctionalUtility({\n name: \"bg-size\",\n prop: \"background-size\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"background-size utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Linear ---\nconst positionValue = (position: string) => {\n return [\n decl(\"--baro-gradient-position\", position), \n styleRule(\"@supports (background-image: linear-gradient(in lab, red, red))\", [\n decl(\"--baro-gradient-position\", `${position} in oklab`),\n ]),\n decl(\n \"background-image\",\n `linear-gradient(${position}, var(--baro-gradient-stops))`\n ),\n ];\n};\n\n[\n [\"bg-linear-to-t\", positionValue(\"to top\")],\n [\"bg-linear-to-tr\", positionValue(\"to top right\")],\n [\"bg-linear-to-r\", positionValue(\"to right\")],\n [\"bg-linear-to-br\", positionValue(\"to bottom right\")],\n [\"bg-linear-to-b\", positionValue(\"to bottom\")],\n [\"bg-linear-to-bl\", positionValue(\"to bottom left\")],\n [\"bg-linear-to-l\", positionValue(\"to left\")],\n [\"bg-linear-to-tl\", positionValue(\"to top left\")],\n\n // fallback , legacy CSS compatibility\n [\"bg-gradient-to-t\", positionValue(\"to top\")],\n [\"bg-gradient-to-tr\", positionValue(\"to top right\")],\n [\"bg-gradient-to-r\", positionValue(\"to right\")],\n [\"bg-gradient-to-br\", positionValue(\"to bottom right\")],\n [\"bg-gradient-to-b\", positionValue(\"to bottom\")],\n [\"bg-gradient-to-bl\", positionValue(\"to bottom left\")],\n [\"bg-gradient-to-l\", positionValue(\"to left\")],\n [\"bg-gradient-to-tl\", positionValue(\"to top left\")],\n].forEach(([name, value]) => {\n staticUtility(name as string, value as AstNode[], { category: 'background', priority: 1000 });\n});\n// bg-linear-<angle> (e.g., bg-linear-45)\nfunctionalUtility({\n name: \"bg-linear\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (parseNumber(value)) {\n // bg-linear-45 → linear-gradient(45deg in oklab, var(--baro-gradient-stops))\n return [\n decl(\n \"background-image\",\n `linear-gradient(${value}deg in oklab, var(--baro-gradient-stops))`\n ),\n ];\n }\n if (token.arbitrary) {\n // bg-linear-[25deg,red_5%,yellow_60%,lime_90%,teal]\n return [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, ${value}))`\n ),\n ];\n }\n if (token.customProperty) {\n // bg-linear-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ],\n description:\n \"linear-gradient background-image utility (angle, arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Radial ---\nstaticUtility(\"bg-radial\", [\n [\"background-image\", \"radial-gradient(in oklab, var(--baro-gradient-stops))\"],\n], { category: 'background' });\nfunctionalUtility({\n name: \"bg-radial\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (token.arbitrary) {\n // bg-radial-[at_50%_75%]\n return [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, ${value}))`\n ),\n ];\n }\n if (token.customProperty) {\n // bg-radial-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ],\n description:\n \"radial-gradient background-image utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Conic ---\nstaticUtility(\"bg-conic\", [\n [\n \"background-image\",\n \"conic-gradient(from 0deg in oklab, var(--baro-gradient-stops))\",\n ],\n], { category: 'background' });\nfunctionalUtility({\n name: \"bg-conic\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (parseNumber(value)) {\n // bg-conic-180 → conic-gradient(from 180deg in oklab, var(--baro-gradient-stops))\n return [\n decl(\n \"background-image\",\n `conic-gradient(from ${value}deg in oklab, var(--baro-gradient-stops))`\n ),\n ];\n }\n if (token.arbitrary) {\n // bg-conic-[at_50%_75%]\n return [decl(\"background-image\", `${value}`)];\n }\n if (token.customProperty) {\n // bg-conic-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `conic-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [decl(\"background-image\", `var(${value})`)],\n description:\n \"conic-gradient background-image utility (angle, arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Gradient Stops ---\n\n\n\n// from-*, via-*, to-* (color, percentage, custom property, arbitrary)\n[\"from\", \"via\", \"to\"].forEach((stop) => {\n functionalUtility({\n name: stop,\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, context, token, extra) => {\n // console.log('[gradient stop] value', value, context, token, extra);\n if (extra?.realThemeValue) {\n if (stop === \"from\") {\n\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-from`, color),\n // decl(`--baro-gradient-to`, \"var(--baro-gradient-to, transparent)\"),\n decl(`--baro-gradient-stops`, \"var(--baro-gradient-from),var(--baro-gradient-to)\")\n ];\n }\n\n if (stop === \"via\") {\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, color),\n decl(`--baro-gradient-stops`, `var(--baro-gradient-from), ${value} var(--baro-gradient-via-position), var(--baro-gradient-to)`) // via 포함 stops\n ];\n }\n\n if (stop === \"to\") {\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, color),\n ];\n }\n }\n\n // to-50% → --baro-gradient-to-position: 50%\n if (parseLength(value)) {\n return [decl(`--baro-gradient-${stop}-position`, value)];\n }\n\n // to-50% → --baro-gradient-to-position: 50%\n if (parseNumber(value)) {\n return [decl(`--baro-gradient-${stop}-position`, `${value}%`)];\n }\n\n // to-red-500 → --baro-gradient-to: red-500\n if (parseColor(value)) {\n\n if (stop === \"from\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-from`, value),\n decl(`--baro-gradient-to`, \"transparent\"),\n decl(`--baro-gradient-stops`, \"var(--baro-gradient-from),var(--baro-gradient-to)\")\n ];\n }\n\n if (stop === \"via\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, value),\n decl(`--baro-gradient-stops`, `var(--baro-gradient-from), ${value} var(--baro-gradient-via-position), var(--baro-gradient-to)`) // via 포함 stops\n ];\n }\n\n if (stop === \"to\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, value),\n ];\n }\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(`--baro-gradient-${stop}`, `var(${value})`),\n ],\n description: `${stop} gradient stop utility (color, percent, custom property, arbitrary supported)`,\n category: \"background\",\n });\n // position variant: from-10%, via-30%, to-90%\n functionalUtility({\n name: `${stop}-position`,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(`--baro-gradient-${stop}-position`, value)],\n handleCustomProperty: (value) => [\n decl(`--baro-gradient-${stop}-position`, `var(${value})`),\n ],\n description: `${stop}-position gradient stop position utility (percent, custom property, arbitrary supported)`,\n category: \"background\",\n });\n});\n\n/**\n * background-size utility (arbitrary, custom property supported)\n * bg-[length] → background-size: [length]\n * bg-[length] → background-size: [length]\n * bg-[color] → background-color: [color]\n * bg-[url] → background-image: [url]\n * bg-[radial-gradient()] → background-image: radial-gradient(var(--baro-gradient-stops))\n * bg-red-500 → background-color: var(--color-red-500)\n */\nfunctionalUtility({\n name: \"bg\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, context, token, extra) => {\n if (value.startsWith(\"url(\")) {\n return [decl(\"background-image\", value)];\n }\n\n // if (value.startsWith(\"radial-gradient(\")) {\n // return [decl(\"background-image\", value)];\n // }\n\n if (value.startsWith(\"length:\")) {\n return [decl(\"background-size\", value.replace(\"length:\", \"\"))];\n }\n\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"background-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"background-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n return [decl(\"background-color\", value)];\n }\n\n if (parseColor(value)) {\n const parsedColor = parseColor(value);\n\n if (value.startsWith(\"color:\")) {\n return [decl(\"background-color\", parsedColor || value)];\n }\n\n return [decl(\"background-color\", value)];\n }\n\n if (parseLength(value)) {\n return [decl(\"background-size\", value)];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"background-size\", `var(${value})`)],\n description: \"background-size utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseNumber, parseLength, parseColor } from \"../core/utils\";\n\n// --- Border Radius ---\n// border-radius documentation\n\n// Static border radius utilities\nstaticUtility(\"rounded-none\", [[\"border-radius\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"rounded-sm\", [[\"border-radius\", \"var(--radius-sm)\"]], { category: 'borders' });\nstaticUtility(\"rounded\", [[\"border-radius\", \"var(--radius)\"]], { category: 'borders' });\nstaticUtility(\"rounded-md\", [[\"border-radius\", \"var(--radius-md)\"]], { category: 'borders' });\nstaticUtility(\"rounded-lg\", [[\"border-radius\", \"var(--radius-lg)\"]], { category: 'borders' });\nstaticUtility(\"rounded-xl\", [[\"border-radius\", \"var(--radius-xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-2xl\", [[\"border-radius\", \"var(--radius-2xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-3xl\", [[\"border-radius\", \"var(--radius-3xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-full\", [[\"border-radius\", \"9999px\"]], { category: 'borders' });\n\n\n// Individual corner radius utilities\n[\n [\"rounded-t\", [\"border-top-left-radius\", \"border-top-right-radius\"]],\n [\"rounded-r\", [\"border-top-right-radius\", \"border-bottom-right-radius\"]],\n [\"rounded-b\", [\"border-bottom-right-radius\", \"border-bottom-left-radius\"]],\n [\"rounded-l\", [\"border-top-left-radius\", \"border-bottom-left-radius\"]],\n [\"rounded-tl\", [\"border-top-left-radius\"]],\n [\"rounded-tr\", [\"border-top-right-radius\"]],\n [\"rounded-br\", [\"border-bottom-right-radius\"]],\n [\"rounded-bl\", [\"border-bottom-left-radius\"]],\n].forEach(([name, props]) => {\n const propList = props as string[];\n // Static utilities\n staticUtility(`${name}-none`, propList.map(prop => [prop, \"0px\"]), { category: 'borders' });\n staticUtility(`${name}-sm`, propList.map(prop => [prop, \"var(--radius-sm)\"]), { category: 'borders' });\n staticUtility(`${name}`, propList.map(prop => [prop, \"var(--radius)\"]), { category: 'borders' });\n staticUtility(`${name}-md`, propList.map(prop => [prop, \"var(--radius-md)\"]), { category: 'borders' });\n staticUtility(`${name}-lg`, propList.map(prop => [prop, \"var(--radius-lg)\"]), { category: 'borders' });\n staticUtility(`${name}-xl`, propList.map(prop => [prop, \"var(--radius-xl)\"]), { category: 'borders' });\n staticUtility(`${name}-2xl`, propList.map(prop => [prop, \"var(--radius-2xl)\"]), { category: 'borders' });\n staticUtility(`${name}-3xl`, propList.map(prop => [prop, \"var(--radius-3xl)\"]), { category: 'borders' });\n staticUtility(`${name}-full`, propList.map(prop => [prop, \"9999px\"]), { category: 'borders' });\n\n // Functional utility\n functionalUtility({\n name: name as string,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n return null;\n },\n handle: (value) => propList.map(prop => decl(prop, value)),\n description: `${name} utility (spacing, arbitrary, custom property support)`,\n category: \"borders\",\n });\n});\n\n\n// Functional border radius utility\nfunctionalUtility({\n name: \"rounded\",\n prop: \"border-radius\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n return null;\n },\n description: \"border-radius utility (spacing, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n// --- Border Width ---\n// border-width documentation\n\n// Static border width utilities\nstaticUtility(\"border-0\", [[\"border-width\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"border-2\", [[\"border-width\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"border-4\", [[\"border-width\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"border-8\", [[\"border-width\", \"8px\"]], { category: 'borders' });\nstaticUtility(\"border\", [[\"border-width\", \"1px\"]], { category: 'borders' });\n\n\n\n// Individual side border width utilities\n[\n [\"border-x\", [\"border-left-width\", \"border-right-width\"]],\n [\"border-y\", [\"border-top-width\", \"border-bottom-width\"]],\n [\"border-t\", [\"border-top-width\"]],\n [\"border-r\", [\"border-right-width\"]],\n [\"border-b\", [\"border-bottom-width\"]],\n [\"border-l\", [\"border-left-width\"]],\n].forEach(([name, props]) => {\n const propList = props as string[];\n // Static utilities\n staticUtility(`${name}-0`, propList.map(prop => [prop, \"0px\"]));\n staticUtility(`${name}-2`, propList.map(prop => [prop, \"2px\"]));\n staticUtility(`${name}-4`, propList.map(prop => [prop, \"4px\"]));\n staticUtility(`${name}-8`, propList.map(prop => [prop, \"8px\"]));\n staticUtility(`${name}`, propList.map(prop => [prop, \"1px\"]));\n\n // Functional utility\n functionalUtility({\n name: name as string,\n themeKeys: [\"borderWidth\", \"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n handle: (value, ctx, token) => {\n if (parseColor(value)) {\n return propList.map(prop => decl(prop.replace(\"width\", \"color\"), value));\n }\n if (token.arbitrary) {\n return propList.map(prop => decl(prop, value));\n }\n return null;\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"length:\")) {\n return propList.map(prop => decl(prop, `var(${value.replace(\"length:\", \"\")})`));\n }\n\n return propList.map(prop => decl(prop.replace(\"width\", \"color\"), `var(${value})`));\n },\n description: `${name} utility (number, arbitrary, custom property support)`,\n category: \"borders\",\n });\n});\n\n// --- Border Color ---\n// border-color documentation\n\n// Static border color utilities\nstaticUtility(\"border-inherit\", [[\"border-color\", \"inherit\"]], { category: 'borders' });\nstaticUtility(\"border-current\", [[\"border-color\", \"currentColor\"]], { category: 'borders' });\nstaticUtility(\"border-transparent\", [[\"border-color\", \"transparent\"]], { category: 'borders' });\n\n// --- Border Style ---\n// border-style documentation\n\n// Static border style utilities\nstaticUtility(\"border-solid\", [[\"border-style\", \"solid\"]], { category: 'borders' });\nstaticUtility(\"border-dashed\", [[\"border-style\", \"dashed\"]], { category: 'borders' });\nstaticUtility(\"border-dotted\", [[\"border-style\", \"dotted\"]], { category: 'borders' });\nstaticUtility(\"border-double\", [[\"border-style\", \"double\"]], { category: 'borders' });\nstaticUtility(\"border-hidden\", [[\"border-style\", \"hidden\"]], { category: 'borders' });\nstaticUtility(\"border-none\", [[\"border-style\", \"none\"]], { category: 'borders' });\n\n\n// Functional border width utility\nfunctionalUtility({\n name: \"border\",\n themeKeys: [\"colors\", \"borderWidth\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"border-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"border-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n return [decl(\"border-color\", value)];\n }\n\n if (token.arbitrary) {\n if (parseLength(value)) {\n return [decl(\"border-width\", value)];\n }\n return [decl(\"border-color\", value)];\n }\n\n if (parseNumber(value)) {\n return [decl(\"border-width\", `${value}px`)];\n }\n if (parseColor(value)) {\n return [decl(\"border-color\", value)];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"length:\")) {\n return [decl(\"border-width\", `var(${value.replace(\"length:\", \"\")})`)];\n }\n return [decl(\"border-color\", `var(${value})`)];\n },\n description: \"border-width utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n// --- Outline Width ---\n// outline-width documentation\n\n// Static outline width utilities\nstaticUtility(\"outline-0\", [[\"outline-width\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"outline-1\", [[\"outline-width\", \"1px\"]], { category: 'borders' });\nstaticUtility(\"outline-2\", [[\"outline-width\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline-4\", [[\"outline-width\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"outline-8\", [[\"outline-width\", \"8px\"]], { category: 'borders' });\n\n// --- Outline Color ---\n// outline-color documentation\n\n// Static outline color utilities\nstaticUtility(\"outline-inherit\", [[\"outline-color\", \"inherit\"]], { category: 'borders' });\nstaticUtility(\"outline-current\", [[\"outline-color\", \"currentColor\"]], { category: 'borders' });\nstaticUtility(\"outline-transparent\", [[\"outline-color\", \"transparent\"]], { category: 'borders' });\n\n\n// --- Outline Style ---\n// outline-style documentation\n\n// Static outline style utilities\nstaticUtility(\"outline-none\", [[\"outline\", \"2px solid transparent\"], [\"outline-offset\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline\", [[\"outline-style\", \"solid\"]], { category: 'borders' });\nstaticUtility(\"outline-dashed\", [[\"outline-style\", \"dashed\"]], { category: 'borders' });\nstaticUtility(\"outline-dotted\", [[\"outline-style\", \"dotted\"]], { category: 'borders' });\nstaticUtility(\"outline-double\", [[\"outline-style\", \"double\"]], { category: 'borders' });\n\n// --- Outline Offset ---\n// outline-offset documentation\n\n// Static outline offset utilities\nstaticUtility(\"outline-offset-0\", [[\"outline-offset\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-1\", [[\"outline-offset\", \"1px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-2\", [[\"outline-offset\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-4\", [[\"outline-offset\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-8\", [[\"outline-offset\", \"8px\"]], { category: 'borders' });\n\n// Functional outline offset utility\nfunctionalUtility({\n name: \"outline-offset\",\n prop: \"outline-offset\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n description: \"outline-offset utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n\n// Functional outline color utility\nfunctionalUtility({\n name: \"outline\",\n themeKeys: [\"colors\", \"borderWidth\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n\n if (parseColor(value)) {\n return [decl(\"outline-color\", value)];\n }\n\n if (parseNumber(value)) {\n return [decl(\"outline-width\", `${value}px`)];\n }\n\n // Handle arbitrary values\n if (token.arbitrary) {\n\n if (parseLength(value)) {\n return [decl(\"outline-width\", value)];\n }\n\n return [decl(\"outline-color\", value)];\n }\n\n\n\n return null;\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"color:\")) {\n return [decl(\"outline-color\", value.replace(\"color:\", \"\"))];\n }\n\n if (value.startsWith(\"length:\")) {\n return [decl(\"outline-width\", `var(${value.replace(\"length:\", \"\")})`)];\n }\n\n return [decl(\"outline-color\", `var(${value})`)];\n },\n description: \"outline-color utility (theme colors, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n\n// Functional outline width utility\nfunctionalUtility({\n name: \"outline\",\n prop: \"outline-width\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n description: \"outline-width utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n","// --- Transform Utilities ---\nimport { atRoot, decl, property } from \"../core/ast\";\nimport { staticUtility, functionalUtility } from \"../core/registry\";\nimport { parseFractionOrNumber, parseNumber } from \"../core/utils\";\n\n// --- Transform ---\n// transform-none: disables all transforms\nstaticUtility(\"transform-none\", [[\"transform\", \"none\"]], {\n category: \"transform\",\n});\n\n// transform-gpu: enables GPU acceleration for transforms\n// Output: transform: translateZ(0) var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y);\nstaticUtility(\n \"transform-gpu\",\n [\n [\n \"transform\",\n \"translateZ(0) var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y)\",\n ],\n ],\n { category: \"transform\" }\n);\n\n// transform-cpu: disables GPU acceleration, uses only CPU transforms\n// Output: transform: var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y);\nstaticUtility(\"transform-cpu\", [\n [\n \"transform\",\n \"var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y)\",\n ],\n]);\n\n// --- Transform Style ---\n// transform-style documentation\n\n// transform-3d: transform-style: preserve-3d;\nstaticUtility(\"transform-3d\", [[\"transform-style\", \"preserve-3d\"]], {\n category: \"transform\",\n});\n// transform-flat: transform-style: flat;\nstaticUtility(\"transform-flat\", [[\"transform-style\", \"flat\"]], {\n category: \"transform\",\n});\n\n// transform-(<custom-property>): sets transform to a CSS custom property value\n// Example: transform-(--my-transform) → transform: var(--my-transform);\nfunctionalUtility({\n name: \"transform\",\n prop: \"transform\",\n supportsCustomProperty: true,\n handleCustomProperty: (value) => [decl(\"transform\", `var(${value})`)],\n description:\n \"transform utility for custom property (transform-(--my-transform))\",\n category: \"transform\",\n});\n\n// transform-[<value>]: sets transform to an arbitrary value\n// Example: transform-[matrix(1,2,3,4,5,6)] → transform: matrix(1,2,3,4,5,6);\nfunctionalUtility({\n name: \"transform\",\n prop: \"transform\",\n supportsArbitrary: true,\n handle: (value) => [decl(\"transform\", value)],\n description: \"transform utility for arbitrary value (transform-[...])\",\n category: \"transform\",\n});\n\n// --- Backface Visibility ---\n// backface-visibility documentation\nstaticUtility(\"backface-hidden\", [[\"backface-visibility\", \"hidden\"]], {\n category: \"transform\",\n});\nstaticUtility(\"backface-visible\", [[\"backface-visibility\", \"visible\"]], {\n category: \"transform\",\n});\n\n// --- Perspective ---\n// perspective documentation\nstaticUtility(\n \"perspective-dramatic\",\n [[\"perspective\", \"var(--perspective-dramatic)\"]],\n { category: \"transform\" }\n); // 100px\nstaticUtility(\n \"perspective-near\",\n [[\"perspective\", \"var(--perspective-near)\"]],\n { category: \"transform\" }\n); // 300px\nstaticUtility(\n \"perspective-normal\",\n [[\"perspective\", \"var(--perspective-normal)\"]],\n { category: \"transform\" }\n); // 500px\nstaticUtility(\n \"perspective-midrange\",\n [[\"perspective\", \"var(--perspective-midrange)\"]],\n { category: \"transform\" }\n); // 800px\nstaticUtility(\n \"perspective-distant\",\n [[\"perspective\", \"var(--perspective-distant)\"]],\n { category: \"transform\" }\n); // 1200px\nstaticUtility(\"perspective-none\", [[\"perspective\", \"none\"]], {\n category: \"transform\",\n});\n\n// --- Perspective Origin ---\n// perspective-origin documentation\nstaticUtility(\"perspective-origin-center\", [[\"perspective-origin\", \"center\"]], {\n category: \"transform\",\n});\nstaticUtility(\"perspective-origin-top\", [[\"perspective-origin\", \"top\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-top-right\",\n [[\"perspective-origin\", \"top right\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-right\", [[\"perspective-origin\", \"right\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-bottom-right\",\n [[\"perspective-origin\", \"bottom right\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-bottom\", [[\"perspective-origin\", \"bottom\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-bottom-left\",\n [[\"perspective-origin\", \"bottom left\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-left\", [[\"perspective-origin\", \"left\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-top-left\",\n [[\"perspective-origin\", \"top left\"]],\n { category: \"transform\" }\n);\n\nfunctionalUtility({\n name: \"perspective-origin\",\n prop: \"perspective-origin\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"perspective-origin\", value)],\n handleCustomProperty: (value) => [\n decl(\"perspective-origin\", `var(${value})`),\n ],\n description:\n \"perspective-origin utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// perspective-(<custom-property>) → perspective: var(--custom-property)\nfunctionalUtility({\n name: \"perspective\",\n prop: \"perspective\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n // perspective-[750px] → perspective: 750px\n return [decl(\"perspective\", value)];\n },\n handleCustomProperty: (value) => [decl(\"perspective\", `var(${value})`)],\n description:\n \"perspective utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Rotate ---\n// rotate documentation\n\n// rotate-none\nstaticUtility(\"rotate-none\", [[\"rotate\", \"none\"]], { category: \"transform\" });\n\n// rotate-x-<number>, -rotate-x-<number>, rotate-x-(<custom-property>), rotate-x-[<value>]\nfunctionalUtility({\n name: \"rotate-x\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-x-45 → transform: rotateX(45deg) var(--baro-rotate-y)\n // -rotate-x-45 → transform: rotateX(-45deg) var(--baro-rotate-y)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `rotateX(${sign}${deg}) var(--baro-rotate-y)`)];\n }\n // rotate-x-[3.142rad] → transform: rotateX(3.142rad) var(--baro-rotate-y)\n return [decl(\"transform\", `rotateX(${value}) var(--baro-rotate-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `rotateX(var(${value})) var(--baro-rotate-y)`),\n ],\n description: \"rotate-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-y-<number>, -rotate-y-<number>, rotate-y-(<custom-property>), rotate-y-[<value>]\nfunctionalUtility({\n name: \"rotate-y\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-y-45 → transform: var(--baro-rotate-x) rotateY(45deg)\n // -rotate-y-45 → transform: var(--baro-rotate-x) rotateY(-45deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `var(--baro-rotate-x) rotateY(${sign}${deg})`)];\n }\n // rotate-y-[3.142rad] → transform: var(--baro-rotate-x) rotateY(3.142rad)\n return [decl(\"transform\", `var(--baro-rotate-x) rotateY(${value})`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `var(--baro-rotate-x) rotateY(var(${value}))`),\n ],\n description: \"rotate-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-z-<number>, -rotate-z-<number>, rotate-z-(<custom-property>), rotate-z-[<value>]\nfunctionalUtility({\n name: \"rotate-z\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-z-45 → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(45deg)\n // -rotate-z-45 → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(-45deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(${sign}${deg})`\n ),\n ];\n }\n // rotate-z-[3.142rad] → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(3.142rad)\n return [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(${value})`\n ),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(var(${value}))`\n ),\n ],\n description: \"rotate-z utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-<number>, -rotate-<number>, rotate-(<custom-property>), rotate-[<value>]\nfunctionalUtility({\n name: \"rotate\",\n prop: \"rotate\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-45 → rotate: 45deg\n // -rotate-45 → rotate: calc(45deg * -1)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n if (negative || String(value).startsWith(\"-\")) {\n return [decl(\"rotate\", `calc(${deg} * -1)`)];\n }\n\n return [decl(\"rotate\", deg)];\n }\n // rotate-[3.142rad] → rotate: 3.142rad\n return [decl(\"rotate\", value)];\n },\n handleCustomProperty: (value) => [decl(\"rotate\", `var(${value})`)],\n description: \"rotate utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Scale ---\n// scale documentation\n\n// scale-none\nstaticUtility(\"scale-none\", [[\"scale\", \"none\"]], { category: \"transform\" });\n// scale-3d\nstaticUtility(\n \"scale-3d\",\n [[\"scale\", \"var(--baro-scale-x) var(--baro-scale-y) var(--baro-scale-z)\"]],\n { category: \"transform\" }\n);\n\n// scale-x-<number>, -scale-x-<number>, scale-x-(<custom-property>), scale-x-[<value>]\nfunctionalUtility({\n name: \"scale-x\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `${value}`)];\n }\n\n // scale-x-75 → scale: 75% var(--baro-scale-y)\n // -scale-x-75 → scale: calc(75% * -1) var(--baro-scale-y)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"scale\", `calc(${pct} * ${sign}1) var(--baro-scale-y)`)];\n }\n // scale-x-[1.7] → scale: 1.7 var(--baro-scale-y)\n return [decl(\"scale\", `${value} var(--baro-scale-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(${value}) var(--baro-scale-y)`),\n ],\n description: \"scale-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-y-<number>, -scale-y-<number>, scale-y-(<custom-property>), scale-y-[<value>]\nfunctionalUtility({\n name: \"scale-y\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `var(--baro-scale-x) ${value}`)];\n }\n\n // scale-y-75 → scale: var(--baro-scale-x) 75%\n // -scale-y-75 → scale: var(--baro-scale-x) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"scale\", `var(--baro-scale-x) calc(${pct} * ${sign}1)`)];\n }\n // scale-y-[1.7] → scale: var(--baro-scale-x) 1.7\n return [decl(\"scale\", `var(--baro-scale-x) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(--baro-scale-x) var(${value})`),\n ],\n description: \"scale-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-z-<number>, -scale-z-<number>, scale-z-(<custom-property>), scale-z-[<value>]\nfunctionalUtility({\n name: \"scale-z\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [\n decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) ${value}`),\n ];\n }\n\n // scale-z-75 → scale: var(--baro-scale-x) var(--baro-scale-y) 75%\n // -scale-z-75 → scale: var(--baro-scale-x) var(--baro-scale-y) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [\n decl(\n \"scale\",\n `var(--baro-scale-x) var(--baro-scale-y) calc(${pct} * ${sign}1)`\n ),\n ];\n }\n // scale-z-[1.7] → scale: var(--baro-scale-x) var(--baro-scale-y) 1.7\n return [decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) var(${value})`),\n ],\n description: \"scale-z utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-<number>, -scale-<number>, scale-(<custom-property>), scale-[<value>]\nfunctionalUtility({\n name: \"scale\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `${value}`)];\n }\n\n // scale-75 → scale: 75% 75%\n // -scale-75 → scale: calc(75% * -1) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n if (negative || String(value).startsWith(\"-\")) {\n return [decl(\"scale\", `calc(${pct} * -1) calc(${pct} * -1)`)];\n }\n return [decl(\"scale\", `${pct} ${pct}`)];\n }\n // scale-[1.7] → scale: 1.7\n return [decl(\"scale\", value)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(${value}) var(${value})`),\n ],\n description: \"scale utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Skew ---\n// skew documentation\n\n// skew-x-<number>, -skew-x-<number>, skew-x-(<custom-property>), skew-x-[<value>]\nfunctionalUtility({\n name: \"skew-x\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-x-4 → transform: skewX(4deg)\n // -skew-x-4 → transform: skewX(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewX(${sign}${deg})`)];\n }\n // skew-x-[3.142rad] → transform: skewX(3.142rad)\n return [decl(\"transform\", `skewX(${value})`)];\n },\n handleCustomProperty: (value) => [decl(\"transform\", `skewX(var(${value}))`)],\n description: \"skew-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// skew-y-<number>, -skew-y-<number>, skew-y-(<custom-property>), skew-y-[<value>]\nfunctionalUtility({\n name: \"skew-y\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-y-4 → transform: skewY(4deg)\n // -skew-y-4 → transform: skewY(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewY(${sign}${deg})`)];\n }\n // skew-y-[3.142rad] → transform: skewY(3.142rad)\n return [decl(\"transform\", `skewY(${value})`)];\n },\n handleCustomProperty: (value) => [decl(\"transform\", `skewY(var(${value}))`)],\n description: \"skew-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// skew-<number>, -skew-<number>, skew-(<custom-property>), skew-[<value>]\nfunctionalUtility({\n name: \"skew\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-4 → transform: skewX(4deg) skewY(4deg)\n // -skew-4 → transform: skewX(-4deg) skewY(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewX(${sign}${deg}) skewY(${sign}${deg})`)];\n }\n // skew-[3.142rad] → transform: skewX(3.142rad) skewY(3.142rad)\n return [decl(\"transform\", `skewX(${value}) skewY(${value})`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `skewX(var(${value})) skewY(var(${value}))`),\n ],\n description: \"skew utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Transform Origin ---\n// transform-origin documentation\n\n// origin-center: transform-origin: center;\nstaticUtility(\"origin-center\", [[\"transform-origin\", \"center\"]], {\n category: \"transform\",\n});\n// origin-top: transform-origin: top;\nstaticUtility(\"origin-top\", [[\"transform-origin\", \"top\"]], {\n category: \"transform\",\n});\n// origin-top-right: transform-origin: top right;\nstaticUtility(\"origin-top-right\", [[\"transform-origin\", \"top right\"]], {\n category: \"transform\",\n});\n// origin-right: transform-origin: right;\nstaticUtility(\"origin-right\", [[\"transform-origin\", \"right\"]], {\n category: \"transform\",\n});\n// origin-bottom-right: transform-origin: bottom right;\nstaticUtility(\"origin-bottom-right\", [[\"transform-origin\", \"bottom right\"]], {\n category: \"transform\",\n});\n// origin-bottom: transform-origin: bottom;\nstaticUtility(\"origin-bottom\", [[\"transform-origin\", \"bottom\"]], {\n category: \"transform\",\n});\n// origin-bottom-left: transform-origin: bottom left;\nstaticUtility(\"origin-bottom-left\", [[\"transform-origin\", \"bottom left\"]], {\n category: \"transform\",\n});\n// origin-left: transform-origin: left;\nstaticUtility(\"origin-left\", [[\"transform-origin\", \"left\"]], {\n category: \"transform\",\n});\n// origin-top-left: transform-origin: top left;\nstaticUtility(\"origin-top-left\", [[\"transform-origin\", \"top left\"]], {\n category: \"transform\",\n});\n\n// origin-(<custom-property>): transform-origin: var(--custom-property);\nfunctionalUtility({\n name: \"origin\",\n prop: \"transform-origin\",\n supportsCustomProperty: true,\n supportsArbitrary: true,\n description:\n \"transform-origin utility for custom property (origin-(--my-transform-origin))\",\n category: \"transform\",\n});\n\n// --- Translate ---\n// translate documentation\n\nconst translateProperties = () =>\n atRoot([\n property(\"--baro-translate-x\", \"0\"),\n property(\"--baro-translate-y\", \"0\"),\n property(\"--baro-translate-z\", \"0\"),\n ]);\n\n// --- Static translate utilities ---\n// translate-none: disables all translation\nstaticUtility(\"translate-none\", [[\"translate\", \"none\"]], {\n category: \"transform\",\n});\n\n// translate-px, -translate-px, translate-full, -translate-full\nstaticUtility(\"translate-px\", [[\"translate\", \"1px 1px\"]], {\n category: \"transform\",\n});\nstaticUtility(\"-translate-px\", [[\"translate\", \"-1px -1px\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"translate-full\",\n [\n translateProperties,\n [\"--baro-translate-x\", \"100%\"],\n [\"--baro-translate-y\", \"100%\"],\n [\"translate\", \"var(--baro-translate-x) var(--baro-translate-y)\"],\n ],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-full\",\n [\n translateProperties,\n [\"--baro-translate-x\", \"-100%\"],\n [\"--baro-translate-y\", \"-100%\"],\n [\"translate\", \"var(--baro-translate-x) var(--baro-translate-y)\"],\n ],\n { category: \"transform\" }\n);\n\n// translate-x-px, -translate-x-px, translate-x-full, -translate-x-full\nstaticUtility(\n \"translate-x-px\",\n [[\"translate\", \"1px var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-x-px\",\n [[\"translate\", \"-1px var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"translate-x-full\",\n [[\"translate\", \"100% var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-x-full\",\n [[\"translate\", \"-100% var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\n\n// translate-y-px, -translate-y-px, translate-y-full, -translate-y-full\nstaticUtility(\n \"translate-y-px\",\n [[\"translate\", \"var(--baro-translate-x) 1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-y-px\",\n [[\"translate\", \"var(--baro-translate-x) -1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"translate-y-full\",\n [[\"translate\", \"var(--baro-translate-x) 100%\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-y-full\",\n [[\"translate\", \"var(--baro-translate-x) -100%\"]],\n { category: \"transform\" }\n);\n\n// translate-z-px, -translate-z-px\nstaticUtility(\n \"translate-z-px\",\n [[\"translate\", \"var(--baro-translate-x) var(--baro-translate-y) 1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-z-px\",\n [[\"translate\", \"var(--baro-translate-x) var(--baro-translate-y) -1px\"]],\n { category: \"transform\" }\n);\n\n// --- Functional translate utilities ---\n\n// translate-x-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-x\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `${v} var(--baro-translate-y)`)];\n }\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `${v} var(--baro-translate-y)`)];\n }\n return [decl(\"translate\", `${value} var(--baro-translate-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(${value}) var(--baro-translate-y)`),\n ],\n description:\n \"translate-x utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-y-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-y\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `var(--baro-translate-x) ${v}`)];\n }\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `var(--baro-translate-x) ${v}`)];\n }\n return [decl(\"translate\", `var(--baro-translate-x) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(--baro-translate-x) var(${value})`),\n ],\n description:\n \"translate-y utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-z-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-z\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${v}`\n ),\n ];\n }\n\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${v}`\n ),\n ];\n }\n\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${value}`\n ),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) var(${value})`\n ),\n ],\n description:\n \"translate-z utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n // Fraction\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `${v} ${v}`)];\n }\n // Number (spacing scale)\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `${v} ${v}`)];\n }\n // Arbitrary value\n return [decl(\"translate\", `${value} ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(${value}) var(${value})`),\n ],\n description:\n \"translate utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n","import { decl } from \"../core/ast\";\nimport { staticUtility, functionalUtility } from \"../core/registry\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Fill Utilities ---\n// fill documentation\n\n// Static fill values\nstaticUtility(\"fill-inherit\", [[\"fill\", \"inherit\"]], { category: 'svg' });\nstaticUtility(\"fill-current\", [[\"fill\", \"currentColor\"]], { category: 'svg' });\nstaticUtility(\"fill-transparent\", [[\"fill\", \"transparent\"]], { category: 'svg' });\nstaticUtility(\"fill-black\", [[\"fill\", \"#000\"]], { category: 'svg' });\nstaticUtility(\"fill-white\", [[\"fill\", \"#fff\"]], { category: 'svg' });\n\n// Functional: theme color, arbitrary, custom property\nfunctionalUtility({\n name: \"fill\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n return [decl(\"fill\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"fill\", value)];\n },\n description: \"fill utility (static, theme, arbitrary, custom property supported)\",\n category: \"svg\",\n});\n\n// --- Stroke Utilities ---\n// stroke documentation\nstaticUtility(\"stroke-inherit\", [[\"stroke\", \"inherit\"]], { category: 'svg' });\nstaticUtility(\"stroke-current\", [[\"stroke\", \"currentColor\"]], { category: 'svg' });\nstaticUtility(\"stroke-transparent\", [[\"stroke\", \"transparent\"]], { category: 'svg' });\nstaticUtility(\"stroke-black\", [[\"stroke\", \"#000\"]], { category: 'svg' });\nstaticUtility(\"stroke-white\", [[\"stroke\", \"#fff\"]], { category: 'svg' });\n\nfunctionalUtility({\n name: \"stroke\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n\n if (parseNumber(value)) {\n return [decl(\"stroke-width\", value)];\n }\n\n if (extra?.realThemeValue) {\n return [decl(\"stroke\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"stroke\", value)];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"length:\")) {\n const cp = value.replace(\"length:\", \"\");\n return [decl(\"stroke-width\", `var(${cp})`)];\n }\n return [decl(\"stroke\", `var(${value})`)];\n },\n description: \"stroke utility (static, theme, arbitrary, custom property supported)\",\n category: \"svg\",\n});\n\n","import { staticUtility } from \"../core/registry\";\n\n// --- Forced Color Adjust Utilities ---\n// forced-color-adjust documentation\nstaticUtility(\"forced-color-adjust-auto\", [[\"forced-color-adjust\", \"auto\"]], { category: 'accessibility' });\nstaticUtility(\"forced-color-adjust-none\", [[\"forced-color-adjust\", \"none\"]], { category: 'accessibility' }); ","import { staticModifier } from \"../../core/registry\";\n\n// --- Basic pseudo-class variants ---\nstaticModifier('hover', ['&:hover'], { order: 50, source: 'pseudo' });\nstaticModifier('focus', ['&:focus'], { order: 50, source: 'pseudo' });\nstaticModifier('active', ['&:active'], { order: 50, source: 'pseudo' });\nstaticModifier('visited', ['&:visited'], { order: 50, source: 'pseudo' });\nstaticModifier('focus-visible', ['&:focus-visible'], { order: 50, source: 'pseudo' });\nstaticModifier('focus-within', ['&:focus-within'], { order: 50, source: 'pseudo' }); ","import { staticModifier } from \"../../core/registry\";\n\n// --- Form state variants ---\nstaticModifier('disabled', ['&:disabled'], { source: 'pseudo' });\nstaticModifier('checked', ['&:checked'], { source: 'pseudo' });\nstaticModifier('required', ['&:required'], { source: 'pseudo' });\nstaticModifier('invalid', ['&:invalid'], { source: 'pseudo' });\nstaticModifier('enabled', ['&:enabled'], { source: 'pseudo' });\nstaticModifier('indeterminate', ['&:indeterminate'], { source: 'pseudo' });\nstaticModifier('default', ['&:default'], { source: 'pseudo' });\nstaticModifier('optional', ['&:optional'], { source: 'pseudo' });\nstaticModifier('valid', ['&:valid'], { source: 'pseudo' });\nstaticModifier('user-valid', ['&:user-valid'], { source: 'pseudo' });\nstaticModifier('user-invalid', ['&:user-invalid'], { source: 'pseudo' });\nstaticModifier('in-range', ['&:in-range'], { source: 'pseudo' });\nstaticModifier('out-of-range', ['&:out-of-range'], { source: 'pseudo' });\nstaticModifier('placeholder-shown', ['&:placeholder-shown'], { source: 'pseudo' });\nstaticModifier('autofill', ['&:autofill'], { source: 'pseudo' });\nstaticModifier('read-only', ['&:read-only'], { source: 'pseudo' }); ","import { staticModifier } from \"../../core/registry\";\n\n// --- Structural selector variants ---\nstaticModifier('first', ['&:first-child'], { source: 'pseudo' });\nstaticModifier('last', ['&:last-child'], { source: 'pseudo' });\nstaticModifier('only', ['&:only-child'], { source: 'pseudo' });\nstaticModifier('odd', ['&:nth-child(odd)'], { source: 'pseudo' });\nstaticModifier('even', ['&:nth-child(even)'], { source: 'pseudo' });\nstaticModifier('first-of-type', ['&:first-of-type'], { source: 'pseudo' });\nstaticModifier('last-of-type', ['&:last-of-type'], { source: 'pseudo' });\nstaticModifier('only-of-type', ['&:only-of-type'], { source: 'pseudo' });\nstaticModifier('empty', ['&:empty'], { source: 'pseudo' }); ","import { staticModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\n\n// --- Media feature variants ---\nstaticModifier('prefers-contrast-more', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-contrast: more)', [], 'media')],\n source: 'media'\n});\nstaticModifier('prefers-contrast-less', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-contrast: less)', [], 'media')],\n source: 'media'\n});\nstaticModifier('forced-colors', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(forced-colors: active)', [], 'media')],\n source: 'media'\n});\nstaticModifier('pointer-coarse', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(pointer: coarse)', [], 'media')],\n source: 'media'\n});\nstaticModifier('pointer-fine', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(pointer: fine)', [], 'media')],\n source: 'media'\n});\nstaticModifier('any-pointer-coarse', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(any-pointer: coarse)', [], 'media')],\n source: 'media'\n});\nstaticModifier('any-pointer-fine', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(any-pointer: fine)', [], 'media')],\n source: 'media'\n});\n\n// Motion variants\nstaticModifier('motion-safe', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-reduced-motion: no-preference)', [], 'media')],\n source: 'media'\n});\nstaticModifier('motion-reduce', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-reduced-motion: reduce)', [], 'media')],\n source: 'media'\n});\n\n// Print and orientation variants\nstaticModifier('print', ['&'], {\n order: 5,\n wrap: () => [atRule('media', 'print', [], 'media')],\n source: 'media'\n});\nstaticModifier('portrait', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(orientation: portrait)', [], 'media')],\n source: 'media'\n});\nstaticModifier('landscape', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(orientation: landscape)', [], 'media')],\n source: 'media'\n}); ","import { staticModifier } from \"../../core/registry\";\n \n// --- Attribute selector variants ---\nstaticModifier('rtl', ['&[dir=rtl]'], { order: 20, source: 'attribute' });\nstaticModifier('ltr', ['&[dir=ltr]'], { order: 20, source: 'attribute' });\nstaticModifier('inert', ['&[inert]'], { order: 40, source: 'attribute' });\nstaticModifier('open', ['&:is([open], :popover-open, :open)'], { order: 40, source: 'attribute' }); ","import { staticModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\n\n// Import separated variant modules\nimport \"./pseudo-classes\";\nimport \"./form-states\";\nimport \"./structural-selectors\";\nimport \"./media-features\";\nimport \"./attribute-selectors\";\n\n// --- Pseudo-elements (cross-browser) ---\nstaticModifier('before', ['&::before'], { source: 'pseudo' });\nstaticModifier('after', ['&::after'], { source: 'pseudo' });\nstaticModifier('placeholder', [\n '&::placeholder',\n '&::-webkit-input-placeholder',\n '&::-moz-placeholder',\n '&:-ms-input-placeholder',\n], { source: 'pseudo' });\nstaticModifier('selection', [\n '&::selection',\n '&::-moz-selection',\n], { source: 'pseudo' });\nstaticModifier('file', [\n '&::file-selector-button',\n '&::-webkit-file-upload-button',\n], { source: 'pseudo' });\nstaticModifier('marker', [\n '&::marker',\n '&::-webkit-details-marker',\n '&::-moz-list-bullet',\n '&::-moz-list-number',\n], { source: 'pseudo' });\nstaticModifier('details-content', ['&::details-content'], { source: 'pseudo' });\nstaticModifier('first-line', ['&::first-line'], { source: 'pseudo' });\nstaticModifier('first-letter', ['&::first-letter'], { source: 'pseudo' });\nstaticModifier('backdrop', ['&::backdrop'], { source: 'pseudo' });\n\n// --- starting: variant (maps to @starting-style) ---\nstaticModifier('starting', ['&'], {\n wrap: () => [atRule('starting-style', '', [], 'starting')],\n source: 'starting'\n}); ","import { AstNode } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\n\n/**\n * Create container query parameters\n */\nexport function createContainerParams(type: 'min' | 'max', value: string, name?: string): string {\n const condition = type === 'min' ? 'width >=' : 'width <';\n return name ? `${name} (${condition} ${value})` : `(${condition} ${value})`;\n}\n\n/**\n * Create media query parameters\n */\nexport function createMediaParams(type: 'min' | 'max', value: string): string {\n return type === 'min' ? `(min-width: ${value})` : `(width < ${value})`;\n}\n\n/**\n * Get size value from theme\n */\nexport function getThemeSize(ctx: Context, key: string): string | undefined {\n return ctx.theme('container.' + key) as string || ctx.theme('breakpoint.' + key) as string;\n}\n\n/**\n * Create container query AST\n */\nexport function createContainerRule(params: string, ast: AstNode | AstNode[]): AstNode {\n return {\n type: 'at-rule',\n name: 'container',\n params,\n nodes: Array.isArray(ast) ? ast : [ast],\n source: 'container'\n };\n}\n\n/**\n * Create media query AST\n */\nexport function createMediaRule(params: string, ast: AstNode | AstNode[]): AstNode {\n return {\n type: 'at-rule',\n name: 'media',\n params,\n nodes: Array.isArray(ast) ? ast : [ast],\n };\n}\n\n// Default breakpoint values (fallback)\nexport function getDefaultBreakpoint(breakpoint: string): string {\n const defaults: Record<string, string> = {\n 'sm': '(min-width: 640px)',\n 'md': '(min-width: 768px)', \n 'lg': '(min-width: 1024px)',\n 'xl': '(min-width: 1280px)',\n '2xl': '(min-width: 1536px)'\n };\n return defaults[breakpoint] || `(min-width: ${breakpoint})`;\n} ","import { functionalModifier } from \"../../core/registry\";\nimport { atRule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\nimport { getDefaultBreakpoint } from \"./utils\";\n\n// responsive (media queries) - dynamic breakpoint support\nfunctionalModifier(\n (mod: string, context: Context) => {\n // 1. Check breakpoints defined in config (matches actual implementation)\n const breakpoints = context.theme('breakpoints') || context.config('theme.breakpoints') || {};\n const breakpointKeys = Object.keys(breakpoints);\n \n // 2. Check basic breakpoints (all breakpoints defined in config)\n if (breakpointKeys.includes(mod)) {\n return true;\n }\n \n // 3. Check max-width breakpoint (max-{breakpoint})\n if (mod.startsWith('max-')) {\n const baseBreakpoint = mod.replace('max-', '');\n // 3-1. When it is a defined breakpoint\n if (breakpointKeys.includes(baseBreakpoint)) {\n return true;\n }\n // 3-2. When it is an arbitrary max-width (max-[960px])\n if (/^\\[.*\\]$/.test(baseBreakpoint)) {\n return true;\n }\n }\n \n // 4. Check arbitrary min-width (min-[600px])\n if (/^min-\\[.*\\]$/.test(mod)) {\n return true; // arbitrary values are always valid\n }\n \n // 5. Check arbitrary max-width (max-[960px])\n if (/^max-\\[.*\\]$/.test(mod)) {\n return true; // arbitrary values are always valid\n }\n \n return false;\n },\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const breakpoint = mod.type;\n \n // 1. Handle breakpoints defined in config (v4.1 standard)\n const breakpoints = context.theme('breakpoints') || context.config('theme.breakpoints') || {};\n \n // 2. Handle basic breakpoints (all breakpoints defined in config)\n if (Object.keys(breakpoints).includes(breakpoint)) {\n let mediaQuery: string = context.theme(`breakpoints.${breakpoint}`) as string || \n getDefaultBreakpoint(breakpoint);\n // If only a number (px/em/rem etc.) is provided, wrap with (min-width: ...)\n if (/^\\d+(px|em|rem)?$/.test(mediaQuery)) {\n mediaQuery = `(min-width: ${mediaQuery})`;\n }\n return [atRule('media', mediaQuery, [], 'responsive')];\n }\n \n // 3. Handle max-width breakpoint (max-{breakpoint})\n if (breakpoint.startsWith('max-')) {\n const baseBreakpoint = breakpoint.replace('max-', '');\n \n // 3-1. When it is a defined breakpoint (max-sm, max-md, etc.)\n if (Object.keys(breakpoints).includes(baseBreakpoint)) {\n let mediaQuery = context.theme(`breakpoints.${baseBreakpoint}`) as string || \n getDefaultBreakpoint(baseBreakpoint);\n \n // Convert min-width to max-width\n if (mediaQuery.includes('min-width:')) {\n const value = mediaQuery.match(/min-width:\\s*([^)]+)/)?.[1];\n if (value) {\n mediaQuery = `(width < ${value})`;\n }\n } else if (mediaQuery.includes('width >=')) {\n const value = mediaQuery.match(/width >=\\s*([^)]+)/)?.[1];\n if (value) {\n mediaQuery = `(width < ${value})`;\n }\n }\n \n return [atRule('media', mediaQuery, [], 'responsive')];\n }\n \n // 3-2. When it is an arbitrary max-width (max-[960px])\n if (/^\\[(.*)\\]$/.test(baseBreakpoint)) {\n const value = baseBreakpoint.match(/^\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width < ${value})`, [], 'responsive')];\n }\n }\n }\n \n // 4. Handle arbitrary min-width (min-[600px])\n if (/^min-\\[(.*)\\]$/.test(breakpoint)) {\n const value = breakpoint.match(/^min-\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width >= ${value})`, [], 'responsive')];\n }\n }\n \n // 5. Handle arbitrary max-width (max-[960px])\n if (/^max-\\[(.*)\\]$/.test(breakpoint)) {\n const value = breakpoint.match(/^max-\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width < ${value})`, [], 'responsive')];\n }\n }\n return [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\nimport { AstNode, atRule, rule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\n\n// Dark variant plugin\nconst getDarkSelectors = (ctx: Context) => {\n const mode = ctx.config(\"darkMode\") || \"media\";\n const custom = ctx.config(\"darkModeSelector\");\n const selectors: { type: \"media\" | \"selector\"; value: string }[] = [];\n\n if (mode === \"media\") {\n selectors.push({ type: \"media\", value: \"(prefers-color-scheme: dark)\" });\n if (custom) {\n const joined = Array.isArray(custom) ? custom.join(\", \") : custom;\n selectors.push({ type: \"selector\", value: joined as string });\n }\n return selectors;\n }\n if (mode === \"class\") {\n if (custom) {\n const joined = Array.isArray(custom) ? custom.join(\", \") : custom;\n selectors.push({ type: \"selector\", value: joined as string });\n return selectors;\n }\n selectors.push({ type: \"selector\", value: \".dark\" });\n return selectors;\n }\n selectors.push({ type: \"selector\", value: \".dark\" });\n return selectors;\n};\n\nfunctionalModifier(\n (mod: string) => mod === \"dark\",\n undefined, // modifySelector is not used\n (_mod: ParsedModifier, ctx: Context) => {\n const selectors = getDarkSelectors(ctx);\n \n const result: AstNode[] = [];\n\n selectors.forEach((sel) => {\n if (sel.type === \"media\") {\n const atRuleNode = atRule(\"media\", sel.value, [], 'dark');\n result.push(atRuleNode);\n } else {\n const ruleNode = rule(sel.value, [], 'dark');\n result.push(ruleNode);\n }\n });\n\n return result;\n }\n); \n","import { functionalModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\nimport { createContainerRule, createContainerParams, getThemeSize } from \"./utils\";\n\n// --- @container query variants ---\n\n// 1. @container/main - named container\nfunctionalModifier(\n (mod: string) => /^@container\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const containerMatch = /^@container\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (containerMatch) {\n const name = containerMatch[1];\n const params = name; // Just the name, no condition\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 2. @container/size - named container with arbitrary size\nfunctionalModifier(\n (mod: string) => /^@container\\/([a-zA-Z0-9_-]+)\\s+\\(([^)]+)\\)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const containerSizeMatch = /^@container\\/([a-zA-Z0-9_-]+)\\s+\\(([^)]+)\\)$/.exec(mod.type);\n if (containerSizeMatch) {\n const [, name, size] = containerSizeMatch;\n const params = createContainerParams('min', size, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 3. @container/size - theme size with named container\nfunctionalModifier(\n (mod: string) => /^@(sm|md|lg|xl|2xl)\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const namedSizeMatch = /^@(sm|md|lg|xl|2xl)\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (namedSizeMatch) {\n const [, size, name] = namedSizeMatch;\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('min', sizeValue, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 4. @container/size - theme size without named container\nfunctionalModifier(\n (mod: string) => /^@(sm|md|lg|xl|2xl)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const themeSizeMatch = /^@(sm|md|lg|xl|2xl)$/.exec(mod.type);\n if (themeSizeMatch) {\n const size = themeSizeMatch[1];\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('min', sizeValue);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 4.5. @max-container/size - max theme size without named container\nfunctionalModifier(\n (mod: string) => /^@max-(sm|md|lg|xl|2xl)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const themeSizeMatch = /^@max-(sm|md|lg|xl|2xl)$/.exec(mod.type);\n if (themeSizeMatch) {\n const size = themeSizeMatch[1];\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('max', sizeValue);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 5. @container/size - arbitrary size\nfunctionalModifier(\n (mod: string) => /^@(min|max)-\\[.*\\]$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const arbitraryMatch = /^@(min|max)-\\[(.+)\\]$/.exec(mod.type);\n if (arbitraryMatch) {\n const [, type, value] = arbitraryMatch;\n const params = createContainerParams(type as 'min' | 'max', value);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 6. @container/size - arbitrary size with named container\nfunctionalModifier(\n (mod: string) => /^@(min|max)-\\[.*\\]\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const arbitraryNamedMatch = /^@(min|max)-\\[(.+)\\]\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (arbitraryNamedMatch) {\n const [, type, value, name] = arbitraryNamedMatch;\n const params = createContainerParams(type as 'min' | 'max', value, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// has-[]: functionalModifier\nfunctionalModifier(\n (mod: string) => /^has-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^has-\\[(.+)\\]$/.exec(mod.type);\n\n if (m && m[1].startsWith('.')) {\n return {\n selector: `&:has(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n\n return m ? {\n selector: `&:has(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined,\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// not-[]: functionalModifier for arbitrary negation\nfunctionalModifier(\n (mod: string) => /^not-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^not-\\[(.+)\\]$/.exec(mod.type);\n if (m) {\n\n if (m[1].startsWith('.')) {\n return {\n selector: `&:not(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n\n return {\n selector: `&:not([${m[1]}])`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n \n return {\n selector,\n source: 'attribute'\n };\n }\n);\n\n// not-: functionalModifier for pseudo-class negation\nfunctionalModifier(\n (mod: string) => /^not-/.test(mod),\n ({ selector, mod }) => {\n const m = /^not-(.+)$/.exec(mod.type);\n return {\n selector: m ? `&:not(:${m[1]})` : selector,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n); ","import { functionalModifier, escapeClassName } from \"../../core/registry\";\n\n// --- Universal selector variants ( 4.x style, supports chaining/:is wrapping) ---\nfunctionalModifier(\n (mod) => mod === '*',\n ({ selector, fullClassName, variantChain }) => {\n const isSingle = !variantChain || variantChain.length === 1;\n return {\n selector: `:is(.${escapeClassName(fullClassName)} > *)`,\n flatten: true,\n wrappingType: isSingle ? 'rule' : 'style-rule',\n source: 'universal'\n };\n },\n undefined,\n);\n\nfunctionalModifier(\n (mod) => mod === '**',\n ({ selector, fullClassName }) => {\n return {\n selector: `:is(.${escapeClassName(fullClassName)} *)`,\n flatten: false,\n wrappingType: 'style-rule',\n source: 'universal'\n };\n },\n undefined,\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// Master CSS-style arbitrary variant ([...]) support (order: 999, always last)\nfunctionalModifier(\n (mod: string) => /^\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^\\[(.+)\\]$/.exec(mod.type);\n if (!m) return { selector };\n const inner = m[1].trim();\n // For attribute selectors (attr=val) or simple attributes ([open]), wrap with brackets\n if (/^[a-zA-Z0-9_-]+(=.+)?$/.test(inner)) {\n return { selector: `&[${inner}]`, wrappingType: 'rule', source: 'attribute' };\n }\n\n if (inner === '&>*') {\n return { selector: `${inner}`, wrappingType: 'style-rule', source: 'peer' };\n }\n\n if (inner.startsWith('&')) {\n return { selector: `${inner}`, wrappingType: 'rule', source: 'pseudo' };\n }\n\n return { selector: `${inner} &`.trim(), wrappingType: 'rule', source: 'base' };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Standard aria and not- variants ---\nfunctionalModifier(\n (mod: string) => /^aria-/.test(mod),\n ({ selector, mod }) => {\n // aria-[expanded=true] → &[aria-expanded=\"true\"] { ... }\n const bracket = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(mod.type);\n if (bracket) {\n const key = bracket[1];\n const value = bracket[2] ?? 'true';\n return {\n selector: `&[aria-${key}=\"${value}\"]`,\n source: 'aria'\n };\n }\n // aria-pressed → &[aria-pressed=\"true\"] { ... }\n const m2 = /^aria-([a-zA-Z0-9_]+)$/.exec(mod.type);\n if (m2) {\n const key = m2[1];\n return {\n selector: `&[aria-${key}=\"true\"]`,\n source: 'aria'\n };\n }\n return {\n selector,\n source: 'aria'\n };\n },\n undefined\n);\n\nfunctionalModifier(\n (mod: string) => mod.startsWith('not-'),\n ({ selector, mod }) => {\n const pseudo = mod.type.replace('not-', '');\n if (pseudo.startsWith('[')) {\n const inner = pseudo.slice(1, -1);\n // Attribute pattern: identifier(=value)? (e.g., open, dir=rtl, aria-pressed=true)\n if (/^[a-zA-Z0-9_-]+(=.+)?$/.test(inner)) {\n return {\n selector: `&:not([${inner}])`,\n source: 'attribute'\n };\n } else {\n // Otherwise, treat as a selector\n return {\n selector: `&:not(${inner})`,\n source: 'attribute'\n };\n }\n } else {\n // not-hover → :not(:hover)\n return {\n selector: `&:not(:${pseudo})`,\n source: 'attribute'\n };\n }\n },\n undefined\n);\n\n// --- Standard data- variants (similar to aria-) ---\nfunctionalModifier(\n (mod: string) => /^data-/.test(mod),\n ({ selector, mod }) => {\n \n // data-[state=open] → [data-state=\"open\"] & { ... }\n const bracket = /^data-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(mod.type);\n if (bracket) {\n const key = bracket[1];\n const value = bracket[2] ?? 'true';\n return {\n selector: `&[data-${key}=\"${value}\"]`,\n source: 'data'\n };\n }\n // data-avatar → [data-avatar] & { ... }\n const m2 = /^data-([a-zA-Z0-9_]+)$/.exec(mod.type);\n if (m2) {\n const key = m2[1];\n return {\n selector: `&[data-${key}]`,\n source: 'data'\n };\n }\n return {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Nth-child, nth-last-child, nth-of-type, nth-last-of-type (숫자/패턴 기반) ---\nfunctionalModifier(\n (mod: string) => /^nth-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-child(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-last-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-last-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-last-child(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-of-type-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-of-type-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-of-type(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-last-of-type-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-last-of-type-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-last-of-type(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Functional selector variants ---\nfunctionalModifier(\n (mod: string) => /^is-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^is-\\[(.+)\\]$/.exec(mod.type);\n return m ? {\n selector: `&:is(${m[1]})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^where-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^where-\\[(.+)\\]$/.exec(mod.type);\n return m ? {\n selector: `&:where(${m[1]})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\nimport { atRule } from \"../../core/ast\";\n\n// --- At-rule variants ---\n\n// supports-[]: functionalModifier\nfunctionalModifier(\n (mod: string) => /^supports-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^supports-\\[(.+)\\]$/.exec(mod.type);\n if (m) {\n return [atRule('supports', `(${m[1]})`, [], 'supports')];\n }\n return [];\n }\n);\n\n// --- layer-[]: @layer 쿼리 variant ---\nfunctionalModifier(\n (mod: string) => /^layer-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^layer-\\[(.+)\\]$/.exec(mod.type);\n return m ? [atRule('layer', m[1], [])] : [];\n }\n);\n\n// --- scope-[]: @scope 쿼리 variant ---\nfunctionalModifier(\n (mod: string) => /^scope-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^scope-\\[(.+)\\]$/.exec(mod.type);\n return m ? [atRule('scope', m[1], [])] : [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- group/peer/parent/child extensions (examples: group-focus, peer-active, etc.) ---\nfunctionalModifier(\n (mod: string) => /^group-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^group-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n const value = m?.[1].slice(1, -1).replace(/_/g, '');\n return {\n selector: `&:is(:where(.group):is(${value}) *)`,\n wrappingType: 'rule',\n source: 'group'\n };\n }\n\n if (m?.[1]?.startsWith('has-')) {\n const pattern = /^has-\\[([a-zA-Z0-9_-]+)\\]$/.exec(m?.[1]);\n if (pattern) {\n const value = pattern[1];\n return {\n selector: `&:is(:where(.group):has(:is(${value})) *)`,\n source: 'group'\n };\n }\n return {\n selector: `&:is(:where(.group):has(:is(${m?.[1].slice(4, -1)})) *)`,\n source: 'group'\n };\n }\n\n if (m?.[1]?.startsWith('aria-')) {\n const pattern = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(m?.[1]);\n if (pattern) {\n const value = pattern[1];\n if (pattern[2]) {\n return {\n selector: `&:is(:where(.group)[aria-${value}=\"${pattern[2]}\"] *)`,\n source: 'group'\n };\n } else {\n return {\n selector: `&:is(:where(.group)[aria-${value}] *)`,\n source: 'group'\n };\n }\n }\n }\n\n return m ? {\n selector: `&:is(:where(.group):${m[1]} *)`,\n wrappingType: 'rule',\n source: 'group'\n } : {\n selector,\n source: 'group'\n };\n },\n undefined,\n);\n\nfunctionalModifier(\n (mod: string) => /^peer-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^peer-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n const value = m?.[1].slice(1, -1).replace(/_/g, '');\n return {\n selector: `&:is(:where(.peer):is(${value})~*)`,\n wrappingType: 'rule',\n source: 'peer'\n };\n }\n\n const value = m?.[1];\n\n // has-xxxx, not-xxxx, aria-xxxx\n\n if (value?.startsWith('has-')) {\n return {\n selector: `&:is(:where(.peer):has(:${value.slice(4)})~*)`,\n source: 'peer'\n };\n }\n\n if (value?.startsWith('not-')) {\n return {\n selector: `&:is(:where(.peer):not(:${value.slice(4)})~*)`,\n source: 'peer'\n };\n }\n \n if (value?.startsWith('aria-')) {\n\n let pattern = /^aria-([a-zA-Z0-9_]+)$/.exec(value);\n if (pattern) {\n const key = pattern[1];\n return {\n selector: `&:is(:where(.peer)[aria-${key}]~*)`,\n source: 'peer'\n };\n }\n\n pattern = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(value);\n if (pattern) {\n const key = pattern[1];\n const value = pattern[2];\n\n if (pattern[2]) {\n return {\n selector: `&:is(:where(.peer)[aria-${key}=\"${value}\"]~*)`,\n source: 'peer'\n };\n } else {\n return {\n selector: `&:is(:where(.peer)[aria-${key}]~*)`,\n source: 'peer'\n };\n }\n }\n }\n\n return m ? {\n selector: `&:is(:where(.peer):${value}~*)`,\n source: 'peer'\n } : {\n selector,\n source: 'peer'\n };\n },\n undefined,\n);\n\n// --- parent/child extensions (not in the actual spec, but extensibility example) ---\nfunctionalModifier(\n (mod: string) => /^parent-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^parent-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n return {\n selector: `.parent\\\\:\\\\[${m[1].slice(1, -1)}\\\\] &`,\n wrappingType: 'rule',\n source: 'parent'\n };\n }\n\n return m ? {\n selector: `.parent:${m[1]} &`,\n source: 'parent'\n } : {\n selector,\n source: 'parent'\n };\n },\n undefined,\n);\nfunctionalModifier(\n (mod: string) => /^child-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^child-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n return {\n selector: `& > .child\\\\:\\\\[${m[1].slice(1, -1)}\\\\]`,\n wrappingType: 'rule',\n source: 'child'\n };\n }\n return m ? {\n selector: `& > .child:${m[1]}`,\n source: 'child'\n } : {\n selector,\n source: 'child'\n };\n },\n undefined,\n); "],"names":["value","obj","node","nodes","rule","decl","acc","fullClassName","declPaths","varName","v","filters"],"mappings":"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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2O7B,MAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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"}
|