@payai/x402-solana-react 1.0.4 → 2.0.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/lib/balance.ts","../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/ui/card.tsx","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/class-variance-authority/dist/index.mjs","../src/components/ui/button.tsx","../src/components/ui/spinner.tsx","../src/components/PaymentButton.tsx","../src/components/ui/badge.tsx","../src/components/WalletSection.tsx","../node_modules/x402-solana/dist/client/index.mjs","../src/hooks/useX402Payment.ts","../src/components/X402Paywall.tsx","../src/components/PaymentStatus.tsx"],"sourcesContent":["import { Connection, PublicKey } from '@solana/web3.js';\nimport { getAssociatedTokenAddress, getAccount } from '@solana/spl-token';\nimport { SolanaNetwork } from '@/types';\n\n/**\n * Get USDC mint address for the network\n */\nfunction getUSDCMint(network: SolanaNetwork): string {\n return network === 'solana'\n ? 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' // Mainnet USDC\n : '4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU'; // Devnet USDC\n}\n\n/**\n * Get RPC URL for the network\n */\nfunction getRpcUrl(network: SolanaNetwork): string {\n return network === 'solana'\n ? `https://mainnet.helius-rpc.com/?api-key=${process.env.VITE_HELIUS_API_KEY}` // Recommended to have a custom rpc url to avoid rate limits\n // ? 'https://api.mainnet-beta.solana.com'\n : 'https://api.devnet.solana.com';\n}\n\n/**\n * Fetch USDC balance for a wallet address\n * @param walletAddress - Solana wallet public key as string\n * @param network - Solana network (mainnet or devnet)\n * @param customRpcUrl - Optional custom RPC URL\n * @returns USDC balance as formatted string\n */\nexport async function fetchUSDCBalance(\n walletAddress: string,\n network: SolanaNetwork,\n customRpcUrl?: string\n): Promise<string> {\n try {\n const rpcUrl = customRpcUrl || getRpcUrl(network);\n const connection = new Connection(rpcUrl, 'confirmed');\n const walletPubkey = new PublicKey(walletAddress);\n const usdcMint = new PublicKey(getUSDCMint(network));\n\n // Get associated token account address\n const tokenAccountAddress = await getAssociatedTokenAddress(\n usdcMint,\n walletPubkey\n );\n\n // Fetch token account info\n const tokenAccount = await getAccount(connection, tokenAccountAddress);\n\n // Convert from micro-USDC (6 decimals) to USDC\n const balance = Number(tokenAccount.amount) / 1_000_000;\n\n return balance.toFixed(2);\n } catch (error) {\n console.error('Error fetching USDC balance:', error);\n return '0.00';\n }\n}\n\n/**\n * Convert USD amount to micro-USDC\n */\nexport function toMicroUSDC(amount: number): bigint {\n return BigInt(Math.floor(amount * 1_000_000));\n}\n\n/**\n * Convert micro-USDC to USD amount\n */\nexport function fromMicroUSDC(microAmount: bigint | number): number {\n return Number(microAmount) / 1_000_000;\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<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;","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\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 remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n prefix\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme);\n });\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\nconst getPrefixedClassGroupEntries = (classGroupEntries, prefix) => {\n if (!prefix) {\n return classGroupEntries;\n }\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map(classDefinition => {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition;\n }\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));\n }\n return classDefinition;\n });\n return [classGroupId, prefixedClassGroup];\n });\n};\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst createParseClassName = config => {\n const {\n separator,\n experimentalParseClassName\n } = config;\n const isSeparatorSingleCharacter = separator.length === 1;\n const firstSeparatorCharacter = separator[0];\n const separatorLength = separator.length;\n // parseClassName inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n const parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0) {\n if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + separatorLength;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);\n const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (experimentalParseClassName) {\n return className => experimentalParseClassName({\n className,\n parseClassName\n });\n }\n return parseClassName;\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 sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isArbitraryVariant = modifier[0] === '[';\n if (isArbitraryVariant) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds\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 modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n let hasPostfixModifier = Boolean(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 const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\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 */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\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};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function 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 function 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 return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst stringLengths = /*#__PURE__*/new Set(['px', 'full', 'screen']);\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))\\(.+\\)$/;\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 isLength = value => isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, 'length', isLengthOnly);\nconst isNumber = value => Boolean(value) && !Number.isNaN(Number(value));\nconst isArbitraryNumber = value => getIsArbitraryValue(value, 'number', isNumber);\nconst isInteger = value => Boolean(value) && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst sizeLabels = /*#__PURE__*/new Set(['length', 'size', 'percentage']);\nconst isArbitrarySize = value => getIsArbitraryValue(value, sizeLabels, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, 'position', isNever);\nconst imageLabels = /*#__PURE__*/new Set(['image', 'url']);\nconst isArbitraryImage = value => getIsArbitraryValue(value, imageLabels, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, '', isShadow);\nconst isAny = () => true;\nconst getIsArbitraryValue = (value, label, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return typeof label === 'string' ? result[1] === label : label.has(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\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 validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isInteger,\n isLength,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n const colors = fromTheme('colors');\n const spacing = fromTheme('spacing');\n const blur = fromTheme('blur');\n const brightness = fromTheme('brightness');\n const borderColor = fromTheme('borderColor');\n const borderRadius = fromTheme('borderRadius');\n const borderSpacing = fromTheme('borderSpacing');\n const borderWidth = fromTheme('borderWidth');\n const contrast = fromTheme('contrast');\n const grayscale = fromTheme('grayscale');\n const hueRotate = fromTheme('hueRotate');\n const invert = fromTheme('invert');\n const gap = fromTheme('gap');\n const gradientColorStops = fromTheme('gradientColorStops');\n const gradientColorStopPositions = fromTheme('gradientColorStopPositions');\n const inset = fromTheme('inset');\n const margin = fromTheme('margin');\n const opacity = fromTheme('opacity');\n const padding = fromTheme('padding');\n const saturate = fromTheme('saturate');\n const scale = fromTheme('scale');\n const sepia = fromTheme('sepia');\n const skew = fromTheme('skew');\n const space = fromTheme('space');\n const translate = fromTheme('translate');\n const getOverscroll = () => ['auto', 'contain', 'none'];\n const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing];\n const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];\n const getLengthWithEmptyAndArbitrary = () => ['', isLength, isArbitraryLength];\n const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue];\n const getPositions = () => ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];\n const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'];\n const getBlendModes = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const getAlign = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'];\n const getZeroAndEmpty = () => ['', '0', isArbitraryValue];\n const getBreaks = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];\n return {\n cacheSize: 500,\n separator: ':',\n theme: {\n colors: [isAny],\n spacing: [isLength, isArbitraryLength],\n blur: ['none', '', isTshirtSize, isArbitraryValue],\n brightness: getNumberAndArbitrary(),\n borderColor: [colors],\n borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmptyAndArbitrary(),\n contrast: getNumberAndArbitrary(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumberAndArbitrary(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumberAndArbitrary(),\n scale: getNumberAndArbitrary(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary()\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', 'video', isArbitraryValue]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isTshirtSize]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': getBreaks()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': getBreaks()\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 * 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: [...getPositions(), isArbitraryValue]\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: getOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': getOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': getOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: getOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': getOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': getOverscroll()\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: [inset]\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': [inset]\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': [inset]\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: [inset]\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: [inset]\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: [inset]\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: [inset]\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: [inset]\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: [inset]\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: ['auto', isInteger, isArbitraryValue]\n }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: getSpacingWithAutoAndArbitrary()\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: ['wrap', 'wrap-reverse', 'nowrap']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: ['1', 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: getZeroAndEmpty()\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: getZeroAndEmpty()\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: ['first', 'last', 'none', isInteger, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': [isAny]\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: ['auto', {\n span: ['full', isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': [isAny]\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: ['auto', {\n span: [isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': getNumberWithAutoAndArbitrary()\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': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: [gap]\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': [gap]\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': [gap]\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: ['normal', ...getAlign()]\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': ['start', 'end', 'center', 'stretch']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...getAlign(), 'baseline']\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline']\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': [...getAlign(), 'baseline']\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: [padding]\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: [padding]\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: [padding]\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: [padding]\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: [padding]\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: [padding]\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: [padding]\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: [padding]\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: [padding]\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: [margin]\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: [margin]\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: [margin]\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: [margin]\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: [margin]\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: [margin]\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: [margin]\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: [margin]\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: [margin]\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x': [{\n 'space-x': [space]\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y': [{\n 'space-y': [space]\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y-reverse': ['space-y-reverse'],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: ['auto', 'min', 'max', 'fit', 'svw', 'lvw', 'dvw', isArbitraryValue, spacing]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [isArbitraryValue, spacing, 'min', 'max', 'fit']\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [isArbitraryValue, spacing, 'none', 'full', 'min', 'max', 'fit', 'prose', {\n screen: [isTshirtSize]\n }, isTshirtSize]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Size\n * @see https://tailwindcss.com/docs/size\n */\n size: [{\n size: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit']\n }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', isTshirtSize, 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: ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black', isArbitraryNumber]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isAny]\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: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest', isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': ['none', isNumber, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose', isLength, isArbitraryValue]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryValue]\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['none', 'disc', 'decimal', 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 * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: [colors]\n }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n 'placeholder-opacity': [{\n 'placeholder-opacity': [opacity]\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 * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: [colors]\n }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n 'text-opacity': [{\n 'text-opacity': [opacity]\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: [...getLineStyles(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: ['auto', 'from-font', isLength, isArbitraryLength]\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': ['auto', isLength, isArbitraryValue]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: [colors]\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: getSpacingWithArbitrary()\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', 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 * 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', isArbitraryValue]\n }],\n // Backgrounds\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 Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n 'bg-opacity': [{\n 'bg-opacity': [opacity]\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: [...getPositions(), isArbitraryPosition]\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: ['no-repeat', {\n repeat: ['', 'x', 'y', 'round', 'space']\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: ['auto', 'cover', 'contain', isArbitrarySize]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: [colors]\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: [gradientColorStops]\n }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: [borderRadius]\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': [borderRadius]\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': [borderRadius]\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': [borderRadius]\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': [borderRadius]\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': [borderRadius]\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': [borderRadius]\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': [borderRadius]\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': [borderRadius]\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': [borderRadius]\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': [borderRadius]\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': [borderRadius]\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': [borderRadius]\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': [borderRadius]\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': [borderRadius]\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: [borderWidth]\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': [borderWidth]\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': [borderWidth]\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': [borderWidth]\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': [borderWidth]\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': [borderWidth]\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': [borderWidth]\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': [borderWidth]\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': [borderWidth]\n }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n 'border-opacity': [{\n 'border-opacity': [opacity]\n }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...getLineStyles(), 'hidden']\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x': [{\n 'divide-x': [borderWidth]\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y': [{\n 'divide-y': [borderWidth]\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n 'divide-opacity': [{\n 'divide-opacity': [opacity]\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n 'divide-style': [{\n divide: getLineStyles()\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: [borderColor]\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': [borderColor]\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': [borderColor]\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': [borderColor]\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': [borderColor]\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': [borderColor]\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': [borderColor]\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': [borderColor]\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': [borderColor]\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: [borderColor]\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: ['', ...getLineStyles()]\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isLength, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: [isLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: [colors]\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w': [{\n ring: getLengthWithEmptyAndArbitrary()\n }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n 'ring-color': [{\n ring: [colors]\n }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n 'ring-opacity': [{\n 'ring-opacity': [opacity]\n }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n 'ring-offset-w': [{\n 'ring-offset': [isLength, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n 'ring-offset-color': [{\n 'ring-offset': [colors]\n }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n 'shadow-color': [{\n shadow: [isAny]\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [opacity]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...getBlendModes(), 'plus-lighter', 'plus-darker']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': getBlendModes()\n }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: ['', 'none']\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: [blur]\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [brightness]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [contrast]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: [grayscale]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [hueRotate]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: [invert]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [saturate]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: [sepia]\n }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': ['', 'none']\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': [blur]\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [brightness]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [contrast]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': [grayscale]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [hueRotate]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': [invert]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [opacity]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [saturate]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': [sepia]\n }],\n // Tables\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': [borderSpacing]\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': [borderSpacing]\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': [borderSpacing]\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 // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['none', 'all', '', 'colors', 'opacity', 'shadow', 'transform', isArbitraryValue]\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: getNumberAndArbitrary()\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: getNumberAndArbitrary()\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue]\n }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: ['', 'gpu', 'none']\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: [scale]\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': [scale]\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': [scale]\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: [isInteger, isArbitraryValue]\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': [translate]\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': [translate]\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': [skew]\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': [skew]\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryValue]\n }],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: ['auto', colors]\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\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', isArbitraryValue]\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: [colors]\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['none', 'auto']\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': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': getSpacingWithArbitrary()\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', isArbitraryValue]\n }],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: [colors, 'none']\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: [colors, 'none']\n }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: ['sr-only', 'not-sr-only'],\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-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-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 '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 };\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 separator,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'separator', separator);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n for (const configKey in override) {\n overrideConfigProperties(baseConfig[configKey], override[configKey]);\n }\n for (const key in extend) {\n mergeConfigProperties(baseConfig[key], extend[key]);\n }\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 const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = (baseObject[key] || []).concat(mergeValue);\n }\n }\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 { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow\",\n className\n )}\n {...props}\n />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'sm' | 'md' | 'lg';\n variant?: 'default' | 'solana';\n}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size = 'md', variant = 'default', ...props }, ref) => {\n const sizes = {\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-8 w-8',\n };\n\n const variants = {\n default: 'border-gray-200 border-t-gray-900',\n solana: 'border-gray-200 border-t-solana-primary',\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'inline-block animate-spin rounded-full border-2',\n sizes[size],\n variants[variant],\n className\n )}\n role=\"status\"\n aria-label=\"Loading\"\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n }\n);\n\nSpinner.displayName = 'Spinner';\n\nexport { Spinner };\n","import * as React from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Spinner } from \"@/components/ui/spinner\";\nimport { PaymentButtonProps } from \"@/types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const PaymentButton = React.forwardRef<\n HTMLButtonElement,\n PaymentButtonProps\n>(\n (\n {\n amount,\n description: _description,\n onClick,\n disabled = false,\n loading = false,\n className,\n style,\n customText,\n ...props\n },\n ref\n ) => {\n const formatAmount = (value: number) => {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2,\n }).format(value);\n };\n\n return (\n <Button\n ref={ref}\n onClick={onClick}\n disabled={disabled || loading}\n className={cn(\n \"w-full hover:opacity-90 text-white font-normal shadow-lg hover:shadow-xl transition-all duration-200 transform hover:scale-[1.02] rounded-xl\",\n // Only apply bg-solana-gradient if no custom style is provided\n !style && \"bg-solana-gradient\",\n disabled || loading ? \"opacity-50 cursor-not-allowed\" : \"\",\n className\n )}\n style={style}\n {...props}\n >\n {loading ? (\n <div className=\"flex items-center gap-3\">\n <Spinner\n size=\"sm\"\n variant=\"default\"\n className=\"border-white/30 border-t-white\"\n />\n <span>Processing Payment...</span>\n </div>\n ) : (\n <span>{customText || `Pay ${formatAmount(amount)} USDC`}</span>\n )}\n </Button>\n );\n }\n);\n\nPaymentButton.displayName = \"PaymentButton\";\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { WalletSectionProps } from \"@/types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const WalletSection: React.FC<WalletSectionProps> = ({\n wallet,\n balance,\n network,\n showBalance = true,\n onDisconnect,\n theme,\n className,\n style,\n}) => {\n const walletAddress = wallet?.publicKey?.toString() || wallet?.address;\n\n const formatAddress = (address: string) => {\n return `${address.slice(0, 4)}...${address.slice(-4)}`;\n };\n\n const getNetworkLabel = () => {\n return network === \"solana\" ? \"Mainnet\" : \"Devnet\";\n };\n\n if (!wallet || !walletAddress) {\n return (\n <Card className={cn(\"border-dashed\", className)} style={style}>\n <CardContent className=\"p-4 text-center text-muted-foreground\">\n <p className=\"text-sm\">No wallet connected</p>\n </CardContent>\n </Card>\n );\n }\n\n return (\n <div\n className={cn(\n \"rounded-lg p-4 border\",\n theme === \"seeker\" ? \"border-[#FFFFFF1F]\" : theme === \"seeker-2\" ? \"border-[#FFFFFF1F]\" : \"bg-slate-50 border-slate-200\",\n className\n )}\n style={style}\n >\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n {/* Wallet Picture */}\n <div className=\"w-10 h-10 bg-gradient-to-r from-blue-500 to-purple-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white font-semibold text-sm\">\n {walletAddress.slice(0, 2).toUpperCase()}\n </span>\n </div>\n <div>\n <div\n className={cn(\n \"text-xs font-medium drop-shadow-sm shadow-sm\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-[#71717A]\"\n : \"text-[#FFFFFF66]\"\n )}\n >\n Connected Wallet\n </div>\n <div\n className={cn(\n \"text-sm font-mono\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-black\"\n : \"text-white\"\n )}\n >\n {formatAddress(walletAddress)}\n </div>\n </div>\n </div>\n <button\n onClick={onDisconnect}\n className={cn(\n \"text-sm font-medium transition-colors\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-red-500 hover:text-red-700\"\n : \"text-[#FFFFFF66] hover:opacity-80\"\n )}\n >\n Disconnect\n </button>\n </div>\n\n {showBalance && balance && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium text-slate-600\">\n USDC Balance\n </span>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-lg font-bold text-slate-900\">\n {balance}\n </span>\n <span className=\"text-xs font-semibold text-slate-500 bg-slate-200 px-2 py-1 rounded-md\">\n USDC\n </span>\n </div>\n </div>\n )}\n\n {network && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium text-slate-600\">Network</span>\n <Badge\n variant=\"outline\"\n className=\"text-xs border-slate-300 text-slate-700\"\n >\n {getNetworkLabel()}\n </Badge>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nWalletSection.displayName = \"WalletSection\";\n","import { Connection, PublicKey, ComputeBudgetProgram, TransactionInstruction, SystemProgram, TransactionMessage, VersionedTransaction } from '@solana/web3.js';\nimport { TOKEN_2022_PROGRAM_ID, TOKEN_PROGRAM_ID, getMint, getAssociatedTokenAddress, createTransferCheckedInstruction } from '@solana/spl-token';\n\n// src/utils/helpers.ts\nfunction createPaymentHeaderFromTransaction(transaction, paymentRequirements, x402Version) {\n const serializedTransaction = Buffer.from(transaction.serialize()).toString(\"base64\");\n const paymentPayload = {\n x402Version,\n scheme: paymentRequirements.scheme,\n network: paymentRequirements.network,\n payload: {\n transaction: serializedTransaction\n }\n };\n const paymentHeader = Buffer.from(JSON.stringify(paymentPayload)).toString(\"base64\");\n return paymentHeader;\n}\nfunction getDefaultRpcUrl(network) {\n if (network === \"solana\") {\n return \"https://api.mainnet-beta.solana.com\";\n } else if (network === \"solana-devnet\") {\n return \"https://api.devnet.solana.com\";\n }\n throw new Error(`Unexpected network: ${network}`);\n}\nasync function createSolanaPaymentHeader(wallet, x402Version, paymentRequirements, rpcUrl) {\n const connection = new Connection(rpcUrl, \"confirmed\");\n const feePayer = paymentRequirements?.extra?.feePayer;\n if (typeof feePayer !== \"string\" || !feePayer) {\n throw new Error(\"Missing facilitator feePayer in payment requirements (extra.feePayer).\");\n }\n const feePayerPubkey = new PublicKey(feePayer);\n const walletAddress = wallet?.publicKey?.toString() || wallet?.address;\n if (!walletAddress) {\n throw new Error(\"Missing connected Solana wallet address or publicKey\");\n }\n const userPubkey = new PublicKey(walletAddress);\n if (!paymentRequirements?.payTo) {\n throw new Error(\"Missing payTo in payment requirements\");\n }\n const destination = new PublicKey(paymentRequirements.payTo);\n const instructions = [];\n instructions.push(\n ComputeBudgetProgram.setComputeUnitLimit({\n units: 4e4\n // Sufficient for SPL token transfer + ATA creation\n })\n );\n instructions.push(\n ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: 1\n // Minimal price\n })\n );\n if (!paymentRequirements.asset) {\n throw new Error(\"Missing token mint for SPL transfer\");\n }\n const mintPubkey = new PublicKey(paymentRequirements.asset);\n const mintInfo = await connection.getAccountInfo(mintPubkey, \"confirmed\");\n const programId = mintInfo?.owner?.toBase58() === TOKEN_2022_PROGRAM_ID.toBase58() ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n const mint = await getMint(connection, mintPubkey, void 0, programId);\n const sourceAta = await getAssociatedTokenAddress(\n mintPubkey,\n userPubkey,\n false,\n programId\n );\n const destinationAta = await getAssociatedTokenAddress(\n mintPubkey,\n destination,\n false,\n programId\n );\n const sourceAtaInfo = await connection.getAccountInfo(sourceAta, \"confirmed\");\n if (!sourceAtaInfo) {\n throw new Error(\n `User does not have an Associated Token Account for ${paymentRequirements.asset}. Please create one first or ensure you have the required token.`\n );\n }\n const destAtaInfo = await connection.getAccountInfo(destinationAta, \"confirmed\");\n if (!destAtaInfo) {\n const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey(\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n );\n const createAtaInstruction = new TransactionInstruction({\n keys: [\n { pubkey: feePayerPubkey, isSigner: true, isWritable: true },\n { pubkey: destinationAta, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: false },\n { pubkey: mintPubkey, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: programId, isSigner: false, isWritable: false }\n ],\n programId: ASSOCIATED_TOKEN_PROGRAM_ID,\n data: Buffer.from([0])\n // CreateATA discriminator\n });\n instructions.push(createAtaInstruction);\n }\n const amount = BigInt(paymentRequirements.maxAmountRequired);\n instructions.push(\n createTransferCheckedInstruction(\n sourceAta,\n mintPubkey,\n destinationAta,\n userPubkey,\n amount,\n mint.decimals,\n [],\n programId\n )\n );\n const { blockhash } = await connection.getLatestBlockhash(\"confirmed\");\n const message = new TransactionMessage({\n payerKey: feePayerPubkey,\n recentBlockhash: blockhash,\n instructions\n }).compileToV0Message();\n const transaction = new VersionedTransaction(message);\n if (typeof wallet?.signTransaction !== \"function\") {\n throw new Error(\"Connected wallet does not support signTransaction\");\n }\n const userSignedTx = await wallet.signTransaction(transaction);\n return createPaymentHeaderFromTransaction(\n userSignedTx,\n paymentRequirements,\n x402Version\n );\n}\n\n// src/client/payment-interceptor.ts\nfunction createPaymentFetch(fetchFn, wallet, rpcUrl, maxValue = BigInt(0)) {\n return async (input, init) => {\n const response = await fetchFn(input, init);\n if (response.status !== 402) {\n return response;\n }\n const rawResponse = await response.json();\n const x402Version = rawResponse.x402Version;\n const parsedPaymentRequirements = rawResponse.accepts || [];\n const selectedRequirements = parsedPaymentRequirements.find(\n (req) => req.scheme === \"exact\" && (req.network === \"solana-devnet\" || req.network === \"solana\")\n );\n if (!selectedRequirements) {\n console.error(\n \"\\u274C No suitable Solana payment requirements found. Available networks:\",\n parsedPaymentRequirements.map((req) => req.network)\n );\n throw new Error(\"No suitable Solana payment requirements found\");\n }\n if (maxValue > BigInt(0) && BigInt(selectedRequirements.maxAmountRequired) > maxValue) {\n throw new Error(\"Payment amount exceeds maximum allowed\");\n }\n const paymentHeader = await createSolanaPaymentHeader(\n wallet,\n x402Version,\n selectedRequirements,\n rpcUrl\n );\n const newInit = {\n ...init,\n headers: {\n ...init?.headers || {},\n \"X-PAYMENT\": paymentHeader,\n \"Access-Control-Expose-Headers\": \"X-PAYMENT-RESPONSE\"\n }\n };\n return await fetchFn(input, newInit);\n };\n}\n\n// src/client/index.ts\nvar X402Client = class {\n paymentFetch;\n constructor(config) {\n const rpcUrl = config.rpcUrl || getDefaultRpcUrl(config.network);\n this.paymentFetch = createPaymentFetch(\n fetch.bind(window),\n config.wallet,\n rpcUrl,\n config.maxPaymentAmount || BigInt(0)\n );\n }\n /**\n * Make a fetch request with automatic x402 payment handling\n */\n async fetch(input, init) {\n return this.paymentFetch(input, init);\n }\n};\nfunction createX402Client(config) {\n return new X402Client(config);\n}\n\nexport { X402Client, createX402Client };\n//# sourceMappingURL=index.mjs.map\n//# sourceMappingURL=index.mjs.map","import { useState, useCallback } from 'react';\nimport { createX402Client } from 'x402-solana/client';\nimport { WalletAdapter, SolanaNetwork, PaymentStatus } from '@/types';\n\nexport interface PaymentConfig {\n wallet: WalletAdapter;\n network: SolanaNetwork;\n rpcUrl?: string;\n apiEndpoint?: string;\n treasuryAddress?: string;\n facilitatorUrl?: string;\n maxPaymentAmount?: number;\n}\n\nexport interface PaymentResult {\n transactionId: string | null;\n status: PaymentStatus;\n error: Error | null;\n}\n\nexport interface UseX402PaymentReturn {\n pay: (amount: number, description: string) => Promise<string | null>;\n isLoading: boolean;\n status: PaymentStatus;\n error: Error | null;\n transactionId: string | null;\n reset: () => void;\n}\n\n/**\n * Hook for managing x402 payments on Solana\n */\nexport function useX402Payment(config: PaymentConfig): UseX402PaymentReturn {\n const [status, setStatus] = useState<PaymentStatus>('idle');\n const [error, setError] = useState<Error | null>(null);\n const [transactionId, setTransactionId] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n const reset = useCallback(() => {\n setStatus('idle');\n setError(null);\n setTransactionId(null);\n setIsLoading(false);\n }, []);\n\n const pay = useCallback(\n async (amount: number, description: string): Promise<string | null> => {\n try {\n setIsLoading(true);\n setStatus('pending');\n setError(null);\n\n // Validate amount against max if set\n if (config.maxPaymentAmount && amount > config.maxPaymentAmount) {\n throw new Error(\n `Payment amount ${amount} exceeds maximum allowed ${config.maxPaymentAmount}`\n );\n }\n\n // Get wallet address\n const walletAddress =\n config.wallet.publicKey?.toString() || config.wallet.address;\n\n if (!walletAddress) {\n throw new Error('Wallet not connected');\n }\n\n // Create x402 client\n const x402Client = createX402Client({\n wallet: config.wallet,\n network: config.network,\n rpcUrl: config.rpcUrl,\n maxPaymentAmount: config.maxPaymentAmount\n ? BigInt(Math.floor(config.maxPaymentAmount * 1_000_000))\n : undefined,\n });\n\n // Determine API endpoint\n // Default to PayAI Echo Merchant (free test endpoint that refunds payments)\n // Users can override with their own 402-protected endpoint\n const defaultEndpoint = 'https://x402.payai.network/api/solana/paid-content';\n const apiEndpoint = config.apiEndpoint || defaultEndpoint;\n const isEchoMerchant = apiEndpoint === defaultEndpoint;\n\n console.log('Initiating x402 payment:', {\n endpoint: apiEndpoint,\n isDemo: isEchoMerchant,\n amount,\n description,\n wallet: walletAddress,\n network: config.network,\n });\n\n // Make the 402-protected request\n // x402Client.fetch() automatically handles the full payment flow:\n // 1. Makes initial request → receives 402 with payment requirements\n // 2. Creates and signs payment transaction\n // 3. Retries with X-PAYMENT header containing signed payment\n // 4. Merchant verifies, settles, and fulfills the request\n const response = await x402Client.fetch(apiEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n message: description,\n amount,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Payment request failed: ${response.statusText}`);\n }\n\n // Try to parse as JSON, but handle HTML responses gracefully\n let result;\n const contentType = response.headers.get('content-type');\n if (contentType && contentType.includes('application/json')) {\n result = await response.json();\n } else {\n // For HTML or other content types, just get the text\n const text = await response.text();\n result = { content: text };\n }\n console.log('Payment successful:', result);\n\n // Extract transaction ID from response\n const paymentResponse = response.headers.get('X-PAYMENT-RESPONSE');\n let txId = `tx_${Date.now()}`;\n\n if (paymentResponse) {\n try {\n const decoded = JSON.parse(atob(paymentResponse));\n txId = decoded.transactionId || decoded.signature || txId;\n console.log('Payment details:', decoded);\n } catch (e) {\n console.warn('Could not decode payment response:', e);\n }\n }\n\n setTransactionId(txId);\n setStatus('success');\n setIsLoading(false);\n\n return txId;\n } catch (err) {\n const paymentError =\n err instanceof Error ? err : new Error('Payment failed');\n setError(paymentError);\n setStatus('error');\n setIsLoading(false);\n return null;\n }\n },\n [config]\n );\n\n return {\n pay,\n isLoading,\n status,\n error,\n transactionId,\n reset,\n };\n}\n","import * as React from \"react\";\nimport { useState, useEffect, useMemo } from \"react\";\nimport {\n useWallet,\n ConnectionProvider,\n WalletProvider,\n} from \"@solana/wallet-adapter-react\";\nimport {\n WalletModalProvider,\n WalletMultiButton,\n} from \"@solana/wallet-adapter-react-ui\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport {\n PhantomWalletAdapter,\n SolflareWalletAdapter,\n} from \"@solana/wallet-adapter-wallets\";\nimport { clusterApiUrl } from \"@solana/web3.js\";\nimport { fetchUSDCBalance } from \"@/lib/balance\";\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\";\nimport { PaymentButton } from \"./PaymentButton\";\nimport { WalletSection } from \"./WalletSection\";\nimport { useX402Payment } from \"@/hooks/useX402Payment\";\nimport { X402PaywallProps, WalletAdapter } from \"@/types\";\nimport { cn } from \"@/lib/utils\";\nimport { useRef } from \"react\";\n// Internal component that actually uses the wallet context\nconst X402PaywallContent: React.FC<\n Omit<\n X402PaywallProps,\n \"autoSetupProviders\" | \"providerNetwork\" | \"providerEndpoint\"\n >\n> = ({\n amount,\n description,\n wallet: walletProp,\n network = \"solana-devnet\",\n rpcUrl,\n apiEndpoint,\n treasuryAddress,\n facilitatorUrl,\n theme = \"solana-light\",\n logoUrl = \"https://raw.githubusercontent.com/PayAINetwork/x402-solana-react/main/src/components/ui/SolanaLogo.svg\",\n showPaymentDetails = true,\n onDisconnect,\n classNames,\n customStyles,\n maxPaymentAmount,\n // enablePaymentCaching = false, // TODO: Implement in future\n // autoRetry = false, // TODO: Implement in future\n onPaymentStart,\n onPaymentSuccess,\n onPaymentError,\n onWalletConnect,\n children,\n}) => {\n // Use provided wallet or get from context\n const walletContext = useWallet();\n\n // Create reactive wallet object that updates when context changes\n const reactiveWallet: WalletAdapter = useMemo(() => {\n if (walletProp) return walletProp;\n return {\n publicKey: walletContext.publicKey\n ? { toString: () => walletContext.publicKey!.toString() }\n : undefined,\n signTransaction: walletContext.signTransaction!,\n };\n }, [walletProp, walletContext.publicKey, walletContext.signTransaction]);\n\n const [isPaid, setIsPaid] = useState(false);\n const [walletBalance, setWalletBalance] = useState<string>(\"0.00\");\n const walletButtonRef = useRef<HTMLDivElement>(null);\n const networkLabel = network === \"solana\" ? \"Mainnet\" : \"Devnet\";\n\n const { pay, isLoading, status, error, transactionId, reset } =\n useX402Payment({\n wallet: reactiveWallet,\n network,\n rpcUrl,\n apiEndpoint,\n treasuryAddress,\n facilitatorUrl,\n maxPaymentAmount,\n });\n\n // Handle disconnect using context if no custom handler\n const handleDisconnect = () => {\n if (onDisconnect) {\n onDisconnect();\n } else if (!walletProp && walletContext.disconnect) {\n walletContext.disconnect();\n }\n };\n\n // Check if wallet is connected (either from prop or context)\n // Use a permissive check so we transition as soon as the adapter reports connected\n const isWalletConnected = walletProp\n ? Boolean(walletProp.publicKey || walletProp.address)\n : Boolean(walletContext.connected || walletContext.publicKey);\n\n // Apply theme class to body for wallet modal styling\n useEffect(() => {\n // Remove old theme classes\n document.body.className = document.body.className\n .replace(/wallet-modal-theme-\\w+/g, \"\")\n .replace(/\\s+/g, \" \")\n .trim();\n\n // Add new theme class\n if (theme) {\n document.body.className += ` wallet-modal-theme-${theme}`;\n }\n\n // Cleanup: remove theme class when component unmounts\n return () => {\n document.body.className = document.body.className\n .replace(/wallet-modal-theme-\\w+/g, \"\")\n .replace(/\\s+/g, \" \")\n .trim();\n };\n }, [theme]);\n\n // Fetch balance when wallet connects - react to walletContext changes\n useEffect(() => {\n const walletAddress =\n walletContext.publicKey?.toString() ||\n walletProp?.publicKey?.toString() ||\n walletProp?.address;\n if (walletAddress && walletContext.connected) {\n console.log(\"Wallet connected:\", walletAddress);\n onWalletConnect?.(walletAddress);\n\n // Fetch USDC balance\n fetchUSDCBalance(walletAddress, network, rpcUrl).then(setWalletBalance);\n }\n // Reset balance if wallet disconnects\n if (!walletContext.connected && !walletProp) {\n setWalletBalance(\"0.00\");\n }\n }, [\n walletContext.publicKey,\n walletContext.connected,\n walletContext.connecting,\n walletProp,\n network,\n rpcUrl,\n onWalletConnect,\n ]);\n\n // Handle payment success\n useEffect(() => {\n if (status === \"success\" && transactionId) {\n setIsPaid(true);\n onPaymentSuccess?.(transactionId);\n }\n }, [status, transactionId, onPaymentSuccess]);\n\n // Handle payment error\n useEffect(() => {\n if (error) {\n onPaymentError?.(error);\n }\n }, [error, onPaymentError]);\n\n const handlePayment = async () => {\n onPaymentStart?.();\n await pay(amount, description);\n };\n\n // If payment is successful, show the protected content\n if (isPaid) {\n return <>{children}</>;\n }\n\n // Show failure screen when there's an error (for all themes)\n const showFailureScreen =\n error &&\n (theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"light\" ||\n theme === \"solana-light\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\");\n\n // Theme-based styling configuration\n const getThemeConfig = () => {\n switch (theme) {\n case \"solana-dark\":\n return {\n container: \"\",\n card: \"!bg-[#171719] border-0 text-white rounded-xl\",\n icon: \"bg-slate-600\",\n title: \"\",\n button: \"bg-solana-gradient hover:opacity-90 text-white rounded-full\",\n paymentDetails:\n \"bg-[#0000001F] border-slate-600 text-white rounded-lg\",\n walletSection:\n \"bg-[#0000001F] border-slate-600 text-white rounded-lg\",\n notice: \"bg-amber-900/50 border-amber-700 text-white rounded-lg\",\n securityMessage: \"text-slate-400\",\n helperText: \"text-white\",\n helperLink: undefined,\n };\n case \"seeker\":\n return {\n container: \"\",\n card: \"backdrop-blur-sm border-emerald-200 rounded-xl\",\n icon: \"bg-gradient-to-r from-emerald-500 to-teal-500\",\n title: \"text-white\",\n button:\n \"bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full\",\n paymentDetails: \"rounded-lg\",\n notice: \"bg-cyan-50 border-cyan-200 text-cyan-800 rounded-lg\",\n securityMessage: \"text-white\",\n helperText: \"text-white\",\n };\n case \"seeker-2\":\n return {\n container: \"\",\n card: \"backdrop-blur-sm border-emerald-200 rounded-xl\",\n icon: \"bg-gradient-to-r from-emerald-500 to-teal-500\",\n title: \"text-white\",\n button:\n \"bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full\",\n paymentDetails: \"rounded-lg\",\n notice: \"bg-cyan-50 border-cyan-200 text-cyan-800 rounded-lg\",\n securityMessage: \"text-white\",\n helperText: \"text-white\",\n };\n case \"terminal\":\n return {\n container: \"bg-gradient-to-br from-gray-900 via-black to-gray-800\",\n card: \"bg-black/90 backdrop-blur-sm border-green-400/30 text-green-400 rounded-xl\",\n icon: \"bg-green-400 text-black\",\n title: \"text-green-400 font-mono\",\n button:\n \"bg-green-400 text-black hover:bg-green-300 font-mono rounded-full\",\n paymentDetails:\n \"bg-gray-900/50 border-green-400/20 text-green-300 rounded-lg\",\n notice:\n \"bg-yellow-900/50 border-yellow-400/30 text-yellow-300 rounded-lg\",\n };\n case \"solana-light\":\n return {\n container:\n \"bg-gradient-to-b from-white via-pink-50 via-purple-50 via-blue-50 to-cyan-50\",\n card: \"bg-white/95 backdrop-blur-sm border border-slate-200 shadow-2xl rounded-2xl\",\n icon: \"bg-gradient-to-r from-blue-600 to-purple-600\",\n title: \"text-slate-900\",\n button:\n \"bg-solana-gradient hover:opacity-90 text-white font-light rounded-full\",\n paymentDetails: \"bg-slate-50 border border-slate-200 rounded-xl\",\n notice: \"text-slate-600\",\n walletSection: \"bg-slate-50 border border-slate-200 rounded-xl\",\n securityMessage: \"text-slate-600\",\n helperText: \"text-slate-600\",\n helperLink: \"text-purple-600 underline\",\n };\n case \"dark\":\n return {\n container: \"\",\n card: \"!bg-[#171719] border-slate-700 text-white rounded-xl\",\n icon: \"bg-slate-600\",\n title: \"\",\n button: \"bg-slate-600 hover:bg-slate-700 rounded-full\",\n paymentDetails:\n \"bg-[#0000001F] border-slate-600 text-white rounded-lg\",\n walletSection:\n \"bg-[#0000001F] border-slate-600 text-white rounded-lg\",\n notice: \"bg-amber-900/50 border-amber-700 text-white rounded-lg\",\n securityMessage: \"text-slate-400\",\n helperText: \"text-white\",\n helperLink: undefined,\n };\n case \"light\":\n return {\n container:\n \"bg-gradient-to-b from-white via-pink-50 via-purple-50 via-blue-50 to-cyan-50\",\n card: \"bg-white/95 backdrop-blur-sm border border-slate-200 shadow-2xl rounded-2xl\",\n icon: \"bg-gradient-to-r from-blue-600 to-purple-600\",\n title: \"text-slate-900\",\n button:\n \"bg-black hover:bg-gray-800 text-white font-light rounded-full\",\n paymentDetails: \"bg-slate-50 border border-slate-200 rounded-xl\",\n notice: \"text-slate-600\",\n walletSection: \"bg-slate-50 border border-slate-200 rounded-xl\",\n securityMessage: \"text-slate-600\",\n helperText: \"text-slate-600\",\n helperLink: \"text-purple-600 underline\",\n };\n default:\n return {\n container:\n \"bg-gradient-to-br from-slate-900 via-slate-800 to-slate-900\",\n card: \"bg-white/95 backdrop-blur-sm rounded-xl\",\n icon: \"bg-slate-600\",\n title: \"text-slate-900\",\n button: \"bg-slate-600 hover:bg-slate-700 text-white rounded-full\",\n paymentDetails: \"bg-slate-50 border-slate-200 rounded-lg\",\n notice: \"bg-amber-50 border-amber-200 text-amber-800 rounded-lg\",\n };\n }\n };\n\n const themeConfig = getThemeConfig();\n\n // If wallet is not connected, show the connect wallet UI\n if (!isWalletConnected) {\n // Theme config for connect wallet screen\n const getConnectWalletThemeConfig = () => {\n switch (theme) {\n case \"solana-dark\":\n return {\n container: \"\",\n card: \"!bg-[#171719] border-0 text-white rounded-xl\",\n button:\n \"bg-solana-gradient hover:opacity-90 text-white rounded-full\",\n paymentDetails:\n \"bg-[#0000001F] border-slate-600 text-white rounded-lg\",\n securityMessage: \"text-slate-400\",\n helperText: \"text-white\",\n };\n case \"seeker\":\n return {\n container: \"\",\n card: \"backdrop-blur-sm border-emerald-200 rounded-xl\",\n button:\n \"bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full\",\n paymentDetails: \"rounded-lg\",\n securityMessage: \"text-white\",\n helperText: \"text-white\",\n };\n case \"seeker-2\":\n return {\n container: \"\",\n card: \"backdrop-blur-sm border-emerald-200 rounded-xl\",\n button:\n \"bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full\",\n paymentDetails: \"rounded-lg\",\n securityMessage: \"text-white\",\n helperText: \"text-white\",\n };\n case \"terminal\":\n return {\n container: \"bg-gradient-to-br from-gray-900 via-black to-gray-800\",\n card: \"bg-black/90 backdrop-blur-sm border-green-400/30 text-green-400 rounded-xl\",\n button:\n \"bg-green-400 text-black hover:bg-green-300 font-mono rounded-full\",\n paymentDetails:\n \"bg-gray-900/50 border-green-400/20 text-green-300 rounded-lg\",\n securityMessage: \"text-green-300\",\n helperText: \"text-green-300\",\n };\n case \"solana-light\":\n return {\n container:\n \"bg-gradient-to-b from-white via-pink-50 via-purple-50 via-blue-50 to-cyan-50\",\n card: \"bg-white/95 backdrop-blur-sm border border-slate-200 shadow-2xl rounded-2xl\",\n button:\n \"bg-solana-gradient hover:opacity-90 text-white font-light rounded-full\",\n paymentDetails: \"bg-slate-50 border border-slate-200 rounded-xl\",\n securityMessage: \"text-slate-600\",\n helperText: \"text-slate-600\",\n };\n case \"dark\":\n return {\n container: \"\",\n card: \"!bg-[#171719] border-slate-700 text-white rounded-xl\",\n button: \"bg-slate-600 hover:bg-slate-700 rounded-full\",\n paymentDetails:\n \"bg-[#0000001F] border-slate-600 text-white rounded-lg\",\n securityMessage: \"text-slate-400\",\n helperText: \"text-white\",\n };\n case \"light\":\n return {\n container:\n \"bg-gradient-to-b from-white via-pink-50 via-purple-50 via-blue-50 to-cyan-50\",\n card: \"bg-white/95 backdrop-blur-sm border border-slate-200 shadow-2xl rounded-2xl\",\n button:\n \"bg-black hover:bg-gray-800 text-white font-light rounded-full\",\n paymentDetails: \"bg-slate-50 border border-slate-200 rounded-xl\",\n securityMessage: \"text-slate-600\",\n helperText: \"text-slate-600\",\n };\n default:\n return {\n container:\n \"bg-gradient-to-b from-white via-pink-50 via-purple-50 via-blue-50 to-cyan-50\",\n card: \"bg-white/95 backdrop-blur-sm border border-slate-200 shadow-2xl rounded-2xl\",\n button:\n \"bg-solana-gradient hover:opacity-90 text-white font-light rounded-full\",\n paymentDetails: \"bg-slate-50 border border-slate-200 rounded-xl\",\n securityMessage: \"text-slate-600\",\n helperText: \"text-slate-600\",\n };\n }\n };\n\n const connectThemeConfig = getConnectWalletThemeConfig();\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center min-h-screen p-4\",\n connectThemeConfig.container,\n classNames?.container\n )}\n style={\n theme === \"dark\"\n ? {\n background:\n \"linear-gradient(to bottom left, #db2777 0%, #9333ea 50%, #1e40af 100%)\",\n ...customStyles?.container,\n }\n : theme === \"light\"\n ? {\n background:\n \"linear-gradient(135deg, rgba(255, 255, 255, 0.6) 0%, rgba(236, 72, 153, 0.4) 33%, rgba(147, 51, 234, 0.4) 66%, rgba(34, 211, 238, 0.4) 100%)\",\n ...customStyles?.container,\n }\n : theme === \"seeker\"\n ? {\n background:\n \"radial-gradient(25% 200% at 50% 50%, #6CCEC6 0%, rgba(19, 77, 128, 0) 30%), radial-gradient(20% 20% at 50% 100%, rgba(66, 202, 189, 0.8) 0%, rgba(33, 100, 94, 0.8) 0%), linear-gradient(180deg, #001214 5%, #0D2734 100%)\",\n ...customStyles?.container,\n }\n : theme === \"seeker-2\"\n ? {\n background:\n \"radial-gradient(25% 200% at 50% 50%, #6CCEC6 0%, rgba(19, 77, 128, 0) 30%), radial-gradient(20% 20% at 50% 100%, rgba(66, 202, 189, 0.8) 0%, rgba(33, 100, 94, 0.8) 0%), linear-gradient(180deg, #001214 5%, #0D2734 100%)\",\n ...customStyles?.container,\n }\n : customStyles?.container\n }\n >\n <Card\n className={cn(\n \"w-full max-w-lg shadow-2xl border-0\",\n connectThemeConfig.card,\n classNames?.card\n )}\n style={\n theme === \"seeker\"\n ? { backgroundColor: \"#171719\", ...customStyles?.card }\n : theme === \"seeker-2\"\n ? {\n backgroundColor: \"rgba(29, 35, 35, 1)\",\n backdropFilter: \"blur(12px)\",\n ...customStyles?.card,\n }\n : customStyles?.card\n }\n >\n <CardHeader className=\"pb-6\">\n <div className=\"flex items-center space-x-4 mb-6\">\n <div className=\"w-auto h-auto rounded-full p-[2px] flex items-center justify-center overflow-hidden\">\n <div className=\"w-full h-full rounded-full flex items-center justify-center\">\n <img\n src={logoUrl}\n alt=\"Logo\"\n className=\"w-12 h-auto\"\n />\n </div>\n </div>\n <div>\n <CardTitle\n className={cn(\n \"text-l fw-bold pb-1\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : theme === \"terminal\"\n ? \"text-green-400 font-mono\"\n : \"text-slate-900\",\n classNames?.text\n )}\n >\n Premium Content XYZ\n </CardTitle>\n <CardDescription\n className={cn(\n \"text-sm font-light\",\n theme === \"terminal\"\n ? \"text-green-300\"\n : theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : theme === \"dark\" || theme === \"solana-dark\"\n ? \"text-white\"\n : \"text-[#71717A]\",\n classNames?.text\n )}\n >\n content.xyz\n </CardDescription>\n </div>\n </div>\n\n <div\n className={cn(\n \"border-b mb-6\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"border-slate-600\"\n : theme === \"seeker\" || theme === \"seeker-2\"\n ? \"\"\n : \"border-slate-200\"\n )}\n style={\n theme === \"seeker\" || theme === \"seeker-2\"\n ? { borderBottom: \"1px solid #FFFFFF1F\" }\n : undefined\n }\n ></div>\n\n <div className=\"text-center\">\n <h2\n className={cn(\n \"text-2xl font-normal mb-2\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : theme === \"terminal\"\n ? \"text-green-400 font-mono\"\n : \"text-slate-900\"\n )}\n >\n Payment Required\n </h2>\n <p\n className={cn(\n \"text-sm font-light\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : theme === \"terminal\"\n ? \"text-green-300\"\n : \"text-slate-600\"\n )}\n >\n Access to protected content. To access this content, please pay\n ${amount.toFixed(2)} USDC\n </p>\n </div>\n </CardHeader>\n\n <CardContent className=\"space-y-6\">\n {/* Payment Details Preview */}\n <div\n className={cn(\"p-6\", connectThemeConfig.paymentDetails)}\n style={\n theme === \"seeker\" || theme === \"seeker-2\"\n ? { backgroundColor: \"rgba(0, 0, 0, 0.12)\" }\n : theme === \"dark\" || theme === \"solana-dark\"\n ? { boxShadow: \"0px 0px 16px 4px #000000 inset\" }\n : undefined\n }\n >\n <div className=\"flex items-center justify-between mb-4\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : theme === \"terminal\"\n ? \"text-green-300\"\n : \"text-slate-900\"\n )}\n >\n Amount\n </span>\n <div\n className={cn(\n \"text-xl font-bold\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-purple-600\"\n : theme === \"seeker\" || theme === \"seeker-2\"\n ? \"\"\n : theme === \"terminal\"\n ? \"text-green-400\"\n : \"text-[#21ECAB]\"\n )}\n style={\n theme === \"seeker\" || theme === \"seeker-2\"\n ? { color: \"#95D2E6\" }\n : undefined\n }\n >\n ${amount.toFixed(2)}\n </div>\n </div>\n\n <div\n className={cn(\n \"border-t mb-4\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"border-slate-600\"\n : theme === \"seeker\" || theme === \"seeker-2\"\n ? \"\"\n : theme === \"terminal\"\n ? \"border-green-400/20\"\n : \"border-slate-200\"\n )}\n style={\n theme === \"seeker\" || theme === \"seeker-2\"\n ? { borderTop: \"1px solid #FFFFFF1F\" }\n : undefined\n }\n ></div>\n\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : theme === \"terminal\"\n ? \"text-green-300\"\n : \"text-slate-900\"\n )}\n >\n Currency\n </span>\n <div\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : theme === \"terminal\"\n ? \"text-green-300\"\n : \"text-slate-900\"\n )}\n >\n USDC\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : theme === \"terminal\"\n ? \"text-green-300\"\n : \"text-slate-900\"\n )}\n >\n Network\n </span>\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-2 h-2 rounded-full bg-green-500\"></div>\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : theme === \"terminal\"\n ? \"text-green-300\"\n : \"text-slate-900\"\n )}\n >\n {network === \"solana\" ? \"Mainnet\" : \"Devnet\"}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Security Message */}\n <div className=\"flex items-center justify-center space-x-2\">\n <svg\n className=\"w-4 h-4 text-green-500\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n >\n <path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4z\" />\n <path\n d=\"M9 12l2 2 4-4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span\n className={cn(\"text-sm\", connectThemeConfig.securityMessage)}\n >\n Secure payment powered by Solana\n </span>\n </div>\n\n {/* Connect Button */}\n <div className=\"relative\">\n <div\n ref={walletButtonRef}\n className=\"absolute opacity-0 pointer-events-none -z-10\"\n >\n <WalletMultiButton />\n </div>\n <PaymentButton\n amount={amount}\n description={description}\n customText=\"Connect Wallet\"\n onClick={() => {\n const button = walletButtonRef.current?.querySelector(\n \"button\"\n ) as HTMLElement;\n button?.click();\n }}\n className={cn(\"w-full h-12\", connectThemeConfig.button)}\n style={\n theme === \"dark\"\n ? {\n backgroundColor: \"#FFFFFF1F\",\n boxShadow: \"0 1px 0 0 rgba(255, 255, 255, 0.3) inset\",\n }\n : theme === \"seeker\" || theme === \"seeker-2\"\n ? {\n background:\n \"linear-gradient(0deg, #39A298, #39A298), radial-gradient(101.17% 101.67% at 50.28% 134.17%, rgba(255, 255, 255, 0.6) 0%, rgba(22, 188, 174, 0.6) 100%)\",\n backgroundColor: \"transparent\",\n }\n : undefined\n }\n />\n </div>\n\n {/* Helper Text */}\n <div className=\"text-center\">\n <p className={cn(\"text-sm\", connectThemeConfig.helperText)}>\n Don't have USDC?{\" \"}\n <a href=\"#\" className=\"font-medium text-[#4ADE80] underline\">\n Get it here\n <svg\n className=\"inline w-3 h-3 ml-1 text-[#4ADE80]\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </a>\n </p>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center min-h-screen p-4\",\n themeConfig.container,\n classNames?.container\n )}\n style={\n theme === \"dark\"\n ? {\n background:\n \"radial-gradient(circle at center, #ec4899 0%, #3b82f6 50%, #9333ea 100%)\",\n ...customStyles?.container,\n }\n : theme === \"light\"\n ? {\n background:\n \"linear-gradient(135deg, rgba(255, 255, 255, 0.6) 0%, rgba(236, 72, 153, 0.4) 33%, rgba(147, 51, 234, 0.4) 66%, rgba(34, 211, 238, 0.4) 100%)\",\n ...customStyles?.container,\n }\n : theme === \"seeker\"\n ? {\n background:\n \"radial-gradient(25% 200% at 50% 50%, #6CCEC6 0%, rgba(19, 77, 128, 0) 30%), radial-gradient(20% 20% at 50% 100%, rgba(66, 202, 189, 0.8) 0%, rgba(33, 100, 94, 0.8) 0%), linear-gradient(180deg, #001214 5%, #0D2734 100%)\",\n ...customStyles?.container,\n }\n : theme === \"seeker-2\"\n ? {\n background:\n \"radial-gradient(25% 200% at 50% 50%, #6CCEC6 0%, rgba(19, 77, 128, 0) 30%), radial-gradient(20% 20% at 50% 100%, rgba(66, 202, 189, 0.8) 0%, rgba(33, 100, 94, 0.8) 0%), linear-gradient(180deg, #001214 5%, #0D2734 100%)\",\n ...customStyles?.container,\n }\n : customStyles?.container\n }\n >\n <Card\n className={cn(\n \"w-full max-w-lg shadow-2xl border-0\",\n themeConfig.card,\n classNames?.card\n )}\n style={\n theme === \"seeker\"\n ? {\n backgroundColor: \"#171719\",\n ...customStyles?.card,\n }\n : theme === \"seeker-2\"\n ? {\n backgroundColor: \"rgba(29, 35, 35, 1)\",\n backdropFilter: \"blur(12px)\",\n ...customStyles?.card,\n }\n : customStyles?.card\n }\n >\n <CardHeader className=\"pb-6\">\n {/* Header with icon, title, and subtitle in top left */}\n <div className=\"flex items-center space-x-4 mb-6\">\n <div className=\"w-auto h-auto rounded-full p-[2px] flex items-center justify-center overflow-hidden\">\n <div className=\"w-full h-full rounded-full flex items-center justify-center\">\n <img\n src={logoUrl}\n alt=\"Logo\"\n className=\"w-12 h-auto\"\n />\n </div>\n </div>\n <div>\n <CardTitle\n className={cn(\n \"text-l fw-bold pb-1\",\n themeConfig.title,\n classNames?.text\n )}\n style={customStyles?.text}\n >\n Premium Content XYZ\n </CardTitle>\n <CardDescription\n className={cn(\n \"text-sm font-light\",\n theme === \"terminal\"\n ? \"text-green-300\"\n : theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-[#71717A]\"\n )}\n >\n content.xyz\n </CardDescription>\n </div>\n </div>\n\n {/* Underline */}\n <div\n className={cn(\n \"border-b mb-6\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"border-slate-600\"\n : theme === \"seeker\"\n ? \"\"\n : theme === \"seeker-2\"\n ? \"\"\n : \"border-slate-200\"\n )}\n style={\n theme === \"seeker\"\n ? { borderBottom: \"1px solid #FFFFFF1F\" }\n : theme === \"seeker-2\"\n ? { borderBottom: \"1px solid #FFFFFF1F\" }\n : undefined\n }\n ></div>\n\n {!showFailureScreen && (\n <div className=\"text-center\">\n <h2\n className={cn(\n \"text-2xl font-normal mb-2\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\"\n ? \"text-white\"\n : theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n Payment Required\n </h2>\n <p\n className={cn(\n \"text-sm font-light\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\"\n ? \"text-white\"\n : theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-600\"\n )}\n >\n Access to protected content on base-sepolia. To access this\n content, please pay $0.01 Base Sepolia USDC\n </p>\n </div>\n )}\n </CardHeader>\n\n <CardContent className=\"space-y-6\">\n {/* Failure Screen for all themes */}\n {showFailureScreen ? (\n <>\n {/* Failure Icon */}\n <div className=\"flex justify-center mb-4\">\n <div className=\"w-16 h-16 rounded-full bg-red-500 flex items-center justify-center\">\n <svg\n className=\"w-8 h-8 text-white\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"3\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </div>\n </div>\n\n {/* Payment Failed Title */}\n <div className=\"text-center mb-2\">\n <h3\n className={cn(\n \"text-2xl font-semibold\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n Payment Failed\n </h3>\n </div>\n\n {/* Error Message */}\n <p\n className={cn(\n \"text-center text-sm mb-6\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-gray-400\"\n : \"text-slate-600\"\n )}\n >\n {error?.message ||\n \"It looks like your wallet doesn't have enough funds or the transaction was declined. Please review the details and try again.\"}\n </p>\n\n {/* Payment Details Box */}\n <div\n className={cn(\n \"rounded-lg p-6\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"bg-[#0000001F] border border-slate-600\"\n : theme === \"seeker\" || theme === \"seeker-2\"\n ? \"bg-[rgba(0,0,0,0.12)] border border-white/10\"\n : \"bg-slate-50 border border-slate-200\"\n )}\n >\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n Amount Paid\n </span>\n <span\n className={cn(\n \"text-sm font-semibold\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-purple-600\"\n : \"text-green-500\"\n )}\n >\n ${amount.toFixed(2)}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n Wallet\n </span>\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n {reactiveWallet?.publicKey?.toString()\n ? `${reactiveWallet.publicKey\n .toString()\n .slice(0, 6)}...${reactiveWallet.publicKey\n .toString()\n .slice(-4)}`\n : reactiveWallet?.address\n ? `${reactiveWallet.address.slice(\n 0,\n 6\n )}...${reactiveWallet.address.slice(-4)}`\n : \"Not connected\"}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n Available Balance\n </span>\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n ${walletBalance}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n Currency\n </span>\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n USDC\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n Network\n </span>\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-2 h-2 rounded-full bg-green-500\"></div>\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n {networkLabel}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Orange Warning Banner */}\n <div\n className={cn(\n \"rounded-lg p-4 flex items-start space-x-3\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"bg-orange-900/50 border border-orange-700\"\n : \"bg-orange-50 border border-orange-200\"\n )}\n >\n <div className=\"flex-shrink-0\">\n <div className=\"w-6 h-6 rounded-full bg-orange-500 flex items-center justify-center\">\n <svg\n className=\"w-4 h-4 text-white\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n </div>\n </div>\n <p\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-orange-800\"\n )}\n >\n Make sure your Solana wallet has enough USDC to cover the\n amount before retrying the transaction.\n </p>\n </div>\n\n {/* Try Again Button */}\n <PaymentButton\n amount={amount}\n description={description}\n onClick={() => {\n // Reset error and retry\n reset();\n handlePayment();\n }}\n loading={isLoading}\n disabled={isLoading || !reactiveWallet?.publicKey}\n className={cn(\n \"w-full h-12\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? theme === \"dark\"\n ? \"bg-[#FFFFFF1F] rounded-full\"\n : \"bg-solana-gradient rounded-full\"\n : theme === \"light\"\n ? \"bg-black hover:bg-gray-800 text-white font-light rounded-full\"\n : theme === \"solana-light\"\n ? \"bg-solana-gradient hover:opacity-90 text-white font-light rounded-full\"\n : theme === \"seeker\" || theme === \"seeker-2\"\n ? \"bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full\"\n : \"bg-solana-gradient rounded-full\",\n classNames?.button\n )}\n style={\n theme === \"dark\"\n ? {\n backgroundColor: \"#FFFFFF1F\",\n boxShadow: \"0 1px 0 0 rgba(255, 255, 255, 0.3) inset\",\n ...customStyles?.button,\n }\n : theme === \"light\"\n ? customStyles?.button\n : theme === \"solana-light\"\n ? customStyles?.button\n : theme === \"seeker\"\n ? {\n background:\n \"linear-gradient(0deg, #39A298, #39A298), radial-gradient(101.17% 101.67% at 50.28% 134.17%, rgba(255, 255, 255, 0.6) 0%, rgba(22, 188, 174, 0.6) 100%)\",\n backgroundColor: \"transparent\",\n ...customStyles?.button,\n }\n : theme === \"seeker-2\"\n ? {\n background:\n \"linear-gradient(0deg, #39A298, #39A298), radial-gradient(101.17% 101.67% at 50.28% 134.17%, rgba(255, 255, 255, 0.6) 0%, rgba(22, 188, 174, 0.6) 100%)\",\n backgroundColor: \"transparent\",\n ...customStyles?.button,\n }\n : customStyles?.button\n }\n customText=\"Try Again\"\n />\n\n {/* Helper Text */}\n <div className=\"text-center\">\n <p\n className={cn(\n \"text-sm\",\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n <span\n className={cn(\n theme === \"dark\" ||\n theme === \"solana-dark\" ||\n theme === \"seeker\" ||\n theme === \"seeker-2\"\n ? \"text-gray-400\"\n : \"text-slate-600\"\n )}\n >\n Don't have USDC?{\" \"}\n </span>\n <a\n href=\"https://www.coinbase.com/how-to-buy/usdc\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n \"font-medium hover:opacity-80\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-purple-600\"\n : \"text-green-400 hover:text-green-300\"\n )}\n >\n Get it here\n <svg\n className={cn(\n \"inline w-3 h-3 ml-1\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-purple-600\"\n : \"text-green-400\"\n )}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </a>\n </p>\n </div>\n </>\n ) : (\n <>\n {/* Wallet Info */}\n <WalletSection\n wallet={reactiveWallet}\n onDisconnect={handleDisconnect}\n theme={theme}\n className={cn(\n \"mb-4\",\n (theme === \"dark\" || theme === \"solana-dark\") &&\n \"bg-[#0000001F] border-slate-600 text-white\"\n )}\n style={\n theme === \"dark\" || theme === \"solana-dark\"\n ? { boxShadow: \"0px 0px 16px 4px #000000 inset\" }\n : undefined\n }\n />\n\n {/* Payment Details */}\n {showPaymentDetails &&\n (theme === \"seeker\" || theme === \"seeker-2\" ? (\n <div\n className={cn(\"p-6\", themeConfig.paymentDetails)}\n style={{\n backgroundColor: \"rgba(0, 0, 0, 0.12)\",\n }}\n >\n {/* Amount Section - Top Row */}\n <div className=\"flex items-center justify-between mb-4\">\n <span className=\"text-sm text-white\">Amount</span>\n <div\n className=\"text-xl font-bold\"\n style={{ color: \"#95D2E6\" }}\n >\n {amount.toFixed(2)}\n </div>\n </div>\n\n {/* Separator Line */}\n <div\n className=\"border-t mb-4\"\n style={{ borderTop: \"1px solid #FFFFFF1F\" }}\n ></div>\n\n {/* Other Details */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-white\">Wallet</span>\n <div className=\"text-sm text-white\">\n {reactiveWallet?.publicKey?.toString()\n ? `${reactiveWallet.publicKey\n .toString()\n .slice(0, 6)}...${reactiveWallet.publicKey\n .toString()\n .slice(-4)}`\n : reactiveWallet?.address\n ? `${reactiveWallet.address.slice(\n 0,\n 6\n )}...${reactiveWallet.address.slice(-4)}`\n : \"Not connected\"}\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-white\">\n Available Balance\n </span>\n <div className=\"text-sm text-white\">\n ${walletBalance}\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-white\">Currency</span>\n <div className=\"text-sm text-white\">USDC</div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-white\">Network</span>\n <div className=\"flex items-center space-x-2\">\n <div\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: \"#95D2E6\" }}\n ></div>\n <span className=\"text-sm text-white\">\n {networkLabel}\n </span>\n </div>\n </div>\n </div>\n </div>\n ) : (\n <div\n className={cn(\"p-6\", themeConfig.paymentDetails)}\n style={\n theme === \"dark\" || theme === \"solana-dark\"\n ? { boxShadow: \"0px 0px 16px 4px #000000 inset\" }\n : undefined\n }\n >\n {/* Amount Section - Top Row */}\n <div className=\"flex items-center justify-between mb-4\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"text-white\"\n : \"text-black\"\n )}\n >\n Amount\n </span>\n <div\n className={cn(\n \"text-xl font-bold\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-purple-600\"\n : \"text-[#21ECAB]\"\n )}\n >\n ${amount.toFixed(2)}\n </div>\n </div>\n\n {/* Separator Line */}\n <div\n className={cn(\n \"border-t mb-4\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"border-slate-600\"\n : \"border-slate-200\"\n )}\n ></div>\n\n {/* Other Details */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"text-white\"\n : \"text-black\"\n )}\n >\n Wallet\n </span>\n <div\n className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n {reactiveWallet?.publicKey?.toString()\n ? `${reactiveWallet.publicKey\n .toString()\n .slice(0, 6)}...${reactiveWallet.publicKey\n .toString()\n .slice(-4)}`\n : reactiveWallet?.address\n ? `${reactiveWallet.address.slice(\n 0,\n 6\n )}...${reactiveWallet.address.slice(-4)}`\n : \"Not connected\"}\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"text-white\"\n : \"text-black\"\n )}\n >\n Available Balance\n </span>\n <div\n className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n ${walletBalance}\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"text-white\"\n : \"text-black\"\n )}\n >\n Currency\n </span>\n <div\n className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n USDC\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"text-white\"\n : \"text-black\"\n )}\n >\n Network\n </span>\n <div className=\"flex items-center space-x-2\">\n <div\n className={cn(\n \"w-2 h-2 rounded-full\",\n \"bg-green-500\"\n )}\n ></div>\n <span\n className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}\n >\n {networkLabel}\n </span>\n </div>\n </div>\n </div>\n </div>\n ))}\n\n {/* Security Message */}\n <div className=\"flex items-center justify-center space-x-2\">\n <svg\n className=\"w-4 h-4 text-green-500\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n >\n <path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4z\" />\n <path\n d=\"M9 12l2 2 4-4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span\n className={cn(\"text-sm\", themeConfig.securityMessage)}\n style={\n theme === \"seeker\"\n ? { color: \"#FFFFFF66\" }\n : theme === \"seeker-2\"\n ? { color: \"#FFFFFF66\" }\n : undefined\n }\n >\n Secure payment powered by Solana\n </span>\n </div>\n\n {/* Payment Button */}\n <PaymentButton\n amount={amount}\n description={description}\n onClick={handlePayment}\n loading={isLoading}\n disabled={isLoading || !reactiveWallet?.publicKey}\n className={cn(\n \"w-full h-12\",\n theme === \"dark\" || theme === \"solana-dark\"\n ? theme === \"dark\"\n ? \"bg-[#FFFFFF1F] rounded-full\"\n : \"bg-solana-gradient rounded-full\"\n : themeConfig.button,\n classNames?.button\n )}\n style={\n theme === \"dark\"\n ? {\n backgroundColor: \"#FFFFFF1F\",\n boxShadow: \"0 1px 0 0 rgba(255, 255, 255, 0.3) inset\",\n ...customStyles?.button,\n }\n : theme === \"seeker\"\n ? {\n background:\n \"linear-gradient(0deg, #39A298, #39A298), radial-gradient(101.17% 101.67% at 50.28% 134.17%, rgba(255, 255, 255, 0.6) 0%, rgba(22, 188, 174, 0.6) 100%)\",\n backgroundColor: \"transparent\",\n ...customStyles?.button,\n }\n : theme === \"seeker-2\"\n ? {\n background:\n \"linear-gradient(0deg, #39A298, #39A298), radial-gradient(101.17% 101.67% at 50.28% 134.17%, rgba(255, 255, 255, 0.6) 0%, rgba(22, 188, 174, 0.6) 100%)\",\n backgroundColor: \"transparent\",\n ...customStyles?.button,\n }\n : customStyles?.button\n }\n />\n\n {/* Error Message */}\n {error && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-4\">\n <p className=\"text-sm text-red-800 text-center\">\n <span className=\"font-semibold\">Payment Error:</span>{\" \"}\n {error.message}\n </p>\n </div>\n )}\n\n {/* Helper Text */}\n <div className=\"text-center\">\n <p className={cn(\"text-sm\", themeConfig.helperText)}>\n <span\n style={\n theme === \"seeker\"\n ? { color: \"#FFFFFF66\" }\n : theme === \"seeker-2\"\n ? { color: \"#FFFFFF66\" }\n : undefined\n }\n >\n Don't have USDC?{\" \"}\n </span>\n <a\n href=\"#\"\n className={cn(\n \"font-medium\",\n theme === \"seeker\"\n ? \"text-[#4ADE80]\"\n : theme === \"seeker-2\"\n ? \"text-[#4ADE80]\"\n : themeConfig.helperLink || \"text-[#4ADE80]\"\n )}\n style={\n theme === \"seeker\"\n ? { color: \"#4ADE80\" }\n : theme === \"seeker-2\"\n ? { color: \"#4ADE80\" }\n : undefined\n }\n >\n Get it here\n <svg\n className={cn(\n \"inline w-3 h-3 ml-1\",\n theme === \"light\"\n ? \"text-purple-600\"\n : theme === \"seeker\"\n ? \"text-[#4ADE80]\"\n : theme === \"seeker-2\"\n ? \"text-[#4ADE80]\"\n : \"text-[#4ADE80]\"\n )}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </a>\n </p>\n </div>\n </>\n )}\n </CardContent>\n </Card>\n </div>\n );\n };\n\n// Main exported component - automatically sets up providers if needed\nexport const X402Paywall: React.FC<X402PaywallProps> = ({\n autoSetupProviders = true,\n providerNetwork,\n providerEndpoint,\n ...props\n}) => {\n // Auto-detect provider network from the network prop if not explicitly set\n const detectedProviderNetwork =\n providerNetwork ??\n (props.network === \"solana\"\n ? WalletAdapterNetwork.Mainnet\n : WalletAdapterNetwork.Devnet);\n\n // Hooks must be called unconditionally\n const endpoint = useMemo(\n () =>\n providerEndpoint ||\n props.rpcUrl ||\n clusterApiUrl(detectedProviderNetwork),\n [providerEndpoint, props.rpcUrl, detectedProviderNetwork]\n );\n\n const wallets = useMemo(\n () => [new PhantomWalletAdapter(), new SolflareWalletAdapter()],\n []\n );\n\n // If auto-setup is enabled, wrap with providers\n if (autoSetupProviders) {\n\n return (\n <ConnectionProvider endpoint={endpoint}>\n <WalletProvider wallets={wallets} autoConnect={true}>\n <WalletModalProvider>\n <X402PaywallContent {...props} />\n </WalletModalProvider>\n </WalletProvider>\n </ConnectionProvider>\n );\n }\n\n // Auto-setup disabled - just render content (assumes providers exist)\n return <X402PaywallContent {...props} />;\n};\n\nX402Paywall.displayName = \"X402Paywall\";\n","import * as React from 'react';\nimport { Badge } from '@/components/ui/badge';\nimport { Spinner } from '@/components/ui/spinner';\nimport { PaymentStatusProps } from '@/types';\nimport { cn } from '@/lib/utils';\n\nexport const PaymentStatus: React.FC<PaymentStatusProps> = ({\n status,\n message,\n progress,\n className,\n style,\n}) => {\n const getStatusConfig = () => {\n switch (status) {\n case 'idle':\n return {\n label: 'Ready',\n color: 'bg-gray-100 text-gray-800',\n icon: null,\n };\n case 'connecting':\n return {\n label: 'Connecting',\n color: 'bg-blue-100 text-blue-800',\n icon: <Spinner size=\"sm\" variant=\"default\" />,\n };\n case 'pending':\n return {\n label: 'Processing',\n color: 'bg-yellow-100 text-yellow-800',\n icon: <Spinner size=\"sm\" variant=\"solana\" />,\n };\n case 'success':\n return {\n label: 'Paid',\n color: 'bg-green-100 text-green-800',\n icon: (\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n ),\n };\n case 'error':\n return {\n label: 'Failed',\n color: 'bg-red-100 text-red-800',\n icon: (\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n ),\n };\n default:\n return {\n label: 'Unknown',\n color: 'bg-gray-100 text-gray-800',\n icon: null,\n };\n }\n };\n\n const config = getStatusConfig();\n\n return (\n <div className={cn('flex flex-col gap-2', className)} style={style}>\n <div className=\"flex items-center gap-2\">\n <Badge className={cn('flex items-center gap-1.5', config.color)}>\n {config.icon}\n <span>{config.label}</span>\n </Badge>\n {message && <span className=\"text-sm text-muted-foreground\">{message}</span>}\n </div>\n \n {progress !== undefined && progress > 0 && (\n <div className=\"w-full bg-gray-200 rounded-full h-2 overflow-hidden\">\n <div\n className=\"bg-solana-gradient h-full transition-all duration-300\"\n style={{ width: `${progress}%` }}\n />\n </div>\n )}\n </div>\n );\n};\n\nPaymentStatus.displayName = 'PaymentStatus';\n"],"names":["getUSDCMint","network","getRpcUrl","fetchUSDCBalance","walletAddress","customRpcUrl","rpcUrl","connection","Connection","walletPubkey","PublicKey","usdcMint","tokenAccountAddress","getAssociatedTokenAddress","tokenAccount","getAccount","error","r","e","t","f","n","o","clsx","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","_a","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","prefix","getPrefixedClassGroupEntries","classGroup","processClassesRecursively","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","key","path","currentClassPartObject","pathPart","func","classGroupEntries","prefixedClassGroup","value","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","createParseClassName","separator","experimentalParseClassName","isSeparatorSingleCharacter","firstSeparatorCharacter","separatorLength","parseClassName","modifiers","bracketDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","hasImportantModifier","baseClassName","maybePostfixModifierPosition","sortModifiers","sortedModifiers","unsortedModifiers","modifier","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","classGroupsInConflict","classNames","result","originalClassName","variantModifier","modifierId","classId","conflictGroups","i","group","twJoin","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fromTheme","themeGetter","arbitraryValueRegex","fractionRegex","stringLengths","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isLength","isNumber","isArbitraryLength","getIsArbitraryValue","isLengthOnly","isArbitraryNumber","isInteger","isPercent","isArbitraryValue","isTshirtSize","sizeLabels","isArbitrarySize","isNever","isArbitraryPosition","imageLabels","isArbitraryImage","isImage","isArbitraryShadow","isShadow","isAny","label","testValue","getDefaultConfig","colors","spacing","blur","brightness","borderColor","borderRadius","borderSpacing","borderWidth","contrast","grayscale","hueRotate","invert","gap","gradientColorStops","gradientColorStopPositions","inset","margin","opacity","padding","saturate","scale","sepia","skew","space","translate","getOverscroll","getOverflow","getSpacingWithAutoAndArbitrary","getSpacingWithArbitrary","getLengthWithEmptyAndArbitrary","getNumberWithAutoAndArbitrary","getPositions","getLineStyles","getBlendModes","getAlign","getZeroAndEmpty","getBreaks","getNumberAndArbitrary","twMerge","cn","inputs","Card","React","props","ref","jsx","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","setRef","composeRefs","refs","node","hasCleanup","cleanups","cleanup","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","children","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","Slot","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","element","getter","mayWarn","_b","falsyToString","cx","cva","base","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","buttonVariants","Button","size","asChild","Spinner","sizes","PaymentButton","amount","_description","onClick","disabled","loading","style","customText","formatAmount","jsxs","badgeVariants","Badge","WalletSection","wallet","balance","showBalance","onDisconnect","formatAddress","address","getNetworkLabel","createPaymentHeaderFromTransaction","transaction","paymentRequirements","x402Version","serializedTransaction","paymentPayload","getDefaultRpcUrl","createSolanaPaymentHeader","feePayer","feePayerPubkey","userPubkey","destination","instructions","ComputeBudgetProgram","mintPubkey","mintInfo","programId","_c","TOKEN_2022_PROGRAM_ID","TOKEN_PROGRAM_ID","mint","getMint","sourceAta","destinationAta","ASSOCIATED_TOKEN_PROGRAM_ID","createAtaInstruction","TransactionInstruction","SystemProgram","createTransferCheckedInstruction","blockhash","message","TransactionMessage","VersionedTransaction","userSignedTx","createPaymentFetch","fetchFn","maxValue","input","init","response","rawResponse","parsedPaymentRequirements","selectedRequirements","req","paymentHeader","newInit","X402Client","__publicField","createX402Client","useX402Payment","status","setStatus","useState","setError","transactionId","setTransactionId","isLoading","setIsLoading","reset","useCallback","description","x402Client","defaultEndpoint","apiEndpoint","contentType","paymentResponse","txId","decoded","err","paymentError","X402PaywallContent","walletProp","treasuryAddress","facilitatorUrl","logoUrl","showPaymentDetails","customStyles","maxPaymentAmount","onPaymentStart","onPaymentSuccess","onPaymentError","onWalletConnect","walletContext","useWallet","reactiveWallet","useMemo","isPaid","setIsPaid","walletBalance","setWalletBalance","walletButtonRef","useRef","networkLabel","pay","handleDisconnect","isWalletConnected","useEffect","handlePayment","showFailureScreen","themeConfig","connectThemeConfig","WalletMultiButton","button","Fragment","X402Paywall","autoSetupProviders","providerNetwork","providerEndpoint","detectedProviderNetwork","WalletAdapterNetwork","endpoint","clusterApiUrl","wallets","PhantomWalletAdapter","SolflareWalletAdapter","ConnectionProvider","WalletProvider","WalletModalProvider","PaymentStatus","progress"],"mappings":"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","x_google_ignoreList":[1,2,5,6,7,13]}
1
+ {"version":3,"file":"index.mjs","sources":["../src/lib/balance.ts","../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/ui/card.tsx","../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@19.2.7_react@19.2.3/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-slot@1.2.4_@types+react@19.2.7_react@19.2.3/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/components/ui/button.tsx","../src/components/ui/spinner.tsx","../src/components/PaymentButton.tsx","../src/components/ui/badge.tsx","../src/components/WalletSection.tsx","../node_modules/.pnpm/x402-solana@2.0.0_@solana+spl-token@0.4.14_@solana+web3.js@1.98.4_bufferutil@4.1.0_type_59885f6b3985c8b4a42059b69860d6e4/node_modules/x402-solana/dist/client/index.mjs","../src/hooks/useX402Payment.ts","../src/components/X402Paywall.tsx","../src/components/PaymentStatus.tsx"],"sourcesContent":["import { Connection, PublicKey } from '@solana/web3.js';\nimport { getAssociatedTokenAddress, getAccount } from '@solana/spl-token';\nimport { SolanaNetwork } from '@/types';\n\n/**\n * Get USDC mint address for the network\n */\nfunction getUSDCMint(network: SolanaNetwork): string {\n return network === 'solana'\n ? 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' // Mainnet USDC\n : '4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU'; // Devnet USDC\n}\n\n/**\n * Get RPC URL for the network\n */\nfunction getRpcUrl(network: SolanaNetwork): string {\n return network === 'solana'\n ? `https://mainnet.helius-rpc.com/?api-key=${process.env.VITE_HELIUS_API_KEY}` // Recommended to have a custom rpc url to avoid rate limits\n // ? 'https://api.mainnet-beta.solana.com'\n : 'https://api.devnet.solana.com';\n}\n\n/**\n * Fetch USDC balance for a wallet address\n * @param walletAddress - Solana wallet public key as string\n * @param network - Solana network (mainnet or devnet)\n * @param customRpcUrl - Optional custom RPC URL\n * @returns USDC balance as formatted string\n */\nexport async function fetchUSDCBalance(\n walletAddress: string,\n network: SolanaNetwork,\n customRpcUrl?: string\n): Promise<string> {\n try {\n const rpcUrl = customRpcUrl || getRpcUrl(network);\n const connection = new Connection(rpcUrl, 'confirmed');\n const walletPubkey = new PublicKey(walletAddress);\n const usdcMint = new PublicKey(getUSDCMint(network));\n\n // Get associated token account address\n const tokenAccountAddress = await getAssociatedTokenAddress(\n usdcMint,\n walletPubkey\n );\n\n // Fetch token account info\n const tokenAccount = await getAccount(connection, tokenAccountAddress);\n\n // Convert from micro-USDC (6 decimals) to USDC\n const balance = Number(tokenAccount.amount) / 1_000_000;\n\n return balance.toFixed(2);\n } catch (error) {\n console.error('Error fetching USDC balance:', error);\n return '0.00';\n }\n}\n\n/**\n * Convert USD amount to micro-USDC\n */\nexport function toMicroUSDC(amount: number): bigint {\n return BigInt(Math.floor(amount * 1_000_000));\n}\n\n/**\n * Convert micro-USDC to USD amount\n */\nexport function fromMicroUSDC(microAmount: bigint | number): number {\n return Number(microAmount) / 1_000_000;\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<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 { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow\",\n className\n )}\n {...props}\n />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'sm' | 'md' | 'lg';\n variant?: 'default' | 'solana';\n}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size = 'md', variant = 'default', ...props }, ref) => {\n const sizes = {\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-8 w-8',\n };\n\n const variants = {\n default: 'border-gray-200 border-t-gray-900',\n solana: 'border-gray-200 border-t-solana-primary',\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'inline-block animate-spin rounded-full border-2',\n sizes[size],\n variants[variant],\n className\n )}\n role=\"status\"\n aria-label=\"Loading\"\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n }\n);\n\nSpinner.displayName = 'Spinner';\n\nexport { Spinner };\n","import * as React from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Spinner } from \"@/components/ui/spinner\";\nimport { PaymentButtonProps } from \"@/types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const PaymentButton = React.forwardRef<\n HTMLButtonElement,\n PaymentButtonProps\n>(\n (\n {\n amount,\n description: _description,\n onClick,\n disabled = false,\n loading = false,\n className,\n style,\n customText,\n ...props\n },\n ref\n ) => {\n const formatAmount = (value: number) => {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2,\n }).format(value);\n };\n\n return (\n <Button\n ref={ref}\n onClick={onClick}\n disabled={disabled || loading}\n className={cn(\n \"w-full hover:opacity-90 text-white font-normal shadow-lg hover:shadow-xl transition-all duration-200 transform hover:scale-[1.02] rounded-xl\",\n // Only apply bg-solana-gradient if no custom style is provided\n !style && \"bg-solana-gradient\",\n disabled || loading ? \"opacity-50 cursor-not-allowed\" : \"\",\n className\n )}\n style={style}\n {...props}\n >\n {loading ? (\n <div className=\"flex items-center gap-3\">\n <Spinner\n size=\"sm\"\n variant=\"default\"\n className=\"border-white/30 border-t-white\"\n />\n <span>Processing Payment...</span>\n </div>\n ) : (\n <span>{customText || `Pay ${formatAmount(amount)} USDC`}</span>\n )}\n </Button>\n );\n }\n);\n\nPaymentButton.displayName = \"PaymentButton\";\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { WalletSectionProps } from \"@/types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const WalletSection: React.FC<WalletSectionProps> = ({\n wallet,\n balance,\n network,\n showBalance = true,\n onDisconnect,\n theme,\n className,\n style,\n}) => {\n const walletAddress = wallet?.publicKey?.toString() || wallet?.address;\n\n const formatAddress = (address: string) => {\n return `${address.slice(0, 4)}...${address.slice(-4)}`;\n };\n\n const getNetworkLabel = () => {\n return network === \"solana\" ? \"Mainnet\" : \"Devnet\";\n };\n\n if (!wallet || !walletAddress) {\n return (\n <Card className={cn(\"border-dashed\", className)} style={style}>\n <CardContent className=\"p-4 text-center text-muted-foreground\">\n <p className=\"text-sm\">No wallet connected</p>\n </CardContent>\n </Card>\n );\n }\n\n return (\n <div\n className={cn(\n theme === \"terminal\" || theme === \"terminal-light\"\n ? \"rounded-none\"\n : \"rounded-lg\",\n \"p-4\",\n className\n )}\n style={style}\n >\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n {/* Wallet Picture */}\n <div\n className={cn(\n \"w-10 h-10 rounded-full flex items-center justify-center\",\n theme === \"terminal\"\n ? \"bg-green-400\"\n : \"bg-gradient-to-r from-blue-500 to-purple-500\"\n )}\n >\n <span\n className={cn(\n \"font-semibold text-sm\",\n theme === \"terminal\"\n ? \"text-black font-vt323\"\n : \"text-white font-mono\"\n )}\n >\n {walletAddress.slice(0, 2).toUpperCase()}\n </span>\n </div>\n <div>\n <div\n className={cn(\n \"text-xs font-medium\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-[#71717A]\"\n : theme === \"terminal\"\n ? \"\"\n : theme === \"terminal-light\"\n ? \"\"\n : theme === \"seeker-light\"\n ? \"\"\n : \"text-[#FFFFFF66]\"\n )}\n style={\n theme === \"terminal\"\n ? { color: \"#FFFFFF66\" }\n : theme === \"terminal-light\"\n ? { color: \"#71717A\" }\n : theme === \"seeker-light\"\n ? { color: \"#71717A\" }\n : undefined\n }\n >\n Connected Wallet\n </div>\n <div\n className={cn(\n \"text-sm\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-black\"\n : theme === \"terminal\"\n ? \"text-white font-vt323\"\n : theme === \"terminal-light\"\n ? \"text-black font-vt323\"\n : theme === \"seeker-light\"\n ? \"text-black\"\n : \"text-white font-mono\"\n )}\n >\n {formatAddress(walletAddress)}\n </div>\n </div>\n </div>\n <button\n onClick={onDisconnect}\n className={cn(\n \"text-sm font-medium transition-colors\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-red-500 hover:text-red-700\"\n : theme === \"terminal\"\n ? \"hover:opacity-80 font-vt323\"\n : theme === \"terminal-light\"\n ? \"hover:opacity-80 font-vt323\"\n : theme === \"seeker-light\"\n ? \"hover:opacity-80\"\n : \"text-[#FFFFFF66] hover:opacity-80\"\n )}\n style={\n theme === \"terminal\"\n ? { color: \"#FFFFFF66\" }\n : theme === \"terminal-light\"\n ? { color: \"#71717A\" }\n : theme === \"seeker-light\"\n ? { color: \"#71717A\" }\n : undefined\n }\n >\n Disconnect\n </button>\n </div>\n\n {showBalance && balance && (\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm font-medium\",\n theme === \"terminal\" ? \"text-white\" : \"text-slate-600\"\n )}\n >\n USDC Balance\n </span>\n <div className=\"flex items-center gap-2\">\n <span\n className={cn(\n \"text-lg font-bold\",\n theme === \"terminal\"\n ? \"text-white font-vt323\"\n : \"text-slate-900\"\n )}\n >\n {balance}\n </span>\n <span\n className={cn(\n \"text-xs font-semibold px-2 py-1 rounded-md\",\n theme === \"terminal\"\n ? \"text-white bg-green-400 font-vt323\"\n : \"text-slate-500 bg-slate-200\"\n )}\n >\n USDC\n </span>\n </div>\n </div>\n )}\n\n {network && (\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm font-medium\",\n theme === \"terminal\" ? \"text-white\" : \"text-slate-600\"\n )}\n >\n Network\n </span>\n <Badge\n variant=\"outline\"\n className={cn(\n \"text-xs\",\n theme === \"terminal\"\n ? \"border-green-400/30 text-white font-vt323\"\n : \"border-slate-300 text-slate-700\"\n )}\n >\n {getNetworkLabel()}\n </Badge>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nWalletSection.displayName = \"WalletSection\";\n","import { Connection, PublicKey, ComputeBudgetProgram, TransactionMessage, VersionedTransaction } from '@solana/web3.js';\nimport { TOKEN_2022_PROGRAM_ID, TOKEN_PROGRAM_ID, getMint, getAssociatedTokenAddress, createTransferCheckedInstruction } from '@solana/spl-token';\n\n// src/types/x402-protocol.ts\nvar SOLANA_MAINNET_CAIP2 = \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\";\nfunction isSolanaNetwork(network) {\n return network === \"solana\" || network === \"solana-devnet\" || network.startsWith(\"solana:\");\n}\nfunction isSolanaMainnet(network) {\n return network === \"solana\" || network === SOLANA_MAINNET_CAIP2;\n}\n\n// src/utils/helpers.ts\nfunction createPaymentPayload(transaction, paymentRequirements, resourceUrl) {\n const base64Transaction = Buffer.from(transaction.serialize()).toString(\n \"base64\"\n );\n const paymentPayload = {\n x402Version: 2,\n resource: {\n url: resourceUrl,\n description: paymentRequirements.extra?.description || \"\",\n mimeType: paymentRequirements.extra?.mimeType || \"application/json\"\n },\n accepted: paymentRequirements,\n payload: {\n transaction: base64Transaction\n }\n };\n const paymentHeader = Buffer.from(JSON.stringify(paymentPayload)).toString(\n \"base64\"\n );\n return paymentHeader;\n}\nfunction getDefaultRpcUrl(network) {\n if (isSolanaMainnet(network)) {\n return \"https://api.mainnet-beta.solana.com\";\n }\n return \"https://api.devnet.solana.com\";\n}\nvar DEFAULT_COMPUTE_UNIT_LIMIT = 7e3;\nvar DEFAULT_COMPUTE_UNIT_PRICE_MICROLAMPORTS = 1;\nasync function createSolanaPaymentTransaction(wallet, paymentRequirements, rpcUrl) {\n const connection = new Connection(rpcUrl, \"confirmed\");\n const feePayer = paymentRequirements.extra?.feePayer;\n if (!feePayer) {\n throw new Error(\n \"Missing facilitator feePayer in payment requirements (extra.feePayer).\"\n );\n }\n const feePayerPubkey = new PublicKey(feePayer);\n const walletAddress = wallet?.publicKey?.toString() || wallet?.address;\n if (!walletAddress) {\n throw new Error(\"Missing connected Solana wallet address or publicKey\");\n }\n const userPubkey = new PublicKey(walletAddress);\n if (!paymentRequirements.payTo) {\n throw new Error(\"Missing payTo in payment requirements\");\n }\n const destination = new PublicKey(paymentRequirements.payTo);\n if (!paymentRequirements.asset) {\n throw new Error(\"Missing token mint for SPL transfer\");\n }\n const mintPubkey = new PublicKey(paymentRequirements.asset);\n const instructions = [];\n instructions.push(\n ComputeBudgetProgram.setComputeUnitLimit({\n units: DEFAULT_COMPUTE_UNIT_LIMIT\n })\n );\n instructions.push(\n ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: DEFAULT_COMPUTE_UNIT_PRICE_MICROLAMPORTS\n })\n );\n const mintInfo = await connection.getAccountInfo(mintPubkey, \"confirmed\");\n const programId = mintInfo?.owner?.toBase58() === TOKEN_2022_PROGRAM_ID.toBase58() ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n const mint = await getMint(connection, mintPubkey, void 0, programId);\n const sourceAta = await getAssociatedTokenAddress(\n mintPubkey,\n userPubkey,\n false,\n programId\n );\n const destinationAta = await getAssociatedTokenAddress(\n mintPubkey,\n destination,\n false,\n programId\n );\n const sourceAtaInfo = await connection.getAccountInfo(sourceAta, \"confirmed\");\n if (!sourceAtaInfo) {\n throw new Error(\n `User does not have an Associated Token Account for ${paymentRequirements.asset}. Please create one first or ensure you have the required token.`\n );\n }\n const destAtaInfo = await connection.getAccountInfo(\n destinationAta,\n \"confirmed\"\n );\n if (!destAtaInfo) {\n throw new Error(\n `Destination does not have an Associated Token Account for ${paymentRequirements.asset}. The receiver must create their token account before receiving payments.`\n );\n }\n const amountStr = paymentRequirements.amount || paymentRequirements.maxAmountRequired;\n if (!amountStr) {\n throw new Error(\"Missing amount in payment requirements\");\n }\n const amount = BigInt(amountStr);\n instructions.push(\n createTransferCheckedInstruction(\n sourceAta,\n mintPubkey,\n destinationAta,\n userPubkey,\n amount,\n mint.decimals,\n [],\n programId\n )\n );\n const { blockhash } = await connection.getLatestBlockhash(\"confirmed\");\n const message = new TransactionMessage({\n payerKey: feePayerPubkey,\n recentBlockhash: blockhash,\n instructions\n }).compileToV0Message();\n const transaction = new VersionedTransaction(message);\n if (typeof wallet?.signTransaction !== \"function\") {\n throw new Error(\"Connected wallet does not support signTransaction\");\n }\n const userSignedTx = await wallet.signTransaction(transaction);\n return userSignedTx;\n}\n\n// src/client/payment-interceptor.ts\nfunction createPaymentFetch(fetchFn, wallet, rpcUrl, maxValue = BigInt(0), verbose = false) {\n const log = (...args) => {\n if (verbose) console.log(\"[x402-solana]\", ...args);\n };\n return async (input, init) => {\n const url = typeof input === \"string\" ? input : input.url;\n log(\"Making initial request to:\", url);\n const response = await fetchFn(input, init);\n log(\"Initial response status:\", response.status);\n if (response.status !== 402) {\n return response;\n }\n log(\"Got 402, parsing payment requirements...\");\n const rawResponse = await response.json();\n log(\"Payment requirements:\", JSON.stringify(rawResponse, null, 2));\n const parsedPaymentRequirements = rawResponse.accepts || [];\n const selectedRequirements = parsedPaymentRequirements.find(\n (req) => req.scheme === \"exact\" && isSolanaNetwork(req.network)\n );\n if (!selectedRequirements) {\n console.error(\n \"\\u274C No suitable Solana payment requirements found. Available networks:\",\n parsedPaymentRequirements.map((req) => req.network)\n );\n throw new Error(\"No suitable Solana payment requirements found\");\n }\n const paymentAmount = BigInt(\n selectedRequirements.amount || selectedRequirements.maxAmountRequired || \"0\"\n );\n if (maxValue > BigInt(0) && paymentAmount > maxValue) {\n throw new Error(\"Payment amount exceeds maximum allowed\");\n }\n const resourceUrl = typeof input === \"string\" ? input : input.url;\n log(\"Creating signed transaction...\");\n const signedTransaction = await createSolanaPaymentTransaction(\n wallet,\n selectedRequirements,\n rpcUrl\n );\n log(\"Transaction signed successfully\");\n const paymentHeader = createPaymentPayload(\n signedTransaction,\n selectedRequirements,\n resourceUrl\n );\n log(\"Payment header created, length:\", paymentHeader.length);\n const newInit = {\n ...init,\n headers: {\n ...init?.headers || {},\n \"PAYMENT-SIGNATURE\": paymentHeader\n }\n };\n log(\"Retrying request with PAYMENT-SIGNATURE header...\");\n const retryResponse = await fetchFn(input, newInit);\n log(\"Retry response status:\", retryResponse.status);\n return retryResponse;\n };\n}\n\n// src/client/index.ts\nvar X402Client = class {\n paymentFetch;\n constructor(config) {\n const rpcUrl = config.rpcUrl || getDefaultRpcUrl(config.network);\n const fetchFn = config.customFetch || globalThis.fetch.bind(globalThis);\n this.paymentFetch = createPaymentFetch(\n fetchFn,\n config.wallet,\n rpcUrl,\n config.amount || BigInt(0),\n config.verbose || false\n );\n }\n /**\n * Make a fetch request with automatic x402 payment handling.\n * If a customFetch was provided in the config, it will be used for all requests.\n */\n async fetch(input, init) {\n return this.paymentFetch(input, init);\n }\n};\nfunction createX402Client(config) {\n return new X402Client(config);\n}\n\nexport { X402Client, createX402Client };\n//# sourceMappingURL=index.mjs.map\n//# sourceMappingURL=index.mjs.map","import { useState, useCallback } from 'react';\nimport { createX402Client } from 'x402-solana/client';\nimport { WalletAdapter, SolanaNetwork, PaymentStatus } from '@/types';\n\nexport interface PaymentConfig {\n wallet: WalletAdapter;\n network: SolanaNetwork;\n rpcUrl?: string;\n apiEndpoint?: string;\n facilitatorUrl?: string;\n /** Maximum payment amount in USDC (V2 protocol) */\n amount?: number;\n /** Enable verbose logging for debugging (default: false) */\n verbose?: boolean;\n}\n\nexport interface PaymentResult {\n transactionId: string | null;\n status: PaymentStatus;\n error: Error | null;\n /** The response content from the server (HTML or JSON) */\n responseContent: string | null;\n}\n\nexport interface UseX402PaymentReturn {\n pay: (amount: number, description: string) => Promise<string | null>;\n isLoading: boolean;\n status: PaymentStatus;\n error: Error | null;\n transactionId: string | null;\n /** The response content from the server (HTML or JSON) */\n responseContent: string | null;\n reset: () => void;\n}\n\n/**\n * Hook for managing x402 payments on Solana\n */\nexport function useX402Payment(config: PaymentConfig): UseX402PaymentReturn {\n const [status, setStatus] = useState<PaymentStatus>('idle');\n const [error, setError] = useState<Error | null>(null);\n const [transactionId, setTransactionId] = useState<string | null>(null);\n const [responseContent, setResponseContent] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n const reset = useCallback(() => {\n setStatus('idle');\n setError(null);\n setTransactionId(null);\n setResponseContent(null);\n setIsLoading(false);\n }, []);\n\n const pay = useCallback(\n async (amount: number, description: string): Promise<string | null> => {\n try {\n setIsLoading(true);\n setStatus('pending');\n setError(null);\n\n // Validate amount against max if set\n if (config.amount && amount > config.amount) {\n throw new Error(`Payment amount ${amount} exceeds maximum allowed ${config.amount}`);\n }\n\n // Get wallet address\n const walletAddress = config.wallet.publicKey?.toString() || config.wallet.address;\n\n if (!walletAddress) {\n throw new Error('Wallet not connected');\n }\n\n // Create x402 client\n const x402Client = createX402Client({\n wallet: config.wallet,\n network: config.network,\n rpcUrl: config.rpcUrl,\n amount: config.amount ? BigInt(Math.floor(config.amount * 1_000_000)) : undefined,\n verbose: config.verbose,\n });\n\n // Determine API endpoint\n // Default to PayAI Echo Merchant (free test endpoint that refunds payments)\n // Users can override with their own 402-protected endpoint\n\n let defaultEndpoint;\n if (config.network === 'solana') {\n defaultEndpoint = 'https://x402.payai.network/api/solana/paid-content';\n } else {\n defaultEndpoint = 'https://x402.payai.network/api/solana-devnet/paid-content';\n }\n\n const apiEndpoint = config.apiEndpoint || defaultEndpoint;\n const isEchoMerchant = apiEndpoint === defaultEndpoint;\n\n if (config.verbose) {\n console.log('Initiating x402 payment:', {\n endpoint: apiEndpoint,\n isDemo: isEchoMerchant,\n amount,\n description,\n wallet: walletAddress,\n network: config.network,\n });\n }\n\n // Make the 402-protected request\n // x402Client.fetch() automatically handles the full payment flow:\n // 1. Makes initial request → receives 402 with payment requirements\n // 2. Creates and signs payment transaction\n // 3. Retries with PAYMENT-SIGNATURE header containing signed payment (v2)\n // 4. Merchant verifies, settles, and fulfills the request\n const response = await x402Client.fetch(apiEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n message: description,\n amount,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Payment request failed: ${response.statusText}`);\n }\n\n // Try to parse as JSON, but handle HTML responses gracefully\n let result;\n let content: string | null = null;\n const contentType = response.headers.get('content-type');\n if (contentType && contentType.includes('application/json')) {\n result = await response.json();\n content = JSON.stringify(result);\n } else {\n // For HTML or other content types, just get the text\n const text = await response.text();\n result = { content: text };\n content = text;\n }\n\n // Store the response content (passed to onPaymentSuccess callback)\n setResponseContent(content);\n\n if (config.verbose) {\n console.log('Payment successful:', result);\n }\n\n // Extract transaction ID from response (V2 header)\n const paymentResponse = response.headers.get('PAYMENT-RESPONSE');\n let txId = `tx_${Date.now()}`;\n\n if (paymentResponse) {\n try {\n const decoded = JSON.parse(atob(paymentResponse));\n txId = decoded.transactionId || decoded.signature || txId;\n if (config.verbose) {\n console.log('Payment details:', decoded);\n }\n } catch (e) {\n if (config.verbose) {\n console.warn('Could not decode payment response:', e);\n }\n }\n }\n\n setTransactionId(txId);\n setStatus('success');\n setIsLoading(false);\n\n return txId;\n } catch (err) {\n const paymentError = err instanceof Error ? err : new Error('Payment failed');\n setError(paymentError);\n setStatus('error');\n setIsLoading(false);\n return null;\n }\n },\n [config]\n );\n\n return {\n pay,\n isLoading,\n status,\n error,\n transactionId,\n responseContent,\n reset,\n };\n}\n","import * as React from 'react';\nimport { useState, useEffect, useMemo } from 'react';\nimport { useWallet, ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react';\nimport { WalletModalProvider, WalletMultiButton } from '@solana/wallet-adapter-react-ui';\nimport { WalletAdapterNetwork } from '@solana/wallet-adapter-base';\nimport { PhantomWalletAdapter, SolflareWalletAdapter } from '@solana/wallet-adapter-wallets';\nimport { clusterApiUrl } from '@solana/web3.js';\nimport { fetchUSDCBalance } from '@/lib/balance';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { PaymentButton } from './PaymentButton';\nimport { WalletSection } from './WalletSection';\nimport { useX402Payment } from '@/hooks/useX402Payment';\nimport { X402PaywallProps, WalletAdapter, ThemePreset } from '@/types';\nimport { cn } from '@/lib/utils';\nimport { useRef } from 'react';\n// Internal component that actually uses the wallet context\nconst X402PaywallContent: React.FC<\n Omit<X402PaywallProps, 'autoSetupProviders' | 'providerNetwork' | 'providerEndpoint'>\n> = ({\n amount,\n description,\n wallet: walletProp,\n network = 'solana-devnet',\n rpcUrl,\n apiEndpoint,\n facilitatorUrl,\n theme = 'solana-light',\n logoUrl = 'https://raw.githubusercontent.com/PayAINetwork/x402-solana-react/main/src/components/ui/SolanaLogo.svg',\n showPaymentDetails = true,\n onDisconnect,\n classNames,\n customStyles,\n maxPaymentAmount,\n // enablePaymentCaching = false, // TODO: Implement in future\n // autoRetry = false, // TODO: Implement in future\n onPaymentStart,\n onPaymentSuccess,\n onPaymentError,\n onWalletConnect,\n children,\n}) => {\n // Use provided wallet or get from context\n const walletContext = useWallet();\n\n // Create reactive wallet object that updates when context changes\n const reactiveWallet: WalletAdapter = useMemo(() => {\n if (walletProp) return walletProp;\n return {\n publicKey: walletContext.publicKey\n ? { toString: () => walletContext.publicKey!.toString() }\n : undefined,\n signTransaction: walletContext.signTransaction!,\n };\n }, [walletProp, walletContext.publicKey, walletContext.signTransaction]);\n\n const [isPaid, setIsPaid] = useState(false);\n const [walletBalance, setWalletBalance] = useState<string>('0.00');\n const [resolvedTheme, setResolvedTheme] = useState<ThemePreset>(() => {\n if (theme === 'system') {\n // Check system preference on initial render\n if (typeof window !== 'undefined' && window.matchMedia) {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n return prefersDark ? 'dark' : 'light';\n }\n return 'dark'; // Default to dark if we can't detect\n }\n return theme;\n });\n const walletButtonRef = useRef<HTMLDivElement>(null);\n const networkLabel = network === 'solana' ? 'Mainnet' : 'Devnet';\n\n const { pay, isLoading, status, error, transactionId, responseContent, reset } = useX402Payment({\n wallet: reactiveWallet,\n network,\n rpcUrl,\n apiEndpoint,\n facilitatorUrl,\n amount: maxPaymentAmount,\n });\n\n // Handle disconnect using context if no custom handler\n const handleDisconnect = () => {\n if (onDisconnect) {\n onDisconnect();\n } else if (!walletProp && walletContext.disconnect) {\n walletContext.disconnect();\n }\n };\n\n // Check if wallet is connected (either from prop or context)\n // Use a permissive check so we transition as soon as the adapter reports connected\n const isWalletConnected = walletProp\n ? Boolean(walletProp.publicKey || walletProp.address)\n : Boolean(walletContext.connected || walletContext.publicKey);\n\n // Resolve \"system\" theme based on user's system preference\n useEffect(() => {\n if (theme === 'system') {\n if (typeof window !== 'undefined' && window.matchMedia) {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n\n // Set initial value\n const updateTheme = () => {\n setResolvedTheme(mediaQuery.matches ? 'dark' : 'light');\n };\n\n // Listen for changes\n if (mediaQuery.addEventListener) {\n mediaQuery.addEventListener('change', updateTheme);\n updateTheme(); // Set initial value\n return () => mediaQuery.removeEventListener('change', updateTheme);\n } else if (mediaQuery.addListener) {\n // Fallback for older browsers\n mediaQuery.addListener(updateTheme);\n updateTheme(); // Set initial value\n return () => mediaQuery.removeListener(updateTheme);\n } else {\n // If no listener support, just set initial value\n updateTheme();\n }\n } else {\n // Can't detect, default to dark\n setResolvedTheme('dark');\n }\n } else {\n // Not system theme, use theme directly\n setResolvedTheme(theme);\n }\n }, [theme]);\n\n // Apply theme class to body for wallet modal styling\n useEffect(() => {\n // Remove old theme classes\n document.body.className = document.body.className\n .replace(/wallet-modal-theme-\\w+/g, '')\n .replace(/\\s+/g, ' ')\n .trim();\n\n // Add new theme class (use resolved theme for system, or original theme otherwise)\n const themeForClass = theme === 'system' ? resolvedTheme : theme;\n if (themeForClass) {\n document.body.className += ` wallet-modal-theme-${themeForClass}`;\n }\n\n // Cleanup: remove theme class when component unmounts\n return () => {\n document.body.className = document.body.className\n .replace(/wallet-modal-theme-\\w+/g, '')\n .replace(/\\s+/g, ' ')\n .trim();\n };\n }, [theme, resolvedTheme]);\n\n // Fetch balance when wallet connects - react to walletContext changes\n useEffect(() => {\n const walletAddress =\n walletContext.publicKey?.toString() ||\n walletProp?.publicKey?.toString() ||\n walletProp?.address;\n if (walletAddress && walletContext.connected) {\n console.log('Wallet connected:', walletAddress);\n onWalletConnect?.(walletAddress);\n\n // Fetch USDC balance\n fetchUSDCBalance(walletAddress, network, rpcUrl).then(setWalletBalance);\n }\n // Reset balance if wallet disconnects\n if (!walletContext.connected && !walletProp) {\n setWalletBalance('0.00');\n }\n }, [\n walletContext.publicKey,\n walletContext.connected,\n walletContext.connecting,\n walletProp,\n network,\n rpcUrl,\n onWalletConnect,\n ]);\n\n // Handle payment success\n useEffect(() => {\n if (status === 'success' && transactionId) {\n setIsPaid(true);\n onPaymentSuccess?.(transactionId, responseContent);\n }\n }, [status, transactionId, responseContent, onPaymentSuccess]);\n\n // Handle payment error\n useEffect(() => {\n if (error) {\n onPaymentError?.(error);\n }\n }, [error, onPaymentError]);\n\n const handlePayment = async () => {\n onPaymentStart?.();\n await pay(amount, description);\n };\n\n // If payment is successful, show the protected content\n if (isPaid) {\n return <>{children}</>;\n }\n\n // Show failure screen when there's an error (for all themes)\n const showFailureScreen =\n error &&\n (resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'light' ||\n resolvedTheme === 'solana-light' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2' ||\n resolvedTheme === 'seeker-light' ||\n resolvedTheme === 'terminal' ||\n resolvedTheme === 'terminal-light');\n\n // Theme-based styling configuration\n const getThemeConfig = () => {\n switch (resolvedTheme) {\n case 'solana-dark':\n return {\n container: '',\n card: '!bg-[#171719] border-0 text-white rounded-xl',\n icon: 'bg-slate-600',\n title: '',\n button: 'bg-solana-gradient hover:opacity-90 text-white rounded-full',\n paymentDetails: 'bg-[#0000001F] border-slate-600 text-white rounded-lg',\n walletSection: 'bg-[#0000001F] border-slate-600 text-white rounded-lg',\n notice: 'bg-amber-900/50 border-amber-700 text-white rounded-lg',\n securityMessage: 'text-slate-400',\n helperText: 'text-white',\n helperLink: undefined,\n };\n case 'seeker':\n return {\n container: '',\n card: 'backdrop-blur-sm border-emerald-200 rounded-xl',\n icon: 'bg-gradient-to-r from-emerald-500 to-teal-500',\n title: 'text-white',\n button:\n 'bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full',\n paymentDetails: 'rounded-lg',\n notice: 'bg-cyan-50 border-cyan-200 text-cyan-800 rounded-lg',\n securityMessage: 'text-white',\n helperText: 'text-white',\n };\n case 'seeker-2':\n return {\n container: '',\n card: 'backdrop-blur-sm border-emerald-200 rounded-xl',\n icon: 'bg-gradient-to-r from-emerald-500 to-teal-500',\n title: 'text-white',\n button:\n 'bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full',\n paymentDetails: 'rounded-lg',\n notice: 'bg-cyan-50 border-cyan-200 text-cyan-800 rounded-lg',\n securityMessage: 'text-white',\n helperText: 'text-white',\n };\n case 'seeker-light':\n return {\n container: '',\n card: 'backdrop-blur-sm border-emerald-200 rounded-xl',\n icon: 'bg-gradient-to-r from-emerald-500 to-teal-500',\n title: 'text-black',\n button:\n 'bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full',\n paymentDetails: 'rounded-lg',\n notice: 'bg-cyan-50 border-cyan-200 text-cyan-800 rounded-lg',\n securityMessage: 'text-black',\n helperText: 'text-black',\n };\n case 'terminal':\n return {\n container: '',\n card: 'backdrop-blur-sm border-green-400/30 text-white rounded-none font-vt323',\n icon: 'bg-green-400 text-black',\n title: 'text-white font-vt323',\n button: 'text-black hover:opacity-90 font-vt323 rounded-none',\n paymentDetails: 'bg-gray-900/50 border-green-400/20 text-white rounded-none font-vt323',\n notice: 'bg-yellow-900/50 border-yellow-400/30 text-white rounded-none font-vt323',\n };\n case 'terminal-light':\n return {\n container: '',\n card: 'backdrop-blur-sm border-[#E4E4E7] text-black rounded-none font-vt323',\n icon: 'bg-[#E4E4E7] text-black',\n title: 'text-black font-vt323',\n button: 'text-black hover:opacity-90 font-vt323 rounded-none',\n paymentDetails: 'bg-white/50 border-[#E4E4E7] text-black rounded-none font-vt323',\n notice: 'bg-yellow-50 border-yellow-200 text-yellow-800 rounded-none font-vt323',\n };\n case 'solana-light':\n return {\n container: 'bg-gradient-to-b from-white via-pink-50 via-purple-50 via-blue-50 to-cyan-50',\n card: 'bg-white/95 backdrop-blur-sm border border-slate-200 shadow-2xl rounded-2xl',\n icon: 'bg-gradient-to-r from-blue-600 to-purple-600',\n title: 'text-slate-900',\n button: 'bg-solana-gradient hover:opacity-90 text-white font-light rounded-full',\n paymentDetails: 'bg-slate-50 border border-slate-200 rounded-xl',\n notice: 'text-slate-600',\n walletSection: 'bg-slate-50 border border-slate-200 rounded-xl',\n securityMessage: 'text-slate-600',\n helperText: 'text-slate-600',\n helperLink: 'text-purple-600 underline',\n };\n case 'dark':\n return {\n container: '',\n card: '!bg-[#171719] border-slate-700 text-white rounded-xl',\n icon: 'bg-slate-600',\n title: '',\n button: 'bg-slate-600 hover:bg-slate-700 rounded-full',\n paymentDetails: 'bg-[#0000001F] border-slate-600 text-white rounded-lg',\n walletSection: 'bg-[#0000001F] border-slate-600 text-white rounded-lg',\n notice: 'bg-amber-900/50 border-amber-700 text-white rounded-lg',\n securityMessage: 'text-slate-400',\n helperText: 'text-white',\n helperLink: undefined,\n };\n case 'light':\n return {\n container: 'bg-gradient-to-b from-white via-pink-50 via-purple-50 via-blue-50 to-cyan-50',\n card: 'bg-white/95 backdrop-blur-sm border border-slate-200 shadow-2xl rounded-2xl',\n icon: 'bg-gradient-to-r from-blue-600 to-purple-600',\n title: 'text-slate-900',\n button: 'bg-black hover:bg-gray-800 text-white font-light rounded-full',\n paymentDetails: 'bg-slate-50 border border-slate-200 rounded-xl',\n notice: 'text-slate-600',\n walletSection: 'bg-slate-50 border border-slate-200 rounded-xl',\n securityMessage: 'text-slate-600',\n helperText: 'text-slate-600',\n helperLink: 'text-purple-600 underline',\n };\n default:\n return {\n container: 'bg-gradient-to-br from-slate-900 via-slate-800 to-slate-900',\n card: 'bg-white/95 backdrop-blur-sm rounded-xl',\n icon: 'bg-slate-600',\n title: 'text-slate-900',\n button: 'bg-slate-600 hover:bg-slate-700 text-white rounded-full',\n paymentDetails: 'bg-slate-50 border-slate-200 rounded-lg',\n notice: 'bg-amber-50 border-amber-200 text-amber-800 rounded-lg',\n };\n }\n };\n\n const themeConfig = getThemeConfig();\n\n // If wallet is not connected, show the connect wallet UI\n if (!isWalletConnected) {\n // Theme config for connect wallet screen\n const getConnectWalletThemeConfig = () => {\n switch (resolvedTheme) {\n case 'solana-dark':\n return {\n container: '',\n card: '!bg-[#171719] border-0 text-white rounded-xl',\n button: 'bg-solana-gradient hover:opacity-90 text-white rounded-full',\n paymentDetails: 'bg-[#0000001F] border-slate-600 text-white rounded-lg',\n securityMessage: 'text-slate-400',\n helperText: 'text-white',\n };\n case 'seeker':\n return {\n container: '',\n card: 'backdrop-blur-sm border-emerald-200 rounded-xl',\n button:\n 'bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full',\n paymentDetails: 'rounded-lg',\n securityMessage: 'text-white',\n helperText: 'text-white',\n };\n case 'seeker-2':\n return {\n container: '',\n card: 'backdrop-blur-sm border-emerald-200 rounded-xl',\n button:\n 'bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full',\n paymentDetails: 'rounded-lg',\n securityMessage: 'text-white',\n helperText: 'text-white',\n };\n case 'seeker-light':\n return {\n container: '',\n card: 'backdrop-blur-sm border-emerald-200 rounded-xl',\n button:\n 'bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full',\n paymentDetails: 'rounded-lg',\n securityMessage: 'text-black',\n helperText: 'text-black',\n };\n case 'terminal':\n return {\n container: '',\n card: 'backdrop-blur-sm border-green-400/30 text-white rounded-none font-vt323',\n button: 'text-black hover:opacity-90 font-vt323 rounded-none',\n paymentDetails: 'bg-gray-900/50 border-green-400/20 text-white rounded-none font-vt323',\n securityMessage: 'text-white font-vt323',\n helperText: 'text-white font-vt323',\n };\n case 'terminal-light':\n return {\n container: '',\n card: 'backdrop-blur-sm border-[#E4E4E7] text-black rounded-none font-vt323',\n button: 'text-black hover:opacity-90 font-vt323 rounded-none',\n paymentDetails: 'bg-white/50 border-[#E4E4E7] text-black rounded-none font-vt323',\n securityMessage: 'text-black font-vt323',\n helperText: 'text-black font-vt323',\n };\n case 'solana-light':\n return {\n container:\n 'bg-gradient-to-b from-white via-pink-50 via-purple-50 via-blue-50 to-cyan-50',\n card: 'bg-white/95 backdrop-blur-sm border border-slate-200 shadow-2xl rounded-2xl',\n button: 'bg-solana-gradient hover:opacity-90 text-white font-light rounded-full',\n paymentDetails: 'bg-slate-50 border border-slate-200 rounded-xl',\n securityMessage: 'text-slate-600',\n helperText: 'text-slate-600',\n };\n case 'dark':\n return {\n container: '',\n card: '!bg-[#171719] border-slate-700 text-white rounded-xl',\n button: 'bg-slate-600 hover:bg-slate-700 rounded-full',\n paymentDetails: 'bg-[#0000001F] border-slate-600 text-white rounded-lg',\n securityMessage: 'text-slate-400',\n helperText: 'text-white',\n };\n case 'light':\n return {\n container:\n 'bg-gradient-to-b from-white via-pink-50 via-purple-50 via-blue-50 to-cyan-50',\n card: 'bg-white/95 backdrop-blur-sm border border-slate-200 shadow-2xl rounded-2xl',\n button: 'bg-black hover:bg-gray-800 text-white font-light rounded-full',\n paymentDetails: 'bg-slate-50 border border-slate-200 rounded-xl',\n securityMessage: 'text-slate-600',\n helperText: 'text-slate-600',\n };\n default:\n return {\n container:\n 'bg-gradient-to-b from-white via-pink-50 via-purple-50 via-blue-50 to-cyan-50',\n card: 'bg-white/95 backdrop-blur-sm border border-slate-200 shadow-2xl rounded-2xl',\n button: 'bg-solana-gradient hover:opacity-90 text-white font-light rounded-full',\n paymentDetails: 'bg-slate-50 border border-slate-200 rounded-xl',\n securityMessage: 'text-slate-600',\n helperText: 'text-slate-600',\n };\n }\n };\n\n const connectThemeConfig = getConnectWalletThemeConfig();\n\n return (\n <div\n className={cn(\n 'flex items-center justify-center min-h-screen p-4',\n connectThemeConfig.container,\n classNames?.container\n )}\n style={\n resolvedTheme === 'dark'\n ? {\n background:\n 'linear-gradient(to bottom left, #db2777 0%, #9333ea 50%, #1e40af 100%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'solana-dark'\n ? {\n background:\n 'linear-gradient(to bottom left, #db2777 0%, #9333ea 50%, #1e40af 100%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'light'\n ? {\n background:\n 'linear-gradient(135deg, rgba(255, 255, 255, 0.6) 0%, rgba(236, 72, 153, 0.4) 33%, rgba(147, 51, 234, 0.4) 66%, rgba(34, 211, 238, 0.4) 100%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'solana-light'\n ? {\n background:\n 'linear-gradient(135deg, rgba(255, 255, 255, 0.6) 0%, rgba(236, 72, 153, 0.4) 33%, rgba(147, 51, 234, 0.4) 66%, rgba(34, 211, 238, 0.4) 100%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'seeker'\n ? {\n background: 'linear-gradient(to top,#21645E 0%, #0D2734 50%, #001214 100%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'seeker-2'\n ? {\n background: '#0D1615',\n ...customStyles?.container,\n }\n : resolvedTheme === 'seeker-light'\n ? {\n background: 'linear-gradient(240.08deg, #B8CCD3 -0.56%, #FFFFFF 119.23%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#0D1615',\n position: 'relative',\n ...customStyles?.container,\n }\n : resolvedTheme === 'terminal-light'\n ? {\n backgroundColor: '#F4F4F4',\n position: 'relative',\n ...customStyles?.container,\n }\n : customStyles?.container\n }\n >\n {(resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light') && (\n <div\n className=\"absolute inset-0 pointer-events-none overflow-hidden\"\n style={{\n backgroundImage:\n resolvedTheme === 'terminal'\n ? `\n linear-gradient(to right, #22EBAD33 1px, transparent 1px),\n linear-gradient(to bottom, #22EBAD33 1px, transparent 1px)\n `\n : `\n linear-gradient(to right, #E4E4E7 1px, transparent 1px),\n linear-gradient(to bottom, #E4E4E7 1px, transparent 1px)\n `,\n backgroundSize: `calc(100% / 6) calc(100% / 6)`,\n }}\n />\n )}\n <Card\n className={cn(\n 'w-full max-w-lg shadow-2xl border-0',\n connectThemeConfig.card,\n classNames?.card\n )}\n style={\n resolvedTheme === 'seeker'\n ? { backgroundColor: '#171719', ...customStyles?.card }\n : resolvedTheme === 'seeker-2'\n ? {\n backgroundColor: 'rgba(29, 35, 35, 1)',\n backdropFilter: 'blur(12px)',\n ...customStyles?.card,\n }\n : resolvedTheme === 'seeker-light'\n ? {\n backgroundColor: '#FFFFFF',\n ...customStyles?.card,\n }\n : resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#0D1615',\n border: '1px solid rgba(34, 235, 173, 0.2)',\n borderRadius: 0,\n ...customStyles?.card,\n }\n : resolvedTheme === 'terminal-light'\n ? {\n backgroundColor: '#FFFFFF',\n border: '1px solid #E4E4E7',\n borderRadius: 0,\n ...customStyles?.card,\n }\n : customStyles?.card\n }\n >\n <CardHeader className=\"pb-6\">\n <div\n className={cn(\n 'flex items-center space-x-4 mb-6 p-4',\n resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light'\n ? '-mx-6 -mt-6 relative'\n : resolvedTheme === 'light' || resolvedTheme === 'seeker-light'\n ? 'mb-3'\n : 'mb-6'\n )}\n style={\n resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#1682601A',\n borderBottom: '1px solid rgba(34, 235, 173, 0.12)',\n }\n : resolvedTheme === 'terminal-light'\n ? {\n backgroundColor: '#FAFAFA',\n borderBottom: '1px solid #E4E4E7',\n }\n : undefined\n }\n >\n <div\n className={cn(\n 'w-auto p-[2px] flex items-center justify-center',\n resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light'\n ? 'pr-4 mr-4 self-stretch -my-4'\n : 'h-auto rounded-full overflow-hidden'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { borderRight: '1px solid rgba(34, 235, 173, 0.25)' }\n : resolvedTheme === 'terminal-light'\n ? { borderRight: '1px solid #E4E4E7' }\n : undefined\n }\n >\n <div className=\"w-full h-full rounded-full flex items-center justify-center\">\n <img src={logoUrl} alt=\"Logo\" className=\"w-12 h-auto\" />\n </div>\n </div>\n <div>\n <CardTitle\n className={cn(\n 'text-l fw-bold pb-1',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'terminal'\n ? 'text-white font-vt323'\n : resolvedTheme === 'terminal-light'\n ? 'text-black font-vt323'\n : 'text-slate-900',\n classNames?.text\n )}\n >\n Premium Content XYZ\n </CardTitle>\n <CardDescription\n className={cn(\n 'text-sm font-light',\n resolvedTheme === 'terminal'\n ? ''\n : resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'text-white'\n : 'text-[#71717A]',\n classNames?.text\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#FFFFFF99' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#71717A' }\n : undefined\n }\n >\n content.xyz\n </CardDescription>\n </div>\n </div>\n\n {theme !== 'terminal' && theme !== 'terminal-light' && (\n <div\n className={cn(\n 'border-b',\n resolvedTheme === 'light' ? '' : 'mb-6',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'border-slate-600'\n : resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? ''\n : resolvedTheme === 'seeker-light'\n ? ''\n : 'border-slate-200'\n )}\n style={\n resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? {\n borderBottom: '1px solid #FFFFFF1F',\n marginBottom: '1rem',\n }\n : resolvedTheme === 'seeker-light'\n ? { marginBottom: '1rem' }\n : resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? { marginBottom: '1rem' }\n : resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? { marginBottom: '1rem' }\n : undefined\n }\n ></div>\n )}\n\n <div className=\"text-center\">\n <h2\n className={cn(\n 'text-2xl font-normal mb-2',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white font-vt323'\n : 'text-slate-900'\n )}\n >\n Payment Required\n </h2>\n <p\n className={cn(\n 'text-sm font-light',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'terminal'\n ? ''\n : resolvedTheme === 'terminal-light'\n ? ''\n : 'text-slate-600'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#FFFFFF99' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#71717A' }\n : undefined\n }\n >\n Access to protected content. To access this content, please pay ${amount.toFixed(2)}{' '}\n USDC\n </p>\n </div>\n </CardHeader>\n\n <CardContent className=\"space-y-6\">\n {/* Payment Details Preview */}\n <div\n className={cn(\n 'p-6',\n resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? 'bg-[#F4F4F5] border-none rounded-xl'\n : connectThemeConfig.paymentDetails\n )}\n style={\n resolvedTheme === 'seeker'\n ? { backgroundColor: 'rgba(0, 0, 0, 0.12)' }\n : resolvedTheme === 'seeker-2'\n ? { backgroundColor: '#171A1A' }\n : resolvedTheme === 'seeker-light'\n ? { backgroundColor: '#F4F4F5' }\n : resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#0B2D2D',\n border: '1px solid #22EBAD33',\n }\n : resolvedTheme === 'terminal-light'\n ? {\n border: '1px solid #E4E4E7',\n }\n : resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? { boxShadow: '0px 0px 16px 4px #000000 inset' }\n : resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? { backgroundColor: '#F4F4F5', border: 'none' }\n : undefined\n }\n >\n <div className=\"flex items-center justify-between mb-4\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black'\n : 'text-slate-900'\n )}\n >\n Amount\n </span>\n <div\n className={cn(\n 'text-xl font-bold',\n resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? 'text-purple-600'\n : resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? ''\n : resolvedTheme === 'seeker-light'\n ? ''\n : resolvedTheme === 'terminal'\n ? ''\n : resolvedTheme === 'terminal-light'\n ? ''\n : 'text-[#21ECAB]'\n )}\n style={\n resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? { color: '#95D2E6' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#00BECC' }\n : resolvedTheme === 'terminal'\n ? { color: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#009192' }\n : undefined\n }\n >\n {'$' + amount.toFixed(2)}\n </div>\n </div>\n\n <div\n className={cn(\n 'border-t mb-4',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'border-slate-600'\n : resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? ''\n : resolvedTheme === 'terminal'\n ? ''\n : 'border-slate-200'\n )}\n style={\n resolvedTheme === 'terminal'\n ? {\n borderTop: '1px solid #22EBAD1F',\n }\n : resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? { borderTop: '1px solid #FFFFFF1F' }\n : undefined\n }\n ></div>\n\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'terminal'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black'\n : 'text-slate-900'\n )}\n >\n Currency\n </span>\n <div\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'terminal'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black'\n : 'text-slate-900'\n )}\n >\n USDC\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'terminal'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black'\n : 'text-slate-900'\n )}\n >\n Network\n </span>\n <div className=\"flex items-center space-x-2\">\n <div\n className={cn(\n 'w-2 h-2 rounded-full',\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2' ||\n resolvedTheme === 'seeker-light' ||\n resolvedTheme === 'terminal' ||\n resolvedTheme === 'terminal-light'\n ? ''\n : 'bg-green-500'\n )}\n style={\n resolvedTheme === 'seeker'\n ? { backgroundColor: '#95D2E6' }\n : resolvedTheme === 'seeker-2'\n ? { backgroundColor: '#95D2E6' }\n : resolvedTheme === 'seeker-light'\n ? { backgroundColor: '#00BECC' }\n : resolvedTheme === 'terminal'\n ? { backgroundColor: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { backgroundColor: '#009192' }\n : undefined\n }\n ></div>\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'terminal'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black'\n : 'text-slate-900'\n )}\n >\n {network === 'solana' ? 'Mainnet' : 'Devnet'}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Security Message */}\n <div className=\"flex items-center justify-center space-x-2\">\n <svg\n className={cn(\n 'w-4 h-4',\n resolvedTheme === 'terminal' || resolvedTheme === 'seeker-light'\n ? ''\n : 'text-green-500'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#009192' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#00BECC' }\n : undefined\n }\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n >\n <path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4z\" />\n <path d=\"M9 12l2 2 4-4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n <span\n className={cn('text-sm', connectThemeConfig.securityMessage)}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#FFFFFF99' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#71717A' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#000000' }\n : undefined\n }\n >\n Secure payment powered by Solana\n </span>\n </div>\n\n {/* Connect Button */}\n <div className=\"relative\">\n <div ref={walletButtonRef} className=\"absolute opacity-0 pointer-events-none -z-10\">\n <WalletMultiButton />\n </div>\n <PaymentButton\n amount={amount}\n description={description}\n customText=\"Connect Wallet\"\n onClick={() => {\n const button = walletButtonRef.current?.querySelector('button') as HTMLElement;\n button?.click();\n }}\n className={cn('w-full h-12', connectThemeConfig.button)}\n style={\n resolvedTheme === 'dark'\n ? {\n backgroundColor: '#FFFFFF1F',\n boxShadow: '0 1px 0 0 rgba(255, 255, 255, 0.3) inset',\n }\n : resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#32FEFF',\n color: '#000000',\n }\n : resolvedTheme === 'terminal-light'\n ? {\n backgroundColor: '#000000',\n color: '#FFFFFF',\n }\n : resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? {\n background:\n 'linear-gradient(0deg, #39A298, #39A298), radial-gradient(101.17% 101.67% at 50.28% 134.17%, rgba(255, 255, 255, 0.6) 0%, rgba(22, 188, 174, 0.6) 100%)',\n backgroundColor: 'transparent',\n }\n : resolvedTheme === 'seeker-light'\n ? {\n background: 'linear-gradient(180deg, #00BECC -9.37%, #92F9FC 160.42%)',\n backgroundColor: 'transparent',\n }\n : undefined\n }\n />\n </div>\n\n {/* Helper Text */}\n <div className=\"text-center\">\n <p\n className={cn('text-sm', connectThemeConfig.helperText)}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#FFFFFF99' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#71717A' }\n : undefined\n }\n >\n Don't have USDC?{' '}\n <a\n href=\"#\"\n className={cn(\n 'font-medium underline',\n resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? 'text-[#95D2E6]'\n : resolvedTheme === 'seeker-light'\n ? 'hover:opacity-90'\n : resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? 'text-purple-600'\n : resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light'\n ? 'hover:opacity-90'\n : 'text-[#4ADE80]'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#000000' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#00BECC' }\n : undefined\n }\n >\n Get it here\n <svg\n className={cn(\n 'inline w-3 h-3 ml-1',\n resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? 'text-[#95D2E6]'\n : resolvedTheme === 'seeker-light'\n ? ''\n : resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? 'text-purple-600'\n : resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light'\n ? ''\n : 'text-[#4ADE80]'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#000000' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#00BECC' }\n : undefined\n }\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </a>\n </p>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n 'flex items-center justify-center min-h-screen p-4',\n themeConfig.container,\n classNames?.container\n )}\n style={\n resolvedTheme === 'dark'\n ? {\n background: 'linear-gradient(to bottom left, #db2777 0%, #9333ea 50%, #1e40af 100%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'solana-dark'\n ? {\n background: 'linear-gradient(to bottom left, #db2777 0%, #9333ea 50%, #1e40af 100%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'light'\n ? {\n background:\n 'linear-gradient(135deg, rgba(255, 255, 255, 0.6) 0%, rgba(236, 72, 153, 0.4) 33%, rgba(147, 51, 234, 0.4) 66%, rgba(34, 211, 238, 0.4) 100%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'solana-light'\n ? {\n background:\n 'linear-gradient(135deg, rgba(255, 255, 255, 0.6) 0%, rgba(236, 72, 153, 0.4) 33%, rgba(147, 51, 234, 0.4) 66%, rgba(34, 211, 238, 0.4) 100%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'seeker'\n ? {\n background: 'linear-gradient(to top,#21645E 0%, #0D2734 50%, #001214 100%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'seeker-2'\n ? {\n background: '#0D1615',\n ...customStyles?.container,\n }\n : resolvedTheme === 'seeker-light'\n ? {\n background: 'linear-gradient(240.08deg, #B8CCD3 -0.56%, #FFFFFF 119.23%)',\n ...customStyles?.container,\n }\n : resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#0D1615',\n position: 'relative',\n ...customStyles?.container,\n }\n : resolvedTheme === 'terminal-light'\n ? {\n backgroundColor: '#F4F4F4',\n position: 'relative',\n ...customStyles?.container,\n }\n : customStyles?.container\n }\n >\n {(resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light') && (\n <div\n className=\"absolute inset-0 pointer-events-none overflow-hidden\"\n style={{\n backgroundImage:\n resolvedTheme === 'terminal'\n ? `\n linear-gradient(to right, #22EBAD33 1px, transparent 1px),\n linear-gradient(to bottom, #22EBAD33 1px, transparent 1px)\n `\n : `\n linear-gradient(to right, #E4E4E7 1px, transparent 1px),\n linear-gradient(to bottom, #E4E4E7 1px, transparent 1px)\n `,\n backgroundSize: `calc(100% / 6) calc(100% / 6)`,\n }}\n />\n )}\n <Card\n className={cn('w-full max-w-lg shadow-2xl border-0', themeConfig.card, classNames?.card)}\n style={\n resolvedTheme === 'seeker'\n ? {\n backgroundColor: '#171719',\n ...customStyles?.card,\n }\n : resolvedTheme === 'seeker-2'\n ? {\n backgroundColor: 'rgba(29, 35, 35, 1)',\n backdropFilter: 'blur(12px)',\n ...customStyles?.card,\n }\n : resolvedTheme === 'seeker-light'\n ? {\n backgroundColor: '#FFFFFF',\n ...customStyles?.card,\n }\n : resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#0D1615',\n border: '1px solid rgba(34, 235, 173, 0.2)',\n borderRadius: 0,\n ...customStyles?.card,\n }\n : resolvedTheme === 'terminal-light'\n ? {\n backgroundColor: '#FFFFFF',\n border: '1px solid #E4E4E7',\n borderRadius: 0,\n ...customStyles?.card,\n }\n : customStyles?.card\n }\n >\n <CardHeader className=\"pb-6\">\n {/* Header with icon, title, and subtitle in top left */}\n <div\n className={cn(\n 'flex items-center space-x-4 mb-6 p-4',\n resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light'\n ? '-mx-6 -mt-6 relative'\n : resolvedTheme === 'light' || resolvedTheme === 'seeker-light'\n ? 'mb-3'\n : 'mb-6'\n )}\n style={\n resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#1682601A',\n borderBottom: '1px solid rgba(34, 235, 173, 0.12)',\n }\n : resolvedTheme === 'terminal-light'\n ? {\n backgroundColor: '#FAFAFA',\n borderBottom: '1px solid #E4E4E7',\n }\n : undefined\n }\n >\n <div\n className={cn(\n 'w-auto p-[2px] flex items-center justify-center',\n resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light'\n ? 'pr-4 self-stretch -my-4'\n : 'h-auto rounded-full overflow-hidden'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { borderRight: '1px solid rgba(34, 235, 173, 0.25)' }\n : resolvedTheme === 'terminal-light'\n ? { borderRight: '1px solid #E4E4E7' }\n : undefined\n }\n >\n <div className=\"w-full h-full rounded-full flex items-center justify-center\">\n <img src={logoUrl} alt=\"Logo\" className=\"w-12 h-auto\" />\n </div>\n </div>\n <div>\n <CardTitle\n className={cn('text-l fw-bold pb-1', themeConfig.title, classNames?.text)}\n style={customStyles?.text}\n >\n Premium Content XYZ\n </CardTitle>\n <CardDescription\n className={cn(\n 'text-sm font-light',\n resolvedTheme === 'terminal'\n ? ''\n : resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'seeker-light'\n ? ''\n : 'text-[#71717A]'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#FFFFFF99' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#71717A' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#71717A' }\n : undefined\n }\n >\n content.xyz\n </CardDescription>\n </div>\n </div>\n\n {/* Underline */}\n {theme !== 'terminal' && theme !== 'terminal-light' && (\n <div\n className={cn(\n 'border-b',\n resolvedTheme === 'light' ? '' : 'mb-6',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'border-slate-600'\n : resolvedTheme === 'seeker'\n ? ''\n : resolvedTheme === 'seeker-2'\n ? ''\n : resolvedTheme === 'seeker-light'\n ? ''\n : 'border-slate-200'\n )}\n style={\n resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? {\n borderBottom: '1px solid #FFFFFF1F',\n marginBottom: '1rem',\n }\n : resolvedTheme === 'seeker-light'\n ? { marginBottom: '1rem' }\n : resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? { marginBottom: '1rem' }\n : resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? { marginBottom: '1rem' }\n : undefined\n }\n ></div>\n )}\n\n {!showFailureScreen && (\n <div className=\"text-center\">\n <h2\n className={cn(\n 'text-2xl font-normal mb-2',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker'\n ? 'text-white'\n : resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white font-vt323'\n : 'text-slate-900'\n )}\n >\n Payment Required\n </h2>\n <p\n className={cn(\n 'text-sm font-light',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker'\n ? 'text-white'\n : resolvedTheme === 'seeker-2'\n ? 'text-white'\n : resolvedTheme === 'seeker-light'\n ? ''\n : resolvedTheme === 'terminal'\n ? ''\n : 'text-slate-600'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#FFFFFF99' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#71717A' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#71717A' }\n : undefined\n }\n >\n Access to protected content on Solana {networkLabel}. To access this content, please\n pay ${amount.toFixed(2)} USDC\n </p>\n </div>\n )}\n </CardHeader>\n\n <CardContent className=\"space-y-6\">\n {/* Failure Screen for all themes */}\n {showFailureScreen ? (\n <>\n {/* Failure Icon */}\n <div className=\"flex justify-center mb-4\">\n <div className=\"w-16 h-16 rounded-full bg-red-500 flex items-center justify-center\">\n <svg\n className=\"w-8 h-8 text-white\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"3\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </div>\n </div>\n\n {/* Payment Failed Title */}\n <div className=\"text-center mb-2\">\n <h3\n className={cn(\n 'text-2xl font-semibold',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-slate-900'\n )}\n >\n Payment Failed\n </h3>\n </div>\n\n {/* Error Message */}\n <p\n className={cn(\n 'text-center text-sm mb-6',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-gray-400'\n : 'text-slate-600'\n )}\n >\n {error?.message ||\n \"It looks like your wallet doesn't have enough funds or the transaction was declined. Please review the details and try again.\"}\n </p>\n\n {/* Payment Details Box */}\n <div\n className={cn(\n 'rounded-lg p-6',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'bg-[#0000001F] border border-slate-600'\n : resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? 'bg-[rgba(0,0,0,0.12)] border border-white/10'\n : 'bg-slate-50 border border-slate-200'\n )}\n >\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-slate-900'\n )}\n >\n Amount Paid\n </span>\n <span\n className={cn(\n 'text-sm font-semibold',\n resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? 'text-purple-600'\n : 'text-green-500'\n )}\n >\n {'$' + amount.toFixed(2)}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-slate-900'\n )}\n >\n Wallet\n </span>\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-slate-900'\n )}\n >\n {reactiveWallet?.publicKey?.toString()\n ? `${reactiveWallet.publicKey\n .toString()\n .slice(0, 6)}...${reactiveWallet.publicKey.toString().slice(-4)}`\n : reactiveWallet?.address\n ? `${reactiveWallet.address.slice(0, 6)}...${reactiveWallet.address.slice(\n -4\n )}`\n : 'Not connected'}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-slate-900'\n )}\n >\n Available Balance\n </span>\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-slate-900'\n )}\n >\n ${walletBalance}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-slate-900'\n )}\n >\n Currency\n </span>\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-slate-900'\n )}\n >\n USDC\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-slate-900'\n )}\n >\n Network\n </span>\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-2 h-2 rounded-full bg-green-500\"></div>\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-slate-900'\n )}\n >\n {networkLabel}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Orange Warning Banner */}\n <div\n className={cn(\n 'rounded-lg p-4 flex items-start space-x-3',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'bg-orange-900/50 border border-orange-700'\n : 'bg-orange-50 border border-orange-200'\n )}\n >\n <div className=\"flex-shrink-0\">\n <div className=\"w-6 h-6 rounded-full bg-orange-500 flex items-center justify-center\">\n <svg\n className=\"w-4 h-4 text-white\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n </div>\n </div>\n <p\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-orange-800'\n )}\n >\n Make sure your Solana wallet has enough USDC to cover the amount before retrying\n the transaction.\n </p>\n </div>\n\n {/* Try Again Button */}\n <PaymentButton\n amount={amount}\n description={description}\n onClick={() => {\n // Reset error and retry\n reset();\n handlePayment();\n }}\n loading={isLoading}\n disabled={isLoading || !reactiveWallet?.publicKey}\n className={cn(\n 'w-full h-12',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? resolvedTheme === 'dark'\n ? 'bg-[#FFFFFF1F] rounded-full'\n : 'bg-solana-gradient rounded-full'\n : resolvedTheme === 'light'\n ? 'bg-black hover:bg-gray-800 text-white font-light rounded-full'\n : resolvedTheme === 'solana-light'\n ? 'bg-solana-gradient hover:opacity-90 text-white font-light rounded-full'\n : resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? 'bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-full'\n : resolvedTheme === 'seeker-light'\n ? 'text-white rounded-full'\n : resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light'\n ? 'text-black hover:opacity-90 font-vt323 rounded-none'\n : 'bg-solana-gradient rounded-full',\n classNames?.button\n )}\n style={\n resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#32FEFF',\n color: '#000000',\n ...customStyles?.button,\n }\n : resolvedTheme === 'dark'\n ? {\n backgroundColor: '#FFFFFF1F',\n boxShadow: '0 1px 0 0 rgba(255, 255, 255, 0.3) inset',\n ...customStyles?.button,\n }\n : resolvedTheme === 'light'\n ? customStyles?.button\n : resolvedTheme === 'solana-light'\n ? customStyles?.button\n : resolvedTheme === 'seeker'\n ? {\n background:\n 'linear-gradient(0deg, #39A298, #39A298), radial-gradient(101.17% 101.67% at 50.28% 134.17%, rgba(255, 255, 255, 0.6) 0%, rgba(22, 188, 174, 0.6) 100%)',\n backgroundColor: 'transparent',\n ...customStyles?.button,\n }\n : resolvedTheme === 'seeker-2'\n ? {\n background:\n 'linear-gradient(0deg, #39A298, #39A298), radial-gradient(101.17% 101.67% at 50.28% 134.17%, rgba(255, 255, 255, 0.6) 0%, rgba(22, 188, 174, 0.6) 100%)',\n backgroundColor: 'transparent',\n ...customStyles?.button,\n }\n : resolvedTheme === 'seeker-light'\n ? {\n background: 'linear-gradient(180deg, #00BECC -9.37%, #92F9FC 160.42%)',\n backgroundColor: 'transparent',\n ...customStyles?.button,\n }\n : customStyles?.button\n }\n customText=\"Try Again\"\n />\n\n {/* Helper Text */}\n <div className=\"text-center\">\n <p\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-white'\n : 'text-slate-900'\n )}\n >\n <span\n className={cn(\n resolvedTheme === 'dark' ||\n resolvedTheme === 'solana-dark' ||\n resolvedTheme === 'seeker' ||\n resolvedTheme === 'seeker-2'\n ? 'text-gray-400'\n : 'text-slate-600'\n )}\n >\n Don't have USDC?{' '}\n </span>\n <a\n href=\"https://www.coinbase.com/how-to-buy/usdc\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n 'font-medium hover:opacity-80',\n resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? 'text-purple-600'\n : resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? 'text-[#95D2E6] hover:text-[#95D2E6]'\n : resolvedTheme === 'seeker-light'\n ? 'hover:opacity-90'\n : resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light'\n ? 'hover:opacity-90'\n : 'text-green-400 hover:text-green-300'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#000000' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#00BECC' }\n : undefined\n }\n >\n Get it here\n <svg\n className={cn(\n 'inline w-3 h-3 ml-1',\n resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? 'text-purple-600'\n : resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2'\n ? 'text-[#95D2E6]'\n : resolvedTheme === 'seeker-light'\n ? ''\n : resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light'\n ? ''\n : 'text-green-400'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#000000' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#00BECC' }\n : undefined\n }\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </a>\n </p>\n </div>\n </>\n ) : (\n <>\n {/* Wallet Info */}\n <WalletSection\n wallet={reactiveWallet}\n onDisconnect={handleDisconnect}\n theme={theme}\n className={cn(\n 'mb-4',\n (resolvedTheme === 'dark' || resolvedTheme === 'solana-dark') &&\n 'bg-[#0000001F] border-slate-600 text-white',\n (resolvedTheme === 'light' || resolvedTheme === 'solana-light') &&\n 'bg-[#F4F4F5] rounded-xl border-none'\n )}\n style={\n resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#0B2D2D',\n border: '1px solid #22EBAD33',\n }\n : resolvedTheme === 'terminal-light'\n ? {\n border: '1px solid #E4E4E7',\n }\n : resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? { boxShadow: '0px 0px 16px 4px #000000 inset' }\n : resolvedTheme === 'seeker'\n ? {\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\n }\n : resolvedTheme === 'seeker-2'\n ? { backgroundColor: '#171A1A' }\n : resolvedTheme === 'seeker-light'\n ? {\n backgroundColor: '#F4F4F5',\n }\n : resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? { backgroundColor: '#F4F4F5', border: 'none' }\n : undefined\n }\n />\n\n {/* Payment Details */}\n {showPaymentDetails &&\n (resolvedTheme === 'seeker' || resolvedTheme === 'seeker-2' ? (\n <div\n className={cn('p-6', themeConfig.paymentDetails)}\n style={\n resolvedTheme === 'seeker'\n ? {\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\n }\n : resolvedTheme === 'seeker-2'\n ? { backgroundColor: '#171A1A' }\n : undefined\n }\n >\n {/* Amount Section - Top Row */}\n <div className=\"flex items-center justify-between mb-4\">\n <span className=\"text-sm text-white\">Amount</span>\n <div className=\"text-xl font-bold\" style={{ color: '#95D2E6' }}>\n {'$' + amount.toFixed(2)}\n </div>\n </div>\n\n {/* Separator Line */}\n <div\n className=\"border-t mb-4\"\n style={{ borderTop: '1px solid #FFFFFF1F' }}\n ></div>\n\n {/* Other Details */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-white\">Wallet</span>\n <div className=\"text-sm text-white\">\n {reactiveWallet?.publicKey?.toString()\n ? `${reactiveWallet.publicKey\n .toString()\n .slice(0, 6)}...${reactiveWallet.publicKey.toString().slice(-4)}`\n : reactiveWallet?.address\n ? `${reactiveWallet.address.slice(\n 0,\n 6\n )}...${reactiveWallet.address.slice(-4)}`\n : 'Not connected'}\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-white\">Available Balance</span>\n <div className=\"text-sm text-white\">${walletBalance}</div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-white\">Currency</span>\n <div className=\"text-sm text-white\">USDC</div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-white\">Network</span>\n <div className=\"flex items-center space-x-2\">\n <div\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: '#95D2E6' }}\n ></div>\n <span className=\"text-sm text-white\">{networkLabel}</span>\n </div>\n </div>\n </div>\n </div>\n ) : (\n <div\n className={cn(\n 'p-6',\n resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? 'bg-[#F4F4F5] border-none rounded-xl'\n : themeConfig.paymentDetails\n )}\n style={\n resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#0B2D2D',\n border: '1px solid #22EBAD33',\n }\n : resolvedTheme === 'terminal-light'\n ? {\n border: '1px solid #E4E4E7',\n }\n : resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? { boxShadow: '0px 0px 16px 4px #000000 inset' }\n : resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? { backgroundColor: '#F4F4F5', border: 'none' }\n : resolvedTheme === 'seeker-light'\n ? {\n backgroundColor: '#F4F4F5',\n }\n : undefined\n }\n >\n {/* Amount Section - Top Row */}\n <div className=\"flex items-center justify-between mb-4\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white'\n : 'text-black'\n )}\n >\n Amount\n </span>\n <div\n className={cn(\n 'text-xl font-bold',\n resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? 'text-purple-600'\n : resolvedTheme === 'terminal'\n ? ''\n : resolvedTheme === 'terminal-light'\n ? ''\n : resolvedTheme === 'seeker-light'\n ? ''\n : 'text-[#21ECAB]'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#009192' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#00BECC' }\n : undefined\n }\n >\n {'$' + amount.toFixed(2)}\n </div>\n </div>\n\n {/* Separator Line */}\n <div\n className={cn(\n 'border-t mb-4',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'border-slate-600'\n : resolvedTheme === 'terminal'\n ? ''\n : 'border-slate-200'\n )}\n style={\n resolvedTheme === 'terminal'\n ? {\n borderTop: '1px solid #22EBAD1F',\n }\n : undefined\n }\n ></div>\n\n {/* Other Details */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white'\n : 'text-black'\n )}\n >\n Wallet\n </span>\n <div\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black font-vt323'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white font-vt323'\n : 'text-slate-900'\n )}\n >\n {reactiveWallet?.publicKey?.toString()\n ? `${reactiveWallet.publicKey\n .toString()\n .slice(0, 6)}...${reactiveWallet.publicKey.toString().slice(-4)}`\n : reactiveWallet?.address\n ? `${reactiveWallet.address.slice(\n 0,\n 6\n )}...${reactiveWallet.address.slice(-4)}`\n : 'Not connected'}\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white'\n : 'text-black'\n )}\n >\n Available Balance\n </span>\n <div\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black font-vt323'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white font-vt323'\n : 'text-slate-900'\n )}\n >\n ${walletBalance}\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white'\n : 'text-black'\n )}\n >\n Currency\n </span>\n <div\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black font-vt323'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white font-vt323'\n : 'text-slate-900'\n )}\n >\n USDC\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white'\n : 'text-black'\n )}\n >\n Network\n </span>\n <div className=\"flex items-center space-x-2\">\n <div\n className={cn(\n 'w-2 h-2 rounded-full',\n resolvedTheme === 'terminal' ||\n resolvedTheme === 'terminal-light' ||\n resolvedTheme === 'seeker-light'\n ? ''\n : 'bg-green-500'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { backgroundColor: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { backgroundColor: '#009192' }\n : resolvedTheme === 'seeker-light'\n ? { backgroundColor: '#00BECC' }\n : undefined\n }\n ></div>\n <span\n className={cn(\n 'text-sm',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? 'text-white'\n : resolvedTheme === 'terminal-light'\n ? 'text-black font-vt323'\n : resolvedTheme === 'seeker-light'\n ? 'text-black'\n : resolvedTheme === 'terminal'\n ? 'text-white font-vt323'\n : 'text-slate-900'\n )}\n >\n {networkLabel}\n </span>\n </div>\n </div>\n </div>\n </div>\n ))}\n\n {/* Security Message */}\n <div className=\"flex items-center justify-center space-x-2\">\n <svg\n className={cn(\n 'w-4 h-4',\n resolvedTheme === 'terminal' ||\n resolvedTheme === 'terminal-light' ||\n resolvedTheme === 'seeker-light'\n ? ''\n : 'text-green-500'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#009192' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#00BECC' }\n : undefined\n }\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n >\n <path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4z\" />\n <path d=\"M9 12l2 2 4-4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n <span\n className={cn('text-sm', themeConfig.securityMessage)}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#FFFFFF99' }\n : resolvedTheme === 'seeker'\n ? { color: '#FFFFFF66' }\n : resolvedTheme === 'seeker-2'\n ? { color: '#FFFFFF66' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#71717A' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#000000' }\n : undefined\n }\n >\n Secure payment powered by Solana\n </span>\n </div>\n\n {/* Payment Button */}\n <PaymentButton\n amount={amount}\n description={description}\n onClick={handlePayment}\n loading={isLoading}\n disabled={isLoading || !reactiveWallet?.publicKey}\n className={cn(\n 'w-full h-12',\n resolvedTheme === 'dark' || resolvedTheme === 'solana-dark'\n ? resolvedTheme === 'dark'\n ? 'bg-[#FFFFFF1F] rounded-full'\n : 'bg-solana-gradient rounded-full'\n : themeConfig.button,\n classNames?.button\n )}\n style={\n resolvedTheme === 'terminal'\n ? {\n backgroundColor: '#32FEFF',\n color: '#000000',\n ...customStyles?.button,\n }\n : resolvedTheme === 'terminal-light'\n ? {\n backgroundColor: '#000000',\n color: '#FFFFFF',\n ...customStyles?.button,\n }\n : resolvedTheme === 'dark'\n ? {\n backgroundColor: '#FFFFFF1F',\n boxShadow: '0 1px 0 0 rgba(255, 255, 255, 0.3) inset',\n ...customStyles?.button,\n }\n : resolvedTheme === 'seeker'\n ? {\n background:\n 'linear-gradient(0deg, #39A298, #39A298), radial-gradient(101.17% 101.67% at 50.28% 134.17%, rgba(255, 255, 255, 0.6) 0%, rgba(22, 188, 174, 0.6) 100%)',\n backgroundColor: 'transparent',\n ...customStyles?.button,\n }\n : resolvedTheme === 'seeker-2'\n ? {\n background:\n 'linear-gradient(0deg, #39A298, #39A298), radial-gradient(101.17% 101.67% at 50.28% 134.17%, rgba(255, 255, 255, 0.6) 0%, rgba(22, 188, 174, 0.6) 100%)',\n backgroundColor: 'transparent',\n ...customStyles?.button,\n }\n : resolvedTheme === 'seeker-light'\n ? {\n background: 'linear-gradient(180deg, #00BECC -9.37%, #92F9FC 160.42%)',\n backgroundColor: 'transparent',\n ...customStyles?.button,\n }\n : customStyles?.button\n }\n />\n\n {/* Error Message */}\n {error && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-4\">\n <p className=\"text-sm text-red-800 text-center\">\n <span className=\"font-semibold\">Payment Error:</span> {error.message}\n </p>\n </div>\n )}\n\n {/* Helper Text */}\n <div className=\"text-center\">\n <p className={cn('text-sm', themeConfig.helperText)}>\n <span\n style={\n resolvedTheme === 'terminal'\n ? { color: '#FFFFFF99' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#71717A' }\n : resolvedTheme === 'seeker'\n ? { color: '#FFFFFF66' }\n : resolvedTheme === 'seeker-2'\n ? { color: '#FFFFFF66' }\n : undefined\n }\n >\n Don't have USDC?{' '}\n </span>\n <a\n href=\"#\"\n className={cn(\n 'font-medium',\n resolvedTheme === 'seeker'\n ? 'text-[#95D2E6]'\n : resolvedTheme === 'seeker-2'\n ? 'text-[#95D2E6]'\n : resolvedTheme === 'seeker-light'\n ? 'hover:opacity-90'\n : resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? 'text-purple-600'\n : resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light'\n ? 'hover:opacity-90'\n : themeConfig.helperLink || 'text-[#4ADE80]'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#000000' }\n : resolvedTheme === 'seeker'\n ? { color: '#95D2E6' }\n : resolvedTheme === 'seeker-2'\n ? { color: '#95D2E6' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#00BECC' }\n : undefined\n }\n >\n Get it here\n <svg\n className={cn(\n 'inline w-3 h-3 ml-1',\n resolvedTheme === 'light' || resolvedTheme === 'solana-light'\n ? 'text-purple-600'\n : resolvedTheme === 'seeker'\n ? 'text-[#95D2E6]'\n : resolvedTheme === 'seeker-2'\n ? 'text-[#95D2E6]'\n : resolvedTheme === 'seeker-light'\n ? ''\n : resolvedTheme === 'terminal' || resolvedTheme === 'terminal-light'\n ? ''\n : 'text-[#4ADE80]'\n )}\n style={\n resolvedTheme === 'terminal'\n ? { color: '#32FEFF' }\n : resolvedTheme === 'terminal-light'\n ? { color: '#000000' }\n : resolvedTheme === 'seeker-light'\n ? { color: '#00BECC' }\n : undefined\n }\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </a>\n </p>\n </div>\n </>\n )}\n </CardContent>\n </Card>\n </div>\n );\n};\n\n// Main exported component - automatically sets up providers if needed\nexport const X402Paywall: React.FC<X402PaywallProps> = ({\n autoSetupProviders = true,\n providerNetwork,\n providerEndpoint,\n ...props\n}) => {\n // Auto-detect provider network from the network prop if not explicitly set\n const detectedProviderNetwork =\n providerNetwork ??\n (props.network === 'solana' ? WalletAdapterNetwork.Mainnet : WalletAdapterNetwork.Devnet);\n\n // Hooks must be called unconditionally\n const endpoint = useMemo(\n () => providerEndpoint || props.rpcUrl || clusterApiUrl(detectedProviderNetwork),\n [providerEndpoint, props.rpcUrl, detectedProviderNetwork]\n );\n\n const wallets = useMemo(() => [new PhantomWalletAdapter(), new SolflareWalletAdapter()], []);\n\n // If auto-setup is enabled, wrap with providers\n if (autoSetupProviders) {\n return (\n <ConnectionProvider endpoint={endpoint}>\n <WalletProvider wallets={wallets} autoConnect={true}>\n <WalletModalProvider>\n <X402PaywallContent {...props} />\n </WalletModalProvider>\n </WalletProvider>\n </ConnectionProvider>\n );\n }\n\n // Auto-setup disabled - just render content (assumes providers exist)\n return <X402PaywallContent {...props} />;\n};\n\nX402Paywall.displayName = 'X402Paywall';\n","import * as React from 'react';\nimport { Badge } from '@/components/ui/badge';\nimport { Spinner } from '@/components/ui/spinner';\nimport { PaymentStatusProps } from '@/types';\nimport { cn } from '@/lib/utils';\n\nexport const PaymentStatus: React.FC<PaymentStatusProps> = ({\n status,\n message,\n progress,\n className,\n style,\n}) => {\n const getStatusConfig = () => {\n switch (status) {\n case 'idle':\n return {\n label: 'Ready',\n color: 'bg-gray-100 text-gray-800',\n icon: null,\n };\n case 'connecting':\n return {\n label: 'Connecting',\n color: 'bg-blue-100 text-blue-800',\n icon: <Spinner size=\"sm\" variant=\"default\" />,\n };\n case 'pending':\n return {\n label: 'Processing',\n color: 'bg-yellow-100 text-yellow-800',\n icon: <Spinner size=\"sm\" variant=\"solana\" />,\n };\n case 'success':\n return {\n label: 'Paid',\n color: 'bg-green-100 text-green-800',\n icon: (\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n ),\n };\n case 'error':\n return {\n label: 'Failed',\n color: 'bg-red-100 text-red-800',\n icon: (\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n ),\n };\n default:\n return {\n label: 'Unknown',\n color: 'bg-gray-100 text-gray-800',\n icon: null,\n };\n }\n };\n\n const config = getStatusConfig();\n\n return (\n <div className={cn('flex flex-col gap-2', className)} style={style}>\n <div className=\"flex items-center gap-2\">\n <Badge className={cn('flex items-center gap-1.5', config.color)}>\n {config.icon}\n <span>{config.label}</span>\n </Badge>\n {message && <span className=\"text-sm text-muted-foreground\">{message}</span>}\n </div>\n \n {progress !== undefined && progress > 0 && (\n <div className=\"w-full bg-gray-200 rounded-full h-2 overflow-hidden\">\n <div\n className=\"bg-solana-gradient h-full transition-all duration-300\"\n style={{ width: `${progress}%` }}\n />\n </div>\n )}\n </div>\n );\n};\n\nPaymentStatus.displayName = 'PaymentStatus';\n"],"names":["getUSDCMint","network","getRpcUrl","fetchUSDCBalance","walletAddress","customRpcUrl","rpcUrl","connection","Connection","walletPubkey","PublicKey","usdcMint","tokenAccountAddress","getAssociatedTokenAddress","tokenAccount","getAccount","error","r","e","t","f","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","Card","React","props","ref","jsx","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","setRef","composeRefs","refs","node","hasCleanup","cleanups","cleanup","REACT_LAZY_TYPE","use","isPromiseLike","isLazyComponent","element","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","children","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","Slot","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","getter","mayWarn","falsyToString","cx","cva","base","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","buttonVariants","Button","size","asChild","Spinner","sizes","PaymentButton","amount","_description","onClick","disabled","loading","style","customText","formatAmount","jsxs","badgeVariants","Badge","WalletSection","wallet","balance","showBalance","onDisconnect","formatAddress","address","getNetworkLabel","SOLANA_MAINNET_CAIP2","isSolanaNetwork","isSolanaMainnet","createPaymentPayload","transaction","paymentRequirements","resourceUrl","base64Transaction","paymentPayload","getDefaultRpcUrl","DEFAULT_COMPUTE_UNIT_LIMIT","DEFAULT_COMPUTE_UNIT_PRICE_MICROLAMPORTS","createSolanaPaymentTransaction","feePayer","feePayerPubkey","userPubkey","destination","mintPubkey","instructions","ComputeBudgetProgram","programId","TOKEN_2022_PROGRAM_ID","TOKEN_PROGRAM_ID","mint","getMint","sourceAta","destinationAta","amountStr","createTransferCheckedInstruction","blockhash","message","TransactionMessage","VersionedTransaction","createPaymentFetch","fetchFn","maxValue","verbose","log","input","init","url","response","rawResponse","parsedPaymentRequirements","selectedRequirements","req","paymentAmount","signedTransaction","paymentHeader","newInit","retryResponse","X402Client","createX402Client","useX402Payment","status","setStatus","useState","setError","transactionId","setTransactionId","responseContent","setResponseContent","isLoading","setIsLoading","reset","useCallback","description","x402Client","defaultEndpoint","apiEndpoint","isEchoMerchant","contentType","text","paymentResponse","txId","decoded","err","paymentError","X402PaywallContent","walletProp","facilitatorUrl","logoUrl","showPaymentDetails","customStyles","maxPaymentAmount","onPaymentStart","onPaymentSuccess","onPaymentError","onWalletConnect","walletContext","useWallet","reactiveWallet","useMemo","isPaid","setIsPaid","walletBalance","setWalletBalance","resolvedTheme","setResolvedTheme","walletButtonRef","useRef","networkLabel","pay","handleDisconnect","isWalletConnected","useEffect","mediaQuery","updateTheme","themeForClass","handlePayment","showFailureScreen","themeConfig","connectThemeConfig","WalletMultiButton","Fragment","X402Paywall","autoSetupProviders","providerNetwork","providerEndpoint","detectedProviderNetwork","WalletAdapterNetwork","endpoint","clusterApiUrl","wallets","PhantomWalletAdapter","SolflareWalletAdapter","ConnectionProvider","WalletProvider","WalletModalProvider","PaymentStatus","progress"],"mappings":"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","x_google_ignoreList":[1,2,5,6,7,13]}