WIP Exorcise legacy css

This commit is contained in:
Björn Fromme
2021-07-29 17:34:17 +02:00
parent 573c240143
commit a66dbaf043
20 changed files with 341 additions and 143 deletions
+5
View File
@@ -7567,6 +7567,11 @@
}
}
},
"tailwindcss-multi-theme": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/tailwindcss-multi-theme/-/tailwindcss-multi-theme-1.0.4.tgz",
"integrity": "sha512-iwq4c039Urx6q2j9YDvGF5GmOs6vx5AMIQdscSIH9cPHmDhQE38eE7/4SeoZxB+6TY+xvZeLa/6UV9iRovoEuA=="
},
"tapable": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz",
+1
View File
@@ -30,6 +30,7 @@
"querystringify": "^2.2.0",
"slick-carousel": "^1.8.1",
"sticky-js": "^1.3.0",
"tailwindcss-multi-theme": "^1.0.4",
"vue": "^2.6.14",
"vue-router": "^3.5.2",
"vue-scrollto": "^2.20.0",
@@ -6,7 +6,7 @@ page {
}
bodyTagCObject = TEXT
bodyTagCObject.stdWrap.wrap = <body class="|">
bodyTagCObject.stdWrap.noTrimWrap = |<body class="antialiased text-gray-800 font-sans |">|
bodyTagCObject.stdWrap.field = tx_eptheme_bodyclass
bodyTagCObject.stdWrap.override = {$plugin.tx_eptheme.settings.defaultBodyclass}
bodyTagCObject.stdWrap.override.if.isFalse.field = tx_eptheme_bodyclass
@@ -117,6 +117,27 @@ page {
negate = 1
}
}
40 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
40 {
levels = 1
as = topnav
}
50 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
50 {
special = directory
special.value = {$plugin.tx_eptheme.settings.mainNavPid}
levels = 3
titleField = title
as = mainnav
}
60 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
60 {
special = directory
special.value = {$plugin.tx_eptheme.settings.mobileNavPid}
levels = 3
titleField = title
as = mobilenav
}
}
settings < plugin.tx_eptheme.settings
@@ -10,6 +10,8 @@
plugin.tx_eptheme {
settings {
# cat=eptheme/200/10; type=string; label=Theme key
themekey = ep
# cat=eptheme/200/100; type=string; label=Top navigation PID
topNavPid =
# cat=eptheme/200/110; type=string; label=Main navigation PID
@@ -29,6 +29,7 @@
plugin.tx_eptheme {
settings < lib.contentElement.settings
settings {
themekey = {$plugin.tx_eptheme.settings.themekey}
footerNavPid = {$plugin.tx_eptheme.settings.footerNavPid}
mainNavPid = {$plugin.tx_eptheme.settings.mainNavPid}
mobileNavPid = {$plugin.tx_eptheme.settings.mobileNavPid}
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-at" viewBox="0 0 640 480">
<g fill-rule="evenodd">
<path fill="#fff" d="M640 480H0V0h640z"/>
<path fill="#ed2939" d="M640 480H0V320h640zm0-319.9H0V.1h640z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 240 B

@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-ch" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#d52b1e" d="M0 0h640v480H0z"/>
<g fill="#fff">
<path d="M170 195h300v90H170z"/>
<path d="M275 90h90v300h-90z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 297 B

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-de" viewBox="0 0 640 480">
<path fill="#ffce00" d="M0 320h640v160H0z"/>
<path d="M0 0h640v160H0z"/>
<path fill="#d00" d="M0 160h640v160H0z"/>
</svg>

After

Width:  |  Height:  |  Size: 213 B

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-fr" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#00267f" d="M0 0h213.3v480H0z"/>
<path fill="#f31830" d="M426.7 0H640v480H426.7z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 292 B

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-gb" viewBox="0 0 640 480">
<path fill="#012169" d="M0 0h640v480H0z"/>
<path fill="#FFF" d="M75 0l244 181L562 0h78v62L400 241l240 178v61h-80L320 301 81 480H0v-60l239-178L0 64V0h75z"/>
<path fill="#C8102E" d="M424 281l216 159v40L369 281h55zm-184 20l6 35L54 480H0l240-179zM640 0v3L391 191l2-44L590 0h50zM0 0l239 176h-60L0 42V0z"/>
<path fill="#FFF" d="M241 0v480h160V0H241zM0 160v160h640V160H0z"/>
<path fill="#C8102E" d="M0 193v96h640v-96H0zM273 0v480h96V0h-96z"/>
</svg>

After

Width:  |  Height:  |  Size: 538 B

@@ -46,6 +46,13 @@ document.addEventListener('DOMContentLoaded', () => {
searchBox: false,
mobileNav: false,
modal: null,
toggleMobileNav() {
this.mobileNav = !this.mobileNav
console.log(this.mobileNav)
},
toggleSearchBox() {
this.searchBox = !this.searchBox
}
})
Alpine.store('watchlist', storedWatchlist)
Alpine.store('filterSettings', defaultFilterSettings)
@@ -24,7 +24,7 @@
@import "remix/base";
@import "remix/badges";
@import "remix/buttons";
@import "remix/area-nav";
//@import "remix/area-nav";
@import "remix/pagehead";
@import "remix/slider";
@import "remix/header";
@@ -59,7 +59,7 @@
@import "modal";
//components
@import "mainnavi";
//@import "mainnavi";
@import "footer";
@import "searchbar";
@import "searchbox";
@@ -85,6 +85,14 @@
}
@layer utilities {
.underlined {
@apply relative mb-4;
&:after {
content: "";
@apply absolute top-100 left-0 mt-2 mb-2 border-b-4 border-ep-primary-dark w-48;
}
}
.-translate-xy-1\/2 {
transform: translate(-50%, -50%);
}
@@ -5,9 +5,8 @@
<f:render partial="GoogleTagManager" arguments="{googleTagManagerId: settings.googleTagManagerId}"/>
<f:render partial="FacebookPixelCode"/>
<div id="app">
<f:render partial="Topnav" arguments="{_all}"/>
<f:render partial="Mainnav" section="Mainnav" arguments="{_all}"/>
<div class="lg:mt-16 theme-{settings.themekey}">
<f:render partial="Mainnav" section="Main" arguments="{_all}"/>
<f:render partial="HeaderSlider" arguments="{_all}"/>
<f:if condition="{data.tx_eptheme_hide_searchbar}">
<f:else>
@@ -18,5 +17,8 @@
<f:render partial="Footer" arguments="{_all}"/>
<f:render partial="ContactBar" arguments="{_all}"/>
</div>
<f:render partial="Topnav" arguments="{_all}"/>
<f:render partial="Mobilenav" arguments="{_all}"/>
<f:render partial="Config" arguments="{_all}" />
<f:render partial="Icons" arguments="{_all}"/>
</html>
@@ -2,7 +2,7 @@
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<div class="pagehead">
<div class="relative lg:mt-24">
<div class="splide slider slider--header" data-slider="header">
<div class="splide__track">
<ul class="splide__list">
@@ -1,7 +1,7 @@
{namespace v=FluidTYPO3\Vhs\ViewHelpers}
{slides -> v:iterator.first() -> v:variable.set(name: 'slide')}
<f:if condition="{slide}">
<div class="pagehead">
<div class="relative lg:mt-64">
<f:alias map="{image: slide.image.0}">
<div class="pagehead__image">
<picture class="w-full h-full">
@@ -0,0 +1,17 @@
<svg class="hidden">
<!-- Symbols -->
<symbol id="icon-menu" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></symbol>
<symbol id="icon-chevron-down" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></symbol>
<symbol id="icon-chevron-up" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 15l7-7 7 7"></path></symbol>
<symbol id="icon-home" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path></symbol>
<symbol id="icon-user" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"></path></symbol>
<symbol id="icon-search" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></symbol>
<symbol id="icon-close" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></symbol>
<symbol id="icon-heart" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"></path></symbol>
<!-- Flags -->
<symbol id="icon-flag-at" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 480"><g fill-rule="evenodd"><path fill="#fff" d="M640 480H0V0h640z"/><path fill="#ed2939" d="M640 480H0V320h640zm0-319.9H0V.1h640z"/></g></symbol>
<symbol id="icon-flag-ch" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 480"><g fill-rule="evenodd" stroke-width="1pt"><path fill="#d52b1e" d="M0 0h640v480H0z"/><g fill="#fff"><path d="M170 195h300v90H170z"/><path d="M275 90h90v300h-90z"/></g></g></symbol>
<symbol id="icon-flag-de" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 480"><path fill="#ffce00" d="M0 320h640v160H0z"/><path d="M0 0h640v160H0z"/><path fill="#d00" d="M0 160h640v160H0z"/></symbol>
<symbol id="icon-flag-fr" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 480"><g fill-rule="evenodd" stroke-width="1pt"><path fill="#fff" d="M0 0h640v480H0z"/><path fill="#00267f" d="M0 0h213.3v480H0z"/><path fill="#f31830" d="M426.7 0H640v480H426.7z"/></g></symbol>
<symbol id="icon-flag-gb" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 480"><path fill="#012169" d="M0 0h640v480H0z"/><path fill="#FFF" d="M75 0l244 181L562 0h78v62L400 241l240 178v61h-80L320 301 81 480H0v-60l239-178L0 64V0h75z"/><path fill="#C8102E" d="M424 281l216 159v40L369 281h55zm-184 20l6 35L54 480H0l240-179zM640 0v3L391 191l2-44L590 0h50zM0 0l239 176h-60L0 42V0z"/><path fill="#FFF" d="M241 0v480h160V0H241zM0 160v160h640V160H0z"/><path fill="#C8102E" d="M0 193v96h640v-96H0zM273 0v480h96V0h-96z"/></symbol>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

@@ -2,121 +2,130 @@
xmlns="http://www.w3.org/1999/xhtml"
xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers"
xmlns:ep="http://typo3.org/ns/EP/EpTheme/ViewHelpers" >
xmlns:ep="http://typo3.org/ns/EP/EpTheme/ViewHelpers">
<f:section name="Mainnav">
<div class="absolute top-0 left-0 w-full z-20 mt-12" x-data>
<div class="relative bg-white flex items-end justify-between py-2 px-4 md:max-w-screen-xl md:mx-auto shadow-lg">
<f:section name="Main">
<div class="relative lg:absolute lg:left-0 lg:top-0 lg:mt-8 w-full z-50">
<div class="lg:container px-4 py-4 shadow-lg bg-white">
<div class="relative flex items-end justify-between">
<a href="{f:uri.typolink(parameter: settings.defaultHomeUid)}" title="">
<img class="w-32 md:w-48 lg:w-56 h-auto" src="{f:uri.image(src: settings.logoImage)}" alt="{settings.defaultTitle}">
<img class="block h-10 lg:h-12 w-auto" src="{f:uri.image(src: settings.logoImage)}" alt="{settings.defaultTitle}">
</a>
<div class="hidden md:block">
<f:render section="FirstLevel" arguments="{navPid: settings.mainNavPid, mobile: 0}"/>
<div class="hidden lg:block">
<f:render section="FirstLevel" arguments="{_all}"/>
</div>
<div class="block md:hidden">
<f:render section="FirstLevel" arguments="{navPid: settings.mobileNavPid, mobile: 1}"/>
</div>
<div class="flex md:hidden items-center space-x-4">
<div class="flex lg:hidden items-center space-x-4" x-data>
<f:if condition="{data.tx_eptheme_hide_searchbar}">
<f:else>
<button x-on:click.prevent="$store.show.searchBox = !$store.show.searchBox" class="block md:hidden focus:outline-none text-black">
<svg class="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg>
<button x-on:click.prevent="$store.show.toggleSearchBox()" class="focus:outline-none text-gray-800">
<svg class="w-10 h-10 text-gray-800">
<use href="#icon-search"></use>
</svg>
</button>
</f:else>
</f:if>
<button x-on:click.prevent="$store.show.mobileNav = !$store.show.mobileNav" class="block md:hidden focus:outline-none text-black">
<svg class="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg>
<button x-on:click.prevent="$store.show.toggleMobileNav()" class="focus:outline-none text-gray-800">
<svg class="w-10 h-10 text-gray-800">
<use href="#icon-menu"></use>
</svg>
</button>
</div>
</div>
</div>
</div>
</f:section>
<f:section name="FirstLevel">
<div class="flex items-center justify-end space-x-4"{f:if(condition: mobile, then: ' x-show="$store.show.mobileNav" x-cloak')}>
<ul class="nav navbar-nav">
<v:menu pageUid="{navPid}" entryLevel="1" useShortcutUid="true">
<f:for each="{menu}" as="topitem" iteration="outerIteration">
<li class="dropdown">
<f:if condition="{topitem.hasSubPages}">
<nav role="menu">
<ul class="m-0 p-0 list-none flex items-center justify-end space-x-4">
<f:for each="{mainnav}" as="topitem">
<li class="group">
<f:if condition="{topitem.children}">
<f:then>
<a href="{f:uri.typolink(parameter: topitem.data.uid)}"
class="text-gray-800 uppercase lg:text-lg flex items-center"
title="{topitem.title}">
<span>{topitem.title}</span>
<svg class="ml-1 w-4 h-4 transform group-hover:rotate-180">
<use href="#icon-chevron-down"></use>
</svg>
</a>
<f:render section="SecondLevel" arguments="{topitem: topitem}"/>
</f:then>
<f:else>
<a href="{topitem.link}"{f:if(condition: '{topitem.doktype} == 3', then: ' target="_blank"')} title="{topitem.linktext}">{topitem.title}</a>
<a href="{topitem.link}"{f:if(condition: '{topitem.doktype} == 3', then: ' target="_blank"')} title="{topitem.title}">
{topitem.title}
</a>
</f:else>
</f:if>
</li>
</f:for>
</v:menu>
</ul>
<f:render section="QandA" arguments="{_all}"/>
</div>
</nav>
</f:section>
<f:section name="SecondLevel">
<a href="{f:uri.typolink(parameter: topitem.uid)}" data-target="#"
class="dropdown-toggle" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false"
title="{topitem.linktext}">{topitem.title}<span class="glyphicon glyphicon-chevron-down"></span></a>
<v:menu pageUid="{topitem.uid}" useShortcutUid="true">
<div>
<ul class="dropdown-menu">
<f:for each="{menu}" as="subitem" iteration="iteration">
<f:if condition="{iteration.cycle} == 5">
</ul>
<ul class="dropdown-menu">
</f:if>
<li class="col-md-{f:if(condition: '{menu -> f:count()} > 3', then: '3', else: '4')}">
<ul>
<li class="sectionhead">
<div class="absolute top-100 left-0 inset-x-0 pt-6 hidden group-hover:block">
<div class="bg-white grid grid-cols-3 lg:grid-cols-4 gap-8 py-4 px-4 shadow-lg">
<f:for each="{topitem.children}" as="subitem">
<ul class="m-0 p-0 list-none">
<li>
<f:if condition="{subitem.doktype} == 3">
<f:then>
<a href="{subitem.url}" target="_blank" title="{subitem.linktext}">
{f:if(condition: '{subitem.tx_eptheme_context_country_code}', then: '{f:image(src: \'{ep:flagiconSource(countryCode: subitem.tx_eptheme_context_country_code)}\', alt: subitem.tx_eptheme_context_country_code)}')}<span class="headline headline--4 headline--nav">{subitem.title}</span>
<a href="{subitem.link}" target="_blank" title="{subitem.title}">
<f:if condition="{subitem.data.tx_eptheme_context_country_code}">
<svg class="block w-8 h-6"><use href="#icon-flag-{subitem.data.tx_eptheme_context_country_code -> f:format.case(mode: 'lower')}"/></svg>
</f:if>
<span class="text-gray-800 uppercase lg:text-lg">
{subitem.title}
</span>
</a>
</f:then>
<f:else>
<a href="{f:uri.typolink(parameter: subitem.uid)}">
{f:if(condition: '{subitem.tx_eptheme_context_country_code}', then: '{f:image(src: \'{ep:flagiconSource(countryCode: subitem.tx_eptheme_context_country_code)}\', alt: subitem.tx_eptheme_context_country_code)}')}<span class="headline headline--4 headline--nav">{subitem.title}</span>
<a href="{f:uri.typolink(parameter: subitem.data.uid)}"
class="flex items-center space-x-2 underlined"
title="{subitem.title}">
<f:if condition="{subitem.data.tx_eptheme_context_country_code}">
<svg class="block w-8 h-6"><use href="#icon-flag-{subitem.data.tx_eptheme_context_country_code -> f:format.case(mode: 'lower')}"/></svg>
</f:if>
<span class="text-gray-800 uppercase lg:text-lg">
{subitem.title}
</span>
</a>
</f:else>
</f:if>
</li>
<f:render section="ThirdLevel" arguments="{subitem: subitem}"/>
</ul>
</li>
</f:for>
</ul>
</div>
</v:menu>
</div>
</f:section>
<f:section name="ThirdLevel">
<v:menu pageUid="{subitem.uid}" useShortcutUid="true">
<f:for each="{menu}" as="subsubitem">
<f:for each="{subitem.children}" as="subsubitem">
<f:if condition="{subsubitem.doktype} == 3">
<f:then>
<li><a href="{subsubitem.url}" target="_blank" title="{subsubitem.linktext}">{subsubitem.title}</a></li>
<li>
<a href="{subsubitem.link}"
class="text-gray-800 text-lg"
target="_blank"
title="{subsubitem.title}">
{subsubitem.title}
</a>
</li>
</f:then>
<f:else>
<li><a href="{f:uri.typolink(parameter: subsubitem.uid)}" title="{subsubitem.linktext}">{subsubitem.title}</a></li>
<li>
<a href="{f:uri.typolink(parameter: subsubitem.data.uid)}"
class="text-gray-800 text-lg"
title="{subsubitem.title}">
{subsubitem.title}
</a>
</li>
</f:else>
</f:if>
</f:for>
</v:menu>
</f:section>
<f:section name="QandA">
<div class="hidden-md hidden-lg">
<div>Du hast Fragen?</div>
<div>Wir können helfen!</div>
<a href="tel:{settings.phoneNumber -> v:format.pregReplace(pattern: '/[\-\s]/', replacement: '')}" class="btn btn-warning" rel="nofollow">Anrufen</a>
<a href="https://api.whatsapp.com/send?phone={settings.whatsAppNumberLink}" class="btn btn-warning" rel="nofollow" target="_blank">Whatsapp</a>
<f:if condition="{settings.faqPageUid}">
<a href="{f:uri.typolink(parameter: settings.faqPageUid)}" class="btn btn-warning">FAQ</a>
</f:if>
</div>
</f:section>
</html>
@@ -0,0 +1,70 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<div class="fixed lg:hidden top-0 left-0 inset-0 w-screen h-screen z-100 overflow-y-scroll bg-cover bg-gray-700"
x-data
x-cloak
x-show="$store.show.mobileNav"
x-transition.opacity>
<div class="relative bg-ep-primary">
<div class="fixed top-0 left-0 inset-x-0 px-8 py-2 flex justify-end bg-ep-primary">
<button class="focus:outline-none" x-on:click="$store.show.toggleMobileNav()">
<svg class="w-10 h-10 text-white">
<use href="#icon-close"></use>
</svg>
</button>
</div>
<ul class="m-0 px-0 pb-4 pt-12">
<f:for each="{topnav}" as="topitem">
<li class="py-2 px-8 hover:bg-ep-primary-light{f:if(condition: topitem.active, then: ' bg-ep-primary-light')}">
<a class="block text-xl text-white hover:text-white hover:text-white focus:text-white uppercase font-bold"
href="{topitem.link}"{f:if(condition: '{topitem.data.doktype} == 3', then: ' target="_blank"')}
title="{topitem.title}">
{topitem.title}
</a>
</li>
</f:for>
</ul>
</div>
<ul class="m-0 px-8 py-4 divide-y divide-overlay-white">
<f:for each="{mobilenav}" as="subitem">
<li class="py-2 pr-4" x-data="{ visible: false }">
<div class="flex items-center justify-between">
<a href="{subitemlink}"
class="uppercase text-xl text-white hover:text-white focus:text-white"
title="{subitem.title}">
{subitem.title}
</a>
<button class="focus:outline-none" x-on:click.prevent="visible = !visible">
<svg class="h-6 w-6 transform text-white" x-bind:class="visible && 'rotate-180'">
<use href="#icon-chevron-down"></use>
</svg>
</button>
</div>
<div x-show="visible" x-transition>
<f:for each="{subitem.children}" as="subsubitem">
<a href="{subsubitem.link}"{f:if(condition: '{subsubitem.data.doktype} == 3', then: ' _target="blank"')}
class="block text-lg leading-loose text-white hover:text-white focus:text-white"
title="{subsubitem.title}">
{subsubitem.title}
</a>
</f:for>
</div>
</li>
</f:for>
</ul>
<div class="px-8 py-4">
<div class="border-t-4 border-ep-primary mb-4"></div>
<p class="text-2xl text-white uppercase font-bold mb-1">Du hast Fragen?</p>
<p class="text-xl text-white uppercase mb-4">Wir können helfen!</p>
<a href="tel:{settings.phoneNumber -> v:format.pregReplace(pattern: '/[\-\s]/', replacement: '')}" class="btn btn--secondary block mb-1" rel="nofollow">Anrufen</a>
<a href="https://api.whatsapp.com/send?phone={settings.whatsAppNumberLink}" class="btn btn--secondary block mb-1" rel="nofollow" target="_blank">Whatsapp</a>
<f:if condition="{settings.faqPageUid}">
<a href="{f:uri.typolink(parameter: settings.faqPageUid)}" class="btn btn--secondary block">FAQ</a>
</f:if>
</div>
</div>
</html>
@@ -1,35 +1,27 @@
{namespace v=FluidTYPO3\Vhs\ViewHelpers}
{namespace ep=EP\EpTheme\ViewHelpers}
<div class="area-nav fixed top-0 left-0 z-50">
<div class="area-nav__inner" x-data="{ open: false }">
<f:spaceless>
<f:if condition="{settings.hideAreaNavigation}">
<f:if condition="{settings.hideAreaNavigation}">
<f:else>
<a class="area-nav__trigger area-nav__link" href="#" x-on:click.prevent="open = !open">
Bereich wechseln <i class="area-nav__trigger-icon fa fa-lg fa-caret-down"></i>
<div class="hidden lg:block w-full fixed top-0 inset-x-0 z-100 bg-cover bg-center" style="background-image: url({f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/polygon.jpg')})">
<div class="container px-0">
<nav role="navigation" class="flex justify-between m-0 p-0 w-full divide-x divide-gray-300 border-r border-l">
<f:link.typolink parameter="9" class="flex items-center justify-center w-16 h-8 text-white hover:text-white focus:text-white hover:bg-ep-secondary" title="E&amp;P">
<svg class="w-6 h-6"><use href="#icon-home"/></svg>
</f:link.typolink>
<f:for each="{topnav}" as="menuitem">
<a class="block flex flex-grow h-8 justify-center items-center uppercase leading-none text-white hover:text-white focus:text-white hover:bg-ep-secondary{f:if(condition: '{menuitem.active} or {menuitem.data.uid} == {settings.forceActiveTopnavUid}', then: ' bg-ep-secondary')}"
href="{menuitem.link}"{f:if(condition: '{menuitem.data.doktype} == 3', then: ' target="_blank"')}
title="{menuitem.title}">
{menuitem.title -> ep:topnavItem()}
</a>
<nav role="navigation">
<ul class="area-nav__list" x-bind:class="open && 'open'" x-show="open" x-transition x-cloak>
<v:menu levels="1" useShortcutUid="1" pageUid="{settings.topNavPid}">
<f:for each="{menu}" as="menuitem">
<li class="area-nav__list-item">
<a class="area-nav__link{f:if(condition: menuitem.active, then: ' active')}{f:if(condition: '{menuitem.uid} == {settings.forceActiveTopnavUid}', then: ' active')}"
href="{menuitem.link}"{f:if(condition: '{menuitem.doktype} == 3 || {menuitem.tx_eptheme_new_tab}', then: ' target="_blank"')}
title="{menuitem.linktext}">{menuitem.title -> ep:topnavItem()}</a>
</li>
</f:for>
</v:menu>
<f:if condition="{settings.myEpPageUid}">
<li class="area-nav__list-item area-nav__list-item--icon">
<f:link.typolink parameter="{settings.myEpPageUid}" class="area-nav__link" title="My E&P">
<i class="fa fa-user"></i><span class="hidden-md hidden-lg">&nbsp;My E&amp;P</span>
<f:link.typolink parameter="{settings.myEpPageUid}" class="flex items-center justify-center w-16 h-8 text-white hover:text-white focus:text-white hover:bg-ep-secondary" title="My E&P">
<svg class="w-6 h-6"><use href="#icon-user"/></svg>
</f:link.typolink>
</li>
</f:if>
</ul>
</nav>
</f:else>
</f:if>
</f:spaceless>
</div>
</div>
</div>
</f:else>
</f:if>
+30 -1
View File
@@ -1,3 +1,4 @@
const plugin = require('tailwindcss/plugin')
const tinycolor = require('tinycolor2')
module.exports = {
@@ -65,6 +66,7 @@ module.exports = {
}
},
}),
themeVariants: [ 'ep', 'sbw', 'snz', 'uch' ],
extend: {
colors: {
'overlay': {
@@ -75,6 +77,7 @@ module.exports = {
'primary': '#009fe3',
'secondary': '#f0bc44',
'primary-light': '#009fff',
'primary-dark': '#006db6',
'primary-10': tinycolor('#009fe3').setAlpha(0.1).toRgbString(),
'primary-80': tinycolor('#009fe3').setAlpha(0.8).toRgbString(),
},
@@ -109,8 +112,34 @@ module.exports = {
},
},
},
variants: {},
variants: {
display: ({ after }) => after(['group-hover']),
opacity: ({ after }) => after(['group-hover']),
rotate: ({ after }) => after(['group-hover']),
},
plugins: [
require('tailwindcss-multi-theme'),
require('@tailwindcss/custom-forms'),
plugin(function ({addVariant, e}) {
addVariant('subpage', ({modifySelectors, separator}) => {
modifySelectors(({className}) => {
return `.subpage .${e(`subpage${separator}${className}`)}`
})
})
}),
plugin(function ({addVariant, e}) {
addVariant('first-type', ({modifySelectors, separator}) => {
modifySelectors(({className}) => {
return `.${e(`first-type${separator}${className}`)}:first-of-type`
})
})
}),
plugin(function ({addVariant, e}) {
addVariant('last-type', ({modifySelectors, separator}) => {
modifySelectors(({className}) => {
return `.${e(`last-type${separator}${className}`)}:last-of-type`
})
})
}),
],
}