feat: implement multiple saved addresses with modal selector in checkout

- Add AddressController with full CRUD API for saved addresses
- Implement address management UI in My Account > Addresses
- Add modal-based address selector in checkout (Tokopedia-style)
- Hide checkout forms when saved address is selected
- Add search functionality in address modal
- Auto-select default addresses on page load
- Fix variable products to show 'Select Options' instead of 'Add to Cart'
- Add admin toggle for multiple addresses feature
- Clean up debug logs and fix TypeScript errors
This commit is contained in:
Dwindi Ramadhana
2025-12-26 01:16:11 +07:00
parent 9ac09582d2
commit 100f9cce55
27 changed files with 2492 additions and 205 deletions

View File

@@ -126,7 +126,7 @@ export default function Cart() {
<div className="flex items-center gap-2">
<button
onClick={() => handleUpdateQuantity(item.key, item.quantity - 1)}
className="p-1 hover:bg-gray-100 rounded"
className="font-[inherit] p-1 hover:bg-gray-100 rounded"
>
<Minus className="h-4 w-4" />
</button>
@@ -141,7 +141,7 @@ export default function Cart() {
/>
<button
onClick={() => handleUpdateQuantity(item.key, item.quantity + 1)}
className="p-1 hover:bg-gray-100 rounded"
className="font-[inherit] p-1 hover:bg-gray-100 rounded"
>
<Plus className="h-4 w-4" />
</button>
@@ -152,7 +152,7 @@ export default function Cart() {
<div className="flex flex-col items-end justify-between">
<button
onClick={() => handleRemoveItem(item.key)}
className="text-red-600 hover:text-red-700 p-2"
className="font-[inherit] text-red-600 hover:text-red-700 p-2"
>
<Trash2 className="h-5 w-5" />
</button>