"use client"; import { AnimatePresence, motion } from "framer-motion"; import { Loader2 } from "lucide-react"; import { CurrencyIcon } from "@/components/converter/currency-icon"; import { formatAmount } from "@/lib/format"; import type { RateAsset } from "@/lib/rates"; type AmountValidationResult = | { ok: true; value: number } | { ok: false; error: string }; interface MultiConversionItem { asset: RateAsset; value: number; } interface ConverterCardMultiConversionProps { shouldReduceMotion: boolean; debouncedValidation: AmountValidationResult; fromAsset?: RateAsset; multiConversions: MultiConversionItem[]; isRatesLoading: boolean; } export function ConverterCardMultiConversion({ shouldReduceMotion, debouncedValidation, fromAsset, multiConversions, isRatesLoading, }: ConverterCardMultiConversionProps) { return (

Multi conversion

{fromAsset && debouncedValidation.ok ? ( for {formatAmount(debouncedValidation.value, fromAsset)} {fromAsset.code} ) : null}
{!debouncedValidation.ok ? (

{debouncedValidation.error}

) : null} {debouncedValidation.ok && multiConversions.length === 0 ? (

No additional assets available for multi conversion.

) : null} {debouncedValidation.ok && multiConversions.length > 0 ? (
{multiConversions.map(({ asset, value }) => (
{asset.code}

{formatAmount(value, asset)} {asset.code}

))}
) : null} {isRatesLoading ? (
Updating multi conversion...
) : null}
); }