1;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="a1f95f67-0ddf-f246-dab6-4f30a5db3e67")}catch(e){}}(); 2(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push([typeof document === "object" ? document.currentScript : undefined, 3207670, 919056, 4((__turbopack_context__) => { 5"use strict"; 6 7// MERGED MODULE: [project]/node_modules/clsx/dist/clsx.mjs [app-client] (ecmascript) 8; 9function r(e) { 10 var t, f, n = ""; 11 if ("string" == typeof e || "number" == typeof e) n += e; 12 else if ("object" == typeof e) if (Array.isArray(e)) { 13 var o = e.length; 14 for(t = 0; t < o; t++)e[t] && (f = r(e[t])) && (n && (n += " "), n += f); 15 } else for(f in e)e[f] && (n && (n += " "), n += f); 16 return n; 17} 18function clsx() { 19 for(var e, t, f = 0, n = "", o = arguments.length; f < o; f++)(e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); 20 return n; 21} 22const __TURBOPACK__default__export__ = clsx; 23__turbopack_context__.s([ 24 "clsx", 25 0, 26 clsx, 27 "default", 28 0, 29 __TURBOPACK__default__export__ 30], 207670); 31// MERGED MODULE: [project]/node_modules/tailwind-merge/dist/bundle-mjs.mjs [app-client] (ecmascript) 32; 33/** 34 * Concatenates two arrays faster than the array spread operator. 35 */ const concatArrays = (array1, array2)=>{ 36 // Pre-allocate for better V8 optimization 37 const combinedArray = new Array(array1.length + array2.length); 38 for(let i = 0; i < array1.length; i++){ 39 combinedArray[i] = array1[i]; 40 } 41 for(let i = 0; i < array2.length; i++){ 42 combinedArray[array1.length + i] = array2[i]; 43 } 44 return combinedArray; 45}; 46// Factory function ensures consistent object shapes 47const createClassValidatorObject = (classGroupId, validator)=>({ 48 classGroupId, 49 validator 50 }); 51// Factory ensures consistent ClassPartObject shape 52const createClassPartObject = function() { 53 let nextPart = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : new Map(), validators = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, classGroupId = arguments.length > 2 ? arguments[2] : void 0; 54 return { 55 nextPart, 56 validators, 57 classGroupId 58 }; 59}; 60const CLASS_PART_SEPARATOR = '-'; 61const EMPTY_CONFLICTS = []; 62// I use two dots here because one dot is used as prefix for class groups in plugins 63const ARBITRARY_PROPERTY_PREFIX = 'arbitrary..'; 64const createClassGroupUtils = (config)=>{ 65 const classMap = createClassMap(config); 66 const { conflictingClassGroups, conflictingClassGroupModifiers } = config; 67 const getClassGroupId = (className)=>{ 68 if (className.startsWith('[') && className.endsWith(']')) { 69 return getGroupIdForArbitraryProperty(className); 70 } 71 const classParts = className.split(CLASS_PART_SEPARATOR); 72 // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it. 73 const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0; 74 return getGroupRecursive(classParts, startIndex, classMap); 75 }; 76 const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier)=>{ 77 if (hasPostfixModifier) { 78 const modifierConflicts = conflictingClassGroupModifiers[classGroupId]; 79 const baseConflicts = conflictingClassGroups[classGroupId]; 80 if (modifierConflicts) { 81 if (baseConflicts) { 82 // Merge base conflicts with modifier conflicts 83 return concatArrays(baseConflicts, modifierConflicts); 84 } 85 // Only modifier conflicts 86 return modifierConflicts; 87 } 88 // Fall back to without postfix if no modifier conflicts 89 return baseConflicts || EMPTY_CONFLICTS; 90 } 91 return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS; 92 }; 93 return { 94 getClassGroupId, 95 getConflictingClassGroupIds 96 }; 97}; 98const getGroupRecursive = (classParts, startIndex, classPartObject)=>{ 99 const classPathsLength = classParts.length - startIndex; 100 if (classPathsLength === 0) { 101 return classPartObject.classGroupId; 102 } 103 const currentClassPart = classParts[startIndex]; 104 const nextClassPartObject = classPartObject.nextPart.get(currentClassPart); 105 if (nextClassPartObject) { 106 const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject); 107 if (result) return result; 108 } 109 const validators = classPartObject.validators; 110 if (validators === null) { 111 return undefined; 112 } 113 // Build classRest string efficiently by joining from startIndex onwards 114 const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR); 115 const validatorsLength = validators.length; 116 for(let i = 0; i < validatorsLength; i++){ 117 const validatorObj = validators[i]; 118 if (validatorObj.validator(classRest)) { 119 return validatorObj.classGroupId; 120 } 121 } 122 return undefined; 123}; 124/** 125 * Get the class group ID for an arbitrary property. 126 * 127 * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.
vendor: 6,544 bytes, lines 128-294
128 */ const getGroupIdForArbitraryProperty = (className)=>className.slice(1, -1).indexOf(':') === -1 ? undefined : (()=>{ 129 const content = className.slice(1, -1); 130 const colonIndex = content.indexOf(':'); 131 const property = content.slice(0, colonIndex); 132 return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined; 133 })(); 134/** 135 * Exported for testing only 136 */ const createClassMap = (config)=>{ 137 const { theme, classGroups } = config; 138 return processClassGroups(classGroups, theme); 139}; 140// Split into separate functions to maintain monomorphic call sites 141const processClassGroups = (classGroups, theme)=>{ 142 const classMap = createClassPartObject(); 143 for(const classGroupId in classGroups){ 144 const group = classGroups[classGroupId]; 145 processClassesRecursively(group, classMap, classGroupId, theme); 146 } 147 return classMap; 148}; 149const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme)=>{ 150 const len = classGroup.length; 151 for(let i = 0; i < len; i++){ 152 const classDefinition = classGroup[i]; 153 processClassDefinition(classDefinition, classPartObject, classGroupId, theme); 154 } 155}; 156// Split into separate functions for each type to maintain monomorphic call sites 157const processClassDefinition = (classDefinition, classPartObject, classGroupId, theme)=>{ 158 if (typeof classDefinition === 'string') { 159 processStringDefinition(classDefinition, classPartObject, classGroupId); 160 return; 161 } 162 if (typeof classDefinition === 'function') { 163 processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme); 164 return; 165 } 166 processObjectDefinition(classDefinition, classPartObject, classGroupId, theme); 167}; 168const processStringDefinition = (classDefinition, classPartObject, classGroupId)=>{ 169 const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition); 170 classPartObjectToEdit.classGroupId = classGroupId; 171}; 172const processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme)=>{ 173 if (isThemeGetter(classDefinition)) { 174 processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme); 175 return; 176 } 177 if (classPartObject.validators === null) { 178 classPartObject.validators = []; 179 } 180 classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition)); 181}; 182const processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme)=>{ 183 const entries = Object.entries(classDefinition); 184 const len = entries.length; 185 for(let i = 0; i < len; i++){ 186 const [key, value] = entries[i]; 187 processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme); 188 } 189}; 190const getPart = (classPartObject, path)=>{ 191 let current = classPartObject; 192 const parts = path.split(CLASS_PART_SEPARATOR); 193 const len = parts.length; 194 for(let i = 0; i < len; i++){ 195 const part = parts[i]; 196 let next = current.nextPart.get(part); 197 if (!next) { 198 next = createClassPartObject(); 199 current.nextPart.set(part, next); 200 } 201 current = next; 202 } 203 return current; 204}; 205// Type guard maintains monomorphic check 206const isThemeGetter = (func)=>'isThemeGetter' in func && func.isThemeGetter === true; 207// LRU cache implementation using plain objects for simplicity 208const createLruCache = (maxCacheSize)=>{ 209 if (maxCacheSize < 1) { 210 return { 211 get: ()=>undefined, 212 set: ()=>{} 213 }; 214 } 215 let cacheSize = 0; 216 let cache = Object.create(null); 217 let previousCache = Object.create(null); 218 const update = (key, value)=>{ 219 cache[key] = value; 220 cacheSize++; 221 if (cacheSize > maxCacheSize) { 222 cacheSize = 0; 223 previousCache = cache; 224 cache = Object.create(null); 225 } 226 }; 227 return { 228 get (key) { 229 let value = cache[key]; 230 if (value !== undefined) { 231 return value; 232 } 233 if ((value = previousCache[key]) !== undefined) { 234 update(key, value); 235 return value; 236 } 237 }, 238 set (key, value) { 239 if (key in cache) { 240 cache[key] = value; 241 } else { 242 update(key, value); 243 } 244 } 245 }; 246}; 247const IMPORTANT_MODIFIER = '!'; 248const MODIFIER_SEPARATOR = ':'; 249const EMPTY_MODIFIERS = []; 250// Pre-allocated result object shape for consistency 251const createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal)=>({ 252 modifiers, 253 hasImportantModifier, 254 baseClassName, 255 maybePostfixModifierPosition, 256 isExternal 257 }); 258const createParseClassName = (config)=>{ 259 const { prefix, experimentalParseClassName } = config; 260 /** 261 * Parse class name into parts. 262 * 263 * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS 264 * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js 265 */ let parseClassName = (className)=>{ 266 // Use simple array with push for better performance 267 const modifiers = []; 268 let bracketDepth = 0; 269 let parenDepth = 0; 270 let modifierStart = 0; 271 let postfixModifierPosition; 272 const len = className.length; 273 for(let index = 0; index < len; index++){ 274 const currentCharacter = className[index]; 275 if (bracketDepth === 0 && parenDepth === 0) { 276 if (currentCharacter === MODIFIER_SEPARATOR) { 277 modifiers.push(className.slice(modifierStart, index)); 278 modifierStart = index + 1; 279 continue; 280 } 281 if (currentCharacter === '/') { 282 postfixModifierPosition = index; 283 continue; 284 } 285 } 286 if (currentCharacter === '[') bracketDepth++; 287 else if (currentCharacter === ']') bracketDepth--; 288 else if (currentCharacter === '(') parenDepth++; 289 else if (currentCharacter === ')') parenDepth--; 290 } 291 const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart); 292 // Inline important modifier check 293 let baseClassName = baseClassNameWithImportantModifier; 294 let hasImportantModifier = false;
295 if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) { 296 baseClassName = baseClassNameWithImportantModifier.slice(0, -1); 297 hasImportantModifier = true; 298 } else if (/** 299 * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons. 300 * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864 301 */ baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) { 302 baseClassName = baseClassNameWithImportantModifier.slice(1); 303 hasImportantModifier = true; 304 } 305 const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined; 306 return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition); 307 }; 308 if (prefix) { 309 const fullPrefix = prefix + MODIFIER_SEPARATOR; 310 const parseClassNameOriginal = parseClassName; 311 parseClassName = (className)=>className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true); 312 } 313 if (experimentalParseClassName) { 314 const parseClassNameOriginal = parseClassName; 315 parseClassName = (className)=>experimentalParseClassName({ 316 className, 317 parseClassName: parseClassNameOriginal 318 }); 319 } 320 return parseClassName; 321}; 322/** 323 * Sorts modifiers according to following schema: 324 * - Predefined modifiers are sorted alphabetically 325 * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it 326 */ const createSortModifiers = (config)=>{ 327 // Pre-compute weights for all known modifiers for O(1) comparison 328 const modifierWeights = new Map(); 329 // Assign weights to sensitive modifiers (highest priority, but preserve order) 330 config.orderSensitiveModifiers.forEach((mod, index)=>{ 331 modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods 332 }); 333 return (modifiers)=>{ 334 const result = []; 335 let currentSegment = []; 336 // Process modifiers in one pass 337 for(let i = 0; i < modifiers.length; i++){ 338 const modifier = modifiers[i]; 339 // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers) 340 const isArbitrary = modifier[0] === '['; 341 const isOrderSensitive = modifierWeights.has(modifier); 342 if (isArbitrary || isOrderSensitive) { 343 // Sort and flush current segment alphabetically 344 if (currentSegment.length > 0) { 345 currentSegment.sort(); 346 result.push(...currentSegment); 347 currentSegment = []; 348 } 349 result.push(modifier); 350 } else { 351 // Regular modifier - add to current segment for batch sorting 352 currentSegment.push(modifier); 353 } 354 } 355 // Sort and add any remaining segment items 356 if (currentSegment.length > 0) { 357 currentSegment.sort(); 358 result.push(...currentSegment); 359 } 360 return result; 361 }; 362}; 363const createConfigUtils = (config)=>({ 364 cache: createLruCache(config.cacheSize), 365 parseClassName: createParseClassName(config), 366 sortModifiers: createSortModifiers(config), 367 postfixLookupClassGroupIds: createPostfixLookupClassGroupIds(config), 368 ...createClassGroupUtils(config) 369 }); 370const createPostfixLookupClassGroupIds = (config)=>{ 371 const lookup = Object.create(null); 372 const classGroupIds = config.postfixLookupClassGroups; 373 if (classGroupIds) { 374 for(let i = 0; i < classGroupIds.length; i++){ 375 lookup[classGroupIds[i]] = true; 376 } 377 } 378 return lookup; 379}; 380const SPLIT_CLASSES_REGEX = /\s+/; 381const mergeClassList = (classList, configUtils)=>{ 382 const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers, postfixLookupClassGroupIds } = configUtils; 383 /** 384 * Set of classGroupIds in following format: 385 * `{importantModifier}{variantModifiers}{classGroupId}` 386 * @example 'float' 387 * @example 'hover:focus:bg-color' 388 * @example 'md:!pr' 389 */ const classGroupsInConflict = []; 390 const classNames = classList.trim().split(SPLIT_CLASSES_REGEX); 391 let result = ''; 392 for(let index = classNames.length - 1; index >= 0; index -= 1){ 393 const originalClassName = classNames[index]; 394 const { isExternal, modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition } = parseClassName(originalClassName); 395 if (isExternal) { 396 result = originalClassName + (result.length > 0 ? ' ' + result : result); 397 continue; 398 } 399 let hasPostfixModifier = !!maybePostfixModifierPosition; 400 let classGroupId; 401 if (hasPostfixModifier) { 402 const baseClassNameWithoutPostfix = baseClassName.substring(0, maybePostfixModifierPosition); 403 classGroupId = getClassGroupId(baseClassNameWithoutPostfix); 404 const classGroupIdWithPostfix = classGroupId && postfixLookupClassGroupIds[classGroupId] ? getClassGroupId(baseClassName) : undefined; 405 if (classGroupIdWithPostfix && classGroupIdWithPostfix !== classGroupId) { 406 classGroupId = classGroupIdWithPostfix; 407 hasPostfixModifier = false;
408 } 409 } else { 410 classGroupId = getClassGroupId(baseClassName); 411 } 412 if (!classGroupId) { 413 if (!hasPostfixModifier) { 414 // Not a Tailwind class 415 result = originalClassName + (result.length > 0 ? ' ' + result : result); 416 continue; 417 } 418 classGroupId = getClassGroupId(baseClassName); 419 if (!classGroupId) { 420 // Not a Tailwind class 421 result = originalClassName + (result.length > 0 ? ' ' + result : result); 422 continue; 423 } 424 hasPostfixModifier = false; 425 } 426 // Fast path: skip sorting for empty or single modifier 427 const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':'); 428 const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier; 429 const classId = modifierId + classGroupId; 430 if (classGroupsInConflict.indexOf(classId) > -1) { 431 continue; 432 } 433 classGroupsInConflict.push(classId); 434 const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier); 435 for(let i = 0; i < conflictGroups.length; ++i){ 436 const group = conflictGroups[i]; 437 classGroupsInConflict.push(modifierId + group); 438 } 439 // Tailwind class not in conflict 440 result = originalClassName + (result.length > 0 ? ' ' + result : result); 441 } 442 return result; 443}; 444/** 445 * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better. 446 * 447 * Specifically: 448 * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js 449 * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts 450 * 451 * Original code has MIT license: Copyright (c) Luke Edwards <[email protected]> (lukeed.com) 452 */ const twJoin = function() { 453 for(var _len = arguments.length, classLists = new Array(_len), _key = 0; _key < _len; _key++){ 454 classLists[_key] = arguments[_key]; 455 } 456 let index = 0; 457 let argument; 458 let resolvedValue; 459 let string = ''; 460 while(index < classLists.length){ 461 if (argument = classLists[index++]) { 462 if (resolvedValue = toValue(argument)) { 463 string && (string += ' '); 464 string += resolvedValue; 465 } 466 } 467 } 468 return string; 469}; 470const toValue = (mix)=>{ 471 // Fast path for strings 472 if (typeof mix === 'string') { 473 return mix; 474 } 475 let resolvedValue; 476 let string = ''; 477 for(let k = 0; k < mix.length; k++){ 478 if (mix[k]) { 479 if (resolvedValue = toValue(mix[k])) { 480 string && (string += ' '); 481 string += resolvedValue; 482 } 483 } 484 } 485 return string; 486}; 487const createTailwindMerge = function(createConfigFirst) { 488 for(var _len = arguments.length, createConfigRest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){ 489 createConfigRest[_key - 1] = arguments[_key]; 490 } 491 let configUtils; 492 let cacheGet; 493 let cacheSet; 494 let functionToCall; 495 const initTailwindMerge = (classList)=>{ 496 const config = createConfigRest.reduce((previousConfig, createConfigCurrent)=>createConfigCurrent(previousConfig), createConfigFirst()); 497 configUtils = createConfigUtils(config); 498 cacheGet = configUtils.cache.get; 499 cacheSet = configUtils.cache.set; 500 functionToCall = tailwindMerge; 501 return tailwindMerge(classList); 502 }; 503 const tailwindMerge = (classList)=>{ 504 const cachedResult = cacheGet(classList); 505 if (cachedResult) { 506 return cachedResult; 507 } 508 const result = mergeClassList(classList, configUtils); 509 cacheSet(classList, result); 510 return result; 511 }; 512 functionToCall = initTailwindMerge; 513 return function() { 514 for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){ 515 args[_key] = arguments[_key]; 516 } 517 return functionToCall(twJoin(...args)); 518 }; 519}; 520const fallbackThemeArr = []; 521const fromTheme = (key)=>{ 522 const themeGetter = (theme)=>theme[key] || fallbackThemeArr; 523 themeGetter.isThemeGetter = true; 524 themeGetter.themeKey = key; 525 return themeGetter; 526}; 527const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i; 528const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i; 529const fractionRegex = /^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/; 530const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/; 531const lengthUnitRegex = /\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$/; 532const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/; 533// Shadow always begins with x and y offset separated by underscore optionally prepended by inset 534const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/; 535const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/; 536const isFraction = (value)=>fractionRegex.test(value); 537const isNumber = (value)=>!!value && !Number.isNaN(Number(value)); 538const isInteger = (value)=>!!value && Number.isInteger(Number(value)); 539const isPercent = (value)=>value.endsWith('%') && isNumber(value.slice(0, -1)); 540const isTshirtSize = (value)=>tshirtUnitRegex.test(value); 541const isAny = ()=>true; 542const isLengthOnly = (value)=>// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which w
542ould be incorrectly classified as lengths. 543 // For example, `hsl(0 0% 0%)` would be classified as a length without this check. 544 // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough. 545 lengthUnitRegex.test(value) && !colorFunctionRegex.test(value); 546const isNever = ()=>false; 547const isShadow = (value)=>shadowRegex.test(value); 548const isImage = (value)=>imageRegex.test(value); 549const isAnyNonArbitrary = (value)=>!isArbitraryValue(value) && !isArbitraryVariable(value); 550const isNamedContainerQuery = (value)=>value.startsWith('@container') && (value[10] === '/' && value[11] !== undefined || value[11] === 's' && value[16] !== undefined && value.startsWith('-size/', 10) || value[11] === 'n' && value[18] !== undefined && value.startsWith('-normal/', 10)); 551const isArbitrarySize = (value)=>getIsArbitraryValue(value, isLabelSize, isNever); 552const isArbitraryValue = (value)=>arbitraryValueRegex.test(value); 553const isArbitraryLength = (value)=>getIsArbitraryValue(value, isLabelLength, isLengthOnly); 554const isArbitraryNumber = (value)=>getIsArbitraryValue(value, isLabelNumber, isNumber); 555const isArbitraryWeight = (value)=>getIsArbitraryValue(value, isLabelWeight, isAny); 556const isArbitraryFamilyName = (value)=>getIsArbitraryValue(value, isLabelFamilyName, isNever); 557const isArbitraryPosition = (value)=>getIsArbitraryValue(value, isLabelPosition, isNever); 558const isArbitraryImage = (value)=>getIsArbitraryValue(value, isLabelImage, isImage); 559const isArbitraryShadow = (value)=>getIsArbitraryValue(value, isLabelShadow, isShadow); 560const isArbitraryVariable = (value)=>arbitraryVariableRegex.test(value); 561const isArbitraryVariableLength = (value)=>getIsArbitraryVariable(value, isLabelLength); 562const isArbitraryVariableFamilyName = (value)=>getIsArbitraryVariable(value, isLabelFamilyName); 563const isArbitraryVariablePosition = (value)=>getIsArbitraryVariable(value, isLabelPosition); 564const isArbitraryVariableSize = (value)=>getIsArbitraryVariable(value, isLabelSize); 565const isArbitraryVariableImage = (value)=>getIsArbitraryVariable(value, isLabelImage); 566const isArbitraryVariableShadow = (value)=>getIsArbitraryVariable(value, isLabelShadow, true); 567const isArbitraryVariableWeight = (value)=>getIsArbitraryVariable(value, isLabelWeight, true); 568// Helpers 569const getIsArbitraryValue = (value, testLabel, testValue)=>{ 570 const result = arbitraryValueRegex.exec(value); 571 if (result) { 572 if (result[1]) { 573 return testLabel(result[1]); 574 } 575 return testValue(result[2]); 576 } 577 return false; 578}; 579const getIsArbitraryVariable = function(value, testLabel) { 580 let shouldMatchNoLabel = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; 581 const result = arbitraryVariableRegex.exec(value); 582 if (result) { 583 if (result[1]) { 584 return testLabel(result[1]); 585 } 586 return shouldMatchNoLabel; 587 } 588 return false; 589}; 590// Labels 591const isLabelPosition = (label)=>label === 'position' || label === 'percentage'; 592const isLabelImage = (label)=>label === 'image' || label === 'url'; 593const isLabelSize = (label)=>label === 'length' || label === 'size' || label === 'bg-size'; 594const isLabelLength = (label)=>label === 'length'; 595const isLabelNumber = (label)=>label === 'number'; 596const isLabelFamilyName = (label)=>label === 'family-name'; 597const isLabelWeight = (label)=>label === 'number' || label === 'weight'; 598const isLabelShadow = (label)=>label === 'shadow'; 599const validators = /*#__PURE__*/ Object.defineProperty({ 600 __proto__: null, 601 isAny, 602 isAnyNonArbitrary, 603 isArbitraryFamilyName, 604 isArbitraryImage, 605 isArbitraryLength, 606 isArbitraryNumber, 607 isArbitraryPosition, 608 isArbitraryShadow, 609 isArbitrarySize, 610 isArbitraryValue, 611 isArbitraryVariable, 612 isArbitraryVariableFamilyName, 613 isArbitraryVariableImage, 614 isArbitraryVariableLength, 615 isArbitraryVariablePosition, 616 isArbitraryVariableShadow, 617 isArbitraryVariableSize, 618 isArbitraryVariableWeight, 619 isArbitraryWeight, 620 isFraction, 621 isInteger, 622 isNamedContainerQuery, 623 isNumber, 624 isPercent, 625 isTshirtSize 626}, Symbol.toStringTag, { 627 value: 'Module' 628}); 629const getDefaultConfig = ()=>{ 630 /** 631 * Theme getters for theme variable namespaces 632 * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces
vendor: 4,371 bytes, lines 633-770
633 */ /***/ const themeColor = fromTheme('color'); 634 const themeFont = fromTheme('font'); 635 const themeText = fromTheme('text'); 636 const themeFontWeight = fromTheme('font-weight'); 637 const themeTracking = fromTheme('tracking'); 638 const themeLeading = fromTheme('leading'); 639 const themeBreakpoint = fromTheme('breakpoint'); 640 const themeContainer = fromTheme('container'); 641 const themeSpacing = fromTheme('spacing'); 642 const themeRadius = fromTheme('radius'); 643 const themeShadow = fromTheme('shadow'); 644 const themeInsetShadow = fromTheme('inset-shadow'); 645 const themeTextShadow = fromTheme('text-shadow'); 646 const themeDropShadow = fromTheme('drop-shadow'); 647 const themeBlur = fromTheme('blur'); 648 const themePerspective = fromTheme('perspective'); 649 const themeAspect = fromTheme('aspect'); 650 const themeEase = fromTheme('ease'); 651 const themeAnimate = fromTheme('animate'); 652 /** 653 * Helpers to avoid repeating the same scales 654 * 655 * We use functions that create a new array every time they're called instead of static arrays. 656 * 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. 657 */ /***/ const scaleBreak = ()=>[ 658 'auto', 659 'avoid', 660 'all', 661 'avoid-page', 662 'page', 663 'left', 664 'right', 665 'column' 666 ]; 667 const scalePosition = ()=>[ 668 'center', 669 'top', 670 'bottom', 671 'left', 672 'right', 673 'top-left', 674 // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 675 'left-top', 676 'top-right', 677 // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 678 'right-top', 679 'bottom-right', 680 // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 681 'right-bottom', 682 'bottom-left', 683 // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 684 'left-bottom' 685 ]; 686 const scalePositionWithArbitrary = ()=>[ 687 ...scalePosition(), 688 isArbitraryVariable, 689 isArbitraryValue 690 ]; 691 const scaleOverflow = ()=>[ 692 'auto', 693 'hidden', 694 'clip', 695 'visible', 696 'scroll' 697 ]; 698 const scaleOverscroll = ()=>[ 699 'auto', 700 'contain', 701 'none' 702 ]; 703 const scaleUnambiguousSpacing = ()=>[ 704 isArbitraryVariable, 705 isArbitraryValue, 706 themeSpacing 707 ]; 708 const scaleInset = ()=>[ 709 isFraction, 710 'full', 711 'auto', 712 ...scaleUnambiguousSpacing() 713 ]; 714 const scaleGridTemplateColsRows = ()=>[ 715 isInteger, 716 'none', 717 'subgrid', 718 isArbitraryVariable, 719 isArbitraryValue 720 ]; 721 const scaleGridColRowStartAndEnd = ()=>[ 722 'auto', 723 { 724 span: [ 725 'full', 726 isInteger, 727 isArbitraryVariable, 728 isArbitraryValue 729 ] 730 }, 731 isInteger, 732 isArbitraryVariable, 733 isArbitraryValue 734 ]; 735 const scaleGridColRowStartOrEnd = ()=>[ 736 isInteger, 737 'auto', 738 isArbitraryVariable, 739 isArbitraryValue 740 ]; 741 const scaleGridAutoColsRows = ()=>[ 742 'auto', 743 'min', 744 'max', 745 'fr', 746 isArbitraryVariable, 747 isArbitraryValue 748 ]; 749 const scaleAlignPrimaryAxis = ()=>[ 750 'start', 751 'end', 752 'center', 753 'between', 754 'around', 755 'evenly', 756 'stretch', 757 'baseline', 758 'center-safe', 759 'end-safe' 760 ]; 761 const scaleAlignSecondaryAxis = ()=>[ 762 'start', 763 'end', 764 'center', 765 'stretch', 766 'center-safe', 767 'end-safe' 768 ]; 769 const scaleMargin = ()=>[ 770 'auto',
vendor: 7,742 bytes, lines 771-1080
771 ...scaleUnambiguousSpacing() 772 ]; 773 const scaleSizing = ()=>[ 774 isFraction, 775 'auto', 776 'full', 777 'dvw', 778 'dvh', 779 'lvw', 780 'lvh', 781 'svw', 782 'svh', 783 'min', 784 'max', 785 'fit', 786 ...scaleUnambiguousSpacing() 787 ]; 788 const scaleSizingInline = ()=>[ 789 themeContainer, 790 isFraction, 791 'screen', 792 'full', 793 'dvw', 794 'lvw', 795 'svw', 796 'min', 797 'max', 798 'fit', 799 ...scaleUnambiguousSpacing() 800 ]; 801 const scaleSizingBlock = ()=>[ 802 isFraction, 803 'screen', 804 'full', 805 'lh', 806 'dvh', 807 'lvh', 808 'svh', 809 'min', 810 'max', 811 'fit', 812 ...scaleUnambiguousSpacing() 813 ]; 814 const scaleColor = ()=>[ 815 themeColor, 816 isArbitraryVariable, 817 isArbitraryValue 818 ]; 819 const scaleBgPosition = ()=>[ 820 ...scalePosition(), 821 isArbitraryVariablePosition, 822 isArbitraryPosition, 823 { 824 position: [ 825 isArbitraryVariable, 826 isArbitraryValue 827 ] 828 } 829 ]; 830 const scaleBgRepeat = ()=>[ 831 'no-repeat', 832 { 833 repeat: [ 834 '', 835 'x', 836 'y', 837 'space', 838 'round' 839 ] 840 } 841 ]; 842 const scaleBgSize = ()=>[ 843 'auto', 844 'cover', 845 'contain', 846 isArbitraryVariableSize, 847 isArbitrarySize, 848 { 849 size: [ 850 isArbitraryVariable, 851 isArbitraryValue 852 ] 853 } 854 ]; 855 const scaleGradientStopPosition = ()=>[ 856 isPercent, 857 isArbitraryVariableLength, 858 isArbitraryLength 859 ]; 860 const scaleRadius = ()=>[ 861 // Deprecated since Tailwind CSS v4.0.0 862 '', 863 'none', 864 'full', 865 themeRadius, 866 isArbitraryVariable, 867 isArbitraryValue 868 ]; 869 const scaleBorderWidth = ()=>[ 870 '', 871 isNumber, 872 isArbitraryVariableLength, 873 isArbitraryLength 874 ]; 875 const scaleLineStyle = ()=>[ 876 'solid', 877 'dashed', 878 'dotted', 879 'double' 880 ]; 881 const scaleBlendMode = ()=>[ 882 'normal', 883 'multiply', 884 'screen', 885 'overlay', 886 'darken', 887 'lighten', 888 'color-dodge', 889 'color-burn', 890 'hard-light', 891 'soft-light', 892 'difference', 893 'exclusion', 894 'hue', 895 'saturation', 896 'color', 897 'luminosity' 898 ]; 899 const scaleMaskImagePosition = ()=>[ 900 isNumber, 901 isPercent, 902 isArbitraryVariablePosition, 903 isArbitraryPosition 904 ]; 905 const scaleBlur = ()=>[ 906 // Deprecated since Tailwind CSS v4.0.0 907 '', 908 'none', 909 themeBlur, 910 isArbitraryVariable, 911 isArbitraryValue 912 ]; 913 const scaleRotate = ()=>[ 914 'none', 915 isNumber, 916 isArbitraryVariable, 917 isArbitraryValue 918 ]; 919 const scaleScale = ()=>[ 920 'none', 921 isNumber, 922 isArbitraryVariable, 923 isArbitraryValue 924 ]; 925 const scaleSkew = ()=>[ 926 isNumber, 927 isArbitraryVariable, 928 isArbitraryValue 929 ]; 930 const scaleTranslate = ()=>[ 931 isFraction, 932 'full', 933 ...scaleUnambiguousSpacing() 934 ]; 935 return { 936 cacheSize: 500, 937 theme: { 938 animate: [ 939 'spin', 940 'ping', 941 'pulse', 942 'bounce' 943 ], 944 aspect: [ 945 'video' 946 ], 947 blur: [ 948 isTshirtSize 949 ], 950 breakpoint: [ 951 isTshirtSize 952 ], 953 color: [ 954 isAny 955 ], 956 container: [ 957 isTshirtSize 958 ], 959 'drop-shadow': [ 960 isTshirtSize 961 ], 962 ease: [ 963 'in', 964 'out', 965 'in-out' 966 ], 967 font: [ 968 isAnyNonArbitrary 969 ], 970 'font-weight': [ 971 'thin', 972 'extralight', 973 'light', 974 'normal', 975 'medium', 976 'semibold', 977 'bold', 978 'extrabold', 979 'black' 980 ], 981 'inset-shadow': [ 982 isTshirtSize 983 ], 984 leading: [ 985 'none', 986 'tight', 987 'snug', 988 'normal', 989 'relaxed', 990 'loose' 991 ], 992 perspective: [ 993 'dramatic', 994 'near', 995 'normal', 996 'midrange', 997 'distant', 998 'none' 999 ], 1000 radius: [ 1001 isTshirtSize 1002 ], 1003 shadow: [ 1004 isTshirtSize 1005 ], 1006 spacing: [ 1007 'px', 1008 isNumber 1009 ], 1010 text: [ 1011 isTshirtSize 1012 ], 1013 'text-shadow': [ 1014 isTshirtSize 1015 ], 1016 tracking: [ 1017 'tighter', 1018 'tight', 1019 'normal', 1020 'wide', 1021 'wider', 1022 'widest' 1023 ] 1024 }, 1025 classGroups: { 1026 // -------------- 1027 // --- Layout --- 1028 // -------------- 1029 /** 1030 * Aspect Ratio 1031 * @see https://tailwindcss.com/docs/aspect-ratio 1032 */ aspect: [ 1033 { 1034 aspect: [ 1035 'auto', 1036 'square', 1037 isFraction, 1038 isArbitraryValue, 1039 isArbitraryVariable, 1040 themeAspect 1041 ] 1042 } 1043 ], 1044 /** 1045 * Container 1046 * @see https://tailwindcss.com/docs/container 1047 * @deprecated since Tailwind CSS v4.0.0 1048 */ container: [ 1049 'container' 1050 ], 1051 /** 1052 * Container Type 1053 * @see https://tailwindcss.com/docs/responsive-design#container-queries 1054 */ 'container-type': [ 1055 { 1056 '@container': [ 1057 '', 1058 'normal', 1059 'size', 1060 isArbitraryVariable, 1061 isArbitraryValue 1062 ] 1063 } 1064 ], 1065 /** 1066 * Container Name 1067 * @see https://tailwindcss.com/docs/responsive-design#named-containers 1068 */ 'container-named': [ 1069 isNamedContainerQuery 1070 ], 1071 /** 1072 * Columns 1073 * @see https://tailwindcss.com/docs/columns 1074 */ columns: [ 1075 { 1076 columns: [ 1077 isNumber, 1078 'auto', 1079 isArbitraryValue, 1080 isArbitraryVariable,
vendor: 9,512 bytes, lines 1081-1415
1081 themeContainer 1082 ] 1083 } 1084 ], 1085 /** 1086 * Break After 1087 * @see https://tailwindcss.com/docs/break-after 1088 */ 'break-after': [ 1089 { 1090 'break-after': scaleBreak() 1091 } 1092 ], 1093 /** 1094 * Break Before 1095 * @see https://tailwindcss.com/docs/break-before 1096 */ 'break-before': [ 1097 { 1098 'break-before': scaleBreak() 1099 } 1100 ], 1101 /** 1102 * Break Inside 1103 * @see https://tailwindcss.com/docs/break-inside 1104 */ 'break-inside': [ 1105 { 1106 'break-inside': [ 1107 'auto', 1108 'avoid', 1109 'avoid-page', 1110 'avoid-column' 1111 ] 1112 } 1113 ], 1114 /** 1115 * Box Decoration Break 1116 * @see https://tailwindcss.com/docs/box-decoration-break 1117 */ 'box-decoration': [ 1118 { 1119 'box-decoration': [ 1120 'slice', 1121 'clone' 1122 ] 1123 } 1124 ], 1125 /** 1126 * Box Sizing 1127 * @see https://tailwindcss.com/docs/box-sizing 1128 */ box: [ 1129 { 1130 box: [ 1131 'border', 1132 'content' 1133 ] 1134 } 1135 ], 1136 /** 1137 * Display 1138 * @see https://tailwindcss.com/docs/display 1139 */ display: [ 1140 'block', 1141 'inline-block', 1142 'inline', 1143 'flex', 1144 'inline-flex', 1145 'table', 1146 'inline-table', 1147 'table-caption', 1148 'table-cell', 1149 'table-column', 1150 'table-column-group', 1151 'table-footer-group', 1152 'table-header-group', 1153 'table-row-group', 1154 'table-row', 1155 'flow-root', 1156 'grid', 1157 'inline-grid', 1158 'contents', 1159 'list-item', 1160 'hidden' 1161 ], 1162 /** 1163 * Screen Reader Only 1164 * @see https://tailwindcss.com/docs/display#screen-reader-only 1165 */ sr: [ 1166 'sr-only', 1167 'not-sr-only' 1168 ], 1169 /** 1170 * Floats 1171 * @see https://tailwindcss.com/docs/float 1172 */ float: [ 1173 { 1174 float: [ 1175 'right', 1176 'left', 1177 'none', 1178 'start', 1179 'end' 1180 ] 1181 } 1182 ], 1183 /** 1184 * Clear 1185 * @see https://tailwindcss.com/docs/clear 1186 */ clear: [ 1187 { 1188 clear: [ 1189 'left', 1190 'right', 1191 'both', 1192 'none', 1193 'start', 1194 'end' 1195 ] 1196 } 1197 ], 1198 /** 1199 * Isolation 1200 * @see https://tailwindcss.com/docs/isolation 1201 */ isolation: [ 1202 'isolate', 1203 'isolation-auto' 1204 ], 1205 /** 1206 * Object Fit 1207 * @see https://tailwindcss.com/docs/object-fit 1208 */ 'object-fit': [ 1209 { 1210 object: [ 1211 'contain', 1212 'cover', 1213 'fill', 1214 'none', 1215 'scale-down' 1216 ] 1217 } 1218 ], 1219 /** 1220 * Object Position 1221 * @see https://tailwindcss.com/docs/object-position 1222 */ 'object-position': [ 1223 { 1224 object: scalePositionWithArbitrary() 1225 } 1226 ], 1227 /** 1228 * Overflow 1229 * @see https://tailwindcss.com/docs/overflow 1230 */ overflow: [ 1231 { 1232 overflow: scaleOverflow() 1233 } 1234 ], 1235 /** 1236 * Overflow X 1237 * @see https://tailwindcss.com/docs/overflow 1238 */ 'overflow-x': [ 1239 { 1240 'overflow-x': scaleOverflow() 1241 } 1242 ], 1243 /** 1244 * Overflow Y 1245 * @see https://tailwindcss.com/docs/overflow 1246 */ 'overflow-y': [ 1247 { 1248 'overflow-y': scaleOverflow() 1249 } 1250 ], 1251 /** 1252 * Overscroll Behavior 1253 * @see https://tailwindcss.com/docs/overscroll-behavior 1254 */ overscroll: [ 1255 { 1256 overscroll: scaleOverscroll() 1257 } 1258 ], 1259 /** 1260 * Overscroll Behavior X 1261 * @see https://tailwindcss.com/docs/overscroll-behavior 1262 */ 'overscroll-x': [ 1263 { 1264 'overscroll-x': scaleOverscroll() 1265 } 1266 ], 1267 /** 1268 * Overscroll Behavior Y 1269 * @see https://tailwindcss.com/docs/overscroll-behavior 1270 */ 'overscroll-y': [ 1271 { 1272 'overscroll-y': scaleOverscroll() 1273 } 1274 ], 1275 /** 1276 * Position 1277 * @see https://tailwindcss.com/docs/position 1278 */ position: [ 1279 'static', 1280 'fixed', 1281 'absolute', 1282 'relative', 1283 'sticky' 1284 ], 1285 /** 1286 * Inset 1287 * @see https://tailwindcss.com/docs/top-right-bottom-left 1288 */ inset: [ 1289 { 1290 inset: scaleInset() 1291 } 1292 ], 1293 /** 1294 * Inset Inline 1295 * @see https://tailwindcss.com/docs/top-right-bottom-left 1296 */ 'inset-x': [ 1297 { 1298 'inset-x': scaleInset() 1299 } 1300 ], 1301 /** 1302 * Inset Block 1303 * @see https://tailwindcss.com/docs/top-right-bottom-left 1304 */ 'inset-y': [ 1305 { 1306 'inset-y': scaleInset() 1307 } 1308 ], 1309 /** 1310 * Inset Inline Start 1311 * @see https://tailwindcss.com/docs/top-right-bottom-left 1312 * @todo class group will be renamed to `inset-s` in next major release 1313 */ start: [ 1314 { 1315 'inset-s': scaleInset(), 1316 /** 1317 * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities. 1318 * @see https://github.com/tailwindlabs/tailwindcss/pull/19613 1319 */ start: scaleInset() 1320 } 1321 ], 1322 /** 1323 * Inset Inline End 1324 * @see https://tailwindcss.com/docs/top-right-bottom-left 1325 * @todo class group will be renamed to `inset-e` in next major release 1326 */ end: [ 1327 { 1328 'inset-e': scaleInset(), 1329 /** 1330 * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities. 1331 * @see https://github.com/tailwindlabs/tailwindcss/pull/19613 1332 */ end: scaleInset() 1333 } 1334 ], 1335 /** 1336 * Inset Block Start 1337 * @see https://tailwindcss.com/docs/top-right-bottom-left 1338 */ 'inset-bs': [ 1339 { 1340 'inset-bs': scaleInset() 1341 } 1342 ], 1343 /** 1344 * Inset Block End 1345 * @see https://tailwindcss.com/docs/top-right-bottom-left 1346 */ 'inset-be': [ 1347 { 1348 'inset-be': scaleInset() 1349 } 1350 ], 1351 /** 1352 * Top 1353 * @see https://tailwindcss.com/docs/top-right-bottom-left 1354 */ top: [ 1355 { 1356 top: scaleInset() 1357 } 1358 ], 1359 /** 1360 * Right 1361 * @see https://tailwindcss.com/docs/top-right-bottom-left 1362 */ right: [ 1363 { 1364 right: scaleInset() 1365 } 1366 ], 1367 /** 1368 * Bottom 1369 * @see https://tailwindcss.com/docs/top-right-bottom-left 1370 */ bottom: [ 1371 { 1372 bottom: scaleInset() 1373 } 1374 ], 1375 /** 1376 * Left 1377 * @see https://tailwindcss.com/docs/top-right-bottom-left 1378 */ left: [ 1379 { 1380 left: scaleInset() 1381 } 1382 ], 1383 /** 1384 * Visibility 1385 * @see https://tailwindcss.com/docs/visibility 1386 */ visibility: [ 1387 'visible', 1388 'invisible', 1389 'collapse' 1390 ], 1391 /** 1392 * Z-Index 1393 * @see https://tailwindcss.com/docs/z-index 1394 */ z: [ 1395 { 1396 z: [ 1397 isInteger, 1398 'auto', 1399 isArbitraryVariable, 1400 isArbitraryValue 1401 ] 1402 } 1403 ], 1404 // ------------------------ 1405 // --- Flexbox and Grid --- 1406 // ------------------------ 1407 /** 1408 * Flex Basis 1409 * @see https://tailwindcss.com/docs/flex-basis 1410 */ basis: [ 1411 { 1412 basis: [ 1413 isFraction, 1414 'full', 1415 'auto',
vendor: 9,396 bytes, lines 1416-1748
1416 themeContainer, 1417 ...scaleUnambiguousSpacing() 1418 ] 1419 } 1420 ], 1421 /** 1422 * Flex Direction 1423 * @see https://tailwindcss.com/docs/flex-direction 1424 */ 'flex-direction': [ 1425 { 1426 flex: [ 1427 'row', 1428 'row-reverse', 1429 'col', 1430 'col-reverse' 1431 ] 1432 } 1433 ], 1434 /** 1435 * Flex Wrap 1436 * @see https://tailwindcss.com/docs/flex-wrap 1437 */ 'flex-wrap': [ 1438 { 1439 flex: [ 1440 'nowrap', 1441 'wrap', 1442 'wrap-reverse' 1443 ] 1444 } 1445 ], 1446 /** 1447 * Flex 1448 * @see https://tailwindcss.com/docs/flex 1449 */ flex: [ 1450 { 1451 flex: [ 1452 isNumber, 1453 isFraction, 1454 'auto', 1455 'initial', 1456 'none', 1457 isArbitraryValue 1458 ] 1459 } 1460 ], 1461 /** 1462 * Flex Grow 1463 * @see https://tailwindcss.com/docs/flex-grow 1464 */ grow: [ 1465 { 1466 grow: [ 1467 '', 1468 isNumber, 1469 isArbitraryVariable, 1470 isArbitraryValue 1471 ] 1472 } 1473 ], 1474 /** 1475 * Flex Shrink 1476 * @see https://tailwindcss.com/docs/flex-shrink 1477 */ shrink: [ 1478 { 1479 shrink: [ 1480 '', 1481 isNumber, 1482 isArbitraryVariable, 1483 isArbitraryValue 1484 ] 1485 } 1486 ], 1487 /** 1488 * Order 1489 * @see https://tailwindcss.com/docs/order 1490 */ order: [ 1491 { 1492 order: [ 1493 isInteger, 1494 'first', 1495 'last', 1496 'none', 1497 isArbitraryVariable, 1498 isArbitraryValue 1499 ] 1500 } 1501 ], 1502 /** 1503 * Grid Template Columns 1504 * @see https://tailwindcss.com/docs/grid-template-columns 1505 */ 'grid-cols': [ 1506 { 1507 'grid-cols': scaleGridTemplateColsRows() 1508 } 1509 ], 1510 /** 1511 * Grid Column Start / End 1512 * @see https://tailwindcss.com/docs/grid-column 1513 */ 'col-start-end': [ 1514 { 1515 col: scaleGridColRowStartAndEnd() 1516 } 1517 ], 1518 /** 1519 * Grid Column Start 1520 * @see https://tailwindcss.com/docs/grid-column 1521 */ 'col-start': [ 1522 { 1523 'col-start': scaleGridColRowStartOrEnd() 1524 } 1525 ], 1526 /** 1527 * Grid Column End 1528 * @see https://tailwindcss.com/docs/grid-column 1529 */ 'col-end': [ 1530 { 1531 'col-end': scaleGridColRowStartOrEnd() 1532 } 1533 ], 1534 /** 1535 * Grid Template Rows 1536 * @see https://tailwindcss.com/docs/grid-template-rows 1537 */ 'grid-rows': [ 1538 { 1539 'grid-rows': scaleGridTemplateColsRows() 1540 } 1541 ], 1542 /** 1543 * Grid Row Start / End 1544 * @see https://tailwindcss.com/docs/grid-row 1545 */ 'row-start-end': [ 1546 { 1547 row: scaleGridColRowStartAndEnd() 1548 } 1549 ], 1550 /** 1551 * Grid Row Start 1552 * @see https://tailwindcss.com/docs/grid-row 1553 */ 'row-start': [ 1554 { 1555 'row-start': scaleGridColRowStartOrEnd() 1556 } 1557 ], 1558 /** 1559 * Grid Row End 1560 * @see https://tailwindcss.com/docs/grid-row 1561 */ 'row-end': [ 1562 { 1563 'row-end': scaleGridColRowStartOrEnd() 1564 } 1565 ], 1566 /** 1567 * Grid Auto Flow 1568 * @see https://tailwindcss.com/docs/grid-auto-flow 1569 */ 'grid-flow': [ 1570 { 1571 'grid-flow': [ 1572 'row', 1573 'col', 1574 'dense', 1575 'row-dense', 1576 'col-dense' 1577 ] 1578 } 1579 ], 1580 /** 1581 * Grid Auto Columns 1582 * @see https://tailwindcss.com/docs/grid-auto-columns 1583 */ 'auto-cols': [ 1584 { 1585 'auto-cols': scaleGridAutoColsRows() 1586 } 1587 ], 1588 /** 1589 * Grid Auto Rows 1590 * @see https://tailwindcss.com/docs/grid-auto-rows 1591 */ 'auto-rows': [ 1592 { 1593 'auto-rows': scaleGridAutoColsRows() 1594 } 1595 ], 1596 /** 1597 * Gap 1598 * @see https://tailwindcss.com/docs/gap 1599 */ gap: [ 1600 { 1601 gap: scaleUnambiguousSpacing() 1602 } 1603 ], 1604 /** 1605 * Gap X 1606 * @see https://tailwindcss.com/docs/gap 1607 */ 'gap-x': [ 1608 { 1609 'gap-x': scaleUnambiguousSpacing() 1610 } 1611 ], 1612 /** 1613 * Gap Y 1614 * @see https://tailwindcss.com/docs/gap 1615 */ 'gap-y': [ 1616 { 1617 'gap-y': scaleUnambiguousSpacing() 1618 } 1619 ], 1620 /** 1621 * Justify Content 1622 * @see https://tailwindcss.com/docs/justify-content 1623 */ 'justify-content': [ 1624 { 1625 justify: [ 1626 ...scaleAlignPrimaryAxis(), 1627 'normal' 1628 ] 1629 } 1630 ], 1631 /** 1632 * Justify Items 1633 * @see https://tailwindcss.com/docs/justify-items 1634 */ 'justify-items': [ 1635 { 1636 'justify-items': [ 1637 ...scaleAlignSecondaryAxis(), 1638 'normal' 1639 ] 1640 } 1641 ], 1642 /** 1643 * Justify Self 1644 * @see https://tailwindcss.com/docs/justify-self 1645 */ 'justify-self': [ 1646 { 1647 'justify-self': [ 1648 'auto', 1649 ...scaleAlignSecondaryAxis() 1650 ] 1651 } 1652 ], 1653 /** 1654 * Align Content 1655 * @see https://tailwindcss.com/docs/align-content 1656 */ 'align-content': [ 1657 { 1658 content: [ 1659 'normal', 1660 ...scaleAlignPrimaryAxis() 1661 ] 1662 } 1663 ], 1664 /** 1665 * Align Items 1666 * @see https://tailwindcss.com/docs/align-items 1667 */ 'align-items': [ 1668 { 1669 items: [ 1670 ...scaleAlignSecondaryAxis(), 1671 { 1672 baseline: [ 1673 '', 1674 'last' 1675 ] 1676 } 1677 ] 1678 } 1679 ], 1680 /** 1681 * Align Self 1682 * @see https://tailwindcss.com/docs/align-self 1683 */ 'align-self': [ 1684 { 1685 self: [ 1686 'auto', 1687 ...scaleAlignSecondaryAxis(), 1688 { 1689 baseline: [ 1690 '', 1691 'last' 1692 ] 1693 } 1694 ] 1695 } 1696 ], 1697 /** 1698 * Place Content 1699 * @see https://tailwindcss.com/docs/place-content 1700 */ 'place-content': [ 1701 { 1702 'place-content': scaleAlignPrimaryAxis() 1703 } 1704 ], 1705 /** 1706 * Place Items 1707 * @see https://tailwindcss.com/docs/place-items 1708 */ 'place-items': [ 1709 { 1710 'place-items': [ 1711 ...scaleAlignSecondaryAxis(), 1712 'baseline' 1713 ] 1714 } 1715 ], 1716 /** 1717 * Place Self 1718 * @see https://tailwindcss.com/docs/place-self 1719 */ 'place-self': [ 1720 { 1721 'place-self': [ 1722 'auto', 1723 ...scaleAlignSecondaryAxis() 1724 ] 1725 } 1726 ], 1727 // Spacing 1728 /** 1729 * Padding 1730 * @see https://tailwindcss.com/docs/padding 1731 */ p: [ 1732 { 1733 p: scaleUnambiguousSpacing() 1734 } 1735 ], 1736 /** 1737 * Padding Inline 1738 * @see https://tailwindcss.com/docs/padding 1739 */ px: [ 1740 { 1741 px: scaleUnambiguousSpacing() 1742 } 1743 ], 1744 /** 1745 * Padding Block 1746 * @see https://tailwindcss.com/docs/padding 1747 */ py: [ 1748 {
1749 py: scaleUnambiguousSpacing() 1750 } 1751 ], 1752 /** 1753 * Padding Inline Start 1754 * @see https://tailwindcss.com/docs/padding 1755 */ ps: [ 1756 { 1757 ps: scaleUnambiguousSpacing() 1758 } 1759 ], 1760 /** 1761 * Padding Inline End 1762 * @see https://tailwindcss.com/docs/padding 1763 */ pe: [ 1764 { 1765 pe: scaleUnambiguousSpacing() 1766 } 1767 ], 1768 /** 1769 * Padding Block Start 1770 * @see https://tailwindcss.com/docs/padding 1771 */ pbs: [ 1772 { 1773 pbs: scaleUnambiguousSpacing() 1774 } 1775 ], 1776 /** 1777 * Padding Block End 1778 * @see https://tailwindcss.com/docs/padding 1779 */ pbe: [ 1780 { 1781 pbe: scaleUnambiguousSpacing() 1782 } 1783 ], 1784 /** 1785 * Padding Top 1786 * @see https://tailwindcss.com/docs/padding 1787 */ pt: [ 1788 { 1789 pt: scaleUnambiguousSpacing() 1790 } 1791 ], 1792 /** 1793 * Padding Right 1794 * @see https://tailwindcss.com/docs/padding 1795 */ pr: [ 1796 { 1797 pr: scaleUnambiguousSpacing() 1798 } 1799 ], 1800 /** 1801 * Padding Bottom 1802 * @see https://tailwindcss.com/docs/padding 1803 */ pb: [ 1804 { 1805 pb: scaleUnambiguousSpacing() 1806 } 1807 ], 1808 /** 1809 * Padding Left 1810 * @see https://tailwindcss.com/docs/padding 1811 */ pl: [ 1812 { 1813 pl: scaleUnambiguousSpacing() 1814 } 1815 ], 1816 /** 1817 * Margin 1818 * @see https://tailwindcss.com/docs/margin 1819 */ m: [ 1820 { 1821 m: scaleMargin() 1822 } 1823 ], 1824 /** 1825 * Margin Inline 1826 * @see https://tailwindcss.com/docs/margin 1827 */ mx: [ 1828 { 1829 mx: scaleMargin() 1830 } 1831 ], 1832 /** 1833 * Margin Block 1834 * @see https://tailwindcss.com/docs/margin 1835 */ my: [ 1836 { 1837 my: scaleMargin() 1838 } 1839 ], 1840 /** 1841 * Margin Inline Start 1842 * @see https://tailwindcss.com/docs/margin 1843 */ ms: [ 1844 { 1845 ms: scaleMargin() 1846 } 1847 ], 1848 /** 1849 * Margin Inline End 1850 * @see https://tailwindcss.com/docs/margin 1851 */ me: [ 1852 { 1853 me: scaleMargin() 1854 } 1855 ], 1856 /** 1857 * Margin Block Start 1858 * @see https://tailwindcss.com/docs/margin 1859 */ mbs: [ 1860 { 1861 mbs: scaleMargin() 1862 } 1863 ], 1864 /** 1865 * Margin Block End 1866 * @see https://tailwindcss.com/docs/margin 1867 */ mbe: [ 1868 { 1869 mbe: scaleMargin() 1870 } 1871 ], 1872 /** 1873 * Margin Top 1874 * @see https://tailwindcss.com/docs/margin 1875 */ mt: [ 1876 { 1877 mt: scaleMargin() 1878 } 1879 ], 1880 /** 1881 * Margin Right 1882 * @see https://tailwindcss.com/docs/margin 1883 */ mr: [ 1884 { 1885 mr: scaleMargin() 1886 } 1887 ], 1888 /** 1889 * Margin Bottom 1890 * @see https://tailwindcss.com/docs/margin 1891 */ mb: [ 1892 { 1893 mb: scaleMargin() 1894 } 1895 ], 1896 /** 1897 * Margin Left 1898 * @see https://tailwindcss.com/docs/margin 1899 */ ml: [ 1900 { 1901 ml: scaleMargin() 1902 } 1903 ], 1904 /** 1905 * Space Between X 1906 * @see https://tailwindcss.com/docs/margin#adding-space-between-children 1907 */ 'space-x': [ 1908 {
vendor: 4,441 bytes, lines 1909-2048
1909 'space-x': scaleUnambiguousSpacing() 1910 } 1911 ], 1912 /** 1913 * Space Between X Reverse 1914 * @see https://tailwindcss.com/docs/margin#adding-space-between-children 1915 */ 'space-x-reverse': [ 1916 'space-x-reverse' 1917 ], 1918 /** 1919 * Space Between Y 1920 * @see https://tailwindcss.com/docs/margin#adding-space-between-children 1921 */ 'space-y': [ 1922 { 1923 'space-y': scaleUnambiguousSpacing() 1924 } 1925 ], 1926 /** 1927 * Space Between Y Reverse 1928 * @see https://tailwindcss.com/docs/margin#adding-space-between-children 1929 */ 'space-y-reverse': [ 1930 'space-y-reverse' 1931 ], 1932 // -------------- 1933 // --- Sizing --- 1934 // -------------- 1935 /** 1936 * Size 1937 * @see https://tailwindcss.com/docs/width#setting-both-width-and-height 1938 */ size: [ 1939 { 1940 size: scaleSizing() 1941 } 1942 ], 1943 /** 1944 * Inline Size 1945 * @see https://tailwindcss.com/docs/inline-size 1946 */ 'inline-size': [ 1947 { 1948 inline: [ 1949 'auto', 1950 ...scaleSizingInline() 1951 ] 1952 } 1953 ], 1954 /** 1955 * Min-Inline Size 1956 * @see https://tailwindcss.com/docs/min-inline-size 1957 */ 'min-inline-size': [ 1958 { 1959 'min-inline': [ 1960 'auto', 1961 ...scaleSizingInline() 1962 ] 1963 } 1964 ], 1965 /** 1966 * Max-Inline Size 1967 * @see https://tailwindcss.com/docs/max-inline-size 1968 */ 'max-inline-size': [ 1969 { 1970 'max-inline': [ 1971 'none', 1972 ...scaleSizingInline() 1973 ] 1974 } 1975 ], 1976 /** 1977 * Block Size 1978 * @see https://tailwindcss.com/docs/block-size 1979 */ 'block-size': [ 1980 { 1981 block: [ 1982 'auto', 1983 ...scaleSizingBlock() 1984 ] 1985 } 1986 ], 1987 /** 1988 * Min-Block Size 1989 * @see https://tailwindcss.com/docs/min-block-size 1990 */ 'min-block-size': [ 1991 { 1992 'min-block': [ 1993 'auto', 1994 ...scaleSizingBlock() 1995 ] 1996 } 1997 ], 1998 /** 1999 * Max-Block Size 2000 * @see https://tailwindcss.com/docs/max-block-size 2001 */ 'max-block-size': [ 2002 { 2003 'max-block': [ 2004 'none', 2005 ...scaleSizingBlock() 2006 ] 2007 } 2008 ], 2009 /** 2010 * Width 2011 * @see https://tailwindcss.com/docs/width 2012 */ w: [ 2013 { 2014 w: [ 2015 themeContainer, 2016 'screen', 2017 ...scaleSizing() 2018 ] 2019 } 2020 ], 2021 /** 2022 * Min-Width 2023 * @see https://tailwindcss.com/docs/min-width 2024 */ 'min-w': [ 2025 { 2026 'min-w': [ 2027 themeContainer, 2028 'screen', 2029 /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ 'none', 2030 ...scaleSizing() 2031 ] 2032 } 2033 ], 2034 /** 2035 * Max-Width 2036 * @see https://tailwindcss.com/docs/max-width 2037 */ 'max-w': [ 2038 { 2039 'max-w': [ 2040 themeContainer, 2041 'screen', 2042 'none', 2043 /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ 'prose', 2044 /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ { 2045 screen: [ 2046 themeBreakpoint 2047 ] 2048 },
vendor: 5,950 bytes, lines 2049-2246
2049 ...scaleSizing() 2050 ] 2051 } 2052 ], 2053 /** 2054 * Height 2055 * @see https://tailwindcss.com/docs/height 2056 */ h: [ 2057 { 2058 h: [ 2059 'screen', 2060 'lh', 2061 ...scaleSizing() 2062 ] 2063 } 2064 ], 2065 /** 2066 * Min-Height 2067 * @see https://tailwindcss.com/docs/min-height 2068 */ 'min-h': [ 2069 { 2070 'min-h': [ 2071 'screen', 2072 'lh', 2073 'none', 2074 ...scaleSizing() 2075 ] 2076 } 2077 ], 2078 /** 2079 * Max-Height 2080 * @see https://tailwindcss.com/docs/max-height 2081 */ 'max-h': [ 2082 { 2083 'max-h': [ 2084 'screen', 2085 'lh', 2086 'none', 2087 ...scaleSizing() 2088 ] 2089 } 2090 ], 2091 // ------------------ 2092 // --- Typography --- 2093 // ------------------ 2094 /** 2095 * Font Size 2096 * @see https://tailwindcss.com/docs/font-size 2097 */ 'font-size': [ 2098 { 2099 text: [ 2100 'base', 2101 themeText, 2102 isArbitraryVariableLength, 2103 isArbitraryLength 2104 ] 2105 } 2106 ], 2107 /** 2108 * Font Smoothing 2109 * @see https://tailwindcss.com/docs/font-smoothing 2110 */ 'font-smoothing': [ 2111 'antialiased', 2112 'subpixel-antialiased' 2113 ], 2114 /** 2115 * Font Style 2116 * @see https://tailwindcss.com/docs/font-style 2117 */ 'font-style': [ 2118 'italic', 2119 'not-italic' 2120 ], 2121 /** 2122 * Font Weight 2123 * @see https://tailwindcss.com/docs/font-weight 2124 */ 'font-weight': [ 2125 { 2126 font: [ 2127 themeFontWeight, 2128 isArbitraryVariableWeight, 2129 isArbitraryWeight 2130 ] 2131 } 2132 ], 2133 /** 2134 * Font Stretch 2135 * @see https://tailwindcss.com/docs/font-stretch 2136 */ 'font-stretch': [ 2137 { 2138 'font-stretch': [ 2139 'ultra-condensed', 2140 'extra-condensed', 2141 'condensed', 2142 'semi-condensed', 2143 'normal', 2144 'semi-expanded', 2145 'expanded', 2146 'extra-expanded', 2147 'ultra-expanded', 2148 isPercent, 2149 isArbitraryValue 2150 ] 2151 } 2152 ], 2153 /** 2154 * Font Family 2155 * @see https://tailwindcss.com/docs/font-family 2156 */ 'font-family': [ 2157 { 2158 font: [ 2159 isArbitraryVariableFamilyName, 2160 isArbitraryFamilyName, 2161 themeFont 2162 ] 2163 } 2164 ], 2165 /** 2166 * Font Feature Settings 2167 * @see https://tailwindcss.com/docs/font-feature-settings 2168 */ 'font-features': [ 2169 { 2170 'font-features': [ 2171 isArbitraryValue 2172 ] 2173 } 2174 ], 2175 /** 2176 * Font Variant Numeric 2177 * @see https://tailwindcss.com/docs/font-variant-numeric 2178 */ 'fvn-normal': [ 2179 'normal-nums' 2180 ], 2181 /** 2182 * Font Variant Numeric 2183 * @see https://tailwindcss.com/docs/font-variant-numeric 2184 */ 'fvn-ordinal': [ 2185 'ordinal' 2186 ], 2187 /** 2188 * Font Variant Numeric 2189 * @see https://tailwindcss.com/docs/font-variant-numeric 2190 */ 'fvn-slashed-zero': [ 2191 'slashed-zero' 2192 ], 2193 /** 2194 * Font Variant Numeric 2195 * @see https://tailwindcss.com/docs/font-variant-numeric 2196 */ 'fvn-figure': [ 2197 'lining-nums', 2198 'oldstyle-nums' 2199 ], 2200 /** 2201 * Font Variant Numeric 2202 * @see https://tailwindcss.com/docs/font-variant-numeric 2203 */ 'fvn-spacing': [ 2204 'proportional-nums', 2205 'tabular-nums' 2206 ], 2207 /** 2208 * Font Variant Numeric 2209 * @see https://tailwindcss.com/docs/font-variant-numeric 2210 */ 'fvn-fraction': [ 2211 'diagonal-fractions', 2212 'stacked-fractions' 2213 ], 2214 /** 2215 * Letter Spacing 2216 * @see https://tailwindcss.com/docs/letter-spacing 2217 */ tracking: [ 2218 { 2219 tracking: [ 2220 themeTracking, 2221 isArbitraryVariable, 2222 isArbitraryValue 2223 ] 2224 } 2225 ], 2226 /** 2227 * Line Clamp 2228 * @see https://tailwindcss.com/docs/line-clamp 2229 */ 'line-clamp': [ 2230 { 2231 'line-clamp': [ 2232 isNumber, 2233 'none', 2234 isArbitraryVariable, 2235 isArbitraryNumber 2236 ] 2237 } 2238 ], 2239 /** 2240 * Line Height 2241 * @see https://tailwindcss.com/docs/line-height 2242 */ leading: [ 2243 { 2244 leading: [ 2245 'none', 2246 /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ themeLeading,
vendor: 58,013 bytes, lines 2247-4233
2247 ...scaleUnambiguousSpacing() 2248 ] 2249 } 2250 ], 2251 /** 2252 * List Style Image 2253 * @see https://tailwindcss.com/docs/list-style-image 2254 */ 'list-image': [ 2255 { 2256 'list-image': [ 2257 'none', 2258 isArbitraryVariable, 2259 isArbitraryValue 2260 ] 2261 } 2262 ], 2263 /** 2264 * List Style Position 2265 * @see https://tailwindcss.com/docs/list-style-position 2266 */ 'list-style-position': [ 2267 { 2268 list: [ 2269 'inside', 2270 'outside' 2271 ] 2272 } 2273 ], 2274 /** 2275 * List Style Type 2276 * @see https://tailwindcss.com/docs/list-style-type 2277 */ 'list-style-type': [ 2278 { 2279 list: [ 2280 'disc', 2281 'decimal', 2282 'none', 2283 isArbitraryVariable, 2284 isArbitraryValue 2285 ] 2286 } 2287 ], 2288 /** 2289 * Text Alignment 2290 * @see https://tailwindcss.com/docs/text-align 2291 */ 'text-alignment': [ 2292 { 2293 text: [ 2294 'left', 2295 'center', 2296 'right', 2297 'justify', 2298 'start', 2299 'end' 2300 ] 2301 } 2302 ], 2303 /** 2304 * Placeholder Color 2305 * @deprecated since Tailwind CSS v3.0.0 2306 * @see https://v3.tailwindcss.com/docs/placeholder-color 2307 */ 'placeholder-color': [ 2308 { 2309 placeholder: scaleColor() 2310 } 2311 ], 2312 /** 2313 * Text Color 2314 * @see https://tailwindcss.com/docs/text-color 2315 */ 'text-color': [ 2316 { 2317 text: scaleColor() 2318 } 2319 ], 2320 /** 2321 * Text Decoration 2322 * @see https://tailwindcss.com/docs/text-decoration 2323 */ 'text-decoration': [ 2324 'underline', 2325 'overline', 2326 'line-through', 2327 'no-underline' 2328 ], 2329 /** 2330 * Text Decoration Style 2331 * @see https://tailwindcss.com/docs/text-decoration-style 2332 */ 'text-decoration-style': [ 2333 { 2334 decoration: [ 2335 ...scaleLineStyle(), 2336 'wavy' 2337 ] 2338 } 2339 ], 2340 /** 2341 * Text Decoration Thickness 2342 * @see https://tailwindcss.com/docs/text-decoration-thickness 2343 */ 'text-decoration-thickness': [ 2344 { 2345 decoration: [ 2346 isNumber, 2347 'from-font', 2348 'auto', 2349 isArbitraryVariable, 2350 isArbitraryLength 2351 ] 2352 } 2353 ], 2354 /** 2355 * Text Decoration Color 2356 * @see https://tailwindcss.com/docs/text-decoration-color 2357 */ 'text-decoration-color': [ 2358 { 2359 decoration: scaleColor() 2360 } 2361 ], 2362 /** 2363 * Text Underline Offset 2364 * @see https://tailwindcss.com/docs/text-underline-offset 2365 */ 'underline-offset': [ 2366 { 2367 'underline-offset': [ 2368 isNumber, 2369 'auto', 2370 isArbitraryVariable, 2371 isArbitraryValue 2372 ] 2373 } 2374 ], 2375 /** 2376 * Text Transform 2377 * @see https://tailwindcss.com/docs/text-transform 2378 */ 'text-transform': [ 2379 'uppercase', 2380 'lowercase', 2381 'capitalize', 2382 'normal-case' 2383 ], 2384 /** 2385 * Text Overflow 2386 * @see https://tailwindcss.com/docs/text-overflow 2387 */ 'text-overflow': [ 2388 'truncate', 2389 'text-ellipsis', 2390 'text-clip' 2391 ], 2392 /** 2393 * Text Wrap 2394 * @see https://tailwindcss.com/docs/text-wrap 2395 */ 'text-wrap': [ 2396 { 2397 text: [ 2398 'wrap', 2399 'nowrap', 2400 'balance', 2401 'pretty' 2402 ] 2403 } 2404 ], 2405 /** 2406 * Text Indent 2407 * @see https://tailwindcss.com/docs/text-indent 2408 */ indent: [ 2409 { 2410 indent: scaleUnambiguousSpacing() 2411 } 2412 ], 2413 /** 2414 * Tab Size 2415 * @see https://tailwindcss.com/docs/tab-size 2416 */ 'tab-size': [ 2417 { 2418 tab: [ 2419 isInteger, 2420 isArbitraryVariable, 2421 isArbitraryValue 2422 ] 2423 } 2424 ], 2425 /** 2426 * Vertical Alignment 2427 * @see https://tailwindcss.com/docs/vertical-align 2428 */ 'vertical-align': [ 2429 { 2430 align: [ 2431 'baseline', 2432 'top', 2433 'middle', 2434 'bottom', 2435 'text-top', 2436 'text-bottom', 2437 'sub', 2438 'super', 2439 isArbitraryVariable, 2440 isArbitraryValue 2441 ] 2442 } 2443 ], 2444 /** 2445 * Whitespace 2446 * @see https://tailwindcss.com/docs/whitespace 2447 */ whitespace: [ 2448 { 2449 whitespace: [ 2450 'normal', 2451 'nowrap', 2452 'pre', 2453 'pre-line', 2454 'pre-wrap', 2455 'break-spaces' 2456 ] 2457 } 2458 ], 2459 /** 2460 * Word Break 2461 * @see https://tailwindcss.com/docs/word-break 2462 */ break: [ 2463 { 2464 break: [ 2465 'normal', 2466 'words', 2467 'all', 2468 'keep' 2469 ] 2470 } 2471 ], 2472 /** 2473 * Overflow Wrap 2474 * @see https://tailwindcss.com/docs/overflow-wrap 2475 */ wrap: [ 2476 { 2477 wrap: [ 2478 'break-word', 2479 'anywhere', 2480 'normal' 2481 ] 2482 } 2483 ], 2484 /** 2485 * Hyphens 2486 * @see https://tailwindcss.com/docs/hyphens 2487 */ hyphens: [ 2488 { 2489 hyphens: [ 2490 'none', 2491 'manual', 2492 'auto' 2493 ] 2494 } 2495 ], 2496 /** 2497 * Content 2498 * @see https://tailwindcss.com/docs/content 2499 */ content: [ 2500 { 2501 content: [ 2502 'none', 2503 isArbitraryVariable, 2504 isArbitraryValue 2505 ] 2506 } 2507 ], 2508 // ------------------- 2509 // --- Backgrounds --- 2510 // ------------------- 2511 /** 2512 * Background Attachment 2513 * @see https://tailwindcss.com/docs/background-attachment 2514 */ 'bg-attachment': [ 2515 { 2516 bg: [ 2517 'fixed', 2518 'local', 2519 'scroll' 2520 ] 2521 } 2522 ], 2523 /** 2524 * Background Clip 2525 * @see https://tailwindcss.com/docs/background-clip 2526 */ 'bg-clip': [ 2527 { 2528 'bg-clip': [ 2529 'border', 2530 'padding', 2531 'content', 2532 'text' 2533 ] 2534 } 2535 ], 2536 /** 2537 * Background Origin 2538 * @see https://tailwindcss.com/docs/background-origin 2539 */ 'bg-origin': [ 2540 { 2541 'bg-origin': [ 2542 'border', 2543 'padding', 2544 'content' 2545 ] 2546 } 2547 ], 2548 /** 2549 * Background Position 2550 * @see https://tailwindcss.com/docs/background-position 2551 */ 'bg-position': [ 2552 { 2553 bg: scaleBgPosition() 2554 } 2555 ], 2556 /** 2557 * Background Repeat 2558 * @see https://tailwindcss.com/docs/background-repeat 2559 */ 'bg-repeat': [ 2560 { 2561 bg: scaleBgRepeat() 2562 } 2563 ], 2564 /** 2565 * Background Size 2566 * @see https://tailwindcss.com/docs/background-size 2567 */ 'bg-size': [ 2568 { 2569 bg: scaleBgSize() 2570 } 2571 ], 2572 /** 2573 * Background Image 2574 * @see https://tailwindcss.com/docs/background-image 2575 */ 'bg-image': [ 2576 { 2577 bg: [ 2578 'none', 2579 { 2580 linear: [ 2581 { 2582 to: [ 2583 't', 2584 'tr', 2585 'r', 2586 'br', 2587 'b', 2588 'bl', 2589 'l', 2590 'tl' 2591 ] 2592 }, 2593 isInteger, 2594 isArbitraryVariable, 2595 isArbitraryValue 2596 ], 2597 radial: [ 2598 '', 2599 isArbitraryVariable, 2600 isArbitraryValue 2601 ], 2602 conic: [ 2603 '', 2604 isInteger, 2605 isArbitraryVariable, 2606 isArbitraryValue 2607 ] 2608 }, 2609 isArbitraryVariableImage, 2610 isArbitraryImage 2611 ] 2612 } 2613 ], 2614 /** 2615 * Background Color 2616 * @see https://tailwindcss.com/docs/background-color 2617 */ 'bg-color': [ 2618 { 2619 bg: scaleColor() 2620 } 2621 ], 2622 /** 2623 * Gradient Color Stops From Position 2624 * @see https://tailwindcss.com/docs/gradient-color-stops 2625 */ 'gradient-from-pos': [ 2626 { 2627 from: scaleGradientStopPosition() 2628 } 2629 ], 2630 /** 2631 * Gradient Color Stops Via Position 2632 * @see https://tailwindcss.com/docs/gradient-color-stops 2633 */ 'gradient-via-pos': [ 2634 { 2635 via: scaleGradientStopPosition() 2636 } 2637 ], 2638 /** 2639 * Gradient Color Stops To Position 2640 * @see https://tailwindcss.com/docs/gradient-color-stops 2641 */ 'gradient-to-pos': [ 2642 { 2643 to: scaleGradientStopPosition() 2644 } 2645 ], 2646 /** 2647 * Gradient Color Stops From 2648 * @see https://tailwindcss.com/docs/gradient-color-stops 2649 */ 'gradient-from': [ 2650 { 2651 from: scaleColor() 2652 } 2653 ], 2654 /** 2655 * Gradient Color Stops Via 2656 * @see https://tailwindcss.com/docs/gradient-color-stops 2657 */ 'gradient-via': [ 2658 { 2659 via: scaleColor() 2660 } 2661 ], 2662 /** 2663 * Gradient Color Stops To 2664 * @see https://tailwindcss.com/docs/gradient-color-stops 2665 */ 'gradient-to': [ 2666 { 2667 to: scaleColor() 2668 } 2669 ], 2670 // --------------- 2671 // --- Borders --- 2672 // --------------- 2673 /** 2674 * Border Radius 2675 * @see https://tailwindcss.com/docs/border-radius 2676 */ rounded: [ 2677 { 2678 rounded: scaleRadius() 2679 } 2680 ], 2681 /** 2682 * Border Radius Start 2683 * @see https://tailwindcss.com/docs/border-radius 2684 */ 'rounded-s': [ 2685 { 2686 'rounded-s': scaleRadius() 2687 } 2688 ], 2689 /** 2690 * Border Radius End 2691 * @see https://tailwindcss.com/docs/border-radius 2692 */ 'rounded-e': [ 2693 { 2694 'rounded-e': scaleRadius() 2695 } 2696 ], 2697 /** 2698 * Border Radius Top 2699 * @see https://tailwindcss.com/docs/border-radius 2700 */ 'rounded-t': [ 2701 { 2702 'rounded-t': scaleRadius() 2703 } 2704 ], 2705 /** 2706 * Border Radius Right 2707 * @see https://tailwindcss.com/docs/border-radius 2708 */ 'rounded-r': [ 2709 { 2710 'rounded-r': scaleRadius() 2711 } 2712 ], 2713 /** 2714 * Border Radius Bottom 2715 * @see https://tailwindcss.com/docs/border-radius 2716 */ 'rounded-b': [ 2717 { 2718 'rounded-b': scaleRadius() 2719 } 2720 ], 2721 /** 2722 * Border Radius Left 2723 * @see https://tailwindcss.com/docs/border-radius 2724 */ 'rounded-l': [ 2725 { 2726 'rounded-l': scaleRadius() 2727 } 2728 ], 2729 /** 2730 * Border Radius Start Start 2731 * @see https://tailwindcss.com/docs/border-radius 2732 */ 'rounded-ss': [ 2733 { 2734 'rounded-ss': scaleRadius() 2735 } 2736 ], 2737 /** 2738 * Border Radius Start End 2739 * @see https://tailwindcss.com/docs/border-radius 2740 */ 'rounded-se': [ 2741 { 2742 'rounded-se': scaleRadius() 2743 } 2744 ], 2745 /** 2746 * Border Radius End End 2747 * @see https://tailwindcss.com/docs/border-radius 2748 */ 'rounded-ee': [ 2749 { 2750 'rounded-ee': scaleRadius() 2751 } 2752 ], 2753 /** 2754 * Border Radius End Start 2755 * @see https://tailwindcss.com/docs/border-radius 2756 */ 'rounded-es': [ 2757 { 2758 'rounded-es': scaleRadius() 2759 } 2760 ], 2761 /** 2762 * Border Radius Top Left 2763 * @see https://tailwindcss.com/docs/border-radius 2764 */ 'rounded-tl': [ 2765 { 2766 'rounded-tl': scaleRadius() 2767 } 2768 ], 2769 /** 2770 * Border Radius Top Right 2771 * @see https://tailwindcss.com/docs/border-radius 2772 */ 'rounded-tr': [ 2773 { 2774 'rounded-tr': scaleRadius() 2775 } 2776 ], 2777 /** 2778 * Border Radius Bottom Right 2779 * @see https://tailwindcss.com/docs/border-radius 2780 */ 'rounded-br': [ 2781 { 2782 'rounded-br': scaleRadius() 2783 } 2784 ], 2785 /** 2786 * Border Radius Bottom Left 2787 * @see https://tailwindcss.com/docs/border-radius 2788 */ 'rounded-bl': [ 2789 { 2790 'rounded-bl': scaleRadius() 2791 } 2792 ], 2793 /** 2794 * Border Width 2795 * @see https://tailwindcss.com/docs/border-width 2796 */ 'border-w': [ 2797 { 2798 border: scaleBorderWidth() 2799 } 2800 ], 2801 /** 2802 * Border Width Inline 2803 * @see https://tailwindcss.com/docs/border-width 2804 */ 'border-w-x': [ 2805 { 2806 'border-x': scaleBorderWidth() 2807 } 2808 ], 2809 /** 2810 * Border Width Block 2811 * @see https://tailwindcss.com/docs/border-width 2812 */ 'border-w-y': [ 2813 { 2814 'border-y': scaleBorderWidth() 2815 } 2816 ], 2817 /** 2818 * Border Width Inline Start 2819 * @see https://tailwindcss.com/docs/border-width 2820 */ 'border-w-s': [ 2821 { 2822 'border-s': scaleBorderWidth() 2823 } 2824 ], 2825 /** 2826 * Border Width Inline End 2827 * @see https://tailwindcss.com/docs/border-width 2828 */ 'border-w-e': [ 2829 { 2830 'border-e': scaleBorderWidth() 2831 } 2832 ], 2833 /** 2834 * Border Width Block Start 2835 * @see https://tailwindcss.com/docs/border-width 2836 */ 'border-w-bs': [ 2837 { 2838 'border-bs': scaleBorderWidth() 2839 } 2840 ], 2841 /** 2842 * Border Width Block End 2843 * @see https://tailwindcss.com/docs/border-width 2844 */ 'border-w-be': [ 2845 { 2846 'border-be': scaleBorderWidth() 2847 } 2848 ], 2849 /** 2850 * Border Width Top 2851 * @see https://tailwindcss.com/docs/border-width 2852 */ 'border-w-t': [ 2853 { 2854 'border-t': scaleBorderWidth() 2855 } 2856 ], 2857 /** 2858 * Border Width Right 2859 * @see https://tailwindcss.com/docs/border-width 2860 */ 'border-w-r': [ 2861 { 2862 'border-r': scaleBorderWidth() 2863 } 2864 ], 2865 /** 2866 * Border Width Bottom 2867 * @see https://tailwindcss.com/docs/border-width 2868 */ 'border-w-b': [ 2869 { 2870 'border-b': scaleBorderWidth() 2871 } 2872 ], 2873 /** 2874 * Border Width Left 2875 * @see https://tailwindcss.com/docs/border-width 2876 */ 'border-w-l': [ 2877 { 2878 'border-l': scaleBorderWidth() 2879 } 2880 ], 2881 /** 2882 * Divide Width X 2883 * @see https://tailwindcss.com/docs/border-width#between-children 2884 */ 'divide-x': [ 2885 { 2886 'divide-x': scaleBorderWidth() 2887 } 2888 ], 2889 /** 2890 * Divide Width X Reverse 2891 * @see https://tailwindcss.com/docs/border-width#between-children 2892 */ 'divide-x-reverse': [ 2893 'divide-x-reverse' 2894 ], 2895 /** 2896 * Divide Width Y 2897 * @see https://tailwindcss.com/docs/border-width#between-children 2898 */ 'divide-y': [ 2899 { 2900 'divide-y': scaleBorderWidth() 2901 } 2902 ], 2903 /** 2904 * Divide Width Y Reverse 2905 * @see https://tailwindcss.com/docs/border-width#between-children 2906 */ 'divide-y-reverse': [ 2907 'divide-y-reverse' 2908 ], 2909 /** 2910 * Border Style 2911 * @see https://tailwindcss.com/docs/border-style 2912 */ 'border-style': [ 2913 { 2914 border: [ 2915 ...scaleLineStyle(), 2916 'hidden', 2917 'none' 2918 ] 2919 } 2920 ], 2921 /** 2922 * Divide Style 2923 * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style 2924 */ 'divide-style': [ 2925 { 2926 divide: [ 2927 ...scaleLineStyle(), 2928 'hidden', 2929 'none' 2930 ] 2931 } 2932 ], 2933 /** 2934 * Border Color 2935 * @see https://tailwindcss.com/docs/border-color 2936 */ 'border-color': [ 2937 { 2938 border: scaleColor() 2939 } 2940 ], 2941 /** 2942 * Border Color Inline 2943 * @see https://tailwindcss.com/docs/border-color 2944 */ 'border-color-x': [ 2945 { 2946 'border-x': scaleColor() 2947 } 2948 ], 2949 /** 2950 * Border Color Block 2951 * @see https://tailwindcss.com/docs/border-color 2952 */ 'border-color-y': [ 2953 { 2954 'border-y': scaleColor() 2955 } 2956 ], 2957 /** 2958 * Border Color Inline Start 2959 * @see https://tailwindcss.com/docs/border-color 2960 */ 'border-color-s': [ 2961 { 2962 'border-s': scaleColor() 2963 } 2964 ], 2965 /** 2966 * Border Color Inline End 2967 * @see https://tailwindcss.com/docs/border-color 2968 */ 'border-color-e': [ 2969 { 2970 'border-e': scaleColor() 2971 } 2972 ], 2973 /** 2974 * Border Color Block Start 2975 * @see https://tailwindcss.com/docs/border-color 2976 */ 'border-color-bs': [ 2977 { 2978 'border-bs': scaleColor() 2979 } 2980 ], 2981 /** 2982 * Border Color Block End 2983 * @see https://tailwindcss.com/docs/border-color 2984 */ 'border-color-be': [ 2985 { 2986 'border-be': scaleColor() 2987 } 2988 ], 2989 /** 2990 * Border Color Top 2991 * @see https://tailwindcss.com/docs/border-color 2992 */ 'border-color-t': [ 2993 { 2994 'border-t': scaleColor() 2995 } 2996 ], 2997 /** 2998 * Border Color Right 2999 * @see https://tailwindcss.com/docs/border-color 3000 */ 'border-color-r': [ 3001 { 3002 'border-r': scaleColor() 3003 } 3004 ], 3005 /** 3006 * Border Color Bottom 3007 * @see https://tailwindcss.com/docs/border-color 3008 */ 'border-color-b': [ 3009 { 3010 'border-b': scaleColor() 3011 } 3012 ], 3013 /** 3014 * Border Color Left 3015 * @see https://tailwindcss.com/docs/border-color 3016 */ 'border-color-l': [ 3017 { 3018 'border-l': scaleColor() 3019 } 3020 ], 3021 /** 3022 * Divide Color 3023 * @see https://tailwindcss.com/docs/divide-color 3024 */ 'divide-color': [ 3025 { 3026 divide: scaleColor() 3027 } 3028 ], 3029 /** 3030 * Outline Style 3031 * @see https://tailwindcss.com/docs/outline-style 3032 */ 'outline-style': [ 3033 { 3034 outline: [ 3035 ...scaleLineStyle(), 3036 'none', 3037 'hidden' 3038 ] 3039 } 3040 ], 3041 /** 3042 * Outline Offset 3043 * @see https://tailwindcss.com/docs/outline-offset 3044 */ 'outline-offset': [ 3045 { 3046 'outline-offset': [ 3047 isNumber, 3048 isArbitraryVariable, 3049 isArbitraryValue 3050 ] 3051 } 3052 ], 3053 /** 3054 * Outline Width 3055 * @see https://tailwindcss.com/docs/outline-width 3056 */ 'outline-w': [ 3057 { 3058 outline: [ 3059 '', 3060 isNumber, 3061 isArbitraryVariableLength, 3062 isArbitraryLength 3063 ] 3064 } 3065 ], 3066 /** 3067 * Outline Color 3068 * @see https://tailwindcss.com/docs/outline-color 3069 */ 'outline-color': [ 3070 { 3071 outline: scaleColor() 3072 } 3073 ], 3074 // --------------- 3075 // --- Effects --- 3076 // --------------- 3077 /** 3078 * Box Shadow 3079 * @see https://tailwindcss.com/docs/box-shadow 3080 */ shadow: [ 3081 { 3082 shadow: [ 3083 // Deprecated since Tailwind CSS v4.0.0 3084 '', 3085 // Deprecated since Tailwind CSS v4.0.0 3086 'inner', 3087 'none', 3088 themeShadow, 3089 isArbitraryVariableShadow, 3090 isArbitraryShadow 3091 ] 3092 } 3093 ], 3094 /** 3095 * Box Shadow Color 3096 * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color 3097 */ 'shadow-color': [ 3098 { 3099 shadow: scaleColor() 3100 } 3101 ], 3102 /** 3103 * Inset Box Shadow 3104 * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow 3105 */ 'inset-shadow': [ 3106 { 3107 'inset-shadow': [ 3108 'none', 3109 themeInsetShadow, 3110 isArbitraryVariableShadow, 3111 isArbitraryShadow 3112 ] 3113 } 3114 ], 3115 /** 3116 * Inset Box Shadow Color 3117 * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color 3118 */ 'inset-shadow-color': [ 3119 { 3120 'inset-shadow': scaleColor() 3121 } 3122 ], 3123 /** 3124 * Ring Width 3125 * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring 3126 */ 'ring-w': [ 3127 { 3128 ring: scaleBorderWidth() 3129 } 3130 ], 3131 /** 3132 * Ring Width Inset 3133 * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings 3134 * @deprecated since Tailwind CSS v4.0.0 3135 * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158 3136 */ 'ring-w-inset': [ 3137 'ring-inset' 3138 ], 3139 /** 3140 * Ring Color 3141 * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color 3142 */ 'ring-color': [ 3143 { 3144 ring: scaleColor() 3145 } 3146 ], 3147 /** 3148 * Ring Offset Width 3149 * @see https://v3.tailwindcss.com/docs/ring-offset-width 3150 * @deprecated since Tailwind CSS v4.0.0 3151 * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158 3152 */ 'ring-offset-w': [ 3153 { 3154 'ring-offset': [ 3155 isNumber, 3156 isArbitraryLength 3157 ] 3158 } 3159 ], 3160 /** 3161 * Ring Offset Color 3162 * @see https://v3.tailwindcss.com/docs/ring-offset-color 3163 * @deprecated since Tailwind CSS v4.0.0 3164 * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158 3165 */ 'ring-offset-color': [ 3166 { 3167 'ring-offset': scaleColor() 3168 } 3169 ], 3170 /** 3171 * Inset Ring Width 3172 * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring 3173 */ 'inset-ring-w': [ 3174 { 3175 'inset-ring': scaleBorderWidth() 3176 } 3177 ], 3178 /** 3179 * Inset Ring Color 3180 * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color 3181 */ 'inset-ring-color': [ 3182 { 3183 'inset-ring': scaleColor() 3184 } 3185 ], 3186 /** 3187 * Text Shadow 3188 * @see https://tailwindcss.com/docs/text-shadow 3189 */ 'text-shadow': [ 3190 { 3191 'text-shadow': [ 3192 'none', 3193 themeTextShadow, 3194 isArbitraryVariableShadow, 3195 isArbitraryShadow 3196 ] 3197 } 3198 ], 3199 /** 3200 * Text Shadow Color 3201 * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color 3202 */ 'text-shadow-color': [ 3203 { 3204 'text-shadow': scaleColor() 3205 } 3206 ], 3207 /** 3208 * Opacity 3209 * @see https://tailwindcss.com/docs/opacity 3210 */ opacity: [ 3211 { 3212 opacity: [ 3213 isNumber, 3214 isArbitraryVariable, 3215 isArbitraryValue 3216 ] 3217 } 3218 ], 3219 /** 3220 * Mix Blend Mode 3221 * @see https://tailwindcss.com/docs/mix-blend-mode 3222 */ 'mix-blend': [ 3223 { 3224 'mix-blend': [ 3225 ...scaleBlendMode(), 3226 'plus-darker', 3227 'plus-lighter' 3228 ] 3229 } 3230 ], 3231 /** 3232 * Background Blend Mode 3233 * @see https://tailwindcss.com/docs/background-blend-mode 3234 */ 'bg-blend': [ 3235 { 3236 'bg-blend': scaleBlendMode() 3237 } 3238 ], 3239 /** 3240 * Mask Clip 3241 * @see https://tailwindcss.com/docs/mask-clip 3242 */ 'mask-clip': [ 3243 { 3244 'mask-clip': [ 3245 'border', 3246 'padding', 3247 'content', 3248 'fill', 3249 'stroke', 3250 'view' 3251 ] 3252 }, 3253 'mask-no-clip' 3254 ], 3255 /** 3256 * Mask Composite 3257 * @see https://tailwindcss.com/docs/mask-composite 3258 */ 'mask-composite': [ 3259 { 3260 mask: [ 3261 'add', 3262 'subtract', 3263 'intersect', 3264 'exclude' 3265 ] 3266 } 3267 ], 3268 /** 3269 * Mask Image 3270 * @see https://tailwindcss.com/docs/mask-image 3271 */ 'mask-image-linear-pos': [ 3272 { 3273 'mask-linear': [ 3274 isNumber 3275 ] 3276 } 3277 ], 3278 'mask-image-linear-from-pos': [ 3279 { 3280 'mask-linear-from': scaleMaskImagePosition() 3281 } 3282 ], 3283 'mask-image-linear-to-pos': [ 3284 { 3285 'mask-linear-to': scaleMaskImagePosition() 3286 } 3287 ], 3288 'mask-image-linear-from-color': [ 3289 { 3290 'mask-linear-from': scaleColor() 3291 } 3292 ], 3293 'mask-image-linear-to-color': [ 3294 { 3295 'mask-linear-to': scaleColor() 3296 } 3297 ], 3298 'mask-image-t-from-pos': [ 3299 { 3300 'mask-t-from': scaleMaskImagePosition() 3301 } 3302 ], 3303 'mask-image-t-to-pos': [ 3304 { 3305 'mask-t-to': scaleMaskImagePosition() 3306 } 3307 ], 3308 'mask-image-t-from-color': [ 3309 { 3310 'mask-t-from': scaleColor() 3311 } 3312 ], 3313 'mask-image-t-to-color': [ 3314 { 3315 'mask-t-to': scaleColor() 3316 } 3317 ], 3318 'mask-image-r-from-pos': [ 3319 { 3320 'mask-r-from': scaleMaskImagePosition() 3321 } 3322 ], 3323 'mask-image-r-to-pos': [ 3324 { 3325 'mask-r-to': scaleMaskImagePosition() 3326 } 3327 ], 3328 'mask-image-r-from-color': [ 3329 { 3330 'mask-r-from': scaleColor() 3331 } 3332 ], 3333 'mask-image-r-to-color': [ 3334 { 3335 'mask-r-to': scaleColor() 3336 } 3337 ], 3338 'mask-image-b-from-pos': [ 3339 { 3340 'mask-b-from': scaleMaskImagePosition() 3341 } 3342 ], 3343 'mask-image-b-to-pos': [ 3344 { 3345 'mask-b-to': scaleMaskImagePosition() 3346 } 3347 ], 3348 'mask-image-b-from-color': [ 3349 { 3350 'mask-b-from': scaleColor() 3351 } 3352 ], 3353 'mask-image-b-to-color': [ 3354 { 3355 'mask-b-to': scaleColor() 3356 } 3357 ], 3358 'mask-image-l-from-pos': [ 3359 { 3360 'mask-l-from': scaleMaskImagePosition() 3361 } 3362 ], 3363 'mask-image-l-to-pos': [ 3364 { 3365 'mask-l-to': scaleMaskImagePosition() 3366 } 3367 ], 3368 'mask-image-l-from-color': [ 3369 { 3370 'mask-l-from': scaleColor() 3371 } 3372 ], 3373 'mask-image-l-to-color': [ 3374 { 3375 'mask-l-to': scaleColor() 3376 } 3377 ], 3378 'mask-image-x-from-pos': [ 3379 { 3380 'mask-x-from': scaleMaskImagePosition() 3381 } 3382 ], 3383 'mask-image-x-to-pos': [ 3384 { 3385 'mask-x-to': scaleMaskImagePosition() 3386 } 3387 ], 3388 'mask-image-x-from-color': [ 3389 { 3390 'mask-x-from': scaleColor() 3391 } 3392 ], 3393 'mask-image-x-to-color': [ 3394 { 3395 'mask-x-to': scaleColor() 3396 } 3397 ], 3398 'mask-image-y-from-pos': [ 3399 { 3400 'mask-y-from': scaleMaskImagePosition() 3401 } 3402 ], 3403 'mask-image-y-to-pos': [ 3404 { 3405 'mask-y-to': scaleMaskImagePosition() 3406 } 3407 ], 3408 'mask-image-y-from-color': [ 3409 { 3410 'mask-y-from': scaleColor() 3411 } 3412 ], 3413 'mask-image-y-to-color': [ 3414 { 3415 'mask-y-to': scaleColor() 3416 } 3417 ], 3418 'mask-image-radial': [ 3419 { 3420 'mask-radial': [ 3421 isArbitraryVariable, 3422 isArbitraryValue 3423 ] 3424 } 3425 ], 3426 'mask-image-radial-from-pos': [ 3427 { 3428 'mask-radial-from': scaleMaskImagePosition() 3429 } 3430 ], 3431 'mask-image-radial-to-pos': [ 3432 { 3433 'mask-radial-to': scaleMaskImagePosition() 3434 } 3435 ], 3436 'mask-image-radial-from-color': [ 3437 { 3438 'mask-radial-from': scaleColor() 3439 } 3440 ], 3441 'mask-image-radial-to-color': [ 3442 { 3443 'mask-radial-to': scaleColor() 3444 } 3445 ], 3446 'mask-image-radial-shape': [ 3447 { 3448 'mask-radial': [ 3449 'circle', 3450 'ellipse' 3451 ] 3452 } 3453 ], 3454 'mask-image-radial-size': [ 3455 { 3456 'mask-radial': [ 3457 { 3458 closest: [ 3459 'side', 3460 'corner' 3461 ], 3462 farthest: [ 3463 'side', 3464 'corner' 3465 ] 3466 } 3467 ] 3468 } 3469 ], 3470 'mask-image-radial-pos': [ 3471 { 3472 'mask-radial-at': scalePosition() 3473 } 3474 ], 3475 'mask-image-conic-pos': [ 3476 { 3477 'mask-conic': [ 3478 isNumber 3479 ] 3480 } 3481 ], 3482 'mask-image-conic-from-pos': [ 3483 { 3484 'mask-conic-from': scaleMaskImagePosition() 3485 } 3486 ], 3487 'mask-image-conic-to-pos': [ 3488 { 3489 'mask-conic-to': scaleMaskImagePosition() 3490 } 3491 ], 3492 'mask-image-conic-from-color': [ 3493 { 3494 'mask-conic-from': scaleColor() 3495 } 3496 ], 3497 'mask-image-conic-to-color': [ 3498 { 3499 'mask-conic-to': scaleColor() 3500 } 3501 ], 3502 /** 3503 * Mask Mode 3504 * @see https://tailwindcss.com/docs/mask-mode 3505 */ 'mask-mode': [ 3506 { 3507 mask: [ 3508 'alpha', 3509 'luminance', 3510 'match' 3511 ] 3512 } 3513 ], 3514 /** 3515 * Mask Origin 3516 * @see https://tailwindcss.com/docs/mask-origin 3517 */ 'mask-origin': [ 3518 { 3519 'mask-origin': [ 3520 'border', 3521 'padding', 3522 'content', 3523 'fill', 3524 'stroke', 3525 'view' 3526 ] 3527 } 3528 ], 3529 /** 3530 * Mask Position 3531 * @see https://tailwindcss.com/docs/mask-position 3532 */ 'mask-position': [ 3533 { 3534 mask: scaleBgPosition() 3535 } 3536 ], 3537 /** 3538 * Mask Repeat 3539 * @see https://tailwindcss.com/docs/mask-repeat 3540 */ 'mask-repeat': [ 3541 { 3542 mask: scaleBgRepeat() 3543 } 3544 ], 3545 /** 3546 * Mask Size 3547 * @see https://tailwindcss.com/docs/mask-size 3548 */ 'mask-size': [ 3549 { 3550 mask: scaleBgSize() 3551 } 3552 ], 3553 /** 3554 * Mask Type 3555 * @see https://tailwindcss.com/docs/mask-type 3556 */ 'mask-type': [ 3557 { 3558 'mask-type': [ 3559 'alpha', 3560 'luminance' 3561 ] 3562 } 3563 ], 3564 /** 3565 * Mask Image 3566 * @see https://tailwindcss.com/docs/mask-image 3567 */ 'mask-image': [ 3568 { 3569 mask: [ 3570 'none', 3571 isArbitraryVariable, 3572 isArbitraryValue 3573 ] 3574 } 3575 ], 3576 // --------------- 3577 // --- Filters --- 3578 // --------------- 3579 /** 3580 * Filter 3581 * @see https://tailwindcss.com/docs/filter 3582 */ filter: [ 3583 { 3584 filter: [ 3585 // Deprecated since Tailwind CSS v3.0.0 3586 '', 3587 'none', 3588 isArbitraryVariable, 3589 isArbitraryValue 3590 ] 3591 } 3592 ], 3593 /** 3594 * Blur 3595 * @see https://tailwindcss.com/docs/blur 3596 */ blur: [ 3597 { 3598 blur: scaleBlur() 3599 } 3600 ], 3601 /** 3602 * Brightness 3603 * @see https://tailwindcss.com/docs/brightness 3604 */ brightness: [ 3605 { 3606 brightness: [ 3607 isNumber, 3608 isArbitraryVariable, 3609 isArbitraryValue 3610 ] 3611 } 3612 ], 3613 /** 3614 * Contrast 3615 * @see https://tailwindcss.com/docs/contrast 3616 */ contrast: [ 3617 { 3618 contrast: [ 3619 isNumber, 3620 isArbitraryVariable, 3621 isArbitraryValue 3622 ] 3623 } 3624 ], 3625 /** 3626 * Drop Shadow 3627 * @see https://tailwindcss.com/docs/drop-shadow 3628 */ 'drop-shadow': [ 3629 { 3630 'drop-shadow': [ 3631 // Deprecated since Tailwind CSS v4.0.0 3632 '', 3633 'none', 3634 themeDropShadow, 3635 isArbitraryVariableShadow, 3636 isArbitraryShadow 3637 ] 3638 } 3639 ], 3640 /** 3641 * Drop Shadow Color 3642 * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color 3643 */ 'drop-shadow-color': [ 3644 { 3645 'drop-shadow': scaleColor() 3646 } 3647 ], 3648 /** 3649 * Grayscale 3650 * @see https://tailwindcss.com/docs/grayscale 3651 */ grayscale: [ 3652 { 3653 grayscale: [ 3654 '', 3655 isNumber, 3656 isArbitraryVariable, 3657 isArbitraryValue 3658 ] 3659 } 3660 ], 3661 /** 3662 * Hue Rotate 3663 * @see https://tailwindcss.com/docs/hue-rotate 3664 */ 'hue-rotate': [ 3665 { 3666 'hue-rotate': [ 3667 isNumber, 3668 isArbitraryVariable, 3669 isArbitraryValue 3670 ] 3671 } 3672 ], 3673 /** 3674 * Invert 3675 * @see https://tailwindcss.com/docs/invert 3676 */ invert: [ 3677 { 3678 invert: [ 3679 '', 3680 isNumber, 3681 isArbitraryVariable, 3682 isArbitraryValue 3683 ] 3684 } 3685 ], 3686 /** 3687 * Saturate 3688 * @see https://tailwindcss.com/docs/saturate 3689 */ saturate: [ 3690 { 3691 saturate: [ 3692 isNumber, 3693 isArbitraryVariable, 3694 isArbitraryValue 3695 ] 3696 } 3697 ], 3698 /** 3699 * Sepia 3700 * @see https://tailwindcss.com/docs/sepia 3701 */ sepia: [ 3702 { 3703 sepia: [ 3704 '', 3705 isNumber, 3706 isArbitraryVariable, 3707 isArbitraryValue 3708 ] 3709 } 3710 ], 3711 /** 3712 * Backdrop Filter 3713 * @see https://tailwindcss.com/docs/backdrop-filter 3714 */ 'backdrop-filter': [ 3715 { 3716 'backdrop-filter': [ 3717 // Deprecated since Tailwind CSS v3.0.0 3718 '', 3719 'none', 3720 isArbitraryVariable, 3721 isArbitraryValue 3722 ] 3723 } 3724 ], 3725 /** 3726 * Backdrop Blur 3727 * @see https://tailwindcss.com/docs/backdrop-blur 3728 */ 'backdrop-blur': [ 3729 { 3730 'backdrop-blur': scaleBlur() 3731 } 3732 ], 3733 /** 3734 * Backdrop Brightness 3735 * @see https://tailwindcss.com/docs/backdrop-brightness 3736 */ 'backdrop-brightness': [ 3737 { 3738 'backdrop-brightness': [ 3739 isNumber, 3740 isArbitraryVariable, 3741 isArbitraryValue 3742 ] 3743 } 3744 ], 3745 /** 3746 * Backdrop Contrast 3747 * @see https://tailwindcss.com/docs/backdrop-contrast 3748 */ 'backdrop-contrast': [ 3749 { 3750 'backdrop-contrast': [ 3751 isNumber, 3752 isArbitraryVariable, 3753 isArbitraryValue 3754 ] 3755 } 3756 ], 3757 /** 3758 * Backdrop Grayscale 3759 * @see https://tailwindcss.com/docs/backdrop-grayscale 3760 */ 'backdrop-grayscale': [ 3761 { 3762 'backdrop-grayscale': [ 3763 '', 3764 isNumber, 3765 isArbitraryVariable, 3766 isArbitraryValue 3767 ] 3768 } 3769 ], 3770 /** 3771 * Backdrop Hue Rotate 3772 * @see https://tailwindcss.com/docs/backdrop-hue-rotate 3773 */ 'backdrop-hue-rotate': [ 3774 { 3775 'backdrop-hue-rotate': [ 3776 isNumber, 3777 isArbitraryVariable, 3778 isArbitraryValue 3779 ] 3780 } 3781 ], 3782 /** 3783 * Backdrop Invert 3784 * @see https://tailwindcss.com/docs/backdrop-invert 3785 */ 'backdrop-invert': [ 3786 { 3787 'backdrop-invert': [ 3788 '', 3789 isNumber, 3790 isArbitraryVariable, 3791 isArbitraryValue 3792 ] 3793 } 3794 ], 3795 /** 3796 * Backdrop Opacity 3797 * @see https://tailwindcss.com/docs/backdrop-opacity 3798 */ 'backdrop-opacity': [ 3799 { 3800 'backdrop-opacity': [ 3801 isNumber, 3802 isArbitraryVariable, 3803 isArbitraryValue 3804 ] 3805 } 3806 ], 3807 /** 3808 * Backdrop Saturate 3809 * @see https://tailwindcss.com/docs/backdrop-saturate 3810 */ 'backdrop-saturate': [ 3811 { 3812 'backdrop-saturate': [ 3813 isNumber, 3814 isArbitraryVariable, 3815 isArbitraryValue 3816 ] 3817 } 3818 ], 3819 /** 3820 * Backdrop Sepia 3821 * @see https://tailwindcss.com/docs/backdrop-sepia 3822 */ 'backdrop-sepia': [ 3823 { 3824 'backdrop-sepia': [ 3825 '', 3826 isNumber, 3827 isArbitraryVariable, 3828 isArbitraryValue 3829 ] 3830 } 3831 ], 3832 // -------------- 3833 // --- Tables --- 3834 // -------------- 3835 /** 3836 * Border Collapse 3837 * @see https://tailwindcss.com/docs/border-collapse 3838 */ 'border-collapse': [ 3839 { 3840 border: [ 3841 'collapse', 3842 'separate' 3843 ] 3844 } 3845 ], 3846 /** 3847 * Border Spacing 3848 * @see https://tailwindcss.com/docs/border-spacing 3849 */ 'border-spacing': [ 3850 { 3851 'border-spacing': scaleUnambiguousSpacing() 3852 } 3853 ], 3854 /** 3855 * Border Spacing X 3856 * @see https://tailwindcss.com/docs/border-spacing 3857 */ 'border-spacing-x': [ 3858 { 3859 'border-spacing-x': scaleUnambiguousSpacing() 3860 } 3861 ], 3862 /** 3863 * Border Spacing Y 3864 * @see https://tailwindcss.com/docs/border-spacing 3865 */ 'border-spacing-y': [ 3866 { 3867 'border-spacing-y': scaleUnambiguousSpacing() 3868 } 3869 ], 3870 /** 3871 * Table Layout 3872 * @see https://tailwindcss.com/docs/table-layout 3873 */ 'table-layout': [ 3874 { 3875 table: [ 3876 'auto', 3877 'fixed' 3878 ] 3879 } 3880 ], 3881 /** 3882 * Caption Side 3883 * @see https://tailwindcss.com/docs/caption-side 3884 */ caption: [ 3885 { 3886 caption: [ 3887 'top', 3888 'bottom' 3889 ] 3890 } 3891 ], 3892 // --------------------------------- 3893 // --- Transitions and Animation --- 3894 // --------------------------------- 3895 /** 3896 * Transition Property 3897 * @see https://tailwindcss.com/docs/transition-property 3898 */ transition: [ 3899 { 3900 transition: [ 3901 '', 3902 'all', 3903 'colors', 3904 'opacity', 3905 'shadow', 3906 'transform', 3907 'none', 3908 isArbitraryVariable, 3909 isArbitraryValue 3910 ] 3911 } 3912 ], 3913 /** 3914 * Transition Behavior 3915 * @see https://tailwindcss.com/docs/transition-behavior 3916 */ 'transition-behavior': [ 3917 { 3918 transition: [ 3919 'normal', 3920 'discrete' 3921 ] 3922 } 3923 ], 3924 /** 3925 * Transition Duration 3926 * @see https://tailwindcss.com/docs/transition-duration 3927 */ duration: [ 3928 { 3929 duration: [ 3930 isNumber, 3931 'initial', 3932 isArbitraryVariable, 3933 isArbitraryValue 3934 ] 3935 } 3936 ], 3937 /** 3938 * Transition Timing Function 3939 * @see https://tailwindcss.com/docs/transition-timing-function 3940 */ ease: [ 3941 { 3942 ease: [ 3943 'linear', 3944 'initial', 3945 themeEase, 3946 isArbitraryVariable, 3947 isArbitraryValue 3948 ] 3949 } 3950 ], 3951 /** 3952 * Transition Delay 3953 * @see https://tailwindcss.com/docs/transition-delay 3954 */ delay: [ 3955 { 3956 delay: [ 3957 isNumber, 3958 isArbitraryVariable, 3959 isArbitraryValue 3960 ] 3961 } 3962 ], 3963 /** 3964 * Animation 3965 * @see https://tailwindcss.com/docs/animation 3966 */ animate: [ 3967 { 3968 animate: [ 3969 'none', 3970 themeAnimate, 3971 isArbitraryVariable, 3972 isArbitraryValue 3973 ] 3974 } 3975 ], 3976 // ------------------ 3977 // --- Transforms --- 3978 // ------------------ 3979 /** 3980 * Backface Visibility 3981 * @see https://tailwindcss.com/docs/backface-visibility 3982 */ backface: [ 3983 { 3984 backface: [ 3985 'hidden', 3986 'visible' 3987 ] 3988 } 3989 ], 3990 /** 3991 * Perspective 3992 * @see https://tailwindcss.com/docs/perspective 3993 */ perspective: [ 3994 { 3995 perspective: [ 3996 themePerspective, 3997 isArbitraryVariable, 3998 isArbitraryValue 3999 ] 4000 } 4001 ], 4002 /** 4003 * Perspective Origin 4004 * @see https://tailwindcss.com/docs/perspective-origin 4005 */ 'perspective-origin': [ 4006 { 4007 'perspective-origin': scalePositionWithArbitrary() 4008 } 4009 ], 4010 /** 4011 * Rotate 4012 * @see https://tailwindcss.com/docs/rotate 4013 */ rotate: [ 4014 { 4015 rotate: scaleRotate() 4016 } 4017 ], 4018 /** 4019 * Rotate X 4020 * @see https://tailwindcss.com/docs/rotate 4021 */ 'rotate-x': [ 4022 { 4023 'rotate-x': scaleRotate() 4024 } 4025 ], 4026 /** 4027 * Rotate Y 4028 * @see https://tailwindcss.com/docs/rotate 4029 */ 'rotate-y': [ 4030 { 4031 'rotate-y': scaleRotate() 4032 } 4033 ], 4034 /** 4035 * Rotate Z 4036 * @see https://tailwindcss.com/docs/rotate 4037 */ 'rotate-z': [ 4038 { 4039 'rotate-z': scaleRotate() 4040 } 4041 ], 4042 /** 4043 * Scale 4044 * @see https://tailwindcss.com/docs/scale 4045 */ scale: [ 4046 { 4047 scale: scaleScale() 4048 } 4049 ], 4050 /** 4051 * Scale X 4052 * @see https://tailwindcss.com/docs/scale 4053 */ 'scale-x': [ 4054 { 4055 'scale-x': scaleScale() 4056 } 4057 ], 4058 /** 4059 * Scale Y 4060 * @see https://tailwindcss.com/docs/scale 4061 */ 'scale-y': [ 4062 { 4063 'scale-y': scaleScale() 4064 } 4065 ], 4066 /** 4067 * Scale Z 4068 * @see https://tailwindcss.com/docs/scale 4069 */ 'scale-z': [ 4070 { 4071 'scale-z': scaleScale() 4072 } 4073 ], 4074 /** 4075 * Scale 3D 4076 * @see https://tailwindcss.com/docs/scale 4077 */ 'scale-3d': [ 4078 'scale-3d' 4079 ], 4080 /** 4081 * Skew 4082 * @see https://tailwindcss.com/docs/skew 4083 */ skew: [ 4084 { 4085 skew: scaleSkew() 4086 } 4087 ], 4088 /** 4089 * Skew X 4090 * @see https://tailwindcss.com/docs/skew 4091 */ 'skew-x': [ 4092 { 4093 'skew-x': scaleSkew() 4094 } 4095 ], 4096 /** 4097 * Skew Y 4098 * @see https://tailwindcss.com/docs/skew 4099 */ 'skew-y': [ 4100 { 4101 'skew-y': scaleSkew() 4102 } 4103 ], 4104 /** 4105 * Transform 4106 * @see https://tailwindcss.com/docs/transform 4107 */ transform: [ 4108 { 4109 transform: [ 4110 isArbitraryVariable, 4111 isArbitraryValue, 4112 '', 4113 'none', 4114 'gpu', 4115 'cpu' 4116 ] 4117 } 4118 ], 4119 /** 4120 * Transform Origin 4121 * @see https://tailwindcss.com/docs/transform-origin 4122 */ 'transform-origin': [ 4123 { 4124 origin: scalePositionWithArbitrary() 4125 } 4126 ], 4127 /** 4128 * Transform Style 4129 * @see https://tailwindcss.com/docs/transform-style 4130 */ 'transform-style': [ 4131 { 4132 transform: [ 4133 '3d', 4134 'flat' 4135 ] 4136 } 4137 ], 4138 /** 4139 * Translate 4140 * @see https://tailwindcss.com/docs/translate 4141 */ translate: [ 4142 { 4143 translate: scaleTranslate() 4144 } 4145 ], 4146 /** 4147 * Translate X 4148 * @see https://tailwindcss.com/docs/translate 4149 */ 'translate-x': [ 4150 { 4151 'translate-x': scaleTranslate() 4152 } 4153 ], 4154 /** 4155 * Translate Y 4156 * @see https://tailwindcss.com/docs/translate 4157 */ 'translate-y': [ 4158 { 4159 'translate-y': scaleTranslate() 4160 } 4161 ], 4162 /** 4163 * Translate Z 4164 * @see https://tailwindcss.com/docs/translate 4165 */ 'translate-z': [ 4166 { 4167 'translate-z': scaleTranslate() 4168 } 4169 ], 4170 /** 4171 * Translate None 4172 * @see https://tailwindcss.com/docs/translate 4173 */ 'translate-none': [ 4174 'translate-none' 4175 ], 4176 /** 4177 * Zoom 4178 * @see https://tailwindcss.com/docs/zoom 4179 */ zoom: [ 4180 { 4181 zoom: [ 4182 isInteger, 4183 isArbitraryVariable, 4184 isArbitraryValue 4185 ] 4186 } 4187 ], 4188 // --------------------- 4189 // --- Interactivity --- 4190 // --------------------- 4191 /** 4192 * Accent Color 4193 * @see https://tailwindcss.com/docs/accent-color 4194 */ accent: [ 4195 { 4196 accent: scaleColor() 4197 } 4198 ], 4199 /** 4200 * Appearance 4201 * @see https://tailwindcss.com/docs/appearance 4202 */ appearance: [ 4203 { 4204 appearance: [ 4205 'none', 4206 'auto' 4207 ] 4208 } 4209 ], 4210 /** 4211 * Caret Color 4212 * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities 4213 */ 'caret-color': [ 4214 { 4215 caret: scaleColor() 4216 } 4217 ], 4218 /** 4219 * Color Scheme 4220 * @see https://tailwindcss.com/docs/color-scheme 4221 */ 'color-scheme': [ 4222 { 4223 scheme: [ 4224 'normal', 4225 'dark', 4226 'light', 4227 'light-dark', 4228 'only-dark', 4229 'only-light' 4230 ] 4231 } 4232 ], 4233 /**
4234 * Cursor 4235 * @see https://tailwindcss.com/docs/cursor 4236 */ cursor: [ 4237 { 4238 cursor: [ 4239 'auto', 4240 'default', 4241 'pointer', 4242 'wait', 4243 'text', 4244 'move', 4245 'help', 4246 'not-allowed', 4247 'none', 4248 'context-menu', 4249 'progress', 4250 'cell', 4251 'crosshair', 4252 'vertical-text', 4253 'alias', 4254 'copy', 4255 'no-drop', 4256 'grab', 4257 'grabbing', 4258 'all-scroll', 4259 'col-resize', 4260 'row-resize', 4261 'n-resize', 4262 'e-resize', 4263 's-resize', 4264 'w-resize', 4265 'ne-resize', 4266 'nw-resize', 4267 'se-resize', 4268 'sw-resize', 4269 'ew-resize', 4270 'ns-resize', 4271 'nesw-resize', 4272 'nwse-resize', 4273 'zoom-in', 4274 'zoom-out', 4275 isArbitraryVariable, 4276 isArbitraryValue 4277 ] 4278 } 4279 ], 4280 /** 4281 * Field Sizing 4282 * @see https://tailwindcss.com/docs/field-sizing 4283 */ 'field-sizing': [ 4284 { 4285 'field-sizing': [ 4286 'fixed', 4287 'content' 4288 ] 4289 } 4290 ], 4291 /** 4292 * Pointer Events 4293 * @see https://tailwindcss.com/docs/pointer-events 4294 */ 'pointer-events': [ 4295 { 4296 'pointer-events': [ 4297 'auto', 4298 'none' 4299 ] 4300 } 4301 ], 4302 /** 4303 * Resize 4304 * @see https://tailwindcss.com/docs/resize 4305 */ resize: [ 4306 { 4307 resize: [ 4308 'none', 4309 '', 4310 'y', 4311 'x' 4312 ] 4313 } 4314 ], 4315 /** 4316 * Scroll Behavior 4317 * @see https://tailwindcss.com/docs/scroll-behavior 4318 */ 'scroll-behavior': [ 4319 { 4320 scroll: [ 4321 'auto', 4322 'smooth' 4323 ] 4324 } 4325 ], 4326 /** 4327 * Scrollbar Thumb Color 4328 * @see https://tailwindcss.com/docs/scrollbar-color 4329 */ 'scrollbar-thumb-color': [ 4330 { 4331 'scrollbar-thumb': scaleColor() 4332 } 4333 ], 4334 /** 4335 * Scrollbar Track Color 4336 * @see https://tailwindcss.com/docs/scrollbar-color 4337 */ 'scrollbar-track-color': [ 4338 { 4339 'scrollbar-track': scaleColor() 4340 } 4341 ], 4342 /** 4343 * Scrollbar Gutter 4344 * @see https://tailwindcss.com/docs/scrollbar-gutter 4345 */ 'scrollbar-gutter': [ 4346 { 4347 'scrollbar-gutter': [ 4348 'auto', 4349 'stable', 4350 'both' 4351 ] 4352 } 4353 ], 4354 /** 4355 * Scrollbar Width 4356 * @see https://tailwindcss.com/docs/scrollbar-width 4357 */ 'scrollbar-w': [ 4358 { 4359 scrollbar: [ 4360 'auto', 4361 'thin', 4362 'none' 4363 ] 4364 } 4365 ], 4366 /** 4367 * Scroll Margin 4368 * @see https://tailwindcss.com/docs/scroll-margin 4369 */ 'scroll-m': [ 4370 {
4371 'scroll-m': scaleUnambiguousSpacing() 4372 } 4373 ], 4374 /** 4375 * Scroll Margin Inline 4376 * @see https://tailwindcss.com/docs/scroll-margin 4377 */ 'scroll-mx': [ 4378 { 4379 'scroll-mx': scaleUnambiguousSpacing() 4380 } 4381 ], 4382 /** 4383 * Scroll Margin Block 4384 * @see https://tailwindcss.com/docs/scroll-margin 4385 */ 'scroll-my': [ 4386 { 4387 'scroll-my': scaleUnambiguousSpacing() 4388 } 4389 ], 4390 /** 4391 * Scroll Margin Inline Start 4392 * @see https://tailwindcss.com/docs/scroll-margin 4393 */ 'scroll-ms': [ 4394 { 4395 'scroll-ms': scaleUnambiguousSpacing() 4396 } 4397 ], 4398 /** 4399 * Scroll Margin Inline End 4400 * @see https://tailwindcss.com/docs/scroll-margin 4401 */ 'scroll-me': [ 4402 { 4403 'scroll-me': scaleUnambiguousSpacing() 4404 } 4405 ], 4406 /** 4407 * Scroll Margin Block Start 4408 * @see https://tailwindcss.com/docs/scroll-margin 4409 */ 'scroll-mbs': [ 4410 { 4411 'scroll-mbs': scaleUnambiguousSpacing() 4412 } 4413 ], 4414 /** 4415 * Scroll Margin Block End 4416 * @see https://tailwindcss.com/docs/scroll-margin 4417 */ 'scroll-mbe': [ 4418 { 4419 'scroll-mbe': scaleUnambiguousSpacing() 4420 } 4421 ], 4422 /** 4423 * Scroll Margin Top 4424 * @see https://tailwindcss.com/docs/scroll-margin 4425 */ 'scroll-mt': [ 4426 { 4427 'scroll-mt': scaleUnambiguousSpacing() 4428 } 4429 ], 4430 /** 4431 * Scroll Margin Right 4432 * @see https://tailwindcss.com/docs/scroll-margin 4433 */ 'scroll-mr': [ 4434 { 4435 'scroll-mr': scaleUnambiguousSpacing() 4436 } 4437 ], 4438 /** 4439 * Scroll Margin Bottom 4440 * @see https://tailwindcss.com/docs/scroll-margin 4441 */ 'scroll-mb': [ 4442 { 4443 'scroll-mb': scaleUnambiguousSpacing() 4444 } 4445 ], 4446 /** 4447 * Scroll Margin Left 4448 * @see https://tailwindcss.com/docs/scroll-margin 4449 */ 'scroll-ml': [ 4450 { 4451 'scroll-ml': scaleUnambiguousSpacing() 4452 } 4453 ], 4454 /** 4455 * Scroll Padding 4456 * @see https://tailwindcss.com/docs/scroll-padding 4457 */ 'scroll-p': [ 4458 { 4459 'scroll-p': scaleUnambiguousSpacing() 4460 } 4461 ], 4462 /** 4463 * Scroll Padding Inline 4464 * @see https://tailwindcss.com/docs/scroll-padding 4465 */ 'scroll-px': [ 4466 { 4467 'scroll-px': scaleUnambiguousSpacing() 4468 } 4469 ], 4470 /** 4471 * Scroll Padding Block 4472 * @see https://tailwindcss.com/docs/scroll-padding 4473 */ 'scroll-py': [ 4474 { 4475 'scroll-py': scaleUnambiguousSpacing() 4476 } 4477 ], 4478 /** 4479 * Scroll Padding Inline Start 4480 * @see https://tailwindcss.com/docs/scroll-padding 4481 */ 'scroll-ps': [ 4482 { 4483 'scroll-ps': scaleUnambiguousSpacing() 4484 } 4485 ], 4486 /** 4487 * Scroll Padding Inline End 4488 * @see https://tailwindcss.com/docs/scroll-padding 4489 */ 'scroll-pe': [ 4490 { 4491 'scroll-pe': scaleUnambiguousSpacing() 4492 } 4493 ], 4494 /** 4495 * Scroll Padding Block Start 4496 * @see https://tailwindcss.com/docs/scroll-padding 4497 */ 'scroll-pbs': [ 4498 { 4499 'scroll-pbs': scaleUnambiguousSpacing() 4500 } 4501 ], 4502 /** 4503 * Scroll Padding Block End 4504 * @see https://tailwindcss.com/docs/scroll-padding 4505 */ 'scroll-pbe': [ 4506 {
vendor: 4,463 bytes, lines 4507-4665
4507 'scroll-pbe': scaleUnambiguousSpacing() 4508 } 4509 ], 4510 /** 4511 * Scroll Padding Top 4512 * @see https://tailwindcss.com/docs/scroll-padding 4513 */ 'scroll-pt': [ 4514 { 4515 'scroll-pt': scaleUnambiguousSpacing() 4516 } 4517 ], 4518 /** 4519 * Scroll Padding Right 4520 * @see https://tailwindcss.com/docs/scroll-padding 4521 */ 'scroll-pr': [ 4522 { 4523 'scroll-pr': scaleUnambiguousSpacing() 4524 } 4525 ], 4526 /** 4527 * Scroll Padding Bottom 4528 * @see https://tailwindcss.com/docs/scroll-padding 4529 */ 'scroll-pb': [ 4530 { 4531 'scroll-pb': scaleUnambiguousSpacing() 4532 } 4533 ], 4534 /** 4535 * Scroll Padding Left 4536 * @see https://tailwindcss.com/docs/scroll-padding 4537 */ 'scroll-pl': [ 4538 { 4539 'scroll-pl': scaleUnambiguousSpacing() 4540 } 4541 ], 4542 /** 4543 * Scroll Snap Align 4544 * @see https://tailwindcss.com/docs/scroll-snap-align 4545 */ 'snap-align': [ 4546 { 4547 snap: [ 4548 'start', 4549 'end', 4550 'center', 4551 'align-none' 4552 ] 4553 } 4554 ], 4555 /** 4556 * Scroll Snap Stop 4557 * @see https://tailwindcss.com/docs/scroll-snap-stop 4558 */ 'snap-stop': [ 4559 { 4560 snap: [ 4561 'normal', 4562 'always' 4563 ] 4564 } 4565 ], 4566 /** 4567 * Scroll Snap Type 4568 * @see https://tailwindcss.com/docs/scroll-snap-type 4569 */ 'snap-type': [ 4570 { 4571 snap: [ 4572 'none', 4573 'x', 4574 'y', 4575 'both' 4576 ] 4577 } 4578 ], 4579 /** 4580 * Scroll Snap Type Strictness 4581 * @see https://tailwindcss.com/docs/scroll-snap-type 4582 */ 'snap-strictness': [ 4583 { 4584 snap: [ 4585 'mandatory', 4586 'proximity' 4587 ] 4588 } 4589 ], 4590 /** 4591 * Touch Action 4592 * @see https://tailwindcss.com/docs/touch-action 4593 */ touch: [ 4594 { 4595 touch: [ 4596 'auto', 4597 'none', 4598 'manipulation' 4599 ] 4600 } 4601 ], 4602 /** 4603 * Touch Action X 4604 * @see https://tailwindcss.com/docs/touch-action 4605 */ 'touch-x': [ 4606 { 4607 'touch-pan': [ 4608 'x', 4609 'left', 4610 'right' 4611 ] 4612 } 4613 ], 4614 /** 4615 * Touch Action Y 4616 * @see https://tailwindcss.com/docs/touch-action 4617 */ 'touch-y': [ 4618 { 4619 'touch-pan': [ 4620 'y', 4621 'up', 4622 'down' 4623 ] 4624 } 4625 ], 4626 /** 4627 * Touch Action Pinch Zoom 4628 * @see https://tailwindcss.com/docs/touch-action 4629 */ 'touch-pz': [ 4630 'touch-pinch-zoom' 4631 ], 4632 /** 4633 * User Select 4634 * @see https://tailwindcss.com/docs/user-select 4635 */ select: [ 4636 { 4637 select: [ 4638 'none', 4639 'text', 4640 'all', 4641 'auto' 4642 ] 4643 } 4644 ], 4645 /** 4646 * Will Change 4647 * @see https://tailwindcss.com/docs/will-change 4648 */ 'will-change': [ 4649 { 4650 'will-change': [ 4651 'auto', 4652 'scroll', 4653 'contents', 4654 'transform', 4655 isArbitraryVariable, 4656 isArbitraryValue 4657 ] 4658 } 4659 ], 4660 // ----------- 4661 // --- SVG --- 4662 // ----------- 4663 /** 4664 * Fill 4665 * @see https://tailwindcss.com/docs/fill
vendor: 9,452 bytes, lines 4666-5032
4666 */ fill: [ 4667 { 4668 fill: [ 4669 'none', 4670 ...scaleColor() 4671 ] 4672 } 4673 ], 4674 /** 4675 * Stroke Width 4676 * @see https://tailwindcss.com/docs/stroke-width 4677 */ 'stroke-w': [ 4678 { 4679 stroke: [ 4680 isNumber, 4681 isArbitraryVariableLength, 4682 isArbitraryLength, 4683 isArbitraryNumber 4684 ] 4685 } 4686 ], 4687 /** 4688 * Stroke 4689 * @see https://tailwindcss.com/docs/stroke 4690 */ stroke: [ 4691 { 4692 stroke: [ 4693 'none', 4694 ...scaleColor() 4695 ] 4696 } 4697 ], 4698 // --------------------- 4699 // --- Accessibility --- 4700 // --------------------- 4701 /** 4702 * Forced Color Adjust 4703 * @see https://tailwindcss.com/docs/forced-color-adjust 4704 */ 'forced-color-adjust': [ 4705 { 4706 'forced-color-adjust': [ 4707 'auto', 4708 'none' 4709 ] 4710 } 4711 ] 4712 }, 4713 conflictingClassGroups: { 4714 'container-named': [ 4715 'container-type' 4716 ], 4717 overflow: [ 4718 'overflow-x', 4719 'overflow-y' 4720 ], 4721 overscroll: [ 4722 'overscroll-x', 4723 'overscroll-y' 4724 ], 4725 inset: [ 4726 'inset-x', 4727 'inset-y', 4728 'inset-bs', 4729 'inset-be', 4730 'start', 4731 'end', 4732 'top', 4733 'right', 4734 'bottom', 4735 'left' 4736 ], 4737 'inset-x': [ 4738 'start', 4739 'end', 4740 'right', 4741 'left' 4742 ], 4743 'inset-y': [ 4744 'inset-bs', 4745 'inset-be', 4746 'top', 4747 'bottom' 4748 ], 4749 flex: [ 4750 'basis', 4751 'grow', 4752 'shrink' 4753 ], 4754 gap: [ 4755 'gap-x', 4756 'gap-y' 4757 ], 4758 p: [ 4759 'px', 4760 'py', 4761 'ps', 4762 'pe', 4763 'pbs', 4764 'pbe', 4765 'pt', 4766 'pr', 4767 'pb', 4768 'pl' 4769 ], 4770 px: [ 4771 'ps', 4772 'pe', 4773 'pr', 4774 'pl' 4775 ], 4776 py: [ 4777 'pbs', 4778 'pbe', 4779 'pt', 4780 'pb' 4781 ], 4782 m: [ 4783 'mx', 4784 'my', 4785 'ms', 4786 'me', 4787 'mbs', 4788 'mbe', 4789 'mt', 4790 'mr', 4791 'mb', 4792 'ml' 4793 ], 4794 mx: [ 4795 'ms', 4796 'me', 4797 'mr', 4798 'ml' 4799 ], 4800 my: [ 4801 'mbs', 4802 'mbe', 4803 'mt', 4804 'mb' 4805 ], 4806 size: [ 4807 'w', 4808 'h' 4809 ], 4810 'font-size': [ 4811 'leading' 4812 ], 4813 'fvn-normal': [ 4814 'fvn-ordinal', 4815 'fvn-slashed-zero', 4816 'fvn-figure', 4817 'fvn-spacing', 4818 'fvn-fraction' 4819 ], 4820 'fvn-ordinal': [ 4821 'fvn-normal' 4822 ], 4823 'fvn-slashed-zero': [ 4824 'fvn-normal' 4825 ], 4826 'fvn-figure': [ 4827 'fvn-normal' 4828 ], 4829 'fvn-spacing': [ 4830 'fvn-normal' 4831 ], 4832 'fvn-fraction': [ 4833 'fvn-normal' 4834 ], 4835 'line-clamp': [ 4836 'display', 4837 'overflow' 4838 ], 4839 rounded: [ 4840 'rounded-s', 4841 'rounded-e', 4842 'rounded-t', 4843 'rounded-r', 4844 'rounded-b', 4845 'rounded-l', 4846 'rounded-ss', 4847 'rounded-se', 4848 'rounded-ee', 4849 'rounded-es', 4850 'rounded-tl', 4851 'rounded-tr', 4852 'rounded-br', 4853 'rounded-bl' 4854 ], 4855 'rounded-s': [ 4856 'rounded-ss', 4857 'rounded-es' 4858 ], 4859 'rounded-e': [ 4860 'rounded-se', 4861 'rounded-ee' 4862 ], 4863 'rounded-t': [ 4864 'rounded-tl', 4865 'rounded-tr' 4866 ], 4867 'rounded-r': [ 4868 'rounded-tr', 4869 'rounded-br' 4870 ], 4871 'rounded-b': [ 4872 'rounded-br', 4873 'rounded-bl' 4874 ], 4875 'rounded-l': [ 4876 'rounded-tl', 4877 'rounded-bl' 4878 ], 4879 'border-spacing': [ 4880 'border-spacing-x', 4881 'border-spacing-y' 4882 ], 4883 'border-w': [ 4884 'border-w-x', 4885 'border-w-y', 4886 'border-w-s', 4887 'border-w-e', 4888 'border-w-bs', 4889 'border-w-be', 4890 'border-w-t', 4891 'border-w-r', 4892 'border-w-b', 4893 'border-w-l' 4894 ], 4895 'border-w-x': [ 4896 'border-w-s', 4897 'border-w-e', 4898 'border-w-r', 4899 'border-w-l' 4900 ], 4901 'border-w-y': [ 4902 'border-w-bs', 4903 'border-w-be', 4904 'border-w-t', 4905 'border-w-b' 4906 ], 4907 'border-color': [ 4908 'border-color-x', 4909 'border-color-y', 4910 'border-color-s', 4911 'border-color-e', 4912 'border-color-bs', 4913 'border-color-be', 4914 'border-color-t', 4915 'border-color-r', 4916 'border-color-b', 4917 'border-color-l' 4918 ], 4919 'border-color-x': [ 4920 'border-color-s', 4921 'border-color-e', 4922 'border-color-r', 4923 'border-color-l' 4924 ], 4925 'border-color-y': [ 4926 'border-color-bs', 4927 'border-color-be', 4928 'border-color-t', 4929 'border-color-b' 4930 ], 4931 translate: [ 4932 'translate-x', 4933 'translate-y', 4934 'translate-none' 4935 ], 4936 'translate-none': [ 4937 'translate', 4938 'translate-x', 4939 'translate-y', 4940 'translate-z' 4941 ], 4942 'scroll-m': [ 4943 'scroll-mx', 4944 'scroll-my', 4945 'scroll-ms', 4946 'scroll-me', 4947 'scroll-mbs', 4948 'scroll-mbe', 4949 'scroll-mt', 4950 'scroll-mr', 4951 'scroll-mb', 4952 'scroll-ml' 4953 ], 4954 'scroll-mx': [ 4955 'scroll-ms', 4956 'scroll-me', 4957 'scroll-mr', 4958 'scroll-ml' 4959 ], 4960 'scroll-my': [ 4961 'scroll-mbs', 4962 'scroll-mbe', 4963 'scroll-mt', 4964 'scroll-mb' 4965 ], 4966 'scroll-p': [ 4967 'scroll-px', 4968 'scroll-py', 4969 'scroll-ps', 4970 'scroll-pe', 4971 'scroll-pbs', 4972 'scroll-pbe', 4973 'scroll-pt', 4974 'scroll-pr', 4975 'scroll-pb', 4976 'scroll-pl' 4977 ], 4978 'scroll-px': [ 4979 'scroll-ps', 4980 'scroll-pe', 4981 'scroll-pr', 4982 'scroll-pl' 4983 ], 4984 'scroll-py': [ 4985 'scroll-pbs', 4986 'scroll-pbe', 4987 'scroll-pt', 4988 'scroll-pb' 4989 ], 4990 touch: [ 4991 'touch-x', 4992 'touch-y', 4993 'touch-pz' 4994 ], 4995 'touch-x': [ 4996 'touch' 4997 ], 4998 'touch-y': [ 4999 'touch' 5000 ], 5001 'touch-pz': [ 5002 'touch' 5003 ] 5004 }, 5005 conflictingClassGroupModifiers: { 5006 'font-size': [ 5007 'leading' 5008 ] 5009 }, 5010 postfixLookupClassGroups: [ 5011 'container-type' 5012 ], 5013 orderSensitiveModifiers: [ 5014 '*', 5015 '**', 5016 'after', 5017 'backdrop', 5018 'before', 5019 'details-content', 5020 'file', 5021 'first-letter', 5022 'first-line', 5023 'marker', 5024 'placeholder', 5025 'selection' 5026 ] 5027 }; 5028}; 5029/** 5030 * @param baseConfig Config where other config will be merged into. This object will be mutated. 5031 * @param configExtension Partial config to merge into the `baseConfig`. 5032 */ const mergeConfigs = (baseConfig, param)=>
5032{ 5033 let { cacheSize, prefix, experimentalParseClassName, extend = {}, override = {} } = param; 5034 overrideProperty(baseConfig, 'cacheSize', cacheSize); 5035 overrideProperty(baseConfig, 'prefix', prefix); 5036 overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName); 5037 overrideConfigProperties(baseConfig.theme, override.theme); 5038 overrideConfigProperties(baseConfig.classGroups, override.classGroups); 5039 overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups); 5040 overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers); 5041 overrideProperty(baseConfig, 'postfixLookupClassGroups', override.postfixLookupClassGroups); 5042 overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers); 5043 mergeConfigProperties(baseConfig.theme, extend.theme); 5044 mergeConfigProperties(baseConfig.classGroups, extend.classGroups); 5045 mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups); 5046 mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers); 5047 mergeArrayProperties(baseConfig, extend, 'postfixLookupClassGroups'); 5048 mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers'); 5049 return baseConfig; 5050}; 5051const overrideProperty = (baseObject, overrideKey, overrideValue)=>{ 5052 if (overrideValue !== undefined) { 5053 baseObject[overrideKey] = overrideValue; 5054 } 5055}; 5056const overrideConfigProperties = (baseObject, overrideObject)=>{ 5057 if (overrideObject) { 5058 for(const key in overrideObject){ 5059 overrideProperty(baseObject, key, overrideObject[key]); 5060 } 5061 } 5062}; 5063const mergeConfigProperties = (baseObject, mergeObject)=>{ 5064 if (mergeObject) { 5065 for(const key in mergeObject){ 5066 mergeArrayProperties(baseObject, mergeObject, key); 5067 } 5068 } 5069}; 5070const mergeArrayProperties = (baseObject, mergeObject, key)=>{ 5071 const mergeValue = mergeObject[key]; 5072 if (mergeValue !== undefined) { 5073 baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue; 5074 } 5075}; 5076const extendTailwindMerge = function(configExtension) { 5077 for(var _len = arguments.length, createConfig = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){ 5078 createConfig[_key - 1] = arguments[_key]; 5079 } 5080 return typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(()=>mergeConfigs(getDefaultConfig(), configExtension), ...createConfig); 5081}; 5082const twMerge = /*#__PURE__*/ createTailwindMerge(getDefaultConfig); 5083; 5084__turbopack_context__.s([ 5085 "extendTailwindMerge", 5086 0, 5087 extendTailwindMerge, 5088 "twMerge", 5089 0, 5090 twMerge, 5091 "validators", 5092 0, 5093 validators 5094], 919056); 5095}), 5096]); 5097 5098//# debugId=a1f95f67-0ddf-f246-dab6-4f30a5db3e67
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.