import type { JSX } from "react"; import { useMemo, useState } from "react"; import { View } from "react-native"; import { useRouter } from "expo-router"; import { BottomSheet, Button, Spinner, Typography, useThemeColor } from "heroui-native"; import { PRODUCTS, RESOLVERS } from "@/data/mock"; import { useModals } from "@/state/modals"; import { ResolverCard } from "@/components/ResolverCard"; import { MonoText } from "@/components/MonoText"; export function CheckoutSheet(): JSX.Element { const router = useRouter(); const accentColor = useThemeColor("accent"); const { isCheckoutSheetOpen, checkoutListingId, checkoutStep, closeCheckoutSheet, confirmOrder } = useModals(); const [resolverId, setResolverId] = useState(0); const listing = useMemo( () => PRODUCTS.find((product) => product.id === checkoutListingId) ?? PRODUCTS[0], [checkoutListingId], ); const handleViewOrders = () => { closeCheckoutSheet(); router.push("/orders"); }; const handleContinueShopping = () => { closeCheckoutSheet(); router.push("/browse"); }; return ( { if (!open) closeCheckoutSheet(); }} > {checkoutStep === "review" && ( Place Order {listing.emoji} {listing.name} {listing.seller} Payment {listing.price} ≈ {listing.usd} USD Dispute Protection {RESOLVERS.map((item) => ( setResolverId(item.id)} /> ))} )} {checkoutStep === "pending" && ( Confirming on Solana… {"Approve the transaction in your wallet.\nThis takes a few seconds."} )} {checkoutStep === "success" && ( Order Placed! {`${listing.price} is now held in secure escrow.\nThe seller has been notified.`} )} ); }