@possibly6400/ui-kit 1.0.13 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +134 -14
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1071 -736
- package/dist/index.mjs.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +12 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/utils/cn.ts","../src/components/Button.tsx","../src/components/SubmitButton.tsx","../src/components/Input.tsx","../src/components/Checkbox.tsx","../src/components/Toggle.tsx","../src/components/Card.tsx","../src/components/Loader.tsx","../src/components/RadioButton.tsx","../src/components/Tooltip.tsx","../src/theme/ThemeProvider.tsx","../src/components/ThemeSwitch.tsx","../src/components/Form.tsx","../src/components/SearchBar.tsx","../src/components/SocialLinks.tsx","../src/components/ContextMenu.tsx","../src/components/CookieConsent.tsx","../src/components/ConfirmModal.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst 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$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { type ClassValue, clsx } from 'clsx';\r\nimport { twMerge } from 'tailwind-merge';\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport type ButtonVariant = 'primary' | 'secondary' | 'danger' | 'ghost';\r\nexport type ButtonSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Props for the Button component.\r\n */\r\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n /** Visual style variant. Defaults to 'primary'. */\r\n variant?: ButtonVariant;\r\n /** Size of the button. Defaults to 'md'. */\r\n size?: ButtonSize;\r\n /** Shows a loading spinner when true. */\r\n loading?: boolean;\r\n /** Button content. */\r\n children: React.ReactNode;\r\n}\r\n\r\nconst variantClasses: Record<ButtonVariant, string> = {\r\n primary: 'text-[#7e97b8] bg-[#dbeafe] border-[rgba(255,255,255,0.333)] shadow-[-4px_-2px_8px_0px_#ffffff,4px_2px_8px_0px_rgb(59_130_246_/_24%)] hover:text-[#516d91] hover:bg-[#bfdbfe] hover:shadow-[-2px_-1px_4px_0px_#ffffff,2px_1px_4px_0px_rgb(59_130_246_/_24%)]',\r\n secondary: 'text-[#6b7280] bg-[#d1fae5] border-[rgba(255,255,255,0.4)] shadow-[-4px_-2px_8px_0px_#ffffff,4px_2px_8px_0px_rgb(34_197_94_/_18%)] hover:text-[#4b5563] hover:bg-[#a7f3d0] hover:shadow-[-2px_-1px_4px_0px_#ffffff,2px_1px_4px_0px_rgb(34_197_94_/_18%)]',\r\n danger: 'text-black font-bold bg-[#fecaca] border-[rgba(255,255,255,0.5)] shadow-[-4px_-2px_8px_0px_#ffffff,4px_2px_8px_0px_rgb(239_68_68_/_18%)] hover:text-black hover:bg-[#fed7d7] hover:shadow-[-2px_-1px_4px_0px_#ffffff,2px_1px_4px_0px_rgb(239_68_68_/_18%)]',\r\n ghost: 'text-[#6b7280] bg-transparent border-[rgba(255,255,255,0.2)] shadow-[-4px_-2px_8px_0px_rgba(255,255,255,0.05),4px_2px_8px_0px_rgba(0,0,0,0.05)] hover:text-[#4b5563] hover:bg-[rgba(255,255,255,0.05)] hover:shadow-[-2px_-1px_4px_0px_rgba(255,255,255,0.05),2px_1px_4px_0px_rgba(0,0,0,0.05)] theme-dark:text-white theme-dark:hover:text-white',\r\n};\r\n\r\nconst sizeClasses: Record<ButtonSize, string> = {\r\n sm: 'px-4 py-2 pl-5 text-xs h-8',\r\n md: 'px-6 py-4 pl-7 text-sm h-10',\r\n lg: 'px-8 py-5 pl-9 text-base h-12',\r\n};\r\n\r\n/**\r\n * A versatile button component with multiple variants and loading state.\r\n * \r\n * @example\r\n * ```tsx\r\n * <Button variant=\"primary\" onClick={handleClick}>\r\n * Click me\r\n * </Button>\r\n * \r\n * <Button variant=\"danger\" loading={isLoading}>\r\n * Delete\r\n * </Button>\r\n * ```\r\n */\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(({\r\n variant = 'primary',\r\n size = 'md',\r\n loading = false,\r\n disabled = false,\r\n className,\r\n children,\r\n ...props\r\n}, ref) => {\r\n return (\r\n <button\r\n ref={ref}\r\n className={cn(\r\n 'flex items-center justify-center gap-2.5',\r\n 'font-bold',\r\n 'tracking-[0.4px]',\r\n 'border-2 border-solid',\r\n 'rounded-[40px]',\r\n 'transform translate-x-0 translate-y-0 rotate-0',\r\n 'transition-all duration-200',\r\n 'active:shadow-none',\r\n 'focus-visible focus:outline-none',\r\n 'disabled:cursor-not-allowed disabled:opacity-50',\r\n variantClasses[variant],\r\n sizeClasses[size],\r\n className\r\n )}\r\n style={{ fontFamily: '\"Manrope\", sans-serif' }}\r\n disabled={disabled || loading}\r\n aria-busy={loading}\r\n {...props}\r\n >\r\n {loading && (\r\n <svg\r\n className=\"animate-spin h-6 w-6\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n aria-hidden=\"true\"\r\n >\r\n <circle\r\n className=\"opacity-25\"\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"4\"\r\n />\r\n <path\r\n className=\"opacity-75\"\r\n fill=\"currentColor\"\r\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\r\n />\r\n </svg>\r\n )}\r\n {children}\r\n </button>\r\n );\r\n});\r\n\r\nButton.displayName = 'Button';\r\n","import React, { useState, useId, useRef, useEffect, useCallback } from 'react';\r\nimport { cn } from '../utils/cn';\r\nimport styles from './SubmitButton.module.css';\r\n\r\nexport type SubmitButtonVariant = 'primary' | 'secondary' | 'danger';\r\nexport type SubmitButtonSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Props for the SubmitButton component.\r\n */\r\nexport interface SubmitButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\r\n /** Text displayed after successful submission. Defaults to 'Sent'. */\r\n successText?: string;\r\n /** Async function called on button click. Shows success state on resolve. */\r\n onSubmit?: () => Promise<void> | void;\r\n /** Visual style variant. Defaults to 'primary'. */\r\n variant?: SubmitButtonVariant;\r\n /** Size of the button. Defaults to 'md'. */\r\n size?: SubmitButtonSize;\r\n}\r\n\r\nconst splitText = (text: string) => {\r\n return text.split('').map((char, index) => {\r\n const displayChar = char === ' ' ? '\\u00A0' : char;\r\n\r\n return (\r\n <span key={index} style={{ '--i': index } as React.CSSProperties}>\r\n {displayChar}\r\n </span>\r\n );\r\n });\r\n};\r\n\r\nconst sizeClassMap: Record<SubmitButtonSize, string> = {\r\n sm: styles['button--size-sm'],\r\n md: styles['button--size-md'],\r\n lg: styles['button--size-lg'],\r\n};\r\n\r\nconst variantClasses: Record<SubmitButtonVariant, string> = {\r\n primary: 'text-[#7e97b8] bg-[#dbeafe] border-[rgba(255,255,255,0.333)] shadow-[-4px_-2px_8px_0px_#ffffff,4px_2px_8px_0px_rgb(59_130_246_/_24%)] hover:text-[#516d91] hover:bg-[#bfdbfe] hover:shadow-[-2px_-1px_4px_0px_#ffffff,2px_1px_4px_0px_rgb(59_130_246_/_24%)]',\r\n secondary: 'text-[#6b7280] bg-[#d1fae5] border-[rgba(255,255,255,0.4)] shadow-[-4px_-2px_8px_0px_#ffffff,4px_2px_8px_0px_rgb(34_197_94_/_18%)] hover:text-[#4b5563] hover:bg-[#a7f3d0] hover:shadow-[-2px_-1px_4px_0px_#ffffff,2px_1px_4px_0px_rgb(34_197_94_/_18%)]',\r\n danger: 'text-[#ef4444] bg-[#fecaca] border-[rgba(255,255,255,0.5)] shadow-[-4px_-2px_8px_0px_#ffffff,4px_2px_8px_0px_rgb(239_68_68_/_18%)] hover:text-[#dc2626] hover:bg-[#fed7d7] hover:shadow-[-2px_-1px_4px_0px_#ffffff,2px_1px_4px_0px_rgb(239_68_68_/_18%)]',\r\n};\r\n\r\n/**\r\n * A submit button with animated success state.\r\n * \r\n * @example\r\n * ```tsx\r\n * <SubmitButton onSubmit={handleSubmit}>\r\n * Send Message\r\n * </SubmitButton>\r\n * ```\r\n */\r\nexport const SubmitButton: React.FC<SubmitButtonProps> = ({\r\n children = 'Send Message',\r\n successText = 'Sent',\r\n onSubmit,\r\n disabled,\r\n variant = 'primary',\r\n size = 'md',\r\n className,\r\n ...props\r\n}) => {\r\n const [success, setSuccess] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const shadowFilterId = useId();\r\n const buttonRef = useRef<HTMLButtonElement>(null);\r\n const timeoutRef = useRef<number | undefined>(undefined);\r\n\r\n // Cleanup timeout on unmount to prevent memory leaks\r\n useEffect(() => {\r\n return () => {\r\n if (timeoutRef.current !== undefined) {\r\n window.clearTimeout(timeoutRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n const handleClick = useCallback(async (event: React.MouseEvent<HTMLButtonElement>) => {\r\n // Prevent race condition: don't allow multiple simultaneous submissions\r\n if (onSubmit && !success && !isSubmitting) {\r\n try {\r\n setIsSubmitting(true);\r\n await onSubmit();\r\n setSuccess(true);\r\n // Clear any existing timeout\r\n if (timeoutRef.current !== undefined) {\r\n window.clearTimeout(timeoutRef.current);\r\n }\r\n // Reset success state after 3 seconds\r\n timeoutRef.current = window.setTimeout(() => {\r\n setSuccess(false);\r\n }, 3000);\r\n } catch (error) {\r\n console.error('Submit failed:', error);\r\n // Error state handled - no visual changes per requirements\r\n } finally {\r\n setIsSubmitting(false);\r\n }\r\n }\r\n // Call the original onClick if provided\r\n props.onClick?.(event);\r\n }, [onSubmit, success, isSubmitting, props.onClick]);\r\n\r\n return (\r\n <button\r\n {...props}\r\n ref={buttonRef}\r\n type=\"submit\"\r\n disabled={disabled || isSubmitting}\r\n onClick={handleClick}\r\n className={cn(styles.button, variantClasses[variant], sizeClassMap[size], className)}\r\n aria-label={success ? 'Submission successful' : (props['aria-label'] || 'Submit')}\r\n aria-disabled={disabled || isSubmitting}\r\n aria-busy={isSubmitting}\r\n >\r\n <div className={styles.outline}></div>\r\n <div className={cn(styles.state, styles['state--default'])}>\r\n <div className={styles.icon}>\r\n {isSubmitting ? (\r\n <svg\r\n className=\"animate-spin\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <circle\r\n className=\"opacity-25\"\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"4\"\r\n />\r\n <path\r\n className=\"opacity-75\"\r\n fill=\"currentColor\"\r\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\r\n />\r\n </svg>\r\n ) : (\r\n <svg\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g style={{ filter: `url(#${shadowFilterId})` }}>\r\n <path\r\n d=\"M14.2199 21.63C13.0399 21.63 11.3699 20.8 10.0499 16.83L9.32988 14.67L7.16988 13.95C3.20988 12.63 2.37988 10.96 2.37988 9.78001C2.37988 8.61001 3.20988 6.93001 7.16988 5.60001L15.6599 2.77001C17.7799 2.06001 19.5499 2.27001 20.6399 3.35001C21.7299 4.43001 21.9399 6.21001 21.2299 8.33001L18.3999 16.82C17.0699 20.8 15.3999 21.63 14.2199 21.63ZM7.63988 7.03001C4.85988 7.96001 3.86988 9.06001 3.86988 9.78001C3.86988 10.5 4.85988 11.6 7.63988 12.52L10.1599 13.36C10.3799 13.43 10.5599 13.61 10.6299 13.83L11.4699 16.35C12.3899 19.13 13.4999 20.12 14.2199 20.12C14.9399 20.12 16.0399 19.13 16.9699 16.35L19.7999 7.86001C20.3099 6.32001 20.2199 5.06001 19.5699 4.41001C18.9199 3.76001 17.6599 3.68001 16.1299 4.19001L7.63988 7.03001Z\"\r\n fill=\"#6b7280\"\r\n ></path>\r\n <path\r\n d=\"M10.11 14.4C9.92005 14.4 9.73005 14.33 9.58005 14.18C9.29005 13.89 9.29005 13.41 9.58005 13.12L13.16 9.53C13.45 9.24 13.93 9.24 14.22 9.53C14.51 9.82 14.51 10.3 14.22 10.59L10.64 14.18C10.5 14.33 10.3 14.4 10.11 14.4Z\"\r\n fill=\"#6b7280\"\r\n ></path>\r\n </g>\r\n <defs>\r\n <filter id={shadowFilterId}>\r\n <feDropShadow\r\n dx=\"0\"\r\n dy=\"1\"\r\n stdDeviation=\"0.3\"\r\n floodOpacity=\"0.25\"\r\n ></feDropShadow>\r\n </filter>\r\n </defs>\r\n </svg>\r\n )}\r\n </div>\r\n <p>{splitText(typeof children === 'string' ? children : 'Send Message')}</p>\r\n </div>\r\n <div className={cn(styles.state, styles['state--sent'])}>\r\n <div className={styles.icon}>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n height=\"1em\"\r\n width=\"1em\"\r\n strokeWidth=\"0.5px\"\r\n stroke=\"black\"\r\n >\r\n <g style={{ filter: `url(#${shadowFilterId})` }}>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M12 22.75C6.07 22.75 1.25 17.93 1.25 12C1.25 6.07 6.07 1.25 12 1.25C17.93 1.25 22.75 6.07 22.75 12C22.75 17.93 17.93 22.75 12 22.75ZM12 2.75C6.9 2.75 2.75 6.9 2.75 12C2.75 17.1 6.9 21.25 12 21.25C17.1 21.25 21.25 17.1 21.25 12C21.25 6.9 17.1 2.75 12 2.75Z\"\r\n ></path>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M10.5795 15.5801C10.3795 15.5801 10.1895 15.5001 10.0495 15.3601L7.21945 12.5301C6.92945 12.2401 6.92945 11.7601 7.21945 11.4701C7.50945 11.1801 7.98945 11.1801 8.27945 11.4701L10.5795 13.7701L15.7195 8.6301C16.0095 8.3401 16.4895 8.3401 16.7795 8.6301C17.0695 8.9201 17.0695 9.4001 16.7795 9.6901L11.1095 15.3601C10.9695 15.5001 10.7795 15.5801 10.5795 15.5801Z\"\r\n ></path>\r\n </g>\r\n </svg>\r\n </div>\r\n <p>{splitText(successText)}</p>\r\n </div>\r\n </button>\r\n );\r\n};\r\n","import React from 'react';\nimport { cn } from '../utils/cn';\n\nexport type InputSize = 'sm' | 'md' | 'lg';\n\n/**\n * Props for the Input component.\n */\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /** Size of the input field. Defaults to 'md'. */\n size?: InputSize;\n /** Whether the input is in an error state. */\n error?: boolean;\n}\n\nconst sizeClasses: Record<InputSize, string> = {\n sm: 'px-4 py-2 text-sm',\n md: 'px-5 py-[10px] text-base',\n lg: 'px-6 py-3 text-lg',\n};\n\n/**\n * A styled input component with error state support.\n * \n * @example\n * ```tsx\n * <Input \n * placeholder=\"Enter your email\"\n * type=\"email\"\n * error={hasError}\n * />\n * ```\n */\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(({\n size = 'md',\n error = false,\n className,\n disabled,\n ...props\n}, ref) => {\n return (\n <div className=\"relative inline-flex items-center\">\n <input\n ref={ref}\n className={cn(\n 'bg-transparent',\n 'border-none',\n 'outline-none',\n 'w-[247px]',\n 'rounded-full',\n 'text-text-primary',\n 'transition-colors duration-200',\n 'disabled:text-text-disabled disabled:cursor-not-allowed',\n error ? 'shadow-[inset_2px_5px_10px_var(--input-shadow-error)] cursor-help' : 'shadow-[inset_2px_5px_10px_var(--input-shadow)]',\n sizeClasses[size],\n className\n )}\n style={error ? { paddingRight: '2rem' } : undefined}\n disabled={disabled}\n aria-invalid={error}\n {...props}\n />\n {error && (\n <svg\n className=\"absolute right-2 w-4 h-4 text-danger pointer-events-none flex-shrink-0\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n )}\n </div>\n );\n});\n\nInput.displayName = 'Input';\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\n/**\r\n * Props for the Checkbox component.\r\n */\r\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\r\n /** Label text displayed next to the checkbox. */\r\n label?: string;\r\n /** Whether the checkbox is in an error state. */\r\n error?: boolean;\r\n}\r\n\r\n/**\r\n * A styled checkbox component with animated check mark.\r\n * \r\n * @example\r\n * ```tsx\r\n * <Checkbox \r\n * label=\"Accept terms and conditions\"\r\n * checked={accepted}\r\n * onChange={(e) => setAccepted(e.target.checked)}\r\n * />\r\n * ```\r\n */\r\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(({\r\n label,\r\n error = false,\r\n className,\r\n disabled,\r\n checked,\r\n onChange,\r\n ...props\r\n}, ref) => {\r\n const checkboxId = React.useId();\r\n\r\n return (\r\n <div className={cn('flex items-center space-x-2', disabled && 'cursor-not-allowed', error && !disabled && 'cursor-help', className)}>\r\n <label className={cn('checkbox-container', disabled && 'opacity-50 cursor-not-allowed', error && !disabled && 'cursor-help', !disabled && !error && 'cursor-pointer')}>\r\n <input\r\n ref={ref}\r\n id={checkboxId}\r\n type=\"checkbox\"\r\n disabled={disabled}\r\n checked={checked}\r\n onChange={onChange}\r\n aria-checked={checked}\r\n aria-invalid={error}\r\n aria-disabled={disabled}\r\n {...props}\r\n />\r\n <svg viewBox=\"0 0 64 64\" height=\"1em\" width=\"1em\" aria-hidden=\"true\">\r\n <path\r\n d=\"M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16\"\r\n pathLength=\"575.0541381835938\"\r\n className={cn('checkbox-path', error && 'checkbox-path-error')}\r\n />\r\n </svg>\r\n </label>\r\n {label && (\r\n <label\r\n htmlFor={checkboxId}\r\n className={cn(\r\n 'text-sm font-medium select-none',\r\n disabled ? 'text-text-disabled cursor-not-allowed' : error ? 'text-text-primary cursor-help' : 'text-text-primary cursor-pointer'\r\n )}\r\n >\r\n {label}\r\n </label>\r\n )}\r\n </div>\r\n );\r\n});\r\n\r\nCheckbox.displayName = 'Checkbox';\r\n","import React, { useRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\n/**\r\n * Props for the Toggle component.\r\n */\r\nexport interface ToggleProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\r\n /** Label text displayed next to the toggle. */\r\n label?: string;\r\n /** Whether the toggle is in an error state. */\r\n error?: boolean;\r\n}\r\n\r\n/**\r\n * A toggle switch component with keyboard accessibility.\r\n * \r\n * @example\r\n * ```tsx\r\n * <Toggle \r\n * label=\"Enable notifications\" \r\n * checked={enabled}\r\n * onChange={(e) => setEnabled(e.target.checked)}\r\n * />\r\n * ```\r\n */\r\nexport const Toggle: React.FC<ToggleProps> = ({\r\n label,\r\n error = false,\r\n className,\r\n disabled,\r\n checked,\r\n onChange,\r\n id,\r\n ...props\r\n}) => {\r\n const toggleId = id || React.useId();\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if ((e.key === 'Enter' || e.key === ' ') && !disabled) {\r\n e.preventDefault();\r\n // Use click() to properly trigger the native change event\r\n inputRef.current?.click();\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn('toggle-wrapper', error && 'toggle-wrapper--error', disabled && 'cursor-not-allowed', error && !disabled && 'cursor-help', className)}>\r\n <input\r\n ref={inputRef}\r\n id={toggleId}\r\n className=\"toggle-checkbox\"\r\n type=\"checkbox\"\r\n checked={checked}\r\n onChange={onChange}\r\n disabled={disabled}\r\n role=\"switch\"\r\n aria-checked={checked}\r\n aria-disabled={disabled}\r\n aria-invalid={error}\r\n {...props}\r\n />\r\n <div \r\n className={cn('toggle-container', disabled && 'cursor-not-allowed', error && !disabled && 'cursor-help')}\r\n onKeyDown={handleKeyDown}\r\n tabIndex={disabled ? -1 : 0}\r\n role=\"button\"\r\n aria-hidden=\"true\"\r\n >\r\n <div className=\"toggle-button\">\r\n <div className=\"toggle-button-circles-container\">\r\n {Array.from({ length: 12 }).map((_, index) => (\r\n <div key={index} className=\"toggle-button-circle\" />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n {label && (\r\n <label\r\n htmlFor={toggleId}\r\n className={cn(\r\n 'text-sm font-medium select-none ml-2',\r\n disabled ? 'text-text-disabled cursor-not-allowed' : error ? 'text-text-primary cursor-help' : 'text-text-primary cursor-pointer'\r\n )}\r\n >\r\n {label}\r\n </label>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\n/**\r\n * Props for the Card component.\r\n */\r\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Props for Card section components (CardHeader, CardContent, CardFooter).\r\n */\r\nexport interface CardSectionProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * A card container component with styled shadow and border.\r\n * \r\n * @example\r\n * ```tsx\r\n * <Card>\r\n * <CardHeader>\r\n * <h3>Card Title</h3>\r\n * </CardHeader>\r\n * <CardContent>\r\n * <p>Card content goes here</p>\r\n * </CardContent>\r\n * <CardFooter>\r\n * <Button>Action</Button>\r\n * </CardFooter>\r\n * </Card>\r\n * ```\r\n */\r\nexport const Card: React.FC<CardProps> = ({ className, ...props }) => {\r\n return (\r\n <div\r\n className={cn(\r\n 'card',\r\n 'w-full',\r\n 'rounded-lg border border-border',\r\n 'bg-surface-secondary text-text-primary',\r\n 'shadow-sm',\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Card header section with bottom border.\r\n */\r\nexport const CardHeader: React.FC<CardSectionProps> = ({ className, ...props }) => {\r\n return (\r\n <div\r\n className={cn('flex items-start justify-between gap-4 px-6 py-4 border-b border-border', className)}\r\n {...props}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Main content area of the card.\r\n */\r\nexport const CardContent: React.FC<CardSectionProps> = ({ className, ...props }) => {\r\n return <div className={cn('px-6 py-4', className)} {...props} />;\r\n};\r\n\r\n/**\r\n * Card footer section with top border, typically for actions.\r\n */\r\nexport const CardFooter: React.FC<CardSectionProps> = ({ className, ...props }) => {\r\n return (\r\n <div\r\n className={cn('flex items-center justify-end gap-3 px-6 py-4 border-t border-border', className)}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport type LoaderSize = 'sm' | 'md' | 'lg';\r\nexport type LoaderVariant = 'inline' | 'container';\r\n\r\n/**\r\n * Props for the Spinner component.\r\n */\r\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Size of the spinner. Defaults to 'md'. */\r\n size?: LoaderSize;\r\n}\r\n\r\nconst sizeMultiplier: Record<LoaderSize, number> = {\r\n sm: 0.7,\r\n md: 1,\r\n lg: 1.3,\r\n};\r\n\r\n/**\r\n * A simple animated spinner component.\r\n * \r\n * @example\r\n * ```tsx\r\n * <Spinner size=\"md\" />\r\n * ```\r\n */\r\nexport const Spinner: React.FC<SpinnerProps> = ({ size = 'md', className, ...props }) => {\r\n const fontSize = 8 * sizeMultiplier[size];\r\n\r\n return (\r\n <div \r\n className={cn('loader', className)} \r\n style={{ fontSize: `${fontSize}px` }} \r\n role=\"status\"\r\n aria-label=\"Loading\"\r\n {...props}\r\n >\r\n <div className=\"loader-face loader-face-1\">\r\n <div className=\"loader-circle\"></div>\r\n </div>\r\n <div className=\"loader-face loader-face-2\">\r\n <div className=\"loader-circle\"></div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * Props for the Loader component.\r\n */\r\nexport interface LoaderProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Size of the loader. Defaults to 'md'. */\r\n size?: LoaderSize;\r\n /** Display variant. 'inline' for inline usage, 'container' for full container. Defaults to 'inline'. */\r\n variant?: LoaderVariant;\r\n /** Optional label text displayed below the spinner. */\r\n label?: string;\r\n}\r\n\r\n/**\r\n * A loader component with optional label and container variant.\r\n * \r\n * @example\r\n * ```tsx\r\n * // Inline loader\r\n * <Loader size=\"md\" label=\"Loading...\" />\r\n * \r\n * // Container loader (fills parent container)\r\n * <Loader variant=\"container\" label=\"Please wait...\" />\r\n * ```\r\n */\r\nexport const Loader: React.FC<LoaderProps> = ({\r\n size = 'md',\r\n variant = 'inline',\r\n label,\r\n className,\r\n ...props\r\n}) => {\r\n const fontSize = 8 * sizeMultiplier[size];\r\n\r\n if (variant === 'container') {\r\n return (\r\n <div\r\n className={cn(\r\n 'relative w-full min-h-[8rem] rounded-lg border border-border bg-surface-secondary flex items-center justify-center',\r\n className\r\n )}\r\n role=\"status\"\r\n aria-label={label || 'Loading'}\r\n {...props}\r\n >\r\n <div className=\"flex flex-col items-center gap-3\">\r\n <div className=\"loader\" style={{ fontSize: `${fontSize}px` }} aria-hidden=\"true\">\r\n <div className=\"loader-face loader-face-1\">\r\n <div className=\"loader-circle\"></div>\r\n </div>\r\n <div className=\"loader-face loader-face-2\">\r\n <div className=\"loader-circle\"></div>\r\n </div>\r\n </div>\r\n {label && <span className=\"text-sm text-text-secondary\">{label}</span>}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div \r\n className={cn('inline-flex items-center gap-2', className)} \r\n role=\"status\"\r\n aria-label={label || 'Loading'}\r\n {...props}\r\n >\r\n <div className=\"loader\" style={{ fontSize: `${fontSize}px` }} aria-hidden=\"true\">\r\n <div className=\"loader-face loader-face-1\">\r\n <div className=\"loader-circle\"></div>\r\n </div>\r\n <div className=\"loader-face loader-face-2\">\r\n <div className=\"loader-circle\"></div>\r\n </div>\r\n </div>\r\n {label && <span className=\"text-sm text-text-secondary\">{label}</span>}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\ntype RadioGroupContextValue = {\r\n name?: string;\r\n value?: string;\r\n disabled?: boolean;\r\n onValueChange?: (value: string) => void;\r\n};\r\n\r\nconst RadioGroupContext = React.createContext<RadioGroupContextValue | null>(null);\r\n\r\n/**\r\n * Props for the RadioGroup component.\r\n */\r\nexport interface RadioGroupProps extends Omit<React.HTMLAttributes<HTMLFieldSetElement>, 'onChange'> {\r\n /** Name attribute for all radio buttons in the group. */\r\n name?: string;\r\n /** Legend text displayed above the radio group. */\r\n legend?: string;\r\n /** Currently selected value (controlled). */\r\n value?: string;\r\n /** Default selected value (uncontrolled). */\r\n defaultValue?: string;\r\n /** Whether all radio buttons in the group are disabled. */\r\n disabled?: boolean;\r\n /** Callback when the selected value changes. */\r\n onValueChange?: (value: string) => void;\r\n}\r\n\r\n/**\r\n * A group container for RadioButton components with keyboard navigation.\r\n * \r\n * @example\r\n * ```tsx\r\n * <RadioGroup \r\n * legend=\"Select an option\" \r\n * value={selected}\r\n * onValueChange={setSelected}\r\n * >\r\n * <RadioButton value=\"option1\" label=\"Option 1\" />\r\n * <RadioButton value=\"option2\" label=\"Option 2\" />\r\n * <RadioButton value=\"option3\" label=\"Option 3\" />\r\n * </RadioGroup>\r\n * ```\r\n */\r\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\r\n name,\r\n legend,\r\n value,\r\n defaultValue,\r\n disabled = false,\r\n onValueChange,\r\n className,\r\n children,\r\n ...props\r\n}) => {\r\n const isControlled = value !== undefined;\r\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string | undefined>(defaultValue);\r\n const currentValue = isControlled ? value : uncontrolledValue;\r\n\r\n const handleValueChange = React.useCallback(\r\n (next: string) => {\r\n if (!isControlled) setUncontrolledValue(next);\r\n onValueChange?.(next);\r\n },\r\n [isControlled, onValueChange]\r\n );\r\n\r\n return (\r\n <RadioGroupContext.Provider value={{ name, value: currentValue, disabled, onValueChange: handleValueChange }}>\r\n <fieldset\r\n className={cn('radio-input', disabled && 'opacity-60 cursor-not-allowed', className)}\r\n disabled={disabled}\r\n {...props}\r\n >\r\n {legend && <legend className=\"text-sm font-medium text-text-primary\">{legend}</legend>}\r\n {children}\r\n </fieldset>\r\n </RadioGroupContext.Provider>\r\n );\r\n};\r\n\r\n/**\r\n * Props for the RadioButton component.\r\n */\r\nexport interface RadioButtonProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\r\n /** Label text displayed next to the radio button. */\r\n label?: string;\r\n /** Value of this radio button option. */\r\n value: string;\r\n /** Whether this radio button is disabled. */\r\n disabled?: boolean;\r\n /** Callback when the checked state changes. */\r\n onCheckedChange?: (checked: boolean) => void;\r\n}\r\n\r\n/**\r\n * A styled radio button component that works standalone or within a RadioGroup.\r\n * \r\n * @example\r\n * ```tsx\r\n * // Standalone\r\n * <RadioButton \r\n * value=\"option1\" \r\n * label=\"Option 1\"\r\n * checked={selected === 'option1'}\r\n * onChange={(e) => setSelected(e.target.value)}\r\n * />\r\n * \r\n * // Within RadioGroup (preferred)\r\n * <RadioGroup value={selected} onValueChange={setSelected}>\r\n * <RadioButton value=\"option1\" label=\"Option 1\" />\r\n * </RadioGroup>\r\n * ```\r\n */\r\nexport const RadioButton: React.FC<RadioButtonProps> = ({\r\n label,\r\n value,\r\n disabled: disabledProp,\r\n checked: checkedProp,\r\n defaultChecked,\r\n name: nameProp,\r\n onChange,\r\n onCheckedChange,\r\n className,\r\n ...props\r\n}) => {\r\n const ctx = React.useContext(RadioGroupContext);\r\n const id = React.useId();\r\n\r\n const disabled = Boolean(disabledProp ?? ctx?.disabled);\r\n const name = nameProp ?? ctx?.name;\r\n\r\n const isWithinGroup = Boolean(ctx);\r\n const isControlledStandalone = checkedProp !== undefined;\r\n\r\n const [uncontrolledChecked, setUncontrolledChecked] = React.useState<boolean>(Boolean(defaultChecked));\r\n\r\n const checked = isWithinGroup\r\n ? ctx?.value === value\r\n : isControlledStandalone\r\n ? Boolean(checkedProp)\r\n : uncontrolledChecked;\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const nextChecked = e.target.checked;\r\n\r\n if (isWithinGroup && nextChecked) {\r\n ctx?.onValueChange?.(value);\r\n } else if (!isControlledStandalone) {\r\n setUncontrolledChecked(nextChecked);\r\n }\r\n\r\n onCheckedChange?.(nextChecked);\r\n onChange?.(e);\r\n };\r\n\r\n const labelElement = (\r\n <label htmlFor={id} className={cn(disabled && 'cursor-not-allowed', className)} role=\"radio\" aria-checked={checked} aria-disabled={disabled}>\r\n <input\r\n id={id}\r\n type=\"radio\"\r\n name={name}\r\n value={value}\r\n checked={checked}\r\n disabled={disabled}\r\n onChange={handleChange}\r\n role=\"radio\"\r\n aria-checked={checked}\r\n aria-disabled={disabled}\r\n {...props}\r\n />\r\n <span>{label || ''}</span>\r\n </label>\r\n );\r\n\r\n if (!isWithinGroup) {\r\n return <div className=\"radio-input\">{labelElement}</div>;\r\n }\r\n\r\n return labelElement;\r\n};\r\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\r\n\r\n/**\r\n * Props for the Tooltip component.\r\n */\r\nexport interface TooltipProps {\r\n /** Whether the tooltip is currently open. */\r\n open: boolean;\r\n /** Callback when the tooltip open state should change. */\r\n onOpenChange?: (open: boolean) => void;\r\n /** Content to display inside the tooltip. */\r\n content: React.ReactNode;\r\n /** Position of the tooltip relative to the trigger. Defaults to 'top'. */\r\n position?: TooltipPosition;\r\n /** Delay in milliseconds before showing the tooltip. Defaults to 0. */\r\n delay?: number;\r\n /** Whether the tooltip is disabled. */\r\n disabled?: boolean;\r\n /** The trigger element that the tooltip is attached to. */\r\n children: React.ReactElement<React.HTMLAttributes<HTMLElement>>;\r\n /** Additional className for the wrapper. */\r\n className?: string;\r\n}\r\n\r\nconst positionClasses: Record<TooltipPosition, string> = {\r\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-1',\r\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-1',\r\n left: 'right-full top-1/2 -translate-y-1/2 mr-1',\r\n right: 'left-full top-1/2 -translate-y-1/2 ml-1',\r\n};\r\n\r\nconst arrowClasses: Record<TooltipPosition, string> = {\r\n top: 'top-full left-1/2 -translate-x-1/2 -mt-px',\r\n bottom: 'bottom-full left-1/2 -translate-x-1/2 -mb-px',\r\n left: 'left-full top-1/2 -translate-y-1/2 -ml-px',\r\n right: 'right-full top-1/2 -translate-y-1/2 -mr-px',\r\n};\r\n\r\nconst arrowBorderClasses: Record<TooltipPosition, string> = {\r\n top: 'border-t-border border-r-transparent border-b-transparent border-l-transparent border-t-[6px] border-r-[6px] border-l-[6px]',\r\n bottom: 'border-b-border border-r-transparent border-t-transparent border-l-transparent border-b-[6px] border-r-[6px] border-l-[6px]',\r\n left: 'border-l-border border-r-transparent border-t-transparent border-b-transparent border-l-[6px] border-t-[6px] border-b-[6px]',\r\n right: 'border-r-border border-l-transparent border-t-transparent border-b-transparent border-r-[6px] border-t-[6px] border-b-[6px]',\r\n};\r\n\r\nconst arrowFillClasses: Record<TooltipPosition, string> = {\r\n top: 'top-full left-1/2 -translate-x-1/2 -mt-[5px]',\r\n bottom: 'bottom-full left-1/2 -translate-x-1/2 -mb-[5px]',\r\n left: 'left-full top-1/2 -translate-y-1/2 -ml-[5px]',\r\n right: 'right-full top-1/2 -translate-y-1/2 -mr-[5px]',\r\n};\r\n\r\n/**\r\n * A tooltip component with keyboard and focus support.\r\n * Supports interactive content by not closing when focus moves within the tooltip.\r\n * \r\n * @example\r\n * ```tsx\r\n * const [open, setOpen] = React.useState(false);\r\n * \r\n * <Tooltip \r\n * open={open} \r\n * onOpenChange={setOpen} \r\n * content=\"Helpful information\"\r\n * >\r\n * <button>Hover me</button>\r\n * </Tooltip>\r\n * ```\r\n */\r\nexport const Tooltip: React.FC<TooltipProps> = ({\r\n open,\r\n onOpenChange,\r\n content,\r\n position = 'top',\r\n delay = 0,\r\n disabled = false,\r\n children,\r\n className,\r\n}) => {\r\n const timerRef = React.useRef<number | null>(null);\r\n const tooltipRef = React.useRef<HTMLSpanElement>(null);\r\n const wrapperRef = React.useRef<HTMLSpanElement>(null);\r\n\r\n const clearTimer = () => {\r\n if (timerRef.current !== null) {\r\n window.clearTimeout(timerRef.current);\r\n timerRef.current = null;\r\n }\r\n };\r\n\r\n React.useEffect(() => clearTimer, []);\r\n\r\n const requestOpen = () => {\r\n if (disabled) return;\r\n clearTimer();\r\n if (delay > 0) {\r\n timerRef.current = window.setTimeout(() => onOpenChange?.(true), delay);\r\n return;\r\n }\r\n onOpenChange?.(true);\r\n };\r\n\r\n const requestClose = () => {\r\n clearTimer();\r\n onOpenChange?.(false);\r\n };\r\n\r\n const child = React.Children.only(children) as React.ReactElement<React.HTMLAttributes<HTMLElement>>;\r\n const tooltipId = React.useId();\r\n\r\n const handleBlur = (e: React.FocusEvent<HTMLElement>) => {\r\n // Only close if focus moved outside both tooltip and trigger\r\n const relatedTarget = e.relatedTarget as Node | null;\r\n const isInsideWrapper = wrapperRef.current?.contains(relatedTarget);\r\n const isInsideTooltip = tooltipRef.current?.contains(relatedTarget);\r\n \r\n if (!isInsideWrapper && !isInsideTooltip) {\r\n requestClose();\r\n }\r\n child.props.onBlur?.(e);\r\n };\r\n\r\n return (\r\n <span ref={wrapperRef} className={cn('relative inline-block', className)}>\r\n {React.cloneElement(child, {\r\n 'aria-describedby': open && !disabled ? tooltipId : undefined,\r\n onMouseEnter: (e: React.MouseEvent<HTMLElement>) => {\r\n child.props.onMouseEnter?.(e);\r\n requestOpen();\r\n },\r\n onMouseLeave: (e: React.MouseEvent<HTMLElement>) => {\r\n child.props.onMouseLeave?.(e);\r\n // Don't close if moving to tooltip content\r\n const relatedTarget = e.relatedTarget as Node | null;\r\n if (!tooltipRef.current?.contains(relatedTarget)) {\r\n requestClose();\r\n }\r\n },\r\n onFocus: (e: React.FocusEvent<HTMLElement>) => {\r\n child.props.onFocus?.(e);\r\n requestOpen();\r\n },\r\n onBlur: handleBlur,\r\n } as Partial<React.HTMLAttributes<HTMLElement>>)}\r\n\r\n {open && !disabled && (\r\n <span\r\n ref={tooltipRef}\r\n id={tooltipId}\r\n role=\"tooltip\"\r\n className={cn(\r\n 'absolute z-50',\r\n positionClasses[position],\r\n 'whitespace-nowrap',\r\n 'rounded-md border border-border bg-surface text-text-primary',\r\n 'px-3 py-2 text-xs shadow-md'\r\n )}\r\n onMouseEnter={requestOpen}\r\n onMouseLeave={requestClose}\r\n >\r\n {content}\r\n {/* Arrow border */}\r\n <span\r\n className={cn(\r\n 'absolute w-0 h-0 pointer-events-none',\r\n arrowClasses[position],\r\n arrowBorderClasses[position]\r\n )}\r\n />\r\n {/* Arrow fill */}\r\n <span\r\n className={cn(\r\n 'absolute w-0 h-0 bg-surface pointer-events-none',\r\n arrowFillClasses[position],\r\n position === 'top' && 'border-t-[5px] border-r-[5px] border-l-[5px] border-t-surface border-r-transparent border-l-transparent',\r\n position === 'bottom' && 'border-b-[5px] border-r-[5px] border-l-[5px] border-b-surface border-r-transparent border-l-transparent',\r\n position === 'left' && 'border-l-[5px] border-t-[5px] border-b-[5px] border-l-surface border-t-transparent border-b-transparent',\r\n position === 'right' && 'border-r-[5px] border-t-[5px] border-b-[5px] border-r-surface border-t-transparent border-b-transparent'\r\n )}\r\n />\r\n </span>\r\n )}\r\n </span>\r\n );\r\n};\r\n","import React, { createContext, useContext, useState, ReactNode } from 'react';\r\n\r\nexport type Theme = 'dark' | 'light';\r\n\r\ninterface ThemeContextType {\r\n theme: Theme;\r\n setTheme: (theme: Theme) => void;\r\n}\r\n\r\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\r\n\r\ninterface ThemeProviderProps {\r\n children: ReactNode;\r\n defaultTheme?: Theme;\r\n}\r\n\r\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\r\n children,\r\n defaultTheme\r\n}) => {\r\n // Initialize theme from localStorage or system preference or default\r\n const getInitialTheme = (): Theme => {\r\n // SSR-safe: Check localStorage first\r\n if (typeof window !== 'undefined') {\r\n const stored = localStorage.getItem('theme') as Theme | null;\r\n if (stored === 'light' || stored === 'dark') {\r\n return stored;\r\n }\r\n }\r\n \r\n // Check system preference\r\n if (typeof window !== 'undefined' && window.matchMedia) {\r\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n return prefersDark ? 'dark' : 'light';\r\n }\r\n \r\n // Fall back to provided default or 'dark'\r\n return defaultTheme || 'dark';\r\n };\r\n\r\n const [theme, setTheme] = useState<Theme>(getInitialTheme);\r\n\r\n // Persist theme to localStorage and apply to document\r\n const handleSetTheme = React.useCallback((newTheme: Theme) => {\r\n setTheme(newTheme);\r\n if (typeof window !== 'undefined') {\r\n localStorage.setItem('theme', newTheme);\r\n }\r\n }, []);\r\n\r\n // Apply theme class to document element\r\n React.useEffect(() => {\r\n if (typeof document === 'undefined') return;\r\n const root = document.documentElement;\r\n if (theme === 'light') {\r\n root.classList.add('theme-light');\r\n root.classList.remove('theme-dark');\r\n } else {\r\n root.classList.add('theme-dark');\r\n root.classList.remove('theme-light');\r\n }\r\n }, [theme]);\r\n\r\n // Listen for system theme changes\r\n React.useEffect(() => {\r\n if (typeof window === 'undefined' || !window.matchMedia) return;\r\n \r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n const handleChange = (e: MediaQueryListEvent) => {\r\n // Only update if no theme is stored in localStorage\r\n if (typeof window !== 'undefined' && !localStorage.getItem('theme')) {\r\n setTheme(e.matches ? 'dark' : 'light');\r\n }\r\n };\r\n \r\n // Modern browsers\r\n if (mediaQuery.addEventListener) {\r\n mediaQuery.addEventListener('change', handleChange);\r\n return () => mediaQuery.removeEventListener('change', handleChange);\r\n }\r\n // Fallback for older browsers\r\n else if (mediaQuery.addListener) {\r\n mediaQuery.addListener(handleChange);\r\n return () => mediaQuery.removeListener(handleChange);\r\n }\r\n }, []);\r\n\r\n return (\r\n <ThemeContext.Provider value={{ theme, setTheme: handleSetTheme }}>\r\n {children}\r\n </ThemeContext.Provider>\r\n );\r\n};\r\n\r\nexport const useTheme = (): ThemeContextType => {\r\n const context = useContext(ThemeContext);\r\n if (context === undefined) {\r\n throw new Error('useTheme must be used within a ThemeProvider');\r\n }\r\n return context;\r\n};\r\n","import React from 'react';\r\nimport { useTheme } from '../theme/ThemeProvider';\r\nimport { cn } from '../utils/cn';\r\n\r\n/**\r\n * Props for the ThemeSwitch component.\r\n */\r\nexport interface ThemeSwitchProps {\r\n /** Additional className for the wrapper. */\r\n className?: string;\r\n /** Whether to show the current theme label. Defaults to true. */\r\n showLabel?: boolean;\r\n}\r\n\r\n/**\r\n * An animated theme toggle switch between light and dark modes.\r\n * Uses the ThemeProvider context to manage theme state.\r\n * \r\n * @example\r\n * ```tsx\r\n * <ThemeSwitch showLabel={false} />\r\n * ```\r\n */\r\nexport const ThemeSwitch: React.FC<ThemeSwitchProps> = ({\r\n className,\r\n showLabel = true,\r\n}) => {\r\n const { theme, setTheme } = useTheme();\r\n const isDark = theme === 'dark';\r\n\r\n const handleToggle = () => {\r\n setTheme(isDark ? 'light' : 'dark');\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleToggle();\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn('flex items-center gap-3', className)}>\r\n <label \r\n className=\"theme-switch cursor-pointer\"\r\n onKeyDown={handleKeyDown}\r\n tabIndex={0}\r\n role=\"switch\"\r\n aria-checked={isDark}\r\n aria-label={isDark ? 'Switch to light mode' : 'Switch to dark mode'}\r\n >\r\n <input\r\n type=\"checkbox\"\r\n className=\"theme-switch__checkbox\"\r\n checked={isDark}\r\n onChange={handleToggle}\r\n aria-hidden=\"true\"\r\n />\r\n <div className=\"theme-switch__container\">\r\n <div className=\"theme-switch__clouds\"></div>\r\n <div className=\"theme-switch__stars-container\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 144 55\" fill=\"none\">\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M135.831 3.00688C135.055 3.85027 134.111 4.29946 133 4.35447C134.111 4.40947 135.055 4.85867 135.831 5.71123C136.607 6.55462 136.996 7.56303 136.996 8.72727C136.996 7.95722 137.172 7.25134 137.525 6.59129C137.886 5.93124 138.372 5.39954 138.98 5.00535C139.598 4.60199 140.268 4.39114 141 4.35447C139.88 4.2903 138.936 3.85027 138.16 3.00688C137.384 2.16348 136.996 1.16425 136.996 0C136.996 1.16425 136.607 2.16348 135.831 3.00688ZM31 23.3545C32.1114 23.2995 33.0551 22.8503 33.8313 22.0069C34.6075 21.1635 34.9956 20.1642 34.9956 19C34.9956 20.1642 35.3837 21.1635 36.1599 22.0069C36.9361 22.8503 37.8798 23.2903 39 23.3545C38.2679 23.3911 37.5976 23.602 36.9802 24.0053C36.3716 24.3995 35.8864 24.9312 35.5248 25.5913C35.172 26.2513 34.9956 26.9572 34.9956 27.7273C34.9956 26.563 34.6075 25.5546 33.8313 24.7112C33.0551 23.8587 32.1114 23.4095 31 23.3545ZM0 36.3545C1.11136 36.2995 2.05513 35.8503 2.83131 35.0069C3.6075 34.1635 3.99559 33.1642 3.99559 32C3.99559 33.1642 4.38368 34.1635 5.15987 35.0069C5.93605 35.8503 6.87982 36.2903 8 36.3545C7.26792 36.3911 6.59757 36.602 5.98015 37.0053C5.37155 37.3995 4.88644 37.9312 4.52481 38.5913C4.172 39.2513 3.99559 39.9572 3.99559 40.7273C3.99559 39.563 3.6075 38.5546 2.83131 37.7112C2.05513 36.8587 1.11136 36.4095 0 36.3545ZM56.8313 24.0069C56.0551 24.8503 55.1114 25.2995 54 25.3545C55.1114 25.4095 56.0551 25.8587 56.8313 26.7112C57.6075 27.5546 57.9956 28.563 57.9956 29.7273C57.9956 28.9572 58.172 28.2513 58.5248 27.5913C58.8864 26.9312 59.3716 26.3995 59.9802 26.0053C60.5976 25.602 61.2679 25.3911 62 25.3545C60.8798 25.2903 59.9361 24.8503 59.1599 24.0069C58.3837 23.1635 57.9956 22.1642 57.9956 21C57.9956 22.1642 57.6075 23.1635 56.8313 24.0069ZM81 25.3545C82.1114 25.2995 83.0551 24.8503 83.8313 24.0069C84.6075 23.1635 84.9956 22.1642 84.9956 21C84.9956 22.1642 85.3837 23.1635 86.1599 24.0069C86.9361 24.8503 87.8798 25.2903 89 25.3545C88.2679 25.3911 87.5976 25.602 86.9802 26.0053C86.3716 26.3995 85.8864 26.9312 85.5248 27.5913C85.172 28.2513 84.9956 28.9572 84.9956 29.7273C84.9956 28.563 84.6075 27.5546 83.8313 26.7112C83.0551 25.8587 82.1114 25.4095 81 25.3545ZM136 36.3545C137.111 36.2995 138.055 35.8503 138.831 35.0069C139.607 34.1635 139.996 33.1642 139.996 32C139.996 33.1642 140.384 34.1635 141.16 35.0069C141.936 35.8503 142.88 36.2903 144 36.3545C143.268 36.3911 142.598 36.602 141.98 37.0053C141.372 37.3995 140.886 37.9312 140.525 38.5913C140.172 39.2513 139.996 39.9572 139.996 40.7273C139.996 39.563 139.607 38.5546 138.831 37.7112C138.055 36.8587 137.111 36.4095 136 36.3545ZM101.831 49.0069C101.055 49.8503 100.111 50.2995 99 50.3545C100.111 50.4095 101.055 50.8587 101.831 51.7112C102.607 52.5546 102.996 53.563 102.996 54.7273C102.996 53.9572 103.172 53.2513 103.525 52.5913C103.886 51.9312 104.372 51.3995 104.98 51.0053C105.598 50.602 106.268 50.3911 107 50.3545C105.88 50.2903 104.936 49.8503 104.16 49.0069C103.384 48.1635 102.996 47.1642 102.996 46C102.996 47.1642 102.607 48.1635 101.831 49.0069Z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n </div>\r\n <div className=\"theme-switch__circle-container\">\r\n <div className=\"theme-switch__sun-moon-container\">\r\n <div className=\"theme-switch__moon\">\r\n <div className=\"theme-switch__spot\"></div>\r\n <div className=\"theme-switch__spot\"></div>\r\n <div className=\"theme-switch__spot\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </label>\r\n {showLabel && (\r\n <span className=\"text-sm font-medium text-text-primary\">\r\n {isDark ? 'Dark' : 'Light'}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\nimport { Input } from './Input';\r\nimport { Button } from './Button';\r\n\r\nexport type FormSize = 'sm' | 'md' | 'lg' | 'full';\r\n\r\n/**\r\n * Props for the Form component.\r\n */\r\nexport interface FormProps extends React.FormHTMLAttributes<HTMLFormElement> {\r\n /** Form title displayed at the top. */\r\n title?: string;\r\n /** Whether to show the logo placeholder. */\r\n showLogo?: boolean;\r\n /** Footer content rendered below the form. */\r\n footer?: React.ReactNode;\r\n /** Responsive size preset. Defaults to 'md'. */\r\n size?: FormSize;\r\n /** Custom className for additional styling. */\r\n className?: string;\r\n}\r\n\r\n/**\r\n * Props for FormField component.\r\n */\r\nexport interface FormFieldProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\r\n /** Label text displayed above the input. */\r\n label?: string;\r\n /** Error state or error message string. */\r\n error?: boolean | string;\r\n /** Helper text displayed below the input. */\r\n helperText?: string;\r\n /** Size of the input field. */\r\n size?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nexport interface FormFooterLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nconst sizeClasses: Record<FormSize, string> = {\r\n sm: 'max-w-xs w-full', // 320px\r\n md: 'max-w-sm w-full', // 384px\r\n lg: 'max-w-md w-full', // 448px\r\n full: 'w-full',\r\n};\r\n\r\n/**\r\n * Form container with responsive sizing and visual styling.\r\n * \r\n * @example\r\n * ```tsx\r\n * <Form title=\"Login\" size=\"md\" onSubmit={handleSubmit}>\r\n * <FormField label=\"Email\" type=\"email\" required />\r\n * <FormField label=\"Password\" type=\"password\" required />\r\n * <FormButton>Sign In</FormButton>\r\n * </Form>\r\n * ```\r\n */\r\nconst FormContainer: React.FC<React.HTMLAttributes<HTMLDivElement> & { size?: FormSize }> = ({\r\n size = 'md',\r\n className,\r\n children,\r\n ...props\r\n}) => {\r\n return (\r\n <div\r\n className={cn(\r\n 'relative flex justify-center items-center',\r\n 'bg-surface-tertiary rounded-[24px]',\r\n 'shadow-[0_4px_8px_rgba(0,0,0,0.2),0_8px_16px_rgba(0,0,0,0.2),0_0_8px_rgba(255,255,255,0.1),0_0_16px_rgba(255,255,255,0.08)]',\r\n 'z-[8]',\r\n sizeClasses[size],\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nconst FormBox: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\r\n className,\r\n children,\r\n ...props\r\n}) => {\r\n return (\r\n <div\r\n className={cn(\r\n 'relative bg-surface-tertiary rounded-[24px] p-7 z-[10]',\r\n 'backdrop-blur-[15px]',\r\n 'shadow-[inset_0_40px_60px_-8px_rgba(255,255,255,0.12),inset_4px_0_12px_-6px_rgba(255,255,255,0.12),inset_0_0_12px_-4px_rgba(255,255,255,0.12)]',\r\n 'w-full',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nconst FormLogo: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({ className, ...props }) => {\r\n return (\r\n <div\r\n className={cn(\r\n 'w-[65px] h-[65px] rounded-[20px] border-2 border-white',\r\n 'bg-gradient-to-br from-white/20 to-black/20',\r\n 'shadow-[8px_8px_16px_rgba(0,0,0,0.2),-8px_-8px_16px_rgba(255,255,255,0.06)]',\r\n 'flex justify-center items-center relative',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"absolute bottom-[10px] w-1/2 h-[20%] rounded-tl-[40px] rounded-tr-[40px] rounded-br-[20px] rounded-bl-[20px] border-[2.5px] border-white\" />\r\n <div className=\"absolute top-[10px] w-[30%] h-[30%] rounded-full border-[2.5px] border-white\" />\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * A styled form component with responsive sizing.\r\n * \r\n * @example\r\n * ```tsx\r\n * <Form title=\"Contact Us\" size=\"md\">\r\n * <FormField label=\"Name\" required />\r\n * <FormField label=\"Email\" type=\"email\" required />\r\n * <FormButton>Submit</FormButton>\r\n * </Form>\r\n * ```\r\n */\r\nexport const Form: React.FC<FormProps> = ({\r\n title,\r\n showLogo = false,\r\n footer,\r\n size = 'md',\r\n className,\r\n children,\r\n ...props\r\n}) => {\r\n return (\r\n <FormContainer size={size}>\r\n <FormBox>\r\n <form\r\n className={cn('flex justify-center items-center flex-col gap-[10px]', className)}\r\n {...props}\r\n >\r\n {showLogo && (\r\n <div className=\"flex justify-center items-center mb-2\">\r\n <FormLogo />\r\n </div>\r\n )}\r\n {title && (\r\n <div className=\"w-full text-center text-2xl font-bold py-1.5 text-text-primary flex justify-center items-center\">\r\n {title}\r\n </div>\r\n )}\r\n {children}\r\n </form>\r\n {footer && (\r\n <div className=\"w-full text-left text-text-secondary text-xs mt-4\">\r\n {footer}\r\n </div>\r\n )}\r\n </FormBox>\r\n </FormContainer>\r\n );\r\n};\r\n\r\n/**\r\n * Form field component with label and error support.\r\n * \r\n * @example\r\n * ```tsx\r\n * <FormField \r\n * label=\"Email\" \r\n * type=\"email\" \r\n * error=\"Please enter a valid email\"\r\n * required \r\n * />\r\n * ```\r\n */\r\nexport const FormField: React.FC<FormFieldProps> = ({\r\n label,\r\n error,\r\n helperText,\r\n className,\r\n size,\r\n id,\r\n ...props\r\n}) => {\r\n const fieldId = id || React.useId();\r\n const errorMessage = typeof error === 'string' ? error : undefined;\r\n const hasError = Boolean(error);\r\n\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label htmlFor={fieldId} className=\"block text-text-primary text-sm mb-1.5\">\r\n {label}\r\n </label>\r\n )}\r\n <div className=\"flex justify-center\">\r\n <Input\r\n id={fieldId}\r\n className={cn(\r\n 'p-3 border-none rounded-xl bg-surface text-text-primary text-sm outline-none',\r\n 'focus:border focus:border-border-focus',\r\n className\r\n )}\r\n error={hasError}\r\n size={size}\r\n aria-invalid={hasError}\r\n aria-describedby={errorMessage ? `${fieldId}-error` : helperText ? `${fieldId}-helper` : undefined}\r\n {...props}\r\n />\r\n </div>\r\n {errorMessage && (\r\n <p id={`${fieldId}-error`} className=\"text-red-500 text-xs mt-1\" role=\"alert\">\r\n {errorMessage}\r\n </p>\r\n )}\r\n {helperText && !errorMessage && (\r\n <p id={`${fieldId}-helper`} className=\"text-text-secondary text-xs mt-1\">\r\n {helperText}\r\n </p>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * Form button component with variant support.\r\n */\r\nexport const FormButton: React.FC<React.ButtonHTMLAttributes<HTMLButtonElement> & { variant?: 'primary' | 'google' }> = ({\r\n variant = 'primary',\r\n className,\r\n children,\r\n ...props\r\n}) => {\r\n if (variant === 'google') {\r\n return (\r\n <button\r\n className={cn(\r\n 'w-full h-10 border-none rounded-[20px] text-sm font-semibold cursor-pointer',\r\n 'grid place-content-center gap-2.5 bg-surface-secondary text-text-primary',\r\n 'transition-all duration-300',\r\n 'shadow-[inset_0px_3px_6px_-4px_rgba(255,255,255,0.6),inset_0px_-3px_6px_-2px_rgba(0,0,0,0.8)]',\r\n 'hover:bg-white/25 hover:shadow-[inset_0px_3px_6px_rgba(255,255,255,0.6),inset_0px_-3px_6px_rgba(0,0,0,0.8),0px_0px_8px_rgba(255,255,255,0.05)]',\r\n 'flex justify-center items-center gap-2.5',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n }\r\n\r\n return (\r\n <Button\r\n variant=\"primary\"\r\n className={cn(\r\n 'w-full h-10 rounded-[20px] text-sm font-semibold mt-1.5',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </Button>\r\n );\r\n};\r\n\r\n/**\r\n * Form footer component for additional content.\r\n */\r\nexport const FormFooter: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\r\n className,\r\n children,\r\n ...props\r\n}) => {\r\n return (\r\n <div\r\n className={cn(\r\n 'w-full text-left text-text-secondary text-xs',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * Footer link component with hover animation.\r\n */\r\nexport const FormFooterLink: React.FC<FormFooterLinkProps> = ({\r\n className,\r\n children,\r\n ...props\r\n}) => {\r\n return (\r\n <a\r\n className={cn(\r\n 'relative text-text-secondary font-semibold no-underline transition-colors duration-300 ease-in-out',\r\n 'hover:text-white',\r\n 'after:content-[\"\"] after:absolute after:left-0 after:bottom-[-2px] after:w-0 after:rounded-md after:h-[1px] after:bg-current after:transition-[width] after:duration-300 after:ease-in-out',\r\n 'hover:after:w-full',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </a>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\nimport styles from './SearchBar.module.css';\r\n\r\nexport type SearchBarSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Props for the SearchBar component.\r\n */\r\nexport interface SearchBarProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'className' | 'size'> {\r\n /** Size variant of the search bar. Defaults to 'md'. */\r\n size?: SearchBarSize;\r\n /** Additional className for the container. */\r\n className?: string;\r\n /** Additional className for the input element. */\r\n inputClassName?: string;\r\n /** Additional className for the inner search container. */\r\n searchContainerClassName?: string;\r\n}\r\n\r\nconst sizeClasses: Record<SearchBarSize, { container: string; input: string }> = {\r\n sm: {\r\n container: styles['container--size-sm'],\r\n input: styles['input--size-sm'],\r\n },\r\n md: {\r\n container: styles['container--size-md'],\r\n input: styles['input--size-md'],\r\n },\r\n lg: {\r\n container: styles['container--size-lg'],\r\n input: styles['input--size-lg'],\r\n },\r\n};\r\n\r\n/**\r\n * A styled search input component with responsive sizing.\r\n * Uses CSS-based sizing for better performance and SSR compatibility.\r\n * \r\n * @example\r\n * ```tsx\r\n * <SearchBar \r\n * size=\"md\" \r\n * placeholder=\"Search...\" \r\n * onChange={handleSearch}\r\n * />\r\n * ```\r\n */\r\nexport const SearchBar = React.forwardRef<HTMLInputElement, SearchBarProps>(({\r\n size = 'md',\r\n className,\r\n inputClassName,\r\n searchContainerClassName,\r\n placeholder,\r\n ...props\r\n}, ref) => {\r\n const sizeClass = sizeClasses[size];\r\n\r\n return (\r\n <div\r\n className={cn(\r\n styles.container, \r\n sizeClass.container,\r\n // Responsive width using CSS instead of JavaScript calculation\r\n 'min-w-[200px] md:min-w-[260px] lg:min-w-[320px]',\r\n 'w-full max-w-md',\r\n className\r\n )}\r\n >\r\n <div className={cn(styles['search-container'], searchContainerClassName)}>\r\n <input\r\n ref={ref}\r\n className={cn(styles.input, sizeClass.input, inputClassName)}\r\n type=\"search\"\r\n placeholder={placeholder}\r\n {...props}\r\n />\r\n <svg viewBox=\"0 0 24 24\" className={styles.search__icon} aria-hidden=\"true\" focusable=\"false\">\r\n <g>\r\n <path d=\"M21.53 20.47l-3.66-3.66C19.195 15.24 20 13.214 20 11c0-4.97-4.03-9-9-9s-9 4.03-9 9 4.03 9 9 9c2.215 0 4.24-.804 5.808-2.13l3.66 3.66c.147.146.34.22.53.22s.385-.073.53-.22c.295-.293.295-.767.002-1.06zM3.5 11c0-4.135 3.365-7.5 7.5-7.5s7.5 3.365 7.5 7.5-3.365 7.5-7.5 7.5-7.5-3.365-7.5-7.5z\"></path>\r\n </g>\r\n </svg>\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nSearchBar.displayName = 'SearchBar';\r\n","import React from 'react';\nimport { cn } from '../utils/cn';\nimport styles from './SocialLinks.module.css';\n\nexport type SocialPlatform = 'linkedin' | 'github' | 'instagram' | 'youtube' | 'facebook' | 'spotify' | 'telegram' | 'pinterest' | 'x';\n\nexport interface SocialLink {\n platform: SocialPlatform;\n url: string;\n label?: string;\n}\n\nexport type SocialLinksOrientation = 'vertical' | 'horizontal';\n\nexport interface SocialLinksProps extends React.HTMLAttributes<HTMLUListElement> {\n links: SocialLink[];\n className?: string;\n orientation?: SocialLinksOrientation;\n}\n\nconst getSocialIcon = (platform: SocialPlatform) => {\n switch (platform) {\n case 'linkedin':\n return (\n <path\n d=\"M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854zm4.943 12.248V6.169H2.542v7.225zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248S2.4 3.226 2.4 3.934c0 .694.521 1.248 1.327 1.248zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016l.016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225z\"\n fill=\"currentColor\"\n />\n );\n case 'github':\n return (\n <path\n d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8\"\n fill=\"currentColor\"\n />\n );\n case 'instagram':\n return (\n <path\n d=\"M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.9 3.9 0 0 0-1.417.923A3.9 3.9 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.9 3.9 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.9 3.9 0 0 0-.923-1.417A3.9 3.9 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599s.453.546.598.92c.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.5 2.5 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.5 2.5 0 0 1-.92-.598 2.5 2.5 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233s.008-2.388.046-3.231c.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92s.546-.453.92-.598c.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92m-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217m0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334\"\n fill=\"currentColor\"\n />\n );\n case 'youtube':\n return (\n <path\n d=\"M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.01 2.01 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.01 2.01 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31 31 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.01 2.01 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A100 100 0 0 1 7.858 2zM6.4 5.209v4.818l4.157-2.408z\"\n fill=\"currentColor\"\n />\n );\n case 'facebook':\n return (\n <path\n d=\"M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951z\"\n fill=\"currentColor\"\n />\n );\n case 'spotify':\n return (\n <path\n d=\"M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm3.67 11.56c-.13.21-.41.28-.62.15-1.69-1.03-3.81-1.26-6.3-.69-.24.05-.48-.1-.53-.34-.05-.24.1-.48.34-.53 2.7-.63 5.01-.37 6.89.81.21.13.28.41.15.62zm.89-1.96c-.16.25-.5.33-.75.17-1.93-1.18-4.87-1.52-7.15-.83-.29.08-.59-.1-.67-.39-.08-.29.1-.59.39-.67 2.58-.78 5.8-.4 7.98.95.25.16.33.5.17.75zm.11-2.08C10.15 6.6 6.03 6.4 3.48 7.23c-.36.11-.74-.06-.85-.42-.11-.36.06-.74.42-.85 2.99-.91 7.49-.68 10.27 1.07.32.19.42.63.23.95-.19.32-.63.42-.95.23z\"\n fill=\"currentColor\"\n />\n );\n case 'telegram':\n return (\n <path\n d=\"M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576zm6.787-8.201L1.591 6.602l4.339 2.76z\"\n fill=\"currentColor\"\n />\n );\n case 'pinterest':\n return (\n <path\n d=\"M8 0a8 8 0 0 0-2.915 15.452c-.07-.633-.134-1.606.027-2.297.146-.625.937-3.977.937-3.977s-.239-.479-.239-1.187c0-1.113.645-1.943 1.448-1.943.683 0 1.012.512 1.012 1.127 0 .686-.437 1.712-.663 2.663-.188.796.4 1.446 1.185 1.446 1.422 0 2.515-1.5 2.515-3.664 0-1.915-1.377-3.254-3.342-3.254-2.276 0-3.612 1.707-3.612 3.471 0 .688.265 1.425.595 1.826a.24.24 0 0 1 .056.23c-.061.252-.196.796-.223.907-.035.146-.116.177-.268.107-1.001-.465-1.624-1.926-1.624-3.1 0-2.523 1.834-4.84 5.286-4.84 2.775 0 4.932 1.977 4.932 4.62 0 2.757-1.739 4.976-4.151 4.976-.811 0-1.573-.421-1.834-.919l-.498 1.902c-.181.695-.669 1.566-.995 2.097A8 8 0 1 0 8 0z\"\n fill=\"currentColor\"\n />\n );\n case 'x':\n return (\n <path\n d=\"M9.653 7.722 15.5 1h-1.18L9.11 7.077 5.5 1H1l6.086 8.844L1 15h1.18l5.21-6.06L11.5 15H16zM2.5 2.18h1.5L13.5 13.82H12z\"\n fill=\"currentColor\"\n />\n );\n default:\n return null;\n }\n};\n\nconst getSocialLabel = (platform: SocialPlatform): string => {\n const labels: Record<SocialPlatform, string> = {\n linkedin: 'LinkedIn',\n github: 'GitHub',\n instagram: 'Instagram',\n youtube: 'YouTube',\n facebook: 'Facebook',\n spotify: 'Spotify',\n telegram: 'Telegram',\n pinterest: 'Pinterest',\n x: 'X',\n };\n return labels[platform];\n};\n\nexport const SocialLinks = React.forwardRef<HTMLUListElement, SocialLinksProps>(({\n links,\n className,\n orientation = 'vertical',\n ...props\n}, ref) => {\n return (\n <ul \n ref={ref} \n className={cn(\n styles.list, \n orientation === 'horizontal' && styles.listHorizontal,\n className\n )} \n {...props}\n >\n {links.map((link, index) => {\n const label = link.label || getSocialLabel(link.platform);\n const icon = getSocialIcon(link.platform);\n \n return (\n <li key={`${link.platform}-${index}`} className={styles.iconContent}>\n <a\n href={link.url}\n aria-label={label}\n data-social={link.platform}\n className={styles.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <div className={styles.filled}></div>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n fill=\"currentColor\"\n viewBox=\"0 0 16 16\"\n xmlSpace=\"preserve\"\n aria-hidden=\"true\"\n >\n {icon}\n </svg>\n </a>\n <div className={cn(\n styles.tooltip,\n orientation === 'horizontal' && styles.tooltipHorizontal\n )}>{label}</div>\n </li>\n );\n })}\n </ul>\n );\n});\n\nSocialLinks.displayName = 'SocialLinks';\n\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\nimport styles from './ContextMenu.module.css';\r\n\r\nexport type ContextMenuItemVariant = 'default' | 'danger' | 'accent';\r\n\r\nexport interface ContextMenuItemData {\r\n id: string;\r\n label: string;\r\n icon: React.ReactNode;\r\n variant?: ContextMenuItemVariant;\r\n onClick?: () => void;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface ContextMenuGroupData {\r\n id: string;\r\n items: ContextMenuItemData[];\r\n variant?: 'default' | 'accent';\r\n}\r\n\r\nexport interface ContextMenuProps extends React.HTMLAttributes<HTMLDivElement> {\r\n groups: ContextMenuGroupData[];\r\n showSeparators?: boolean;\r\n}\r\n\r\nexport const ContextMenu: React.FC<ContextMenuProps> = ({\r\n groups,\r\n showSeparators = true,\r\n className,\r\n ...props\r\n}) => {\r\n return (\r\n <div className={cn(styles.card, className)} {...props}>\r\n {groups.map((group, groupIndex) => (\r\n <React.Fragment key={group.id}>\r\n <ContextMenuGroup\r\n group={group}\r\n isLastGroup={groupIndex === groups.length - 1}\r\n />\r\n {showSeparators && groupIndex < groups.length - 1 && (\r\n <ContextMenuSeparator />\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport interface ContextMenuGroupProps {\r\n group: ContextMenuGroupData;\r\n isLastGroup: boolean;\r\n}\r\n\r\nexport const ContextMenuGroup: React.FC<ContextMenuGroupProps> = ({\r\n group,\r\n isLastGroup,\r\n}) => {\r\n const isAccentGroup = group.variant === 'accent' || (isLastGroup && group.items.some(item => item.variant === 'accent'));\r\n \r\n return (\r\n <ul className={cn(styles.list, isAccentGroup && styles.accent)}>\r\n {group.items.map((item) => (\r\n <ContextMenuItem\r\n key={item.id}\r\n item={item}\r\n isAccentGroup={isAccentGroup}\r\n />\r\n ))}\r\n </ul>\r\n );\r\n};\r\n\r\nexport interface ContextMenuItemProps {\r\n item: ContextMenuItemData;\r\n isAccentGroup: boolean;\r\n}\r\n\r\nexport const ContextMenuItem: React.FC<ContextMenuItemProps> = ({\r\n item,\r\n isAccentGroup: _isAccentGroup,\r\n}) => {\r\n const variant = item.variant || 'default';\r\n const isDanger = variant === 'danger';\r\n\r\n const handleClick = () => {\r\n if (!item.disabled && item.onClick) {\r\n item.onClick();\r\n }\r\n };\r\n\r\n const renderIcon = () => {\r\n if (!item.icon) return null;\r\n \r\n if (React.isValidElement(item.icon)) {\r\n return React.cloneElement(item.icon as React.ReactElement<any>, {\r\n stroke: 'currentColor',\r\n width: 19,\r\n height: 19,\r\n });\r\n }\r\n \r\n return item.icon;\r\n };\r\n\r\n return (\r\n <li\r\n className={cn(\r\n styles.element,\r\n isDanger && styles.delete\r\n )}\r\n onClick={handleClick}\r\n style={{\r\n cursor: item.disabled ? 'not-allowed' : 'pointer',\r\n opacity: item.disabled ? 0.5 : 1,\r\n }}\r\n >\r\n {renderIcon()}\r\n <p className={styles.label}>{item.label}</p>\r\n </li>\r\n );\r\n};\r\n\r\nexport const ContextMenuSeparator: React.FC = () => {\r\n return <div className={styles.separator} />;\r\n};\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface CookieConsentProps {\r\n title: string;\r\n description: string;\r\n privacyLink: string;\r\n privacyLinkText: string;\r\n acceptLabel: string;\r\n optionsLabel: string;\r\n onAccept: () => void;\r\n onOptions: () => void;\r\n storageKey: string;\r\n storageValue: string;\r\n icon?: React.ReactNode;\r\n className?: string;\r\n privacyLinkTarget?: string;\r\n privacyLinkRel?: string;\r\n iconClassName?: string;\r\n contentClassName?: string;\r\n acceptButtonClassName?: string;\r\n optionsButtonClassName?: string;\r\n}\r\n\r\nexport const CookieConsent: React.FC<CookieConsentProps> = ({\r\n title,\r\n description,\r\n privacyLink,\r\n privacyLinkText,\r\n acceptLabel,\r\n optionsLabel,\r\n onAccept,\r\n onOptions,\r\n storageKey,\r\n storageValue,\r\n icon,\r\n className,\r\n privacyLinkTarget,\r\n privacyLinkRel,\r\n iconClassName,\r\n contentClassName,\r\n acceptButtonClassName,\r\n optionsButtonClassName,\r\n}) => {\r\n const [isVisible, setIsVisible] = useState(() => {\r\n if (typeof window !== 'undefined') {\r\n const consent = localStorage.getItem(storageKey);\r\n return !consent;\r\n }\r\n return false;\r\n });\r\n\r\n useEffect(() => {\r\n const consent = localStorage.getItem(storageKey);\r\n setIsVisible(!consent);\r\n }, [storageKey]);\r\n\r\n const handleAccept = () => {\r\n localStorage.setItem(storageKey, storageValue);\r\n setIsVisible(false);\r\n onAccept();\r\n };\r\n\r\n if (!isVisible) {\r\n return null;\r\n }\r\n\r\n return (\r\n <article\r\n className={cn(\r\n 'w-4/5 max-w-[300px] h-auto rounded-2xl',\r\n 'bg-white dark:bg-surface-secondary',\r\n 'shadow-[rgba(60,64,67,0.3)_0_1px_2px_0,rgba(60,64,67,0.15)_0_2px_6px_2px]',\r\n 'dark:shadow-[rgba(0,0,0,0.3)_0_1px_2px_0,rgba(0,0,0,0.15)_0_2px_6px_2px]',\r\n className\r\n )}\r\n >\r\n <div className={cn('flex flex-col items-center justify-between pt-9 px-6 pb-6 relative', contentClassName)}>\r\n {icon && (\r\n <span className={cn('relative mx-auto -mt-16 mb-8 text-zinc-700 dark:text-zinc-300', iconClassName)}>\r\n {icon}\r\n </span>\r\n )}\r\n\r\n <h5 className=\"text-sm font-semibold mb-2 text-left mr-auto text-zinc-700 dark:text-text-primary\">\r\n {title}\r\n </h5>\r\n\r\n <p className=\"w-full mb-4 text-sm text-justify text-zinc-600 dark:text-text-secondary\">\r\n {description}\r\n </p>\r\n\r\n <p className=\"w-full mb-4 text-sm text-justify text-zinc-600 dark:text-text-secondary\">\r\n <a\r\n href={privacyLink}\r\n className=\"mb-2 text-sm cursor-pointer font-semibold transition-colors underline underline-offset-2 text-zinc-700 dark:text-text-primary\"\r\n target={privacyLinkTarget}\r\n rel={privacyLinkRel}\r\n >\r\n {privacyLinkText}\r\n </a>\r\n </p>\r\n\r\n <button\r\n type=\"button\"\r\n onClick={onOptions}\r\n className={cn(\r\n 'mb-2 text-sm mr-auto text-zinc-600 dark:text-text-secondary',\r\n 'cursor-pointer font-semibold transition-colors',\r\n 'hover:text-[#634647] dark:hover:text-[#ddad81]',\r\n 'hover:underline underline-offset-2',\r\n 'focus-visible:outline-2 focus-visible:outline-offset-2',\r\n 'focus-visible:outline-[#634647] dark:focus-visible:outline-[#ddad81]',\r\n optionsButtonClassName\r\n )}\r\n >\r\n {optionsLabel}\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n onClick={handleAccept}\r\n className={cn(\r\n 'absolute font-semibold right-6 bottom-6',\r\n 'cursor-pointer py-2 px-8 w-max break-keep',\r\n 'text-sm rounded-lg transition-colors',\r\n 'text-[#634647] hover:text-[#ddad81]',\r\n 'bg-[#ddad81] hover:bg-[#634647]',\r\n 'dark:text-white dark:bg-[#634647]',\r\n 'dark:hover:bg-[#ddad81] dark:hover:text-[#634647]',\r\n 'focus-visible:outline-2 focus-visible:outline-offset-2',\r\n 'focus-visible:outline-[#634647] dark:focus-visible:outline-[#ddad81]',\r\n acceptButtonClassName\r\n )}\r\n >\r\n {acceptLabel}\r\n </button>\r\n </div>\r\n </article>\r\n );\r\n};\r\n\r\n\r\n","import React, { useEffect, useRef, useCallback } from 'react';\r\nimport { cn } from '../utils/cn';\r\nimport { Button, ButtonVariant } from './Button';\r\n\r\nexport type ConfirmModalVariant = 'neutral' | 'danger' | 'warning' | 'info';\r\n\r\n/**\r\n * Props for the ConfirmModal component.\r\n */\r\nexport interface ConfirmModalProps {\r\n /** Whether the modal is currently open. */\r\n isOpen: boolean;\r\n /** Title text displayed at the top of the modal. */\r\n title: string;\r\n /** Description text explaining the action. */\r\n description: string;\r\n /** Optional icon to display above the title. */\r\n icon?: React.ReactNode;\r\n /** Label for the confirm button. */\r\n confirmLabel: string;\r\n /** Label for the cancel button. */\r\n cancelLabel: string;\r\n /** Visual variant affecting the confirm button style. Defaults to 'neutral'. */\r\n variant?: ConfirmModalVariant;\r\n /** Callback when the confirm button is clicked. */\r\n onConfirm: () => void;\r\n /** Callback when the cancel button is clicked. */\r\n onCancel: () => void;\r\n /** Callback when the modal is closed (via backdrop click or escape). */\r\n onClose: () => void;\r\n /** Additional className for the backdrop. */\r\n className?: string;\r\n /** Additional className for the icon container. */\r\n iconClassName?: string;\r\n /** Additional className for the content container. */\r\n contentClassName?: string;\r\n /** Additional className for the confirm button. */\r\n confirmButtonClassName?: string;\r\n /** Additional className for the cancel button. */\r\n cancelButtonClassName?: string;\r\n}\r\n\r\nconst variantClasses: Record<ConfirmModalVariant, { icon: string; buttonVariant: ButtonVariant }> = {\r\n neutral: {\r\n icon: 'text-zinc-600 dark:text-zinc-400',\r\n buttonVariant: 'primary',\r\n },\r\n danger: {\r\n icon: 'text-red-600 dark:text-red-400',\r\n buttonVariant: 'danger',\r\n },\r\n warning: {\r\n icon: 'text-yellow-600 dark:text-yellow-400',\r\n buttonVariant: 'secondary',\r\n },\r\n info: {\r\n icon: 'text-blue-600 dark:text-blue-400',\r\n buttonVariant: 'primary',\r\n },\r\n};\r\n\r\nconst ConfirmModalCard = React.forwardRef<\r\n HTMLDivElement,\r\n { className?: string; children: React.ReactNode; role?: string; 'aria-modal'?: boolean; 'aria-labelledby'?: string; 'aria-describedby'?: string }\r\n>(({ className, children, role, 'aria-modal': ariaModal, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n role={role}\r\n aria-modal={ariaModal}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n className={cn(\r\n 'w-full max-w-md',\r\n 'bg-white dark:bg-surface-secondary',\r\n 'rounded-lg',\r\n 'shadow-[2px_2px_20px_rgba(0,0,0,0.062)] dark:shadow-[rgba(0,0,0,0.3)_0_1px_2px_0,rgba(0,0,0,0.15)_0_2px_6px_2px]',\r\n 'p-6',\r\n 'flex flex-col items-center',\r\n 'gap-4',\r\n 'relative',\r\n 'overflow-hidden',\r\n 'transform transition-all duration-200',\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n );\r\n});\r\n\r\nConfirmModalCard.displayName = 'ConfirmModalCard';\r\n\r\nconst ConfirmModalIcon: React.FC<{ className?: string; children: React.ReactNode }> = ({\r\n className,\r\n children,\r\n}) => {\r\n return (\r\n <div className={cn('flex items-center justify-center mb-2', className)}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nconst ConfirmModalActions: React.FC<{\r\n confirmLabel: string;\r\n cancelLabel: string;\r\n variant: ConfirmModalVariant;\r\n onConfirm: () => void;\r\n onCancel: () => void;\r\n confirmButtonClassName?: string;\r\n cancelButtonClassName?: string;\r\n}> = ({\r\n confirmLabel,\r\n cancelLabel,\r\n variant,\r\n onConfirm,\r\n onCancel,\r\n confirmButtonClassName,\r\n cancelButtonClassName,\r\n}) => {\r\n const variantStyle = variantClasses[variant];\r\n\r\n return (\r\n <div className=\"flex gap-4 flex-row w-full justify-center mt-2\">\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={onCancel}\r\n className={cancelButtonClassName}\r\n >\r\n {cancelLabel}\r\n </Button>\r\n <Button\r\n type=\"button\"\r\n variant={variantStyle.buttonVariant}\r\n size=\"sm\"\r\n onClick={onConfirm}\r\n className={confirmButtonClassName}\r\n >\r\n {confirmLabel}\r\n </Button>\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * A confirmation modal dialog with focus trapping and keyboard accessibility.\r\n * Automatically restores focus to the previously focused element on close.\r\n * \r\n * @example\r\n * ```tsx\r\n * <ConfirmModal\r\n * isOpen={showModal}\r\n * title=\"Delete Item\"\r\n * description=\"Are you sure you want to delete this item?\"\r\n * confirmLabel=\"Delete\"\r\n * cancelLabel=\"Cancel\"\r\n * variant=\"danger\"\r\n * onConfirm={handleDelete}\r\n * onCancel={() => setShowModal(false)}\r\n * onClose={() => setShowModal(false)}\r\n * />\r\n * ```\r\n */\r\nexport const ConfirmModal: React.FC<ConfirmModalProps> = ({\r\n isOpen,\r\n title,\r\n description,\r\n icon,\r\n confirmLabel,\r\n cancelLabel,\r\n variant = 'neutral',\r\n onConfirm,\r\n onCancel,\r\n onClose,\r\n className,\r\n iconClassName,\r\n contentClassName,\r\n confirmButtonClassName,\r\n cancelButtonClassName,\r\n}) => {\r\n const modalRef = useRef<HTMLDivElement>(null);\r\n const previousActiveElement = useRef<HTMLElement | null>(null);\r\n const titleId = React.useId();\r\n const descriptionId = React.useId();\r\n\r\n // Store the previously focused element and restore on close\r\n useEffect(() => {\r\n if (isOpen) {\r\n previousActiveElement.current = document.activeElement as HTMLElement;\r\n } else if (previousActiveElement.current) {\r\n // Restore focus when modal closes\r\n previousActiveElement.current.focus();\r\n previousActiveElement.current = null;\r\n }\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n const modalElement = modalRef.current;\r\n if (!modalElement) return;\r\n\r\n const focusableElements = Array.from(\r\n modalElement.querySelectorAll<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n )\r\n ).filter((el) => !el.hasAttribute('disabled') && el.offsetParent !== null);\r\n\r\n const firstElement = focusableElements[0];\r\n const lastElement = focusableElements[focusableElements.length - 1];\r\n\r\n if (firstElement) {\r\n firstElement.focus();\r\n }\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n onClose();\r\n return;\r\n }\r\n\r\n if (e.key !== 'Tab') return;\r\n\r\n if (focusableElements.length === 0) {\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if (e.shiftKey) {\r\n if (document.activeElement === firstElement) {\r\n e.preventDefault();\r\n lastElement?.focus();\r\n }\r\n } else {\r\n if (document.activeElement === lastElement) {\r\n e.preventDefault();\r\n firstElement?.focus();\r\n }\r\n }\r\n };\r\n\r\n // Handle focus moving outside modal (e.g., browser UI interaction)\r\n const handleFocusIn = (e: FocusEvent) => {\r\n if (modalElement && !modalElement.contains(e.target as Node)) {\r\n e.preventDefault();\r\n firstElement?.focus();\r\n }\r\n };\r\n\r\n document.addEventListener('keydown', handleKeyDown);\r\n document.addEventListener('focusin', handleFocusIn);\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleKeyDown);\r\n document.removeEventListener('focusin', handleFocusIn);\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n const handleBackdropClick = useCallback((e: React.MouseEvent<HTMLDivElement>) => {\r\n if (e.target === e.currentTarget) {\r\n onClose();\r\n }\r\n }, [onClose]);\r\n\r\n if (!isOpen) {\r\n return null;\r\n }\r\n\r\n const variantStyle = variantClasses[variant];\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'fixed inset-0 z-50',\r\n 'flex items-center justify-center',\r\n 'p-4',\r\n 'bg-black/20 dark:bg-black/40',\r\n 'transition-opacity duration-200',\r\n className\r\n )}\r\n onClick={handleBackdropClick}\r\n role=\"presentation\"\r\n >\r\n <ConfirmModalCard\r\n ref={modalRef}\r\n role=\"dialog\"\r\n aria-modal={true}\r\n aria-labelledby={titleId}\r\n aria-describedby={descriptionId}\r\n className=\"transform transition-all duration-200 scale-100\"\r\n >\r\n {icon && (\r\n <ConfirmModalIcon className={cn(variantStyle.icon, iconClassName)}>\r\n {icon}\r\n </ConfirmModalIcon>\r\n )}\r\n\r\n <div className={cn('flex flex-col items-center text-center gap-2 w-full', contentClassName)}>\r\n <h2\r\n id={titleId}\r\n className=\"text-lg font-bold text-zinc-900 dark:text-text-primary\"\r\n >\r\n {title}\r\n </h2>\r\n <p\r\n id={descriptionId}\r\n className=\"text-sm font-semibold text-zinc-600 dark:text-text-secondary whitespace-pre-line\"\r\n >\r\n {description}\r\n </p>\r\n </div>\r\n\r\n <ConfirmModalActions\r\n confirmLabel={confirmLabel}\r\n cancelLabel={cancelLabel}\r\n variant={variant}\r\n onConfirm={onConfirm}\r\n onCancel={onCancel}\r\n confirmButtonClassName={confirmButtonClassName}\r\n cancelButtonClassName={cancelButtonClassName}\r\n />\r\n </ConfirmModalCard>\r\n </div>\r\n );\r\n};\r\n"],"names":["r","t","f","n","o","clsx","concatArrays","array1","array2","combinedArray","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","entries","key","value","path","current","parts","part","next","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","variantClasses","sizeClasses","Button","React","variant","size","loading","disabled","children","props","ref","jsxs","jsx","splitText","text","char","sizeClassMap","styles","SubmitButton","successText","onSubmit","success","setSuccess","useState","isSubmitting","setIsSubmitting","shadowFilterId","useId","buttonRef","useRef","timeoutRef","useEffect","handleClick","useCallback","event","error","Input","Checkbox","checked","onChange","checkboxId","Toggle","id","toggleId","inputRef","handleKeyDown","e","Card","CardHeader","CardContent","CardFooter","sizeMultiplier","Spinner","fontSize","Loader","RadioGroupContext","RadioGroup","name","legend","defaultValue","onValueChange","isControlled","uncontrolledValue","setUncontrolledValue","currentValue","handleValueChange","RadioButton","disabledProp","checkedProp","defaultChecked","nameProp","onCheckedChange","ctx","isWithinGroup","isControlledStandalone","uncontrolledChecked","setUncontrolledChecked","handleChange","nextChecked","labelElement","positionClasses","arrowClasses","arrowBorderClasses","arrowFillClasses","Tooltip","open","onOpenChange","position","delay","timerRef","tooltipRef","wrapperRef","clearTimer","requestOpen","requestClose","child","tooltipId","handleBlur","relatedTarget","isInsideWrapper","isInsideTooltip","ThemeContext","createContext","ThemeProvider","defaultTheme","getInitialTheme","stored","setTheme","handleSetTheme","newTheme","root","mediaQuery","useTheme","context","useContext","ThemeSwitch","showLabel","isDark","handleToggle","FormContainer","FormBox","FormLogo","Form","title","showLogo","footer","FormField","helperText","fieldId","errorMessage","hasError","FormButton","FormFooter","FormFooterLink","SearchBar","inputClassName","searchContainerClassName","placeholder","sizeClass","getSocialIcon","platform","getSocialLabel","SocialLinks","links","orientation","link","icon","ContextMenu","groups","showSeparators","groupIndex","ContextMenuGroup","ContextMenuSeparator","isLastGroup","isAccentGroup","item","ContextMenuItem","_isAccentGroup","isDanger","renderIcon","CookieConsent","description","privacyLink","privacyLinkText","acceptLabel","optionsLabel","onAccept","onOptions","storageKey","storageValue","privacyLinkTarget","privacyLinkRel","iconClassName","contentClassName","acceptButtonClassName","optionsButtonClassName","isVisible","setIsVisible","consent","handleAccept","ConfirmModalCard","role","ariaModal","ariaLabelledBy","ariaDescribedBy","ConfirmModalIcon","ConfirmModalActions","confirmLabel","cancelLabel","onConfirm","onCancel","confirmButtonClassName","cancelButtonClassName","variantStyle","ConfirmModal","isOpen","onClose","modalRef","previousActiveElement","titleId","descriptionId","modalElement","focusableElements","el","firstElement","lastElement","handleFocusIn","handleBackdropClick"],"mappings":"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","x_google_ignoreList":[0,1]}
|