diff --git a/src/components/sections/BentoGrid.astro b/src/components/sections/BentoGrid.astro new file mode 100644 index 0000000..3cea048 --- /dev/null +++ b/src/components/sections/BentoGrid.astro @@ -0,0 +1,36 @@ +--- +import type { SiteConfig } from '../../utils/configLoader'; + +interface Props { + config: SiteConfig['bento']; +} + +const { config } = Astro.props; +--- + +
+
+

{config.sectionTitle}

+

{config.sectionSubtitle}

+
+ +
+ {config.cards.map((card) => ( +
+
+ {card.badge && ( + + {card.badge} + + )} +

{card.title}

+

{card.description}

+
+ +
+ Details → +
+
+ ))} +
+
diff --git a/src/components/sections/ContactSection.astro b/src/components/sections/ContactSection.astro new file mode 100644 index 0000000..5668b8e --- /dev/null +++ b/src/components/sections/ContactSection.astro @@ -0,0 +1,88 @@ +--- +import type { SiteConfig, SmtpConfig } from '../../utils/configLoader'; + +interface Props { + contactConfig: SiteConfig['contact']; + smtpConfig: SmtpConfig; +} + +const { contactConfig, smtpConfig } = Astro.props; +--- + +
+
+
+

{contactConfig.title}

+

{contactConfig.subtitle}

+
+ + {!smtpConfig.isConfigured && ( +
+ ⚡ Hinweis: SMTP noch im Platzhalter-Modus. Formular sendet Test-Events an die Server-Log. +
+ )} + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ + + + +
+
+
+ + diff --git a/src/components/sections/FallbackSection.astro b/src/components/sections/FallbackSection.astro new file mode 100644 index 0000000..f458f47 --- /dev/null +++ b/src/components/sections/FallbackSection.astro @@ -0,0 +1,13 @@ +--- +interface Props { + sectionName: string; +} + +const { sectionName } = Astro.props; +--- + +
+
+

⚙️ Section {sectionName} ist noch in Bearbeitung oder Platzhalter.

+
+
diff --git a/src/components/sections/HeroSection.astro b/src/components/sections/HeroSection.astro new file mode 100644 index 0000000..ef6eed4 --- /dev/null +++ b/src/components/sections/HeroSection.astro @@ -0,0 +1,76 @@ +--- +import type { SiteConfig, UIComponent } from '../../utils/configLoader'; + +interface Props { + config: SiteConfig['hero']; +} + +const { config } = Astro.props; + +const elements = config.elements || []; +const badgeElements = elements.filter((el: UIComponent) => el.slotId === 'hero-badge-slot'); +const actionElements = elements.filter((el: UIComponent) => el.slotId === 'hero-actions-slot'); +const customElements = elements.filter((el: UIComponent) => !el.slotId || el.slotId === 'hero-custom-slot'); +--- + +
+ + + +
+ + +
+ {config.badge && ( +
+ {config.badge} +
+ )} + {badgeElements.map(el => ( + + {el.content} + + ))} +
+ +

+ {config.title} +

+ +

+ {config.subtitle} +

+ + +
+ {config.ctaPrimaryText && ( + + {config.ctaPrimaryText} + + )} + {config.ctaSecondaryText && ( + + {config.ctaSecondaryText} + + )} + {actionElements.map(el => ( + + {el.content} + + ))} +
+ + + {customElements.length > 0 && ( +
+ {customElements.map(el => ( +
+ {el.type} [ID: {el.id}] + {el.content} +
+ ))} +
+ )} + +
+
diff --git a/src/pages/index.astro b/src/pages/index.astro index 6626062..17a6532 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -2,56 +2,47 @@ import Layout from '../layouts/Layout.astro'; import Navbar from '../components/Navbar.astro'; import Footer from '../components/Footer.astro'; -import HeroAndLiquidGlass from '../components/HeroAndLiquidGlass.astro'; -import OnboardingWizard from '../components/OnboardingWizard.astro'; +import HeroSection from '../components/sections/HeroSection.astro'; +import BentoGrid from '../components/sections/BentoGrid.astro'; +import ContactSection from '../components/sections/ContactSection.astro'; +import FallbackSection from '../components/sections/FallbackSection.astro'; +import { loadWaasConfigs } from '../utils/configLoader'; +import { THEME_PRESETS } from '../utils/themePresets'; + +const { siteConfig, themeConfig, smtpConfig } = loadWaasConfigs(); +const activePreset = THEME_PRESETS[themeConfig.activePreset] || THEME_PRESETS.corporateDark; +const colors = activePreset.colors; + +const sectionComponents: Record = { + hero: HeroSection, + bento: BentoGrid, + services: BentoGrid, + contact: ContactSection +}; --- - - - -
- {/* Clean, modular Hero and Liquid Glass section */} - - - - - - -
-
-
-
- - - - - -

Bereit für Ihr Projekt?

-

- Schreiben Sie uns direkt. Wir melden uns innerhalb von 24 Stunden persönlich bei Ihnen. -

- -
-
- - -
-
- - -
-
- - -
- -
-
-
-
-
- -