'use client'; import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'; import clsx from 'clsx'; import LoadingDots from 'components/loading-dots'; import { ProductVariant } from 'lib/shopify/types'; import { useTranslations } from 'next-intl'; import { useRouter, useSearchParams } from 'next/navigation'; import { useState, useTransition } from 'react'; import { addItems } from './actions'; export function AddManyToCart({ quantity = 1, variants, availableForSale }: { quantity: number; variants: ProductVariant[]; availableForSale: boolean; }) { const router = useRouter(); const searchParams = useSearchParams(); const t = useTranslations('Index'); const [currentQuantity, setCurrentQuantity] = useState(quantity); const [isPending, startTransition] = useTransition(); const defaultVariantId = variants.length === 1 ? variants[0]?.id : undefined; const variant = variants.find((variant: ProductVariant) => variant.selectedOptions.every( (option) => option.value === searchParams.get(option.name.toLowerCase()) ) ); const selectedVariantId = variant?.id || defaultVariantId; const title = !availableForSale ? t('cart.out-of-stock') : !selectedVariantId ? t('cart.options') : undefined; return (
{t('cart.quantity-label')}
setCurrentQuantity(Number(e.target.value))} className={clsx( 'min-w-[200px] grow bg-transparent px-2 py-3 text-right text-white', 'outline-none focus:border-0 focus:outline-none focus:ring-0', 'focus-visible:ring-none focus-visible:border-none focus-visible:outline-none', 'focus-visible:ring-0 focus-visible:ring-offset-0', 'active:border-none active:outline-none active:ring-0' )} />
); }