@leuffen/themejs1 7.0.2 → 8.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.
Files changed (84) hide show
  1. package/_tpl/_root/.kick.yml +5 -0
  2. package/_tpl/_root/.schiller-context.txt +12 -0
  3. package/_tpl/_root/docs/_includes/el/lang-chooser-list.html +24 -0
  4. package/_tpl/_root/docs/_includes/el/openhours.html +1 -1
  5. package/_tpl/_root/docs/_includes/footer.md +2 -2
  6. package/_tpl/_root/docs/_layouts/0_blanc.html +9 -5
  7. package/_tpl/_root/docs/_layouts/3_1_navbar.html +13 -1
  8. package/_tpl/_root/src/style_custom.scss +8 -0
  9. package/_tpl/legal/datenschutz.de.md +1 -0
  10. package/_tpl/legal/impressum.de.md +2 -0
  11. package/_tpl/leistungen/hausarzt-uebersicht.de.md +1 -0
  12. package/_tpl/pages/hausarzt-index-singleleistung.de.md +3 -2
  13. package/_tpl/pages/hausarzt-index.de.md +1 -0
  14. package/_tpl/pages/index-theme-genne.de.md +158 -0
  15. package/_tpl/pages/kontakt-anfahrt.de.md +2 -0
  16. package/_tpl/pages/termin-redirect.de.md +1 -0
  17. package/_tpl/pages/ueber-uns.de.md +1 -0
  18. package/_tpl/sections.def.json +121 -0
  19. package/_tpl/service/info-privatpraxis.de.md +120 -0
  20. package/_variables.scss +49 -1
  21. package/dist/elements/hero-slide/hero-slide.js +1 -1
  22. package/dist/sections/cta-base/cta-base.js +1 -1
  23. package/dist/sections/cta-form/cta-form.js +1 -1
  24. package/dist/sections/hero-max/hero-max.js +5 -2
  25. package/dist/sections/hero-title-small/hero-title-small.js +2 -2
  26. package/dist/sections/navbar-switch2/navbar-switch2.d.ts +1 -0
  27. package/dist/sections/navbar-switch2/navbar-switch2.js +44 -0
  28. package/dist/sections/sec-card-2col/sec-card-2col.js +2 -2
  29. package/dist/sections/sec-legal-content/sec-legal-content.js +1 -1
  30. package/dist/sections/sec-multi-card/sec-multi-card.js +1 -1
  31. package/dist/sections/sec-testimonial-ribbon/sec-testimonial-ribbon.js +8 -12
  32. package/dist/sections/sections.d.ts +2 -0
  33. package/dist/sections/sections.js +2 -0
  34. package/dist/sections/subheader/subheader.d.ts +1 -0
  35. package/dist/sections/subheader/subheader.js +15 -0
  36. package/elements/_background-color.scss +4 -0
  37. package/elements/_image-list.scss +39 -0
  38. package/elements/elements.scss +1 -0
  39. package/elements/hero-slide/hero-slide.scss +5 -1
  40. package/elements/hero-slide/hero-slide.ts +1 -1
  41. package/font/cinzel-opensans.scss +2 -2
  42. package/package.json +21 -19
  43. package/sections/_defaults.scss +7 -36
  44. package/sections/_pages/about.def.ts +137 -0
  45. package/sections/_pages/index.def.ts +152 -0
  46. package/sections/_pages/leistungen1.def.ts +87 -0
  47. package/sections/_pages/leistungen2.def.ts +189 -0
  48. package/sections/_typography.scss +72 -0
  49. package/sections/cta-base/cta-base.def.ts +20 -0
  50. package/sections/cta-base/cta-base.scss +4 -3
  51. package/sections/cta-base/cta-base.ts +1 -1
  52. package/sections/cta-form/cta-form.scss +8 -7
  53. package/sections/cta-form/cta-form.ts +1 -1
  54. package/sections/hero-max/hero-max.scss +36 -5
  55. package/sections/hero-max/hero-max.ts +5 -2
  56. package/sections/hero-title-small/hero-title-small.scss +12 -1
  57. package/sections/hero-title-small/hero-title-small.ts +2 -2
  58. package/sections/navbar-centerlogo/_burger-menu.scss +2 -2
  59. package/sections/navbar-centerlogo/navbar-centerlogo.scss +8 -4
  60. package/sections/navbar-switch2/navbar-switch2.scss +274 -0
  61. package/sections/navbar-switch2/navbar-switch2.ts +47 -0
  62. package/sections/sec-card-2col/sec-card-2col.def.ts +73 -0
  63. package/sections/sec-card-2col/sec-card-2col.scss +57 -10
  64. package/sections/sec-card-2col/sec-card-2col.ts +2 -2
  65. package/sections/sec-card-feature/sec-card-feature.def.ts +47 -0
  66. package/sections/sec-legal-content/sec-legal-content.scss +6 -1
  67. package/sections/sec-legal-content/sec-legal-content.ts +1 -1
  68. package/sections/sec-multi-card/sec-multi-card.def.ts +58 -0
  69. package/sections/sec-multi-card/sec-multi-card.ts +1 -1
  70. package/sections/sec-testimonial-ribbon/sec-testimonial-ribbon.def.ts +29 -0
  71. package/sections/sec-testimonial-ribbon/sec-testimonial-ribbon.scss +72 -34
  72. package/sections/sec-testimonial-ribbon/sec-testimonial-ribbon.ts +8 -12
  73. package/sections/sections-export.ts +24 -0
  74. package/sections/sections.def.ts +57 -0
  75. package/sections/sections.scss +4 -0
  76. package/sections/sections.ts +2 -0
  77. package/sections/subheader/subheader.scss +27 -0
  78. package/sections/subheader/subheader.ts +17 -0
  79. package/themes/_defaults/_headering-style-flex.scss +36 -0
  80. package/themes/_defaults/_headering-style-hero.scss +23 -0
  81. package/themes/_defaults/_sprechzeiten-table-highlight.scss +28 -0
  82. package/themes/genne/index.scss +91 -0
  83. package/themes/theme1/index.scss +3 -0
  84. package/tsconfig.json +28 -0
@@ -1,11 +1,24 @@
1
1
 
2
2
 
3
3
  .tjs__sec-card-2col {
4
+
5
+ --layout-border: 1px solid var(--t-section-border-color);
6
+ --layout-border-radius: var(--t-section-border-radius);
7
+ --layout-section-background: var(--t-section-background);
8
+ --layout-container-background: var(--t-container-background, white);
9
+ --layout-title-aspect-ratio: 16 / 9;
10
+
11
+ --layout-padding: 40px;
12
+ --layout-padding-mobile: 10px;
13
+
4
14
  padding: var(--t-section-padding);
5
- background: var(--t-section-background);
15
+ background: var(--layout-section-background);
6
16
 
7
17
 
8
- --layout-title-aspect-ratio: 16 / 9;
18
+
19
+ .row {
20
+ --bs-gutter-x: 0;
21
+ }
9
22
 
10
23
 
11
24
 
@@ -57,6 +70,9 @@
57
70
  --joda-class: p-4 p-lg-5;
58
71
  }
59
72
 
73
+ .aside-content {
74
+ }
75
+
60
76
 
61
77
  &.mobile.text-first {
62
78
  .row > .tjs__sec-card-2col--col-start {
@@ -66,6 +82,20 @@
66
82
 
67
83
  .row > .tjs__sec-card-2col--col-start {
68
84
  order: 99;
85
+
86
+ }
87
+
88
+ &.reverse {
89
+ &.mobile.text-first {
90
+ .row > .tjs__sec-card-2col--col-start {
91
+ order: 99;
92
+ }
93
+ }
94
+
95
+ .row > .tjs__sec-card-2col--col-start {
96
+ order: 1;
97
+
98
+ }
69
99
  }
70
100
 
71
101
 
@@ -92,18 +122,35 @@
92
122
  }
93
123
 
94
124
 
125
+
126
+
95
127
  .tjs__sec-card-2col--container {
96
- border: 1px solid var(--t-section-border-color);
97
- border-radius: var(--t-section-border-radius);
98
- overflow: hidden;
99
- background-color: white;
100
128
  padding: 0;
129
+ border: var(--layout-border);
130
+ border-radius: var(--layout-border-radius);
131
+ overflow: hidden;
132
+ background-color: var(--layout-container-background);
101
133
  }
102
134
 
103
- h3 {
104
- margin-top: 1.5rem;
105
- font-size: 1.2em;
106
- font-weight: 600;
135
+ // Padding
136
+ .tjs__sec-card-2col--col-end {
137
+ padding: var(--layout-padding);
138
+ &:has(> slot > img) {
139
+ padding: 0;
140
+ }
141
+ }
142
+
143
+ &.mobile .tjs__sec-card-2col--col-end {
144
+ padding: var(--layout-padding-mobile);
145
+ }
146
+
147
+
148
+
149
+ .tjs__sec-card-2col--col-start {
150
+ padding: var(--layout-padding);
151
+ }
152
+ &.mobile .tjs__sec-card-2col--col-start {
153
+ padding: var(--layout-padding-mobile);
107
154
  }
108
155
 
109
156
  }
@@ -12,12 +12,12 @@ Joda.registerTemplate(
12
12
  <div class="tjs__sec-card-2col--container [[layout.container]]">
13
13
  <slot class="title" data-select="img.title || .title > img"></slot>
14
14
  <div class="row [[layout.order === 'reverse' ? 'flex-column-reverse': '']] [[layout.mobile_reverse === 'yes' ? ':: flex-column-reverse :lg:': '']]">
15
- <div class="tjs__sec-card-2col--col-start tjs__section-text p-4 p-lg-5 :: col-12 :lg: col-[[layout.cols]]">
15
+ <div class="tjs__sec-card-2col--col-start heading-style-flex :: col-12 :lg: col-[[layout.cols]]">
16
16
  <slot></slot>
17
17
  </div>
18
18
  <div class="tjs__sec-card-2col--col-end image-side :: col-12 :lg: col-[[12 - layout.cols]] ">
19
19
 
20
- <slot class="[[layout.slideshow === true ? 'slideshow' : '']]" data-select=".aside || img, .children > .section-hr.aside" [[layout.slideshow !== true ? 'data-limit="1"' : '' ]]></slot>
20
+ <slot class="[[layout.slideshow === true ? 'slideshow' : '']]" data-select=".aside || .aside-content || img, .children > .section-hr.aside" [[layout.slideshow !== true ? 'data-limit="1"' : '' ]]></slot>
21
21
  </div>
22
22
  </div>
23
23
  </div>
@@ -0,0 +1,47 @@
1
+ import {defineSection, example, SectionLayoutGroup} from "../sections.def";
2
+
3
+
4
+ defineSection('sec-card-feature', SectionLayoutGroup.Content)`
5
+
6
+ A Feature Card Section with a large image on top and to columens of Text below. Should be used only
7
+ once within a pages content. Best places at after 2-3 sec-card-2col elements.
8
+
9
+ If a Blockquote is used as first element, it will be used as a big callout header. The h2 element will be
10
+ smaller abouve the callout.
11
+
12
+ `;
13
+
14
+
15
+ example("Section with image image on top, header, callout and text on left and accordion on right.")`
16
+ ## Vorsorge für die ganze Familie
17
+ {: layout="use: #sec-card-feature"}
18
+
19
+ > Gesundheit für alle Altersgruppen
20
+
21
+ Vorsorge ist für alle Altersgruppen wichtig. Ob Kinder, Jugendliche, Erwachsene oder Senioren - wir bieten für jede Altersgruppe passende Vorsorgeuntersuchungen an.
22
+
23
+ Uns ist eine umfassende Aufklärung über die Möglichkeiten der Vorsorge und eine individuelle Beratung wichtig. Wir arbeiten eng mit Ihnen zusammen, um die bestmögliche Vorsorge für Ihre individuellen Bedürfnisse zu gewährleisten.
24
+
25
+ [Jetzt Termin vereinbaren](/kontakt){: .btn .fw-bold .btn-secondary .mt-4}
26
+
27
+
28
+ ![](https://cdn.leuffen.de//leu-stock/v2/107/1315-877_gfedcba/AdobeStock_610198709.webp)
29
+
30
+ ---
31
+ {: layout="use: accordion()"}
32
+
33
+ ### Akutversorgung von Kindern ab 6 Monaten
34
+
35
+ Unsere Praxis legt besonderen Wert auf die Versorgung Ihrer jüngsten Familienmitglieder. Bei akuten Beschwerden und Krankheitsbildern steht das Wohl Ihres Kindes immer an erster Stelle. Kinder ab dem Alter von 6 Monaten benötigen eine spezielle Herangehensweise, die sowohl medizinisches Know-how als auch eine kindgerechte Behandlung beinhaltet. Unsere erfahrenen Fachkräfte nehmen sich ausreichend Zeit für Ihren Nachwuchs und sorgen dafür, dass er sich in unserer Praxis sicher und geborgen fühlt.
36
+
37
+ ### Jugendschutzuntersuchung
38
+
39
+ Jeder Jugendliche steht im Laufe seiner Entwicklung vor neuen Herausforderungen und Veränderungen. Die Jugendschutzuntersuchung ist ein wichtiger Baustein, um sicherzustellen, dass junge Menschen gesund und wohlbehalten ins Berufsleben starten können. In unserer Praxis bieten wir diese Untersuchung an, die dazu dient, mögliche gesundheitliche Risiken frühzeitig zu erkennen und vorbeugende Maßnahmen zu treffen. Es ist unser Ziel, die körperliche und geistige Gesundheit Ihres Teenagers zu fördern und zu schützen.
40
+
41
+ ### Altersmedizinische Vorsorgeuntersuchungen
42
+
43
+ Mit fortschreitendem Alter ändern sich die Bedürfnisse und Anforderungen an unsere Gesundheit. Unsere Praxis ist darauf spezialisiert, Sie bestmöglich durch diese Lebensphase zu begleiten. Mithilfe altersmedizinischer Vorsorgeuntersuchungen (geriatrisches Basisassessment) können wir frühzeitig Veränderungen und potenzielle Risikofaktoren erkennen. So sind wir in der Lage, Ihnen individuell angepasste Empfehlungen und Therapien anzubieten. Ihr Wohlbefinden und Ihre Lebensqualität stehen für uns immer im Vordergrund. Vertrauen Sie auf unsere Expertise und lassen Sie uns gemeinsam für Ihre Gesundheit sorgen.
44
+
45
+
46
+ `;
47
+
@@ -1,9 +1,14 @@
1
1
 
2
2
 
3
- .tjs__sec-legal-content {
3
+ .tjs-legal-content {
4
+ --layout-margin-top: 0;
5
+
6
+ margin-top: var(--layout-margin-top);
7
+
4
8
  background: var(--t-section-background);
5
9
  padding: var(--t-section-padding);
6
10
 
11
+
7
12
  .inner-wrapper {
8
13
 
9
14
  border: 1px solid var(--t-section-border-color);
@@ -5,7 +5,7 @@ Joda.registerTemplate("sec-legal-content",
5
5
  // language=HTML
6
6
  `
7
7
 
8
- <section class="tjs__sec-legal-content :: mobile :lg:">
8
+ <section class="tjs-legal-content :: mobile :lg:">
9
9
  <div class="out-wrapper">
10
10
  <div class="container p-0">
11
11
  <div class="inner-wrapper :: p-4 :lg: p-5">
@@ -0,0 +1,58 @@
1
+ import {defineSection, example, SectionLayoutGroup} from "../sections.def";
2
+
3
+
4
+ defineSection('sec-multi-card', SectionLayoutGroup.Content)`
5
+
6
+ A Header with callout and text followed by a card elements per h3 row with image on top.
7
+
8
+ `;
9
+
10
+
11
+ example("Leistungsübersicht auf Startseite mit Überschift, darunter 3 Columns mit Bild und Text. Danach eine Zeile mit einem Button zu den Leistungen")`
12
+ ## Unsere Leistungen
13
+ {: layout="use: #sec-multi-card; cols:3"}
14
+
15
+ ### Vorsorge
16
+
17
+ ![](https://cdn.leuffen.de//leu-stock/v2/70/77-51_gfedcba/AdobeStock_87378997.webp)
18
+
19
+ Wir bieten eine umfassende Vorsorgeuntersuchung an, um Krankheiten frühzeitig zu erkennen und zu behandeln.
20
+
21
+ ### Diagnostik
22
+
23
+ ![](https://cdn.leuffen.de//leu-stock/v2/22/460-307_gfedcba/AdobeStock_484261570.webp)
24
+
25
+ Unsere Praxis ist mit modernsten Diagnosegeräten ausgestattet, um eine genaue und schnelle Diagnose zu gewährleisten.
26
+
27
+ ### Therapie
28
+
29
+ ![](https://cdn.leuffen.de//leu-stock/v2/9/1024-683_gfedcba/AdobeStock_417585744.webp)
30
+
31
+ Wir bieten eine breite Palette von Therapien an, um eine effektive Behandlung zu gewährleisten.
32
+
33
+ ---
34
+ {: .section-h2}
35
+
36
+
37
+ [Unsere Leistungen](/leistungen){: .btn .btn-primary .btn-lg .mb-3}
38
+ {: .text-center}
39
+
40
+
41
+ `;
42
+
43
+ example("Mitarbeiter mit jeweils 3 Cards nebeneinander. (kann beliebig lang werden). Hier ist der Header mittels .d-none ausgeblendet (falls vorher bereits ein Cards Element steht).")`
44
+ ## Unsere Mitarbeiter
45
+ {: layout="use: #sec-multi-card; cols:3" .d-none}
46
+
47
+ ### Nicoleta Avrinte
48
+
49
+ ![Bild des Mitarbeiters](https://cdn.leuffen.de//mvz-marienmuenster-k72/v2/11/c_gfedcba/portraits-mvz-nicoleta-avrinte.webp)
50
+
51
+ ### Anika Engel
52
+
53
+ ![Bild des Mitarbeiters](https://cdn.leuffen.de//mvz-marienmuenster-k72/v2/10/c_gfedcba/portraits-mvz-anika-engel.webp)
54
+
55
+ ### Anika Meier
56
+
57
+ ![Bild des Mitarbeiters](https://cdn.leuffen.de//mvz-marienmuenster-k72/v2/9/c_gfedcba/portraits-mvz-anika-meier.webp)
58
+ `;
@@ -22,7 +22,7 @@ Joda.registerTemplate("sec-multi-card",
22
22
  `
23
23
 
24
24
  <section class="tjs__sec-multi-card">
25
- <div class="container header" style="--joda-on-empty-class: d-none;">
25
+ <div class="container header heading-style-default" style="--joda-on-empty-class: d-none;">
26
26
  <slot class="tjs__section-text" data-select=":scope > .content"></slot>
27
27
  </div>
28
28
  <div class="container">
@@ -0,0 +1,29 @@
1
+ import {defineSection, example, SectionLayoutGroup} from "../sections.def";
2
+
3
+
4
+ defineSection('sec-testimonial-ribbon', SectionLayoutGroup.Content)`
5
+
6
+ A section filling the screens full width with a round image of a person and a quote of this person.
7
+
8
+ Only use maximum once per page. Do not use as last nor as first element on a page.
9
+
10
+ The text of the header will not be shown.
11
+
12
+ `;
13
+
14
+
15
+ example("Statement of the doctor himself.")`
16
+
17
+ ## Testimonial
18
+ {: layout="use: #sec-testimonial-ribbon"}
19
+
20
+ ![](https://cdn.leuffen.de//leu-stock/v2/73/991-661_gfedcba/AdobeStock_185581198.webp)
21
+
22
+ „In unserer Praxis legen wir großen Wert auf eine individuelle und professionelle psychiatrische und psychotherapeutische Versorgung. Wir nutzen modernste Diagnoseverfahren und Behandlungsmethoden, um unseren Patienten die bestmögliche Unterstützung zu bieten. Unser Ziel ist es, dass sich jeder Patient bei uns gut aufgehoben und verstanden fühlt.“
23
+
24
+ — Yigit Sinan, Facharzt für XXX
25
+
26
+
27
+
28
+ `;
29
+
@@ -1,55 +1,93 @@
1
- .tjs__sec-testimonial-ribbon {
1
+ .tjs-testimonial-ribbon {
2
2
 
3
- --layout-bg: var(--t-section-background);
4
- --layout-bg-ribbon: var(--t-soft-primary);
3
+
4
+ --layout-section-background: var(--t-background-primary);
5
+ --layout-image-size: 200px;
6
+ --layout-image-size-mobile: 120px;
7
+ --layout-section-padding: var(--layout-section-padding);
8
+
9
+
10
+ --layout-content-padding: 40px;
11
+
12
+ --layout-font-size: 1.3rem;
5
13
 
6
14
  padding: var(--t-section-padding);
7
15
  background-color: var(--layout-bg);
8
16
 
9
- &.mobile {
10
- padding-top: 40px;
11
- }
12
17
 
13
- &.mobile > .tjs__sec-testimonial-ribbon--wrapper {
14
- margin-top: 75px;
15
18
 
16
- .image-round {
17
- width: 150px;
18
- height: 150px;
19
- position: relative;
20
- top: -150px;
21
- margin-bottom: -150px;
22
- }
23
- }
24
19
 
25
- h2 {
26
- display: none;
20
+
21
+ .x--wrapper {
22
+ background-color: var(--layout-section-background);
23
+
24
+ padding-top: var(--layout-section-padding);
25
+
27
26
  }
28
27
 
29
- & > .tjs__sec-testimonial-ribbon--wrapper {
30
- padding-top: 40px;
31
- padding-bottom: 40px;
32
- background-color: var(--layout-bg-ribbon);
33
- font-size: 1.2em;
34
- font-style: italic;
35
- letter-spacing: 1px;
28
+ &.mobile .x--wrapper {
29
+ margin-top: calc(var(--layout-image-size-mobile) / 2);
30
+ }
31
+ .x--row {
32
+ display: flex;
33
+ flex-direction: row;
34
+ align-items: center;
35
+ }
36
36
 
37
- & > .tjs__sec-testimonial-ribbon--container {
38
- margin-top: 40px;
37
+ &.mobile {
38
+ .x--row {
39
+ flex-direction: column;
39
40
  }
40
41
  }
41
42
 
43
+ &.mobile div.x--image > slot{
44
+ margin-top: -50%;
45
+
46
+ }
47
+ &.mobile div.x--image {
48
+ padding: 0;
49
+ }
50
+ &.mobile div.x--image > slot {
51
+ border: 4px solid var(--layout-section-background);
52
+ }
53
+ div.x--image {
54
+
55
+ position: relative;
56
+ padding: var(--layout-content-padding);
57
+ &>slot {
42
58
 
43
- .text-format {
59
+ display: block;
60
+ width: var(--layout-image-size);
61
+ height: var(--layout-image-size);
62
+ border: 1px solid white;
63
+ border-radius: 100%;
64
+ &>img {
65
+ width: 100%;
66
+ height: 100%;
67
+ object-fit: cover;
68
+ border-radius: 100%;
69
+ }
70
+ }
44
71
 
45
72
  }
73
+ slot.x--text {
74
+ padding: var(--layout-content-padding);
75
+ display: block;
76
+ h2,h3 {
77
+ display: none;
78
+ }
46
79
 
47
- .image-round img {
48
- border-radius: 100%;
49
- border: 2px solid white;
50
- object-fit: cover;
51
- width: 100%;
52
- height: 100%;
80
+
81
+ p {
82
+ font-size: var(--layout-font-size);
83
+ line-height: 1.5;
84
+ font-weight: lighter;
85
+ font-style: italic;
86
+ }
87
+ p:last-child {
88
+ margin-bottom: 0;
89
+ font-weight: normal;
90
+ }
53
91
  }
54
92
  }
55
93
 
@@ -5,21 +5,17 @@ Joda.registerTemplate("sec-testimonial-ribbon",
5
5
  // language=HTML
6
6
  `
7
7
 
8
- <div class="tjs__sec-testimonial-ribbon :: mobile :lg:">
9
- <div class="tjs__sec-testimonial-ribbon--wrapper">
10
- <div class="tjs__sec-testimonial-ribbon--container [[layout.container]] :: :xl: mt-0">
11
- <div class="row">
12
- <div class="col-lg-3 image-round mx-auto :: :xl: my-auto">
13
- <div class="ratio ratio-1x1">
14
- <slot data-select="img" data-replace=""></slot>
15
- </div>
8
+ <div class="tjs-testimonial-ribbon :: mobile :lg:">
9
+ <div class="x--wrapper">
10
+ <div class="x--container [[layout.container]] :: :xl:">
16
11
 
12
+ <div class="x--row">
13
+ <div class="x--image">
14
+ <slot class="" data-select="img"></slot>
17
15
  </div>
18
- <div class="col-lg-9 text-format :: :lg: my-auto">
19
- <slot></slot>
20
- </div>
21
16
 
22
- </div>
17
+ <slot class="x--text"></slot>
18
+
23
19
  </div>
24
20
  </div>
25
21
  </div>
@@ -0,0 +1,24 @@
1
+ import * as fs from "fs";
2
+
3
+ import "./_pages/index.def";
4
+ import "./_pages/about.def";
5
+ import "./_pages/leistungen1.def";
6
+ import "./_pages/leistungen2.def";
7
+ import "./sec-card-2col/sec-card-2col.def";
8
+ import "./sec-card-feature/sec-card-feature.def";
9
+ import "./sec-multi-card/sec-multi-card.def";
10
+ import "./sec-testimonial-ribbon/sec-testimonial-ribbon.def";
11
+ import "./cta-base/cta-base.def";
12
+
13
+
14
+
15
+ import {SECTIONS} from "./sections.def";
16
+
17
+ fs.writeFile(__dirname + "/../_tpl/sections.def.json", JSON.stringify(SECTIONS, null, 2), (err) => {
18
+ if (err) {
19
+ console.error(err);
20
+ return;
21
+ }
22
+ console.log("File has been created");
23
+ });
24
+
@@ -0,0 +1,57 @@
1
+
2
+
3
+
4
+
5
+ export type SectionExample = {
6
+ description: string,
7
+ code: string
8
+ }
9
+
10
+ export type Section = {
11
+ name: string,
12
+ group: SectionLayoutGroup,
13
+ description: string,
14
+ layout_options: Map<string, string>,
15
+ examples : SectionExample[]
16
+ }
17
+
18
+ const general = `
19
+ Nutze die Beispiele im folgenden json-Code als Referenz, wie und welche Sections angelegt werden können (achte auf die Kramdown anweisungen in {: ...}. Diese müssen mit angegeben werden):`;
20
+
21
+
22
+ type TaggedTemplateLiteral<T> = (strings: TemplateStringsArray, ...values: any[]) => T;
23
+
24
+ export var SECTIONS = {
25
+ general,
26
+ available_sections: [],
27
+ };
28
+ var currentSection = null;
29
+
30
+ export enum SectionLayoutGroup {
31
+ Hero = "Hero",
32
+ Content = "Content",
33
+ ContentElements = "Content-Elements",
34
+ Footer = "Footer",
35
+ CTA = "Call-To-Action(CTA)",
36
+ Page = "Page",
37
+ }
38
+
39
+
40
+ export function defineSection(name: string, group : SectionLayoutGroup) : TaggedTemplateLiteral<{name: string, description: string}> {
41
+ return (strings: TemplateStringsArray, ...values: any[]) => {
42
+ SECTIONS.available_sections.push(currentSection = {name, group, description: strings.join(''), layout_options: new Map(), examples: []});
43
+ return {name, description: strings.join('')};
44
+ }
45
+ }
46
+
47
+
48
+
49
+ export function example(description: string) : TaggedTemplateLiteral<{example : SectionExample}> {
50
+ return (strings: TemplateStringsArray, ...values: any[]) => {
51
+ let curExample = {description, code: strings.join('')};
52
+ currentSection.examples.push(curExample);
53
+ return {example : curExample};
54
+ }
55
+ }
56
+
57
+
@@ -1,7 +1,10 @@
1
1
 
2
2
  @import "defaults";
3
+ @import "typography";
4
+
3
5
  @import "navbar-blox/navbar-blox.scss";
4
6
  @import "navbar-centerlogo/navbar-centerlogo.scss";
7
+ @import "navbar-switch2/navbar-switch2";
5
8
  @import "sec-legal-content/sec-legal-content";
6
9
  @import "sec-testimonial-ribbon/sec-testimonial-ribbon";
7
10
  @import "sec-card-2col/sec-card-2col";
@@ -15,3 +18,4 @@
15
18
  @import "cta-form/cta-form";
16
19
  @import "image-gallery1/image-gallery1";
17
20
  @import "infobox/infobox";
21
+ @import "subheader/subheader";
@@ -1,6 +1,7 @@
1
1
 
2
2
  import "./navbar-blox/navbar-blox";
3
3
  import "./navbar-centerlogo/navbar-centerlogo";
4
+ import "./navbar-switch2/navbar-switch2";
4
5
  import "./sec-legal-content/sec-legal-content";
5
6
  import "./sec-testimonial-ribbon/sec-testimonial-ribbon";
6
7
  import "./sec-card-2col/sec-card-2col";
@@ -14,3 +15,4 @@ import "./hero-title-small/hero-title-small";
14
15
  import "./cta-form/cta-form";
15
16
  import "./image-gallery1/image-gallery1";
16
17
  import "./infobox/infobox";
18
+ import "./subheader/subheader";
@@ -0,0 +1,27 @@
1
+
2
+
3
+ .tjs-subheader {
4
+ --layout-background: var(--t-soft-primary);
5
+ --layout-padding: 25px;
6
+
7
+
8
+ padding: var(--t-section-padding);
9
+
10
+ &>.x-wrapper {
11
+ padding: 0;
12
+ &>.x-inner {
13
+ text-align: center;
14
+ color: var(--t-primary);
15
+ background: var(--layout-background);
16
+ padding: var(--layout-padding);
17
+ }
18
+ }
19
+ slot {
20
+ &>div.content {
21
+ &>*:last-child {
22
+ margin-bottom: 0;
23
+ }
24
+ };
25
+ }
26
+
27
+ }
@@ -0,0 +1,17 @@
1
+ import {Joda} from "@leuffen/jodastyle";
2
+
3
+
4
+ Joda.registerTemplate("subheader",
5
+ // language=HTML
6
+ `
7
+
8
+ <div class="tjs-subheader">
9
+ <div class="x-wrapper [[layout.container]]">
10
+ <div class="x-inner">
11
+ <slot></slot>
12
+ </div>
13
+ </div>
14
+ </div>
15
+ `, {
16
+ container: "container"
17
+ });
@@ -0,0 +1,36 @@
1
+
2
+ .heading-style-flex {
3
+ h2:has(+ blockquote) {
4
+ text-transform: var(--t-header-text-transform, uppercase);
5
+ font-size: var(--t-font-size-base);
6
+ font-family: var(--t-font-family-base);
7
+ color: var(--t-accent) !important;
8
+ margin-bottom: var(--t-paragraf-margin-bottom);
9
+ font-weight: bold;
10
+ }
11
+
12
+ h2 + blockquote > p {
13
+ font-size: var(--t-font-size-h2);
14
+ line-height: var(--t-line-height-header);
15
+ font-family: var(--t-font-family-header);
16
+ color: var(--t-primary) !important;
17
+ margin: var(--t-header-margin, 0 0 20px 0);
18
+ hyphens: manual;
19
+ }
20
+
21
+ h1:has(+ blockquote) {
22
+
23
+ font-size: var(--t-font-size-h4);
24
+ color: var(--t-accent) !important;
25
+ margin-bottom: var(--t-paragraf-margin-bottom);
26
+ }
27
+
28
+ h1 + blockquote > p {
29
+ font-size: var(--t-font-size-h1);
30
+ color: var(--t-primary) !important;
31
+ line-height: var(--t-line-height-header);
32
+
33
+ margin: var(--t-header-margin, 0 0 20px 0);
34
+ hyphens: manual;
35
+ }
36
+ }
@@ -0,0 +1,23 @@
1
+
2
+ .heading-style-hero {
3
+
4
+
5
+ h1:has(+ blockquote) {
6
+
7
+ font-size: var(--t-font-size-h4);
8
+ color: var(--t-accent) !important;
9
+ margin-bottom: 0;
10
+ font-family: var(--t-font-family-header);
11
+
12
+ }
13
+
14
+ h1 + blockquote > p {
15
+ font-size: var(--t-font-size-h1);
16
+ color: var(--t-primary) !important;
17
+ line-height: var(--t-line-height-header);
18
+ font-family: var(--t-font-family-header);
19
+
20
+ margin: var(--t-header-margin, 0 0 20px 0);
21
+ hyphens: manual;
22
+ }
23
+ }