Cart
The @hv/cart
package exposes a vendor-agnostic interface to vendor specific cart integrations.
Integration Function
The integration function instantiates a CartIntegration
, the vendor-agnostic interface to
the Cart
provider. It is intended to be used in server components or route handlers.
Do not try to instantiate the Cart()
function in client ("use client") components. Use the wrapping hooks provided in this package instead which expose these methods to the client.
Usage
Example usage:
import { Cart } from '@hv/cart';
...
const { createCart } = Cart({
locale: 'en-US',
});
const createCartResult = await createCart(cartDraft);
Capabilities
Capabilities are read-only values which define the features and functionality of the cart provider from a commerce vendor package.
cartPromotionEntry
type: boolean
Defines if cart provider supports the application of a promotion code to the cart.
checkout
type: boolean
Defines if provider supports an external, "hosted" checkout process. Usually instead of expressCheckout
.
customerProductLists
type: boolean
Defines if provider supports customer product lists to save favorite products for later.
displayCartTotal
type: boolean
Defines if provider supports the display of a cart total vs a subtotal only.
expressCheckout
type: boolean
Defines if provider supports checking out directly in the High Velocity front-end app. This means shipping, taxes, etc. can be managed and calculated for the cart.
lineItemLimit
type: number
Defines the maximum number of line items allowed in the cart, when restricted by the provider.
API
The @hv/cart
package contains an /api
folder that exports code
to stand-up Next.js Route Handlers.
These endpoints each correspond to a React hook from the @hv/cart/client
export, and use the
CartIntegration
function as the underlying implementation.
Together these are useful for fetching and mutating data in client components.
Endpoints
Typically you would only call these endpoints via their corresponding use...()
hook in a client component.
/addPromoCode
Adds a promo code to the current cart.
/addToCart
Adds items to the current cart.
/getCapabilities
Fetches the capabilities of the cart provider.
/getCart
Fetches the current cart details.
/getOrder
Fetches details of a specific order by order ID.
/getPaymentMethods
Fetches available payment methods.
/getShippingMethods
Fetches available shipping methods for the current cart.
/placeOrder
Places an order using the current cart.
/removeFromCart
Removes a line item from the cart.
/removePromoCode
Removes a promo code from the current cart.
/updateCart
Updates the cart details such as:
customerID
customerEmail
shippingMethodID
shippingAddress
billingAddress
/updateLineItem
Updates a line item in the cart.
Hooks
@hv/cart/client
exports React hooks for fetching and mutating cart and order objects.
useAddPromoCode()
Provides functionality to add a promo code to the cart via API and update status in the UX.
useAddToCart()
Provides functionality to add items to the cart via API and update status in the UX.
useCart()
Provides functionality to fetch the current cart details via API and update status in the UX.
useCartCapabilities()
Provides functionality to fetch the capabilities of the cart provider via API and update status in the UX.
useCartListener()
Provides functionality to listen for cart events and execute a callback when they occur.
useOrder()
Provides functionality to fetch details of a specific order by order ID via API and update status in the UX.
usePaymentMethods()
Provides functionality to fetch available payment methods via API and update status in the UX.
usePlaceOrder()
Provides functionality to place an order using the current cart via API and update status in the UX.
useRemoveFromCart()
Provides functionality to remove a line item from the cart via API and update status in the UX.
useRemovePromoCode()
Provides functionality to remove a promo code from the cart via API and update status in the UX.
useShippingMethods()
Provides functionality to fetch available shipping methods for the current cart via API and update status in the UX.
useUpdateCart()
Provides functionality to update the cart details, such as customer address, via API and update status in the UX.
useUpdateLineItem()
Provides functionality to update a line item in the cart via API and update status in the UX.
Reference
For more documentation on the types exposed by this package, check out the reference section: