diff --git a/.changeset/thin-guests-doubt.md b/.changeset/thin-guests-doubt.md new file mode 100644 index 000000000..eb15fa86f --- /dev/null +++ b/.changeset/thin-guests-doubt.md @@ -0,0 +1,5 @@ +--- +"@bigcommerce/catalyst-core": patch +--- + +Add loading state to remove item button in Cart diff --git a/apps/core/app/[locale]/(default)/cart/_components/cart-item.tsx b/apps/core/app/[locale]/(default)/cart/_components/cart-item.tsx index 0a387fa45..2255e9305 100644 --- a/apps/core/app/[locale]/(default)/cart/_components/cart-item.tsx +++ b/apps/core/app/[locale]/(default)/cart/_components/cart-item.tsx @@ -1,4 +1,3 @@ -import { Trash } from 'lucide-react'; import { getTranslations } from 'next-intl/server'; import { getCart } from '~/client/queries/get-cart'; @@ -8,6 +7,7 @@ import { BcImage } from '~/components/bc-image'; import { removeProduct } from '../_actions/remove-products'; import { CartItemCounter } from './cart-item-counter'; +import { RemoveFromCartButton } from './remove-from-cart-button'; export type Product = | ExistingResultType['lineItems']['physicalItems'][number] @@ -109,9 +109,7 @@ export const CartItem = async ({
- + diff --git a/apps/core/app/[locale]/(default)/cart/_components/remove-from-cart-button.tsx b/apps/core/app/[locale]/(default)/cart/_components/remove-from-cart-button.tsx new file mode 100644 index 000000000..c0bf530b4 --- /dev/null +++ b/apps/core/app/[locale]/(default)/cart/_components/remove-from-cart-button.tsx @@ -0,0 +1,32 @@ +'use client'; + +import { Loader2 as Spinner, Trash } from 'lucide-react'; +import { useFormStatus } from 'react-dom'; + +export const RemoveFromCartButton = ({ + label, + spinnerLabel, +}: { + label: string; + spinnerLabel: string; +}) => { + const { pending } = useFormStatus(); + + return ( + + ); +};