{# Category Navigation Components ============================== Category browsing sidebar and menu for shop navigation. Usage: {% from 'shared/macros/storefront/category-nav.html' import category_nav, category_tree, category_menu %} #} {# Category Navigation =================== Sidebar category navigation with nested categories. Parameters: - categories_var: Alpine.js expression for categories array (default: 'categories') - current_var: Alpine.js expression for current category (default: 'currentCategory') - show_count: Show product counts (default: true) - collapsible: Make nested categories collapsible (default: true) - max_depth: Maximum nesting depth to show (default: 3) Expected category object: { id: 1, name: 'Electronics', slug: 'electronics', url: '/category/electronics', product_count: 150, children: [...] } Usage: {{ category_nav(categories_var='categories', show_count=true) }} #} {% macro category_nav( categories_var='categories', current_var='currentCategory', show_count=true, collapsible=true, max_depth=3 ) %} {% endmacro %} {# Internal: Category Item (recursive) #} {% macro _category_item(current_var, show_count, collapsible, depth, max_depth) %}
{# Category Link #} {% if show_count %} {% endif %} {# Expand/Collapse Button #} {% if collapsible %} {% endif %}
{# Nested Categories #} {% if depth < max_depth - 1 %}
{% endif %}
{% endmacro %} {# Category Tree (Flat List) ========================= Simple flat list of categories without nesting. Parameters: - categories_var: Alpine.js expression for categories - current_var: Alpine.js expression for current category - show_count: Show product counts (default: true) - layout: 'vertical' | 'horizontal' (default: 'vertical') Usage: {{ category_tree(categories_var='topCategories', layout='horizontal') }} #} {% macro category_tree( categories_var='categories', current_var='currentCategory', show_count=true, layout='vertical' ) %} {% endmacro %} {# Category Menu (Dropdown/Mega Menu) ================================== Horizontal category menu for header navigation. Parameters: - categories_var: Alpine.js expression for categories - show_all_link: Show "All Categories" link (default: true) - all_link_url: URL for all categories (default: '/categories') Usage: {{ category_menu(categories_var='mainCategories') }} #} {% macro category_menu( categories_var='categories', show_all_link=true, all_link_url='/categories' ) %} {% endmacro %} {# Mobile Category Drawer ====================== Full-screen category navigation for mobile devices. Parameters: - categories_var: Alpine.js expression for categories - show_var: Alpine.js variable for drawer visibility (default: 'showCategoryDrawer') Usage: {{ category_drawer(categories_var='categories', show_var='showCategoryDrawer') }} #} {% macro category_drawer( categories_var='categories', show_var='showCategoryDrawer' ) %} {% endmacro %}