# Types: CartNetTotals to RemoveBundlesButtonProps (/themes/sdk/reference/cart/types-2)

```ts
import { … } from '@poltura/theme-sdk/cart';
```

## `CartNetTotals` [#cartnettotals]

The cart totals without tax.

<TypeTable type={{"items":{"description":"The items without tax.","type":"Money","required":true},"discount":{"description":"The discounts without tax.","type":"Money","required":true},"shipping":{"description":"Shipping without tax.","type":"Money","required":true},"tax":{"description":"The tax added on top of the net total.","type":"Money","required":true},"total":{"description":"The total without tax.","type":"Money","required":true}}} />

## `CartPageView` [#cartpageview]

What the cart page shows beside the cart itself.

<TypeTable type={{"recommendations":{"description":"Products suggested to add, at most four.","type":"readonly ProductCard[]","required":true},"minimumOrder":{"description":"The minimum order value not reached yet, or null.","type":"MinimumOrder | null","required":true},"bundlePriceReview":{"description":"The changed bundle price to accept, or null when no bundle price changed.","type":"BundlePriceReview | null","required":true}}} />

## `CartResult` [#cartresult]

The outcome of a cart action.

<TypeTable type={{"ok":{"description":"The action worked.","type":"true","required":true}}} />

## `CartState` [#cartstate]

The cart with the actions that change it; the host runs every mutation.

<TypeTable type={{"cart":{"description":"The cart, or null before the shopper has one.","type":"Cart | null","required":true},"status":{"description":"Whether the cart is loading, ready, or failed to load.","type":"'loading' | 'ready' | 'error'","required":true},"add":{"description":"Adds a variant to the cart and opens the mini cart.","type":"(input: CartAddInput) => Promise<CartResult>","required":true},"setQuantity":{"description":"Changes a line's quantity.","type":"(lineId: string, quantity: number) => Promise<CartResult>","required":true},"remove":{"description":"Removes a line and its bundle components.","type":"(lineId: string) => Promise<CartResult>","required":true},"applyCode":{"description":"Applies a code, trying it as a gift card first and then as a discount.","type":"(code: string) => Promise<CartResult>","required":true},"removeCode":{"description":"Removes an entered discount code.","type":"(code: string) => Promise<void>","required":true},"removeGiftCard":{"description":"Removes an applied gift card.","type":"(giftCardId: string) => Promise<void>","required":true},"checkout":{"description":"Goes to checkout; does nothing while a change is in flight.","type":"() => void","required":true},"isBusy":{"description":"Whether any change is in flight.","type":"boolean","required":true},"miniCart":{"description":"The mini cart's open state.","type":"MiniCartState","required":true}}} />

## `CartTotals` [#carttotals]

What the cart adds up to.

<TypeTable type={{"items":{"description":"The items before discounts.","type":"Money","required":true},"discount":{"description":"The discounts taken off.","type":"Money","required":true},"shipping":{"description":"Shipping.","type":"Money","required":true},"tax":{"description":"The tax in the total.","type":"Money","required":true},"giftCard":{"description":"The gift card credit taken off.","type":"Money","required":true},"total":{"description":"What the shopper pays.","type":"Money","required":true},"net":{"description":"The same totals without tax, or null when the market has no tax split.","type":"CartNetTotals | null","required":true},"taxIncluded":{"description":"Whether the prices include tax.","type":"boolean","required":true},"taxPending":{"description":"Whether tax is not worked out yet, so the total is not final.","type":"boolean","required":true},"taxRatePercent":{"description":"The tax rate as a percentage, or null when rates are mixed or unknown.","type":"number | null","required":true}}} />

## `MiniCartState` [#minicartstate]

The mini cart's open state.

<TypeTable type={{"open":{"description":"Whether the mini cart is open.","type":"boolean","required":true},"setOpen":{"description":"Opens or closes the mini cart.","type":"(open: boolean) => void","required":true}}} />

## `MinimumOrder` [#minimumorder]

The minimum order value the cart does not reach yet.

<TypeTable type={{"minimum":{"description":"The minimum order value.","type":"Money","required":true},"shortfall":{"description":"How much is missing.","type":"Money","required":true},"basis":{"description":"Whether the minimum is measured with or without tax.","type":"'gross' | 'net'","required":true}}} />

## `CartButtonClassKey` [#cartbuttonclasskey]

The parts of [`CartButton`](/themes/sdk/reference/cart/defaults#cartbutton) that take their own classes.

```ts
type CartButtonClassKey = 'icon' | 'label' | 'count'
```

## `CartButtonProps` [#cartbuttonprops]

Props of [`CartButton`](/themes/sdk/reference/cart/defaults#cartbutton).

<TypeTable type={{"icon":{"description":"The icon: a cart or a bag.","type":"'cart' | 'bag'","required":false},"showLabel":{"description":"Whether the word \"Cart\" shows beside the icon; omitted shows it from large screens up.","type":"boolean","required":false},"countPlacement":{"description":"Where the item count sits: beside the icon, or as a badge over it.","type":"'inline' | 'overlay'","required":false},"labelLayout":{"description":"Whether the label sits beside the icon or under it.","type":"'inline' | 'stack'","required":false},"className":{"description":"Classes added to the button.","type":"string","required":false},"classes":{"description":"Classes added to the icon, the label and the count.","type":"Partial<Record<CartButtonClassKey, string>>","required":false}}} />

## `MiniCartProps` [#minicartprops]

Props of [`MiniCart`](/themes/sdk/reference/cart/defaults#minicart).

<TypeTable type={{"surface":{"description":"The surface it fills: the desktop popover, or the narrow side sheet with larger touch targets and wallet buttons.","type":"'popover' | 'sheet'","required":false},"onClose":{"description":"Called when a link inside it is followed, so the surface around it can close.","type":"() => void","required":false},"className":{"description":"Classes added to the mini cart.","type":"string","required":false}}} />

## `CartLineItemProps` [#cartlineitemprops]

Props of [`CartLineItem`](/themes/sdk/reference/cart/parts#cartlineitem).

<TypeTable type={{"line":{"description":"The line to show, from `useCart().cart.lines`.","type":"CartLine","required":true},"compact":{"description":"Draws the narrow layout the mini cart uses, for drawers and side panels.","type":"boolean","required":false},"className":{"description":"Classes added to the line.","type":"string","required":false}}} />

## `CartLineQuantityProps` [#cartlinequantityprops]

Props of [`CartLineQuantity`](/themes/sdk/reference/cart/parts#cartlinequantity).

<TypeTable type={{"line":{"description":"The line whose quantity it changes.","type":"CartLine","required":true},"className":{"description":"Classes added to the stepper.","type":"string","required":false}}} />

## `CartLineRemoveProps` [#cartlineremoveprops]

Props of [`CartLineRemove`](/themes/sdk/reference/cart/parts#cartlineremove).

<TypeTable type={{"line":{"description":"The line it removes, with its bundle items.","type":"CartLine","required":true},"className":{"description":"Classes added to the button.","type":"string","required":false}}} />

## `CartSummaryProps` [#cartsummaryprops]

Props of [`CartSummary`](/themes/sdk/reference/cart/parts#cartsummary).

<TypeTable type={{"cart":{"description":"The cart whose totals it lists.","type":"Cart","required":true},"className":{"description":"Classes added to the summary.","type":"string","required":false}}} />

## `CartCodeFormProps` [#cartcodeformprops]

Props of [`CartCodeForm`](/themes/sdk/reference/cart/parts#cartcodeform).

<TypeTable type={{"className":{"description":"Classes added to the form.","type":"string","required":false}}} />

## `CartCodesProps` [#cartcodesprops]

Props of [`CartCodes`](/themes/sdk/reference/cart/parts#cartcodes).

<TypeTable type={{"cart":{"description":"The cart whose entered codes it lists.","type":"Cart","required":true},"className":{"description":"Classes added to the list.","type":"string","required":false}}} />

## `CheckoutButtonProps` [#checkoutbuttonprops]

Props of [`CheckoutButton`](/themes/sdk/reference/cart/parts#checkoutbutton).

<TypeTable type={{"label":{"description":"The button text; the translated default when omitted.","type":"string","required":false},"className":{"description":"Classes added to the button.","type":"string","required":false}}} />

## `EmptyCartProps` [#emptycartprops]

Props of [`EmptyCart`](/themes/sdk/reference/cart/parts#emptycart).

<TypeTable type={{"heading":{"description":"The heading; the translated default when omitted.","type":"string","required":false},"body":{"description":"The line under the heading; the translated default when omitted.","type":"string","required":false},"continueLabel":{"description":"The button text; the translated default when omitted.","type":"string","required":false},"continueHref":{"description":"Where the button goes; the product listing when omitted.","type":"string","required":false},"className":{"description":"Classes added to the empty state.","type":"string","required":false}}} />

## `CartRecommendationsProps` [#cartrecommendationsprops]

Props of [`CartRecommendations`](/themes/sdk/reference/cart/parts#cartrecommendations).

<TypeTable type={{"items":{"description":"The products to suggest; the first four are shown.","type":"readonly ProductCard[]","required":true},"className":{"description":"Classes added to the section.","type":"string","required":false}}} />

## `MinimumOrderNoticeProps` [#minimumordernoticeprops]

Props of [`MinimumOrderNotice`](/themes/sdk/reference/cart/parts#minimumordernotice).

<TypeTable type={{"minimum":{"description":"The minimum order value not reached yet.","type":"MinimumOrder","required":true},"className":{"description":"Classes added to the notice.","type":"string","required":false}}} />

## `BundlePriceNoticeProps` [#bundlepricenoticeprops]

Props of [`BundlePriceNotice`](/themes/sdk/reference/cart/parts#bundlepricenotice).

<TypeTable type={{"review":{"description":"The changed bundle price.","type":"BundlePriceReview","required":true},"className":{"description":"Classes added to the notice.","type":"string","required":false}}} />

## `CartLockBannerProps` [#cartlockbannerprops]

Props of [`CartLockBanner`](/themes/sdk/reference/cart/parts#cartlockbanner).

<TypeTable type={{"className":{"description":"Classes added to the banner.","type":"string","required":false}}} />

## `RemoveBundlesButtonProps` [#removebundlesbuttonprops]

Props of [`RemoveBundlesButton`](/themes/sdk/reference/cart/parts#removebundlesbutton).

<TypeTable type={{"className":{"description":"Classes added to the row around the button.","type":"string","required":false}}} />
