wn-silva-theme/partials/shared/header.htm

111 lines
7.1 KiB
HTML
Raw Normal View History

2024-10-09 16:36:58 +02:00
[staticMenu mainmenu]
2024-10-09 19:36:44 +02:00
code = "mainmenu"
2024-10-09 16:36:58 +02:00
==
function onEnd() {
$this['baseMenuTitle'] = config('app.name');
$this['activeMenuIndex'] = collect($this['menuItems'])->filter(fn ($entry) => ($entry->isChildActive || $entry->isActive) && count($entry->items))->keys()->first() ?? 'null';
$this['activeMenuTitle'] = collect($this['menuItems'])->filter(fn ($entry) => ($entry->isChildActive || $entry->isActive) && count($entry->items))->first()?->title ?: config('app.name');
}
==
2024-10-09 19:36:44 +02:00
<nav class="bg-sky-900 inactive group h-14 border-b-4 border-red-900" x-data="{ open: false, active: {{activeMenuIndex}}, maintitle: '{{activeMenuTitle}}' }" :class="{'active': open === true, 'inactive': open === false, 'issubmenu': active !== null}">
2024-10-09 16:36:58 +02:00
2024-10-09 19:36:44 +02:00
<div class="flex items-start fixed top-0 left-0 w-full h-full z-50 duration-300
group-[.active]:visible group-[.active]:bg-black/50
group-[.inactive]:bg-transparent group-[.inactive]:invisible
" @click.self="open = false">
<nav class="w-64 h-full relative overflow-y-auto overflow-x-hidden shadow-2xl bg-gray-900 duration-300 flex flex-col
group-[.inactive]:-left-64 group-[.active]:left-0
">
<div class="sticky top-0 z-10 bg-gray-800 text-white flex justify-between items-center h-16 px-4">
<a href="#" @click.prevent="active = null; maintitle='{{baseMenuTitle}}'" class="absolute -left-6 duration-300 group-[.issubmenu]:left-3">
{% partial 'ui/sprite' icon='chevron' class='w-4 h-4 text-blue-100 rotate-90 relative left-0 duration-200 relative' %}
</a>
<span class="duration-300 ml-0 font-semibold font-arvo text-blue-100 font-goudy text-2xl ml-0 group-[.issubmenu]:ml-6" x-text="maintitle"></span>
<a href="/">
<img class="w-8 h-auto" {{'logos/wappen.png' | resize('original', '128|1280:192|1536:256')}}>
</a>
</div>
<div class="pt-4 relative grow">
<div class="flex flex-col duration-300 relative right-0 group-[.issubmenu]:right-full">
{% for index, link in menuItems %}
<a href="{% if link.items | length %}#{% else %}{{link.url}}{% endif %}" {% if link.items | length %}@click.prevent="active = {{index}}; maintitle='{{link.title}}'"{% endif %} class="px-4 flex items-center justify-between group/sublink font-goudy text-blue-100 text-lg py-3 active:bg-gray-800 hover:bg-gray-800 duration-200">
<span>{{link.title}}</span>
{% if link.items | length %}
{% partial 'ui/sprite' icon='chevron' class='w-3 h-3 relative left-0 -rotate-90 text-blue-100 duration-200 group-hover/sublink:left-1 relative' %}
{% endif %}
</a>
{% endfor %}
2024-10-09 16:36:58 +02:00
</div>
2024-10-09 19:36:44 +02:00
{% for index, link in menuItems %}
<div class="overflow-x-hidden overflow-y-auto absolute pt-4 top-0 w-full h-full left-full duration-300" :class="{'left-full': active !== {{index}}, 'left-0': active === {{index}} }">
{% for sublink in link.items %}
<a href="{{sublink.url}}" class="px-4 flex items-center justify-between font-goudy text-blue-100 text-lg py-3 active:bg-gray-800 hover:bg-gray-800 duration-200 {% if sublink.isActive %} font-bold text-white {% endif %}">
{{sublink.title}}
2024-10-09 16:36:58 +02:00
</a>
2024-10-09 19:36:44 +02:00
<div class="ml-5 border-l border-gray-800">
{% for subsublink in sublink.items %}
<a href="{{subsublink.url}}" class="px-4 flex items-center justify-between text-blue-100 text-sm py-3 active:bg-gray-800 hover:bg-gray-800 duration-200 {% if subsublink.isActive %} font-bold text-white {% endif %}">
{{subsublink.title}}
</a>
{% endfor %}
</div>
2024-10-09 16:36:58 +02:00
{% endfor %}
</div>
2024-10-09 19:36:44 +02:00
{% endfor %}
</div>
</nav>
<a href="#" class="relative mt-3 ml-3 duration-300
group-[.inactive]:-left-64 group-[.inactive]:opacity-0 group-[.inactive]:invisible
group-[.active]:left-0 group-[.active]:opacity-100 group-[.active]:visible
" @click="open = false">
<svg class="w-6 h-6 text-white fill-current" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z" /></svg>
</a>
</div>
2024-10-09 16:36:58 +02:00
2024-10-09 19:36:44 +02:00
<div class="container items-center flex h-full [@media(min-width:900px)]:hidden">
<nav class="flex items-center justify-between h-12">
<a href="#" @click.prevent="open = true">
{% partial 'ui/sprite' icon='menu' class='w-5 h-5 fill-current text-blue-100' %}
2024-10-09 16:36:58 +02:00
</a>
2024-10-09 19:36:44 +02:00
</nav>
2024-10-09 16:36:58 +02:00
</div>
2024-10-09 19:36:44 +02:00
<div class="container hidden [@media(min-width:900px)]:flex justify-center relative z-50 space-x-3 h-full">
2024-10-09 16:36:58 +02:00
{% for item in menuItems %}
2024-10-09 19:36:44 +02:00
<div class="relative group/parent h-full">
<a class="h-full text-xl text-blue-100 hover:bg-sky-800 duration-200 flex items-center px-6"
2024-10-09 16:36:58 +02:00
href="{% if item.items | length > 0 %}#{% else %}{{ item.url }}{% endif %}" {% if item.viewBag.isExternal %} target="_BLANK" {% endif %}
>
{{ item.title }}
{% if item.items|length %}
2024-10-09 19:36:44 +02:00
{% partial 'ui/sprite' icon='chevron' class='w-3 h-3 ml-2 relative top-[0.15rem] text-blue-100 relative left-0 duration-200 relative' %}
2024-10-09 16:36:58 +02:00
{% endif %}
</a>
{% if item.items | length > 0 %}
2024-10-09 19:36:44 +02:00
<div class="absolute w-[250px] left-[50%] ml-[-125px] hidden group-hover/parent:block">
<svg preserveAspectRatio="none" viewBox="0 0 100 100" class="relative z-60 text-blue-50 mt-2 w-8 h-4 absolute left-1/2 -ml-4">
<path d="M0,100 L100,100 L50,0" fill="currentColor" />
</svg>
<div class="py-4 bg-blue-50 rounded-xl shadow-2xl">
{% for subitem in item.items %}
<a class="block px-6 duration-200 hover:bg-blue-200 py-2 text-neutral-800 text-center" href="{{ subitem.url }}">{{ subitem.title }}</a>
{% endfor %}
</div>
</div>
2024-10-09 16:36:58 +02:00
{% endif %}
</div>
{% endfor %}
</div>
</nav>
<div class="relative">
<img {{header_image | resize('header')}} class="h-64 object-cover lg:h-auto">
<div class="absolute w-full h-full top-0 left-0">
<div class="container flex justify-center md:justify-end items-center h-full">
<a href="/">
<img {{logo | resize('original', '128|1280:192|1536:256') }} class="w-32 xl:w-48 xxl:w-64 h-auto">
</a>
</div>
</div>
</div>