diff --git a/app/modules/cart/definition.py b/app/modules/cart/definition.py index 13261e89..4c0d668f 100644 --- a/app/modules/cart/definition.py +++ b/app/modules/cart/definition.py @@ -6,7 +6,13 @@ This module provides shopping cart functionality for customer storefronts. It is session-based and does not require customer authentication. """ -from app.modules.base import ModuleDefinition, PermissionDefinition +from app.modules.base import ( + MenuItemDefinition, + MenuSectionDefinition, + ModuleDefinition, + PermissionDefinition, +) +from app.modules.enums import FrontendType # ============================================================================= # Router Lazy Imports @@ -53,7 +59,24 @@ cart_module = ModuleDefinition( ), ], # Cart is storefront-only - no admin/store menus needed - menu_items={}, + menus={ + FrontendType.STOREFRONT: [ + MenuSectionDefinition( + id="actions", + label_key=None, + order=10, + items=[ + MenuItemDefinition( + id="cart", + label_key="storefront.actions.cart", + icon="shopping-cart", + route="storefront/cart", + order=20, + ), + ], + ), + ], + }, ) diff --git a/app/modules/cart/templates/cart/storefront/cart.html b/app/modules/cart/templates/cart/storefront/cart.html index 11779574..b35a3a26 100644 --- a/app/modules/cart/templates/cart/storefront/cart.html +++ b/app/modules/cart/templates/cart/storefront/cart.html @@ -13,7 +13,7 @@ @@ -39,7 +39,7 @@

Add some products to get started!

- + Browse Products @@ -55,8 +55,8 @@ {# Item Image #}
@@ -153,7 +153,7 @@ Proceed to Checkout - + Continue Shopping @@ -218,7 +218,7 @@ document.addEventListener('alpine:init', () => { try { console.log(`[SHOP] Loading cart for session ${this.sessionId}...`); - const response = await fetch(`/api/v1/shop/cart/${this.sessionId}`); + const response = await fetch(`/api/v1/storefront/cart/${this.sessionId}`); if (response.ok) { const data = await response.json(); @@ -245,7 +245,7 @@ document.addEventListener('alpine:init', () => { try { console.log('[SHOP] Updating quantity:', productId, newQuantity); const response = await fetch( - `/api/v1/shop/cart/${this.sessionId}/items/${productId}`, + `/api/v1/storefront/cart/${this.sessionId}/items/${productId}`, { method: 'PUT', headers: { @@ -280,7 +280,7 @@ document.addEventListener('alpine:init', () => { try { console.log('[SHOP] Removing item:', productId); const response = await fetch( - `/api/v1/shop/cart/${this.sessionId}/items/${productId}`, + `/api/v1/storefront/cart/${this.sessionId}/items/${productId}`, { method: 'DELETE' } @@ -307,9 +307,9 @@ document.addEventListener('alpine:init', () => { if (!token) { // Redirect to login with return URL - window.location.href = '{{ base_url }}shop/account/login?return={{ base_url }}shop/checkout'; + window.location.href = '{{ base_url }}storefront/account/login?return={{ base_url }}storefront/checkout'; } else { - window.location.href = '{{ base_url }}shop/checkout'; + window.location.href = '{{ base_url }}storefront/checkout'; } } }; diff --git a/app/modules/catalog/definition.py b/app/modules/catalog/definition.py index b7dc0618..b5431954 100644 --- a/app/modules/catalog/definition.py +++ b/app/modules/catalog/definition.py @@ -125,6 +125,36 @@ catalog_module = ModuleDefinition( ], ), ], + FrontendType.STOREFRONT: [ + MenuSectionDefinition( + id="nav", + label_key=None, + order=10, + items=[ + MenuItemDefinition( + id="products", + label_key="storefront.nav.products", + icon="shopping-bag", + route="storefront/products", + order=10, + ), + ], + ), + MenuSectionDefinition( + id="actions", + label_key=None, + order=10, + items=[ + MenuItemDefinition( + id="search", + label_key="storefront.actions.search", + icon="search", + route="", + order=10, + ), + ], + ), + ], }, # Metrics provider for dashboard statistics metrics_provider=_get_metrics_provider, diff --git a/app/modules/catalog/templates/catalog/storefront/category.html b/app/modules/catalog/templates/catalog/storefront/category.html index 25fd85a6..cad1237f 100644 --- a/app/modules/catalog/templates/catalog/storefront/category.html +++ b/app/modules/catalog/templates/catalog/storefront/category.html @@ -13,7 +13,7 @@ @@ -61,14 +61,14 @@