react-use-cart
Version:
React hook library for managing cart state.
73 lines (72 loc) • 2.11 kB
TypeScript
import * as React from "react";
export interface Item {
id: string;
price: number;
quantity?: number;
itemTotal?: number;
[key: string]: any;
}
export interface InitialState {
id: string;
items: Item[];
isEmpty: boolean;
totalItems: number;
totalUniqueItems: number;
cartTotal: number;
metadata?: Metadata;
}
export interface Metadata {
[key: string]: any;
}
export interface CartProviderState extends InitialState {
addItem: (item: Item, quantity?: number) => void;
removeItem: (id: Item["id"]) => void;
updateItem: (id: Item["id"], payload: object) => void;
setItems: (items: Item[]) => void;
updateItemQuantity: (id: Item["id"], quantity: number) => void;
emptyCart: () => void;
getItem: (id: Item["id"]) => any | undefined;
inCart: (id: Item["id"]) => boolean;
clearCartMetadata: () => void;
setCartMetadata: (metadata: Metadata) => void;
updateCartMetadata: (metadata: Metadata) => void;
}
export declare type Actions = {
type: "SET_ITEMS";
payload: Item[];
} | {
type: "ADD_ITEM";
payload: Item;
} | {
type: "REMOVE_ITEM";
id: Item["id"];
} | {
type: "UPDATE_ITEM";
id: Item["id"];
payload: object;
} | {
type: "EMPTY_CART";
} | {
type: "CLEAR_CART_META";
} | {
type: "SET_CART_META";
payload: Metadata;
} | {
type: "UPDATE_CART_META";
payload: Metadata;
};
export declare const initialState: any;
export declare const createCartIdentifier: (len?: number) => string;
export declare const useCart: () => CartProviderState;
export declare const CartProvider: React.FC<{
children?: React.ReactNode;
id?: string;
defaultItems?: Item[];
onSetItems?: (items: Item[]) => void;
onItemAdd?: (payload: Item) => void;
onItemUpdate?: (payload: object) => void;
onItemRemove?: (id: Item["id"]) => void;
onEmptyCart?: () => void;
storage?: (key: string, initialValue: string) => [string, (value: Function | string) => void];
metadata?: Metadata;
}>;