@leuffen/themejs1 7.0.3 → 8.0.3

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 (75) hide show
  1. package/_tpl/_root/docs/_includes/el/openhours.html +1 -1
  2. package/_tpl/_root/docs/_layouts/3_1_navbar.html +12 -0
  3. package/_tpl/_root/src/style_custom.scss +8 -0
  4. package/_tpl/legal/datenschutz.de.md +3 -1
  5. package/_tpl/legal/impressum.de.md +2 -0
  6. package/_tpl/leistungen/hausarzt-uebersicht.de.md +1 -0
  7. package/_tpl/pages/hausarzt-index-singleleistung.de.md +2 -1
  8. package/_tpl/pages/hausarzt-index.de.md +1 -0
  9. package/_tpl/pages/index-theme-genne.de.md +158 -0
  10. package/_tpl/pages/kontakt-anfahrt.de.md +2 -0
  11. package/_tpl/pages/termin-redirect.de.md +1 -0
  12. package/_tpl/pages/ueber-uns.de.md +1 -0
  13. package/_tpl/sections.def.json +121 -0
  14. package/_tpl/service/info-privatpraxis.de.md +120 -0
  15. package/_variables.scss +49 -1
  16. package/dist/elements/hero-slide/hero-slide.js +1 -1
  17. package/dist/sections/cta-base/cta-base.js +1 -1
  18. package/dist/sections/cta-form/cta-form.js +1 -1
  19. package/dist/sections/hero-max/hero-max.js +5 -2
  20. package/dist/sections/hero-title-small/hero-title-small.js +2 -2
  21. package/dist/sections/sec-card-2col/sec-card-2col.js +2 -2
  22. package/dist/sections/sec-legal-content/sec-legal-content.js +1 -1
  23. package/dist/sections/sec-multi-card/sec-multi-card.js +1 -1
  24. package/dist/sections/sec-testimonial-ribbon/sec-testimonial-ribbon.js +8 -12
  25. package/dist/sections/sections.d.ts +1 -0
  26. package/dist/sections/sections.js +1 -0
  27. package/dist/sections/subheader/subheader.d.ts +1 -0
  28. package/dist/sections/subheader/subheader.js +15 -0
  29. package/elements/_background-color.scss +4 -0
  30. package/elements/_image-list.scss +39 -0
  31. package/elements/elements.scss +1 -0
  32. package/elements/hero-slide/hero-slide.scss +5 -1
  33. package/elements/hero-slide/hero-slide.ts +1 -1
  34. package/font/cinzel-opensans.scss +2 -2
  35. package/package.json +19 -17
  36. package/sections/_defaults.scss +7 -36
  37. package/sections/_pages/about.def.ts +137 -0
  38. package/sections/_pages/index.def.ts +152 -0
  39. package/sections/_pages/leistungen1.def.ts +87 -0
  40. package/sections/_pages/leistungen2.def.ts +189 -0
  41. package/sections/_typography.scss +72 -0
  42. package/sections/cta-base/cta-base.def.ts +20 -0
  43. package/sections/cta-base/cta-base.scss +4 -3
  44. package/sections/cta-base/cta-base.ts +1 -1
  45. package/sections/cta-form/cta-form.scss +8 -7
  46. package/sections/cta-form/cta-form.ts +1 -1
  47. package/sections/hero-max/hero-max.scss +36 -5
  48. package/sections/hero-max/hero-max.ts +5 -2
  49. package/sections/hero-title-small/hero-title-small.scss +12 -1
  50. package/sections/hero-title-small/hero-title-small.ts +2 -2
  51. package/sections/navbar-centerlogo/_burger-menu.scss +2 -2
  52. package/sections/navbar-centerlogo/navbar-centerlogo.scss +8 -4
  53. package/sections/sec-card-2col/sec-card-2col.def.ts +73 -0
  54. package/sections/sec-card-2col/sec-card-2col.scss +57 -10
  55. package/sections/sec-card-2col/sec-card-2col.ts +2 -2
  56. package/sections/sec-card-feature/sec-card-feature.def.ts +47 -0
  57. package/sections/sec-legal-content/sec-legal-content.scss +6 -1
  58. package/sections/sec-legal-content/sec-legal-content.ts +1 -1
  59. package/sections/sec-multi-card/sec-multi-card.def.ts +58 -0
  60. package/sections/sec-multi-card/sec-multi-card.ts +1 -1
  61. package/sections/sec-testimonial-ribbon/sec-testimonial-ribbon.def.ts +29 -0
  62. package/sections/sec-testimonial-ribbon/sec-testimonial-ribbon.scss +72 -34
  63. package/sections/sec-testimonial-ribbon/sec-testimonial-ribbon.ts +8 -12
  64. package/sections/sections-export.ts +24 -0
  65. package/sections/sections.def.ts +57 -0
  66. package/sections/sections.scss +3 -0
  67. package/sections/sections.ts +1 -0
  68. package/sections/subheader/subheader.scss +27 -0
  69. package/sections/subheader/subheader.ts +17 -0
  70. package/themes/_defaults/_headering-style-flex.scss +36 -0
  71. package/themes/_defaults/_headering-style-hero.scss +23 -0
  72. package/themes/_defaults/_sprechzeiten-table-highlight.scss +28 -0
  73. package/themes/genne/index.scss +91 -0
  74. package/themes/theme1/index.scss +3 -0
  75. package/tsconfig.json +28 -0
@@ -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,5 +1,7 @@
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";
5
7
  @import "navbar-switch2/navbar-switch2";
@@ -16,3 +18,4 @@
16
18
  @import "cta-form/cta-form";
17
19
  @import "image-gallery1/image-gallery1";
18
20
  @import "infobox/infobox";
21
+ @import "subheader/subheader";
@@ -15,3 +15,4 @@ import "./hero-title-small/hero-title-small";
15
15
  import "./cta-form/cta-form";
16
16
  import "./image-gallery1/image-gallery1";
17
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
+ }
@@ -0,0 +1,28 @@
1
+
2
+
3
+ table.openhours {
4
+ --layout-row-padding: 5px;
5
+ width: 100%;
6
+ color: var(--t-primary);
7
+ &>tbody {
8
+ &>tr {
9
+ td {
10
+ padding-top: var(--layout-row-padding);
11
+ padding-bottom: var(--layout-row-padding);
12
+ }
13
+
14
+ border-bottom: 1px solid var(--t-soft-primary);
15
+ &>td:nth-child(1) {
16
+ font-weight: bold;
17
+ padding-right: 0;
18
+ }
19
+ &>td:nth-child(2) {
20
+ text-align: right;
21
+ }
22
+ &:last-child {
23
+ border-bottom: none;
24
+ }
25
+ }
26
+ }
27
+
28
+ }
@@ -0,0 +1,91 @@
1
+
2
+
3
+ $primary: #354b68 !default;
4
+ $soft-primary: #dbe2e7 !default;
5
+ $accent: #9C8B58 !default;
6
+ $soft-secondary: #F8F8F9 !default;
7
+
8
+ $background: white !default;
9
+ $background-primary: #F8F8F9 !default;
10
+ $background-accent: $soft-primary !default;
11
+
12
+ @import "../_defaults/headering-style-flex";
13
+ @import "../_defaults/headering-style-hero";
14
+ @import "../_defaults/sprechzeiten-table-highlight";
15
+
16
+ :root {
17
+ --layout-container: container;
18
+ --layout-soft-background: #{$soft-secondary};
19
+ }
20
+ html body .tjs__hero-max {
21
+ --t-background-footer: #fff;
22
+ --t-section-background: transparent;
23
+ --t-text-background: #fff;
24
+ --t-text-background-light: var(--t-background);
25
+ --t-text-color-accent: var(--bs-gray-900);
26
+ --t-text-color-primary: var(--bs-primary);
27
+
28
+ --t-header-margin: 0 0 20px 0;
29
+ --t-paragraf-margin: 0 0 20px 0;
30
+
31
+ --t-section-padding: 40px 0;
32
+ --t-section-inner-padding: 3rem;
33
+
34
+ // linear gradient from top white to black
35
+ --layout-desktop-overlay1-background: linear-gradient(180deg, rgba(255,255,255,1) 20%, var(--t-soft-primary) 100%);
36
+ --layout-desktop-overlay3-background: linear-gradient(180deg, rgba(255,255,255,1) 20%, rgba(0,0,0,0) 100%);
37
+ --layout-desktop-image-mask: linear-gradient(-90deg, rgba(255,255,255,1) 30%, rgba(0,0,0,0) 100%);
38
+ }
39
+
40
+ .as__accordion .content p {
41
+ margin-right: 1rem;
42
+ }
43
+ .as__accordion .content p:last-child {
44
+ margin-bottom: 1rem;
45
+ }
46
+
47
+ section.tjs__sec-card-2col {
48
+ --t-section-background: transparent;
49
+ --layout-container-background: var(--t-background-primary);
50
+ --layout-border: 0px;
51
+
52
+ .box {
53
+ background-color: white;
54
+ padding: 20px;
55
+ margin-bottom: 20px;
56
+
57
+ // Hide empty news section
58
+ &:has(liweco-news.no-news) {
59
+ display: none;
60
+ }
61
+ }
62
+
63
+ }
64
+
65
+ section.tjs__sec-testimonial-ribbon {
66
+ --layout-bg: var(--t-background-primary)
67
+
68
+ }
69
+
70
+ section.tjs-hero-title-small {
71
+ --layout-margin-top: 200px;
72
+ --layout-margin-top-mobile: 20px;
73
+ }
74
+
75
+ section.tjs-legal-content {
76
+ --layout-margin-top: 200px;
77
+ }
78
+
79
+ .tjs__sec-multi-card__item,.tjs__sec-card-2col {
80
+ img {
81
+ filter: grayscale(70%);
82
+ transition: all 0.8s ease-in-out;
83
+ }
84
+ &:hover {
85
+ img {
86
+ filter: grayscale(0%);
87
+ }
88
+ }
89
+ }
90
+
91
+
@@ -1,6 +1,9 @@
1
1
  @import "../../variables";
2
2
  @import "../_mixins/default-element-format";
3
3
 
4
+
5
+
6
+
4
7
  :root {
5
8
  --layout-container: container;
6
9
 
package/tsconfig.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "compilerOptions": {
3
+ "outDir": "./dist/",
4
+ "noImplicitAny": false,
5
+ "declaration": true,
6
+ "module": "es6",
7
+ "target": "es6",
8
+ "allowJs": true,
9
+ "esModuleInterop": true,
10
+ "experimentalDecorators": true,
11
+
12
+
13
+ "emitDecoratorMetadata": true,
14
+ "moduleResolution": "node",
15
+ "lib": [
16
+ "es2021",
17
+ "dom"
18
+ ],
19
+
20
+ },
21
+ "include": [
22
+ "src/**/*",
23
+ "*"
24
+ ],
25
+ "exclude": [
26
+ "./test"
27
+ ]
28
+ }