@leuffen/themejs1 7.0.1 → 7.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_tpl/_root/.schiller-context.txt +4 -0
- package/_tpl/_root/docs/_includes/el/address.html +2 -0
- package/_tpl/_root/docs/_layouts/legal/impressum.html +1 -1
- package/_tpl/_root/package.json +1 -12
- package/_tpl/_root/src/_variables.scss +2 -2
- package/_tpl/pages/hausarzt-index-singleleistung.de.md +13 -5
- package/_tpl/pages/hausarzt-index.de.md +7 -4
- package/_tpl/pages/index-singlepage-frauenarzt.de.md +10 -4
- package/_tpl/pages/index.de.md +8 -4
- package/_tpl/service/online-anmeldung.de.md +49 -0
- package/_tpl/service/online-videosprechstunde.de.md +55 -0
- package/_variables.scss +3 -0
- package/dist/elements/button-group/button-group.d.ts +1 -0
- package/dist/elements/button-group/button-group.js +8 -0
- package/dist/elements/elements.d.ts +2 -0
- package/dist/elements/elements.js +2 -0
- package/dist/elements/hero-slide/hero-slide.d.ts +1 -0
- package/dist/elements/hero-slide/hero-slide.js +15 -0
- package/dist/sections/hero-max/hero-max.js +1 -7
- package/dist/sections/navbar-centerlogo/navbar-centerlogo.js +42 -21
- package/dist/sections/sec-card-2col/sec-card-2col.js +2 -1
- package/elements/_text-format.scss +3 -0
- package/elements/button-group/button-group.scss +31 -0
- package/elements/button-group/button-group.ts +10 -0
- package/elements/elements.scss +3 -0
- package/elements/elements.ts +2 -0
- package/elements/hero-slide/hero-slide.scss +44 -0
- package/elements/hero-slide/hero-slide.ts +21 -0
- package/package.json +10 -8
- package/sections/_defaults.scss +4 -1
- package/sections/hero-max/hero-max.scss +7 -17
- package/sections/hero-max/hero-max.ts +1 -7
- package/sections/navbar-centerlogo/_burger-menu.scss +3 -1
- package/sections/navbar-centerlogo/_sidebar.scss +80 -0
- package/sections/navbar-centerlogo/navbar-centerlogo.scss +89 -115
- package/sections/navbar-centerlogo/navbar-centerlogo.ts +46 -21
- package/sections/sec-card-2col/sec-card-2col.scss +28 -0
- package/sections/sec-card-2col/sec-card-2col.ts +2 -1
- package/sections/sec-testimonial-ribbon/sec-testimonial-ribbon.scss +6 -3
- package/themes/theme1/index.scss +1 -1
- package/themes/theme2/index.scss +1 -1
|
@@ -77,3 +77,7 @@ Für HNO-Ärzte:
|
|
|
77
77
|

|
|
78
78
|

|
|
79
79
|

|
|
80
|
+
|
|
81
|
+
Für Hebammen und Frauenärzte:
|
|
82
|
+

|
|
83
|
+

|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
{%- if site.data.general.name2 != null -%}{{site.data.general.name2}}<br>{%- endif -%}
|
|
3
3
|
{{ site.data.general.street }} <br>
|
|
4
4
|
{{ site.data.general.zip }} {{ site.data.general.city }}<br><br>
|
|
5
|
+
{%- if site.data.general.phone1_text != null -%}
|
|
5
6
|
<span>{% include do/trans.html val="Telefon" %}:</span> <b><a href="tel:{{site.data.general.phone1}}" title="Telefon" class="text-decoration-none">{{site.data.general.phone1_text}}</a></b><br>
|
|
7
|
+
{%- endif -%}
|
|
6
8
|
{%- if site.data.general.fax1_text != null -%}
|
|
7
9
|
<span>{% include do/trans.html val="Telefax" %}:</span> <b>{{site.data.general.fax1_text}}</b><br>
|
|
8
10
|
{%- endif -%}
|
|
@@ -12,7 +12,7 @@ layout: legal
|
|
|
12
12
|
{%- endif -%}
|
|
13
13
|
{{site.data.general.street}}<br>
|
|
14
14
|
{{site.data.general.zip}} {{site.data.general.city}}<br><br>
|
|
15
|
-
<span class="fw-bold">
|
|
15
|
+
<span class="fw-bold">Kontakt:</span><br>
|
|
16
16
|
Telefon: <a href="tel:{{site.data.general.phone1}}">{{site.data.general.phone1_text}}</a><br>
|
|
17
17
|
{% if site.data.general.fax1_text %}
|
|
18
18
|
Telefax: {{site.data.general.fax1_text}}<br>
|
package/_tpl/_root/package.json
CHANGED
|
@@ -9,19 +9,8 @@
|
|
|
9
9
|
],
|
|
10
10
|
"author": "",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@leuffen/themejs1": "^
|
|
12
|
+
"@leuffen/themejs1": "^7.0.1"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"css-loader": "^6.7.1",
|
|
16
|
-
"dart-sass": "^1.25.0",
|
|
17
|
-
"esbuild-loader": "^2.20.0",
|
|
18
|
-
"mini-css-extract-plugin": "^2.6.1",
|
|
19
|
-
"raw-loader": "^4.0.2",
|
|
20
|
-
"sass": "^1.56.1",
|
|
21
|
-
"sass-loader": "^13.0.2",
|
|
22
|
-
"style-loader": "^3.3.1",
|
|
23
|
-
"webpack": "^5.75.0",
|
|
24
|
-
"webpack-cli": "^5.0.1",
|
|
25
|
-
"webpack-dev-server": "^4.11.1"
|
|
26
15
|
}
|
|
27
16
|
}
|
|
@@ -19,15 +19,23 @@ body_class: ~
|
|
|
19
19
|
title: ~
|
|
20
20
|
type: website
|
|
21
21
|
---
|
|
22
|
-
|
|
23
|
-
{: layout="use: #hero-max;
|
|
22
|
+
---
|
|
23
|
+
{: layout="use: #hero-max;"}
|
|
24
24
|
|
|
25
25
|

|
|
26
26
|
{: .background}
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
# Augenarzt<br>Prof. Dr. Daniel Salchow
|
|
29
|
+
{: .section-h3 layout="use: #hero-slide; align-self: self-end; justify-self: left; x-adjust: 0%; y-adjust: 0% " .sec-box .sec-slide}
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
{: .section-h4 layout="use: #button-group"}
|
|
33
|
+
[[i class="bi bi-house-add-fill fs-3"]<br>Jetzt als **neuer Patient** anmelden](/online-anmeldung){: .btn .btn-primary}
|
|
34
|
+
[[i class="bi bi-calendar-plus-fill fs-3"]<br>Jetzt **Termin** vereinbaren](/termin){: .btn .btn-primary .text-center}
|
|
35
|
+
|
|
36
|
+
[[i class="bi bi-card-heading fs-3"]<br>**Rezept** online anfragen](/online-rezept){: .btn .btn-primary .text-center }
|
|
37
|
+
[[i class="bi bi-box-arrow-up-right fs-3"]<br>**Überweisung** an Facharzt](/online-ueberweisung){: .btn .btn-primary .text-center}
|
|
38
|
+
[[i class="bi bi-camera-video-fill fs-3"]<br>**Videosprechstunde**](/online-videosprechstunde){: .btn .btn-primary .text-center}
|
|
31
39
|
|
|
32
40
|
|
|
33
41
|
|
|
@@ -16,13 +16,16 @@ body_class: ~
|
|
|
16
16
|
title: ~
|
|
17
17
|
type: website
|
|
18
18
|
---
|
|
19
|
-
|
|
20
|
-
{: layout="use: #hero-max;
|
|
19
|
+
---
|
|
20
|
+
{: layout="use: #hero-max;"}
|
|
21
21
|
|
|
22
|
-

|
|
23
23
|
{: .background}
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
# Augenarzt<br>Prof. Dr. Daniel Salchow
|
|
26
|
+
{: .section-h3 layout="use: #hero-slide; align-self: self-end; justify-self: left; x-adjust: 0%; y-adjust: 0% " .sec-box .sec-slide}
|
|
27
|
+
|
|
28
|
+
[[i class="bi bi-calendar-plus-fill fs-3"]<br>Jetzt Termin vereinbaren](/termin){: .btn .btn-primary .text-center .btn-lg .m-1 style="width:30%;min-width: 100px;;hyphens: none;" target="_blank"}
|
|
26
29
|
[[i class="bi bi-card-heading fs-3"]<br>Rezept online anfragen](/online-rezept){: .btn .btn-primary .text-center .btn-lg .m-1 style="width:30%;min-width: 100px;hyphens: none;"}
|
|
27
30
|
[[i class="bi bi-box-arrow-up-right fs-3"]<br>Überweisung an Facharzt](/online-ueberweisung){: .btn .btn-primary .text-center .btn-lg .m-1 style="width:30%;min-width: 100px;hyphens: none;"}
|
|
28
31
|
|
|
@@ -18,13 +18,19 @@ _schiller_instructions: Ändere die Texte und Bilder. Füge am Ende die CTA ein.
|
|
|
18
18
|
_schiller_template: pages/index
|
|
19
19
|
image: ""
|
|
20
20
|
---
|
|
21
|
-
|
|
22
|
-
{: layout="use: #hero-max;
|
|
21
|
+
---
|
|
22
|
+
{: layout="use: #hero-max;"}
|
|
23
23
|
|
|
24
|
-

|
|
25
25
|
{: .background}
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
# Augenarzt<br>Prof. Dr. Daniel Salchow
|
|
28
|
+
{: .section-h3 layout="use: #hero-slide; align-self: self-end; justify-self: left; x-adjust: 0%; y-adjust: 0% " .sec-box .sec-slide}
|
|
29
|
+
|
|
30
|
+
[[i class="bi bi-calendar-plus-fill fs-3"]<br>Jetzt Termin vereinbaren](/termin){: .btn .btn-primary .text-center .btn-lg .m-1 style="width:30%;min-width: 100px;;hyphens: none;" target="_blank"}
|
|
31
|
+
[[i class="bi bi-card-heading fs-3"]<br>Rezept online anfragen](/online-rezept){: .btn .btn-primary .text-center .btn-lg .m-1 style="width:30%;min-width: 100px;hyphens: none;"}
|
|
32
|
+
[[i class="bi bi-box-arrow-up-right fs-3"]<br>Überweisung an Facharzt](/online-ueberweisung){: .btn .btn-primary .text-center .btn-lg .m-1 style="width:30%;min-width: 100px;hyphens: none;"}
|
|
33
|
+
|
|
28
34
|
|
|
29
35
|
|
|
30
36
|
## Headerbar
|
package/_tpl/pages/index.de.md
CHANGED
|
@@ -15,18 +15,22 @@ short_title: Home
|
|
|
15
15
|
_schiller_instructions: "Ändere die Texte und Bilder. Füge am Ende die CTA ein. Gehe auf die im Context genannten Informationen ein. Entferne Links zu nicht vorhandenen Seiten."
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
{: layout="use: #hero-max;
|
|
18
|
+
---
|
|
19
|
+
{: layout="use: #hero-max;"}
|
|
20
20
|
|
|
21
|
-

|
|
22
22
|
{: .background}
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
# Augenarzt<br>Prof. Dr. Daniel Salchow
|
|
25
|
+
{: .section-h3 layout="use: #hero-slide; align-self: self-end; justify-self: left; x-adjust: 0%; y-adjust: 0% " .sec-box .sec-slide}
|
|
26
|
+
|
|
27
|
+
[[i class="bi bi-calendar-plus-fill fs-3"]<br>Jetzt Termin vereinbaren](/termin){: .btn .btn-primary .text-center .btn-lg .m-1 style="width:30%;min-width: 100px;;hyphens: none;" target="_blank"}
|
|
25
28
|
[[i class="bi bi-card-heading fs-3"]<br>Rezept online anfragen](/online-rezept){: .btn .btn-primary .text-center .btn-lg .m-1 style="width:30%;min-width: 100px;hyphens: none;"}
|
|
26
29
|
[[i class="bi bi-box-arrow-up-right fs-3"]<br>Überweisung an Facharzt](/online-ueberweisung){: .btn .btn-primary .text-center .btn-lg .m-1 style="width:30%;min-width: 100px;hyphens: none;"}
|
|
27
30
|
|
|
28
31
|
|
|
29
32
|
|
|
33
|
+
|
|
30
34
|
## Headerbar
|
|
31
35
|
{: layout="use: #hero-ribbon"}
|
|
32
36
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: ""
|
|
3
|
+
icon: bi bi-phone
|
|
4
|
+
image: ~
|
|
5
|
+
lang: de
|
|
6
|
+
layout: article
|
|
7
|
+
order: 71
|
|
8
|
+
permalink: /online-anmeldung
|
|
9
|
+
pid: service/online-anmeldung
|
|
10
|
+
ptags: ~
|
|
11
|
+
published: true
|
|
12
|
+
skipHead: false
|
|
13
|
+
body_class: ~
|
|
14
|
+
title: Online Anmeldung
|
|
15
|
+
type: article
|
|
16
|
+
_schiller_template: service/online-termin
|
|
17
|
+
_schiller_instructions: ""
|
|
18
|
+
---
|
|
19
|
+
## Anmeldung für Patienten
|
|
20
|
+
{: layout="use: #sec-card-2col"}
|
|
21
|
+
|
|
22
|
+
> Jetzt als Patient anmelden
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
Wir freuen uns sehr über Ihr Interesse an unserer Praxis. Da wir noch dabei sind, die letzten Vorbereitungen für unsere Eröffnung zu treffen, bieten wir Ihnen die Möglichkeit, sich vorab zu registrieren. Sobald unsere Praxis eröffnet ist, werden wir uns umgehend bei Ihnen melden, um einen Termin zu vereinbaren.
|
|
26
|
+
|
|
27
|
+
Bitte füllen Sie das untenstehende Formular mit Ihren persönlichen Daten aus. Ihre Daten werden selbstverständlich vertraulich behandelt und nur für interne Zwecke verwendet.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
{: layout="use: #e-form" .aside .mt-5}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
[input type="text" name="Name*" required .mb-3]
|
|
35
|
+
[input type="date" name="Geburtsdatum*" required .mb-3]
|
|
36
|
+
[input type="email" name="E-Mail*" required .mb-3]
|
|
37
|
+
[input type="tel" name="Telefon*" required .mb-3]
|
|
38
|
+
[input type="text" name="Krankenkasse (optional)" .mb-3]
|
|
39
|
+
[input type="text" name="Versicherungsnummer (optional)" .mb-3]
|
|
40
|
+
[textarea name="Ihre Nachricht (optional)" .mb-3 style="height: 120px;"]
|
|
41
|
+
[input type="checkbox" name="Datenschutz" label="Ich akzeptiere die Datenschutzbestimmungen" required .mb-3]
|
|
42
|
+
[input type="submit" value="Absenden" .btn .btn-primary .btn-lg .mt-3]
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## Erfahren Sie mehr über uns
|
|
47
|
+
{: layout="use: #cta-base"}
|
|
48
|
+
|
|
49
|
+
[Unsere Untersuchungen](/leistungen/untersuchungen.de.html) [Über Uns](/ueber-uns) [Kontakt](/kontakt)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: ""
|
|
3
|
+
icon: bi bi-phone
|
|
4
|
+
image: ~
|
|
5
|
+
lang: de
|
|
6
|
+
layout: article
|
|
7
|
+
order: 71
|
|
8
|
+
permalink: /online-videosprechstunde
|
|
9
|
+
pid: service/online-videosprechstunde
|
|
10
|
+
ptags: ~
|
|
11
|
+
published: true
|
|
12
|
+
skipHead: false
|
|
13
|
+
body_class: ~
|
|
14
|
+
title: Videosprechstunde
|
|
15
|
+
type: article
|
|
16
|
+
_schiller_template: service/online-videosprechstunde
|
|
17
|
+
_schiller_instructions: ""
|
|
18
|
+
---
|
|
19
|
+
## Videosprechstunde
|
|
20
|
+
{: layout="use: #sec-card-2col; mobile_reverse: yes "}
|
|
21
|
+
|
|
22
|
+
> Bequem von zu Hause aus mit Ihrem Arzt sprechen!
|
|
23
|
+
|
|
24
|
+
**Die Videosprechstunde ist nur für Patienten verfügbar, die bereits in unserer Praxis bekannt sind.**
|
|
25
|
+
|
|
26
|
+
So funktioniert's:
|
|
27
|
+
|
|
28
|
+
1. **Terminvereinbarung:** Nutzen Sie das nebenstehende Formular, um einen Termin für Ihre Videosprechstunde zu vereinbaren. Wählen Sie einfach das Datum und die Uhrzeit, die Ihnen am besten passen.
|
|
29
|
+
2. **Bestätigung & Link:** Nach der Terminvereinbarung erhalten Sie eine Bestätigungs-E-Mail mit allen notwendigen Details sowie einem Link zur Videosprechstunde. Bitte bewahren Sie diese E-Mail sicher auf, da Sie den Link zum vereinbarten Termin benötigen.
|
|
30
|
+
3. **Technische Vorbereitung:** Sollten Sie Fragen zur technischen Einrichtung haben oder Unterstützung benötigen, steht Ihnen unser Team gerne zur Verfügung. Klicken Sie einfach auf den untenstehenden Button, um zu unserem technischen Anbieter weitergeleitet zu werden, der Ihnen alle notwendigen Informationen zur Einrichtung und Nutzung des Videoanruf-Systems bereitstellt.
|
|
31
|
+
4. **Ihre Sprechstunde:** Zum Zeitpunkt Ihrer Sprechstunde klicken Sie einfach auf den Link in Ihrer E-Mail, um Ihren Arzt virtuell zu treffen. Stellen Sie sicher, dass Sie eine stabile Internetverbindung haben und sich in einer ruhigen Umgebung befinden.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Termin für Videosprechstunde vereinbaren
|
|
35
|
+
{: .sec-aside}
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
{: layout="use: #e-form" .section-h4 .mt-5}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
[input type="hidden" name="Terminart" value="Videosprechstunde" required .mb-3]
|
|
42
|
+
[input type="text" name="Name" required .mb-3]
|
|
43
|
+
[input type="date" name="Geburtsdatum" required .mb-3]
|
|
44
|
+
[input type="email" name="E-Mail" required .mb-3]
|
|
45
|
+
[input type="tel" name="Telefon" required .mb-3]
|
|
46
|
+
[textarea name="Ihre Nachricht (optional)" .mb-3 style="height: 120px;"]
|
|
47
|
+
[input type="checkbox" name="Datenschutz" label="Ich akzeptiere die Datenschutzbestimmungen" required .mb-3]
|
|
48
|
+
[input type="submit" value="Absenden" .btn .btn-primary .btn-lg .mt-3]
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
## Erfahren Sie mehr über uns
|
|
53
|
+
{: layout="use: #cta-base"}
|
|
54
|
+
|
|
55
|
+
[Unsere Untersuchungen](/leistungen/untersuchungen.de.html) [Über Uns](/ueber-uns) [Kontakt](/kontakt)
|
package/_variables.scss
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
$font-family-base: sans-serif !default;
|
|
9
9
|
$font-family-header: $font-family-base !default;
|
|
10
10
|
|
|
11
|
+
//$enable-dark-mode: false !default;
|
|
12
|
+
|
|
11
13
|
$accent: #f19045 !default;
|
|
12
14
|
$primary: #a3979b !default;
|
|
13
15
|
$success: #22b573 !default;
|
|
@@ -15,6 +17,7 @@ $danger: #bf1c0a !default;
|
|
|
15
17
|
$warning: #bf760a !default;
|
|
16
18
|
$dark: #006837 !default;
|
|
17
19
|
|
|
20
|
+
$soft-accent: lighten($accent, 40%) !default;
|
|
18
21
|
$soft-primary: lighten($primary, 40%) !default;
|
|
19
22
|
$soft-success: lighten($success, 40%) !default;
|
|
20
23
|
$soft-danger: lighten($danger, 50%) !default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Joda } from "@leuffen/jodastyle";
|
|
2
|
+
Joda.registerTemplate("hero-slide",
|
|
3
|
+
// language=HTML
|
|
4
|
+
`
|
|
5
|
+
|
|
6
|
+
<article class="hero-slide :: mobile :xl: desktop">
|
|
7
|
+
<slot></slot>
|
|
8
|
+
</article>
|
|
9
|
+
|
|
10
|
+
`, {
|
|
11
|
+
cols: 6
|
|
12
|
+
}, {
|
|
13
|
+
onAfterConnectedCallback: (el) => {
|
|
14
|
+
}
|
|
15
|
+
});
|
|
@@ -7,18 +7,12 @@ Joda.registerTemplate("hero-max",
|
|
|
7
7
|
<slot data-select="img.background, :scope>.content>p.background>img" class="slideshow"></slot>
|
|
8
8
|
<div class="tjs__hero-max--out-wrapper ">
|
|
9
9
|
<div class="tjs__hero-max--container [[layout.container]] ">
|
|
10
|
-
<
|
|
11
|
-
<div class="tjs__hero-max--section-text">
|
|
12
|
-
<slot></slot>
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
10
|
+
<slot class="content" data-select=".slide || :scope > * "></slot>
|
|
16
11
|
</div>
|
|
17
12
|
</div>
|
|
18
13
|
</section>
|
|
19
14
|
|
|
20
15
|
`, {
|
|
21
|
-
cols: "6",
|
|
22
16
|
'aspect-ratio': "5/4",
|
|
23
17
|
}, {
|
|
24
18
|
onAfterConnectedCallback: (el) => {
|
|
@@ -2,26 +2,31 @@
|
|
|
2
2
|
import { Joda } from "@leuffen/jodastyle";
|
|
3
3
|
const html = `
|
|
4
4
|
|
|
5
|
-
<nav class="navbar-centerlogo
|
|
6
|
-
<div class="
|
|
7
|
-
|
|
5
|
+
<nav class="navbar-centerlogo">
|
|
6
|
+
<div class="e--spacer"></div>
|
|
7
|
+
<div class="e--backdrop"></div>
|
|
8
|
+
<div class="navbar">
|
|
9
|
+
<div class="navbar__wrapper [[ layout.container ]]">
|
|
10
|
+
<slot class="" data-select="ul.navbar-top "></slot>
|
|
8
11
|
|
|
9
|
-
|
|
12
|
+
<slot class="navbar__logo" data-select="[[ layout.slot_logo_selector ]]"></slot>
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<div
|
|
18
|
-
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
<div class="burger-menu" onclick="this.closest('nav').classList.toggle('sidebar')">
|
|
17
|
+
<div class="burger-menu__text">
|
|
18
|
+
[[ layout.burger_text ]]
|
|
19
|
+
</div>
|
|
20
|
+
<div class="burger-menu__burger">
|
|
21
|
+
<div></div>
|
|
22
|
+
<div></div>
|
|
23
|
+
<div></div>
|
|
24
|
+
</div>
|
|
19
25
|
</div>
|
|
20
|
-
</div>
|
|
21
26
|
|
|
27
|
+
</div>
|
|
22
28
|
</div>
|
|
23
29
|
|
|
24
|
-
|
|
25
30
|
<aside>
|
|
26
31
|
<div class="backdrop" onclick="this.closest('nav').classList.remove('sidebar')"></div>
|
|
27
32
|
<div class="menu">
|
|
@@ -38,19 +43,35 @@ const html = `
|
|
|
38
43
|
`;
|
|
39
44
|
Joda.registerTemplate("navbar-centerlogo", html, {
|
|
40
45
|
slot_logo_selector: ".brand",
|
|
41
|
-
burger_text: "
|
|
42
|
-
container: "container"
|
|
46
|
+
burger_text: "Menü",
|
|
47
|
+
container: "container",
|
|
48
|
+
scrollup_position: 100
|
|
43
49
|
}, {
|
|
44
|
-
"
|
|
50
|
+
"onAfterAllTemplatesConnectedCallback": (element) => {
|
|
51
|
+
// Query css variable --layout-scrollup from elment
|
|
45
52
|
// If the page is scrolled down, the navbar should be sticky
|
|
46
53
|
// Update this on scroll event
|
|
47
|
-
|
|
54
|
+
let lastY = 0;
|
|
55
|
+
let navbar = element.querySelector(".navbar");
|
|
56
|
+
let changer = () => {
|
|
48
57
|
if (window.scrollY > 1) {
|
|
49
|
-
|
|
58
|
+
navbar.classList.add("scrolled");
|
|
59
|
+
navbar.classList.remove("unscrolled");
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
navbar.classList.remove("scrolled");
|
|
63
|
+
navbar.classList.add("unscrolled");
|
|
64
|
+
}
|
|
65
|
+
let isScrollingUp = window.scrollY < lastY;
|
|
66
|
+
lastY = window.scrollY;
|
|
67
|
+
if (window.scrollY > 250 && !isScrollingUp) {
|
|
68
|
+
navbar.classList.add("scrollup");
|
|
50
69
|
}
|
|
51
70
|
else {
|
|
52
|
-
|
|
71
|
+
navbar.classList.remove("scrollup");
|
|
53
72
|
}
|
|
54
|
-
}
|
|
73
|
+
};
|
|
74
|
+
window.addEventListener("scroll", changer, { passive: true });
|
|
75
|
+
changer();
|
|
55
76
|
}
|
|
56
77
|
});
|
|
@@ -5,13 +5,14 @@ Joda.registerTemplate("sec-card-2col",
|
|
|
5
5
|
|
|
6
6
|
<section class="tjs__sec-card-2col [[layout.class]] :: mobile :lg: desktop">
|
|
7
7
|
<div class="tjs__sec-card-2col--container [[layout.container]]">
|
|
8
|
+
<slot class="title" data-select="img.title || .title > img"></slot>
|
|
8
9
|
<div class="row [[layout.order === 'reverse' ? 'flex-column-reverse': '']] [[layout.mobile_reverse === 'yes' ? ':: flex-column-reverse :lg:': '']]">
|
|
9
10
|
<div class="tjs__sec-card-2col--col-start tjs__section-text p-4 p-lg-5 :: col-12 :lg: col-[[layout.cols]]">
|
|
10
11
|
<slot></slot>
|
|
11
12
|
</div>
|
|
12
13
|
<div class="tjs__sec-card-2col--col-end image-side :: col-12 :lg: col-[[12 - layout.cols]] ">
|
|
13
14
|
|
|
14
|
-
<slot class="[[layout.slideshow === true ? 'slideshow' : '']]" data-select="img, .children > .section-hr.aside
|
|
15
|
+
<slot class="[[layout.slideshow === true ? 'slideshow' : '']]" data-select=".aside || img, .children > .section-hr.aside" [[layout.slideshow !== true ? 'data-limit="1"' : '' ]]></slot>
|
|
15
16
|
</div>
|
|
16
17
|
</div>
|
|
17
18
|
</div>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
.tjs-button-group {
|
|
3
|
+
|
|
4
|
+
--layout-gap: 1rem;
|
|
5
|
+
// --layout-breakpoint: 1024px; Not Working on media query
|
|
6
|
+
|
|
7
|
+
&>slot {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-wrap: wrap;
|
|
10
|
+
|
|
11
|
+
&>* {
|
|
12
|
+
width: 100%;
|
|
13
|
+
}
|
|
14
|
+
p {
|
|
15
|
+
width: 100%;
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: row;
|
|
18
|
+
@media (width < 500px) {
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
}
|
|
21
|
+
align-items: stretch;
|
|
22
|
+
gap: var(--layout-gap);
|
|
23
|
+
&>* {
|
|
24
|
+
flex-grow: 1;
|
|
25
|
+
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
}
|
package/elements/elements.scss
CHANGED
package/elements/elements.ts
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
.hero-slide {
|
|
4
|
+
|
|
5
|
+
--layout-box-color: rgba(255, 255, 255, 0.8);
|
|
6
|
+
--layout-text-shadow: 0 0 2px rgba(255, 255, 255, 1);
|
|
7
|
+
--layout-align-self: center;
|
|
8
|
+
--layout-justify-self: center;
|
|
9
|
+
--layout-cols: 6;
|
|
10
|
+
|
|
11
|
+
--layout-y-adjust: 25%;
|
|
12
|
+
--layout-x-adjust: 25%;
|
|
13
|
+
|
|
14
|
+
align-self: var(--layout-align-self);
|
|
15
|
+
justify-self: var(--layout-justify-self);
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
&.desktop {
|
|
20
|
+
margin-top: var(--layout-y-adjust);
|
|
21
|
+
margin-left: var(--layout-x-adjust);
|
|
22
|
+
width: calc(100% / 12 * var(--layout-cols));
|
|
23
|
+
&.box {
|
|
24
|
+
padding: 10px;
|
|
25
|
+
background-color: var(--layout-box-color);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
&.glow {
|
|
29
|
+
&>slot {
|
|
30
|
+
&>h1,h2,h3,&>p {
|
|
31
|
+
text-shadow: var(--layout-text-shadow);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
&.mobile {
|
|
37
|
+
width: 100%;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {Joda} from "@leuffen/jodastyle";
|
|
2
|
+
|
|
3
|
+
Joda.registerTemplate("hero-slide",
|
|
4
|
+
// language=HTML
|
|
5
|
+
`
|
|
6
|
+
|
|
7
|
+
<article class="hero-slide :: mobile :xl: desktop">
|
|
8
|
+
<slot></slot>
|
|
9
|
+
</article>
|
|
10
|
+
|
|
11
|
+
`,
|
|
12
|
+
{
|
|
13
|
+
cols: 6
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
onAfterConnectedCallback: (el) => {
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leuffen/themejs1",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.2",
|
|
4
4
|
|
|
5
5
|
"description": "",
|
|
6
6
|
"license": "proprietary",
|
|
@@ -54,17 +54,19 @@
|
|
|
54
54
|
],
|
|
55
55
|
"author": "",
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@leuffen/jodastyle": "^3.
|
|
58
|
-
"@kasimirjs/embed": "^1.0.
|
|
59
|
-
"@leuffen/isl-base": "^3.0.
|
|
60
|
-
"@leuffen/liscom": "^2.0.
|
|
61
|
-
"@leuffen/liscom-loader": "^1.0.
|
|
62
|
-
"@leuffen/liweco-base": "^2.0.
|
|
57
|
+
"@leuffen/jodastyle": "^3.1.2",
|
|
58
|
+
"@kasimirjs/embed": "^1.0.23",
|
|
59
|
+
"@leuffen/isl-base": "^3.0.7",
|
|
60
|
+
"@leuffen/liscom": "^2.0.10",
|
|
61
|
+
"@leuffen/liscom-loader": "^1.0.9",
|
|
62
|
+
"@leuffen/liweco-base": "^2.0.3",
|
|
63
63
|
"@micx/lib-js": "^1.0.22",
|
|
64
64
|
"bootstrap": "^5.3.0"
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
65
68
|
},
|
|
66
69
|
"devDependencies": {
|
|
67
|
-
"@micx/lib-js": "^1.0.18",
|
|
68
70
|
"@kasimirjs/kit-bootstrap": "^1.0.4",
|
|
69
71
|
"markdown-it": "^13.0.1",
|
|
70
72
|
"markdown-it-attrs": "^4.1.6",
|
package/sections/_defaults.scss
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
--t-background-footer: #{$background-footer};
|
|
4
4
|
--t-section-background: transparent;
|
|
5
5
|
--t-section-background-accent: #{$background-accent};
|
|
6
|
-
--t-section-background-primary: #
|
|
6
|
+
--t-section-background-primary: #{$soft-primary};
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
--t-font-family-base: #{$font-family-base};
|
|
@@ -34,5 +34,8 @@
|
|
|
34
34
|
--t-section-inner-padding: 3rem;
|
|
35
35
|
|
|
36
36
|
--t-accent: #{$accent};
|
|
37
|
+
--t-primary: #{$primary};
|
|
38
|
+
--t-soft-primary: #{$soft-primary};
|
|
39
|
+
--t-soft-accent: #{$soft-accent};
|
|
37
40
|
|
|
38
41
|
}
|
|
@@ -43,6 +43,11 @@
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
}
|
|
46
|
+
|
|
47
|
+
.tjs__hero-max--container {
|
|
48
|
+
height: 100%;
|
|
49
|
+
}
|
|
50
|
+
|
|
46
51
|
min-height: var(--layout-min-height, 400px);
|
|
47
52
|
position: relative;
|
|
48
53
|
&.tjs__hero-max--autoheight {
|
|
@@ -87,33 +92,18 @@
|
|
|
87
92
|
|
|
88
93
|
|
|
89
94
|
|
|
90
|
-
h1 {
|
|
91
|
-
font-size: calc(1.5em + 1vw);
|
|
92
|
-
}
|
|
93
95
|
|
|
94
96
|
.slideshow:empty {
|
|
95
97
|
display: none;
|
|
96
98
|
}
|
|
97
99
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
text-shadow: 0 0 10px var(--t-text-color), 0 0 20px var(--t-text-color), 0 0 30px var(--t-text-color), 0 0 40px var(--t-text-color), 0 0 50px var(--t-text-color), 0 0 60px var(--t-text-color), 0 0 70px var(--t-text-color);
|
|
101
|
-
}
|
|
100
|
+
slot.content{
|
|
101
|
+
display: grid;
|
|
102
102
|
|
|
103
|
-
|
|
104
|
-
.tjs-_hero-max--inner-wrapper {
|
|
105
|
-
position: relative;
|
|
106
|
-
width: 100%;
|
|
107
103
|
height: 100%;
|
|
108
104
|
}
|
|
109
105
|
|
|
110
106
|
|
|
111
|
-
.tjs__hero-max--section-text {
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
.offsetmodifier {
|
|
115
|
-
height: 100px;
|
|
116
|
-
}
|
|
117
107
|
|
|
118
108
|
|
|
119
109
|
}
|
|
@@ -9,19 +9,13 @@ Joda.registerTemplate("hero-max",
|
|
|
9
9
|
<slot data-select="img.background, :scope>.content>p.background>img" class="slideshow"></slot>
|
|
10
10
|
<div class="tjs__hero-max--out-wrapper ">
|
|
11
11
|
<div class="tjs__hero-max--container [[layout.container]] ">
|
|
12
|
-
<
|
|
13
|
-
<div class="tjs__hero-max--section-text">
|
|
14
|
-
<slot></slot>
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
17
|
-
</div>
|
|
12
|
+
<slot class="content" data-select=".slide || :scope > * "></slot>
|
|
18
13
|
</div>
|
|
19
14
|
</div>
|
|
20
15
|
</section>
|
|
21
16
|
|
|
22
17
|
`,
|
|
23
18
|
{
|
|
24
|
-
cols: "6",
|
|
25
19
|
'aspect-ratio': "5/4",
|
|
26
20
|
},
|
|
27
21
|
{
|
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
padding: 20px; // Make the clickable area bigger
|
|
29
29
|
margin: -20px; // Make the clickable area bigger
|
|
30
30
|
z-index: 3;
|
|
31
|
-
|
|
31
|
+
transition: all 0.1s ease-in-out;
|
|
32
|
+
opacity: 0.7;
|
|
33
|
+
transform: scale(1);
|
|
32
34
|
div {
|
|
33
35
|
width: 35px;
|
|
34
36
|
height: 3px;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
aside {
|
|
2
|
+
&>.backdrop {
|
|
3
|
+
position: fixed;
|
|
4
|
+
background-color: var(--nav-sidbar-backgrond-color, $primary);
|
|
5
|
+
opacity: 0.4;
|
|
6
|
+
top:0; bottom: 0; left: 0; right: 0;
|
|
7
|
+
width: 100%;
|
|
8
|
+
height: 100%;
|
|
9
|
+
transform: scale(0%);
|
|
10
|
+
-webkit-transform: scale(0, 0);
|
|
11
|
+
transition: all 0.1s ease-in-out;
|
|
12
|
+
z-index:9998;
|
|
13
|
+
}
|
|
14
|
+
&>.menu {
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
position: fixed;
|
|
18
|
+
top: 0; bottom: 0; right: 0;
|
|
19
|
+
width: 90vw;
|
|
20
|
+
max-width: 300px;
|
|
21
|
+
z-index: 9999;
|
|
22
|
+
transform: translateX(100%);
|
|
23
|
+
background-color: var(--nav-sidbar-backgrond-color, $primary);
|
|
24
|
+
// Do big black shadow
|
|
25
|
+
box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
|
|
26
|
+
transition: all 0.2s ease-in-out;
|
|
27
|
+
|
|
28
|
+
ul {
|
|
29
|
+
padding: 0;
|
|
30
|
+
margin: 0;
|
|
31
|
+
&>li {
|
|
32
|
+
list-style: none;
|
|
33
|
+
width: 100%;
|
|
34
|
+
&>a {
|
|
35
|
+
&:hover {
|
|
36
|
+
background-color: var(--nav-sidbar-backgrond-color-hover, darken($primary, 10%));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
display: block;
|
|
40
|
+
text-decoration: none;
|
|
41
|
+
width: 100%;
|
|
42
|
+
padding: 15px;
|
|
43
|
+
color: $white;
|
|
44
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.5);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&>.menu-header {
|
|
50
|
+
width: 100%;
|
|
51
|
+
border-bottom: 1px solid rgba(255, 255,255,0.5);
|
|
52
|
+
display: flex;
|
|
53
|
+
align-content: center;
|
|
54
|
+
justify-content: end;
|
|
55
|
+
|
|
56
|
+
&>svg {
|
|
57
|
+
cursor: pointer;
|
|
58
|
+
margin: 20px;
|
|
59
|
+
color: $white;
|
|
60
|
+
height: 38px;
|
|
61
|
+
width: 38px;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&.sidebar {
|
|
69
|
+
aside {
|
|
70
|
+
&>.backdrop {
|
|
71
|
+
transform: scale(100%);
|
|
72
|
+
-webkit-transform: scale(100%, 100%);
|
|
73
|
+
}
|
|
74
|
+
&>.menu {
|
|
75
|
+
transform: translateX(0%);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -17,159 +17,133 @@
|
|
|
17
17
|
|
|
18
18
|
--layout-bg-default: transparent;
|
|
19
19
|
--layout-bg-sticky: #fff;
|
|
20
|
-
--layout-bg-sticky-shadow: 0px 1px
|
|
20
|
+
--layout-bg-sticky-shadow: 0px 1px 5px rgba(0, 0, 0, 0.6);
|
|
21
21
|
--layout-burger-color: var(--t-accent);
|
|
22
22
|
--layout-menu-color: var(--bs-primary);
|
|
23
23
|
--layout-image-height: 80px;
|
|
24
|
+
--layout-zoom-ratio: 2;
|
|
25
|
+
--layout-zoom-ratio-mobile: 1.3;
|
|
26
|
+
--layout-backdrop-height: 20px;
|
|
24
27
|
|
|
28
|
+
--layout-spacer-height: 0px;
|
|
29
|
+
--layout-spacer-color: rgba(255,255,255,1);
|
|
30
|
+
--layout-spacer-height-mobile: calc(var(--layout-image-height) * var(--layout-zoom-ratio-mobile));
|
|
25
31
|
|
|
26
|
-
background-color: var(--layout-bg-default);
|
|
27
|
-
position: absolute;
|
|
28
|
-
top: 0;
|
|
29
|
-
width: 100vw;
|
|
30
|
-
height: auto;
|
|
31
|
-
z-index: 999;
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
width: 50%;
|
|
33
|
+
--e-zoom-ratio: var(--layout-zoom-ratio);
|
|
34
|
+
@media (width < 750px) {
|
|
35
|
+
--e-zoom-ratio: var(--layout-zoom-ratio-mobile);
|
|
37
36
|
}
|
|
38
37
|
|
|
39
|
-
&.scrolled img.brand {
|
|
40
|
-
width: auto;
|
|
41
|
-
height: 80px;
|
|
42
|
-
|
|
43
|
-
}
|
|
44
38
|
|
|
45
39
|
|
|
46
|
-
&>.navbar__wrapper {
|
|
47
|
-
display: flex;
|
|
48
|
-
justify-content: space-between;
|
|
49
|
-
flex-wrap: nowrap;
|
|
50
|
-
flex-direction: row;
|
|
51
40
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
width: 33%;
|
|
41
|
+
&>.e--spacer {
|
|
42
|
+
@media (width < 750px) {
|
|
43
|
+
height: var(--layout-spacer-height-mobile);
|
|
56
44
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
justify-content: center;
|
|
61
|
-
display: flex;
|
|
45
|
+
height: var(--layout-spacer-height);
|
|
46
|
+
position: relative;
|
|
47
|
+
background-color: var(--layout-spacer-color);
|
|
62
48
|
|
|
49
|
+
}
|
|
50
|
+
&>.e--backdrop {
|
|
51
|
+
position: absolute;
|
|
52
|
+
width: 100vw;
|
|
53
|
+
left: 0;
|
|
54
|
+
z-index: 9;
|
|
55
|
+
height: var(--layout-backdrop-height);
|
|
56
|
+
background: linear-gradient(180deg, var(--layout-spacer-color) 0%, rgba(0,0,0,0) 100%);
|
|
57
|
+
}
|
|
58
|
+
&>.navbar {
|
|
59
|
+
background-color: var(--layout-bg-default);
|
|
63
60
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
61
|
+
position: absolute;
|
|
62
|
+
top: 0;
|
|
63
|
+
width: 100vw;
|
|
64
|
+
height: auto;
|
|
65
|
+
z-index: 999;
|
|
70
66
|
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
.brand img {
|
|
68
|
+
height: auto;
|
|
73
69
|
|
|
74
|
-
|
|
70
|
+
width: 50%;
|
|
71
|
+
}
|
|
75
72
|
|
|
76
|
-
transition: background-color 0.2s ease-in-out;
|
|
77
73
|
|
|
74
|
+
&.unscrolled {
|
|
78
75
|
|
|
79
76
|
|
|
80
|
-
&.scrolled {
|
|
81
|
-
height: var(--layout-scrolled-height);
|
|
82
|
-
position: fixed;
|
|
83
|
-
top: 0;
|
|
84
|
-
width: 100vw;
|
|
85
|
-
background-color: var(--layout-bg-sticky);
|
|
86
|
-
.navbar__logo img {
|
|
87
|
-
transform: translateY(0) scale(1);
|
|
88
77
|
}
|
|
89
|
-
}
|
|
90
78
|
|
|
79
|
+
&.scrolled {
|
|
80
|
+
box-shadow: var(--layout-bg-sticky-shadow);
|
|
81
|
+
img.brand {
|
|
82
|
+
width: auto;
|
|
83
|
+
height: 80px;
|
|
91
84
|
|
|
85
|
+
}
|
|
86
|
+
}
|
|
92
87
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
top:0; bottom: 0; left: 0; right: 0;
|
|
99
|
-
width: 100%;
|
|
100
|
-
height: 100%;
|
|
101
|
-
transform: scale(0%);
|
|
102
|
-
-webkit-transform: scale(0, 0);
|
|
103
|
-
transition: all 0.1s ease-in-out;
|
|
104
|
-
z-index:9998;
|
|
88
|
+
|
|
89
|
+
transform: translateY(0);
|
|
90
|
+
transition: all 0.3s ease-in-out;
|
|
91
|
+
&.scrollup {
|
|
92
|
+
transform: translateY(-100%);
|
|
105
93
|
}
|
|
106
|
-
&>.menu {
|
|
107
94
|
|
|
108
95
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
transform: translateX(100%);
|
|
115
|
-
background-color: var(--nav-sidbar-backgrond-color, $primary);
|
|
116
|
-
// Do big black shadow
|
|
117
|
-
box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
|
|
118
|
-
transition: all 0.2s ease-in-out;
|
|
119
|
-
|
|
120
|
-
ul {
|
|
121
|
-
padding: 0;
|
|
122
|
-
margin: 0;
|
|
123
|
-
&>li {
|
|
124
|
-
list-style: none;
|
|
125
|
-
width: 100%;
|
|
126
|
-
&>a {
|
|
127
|
-
&:hover {
|
|
128
|
-
background-color: var(--nav-sidbar-backgrond-color-hover, darken($primary, 10%));
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
display: block;
|
|
132
|
-
text-decoration: none;
|
|
133
|
-
width: 100%;
|
|
134
|
-
padding: 15px;
|
|
135
|
-
color: $white;
|
|
136
|
-
border-bottom: 1px solid rgba(255, 255, 255, 0.5);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
96
|
+
&>.navbar__wrapper {
|
|
97
|
+
display: flex;
|
|
98
|
+
justify-content: space-between;
|
|
99
|
+
flex-wrap: nowrap;
|
|
100
|
+
flex-direction: row;
|
|
140
101
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
border-bottom: 1px solid rgba(255, 255,255,0.5);
|
|
102
|
+
& > *{
|
|
103
|
+
flex-grow: 1;
|
|
144
104
|
display: flex;
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
105
|
+
width: 33%;
|
|
106
|
+
}
|
|
107
|
+
&>.navbar__logo {
|
|
108
|
+
transition: all 0.5s ease-in-out;
|
|
109
|
+
align-items: center;
|
|
110
|
+
justify-content: center;
|
|
111
|
+
display: flex;
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
img {
|
|
115
|
+
height: var(--layout-image-height);
|
|
116
|
+
transition: all 0.25s ease-in-out;
|
|
117
|
+
width: auto; transform: translateY(50% ) scale(var(--e-zoom-ratio));
|
|
118
|
+
max-width: 70vw;
|
|
154
119
|
}
|
|
120
|
+
|
|
155
121
|
}
|
|
122
|
+
@import "burger-menu";
|
|
123
|
+
|
|
156
124
|
}
|
|
157
125
|
|
|
158
|
-
}
|
|
159
126
|
|
|
160
|
-
&.sidebar {
|
|
161
|
-
aside {
|
|
162
|
-
&>.backdrop {
|
|
163
|
-
transform: scale(100%);
|
|
164
|
-
-webkit-transform: scale(100%, 100%);
|
|
165
|
-
}
|
|
166
|
-
&>.menu {
|
|
167
|
-
transform: translateX(0%);
|
|
168
|
-
}
|
|
169
127
|
|
|
170
128
|
|
|
129
|
+
|
|
130
|
+
&.scrolled {
|
|
131
|
+
height: var(--layout-scrolled-height);
|
|
132
|
+
position: fixed;
|
|
133
|
+
top: 0;
|
|
134
|
+
width: 100vw;
|
|
135
|
+
background-color: var(--layout-bg-sticky);
|
|
136
|
+
.navbar__logo img {
|
|
137
|
+
transform: translateY(0) scale(1);
|
|
138
|
+
}
|
|
171
139
|
}
|
|
140
|
+
|
|
172
141
|
}
|
|
173
142
|
|
|
174
143
|
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
@import "sidebar";
|
|
147
|
+
|
|
148
|
+
|
|
175
149
|
}
|
|
@@ -4,26 +4,31 @@ import {Joda, JodaDescriptionManager} from "@leuffen/jodastyle";
|
|
|
4
4
|
|
|
5
5
|
const html = `
|
|
6
6
|
|
|
7
|
-
<nav class="navbar-centerlogo
|
|
8
|
-
<div class="
|
|
9
|
-
|
|
7
|
+
<nav class="navbar-centerlogo">
|
|
8
|
+
<div class="e--spacer"></div>
|
|
9
|
+
<div class="e--backdrop"></div>
|
|
10
|
+
<div class="navbar">
|
|
11
|
+
<div class="navbar__wrapper [[ layout.container ]]">
|
|
12
|
+
<slot class="" data-select="ul.navbar-top "></slot>
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
<slot class="navbar__logo" data-select="[[ layout.slot_logo_selector ]]"></slot>
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
<div
|
|
20
|
-
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
<div class="burger-menu" onclick="this.closest('nav').classList.toggle('sidebar')">
|
|
19
|
+
<div class="burger-menu__text">
|
|
20
|
+
[[ layout.burger_text ]]
|
|
21
|
+
</div>
|
|
22
|
+
<div class="burger-menu__burger">
|
|
23
|
+
<div></div>
|
|
24
|
+
<div></div>
|
|
25
|
+
<div></div>
|
|
26
|
+
</div>
|
|
21
27
|
</div>
|
|
22
|
-
</div>
|
|
23
28
|
|
|
29
|
+
</div>
|
|
24
30
|
</div>
|
|
25
31
|
|
|
26
|
-
|
|
27
32
|
<aside>
|
|
28
33
|
<div class="backdrop" onclick="this.closest('nav').classList.remove('sidebar')"></div>
|
|
29
34
|
<div class="menu">
|
|
@@ -44,20 +49,40 @@ Joda.registerTemplate(
|
|
|
44
49
|
html,
|
|
45
50
|
{
|
|
46
51
|
slot_logo_selector: ".brand",
|
|
47
|
-
burger_text: "
|
|
48
|
-
container: "container"
|
|
52
|
+
burger_text: "Menü",
|
|
53
|
+
container: "container",
|
|
49
54
|
|
|
55
|
+
scrollup_position: 100
|
|
50
56
|
},
|
|
51
57
|
{
|
|
52
|
-
"
|
|
58
|
+
"onAfterAllTemplatesConnectedCallback": (element: HTMLElement) => {
|
|
59
|
+
// Query css variable --layout-scrollup from elment
|
|
60
|
+
|
|
53
61
|
// If the page is scrolled down, the navbar should be sticky
|
|
54
62
|
// Update this on scroll event
|
|
55
|
-
|
|
63
|
+
let lastY = 0;
|
|
64
|
+
let navbar = element.querySelector(".navbar")
|
|
65
|
+
let changer = () => {
|
|
56
66
|
if (window.scrollY > 1) {
|
|
57
|
-
|
|
67
|
+
navbar.classList.add("scrolled");
|
|
68
|
+
navbar.classList.remove("unscrolled");
|
|
58
69
|
} else {
|
|
59
|
-
|
|
70
|
+
navbar.classList.remove("scrolled");
|
|
71
|
+
navbar.classList.add("unscrolled");
|
|
60
72
|
}
|
|
61
|
-
|
|
73
|
+
|
|
74
|
+
let isScrollingUp = window.scrollY < lastY;
|
|
75
|
+
lastY = window.scrollY;
|
|
76
|
+
|
|
77
|
+
if (window.scrollY > 250 && ! isScrollingUp) {
|
|
78
|
+
navbar.classList.add("scrollup");
|
|
79
|
+
} else {
|
|
80
|
+
navbar.classList.remove("scrollup");
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
window.addEventListener("scroll", changer, {passive: true});
|
|
86
|
+
changer()
|
|
62
87
|
}
|
|
63
88
|
});
|
|
@@ -5,11 +5,39 @@
|
|
|
5
5
|
background: var(--t-section-background);
|
|
6
6
|
|
|
7
7
|
|
|
8
|
+
--layout-title-aspect-ratio: 16 / 9;
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
8
12
|
.tjs__sec-card-2col--col-start > slot > .children > *:last-child {
|
|
9
13
|
margin-bottom: 0 !important;
|
|
10
14
|
}
|
|
11
15
|
|
|
12
16
|
|
|
17
|
+
|
|
18
|
+
slot.title {
|
|
19
|
+
&:empty {
|
|
20
|
+
display: none;
|
|
21
|
+
}
|
|
22
|
+
display: block;
|
|
23
|
+
width: 100%;
|
|
24
|
+
text-align: center;
|
|
25
|
+
|
|
26
|
+
aspect-ratio: var(--layout-title-aspect-ratio);
|
|
27
|
+
|
|
28
|
+
object-fit: cover;
|
|
29
|
+
object-position: center center;
|
|
30
|
+
&>p {
|
|
31
|
+
display: contents;
|
|
32
|
+
}
|
|
33
|
+
img {
|
|
34
|
+
width: 100%;
|
|
35
|
+
height: 100%;
|
|
36
|
+
object-fit: cover;
|
|
37
|
+
object-position: center center;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
13
41
|
map.aside {
|
|
14
42
|
--joda-class: "";
|
|
15
43
|
display: block;
|
|
@@ -10,13 +10,14 @@ Joda.registerTemplate(
|
|
|
10
10
|
|
|
11
11
|
<section class="tjs__sec-card-2col [[layout.class]] :: mobile :lg: desktop">
|
|
12
12
|
<div class="tjs__sec-card-2col--container [[layout.container]]">
|
|
13
|
+
<slot class="title" data-select="img.title || .title > img"></slot>
|
|
13
14
|
<div class="row [[layout.order === 'reverse' ? 'flex-column-reverse': '']] [[layout.mobile_reverse === 'yes' ? ':: flex-column-reverse :lg:': '']]">
|
|
14
15
|
<div class="tjs__sec-card-2col--col-start tjs__section-text p-4 p-lg-5 :: col-12 :lg: col-[[layout.cols]]">
|
|
15
16
|
<slot></slot>
|
|
16
17
|
</div>
|
|
17
18
|
<div class="tjs__sec-card-2col--col-end image-side :: col-12 :lg: col-[[12 - layout.cols]] ">
|
|
18
19
|
|
|
19
|
-
<slot class="[[layout.slideshow === true ? 'slideshow' : '']]" data-select="img, .children > .section-hr.aside
|
|
20
|
+
<slot class="[[layout.slideshow === true ? 'slideshow' : '']]" data-select=".aside || img, .children > .section-hr.aside" [[layout.slideshow !== true ? 'data-limit="1"' : '' ]]></slot>
|
|
20
21
|
</div>
|
|
21
22
|
</div>
|
|
22
23
|
</div>
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
.tjs__sec-testimonial-ribbon {
|
|
2
|
-
padding: var(--t-section-padding);
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
--layout-bg: var(--t-section-background);
|
|
4
|
+
--layout-bg-ribbon: var(--t-soft-primary);
|
|
5
|
+
|
|
6
|
+
padding: var(--t-section-padding);
|
|
7
|
+
background-color: var(--layout-bg);
|
|
5
8
|
|
|
6
9
|
&.mobile {
|
|
7
10
|
padding-top: 40px;
|
|
@@ -26,7 +29,7 @@
|
|
|
26
29
|
& > .tjs__sec-testimonial-ribbon--wrapper {
|
|
27
30
|
padding-top: 40px;
|
|
28
31
|
padding-bottom: 40px;
|
|
29
|
-
background-color: var(--
|
|
32
|
+
background-color: var(--layout-bg-ribbon);
|
|
30
33
|
font-size: 1.2em;
|
|
31
34
|
font-style: italic;
|
|
32
35
|
letter-spacing: 1px;
|
package/themes/theme1/index.scss
CHANGED