A simple and flexible shopping cart library for your website. Cart.js provides a complete shopping cart solution with support for discounts, taxes, custom templates, and local storage persistence.
npm install @prappo/cart-jsimport Cart from '@prappo/cart-js';
// Initialize cart
const cart = new Cart();
// Add items
cart.addItem({
id: "item1",
amount: 10000, // Amount in cents
title: "Product Name",
quantity: 1
});
// Set template
cart.setTemplate(`
<div>
<items>
<item>
<div>
<h3>{{item.title}}</h3>
<p>Price: {{item.amount}}</p>
<QtMinusBtn>-</QtMinusBtn>
{{item.quantity}}
<QtPlusBtn>+</QtPlusBtn>
<RemoveBtn>Remove</RemoveBtn>
</div>
</item>
</items>
<div>Total: {{total}}</div>
<CheckoutBtn>
<button>Checkout</button>
</CheckoutBtn>
</div>
`);
// Initialize the cart with a container
cart.init('#cart-container');- π Easy to use shopping cart functionality
- π² Support for multiple currencies
- π·οΈ Discount management
- π° Tax calculation
- π± Responsive design
- π¨ Customizable template system
- πΎ Local storage persistence
const cart = new Cart();
cart.init('#container-selector');// Add item
cart.addItem({
id: string,
amount: number,
title: string,
quantity?: number,
image?: string,
currency?: string,
description?: string
});
// Remove item
cart.removeItem(itemId);
// Update quantity
cart.updateQuantity(itemId, quantity);
// Clear cart
cart.clearCart();// Add discount
cart.addDiscount({
value: number,
type: 'percentage' | 'fixed'
});
// Add tax
cart.addTax({
rate: number,
name: string
});cart.getItems(); // Get all items
cart.getSubtotal(); // Get subtotal
cart.getTotal(); // Get total with tax and discounts
cart.getTaxes(); // Get applied taxes
cart.getDiscounts(); // Get applied discountsThe template system uses special tags for dynamic content:
<items>- Container for item list<item>- Individual item template<QtPlusBtn>- Quantity increase button<QtMinusBtn>- Quantity decrease button<RemoveBtn>- Remove item button<CheckoutBtn>- Checkout button<CartEmpty>- Empty cart content
Available variables:
{{item.property}}- Item properties (id, title, amount, etc.){{subtotal}}- Cart subtotal{{total}}- Cart total{{tax}}- Total tax amount{{discount}}- Total discount amount
// Listen for checkout events
document.addEventListener('cart:checkout', (event) => {
const { items, total, subtotal, taxes, discounts } = event.detail;
// Handle checkout
});# Install dependencies
npm install
# Start development server
npm run dev
# Build library
npm run build:lib
# Build demo
npm run build:demo
# Build both library and demo
npm run build- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.