Merge remote-tracking branch 'origin/main'

This commit is contained in:
Moritz Utcke
2025-04-07 04:12:36 -04:00
7 changed files with 290 additions and 4 deletions

View File

@@ -18,7 +18,8 @@ export const createCaller = createCallerFactory({
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"), "auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
"auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"), "auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"),
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
"ausweise": await import("../src/pages/api/ausweise/index.ts"), "bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"),
"bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"),
"bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"), "bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"),
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
"bilder/[id]": await import("../src/pages/api/bilder/[id].ts"), "bilder/[id]": await import("../src/pages/api/bilder/[id].ts"),

View File

@@ -0,0 +1,86 @@
<script>
import { PRICES } from "#lib/constants";
export let bullets;
export let title;
export let ref = "";
import { Enums } from "#lib/client/prisma";
bullets = [
["Prüfung durch Dipl.&nbsp;Ing. rechtssicher nach&nbsp;GEG",true, true],
["GEG Nachweis inkl. Bauteildokumentation und Energieausweis nach Abschluss der Baumaßnahme",true, true],
["Fotoupload<br>Dokumentenupload<br>(Pläne, Unterlagen)",true, true],
["Onlinefragebogen zum Gebäude",true, true],
["persönlicher&nbsp;Support",true, true],
["Dokumentensichtung<br>",true, true],
["telefonische Beratung<br>persönlicher Energieberater",true, true],
["Begleitung und Fachberatung",false, true],
]
</script>
<h1>Produktübersicht: <span class="text-secondary">GEG Nachweis Gewerbe</span></h1>
<h3>GEG Nachweis Leistungen und Preise in der Übersicht:</h3>
<hr>
<br>
<div id="ProduktUebersichtBedarfssausweisGewerbe">
<div class="w-full sm:w-[90%] sm:mx-auto grid grid-cols-[1fr_max-content_max-content_max-content] sm:grid-cols-[1fr_min-content_min-content_min-content]">
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center sm:text-[1.25rem]">
<div class="justify-self-start pl-2"><b>Leistung</b></div><div><b>online</b></div><div><b>premium</b></div>
</div>
{#each bullets as [bullet,online,premium,offline]}
<div class="bullet grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center">
<div class="justify-self-start pl-2">{@html bullet}</div>
<div class:check={online} class:check-no={!online}>{online ? "✔" : ""}</div>
<div class:check={premium} class:check-no={!premium}>{premium ? "✔" : ""}</div>
</div>
{/each}
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center sm:text-[1.25rem]">
<div class="price justify-self-start pl-2">Preis inkl. MwSt.</div>
<div class="price"><b>ab {PRICES.GEGNachweisGewerbe[Enums.AusweisTyp.Standard]}&nbsp;</b></div>
<div class="price"><b>ab {PRICES.GEGNachweisGewerbe[Enums.AusweisTyp.Beratung]}&nbsp;</b></div>
</div>
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center">
<div class="justify-self-start pl-2"></div>
<a href="{ref}/angebot-anfragen/geg-nachweis-gewerbe-anfragen?ausweistyp={Enums.AusweisTyp.Standard}"><button class="bestellbutton" type="button">jetzt<br>anfragen</button></a>
<a href="{ref}/angebot-anfragen/geg-nachweis-gewerbe-anfragen?ausweistyp={Enums.AusweisTyp.Beratung}"><button class="bestellbutton" type="button">jetzt<br>anfragen</button></a>
</div>
</div>
</div>
<style lang="postcss">
.bestellbutton{@apply px-[2px] sm:px-4 mx-[2px] sm:mx-2 py-2 bg-secondary ring-2 ring-secondary/25 rounded-none xs:rounded-md text-white text-nowrap font-bold
hover:bg-gradient-to-br from-secondary to-secondary-grad hover:shadow-lg transition-all hover:no-underline hover:ring-2 hover:ring-primary;}
.zeile{@apply text-[0.6rem] sm:text-[1rem] md:text-[1.5rem]}
.bullet{@apply text-[0.75rem] sm:text-[1rem] md:text-[1.25rem]}
.bullet:nth-child(even){@apply bg-blue-100/40}
.bullet:nth-child(2){@apply !border-t-[6px]}
.bullet:nth-child(8){@apply !border-b-[6px]}
.check {
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-green-700;
}
.check-no {
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-black;
}
.price{@apply text-[1.25rem] sm:text-[2rem]}
</style>

View File

@@ -0,0 +1,86 @@
<script>
import { PRICES } from "#lib/constants";
export let bullets;
export let title;
export let ref = "";
import { Enums } from "#lib/client/prisma";
bullets = [
["Prüfung durch Dipl.&nbsp;Ing. rechtssicher nach&nbsp;GEG",true, true],
["GEG Nachweis inkl. Bauteildokumentation und Energieausweis nach Abschluss der Baumaßnahme",true, true],
["Fotoupload<br>Dokumentenupload<br>(Pläne, Unterlagen)",true, true],
["Onlinefragebogen zum Gebäude",true, true],
["persönlicher&nbsp;Support",true, true],
["Dokumentensichtung<br>",true, true],
["telefonische Beratung<br>persönlicher Energieberater",true, true],
["Begleitung und Fachberatung",false, true],
]
</script>
<h1>Produktübersicht: <span class="text-secondary">GEG Nachweis Wohngebäude</span></h1>
<h3>GEG Nachweis Leistungen und Preise in der Übersicht:</h3>
<hr>
<br>
<div id="ProduktUebersichtBedarfssausweisGewerbe">
<div class="w-full sm:w-[90%] sm:mx-auto grid grid-cols-[1fr_max-content_max-content_max-content] sm:grid-cols-[1fr_min-content_min-content_min-content]">
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center sm:text-[1.25rem]">
<div class="justify-self-start pl-2"><b>Leistung</b></div><div><b>online</b></div><div><b>premium</b></div>
</div>
{#each bullets as [bullet,online,premium,offline]}
<div class="bullet grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center">
<div class="justify-self-start pl-2">{@html bullet}</div>
<div class:check={online} class:check-no={!online}>{online ? "✔" : ""}</div>
<div class:check={premium} class:check-no={!premium}>{premium ? "✔" : ""}</div>
</div>
{/each}
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center sm:text-[1.25rem]">
<div class="price justify-self-start pl-2">Preis inkl. MwSt.</div>
<div class="price"><b>ab {PRICES.GEGNachweisWohnen[Enums.AusweisTyp.Standard]}&nbsp;</b></div>
<div class="price"><b>ab {PRICES.GEGNachweisWohnen[Enums.AusweisTyp.Beratung]}&nbsp;</b></div>
</div>
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center">
<div class="justify-self-start pl-2"></div>
<a href="{ref}/angebot-anfragen/geg-nachweis-wohnen-anfragen?ausweistyp={Enums.AusweisTyp.Standard}"><button class="bestellbutton" type="button">jetzt<br>anfragen</button></a>
<a href="{ref}/angebot-anfragen/geg-nachweis-wohnen-anfragen?ausweistyp={Enums.AusweisTyp.Beratung}"><button class="bestellbutton" type="button">jetzt<br>anfragen</button></a>
</div>
</div>
</div>
<style lang="postcss">
.bestellbutton{@apply px-[2px] sm:px-4 mx-[2px] sm:mx-2 py-2 bg-secondary ring-2 ring-secondary/25 rounded-none xs:rounded-md text-white text-nowrap font-bold
hover:bg-gradient-to-br from-secondary to-secondary-grad hover:shadow-lg transition-all hover:no-underline hover:ring-2 hover:ring-primary;}
.zeile{@apply text-[0.6rem] sm:text-[1rem] md:text-[1.5rem]}
.bullet{@apply text-[0.75rem] sm:text-[1rem] md:text-[1.25rem]}
.bullet:nth-child(even){@apply bg-blue-100/40}
.bullet:nth-child(2){@apply !border-t-[6px]}
.bullet:nth-child(8){@apply !border-b-[6px]}
.check {
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-green-700;
}
.check-no {
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-black;
}
.price{@apply text-[1.25rem] sm:text-[2rem]}
</style>

View File

@@ -0,0 +1,112 @@
<script>
import { PRICES } from "#lib/constants";
import { Enums } from "#lib/client/prisma";
</script>
<div class="mt-6 mb-6 m-auto w-[99%] relative">
<div id="produktvergleich">
<div class="saeule">
<div class="blue-top flex flex-row ">
<div><img class="" src="/images/right-sidebar/UMBE_wohngebaeude-weiss.svg" alt="Wohnhaus GEG Nachweis"/></div>
<div class="name">GEG Nachweis<br>Wohnen</div>
</div>
<div class="white box">
<div class="variante">fundiert</div>
<div class="services"><div>Nachweis fürs Bauamt bei Neubau oder Modernisierung.</div><div class="check"></div></div>
<div class="services"><div>Beinhaltet die Effizienz der Bauteile und Anlagentechnik.</div><div class="check"></div></div>
<div class="services"><div>Erstellung des Energieausweises nach Abschluss inklusive.</div><div class="check-no"></div></div>
<div class="services"><div>Berechnung und Bilanzierung nach aktueller DIN 18599.</div><div class="check-no"></div></div>
<div class="services"><div>Berechnung und Bilanzierung nach aktueller DIN 18599.</div><div class="check-no"></div></div>
</div>
<div class="orange">
<div class="price">
ab <b> {PRICES.GEGNachweisWohnen[Enums.AusweisTyp.Standard]} </b>€ inkl. 19% MwSt.
</div>
</div>
<div class="blue-bottom">
<div class="cta"><a href="/angebot-anfragen/geg-nachweis-wohnen-anfragen" class="text-white">jetzt anfragen</a></div>
</div>
</div>
<div class="saeule">
<div class="blue-top flex flex-row ">
<div><img class="" src="/images/right-sidebar/UMBE_gewerbegebaeude-weiss.svg" alt="GEG Nachweis Gewerbe"/></div>
<div class="name">GEG Nachweis<br>Gewerbe</div>
</div>
<div class="white box">
<div class="variante">fundiert</div>
<div class="services"><div>Nachweis fürs Bauamt bei Neubau oder Modernisierung.</div><div class="check"></div></div>
<div class="services"><div>Beinhaltet die Effizienz der Bauteile und Anlagentechnik.</div><div class="check"></div></div>
<div class="services"><div>Erstellung des Energieausweises nach Abschluss inklusive.</div><div class="check"></div></div>
<div class="services"><div>Berechnung und Bilanzierung nach aktueller DIN 18599.</div><div class="check"></div></div>
<div class="services"><div>Mehrzonenmodell inkl. Erstellung eines 3D Gebäudemodells.</div><div class="check"></div></div>
</div>
<div class="orange">
<div class="price">
<b>ab {PRICES.GEGNachweisGewerbe[Enums.AusweisTyp.Standard]} €</b> inkl. 19% MwSt.
</div>
</div>
<div class="blue-bottom">
<div class="cta"><a href="/angebot-anfragen/geg-nachweis-gewerbe-anfragen" class="text-white">jetzt online anfragen</a></div>
</div>
</div>
</div>
</div>
<style lang="scss">
#produktvergleich{@apply
grid grid-cols-[1fr] gap-y-1 gap-x-3
lg:grid-cols-2
xl:grid-cols-2;
.saeule{@apply grid grid-rows-subgrid row-span-10 mb-8;
img{@apply justify-self-center mb-1 w-[75%] }
.blue-top{@apply bg-secondary text-white text-center font-bold rounded-md mb-1 p-4 shadow-saeule ring-secondary ring-1}
.name{@apply w-full}
.name{font-size: clamp(15px, 3vh, 18px)}
.white{@apply text-center text-black p-4 grid grid-rows-subgrid row-span-6 shadow-saeule}
.variante{@apply w-fit text-black justify-self-end mr-4}
.variante{font-size: clamp(15px, 4vh, 24px)}
.services{@apply text-base py-2 grid grid-cols-[1fr_minmax(10px,50px)]}
.services:not(:last-child){@apply border-b-[1px] border-gray-400}
.check{@apply self-center font-bold text-green-700}
.check-no{@apply self-center font-bold text-red-700}
.orange{@apply bg-primary text-white text-center rounded-md p-1 relative shadow-saeule ring-primary ring-1}
.price{font-size: clamp(15px, 3vh, 28px)}
.blue-bottom, .check, .check-no{font-size: clamp(15px, 3vh, 24px)}
.blue-bottom{@apply bg-secondary text-white text-center font-bold rounded-md p-1 shadow-saeule ring-secondary ring-1}
}
}
</style>

View File

@@ -45,7 +45,6 @@
<div class="relative bg-gray-100 rounded-md flex justify-center items-center"> <div class="relative bg-gray-100 rounded-md flex justify-center items-center">
{#if aufnahme.bilder.length > 0} {#if aufnahme.bilder.length > 0}
<h3 class="font-semibold">Bilder</h3>
<Carousel perPage={3}> <Carousel perPage={3}>
{#each aufnahme.bilder as bild, i (i)} {#each aufnahme.bilder as bild, i (i)}
<img src="/bilder/{bild.id}.jpg" alt={bild.kategorie} class="max-h-[25vh] h-full w-full object-contain"> <img src="/bilder/{bild.id}.jpg" alt={bild.kategorie} class="max-h-[25vh] h-full w-full object-contain">

View File

@@ -3,7 +3,9 @@ import Layout from "#layouts/Layout.astro";
import ProduktUebersichtGEGNachweisGewerbe from "#components/design/content/ProduktUebersichtGEGNachweisGewerbe.svelte"; import ProduktUebersichtGEGNachweisGewerbe from "#components/design/content/ProduktUebersichtGEGNachweisGewerbe.svelte";
--- ---
<Layout title="GEG Nachweis Gewerbe Produktübersicht"> <Layout title="GEG Nachweis Gewerbe - Produktübersicht">
<ProduktUebersichtGEGNachweisGewerbe> <ProduktUebersichtGEGNachweisGewerbe>

View File

@@ -3,7 +3,7 @@ import Layout from "#layouts/Layout.astro";
import ProduktUebersichtGEGNachweisWohnen from "#components/design/content/ProduktUebersichtGEGNachweisWohnen.svelte"; import ProduktUebersichtGEGNachweisWohnen from "#components/design/content/ProduktUebersichtGEGNachweisWohnen.svelte";
--- ---
<Layout title="GEG Nachweis Wohnen Produktübersicht"> <Layout title="GEG Nachweis Wohnen -Produktübersicht">
<ProduktUebersichtGEGNachweisWohnen> <ProduktUebersichtGEGNachweisWohnen>