{"version":3,"file":"static/js/9353.2dd0067f.chunk.js","mappings":"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","sources":["../node_modules/class-variance-authority/dist/index.mjs","../node_modules/@radix-ui/react-slot/src/slot.tsx","../node_modules/clsx/dist/clsx.mjs","../node_modules/@radix-ui/react-compose-refs/src/composeRefs.tsx","../node_modules/tailwind-merge/src/lib/class-group-utils.ts","../node_modules/tailwind-merge/src/lib/lru-cache.ts","../node_modules/tailwind-merge/src/lib/parse-class-name.ts","../node_modules/tailwind-merge/src/lib/sort-modifiers.ts","../node_modules/tailwind-merge/src/lib/merge-classlist.ts","../node_modules/tailwind-merge/src/lib/tw-join.ts","../node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../node_modules/tailwind-merge/src/lib/config-utils.ts","../node_modules/tailwind-merge/src/lib/from-theme.ts","../node_modules/tailwind-merge/src/lib/validators.ts","../node_modules/tailwind-merge/src/lib/default-config.ts","../node_modules/tailwind-merge/src/lib/tw-merge.ts"],"sourcesContent":["/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes {\n children?: React.ReactNode;\n}\n\nconst Slot = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n\n if (slottable) {\n // the new element to render is the one passed as a child of `Slottable`\n const newElement = slottable.props.children;\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n // because the new element will be the one rendered, we are only interested\n // in grabbing its children (`newElement.props.children`)\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement)\n ? (newElement.props as { children: React.ReactNode }).children\n : null;\n } else {\n return child;\n }\n });\n\n return (\n \n {React.isValidElement(newElement)\n ? React.cloneElement(newElement, undefined, newChildren)\n : null}\n \n );\n }\n\n return (\n \n {children}\n \n );\n});\n\nSlot.displayName = 'Slot';\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n children: React.ReactNode;\n}\n\nconst SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props = mergeProps(slotProps, children.props as AnyProps);\n // do not pass ref to React.Fragment for React 19 compatibility\n if (children.type !== React.Fragment) {\n props.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props);\n }\n\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n});\n\nSlotClone.displayName = 'SlotClone';\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst Slottable = ({ children }: { children: React.ReactNode }) => {\n return <>{children};\n};\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record;\n\nfunction isSlottable(\n child: React.ReactNode\n): child is React.ReactElement, typeof Slottable> {\n return React.isValidElement(child) && child.type === Slottable;\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n // all child props should override\n const overrideProps = { ...childProps };\n\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n // if the handler exists on both, we compose them\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args: unknown[]) => {\n childPropValue(...args);\n slotPropValue(...args);\n };\n }\n // but if it exists only on the slot, we use only this one\n else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n }\n // if it's `style`, we merge them\n else if (propName === 'style') {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === 'className') {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n }\n }\n\n return { ...slotProps, ...overrideProps };\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element.props as { ref?: React.Ref }).ref;\n }\n\n // Not DEV\n return (element.props as { ref?: React.Ref }).ref || (element as any).ref;\n}\n\nconst Root = Slot;\n\nexport {\n Slot,\n Slottable,\n //\n Root,\n};\nexport type { SlotProps };\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t = React.Ref | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef(ref: PossibleRef, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs(...refs: PossibleRef[]): React.RefCallback {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs(...refs: PossibleRef[]): React.RefCallback {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\n\nexport interface ClassPartObject {\n nextPart: Map\n validators: ClassValidatorObject[]\n classGroupId?: AnyClassGroupIds\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\nconst CLASS_PART_SEPARATOR = '-'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n const classParts = className.split(CLASS_PART_SEPARATOR)\n\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift()\n }\n\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ) => {\n const conflicts = conflictingClassGroups[classGroupId] || []\n\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]!]\n }\n\n return conflicts\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[0]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n const classGroupFromNextClassPart = nextClassPartObject\n ? getGroupRecursive(classParts.slice(1), nextClassPartObject)\n : undefined\n\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart\n }\n\n if (classPartObject.validators.length === 0) {\n return undefined\n }\n\n const classRest = classParts.join(CLASS_PART_SEPARATOR)\n\n return classPartObject.validators.find(({ validator }) => validator(classRest))?.classGroupId\n}\n\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/\n\nconst getGroupIdForArbitraryProperty = (className: string) => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)![1]\n const property = arbitraryPropertyClassName?.substring(\n 0,\n arbitraryPropertyClassName.indexOf(':'),\n )\n\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property\n }\n }\n}\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config) => {\n const { theme, classGroups } = config\n const classMap: ClassPartObject = {\n nextPart: new Map(),\n validators: [],\n }\n\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId]!, classMap, classGroupId, theme)\n }\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject,\n) => {\n classGroup.forEach((classDefinition) => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n return\n }\n\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(\n classDefinition(theme),\n classPartObject,\n classGroupId,\n theme,\n )\n return\n }\n\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId,\n })\n\n return\n }\n\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(\n classGroup,\n getPart(classPartObject, key),\n classGroupId,\n theme,\n )\n })\n })\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string) => {\n let currentClassPartObject = classPartObject\n\n path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: [],\n })\n }\n\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart)!\n })\n\n return currentClassPartObject\n}\n\nconst isThemeGetter = (func: ClassValidator | ThemeGetter): func is ThemeGetter =>\n (func as ThemeGetter).isThemeGetter\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nexport const createLruCache = (maxCacheSize: number): LruCache => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache = new Map()\n let previousCache = new Map()\n\n const update = (key: Key, value: Value) => {\n cache.set(key, value)\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = new Map()\n }\n }\n\n return {\n get(key) {\n let value = cache.get(key)\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value)\n } else {\n update(key, value)\n }\n },\n }\n}\n","import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\nconst MODIFIER_SEPARATOR = ':'\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { prefix, experimentalParseClassName } = config\n\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = (className: string): ParsedClassName => {\n const modifiers = []\n\n let bracketDepth = 0\n let parenDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index]\n\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') {\n bracketDepth++\n } else if (currentCharacter === ']') {\n bracketDepth--\n } else if (currentCharacter === '(') {\n parenDepth++\n } else if (currentCharacter === ')') {\n parenDepth--\n }\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.substring(modifierStart)\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier)\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n }\n }\n\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR\n const parseClassNameOriginal = parseClassName\n parseClassName = (className) =>\n className.startsWith(fullPrefix)\n ? parseClassNameOriginal(className.substring(fullPrefix.length))\n : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined,\n }\n }\n\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName\n parseClassName = (className) =>\n experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n }\n\n return parseClassName\n}\n\nconst stripImportantModifier = (baseClassName: string) => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1)\n }\n\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1)\n }\n\n return baseClassName\n}\n","import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n const orderSensitiveModifiers = Object.fromEntries(\n config.orderSensitiveModifiers.map((modifier) => [modifier, true]),\n )\n\n const sortModifiers = (modifiers: string[]) => {\n if (modifiers.length <= 1) {\n return modifiers\n }\n\n const sortedModifiers: string[] = []\n let unsortedModifiers: string[] = []\n\n modifiers.forEach((modifier) => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier]\n\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier)\n unsortedModifiers = []\n } else {\n unsortedModifiers.push(modifier)\n }\n })\n\n sortedModifiers.push(...unsortedModifiers.sort())\n\n return sortedModifiers\n }\n\n return sortModifiers\n}\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } =\n configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = parseClassName(originalClassName)\n\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n let hasPostfixModifier = !!maybePostfixModifierPosition\n let classGroupId = getClassGroupId(\n hasPostfixModifier\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n const variantModifier = sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i]!\n classGroupsInConflict.push(modifierId + group)\n }\n\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport function twJoin(...classLists: ClassNameValue[]): string\nexport function twJoin() {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < arguments.length) {\n if ((argument = arguments[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nconst toValue = (mix: ClassNameArray | string) => {\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType\n\nexport function createTailwindMerge(\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall = initTailwindMerge\n\n function initTailwindMerge(classList: string) {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n function tailwindMerge(classList: string) {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments as any))\n }\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config),\n})\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(key: NoInfer): ThemeGetter => {\n const themeGetter = (theme: ThemeObject) =>\n theme[key] || []\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => Boolean(value) && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => Boolean(value) && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) => getIsArbitraryValue(value, isNever, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n getIsArbitraryVariable(value, isLabelShadow, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n value: string,\n testLabel: (label: string) => boolean,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst getIsArbitraryVariable = (\n value: string,\n testLabel: (label: string) => boolean,\n shouldMatchNoLabel = false,\n) => {\n const result = arbitraryVariableRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n return shouldMatchNoLabel\n }\n\n return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position'\n\nconst imageLabels = new Set(['image', 'url'])\n\nconst isLabelImage = (label: string) => imageLabels.has(label)\n\nconst sizeLabels = new Set(['length', 'size', 'percentage'])\n\nconst isLabelSize = (label: string) => sizeLabels.has(label)\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n\n const themeColor = fromTheme('color')\n const themeFont = fromTheme('font')\n const themeText = fromTheme('text')\n const themeFontWeight = fromTheme('font-weight')\n const themeTracking = fromTheme('tracking')\n const themeLeading = fromTheme('leading')\n const themeBreakpoint = fromTheme('breakpoint')\n const themeContainer = fromTheme('container')\n const themeSpacing = fromTheme('spacing')\n const themeRadius = fromTheme('radius')\n const themeShadow = fromTheme('shadow')\n const themeInsetShadow = fromTheme('inset-shadow')\n const themeDropShadow = fromTheme('drop-shadow')\n const themeBlur = fromTheme('blur')\n const themePerspective = fromTheme('perspective')\n const themeAspect = fromTheme('aspect')\n const themeEase = fromTheme('ease')\n const themeAnimate = fromTheme('animate')\n\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n\n const scaleBreak = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const scalePosition = () =>\n [\n 'bottom',\n 'center',\n 'left',\n 'left-bottom',\n 'left-top',\n 'right',\n 'right-bottom',\n 'right-top',\n 'top',\n ] as const\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n const scaleUnambiguousSpacing = () =>\n [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n const scaleGridTemplateColsRows = () =>\n [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridColRowStartAndEnd = () =>\n [\n 'auto',\n { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleGridColRowStartOrEnd = () =>\n [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridAutoColsRows = () =>\n ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n const scaleAlignPrimaryAxis = () =>\n ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline'] as const\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch'] as const\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n const scaleSizing = () =>\n [\n isFraction,\n 'auto',\n 'full',\n 'dvw',\n 'dvh',\n 'lvw',\n 'lvh',\n 'svw',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n const scaleGradientStopPosition = () =>\n [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleRadius = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n 'full',\n themeRadius,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleBorderWidth = () =>\n ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n const scaleBlendMode = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const scaleBlur = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeBlur,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleOrigin = () =>\n [\n 'center',\n 'top',\n 'top-right',\n 'right',\n 'bottom-right',\n 'bottom',\n 'bottom-left',\n 'left',\n 'top-left',\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n ],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [\n {\n aspect: [\n 'auto',\n 'square',\n isFraction,\n isArbitraryValue,\n isArbitraryVariable,\n themeAspect,\n ],\n },\n ],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [\n { columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] },\n ],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': scaleBreak() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': scaleBreak() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [\n { object: [...scalePosition(), isArbitraryValue, isArbitraryVariable] },\n ],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: scaleOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: scaleOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: scaleInset() }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': scaleInset() }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': scaleInset() }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{ start: scaleInset() }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{ end: scaleInset() }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: scaleInset() }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: scaleInset() }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: scaleInset() }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: scaleInset() }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [\n {\n basis: [\n isFraction,\n 'full',\n 'auto',\n themeContainer,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [\n {\n order: [\n isInteger,\n 'first',\n 'last',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: scaleUnambiguousSpacing() }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{ self: ['auto', ...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: scaleUnambiguousSpacing() }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: scaleUnambiguousSpacing() }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: scaleUnambiguousSpacing() }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: scaleUnambiguousSpacing() }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: scaleUnambiguousSpacing() }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: scaleUnambiguousSpacing() }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: scaleUnambiguousSpacing() }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: scaleUnambiguousSpacing() }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: scaleUnambiguousSpacing() }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: scaleMargin() }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: scaleMargin() }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: scaleMargin() }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: scaleMargin() }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: scaleMargin() }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: scaleMargin() }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: scaleMargin() }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: scaleMargin() }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: scaleMargin() }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n\n // --------------\n // --- Sizing ---\n // --------------\n\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{ size: scaleSizing() }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [\n {\n 'min-w': [\n themeContainer,\n 'screen',\n /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none',\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n themeContainer,\n 'screen',\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n { screen: [themeBreakpoint] },\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: ['screen', ...scaleSizing()] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['screen', 'none', ...scaleSizing()] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': ['screen', ...scaleSizing()] }],\n\n // ------------------\n // --- Typography ---\n // ------------------\n\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [\n { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber] }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [\n {\n 'font-stretch': [\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n isPercent,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [\n { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n ],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [\n { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: scaleColor() }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: scaleColor() }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n {\n decoration: [\n isNumber,\n 'from-font',\n 'auto',\n isArbitraryVariable,\n isArbitraryLength,\n ],\n },\n ],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: scaleColor() }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [\n { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: scaleUnambiguousSpacing() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // -------------------\n // --- Backgrounds ---\n // -------------------\n\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [\n { bg: [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition] },\n ],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [\n { bg: ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize] },\n ],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n {\n linear: [\n { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue],\n },\n isArbitraryVariableImage,\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: scaleColor() }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: scaleColor() }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: scaleColor() }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: scaleColor() }],\n\n // ---------------\n // --- Borders ---\n // ---------------\n\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: scaleRadius() }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': scaleRadius() }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': scaleRadius() }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': scaleRadius() }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': scaleRadius() }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': scaleRadius() }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': scaleRadius() }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': scaleRadius() }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': scaleRadius() }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': scaleRadius() }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: scaleBorderWidth() }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: scaleColor() }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': scaleColor() }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': scaleColor() }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': scaleColor() }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': scaleColor() }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': scaleColor() }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': scaleColor() }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': scaleColor() }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': scaleColor() }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: scaleColor() }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [\n { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [\n { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: [themeColor] }],\n\n // ---------------\n // --- Effects ---\n // ---------------\n\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [\n {\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{ shadow: scaleColor() }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [\n {\n 'inset-shadow': [\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n themeInsetShadow,\n ],\n },\n ],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{ ring: scaleBorderWidth() }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{ ring: scaleColor() }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n\n // ---------------\n // --- Filters ---\n // ---------------\n\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [\n {\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: scaleBlur() }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [\n {\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeDropShadow,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [\n {\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [\n { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [\n { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [\n { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [\n { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [\n { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [\n { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [\n { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [\n { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n\n // --------------\n // --- Tables ---\n // --------------\n\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n '',\n 'all',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [\n { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------\n // --- Transforms ---\n // ------------------\n\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{ backface: ['hidden', 'visible'] }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [\n { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{ 'perspective-origin': scaleOrigin() }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: scaleRotate() }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{ 'rotate-x': scaleRotate() }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{ 'rotate-y': scaleRotate() }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{ 'rotate-z': scaleRotate() }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: scaleScale() }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': scaleScale() }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': scaleScale() }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{ 'scale-z': scaleScale() }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{ skew: scaleSkew() }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': scaleSkew() }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': scaleSkew() }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [\n { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n ],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{ origin: scaleOrigin() }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{ transform: ['3d', 'flat'] }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{ translate: scaleTranslate() }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': scaleTranslate() }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': scaleTranslate() }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{ 'translate-z': scaleTranslate() }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: scaleColor() }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: scaleColor() }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [\n { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n ],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\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 isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', '', 'y', 'x'] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n {\n 'will-change': [\n 'auto',\n 'scroll',\n 'contents',\n 'transform',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n\n // -----------\n // --- SVG ---\n // -----------\n\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: ['none', ...scaleColor()] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [\n {\n stroke: [\n isNumber,\n isArbitraryVariableLength,\n isArbitraryLength,\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-s',\n 'border-w-e',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-s',\n 'border-color-e',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n orderSensitiveModifiers: [\n 'before',\n 'after',\n 'placeholder',\n 'file',\n 'marker',\n 'selection',\n 'first-line',\n 'first-letter',\n 'backdrop',\n '*',\n '**',\n ],\n } as const satisfies Config\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n"],"names":["falsyToString","value","cx","clsx","cva","base","config","props","_config_compoundVariants","variants","class","className","defaultVariants","getVariantClassNames","Object","keys","map","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","entries","reduce","acc","param","key","undefined","getCompoundVariantClassNames","compoundVariants","cvClass","cvClassName","compoundVariantOptions","every","Array","isArray","includes","Slot","React","forwardedRef","children","slotProps","childrenArray","toArray","slottable","find","isSlottable","newElement","newChildren","child","count","only","jsx","SlotClone","ref","displayName","childrenRef","element","getter","getOwnPropertyDescriptor","get","mayWarn","isReactWarning","getElementRef","props2","childProps","overrideProps","propName","slotPropValue","childPropValue","test","arguments","filter","Boolean","join","mergeProps","type","composeRefs","Slottable","_ref","Fragment2","r","e","t","f","n","o","length","setRef","current","_len","refs","_key","node","hasCleanup","cleanups","cleanup","i","useComposedRefs","_len2","_key2","createClassGroupUtils","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","classParts","split","shift","getGroupRecursive","getGroupIdForArbitraryProperty","getConflictingClassGroupIds","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","nextPart","classGroupFromNextClassPart","slice","validators","classRest","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","exec","property","substring","indexOf","theme","classGroups","Map","processClassesRecursively","classGroup","forEach","classDefinition","isThemeGetter","push","_ref2","getPart","path","currentClassPartObject","pathPart","has","set","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","postfixModifierPosition","bracketDepth","parenDepth","modifierStart","index","currentCharacter","MODIFIER_SEPARATOR","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","startsWith","isExternal","endsWith","createSortModifiers","orderSensitiveModifiers","fromEntries","modifier","sortedModifiers","unsortedModifiers","sort","SPLIT_CLASSES_REGEX","twJoin","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","configUtils","cacheGet","cacheSet","functionToCall","classList","previousConfig","createConfigCurrent","sortModifiers","createConfigUtils","tailwindMerge","cachedResult","result","mergeClassList","classGroupsInConflict","classNames","trim","originalClassName","variantModifier","modifierId","classId","conflictGroups","group","apply","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","Number","isNaN","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","isLabelShadow","testLabel","testValue","shouldMatchNoLabel","label","imageLabels","Set","sizeLabels","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleMargin","scaleSizing","scaleColor","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleBlur","scaleOrigin","scaleRotate","scaleScale","scaleSkew","scaleTranslate","animate","aspect","blur","breakpoint","color","container","ease","font","leading","perspective","radius","shadow","spacing","text","tracking","columns","box","display","sr","float","clear","isolation","object","overflow","overscroll","position","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","content","items","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","size","w","screen","h","list","placeholder","decoration","indent","align","whitespace","break","hyphens","bg","repeat","linear","to","radial","conic","from","via","rounded","border","divide","outline","ring","opacity","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","twMerge"],"sourceRoot":""}