nav

Information

Folder
src/components/template-components/header/menu/nav

Files

Schema
Mocks
Template
// src/components/template-components/header/menu/nav/nav.twig

{%- if sections|length > 0 -%}
<nav class="HeaderMenuNav" aria-label="{{ label }}" itemscope itemtype="http://schema.org/SiteNavigationElement">
	<div class="HeaderMenuNav-inner">
		{%- for section in sections -%}
			<div class="HeaderMenuNav-section">
				{# Section title #}
				<div class="HeaderMenuNav-sectionTitle">
					{{ section.title }}
				</div>

				{# Section items #}
				{% if section.items %}
					<ul class="HeaderMenuNav-list HeaderMenuNav-list--{{ section.type|default('primary') }}">
						{%- for item in section.items -%}
							<li class="HeaderMenuNav-item {% if item.has_submenu %}HeaderMenuNav-item--accordion{% endif %}{% if item.is_button %} HeaderMenuNav-item--button{% endif %}">
								{% if item.is_button %}
									{# Render as ternary-style button with arrow #}
									<div class="HeaderMenuNav-buttonWrapper">
										{% include "@elements/button/button.twig" with {
											label: item.title,
											url: item.url,
											icon: "arrow-right",
											modifiers: ["ternary"],
											size: "small",
											target: item.external ? "_blank" : null
										} only %}
									</div>
								{% elseif item.has_submenu %}
									<button
										type="button"
										class="HeaderMenuNav-entry HeaderMenuNav-entry--button HeaderMenuNav-entry--{{ section.type|default('primary') }} js-HeaderMenuAccordion"
										aria-expanded="{{ item.expanded|default(false) ? 'true' : 'false' }}"
									>
										<span class="HeaderMenuNav-entryText" itemprop="name">
											{{ item.title }}
										</span>
										<span class="HeaderMenuNav-icon HeaderMenuNav-icon--accordion">
											{% include "@elements/icon/icon.twig" with {
												name: "caret-down"
											} only %}
										</span>
									</button>
									{% if item.submenu %}
										<div class="HeaderMenuNav-submenu {% if item.expanded|default(false) %}HeaderMenuNav-submenu--expanded{% endif %}">
											<ul class="HeaderMenuNav-submenuList">
												{%- for subitem in item.submenu -%}
													<li class="HeaderMenuNav-submenuItem">
														<a
															class="HeaderMenuNav-submenuLink"
															href="{{ subitem.url }}"
															itemprop="url"
															{% if subitem.external %}target="_blank" rel="noopener noreferrer"{% endif %}
														>
															{{ subitem.title }}
															{% if subitem.external %}
																<span class="HeaderMenuNav-icon">
																	{% include "@elements/icon/icon.twig" with {
																		name: "external-link"
																	} only %}
																</span>
															{% endif %}
														</a>
													</li>
												{%- endfor -%}
											</ul>
										</div>
									{% endif %}
								{% else %}
									<a
										class="HeaderMenuNav-entry HeaderMenuNav-entry--link HeaderMenuNav-entry--{{ section.type|default('primary') }}"
										href="{{ item.url }}"
										itemprop="url"
										{% if item.external %}target="_blank" rel="noopener noreferrer"{% endif %}
									>
										<span class="HeaderMenuNav-entryText" itemprop="name">
											{{ item.title }}
										</span>
										{% if item.external %}
											<span class="HeaderMenuNav-icon">
												{% include "@elements/icon/icon.twig" with {
													name: "external-link"
												} only %}
											</span>
										{% endif %}
									</a>
								{% endif %}
							</li>
						{%- endfor -%}
					</ul>
				{% endif %}

				{# Section link button #}
				{% if section.link %}
					<div class="HeaderMenuNav-sectionLink">
						{% include "@elements/button/button.twig" with {
							label: section.link.label,
							url: section.link.url,
							icon: "arrow-right",
							modifiers: ["ternary"],
			size: "small"
						} only %}
					</div>
				{% endif %}
			</div>

			{# Divider between sections (except after last section) #}
			{% if not loop.last and (section.title == 'Rechtsgebiete' or section.title == 'Themen') %}
				<div class="HeaderMenuNav-divider">
					<hr class="HeaderMenuNav-dividerLine" />
				</div>
			{% endif %}
		{%- endfor -%}
	</div>
</nav>
{%- endif -%}

Error: schema is invalid: data/properties must be object

Variants

default
Open

default mock data

Raw
Resolved