{# SVG path data for nav icons, shared between desktop and mobile menus #} {% set icon_measure %}{% endset %} {% set icon_recipes %}{% endset %} {% set icon_stats %}{% endset %} {% set icon_users %}{% endset %} {% set icon_stations %}{% endset %} {% set icon_settings %}{% endset %} {# Single nav link, desktop or mobile variant. `icon` is SVG path markup. #} {% macro nav_link(href, label, icon, active=false, mobile=false) -%} {{ icon }} {{ label }} {%- endmacro %} {# Render all role-gated nav links for the current user #} {% macro nav_links(mobile=false) -%} {% set ep = request.endpoint or '' %} {% if current_user.get('roles') and 'MeasurementTec' in current_user.roles %} {{ nav_link(url_for('measure.select_recipe'), _('Misure'), icon_measure, ep.startswith('measure.'), mobile) }} {% endif %} {% if current_user.get('roles') and 'Maker' in current_user.roles %} {{ nav_link(url_for('maker.recipe_list'), _('Ricette'), icon_recipes, ep.startswith('maker.'), mobile) }} {% endif %} {% if current_user.get('roles') and 'Metrologist' in current_user.roles %} {{ nav_link(url_for('statistics.dashboard'), _('Statistiche'), icon_stats, ep.startswith('statistics.'), mobile) }} {% endif %} {% if current_user.get('is_admin') %} {{ nav_link(url_for('admin.user_list'), _('Utenti'), icon_users, ep == 'admin.user_list', mobile) }} {{ nav_link(url_for('admin.station_list'), _('Stazioni'), icon_stations, ep == 'admin.station_list', mobile) }} {{ nav_link(url_for('admin.settings_page'), _('Impostazioni'), icon_settings, ep == 'admin.settings_page', mobile) }} {% endif %} {%- endmacro %}