@leuffen/themejs1 7.0.3 → 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 (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 +1 -0
  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
@@ -3,7 +3,7 @@ Joda.registerTemplate("hero-slide",
3
3
  // language=HTML
4
4
  `
5
5
 
6
- <article class="hero-slide :: mobile :xl: desktop">
6
+ <article class="hero-slide :: mobile :lg: desktop">
7
7
  <slot></slot>
8
8
  </article>
9
9
 
@@ -5,7 +5,7 @@ Joda.registerTemplate("cta-base",
5
5
 
6
6
  <section class="tjs__cta-base">
7
7
  <div class="[[layout.container]]">
8
- <slot></slot>
8
+ <slot class="heading-style-default"></slot>
9
9
  </div>
10
10
  </section>
11
11
  `);
@@ -5,7 +5,7 @@ Joda.registerTemplate("cta-form",
5
5
  <section class="tjs__cta-form">
6
6
  <form data-micx-formmail-preset="default" data-micx-formmail-sent-message="E-Mail erfolgreich gesendet!">
7
7
  <div class="container">
8
- <slot data-select=":scope h2"></slot>
8
+ <slot class="heading-style-default" data-select=":scope h2, :scope blockquote"></slot>
9
9
  </div>
10
10
  <div class="wrapper">
11
11
  <div class="container">
@@ -3,11 +3,14 @@ Joda.registerTemplate("hero-max",
3
3
  // language=HTML
4
4
  `
5
5
 
6
- <section class="tjs__hero-max [[layout.class]] [[layout.autoheight === false ? '' : 'tjs__hero-max--autoheight' ]] :: mobile :xxl: desktop">
6
+ <section class="tjs__hero-max [[layout.class]] [[layout.autoheight === false ? '' : 'tjs__hero-max--autoheight' ]] :: mobile :lg: desktop">
7
7
  <slot data-select="img.background, :scope>.content>p.background>img" class="slideshow"></slot>
8
+ <div class="x-overlay x-overlay1"></div>
9
+ <div class="x-overlay x-overlay2"></div>
10
+ <div class="x-overlay x-overlay3"></div>
8
11
  <div class="tjs__hero-max--out-wrapper ">
9
12
  <div class="tjs__hero-max--container [[layout.container]] ">
10
- <slot class="content" data-select=".slide || :scope > * "></slot>
13
+ <slot class="content heading-style-hero" data-select=".slide || :scope > * "></slot>
11
14
  </div>
12
15
  </div>
13
16
  </section>
@@ -3,11 +3,11 @@ Joda.registerTemplate("hero-title-small",
3
3
  // language=HTML
4
4
  `
5
5
 
6
- <div class="tjs__hero-title-small">
6
+ <section class="tjs-hero-title-small">
7
7
  <div class="imagewrapper">
8
8
  <slot class="image-slot" data-select="img, .top"></slot>
9
9
  </div>
10
10
 
11
11
  <slot></slot>
12
- </div>
12
+ </section>
13
13
  `);
@@ -7,12 +7,12 @@ Joda.registerTemplate("sec-card-2col",
7
7
  <div class="tjs__sec-card-2col--container [[layout.container]]">
8
8
  <slot class="title" data-select="img.title || .title > img"></slot>
9
9
  <div class="row [[layout.order === 'reverse' ? 'flex-column-reverse': '']] [[layout.mobile_reverse === 'yes' ? ':: flex-column-reverse :lg:': '']]">
10
- <div class="tjs__sec-card-2col--col-start tjs__section-text p-4 p-lg-5 :: col-12 :lg: col-[[layout.cols]]">
10
+ <div class="tjs__sec-card-2col--col-start heading-style-flex :: col-12 :lg: col-[[layout.cols]]">
11
11
  <slot></slot>
12
12
  </div>
13
13
  <div class="tjs__sec-card-2col--col-end image-side :: col-12 :lg: col-[[12 - layout.cols]] ">
14
14
 
15
- <slot class="[[layout.slideshow === true ? 'slideshow' : '']]" data-select=".aside || img, .children > .section-hr.aside" [[layout.slideshow !== true ? 'data-limit="1"' : '' ]]></slot>
15
+ <slot class="[[layout.slideshow === true ? 'slideshow' : '']]" data-select=".aside || .aside-content || img, .children > .section-hr.aside" [[layout.slideshow !== true ? 'data-limit="1"' : '' ]]></slot>
16
16
  </div>
17
17
  </div>
18
18
  </div>
@@ -3,7 +3,7 @@ Joda.registerTemplate("sec-legal-content",
3
3
  // language=HTML
4
4
  `
5
5
 
6
- <section class="tjs__sec-legal-content :: mobile :lg:">
6
+ <section class="tjs-legal-content :: mobile :lg:">
7
7
  <div class="out-wrapper">
8
8
  <div class="container p-0">
9
9
  <div class="inner-wrapper :: p-4 :lg: p-5">
@@ -20,7 +20,7 @@ Joda.registerTemplate("sec-multi-card",
20
20
  `
21
21
 
22
22
  <section class="tjs__sec-multi-card">
23
- <div class="container header" style="--joda-on-empty-class: d-none;">
23
+ <div class="container header heading-style-default" style="--joda-on-empty-class: d-none;">
24
24
  <slot class="tjs__section-text" data-select=":scope > .content"></slot>
25
25
  </div>
26
26
  <div class="container">
@@ -3,21 +3,17 @@ Joda.registerTemplate("sec-testimonial-ribbon",
3
3
  // language=HTML
4
4
  `
5
5
 
6
- <div class="tjs__sec-testimonial-ribbon :: mobile :lg:">
7
- <div class="tjs__sec-testimonial-ribbon--wrapper">
8
- <div class="tjs__sec-testimonial-ribbon--container [[layout.container]] :: :xl: mt-0">
9
- <div class="row">
10
- <div class="col-lg-3 image-round mx-auto :: :xl: my-auto">
11
- <div class="ratio ratio-1x1">
12
- <slot data-select="img" data-replace=""></slot>
13
- </div>
6
+ <div class="tjs-testimonial-ribbon :: mobile :lg:">
7
+ <div class="x--wrapper">
8
+ <div class="x--container [[layout.container]] :: :xl:">
14
9
 
10
+ <div class="x--row">
11
+ <div class="x--image">
12
+ <slot class="" data-select="img"></slot>
15
13
  </div>
16
- <div class="col-lg-9 text-format :: :lg: my-auto">
17
- <slot></slot>
18
- </div>
19
14
 
20
- </div>
15
+ <slot class="x--text"></slot>
16
+
21
17
  </div>
22
18
  </div>
23
19
  </div>
@@ -14,3 +14,4 @@ import "./hero-title-small/hero-title-small";
14
14
  import "./cta-form/cta-form";
15
15
  import "./image-gallery1/image-gallery1";
16
16
  import "./infobox/infobox";
17
+ import "./subheader/subheader";
@@ -14,3 +14,4 @@ import "./hero-title-small/hero-title-small";
14
14
  import "./cta-form/cta-form";
15
15
  import "./image-gallery1/image-gallery1";
16
16
  import "./infobox/infobox";
17
+ import "./subheader/subheader";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import { Joda } from "@leuffen/jodastyle";
2
+ Joda.registerTemplate("subheader",
3
+ // language=HTML
4
+ `
5
+
6
+ <div class="tjs-subheader">
7
+ <div class="x-wrapper [[layout.container]]">
8
+ <div class="x-inner">
9
+ <slot></slot>
10
+ </div>
11
+ </div>
12
+ </div>
13
+ `, {
14
+ container: "container"
15
+ });
@@ -15,3 +15,7 @@
15
15
  .bg-soft-dark {
16
16
  background-color: $soft-dark !important;
17
17
  }
18
+
19
+ .bg-accent {
20
+ background-color: $accent !important;
21
+ }
@@ -0,0 +1,39 @@
1
+
2
+
3
+ ul.image-list {
4
+ --layout-columns: 3;
5
+ --layout-image-height: 64px;
6
+ --layout-min-width: 200px;
7
+
8
+ display: flex;
9
+ flex-direction: row;
10
+
11
+ flex-wrap: wrap;
12
+ padding-left: 0;
13
+
14
+ list-style: none;
15
+ &>li {
16
+ padding: 10px;
17
+ min-width: var(--layout-min-width);
18
+
19
+ flex: 1 1 calc(100% / var(--layout-columns));
20
+
21
+ // Center text vertically
22
+ display: flex;
23
+ align-items: center;
24
+ img {
25
+ height: var(--layout-image-height);
26
+ width: var(--layout-image-height);
27
+ border-radius: 100%;
28
+ padding: 4px;
29
+ border: 1px solid #ccc;
30
+ background-color: white;
31
+ object-fit: cover;
32
+ float: left;
33
+ margin-right: 10px;
34
+ }
35
+
36
+ }
37
+
38
+
39
+ }
@@ -5,3 +5,4 @@
5
5
  @import "hero-slide/hero-slide";
6
6
  @import "button-group/button-group";
7
7
  @import "text-format";
8
+ @import "image-list";
@@ -6,7 +6,7 @@
6
6
  --layout-text-shadow: 0 0 2px rgba(255, 255, 255, 1);
7
7
  --layout-align-self: center;
8
8
  --layout-justify-self: center;
9
- --layout-cols: 6;
9
+ --layout-cols: 12;
10
10
 
11
11
  --layout-y-adjust: 25%;
12
12
  --layout-x-adjust: 25%;
@@ -35,6 +35,10 @@
35
35
  }
36
36
  &.mobile {
37
37
  width: 100%;
38
+
39
+ .btn {
40
+ width: 100%;
41
+ }
38
42
  }
39
43
 
40
44
 
@@ -4,7 +4,7 @@ Joda.registerTemplate("hero-slide",
4
4
  // language=HTML
5
5
  `
6
6
 
7
- <article class="hero-slide :: mobile :xl: desktop">
7
+ <article class="hero-slide :: mobile :lg: desktop">
8
8
  <slot></slot>
9
9
  </article>
10
10
 
@@ -3,7 +3,7 @@
3
3
  @import "../themes/_vendor/font-cinzel";
4
4
 
5
5
  $font-family-base: 'Open Sans', sans-serif;
6
- $font-size-base: 1rem !default;
6
+ //$font-size-base: 1rem !default;
7
7
 
8
8
  $font-family-header: 'Cinzel', serif !default;
9
- $font-size-header: 1.8rem !default;
9
+ //$font-size-header: 1.8rem !default;
package/package.json CHANGED
@@ -1,15 +1,14 @@
1
1
  {
2
2
  "name": "@leuffen/themejs1",
3
- "version": "7.0.3",
4
-
3
+ "version": "8.0.2",
5
4
  "description": "",
6
5
  "license": "proprietary",
7
6
  "main": "./dist/index.js",
8
7
  "module": "./dist/index.js",
9
8
  "exports": {
10
- ".": [
9
+ ".": [
11
10
  "./dist/index.js",
12
- "./index.ts",
11
+ "./index.ts",
13
12
  "./index.scss"
14
13
  ],
15
14
  "./index": [
@@ -18,9 +17,9 @@
18
17
  "./index.scss"
19
18
  ],
20
19
  "./embed": [
21
- "./dist/embed.js",
22
- "./embed.ts",
23
- "./embed.scss"
20
+ "./dist/embed.js",
21
+ "./embed.ts",
22
+ "./embed.scss"
24
23
  ],
25
24
  "./index.dev": [
26
25
  "./dist/index.dev.js"
@@ -31,6 +30,7 @@
31
30
  "./theme1": [
32
31
  "./theme1.scss"
33
32
  ],
33
+ "./themes/": "./themes/",
34
34
  "./font/": "./font/"
35
35
  },
36
36
  "directories": {
@@ -47,28 +47,29 @@
47
47
  "/elements",
48
48
  "/sections",
49
49
  "/_tpl",
50
- "*.scss"
50
+ "*.scss",
51
+ "*.json"
51
52
  ],
52
53
  "workspaces": [
53
54
  "workspaces/*"
54
55
  ],
55
56
  "author": "",
56
57
  "dependencies": {
57
- "@leuffen/jodastyle": "^3.1.2",
58
58
  "@kasimirjs/embed": "^1.0.23",
59
+ "@kasimirjs/kit-bootstrap": "^1.0.4",
59
60
  "@leuffen/isl-base": "^3.0.7",
61
+ "@leuffen/jodastyle": "^3.1.2",
60
62
  "@leuffen/liscom": "^2.0.10",
61
63
  "@leuffen/liscom-loader": "^1.1.10",
62
64
  "@leuffen/liweco-base": "^2.0.3",
63
65
  "@micx/lib-js": "^1.0.22",
66
+ "@types/node": "^20.12.12",
64
67
  "bootstrap": "^5.3.0",
65
-
66
- "@kasimirjs/kit-bootstrap": "^1.0.4",
67
- "markdown-it": "^13.0.1",
68
- "markdown-it-attrs": "^4.1.6",
69
68
  "css-loader": "^6.7.1",
70
69
  "dart-sass": "^1.25.0",
71
70
  "esbuild-loader": "^2.20.0",
71
+ "markdown-it": "^13.0.1",
72
+ "markdown-it-attrs": "^4.1.6",
72
73
  "mini-css-extract-plugin": "^2.6.1",
73
74
  "raw-loader": "^4.0.2",
74
75
  "sass": "^1.56.1",
@@ -77,14 +78,15 @@
77
78
  "webpack": "^5.75.0",
78
79
  "webpack-cli": "^5.0.1",
79
80
  "webpack-dev-server": "^4.11.1"
80
-
81
- },
82
- "devDependencies": {
83
-
84
81
  },
85
82
  "scripts": {
86
83
  "make.mjs": "tsc -d",
87
84
  "build": "npm run make.mjs",
88
85
  "test": "echo \"Error: no test specified\" && exit 1"
86
+ },
87
+ "devDependencies": {
88
+ "ts-node": "^10.9.2",
89
+ "tsx": "^4.10.3",
90
+ "typescript": "^5.4.5"
89
91
  }
90
92
  }
@@ -1,41 +1,12 @@
1
- :root {
2
- --t-background: #{$background};
3
- --t-background-footer: #{$background-footer};
4
- --t-section-background: transparent;
5
- --t-section-background-accent: #{$background-accent};
6
- --t-section-background-primary: #{$soft-primary};
7
1
 
8
2
 
9
- --t-font-family-base: #{$font-family-base};
10
- --t-font-family-header: #{$font-family-header};
11
3
 
4
+ section:last-child {
5
+ padding-bottom: 0;
6
+ }
12
7
 
13
-
14
- --t-section-border-color: #{$section-border-color};
15
- --t-section-border-radius: #{$section-border-radius};
16
-
17
- --t-text-background: #fff;
18
- --t-text-color: #707070;
19
- --t-text-background-light: var(--t-background);
20
- --t-text-color-accent: var(--bs-gray-900);
21
- --t-text-color-primary: var(--bs-primary);
22
- --t-header-text-transform: #{$header-text-transform};
23
-
24
- --t-border-color: #{$border-color};
25
- --t-navbar-height: 88px;
26
-
27
- /* What to substract from 100vh to start the next elemment after fullsize header */
28
- --t-fullsize-modifier: #{$hero-fullsize-modifier};
29
-
30
- --t-header-margin: 0 0 20px 0;
31
- --t-paragraf-margin: 0 0 20px 0;
32
-
33
- --t-section-padding: 40px 0;
34
- --t-section-inner-padding: 3rem;
35
-
36
- --t-accent: #{$accent};
37
- --t-primary: #{$primary};
38
- --t-soft-primary: #{$soft-primary};
39
- --t-soft-accent: #{$soft-accent};
40
-
8
+ div.content {
9
+ &>p:last-child {
10
+ margin-bottom: 0;
11
+ }
41
12
  }
@@ -0,0 +1,137 @@
1
+ import {defineSection, example, SectionLayoutGroup} from "../sections.def";
2
+
3
+ defineSection('about', SectionLayoutGroup.Page)`
4
+
5
+ This is a examples of a whole page with multiple sections. It is the index site of the website.
6
+
7
+
8
+ `;
9
+
10
+
11
+ example("Startsite with a mix of sections.")`
12
+ ## Unser Team
13
+ {: layout="use: #sec-card-2col"}
14
+
15
+ > Zahnmedizin in der Engelstraße
16
+
17
+ ![](https://cdn.leuffen.de//shomann-k68/v2/18/a_gfedcba/Gruppenbild-Treppe-mit-Aerzten-1x1.webp)
18
+
19
+ Unsere Zahnarztpraxis wurde 1978 in Lünen-Süd gegründet. 10 Jahre später erfolgte der Umzug in unser jetziges Domizil in die Engelstraße. Unser Behandlerteam Dr. Nicole Lehnert, Konstantinos Naziris, Dr. Steffen Homann und Anna Stammer setzen jeden Tag alles daran, Ihnen die bestmögliche zahnmedizinische Versorgung zu bieten.
20
+
21
+
22
+
23
+ ## Testimonial
24
+ {: layout="use: #sec-testimonial-ribbon"}
25
+
26
+ ![](https://cdn.leuffen.de//shomann-k68/v2/26/249-205_gfedcba/Naziris_Stammer_Edit.webp)
27
+
28
+ „Es ist uns wichtig keine unpersönlichen Medizin-Dienstleister zu sein. Für unser Praxis-Team ist die fürsorgliche und persönliche Betreuung unserer Patientinnen und Patienten ebenso wichtig wie die professionelle Behandlung. Wir kümmern uns deshalb nicht nur um die Gesundheit der Zähne, sondern richten unser Augenmerk auf den ganzen Menschen, auf die Zusammenhänge zwischen Zahngesundheit und Allgemeinbefinden.“
29
+
30
+ — Konstantinos Naziris und Anna Stammer
31
+
32
+ ## Ihr Zahnarzt
33
+ {: layout="use: #sec-card-2col"}
34
+
35
+ > Konstantinos Naziris
36
+
37
+ ![Bild des Teams](https://cdn.leuffen.de//shomann-k68/v2/22/c_gfedcba/Naziris-Portrait.webp)
38
+
39
+ |----|--------------------------------------------------------------------|
40
+ | Studium der Zahnmedizin | 1993 - 1999 in Bukarest |
41
+ | Weiterbildung | 2007 - 2010 Fachrichtung Parodontologie an der Universität Witten/Herdecke |
42
+ | Behandlungsschwerpunkte | Kieferorthopädie |
43
+ | Mitgliedschaft | DGB (Deutsche Gesellschaft für Parodontologie) |
44
+ {: .table}
45
+
46
+ ## Ihre Zahnärztin
47
+ {: layout="use: #sec-card-2col"}
48
+
49
+ > Dr. Nicole Lehnert
50
+
51
+ ![Bild des Teams](https://cdn.leuffen.de//shomann-k68/v2/1/4625-3083_gfedcba/Dr-Nicole-Lehnert.webp)
52
+
53
+ |----|--------------------------------------------------------------------|
54
+ | Zahntechnische Ausbildung | 1986 bis 1988 in Witten |
55
+ | Studium der Zahnmedizin | 1988 bis 1994 in Frankfurt/Main |
56
+ | Promotion | 1999 zum Dr.med.dent |
57
+ | Assistenzarztzeit | in kieferorthopädischer und Mund-Kiefer- und Gesichtschirurgischer Praxis in Lüdenscheid |
58
+ | Fortbildungen | Kieferorthopädie und Kinderbehandlung |
59
+ {: .table}
60
+
61
+ ## Ihr Zahnarzt
62
+ {: layout="use: #sec-card-2col"}
63
+
64
+ > Dr. Steffen Homann
65
+
66
+ ![Bild des Teams](https://cdn.leuffen.de//shomann-k68/v2/4/c_gfedcba/Dr-Steffen-Homann.webp)
67
+
68
+ |----|--------------------------------------------------------------------|
69
+ | Studium der Zahnmedizin | 2010 bis 2015 an der Julius-Maximilians-Universität Würzburg |
70
+ | Promotionsstudium | 2016 bis 2020 an der Ruprecht-Karls-Universität Heidelberg |
71
+ | Tätigkeit | 2017 bis 2022 als angestellter Zahnarzt bei Zahnarztpraxis Dr. Wündrich und Kollegen in Bammental bei Heidelberg |
72
+ | Promotion | 2020 zum Dr.med.dent zum Thema der epigenetischen Regulation von Plattenepithelkarzinomen der Kopf- und Halsregion |
73
+ | Curriculum Implantologie | 2021 9+2 der Deutschen Gesellschaft für Orale Implantologie (DGOI) |
74
+ {: .table}
75
+
76
+ ## Ihre Zahnärztin
77
+ {: layout="use: #sec-card-2col"}
78
+
79
+ > Anna Stammer
80
+
81
+ ![Bild des Teams](https://cdn.leuffen.de//shomann-k68/v2/3/4676-3117_gfedcba/Zahnaerztin-Anna-Stammer.webp)
82
+
83
+ |----|--------------------------------------------------------------------|
84
+ | Studium der Zahnmedizin | 2003 bis 2009 an der Uni Witten/Herdecke |
85
+ | Mitarbeit | vor Ort in einem zahnärztlichen Hilfsprojekt in Gambia (Afrika) |
86
+ | Anstellung | seit 2018 in unserer Praxis |
87
+ | Vorherige Tätigkeit | als angestellte Zahnärztin und Schulzahnärztin |
88
+ | Fortbildungen | in verschiedenen Bereichen der Zahnmedizin (u.a. Kinderbehandlung, Gutachtertätigkeit) |
89
+ | Curriculum Craniomandibuläre Dysfunktion(CMD) | 2013 Haranni-Klinik Herne |
90
+ {: .table}
91
+
92
+
93
+ ## Praxisteam
94
+ {: layout="use: #sec-multi-card; cols:3;aspect-ratio: 5/4;"}
95
+
96
+ ### Birgit und Beate
97
+
98
+ ![](https://cdn.leuffen.de//shomann-k68/v2/8/c_gfedcba/Birgit_Beate.webp)
99
+
100
+
101
+ ### Meggie, Jana und Jana
102
+
103
+ ![](https://cdn.leuffen.de//shomann-k68/v2/11/c_gfedcba/Meggie_Jana_Jana.webp)
104
+
105
+
106
+ ### Saskia und Amela
107
+
108
+ ![](https://cdn.leuffen.de//shomann-k68/v2/24/c_gfedcba/Saskia-und-Amela.webp)
109
+
110
+
111
+ ### Bahar und Kim
112
+
113
+ ![](https://cdn.leuffen.de//shomann-k68/v2/9/c_gfedcba/Bahar_Kim.webp)
114
+
115
+
116
+ ### Kim und Jana
117
+
118
+ ![](https://cdn.leuffen.de//shomann-k68/v2/7/c_gfedcba/Kim_Jana.webp)
119
+
120
+ ## Zahntechniker
121
+ {: layout="use: #sec-multi-card; cols:3"}
122
+
123
+ ### Theodoros Naziris
124
+
125
+ ![](https://cdn.leuffen.de//shomann-k68/v2/21/c_gfedcba/Zahntechniker-Theodoros-Naziris.webp)
126
+
127
+
128
+
129
+ ## Kontakt
130
+ {: layout="use: #cta-base"}
131
+
132
+ Informationen zu Behandlungen, Sprechstundenzeiten und Kontaktdaten finden Sie auf den nachfolgenden Seiten.
133
+
134
+ [Unsere Leistungen](/leistungen)
135
+ [Online Termin vereinbaren](/online-termin#online-termin-vereinbaren)
136
+ [Kontakt](/kontakt)
137
+ `;