@payai/x402-solana-react 0.1.0-beta.6 → 1.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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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/PaymentStatus.tsx","../src/components/WalletSection.tsx","../node_modules/x402-solana/dist/client/index.mjs","../src/hooks/useX402Payment.ts","../src/components/X402Paywall.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://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,\n onClick,\n disabled = false,\n loading = false,\n className,\n style,\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 bg-solana-gradient hover:opacity-90 text-white font-semibold shadow-lg hover:shadow-xl transition-all duration-200 transform hover:scale-[1.02] rounded-xl',\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 size=\"sm\" variant=\"default\" className=\"border-white/30 border-t-white\" />\n <span>Processing Payment...</span>\n </div>\n ) : (\n <div className=\"flex items-center justify-center gap-3\">\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm3.5 6L12 10.5 8.5 8 12 5.5 15.5 8zM8.5 16L12 13.5 15.5 16 12 18.5 8.5 16z\"/>\n </svg>\n <span>Pay {formatAmount(amount)} USDC</span>\n </div>\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 { 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","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 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 className={cn('bg-slate-50 rounded-lg p-4 border border-slate-200', className)} style={style}>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <div className=\"w-2 h-2 bg-green-500 rounded-full\"></div>\n <span className=\"text-sm font-medium text-slate-600\">\n Connected Wallet\n </span>\n </div>\n <code className=\"text-sm font-mono bg-white px-3 py-1.5 rounded-md border border-slate-300 text-slate-800\">\n {formatAddress(walletAddress)}\n </code>\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\">{balance}</span>\n <span className=\"text-xs font-semibold text-slate-500 bg-slate-200 px-2 py-1 rounded-md\">USDC</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\">\n Network\n </span>\n <Badge variant=\"outline\" className=\"text-xs border-slate-300 text-slate-700\">\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 const result = await response.json();\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 } from 'react';\nimport { fetchUSDCBalance } from '@/lib/balance';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { PaymentButton } from './PaymentButton';\nimport { PaymentStatus } from './PaymentStatus';\nimport { WalletSection } from './WalletSection';\nimport { useX402Payment } from '@/hooks/useX402Payment';\nimport { X402PaywallProps } from '@/types';\nimport { cn } from '@/lib/utils';\n\nexport const X402Paywall: React.FC<X402PaywallProps> = ({\n amount,\n description,\n wallet,\n network = 'solana-devnet',\n rpcUrl,\n apiEndpoint,\n treasuryAddress,\n facilitatorUrl,\n theme = 'solana',\n showBalance = true,\n showNetworkInfo = true,\n showPaymentDetails = true,\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 const [isPaid, setIsPaid] = useState(false);\n const [walletBalance, setWalletBalance] = useState<string>('0.00');\n\n const { pay, isLoading, status, error, transactionId } = useX402Payment({\n wallet,\n network,\n rpcUrl,\n apiEndpoint,\n treasuryAddress,\n facilitatorUrl,\n maxPaymentAmount,\n });\n\n // Fetch balance when wallet connects\n useEffect(() => {\n const walletAddress = wallet.publicKey?.toString() || wallet.address;\n if (walletAddress) {\n onWalletConnect?.(walletAddress);\n \n // Fetch USDC balance\n fetchUSDCBalance(walletAddress, network, rpcUrl).then(setWalletBalance);\n }\n }, [wallet, network, onWalletConnect]);\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 // Theme-based container classes\n const getThemeClasses = () => {\n switch (theme) {\n case 'solana':\n return 'border-solana-primary/20';\n case 'dark':\n return 'bg-card';\n case 'light':\n return 'bg-background';\n default:\n return '';\n }\n };\n\n return (\n <div\n className={cn(\n 'flex items-center justify-center min-h-screen p-4',\n 'bg-gradient-to-br from-slate-900 via-slate-800 to-slate-900',\n classNames?.container\n )}\n style={customStyles?.container}\n >\n <Card\n className={cn(\n 'w-full max-w-lg shadow-2xl border-0 bg-white/95 backdrop-blur-sm',\n getThemeClasses(),\n classNames?.card\n )}\n style={customStyles?.card}\n >\n <CardHeader className=\"text-center pb-6\">\n <div className=\"mx-auto w-16 h-16 bg-solana-gradient rounded-full flex items-center justify-center mb-4\">\n <svg className=\"w-8 h-8 text-white\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"/>\n </svg>\n </div>\n <CardTitle className={cn('text-3xl font-bold bg-solana-gradient bg-clip-text text-transparent', classNames?.text)} style={customStyles?.text}>\n Unlock Premium Access\n </CardTitle>\n <CardDescription className=\"text-lg text-slate-600 mt-2\">{description}</CardDescription>\n </CardHeader>\n\n <CardContent className=\"space-y-6\">\n {/* Wallet Info */}\n <WalletSection\n wallet={wallet}\n balance={showBalance ? walletBalance : undefined}\n network={showNetworkInfo ? network : undefined}\n showBalance={showBalance}\n />\n\n {/* Payment Details */}\n {showPaymentDetails && (\n <div className=\"bg-gradient-to-r from-slate-50 to-slate-100 rounded-xl p-6 border border-slate-200\">\n <div className=\"flex justify-between items-center mb-2\">\n <span className=\"text-sm font-medium text-slate-600\">Payment Amount</span>\n <span className=\"text-2xl font-bold text-slate-900\">${amount.toFixed(2)}</span>\n </div>\n <div className=\"flex justify-between items-center\">\n <span className=\"text-xs text-slate-500\">Currency</span>\n <span className=\"text-sm font-semibold text-slate-700 bg-slate-200 px-2 py-1 rounded-md\">USDC</span>\n </div>\n {maxPaymentAmount && (\n <div className=\"flex justify-between items-center mt-2\">\n <span className=\"text-xs text-slate-500\">Maximum Amount</span>\n <span className=\"text-xs text-slate-600\">${maxPaymentAmount.toFixed(2)}</span>\n </div>\n )}\n </div>\n )}\n\n {/* Payment Status */}\n {status !== 'idle' && (\n <PaymentStatus\n status={status}\n message={error?.message}\n className={classNames?.status}\n style={customStyles?.status}\n />\n )}\n\n {/* Payment Button */}\n <PaymentButton\n amount={amount}\n description={description}\n onClick={handlePayment}\n loading={isLoading}\n disabled={isLoading}\n className={cn('w-full h-12 text-lg font-semibold', classNames?.button)}\n style={customStyles?.button}\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 {/* Network Notice */}\n <div className=\"bg-amber-50 border border-amber-200 rounded-lg p-4\">\n <p className=\"text-xs text-amber-800 text-center\">\n <span className=\"font-semibold\">Live Payments:</span> Uses PayAI facilitator on Solana Mainnet.\n <br />Requires real USDC balance. Test payments are refunded automatically.\n </p>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n};\n\nX402Paywall.displayName = 'X402Paywall';\n"],"names":["getUSDCMint","network","getRpcUrl","fetchUSDCBalance","walletAddress","customRpcUrl","rpcUrl","connection","Connection","walletPubkey","PublicKey","usdcMint","tokenAccountAddress","getAssociatedTokenAddress","tokenAccount","getAccount","error","r","t","f","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","Comp","Spinner","sizes","PaymentButton","amount","description","onClick","disabled","loading","style","formatAmount","jsxs","badgeVariants","Badge","PaymentStatus","status","message","progress","WalletSection","wallet","balance","showBalance","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","TransactionMessage","VersionedTransaction","userSignedTx","createPaymentFetch","fetchFn","maxValue","input","init","response","rawResponse","parsedPaymentRequirements","selectedRequirements","req","paymentHeader","newInit","X402Client","__publicField","createX402Client","useX402Payment","setStatus","useState","setError","transactionId","setTransactionId","isLoading","setIsLoading","reset","useCallback","x402Client","defaultEndpoint","apiEndpoint","paymentResponse","txId","decoded","e","err","paymentError","X402Paywall","treasuryAddress","facilitatorUrl","showNetworkInfo","showPaymentDetails","customStyles","maxPaymentAmount","onPaymentStart","onPaymentSuccess","onPaymentError","onWalletConnect","isPaid","setIsPaid","walletBalance","setWalletBalance","pay","useEffect","handlePayment","getThemeClasses"],"mappings":"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","x_google_ignoreList":[1,2,5,6,7,14]}
1
+ {"version":3,"file":"index.js","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,\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 { WalletModalProvider, WalletMultiButton } 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<Omit<X402PaywallProps, 'autoSetupProviders' | 'providerNetwork' | 'providerEndpoint'>> = ({\n amount,\n description,\n wallet: walletProp,\n network = \"solana-devnet\",\n rpcUrl,\n apiEndpoint,\n treasuryAddress,\n facilitatorUrl,\n theme = \"solana-light\",\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 ? { toString: () => walletContext.publicKey!.toString() } : 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\n const { pay, isLoading, status, error, transactionId, reset } = 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 const isWalletConnected = walletProp\n ? (walletProp.publicKey || walletProp.address)\n : 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 = walletContext.publicKey?.toString() || walletProp?.publicKey?.toString() || 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 }, [walletContext.publicKey, walletContext.connected, walletContext.connecting, walletProp, network, rpcUrl, onWalletConnect]);\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 = error && (theme === \"dark\" || theme === \"solana-dark\" || theme === \"light\" || theme === \"solana-light\" || theme === \"seeker\" || 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: \"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: \"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: \"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: \"bg-green-400 text-black hover:bg-green-300 font-mono rounded-full\",\n paymentDetails: \"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: \"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: \"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: \"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 theme === \"dark\"\n ? {\n background: \"linear-gradient(to bottom left, #db2777 0%, #9333ea 50%, #1e40af 100%)\",\n ...customStyles?.container,\n }\n : theme === \"light\"\n ? {\n background: \"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: \"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: \"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=\"/src/components/ui/SolanaLogo.svg\"\n alt=\"Solana\"\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 ${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 className={cn(\"text-sm\", connectThemeConfig.securityMessage)}>\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 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: \"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: \"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: \"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=\"/src/components/ui/SolanaLogo.svg\"\n alt=\"Solana\"\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\" || theme === \"solana-dark\" || 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\" || theme === \"solana-dark\" || 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 className={cn(\n \"text-2xl font-semibold\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}>Payment Failed</h3>\n </div>\n\n {/* Error Message */}\n <p className={cn(\n \"text-center text-sm mb-6\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-gray-400\"\n : \"text-slate-600\"\n )}>\n {error?.message || \"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 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 <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}>Amount Paid</span>\n <span className={cn(\n \"text-sm font-semibold\",\n theme === \"light\" || theme === \"solana-light\"\n ? \"text-purple-600\"\n : \"text-green-500\"\n )}>\n ${amount.toFixed(2)}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}>Wallet</span>\n <span className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}>\n {reactiveWallet?.publicKey?.toString()\n ? `${reactiveWallet.publicKey.toString().slice(0, 6)}...${reactiveWallet.publicKey.toString().slice(-4)}`\n : reactiveWallet?.address\n ? `${reactiveWallet.address.slice(0, 6)}...${reactiveWallet.address.slice(-4)}`\n : \"Not connected\"}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}>Available Balance</span>\n <span className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}>\n ${walletBalance}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}>Currency</span>\n <span className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}>USDC</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}>Network</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 className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}>Solana</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Orange Warning Banner */}\n <div className={cn(\n \"rounded-lg p-4 flex items-start space-x-3\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"bg-orange-900/50 border border-orange-700\"\n : \"bg-orange-50 border border-orange-200\"\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 className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-orange-800\"\n )}>\n Make sure your Solana wallet has enough USDC to cover the 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: \"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: \"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 className={cn(\n \"text-sm\",\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-white\"\n : \"text-slate-900\"\n )}>\n <span className={cn(\n theme === \"dark\" || theme === \"solana-dark\" || theme === \"seeker\" || theme === \"seeker-2\"\n ? \"text-gray-400\"\n : \"text-slate-600\"\n )}>Don't have USDC? </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\">\n Amount\n </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\">\n Wallet\n </span>\n <div className=\"text-sm text-white\">\n {reactiveWallet?.publicKey?.toString()\n ? `${reactiveWallet.publicKey.toString().slice(0, 6)}...${reactiveWallet.publicKey.toString().slice(-4)}`\n : reactiveWallet?.address\n ? `${reactiveWallet.address.slice(0, 6)}...${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\">\n Currency\n </span>\n <div className=\"text-sm text-white\">\n USDC\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-white\">\n Network\n </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 Solana\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.toString().slice(0, 6)}...${reactiveWallet.publicKey.toString().slice(-4)}`\n : reactiveWallet?.address\n ? `${reactiveWallet.address.slice(0, 6)}...${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(\"w-2 h-2 rounded-full\", \"bg-green-500\")}\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 Solana\n </span>\n </div>\n </div>\n </div>\n </div>\n )\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={theme === \"seeker\" ? { color: \"#FFFFFF66\" } : theme === \"seeker-2\" ? { color: \"#FFFFFF66\" } : undefined}\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: \"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: \"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 style={theme === \"seeker\" ? { color: \"#FFFFFF66\" } : theme === \"seeker-2\" ? { color: \"#FFFFFF66\" } : undefined}>\n Don't have USDC?{\" \"}\n </span>\n <a\n href=\"#\"\n className={cn(\n \"font-medium\",\n theme === \"seeker\" ? \"text-[#4ADE80]\" : theme === \"seeker-2\" ? \"text-[#4ADE80]\" : themeConfig.helperLink || \"text-[#4ADE80]\"\n )}\n style={theme === \"seeker\" ? { color: \"#4ADE80\" } : theme === \"seeker-2\" ? { color: \"#4ADE80\" } : undefined}\n >\n Get it here\n <svg\n className={cn(\n \"inline w-3 h-3 ml-1\",\n theme === \"light\" ? \"text-purple-600\" : theme === \"seeker\" ? \"text-[#4ADE80]\" : theme === \"seeker-2\" ? \"text-[#4ADE80]\" : \"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 = providerNetwork ??\n (props.network === 'solana' ? WalletAdapterNetwork.Mainnet : WalletAdapterNetwork.Devnet);\n\n // If auto-setup is enabled, wrap with providers\n if (autoSetupProviders) {\n const endpoint = useMemo(\n () => providerEndpoint || props.rpcUrl || clusterApiUrl(detectedProviderNetwork),\n [providerEndpoint, props.rpcUrl, detectedProviderNetwork]\n );\n\n const wallets = useMemo(\n () => [\n new PhantomWalletAdapter(),\n new SolflareWalletAdapter(),\n ],\n []\n );\n\n return (\n <ConnectionProvider endpoint={endpoint}>\n <WalletProvider wallets={wallets} autoConnect={false}>\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","Comp","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","x402Client","defaultEndpoint","apiEndpoint","contentType","paymentResponse","txId","decoded","err","paymentError","X402PaywallContent","walletProp","treasuryAddress","facilitatorUrl","showPaymentDetails","customStyles","maxPaymentAmount","onPaymentStart","onPaymentSuccess","onPaymentError","onWalletConnect","walletContext","useWallet","reactiveWallet","useMemo","isPaid","setIsPaid","walletBalance","setWalletBalance","walletButtonRef","useRef","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]}