since3-portal/modules/templates/catalog/blocks/definitions.ts
2026-10-11 18:22:32 +02:00

642 lines
31 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { defineBlock, unsplash } from "../../lib/content"
// Bausteine des Baukastens: Felder und Standardinhalte. Die Komponenten dazu stehen in registry.tsx.
// Alle Bausteine nutzen nur die Paletten-Farben (t-bg, t-fg, t-accent …) und passen so zu jeder Palette.
// Das Feld „menu“ macht einen Baustein zum Menüpunkt; sein Anker entsteht aus dem Text (z. B. #kontakt).
export const BLOCK_CATEGORIES = [
"Navigation",
"Start",
"Über uns",
"Leistungen",
"Projekte & Galerie",
"Ablauf",
"Vertrauen",
"Stimmen",
"Team",
"Angebot",
"FAQ",
"Kontakt",
"Akzente",
"Abschluss",
] as const
// ── Navigation ───────────────────────────────────────────────────────────────
export const navLeiste = defineBlock({
type: "nav-leiste",
label: "Leiste",
category: "Navigation",
description: "Klassische Navigation über die volle Breite: transparent über dem Startbild, beim Scrollen mit Milchglas, auf dem Handy als Vollbild-Menü.",
defaults: { cta: "Kontakt", href: "#kontakt" },
})
export const navGlas = defineBlock({
type: "nav-glas",
label: "Glas-Pille",
category: "Navigation",
description: "Schwebende Navigation als Glas-Pille mit gleitender Hervorhebung – modern und leicht.",
defaults: { cta: "Gespräch buchen", href: "#kontakt" },
})
export const navMasthead = defineBlock({
type: "nav-masthead",
label: "Magazin-Kopf",
category: "Navigation",
description: "Großer Schriftzug wie auf einem Magazin-Cover; beim Scrollen erscheint eine schmale Leiste.",
defaults: { edition: "Ausgabe Nº 12 · Herbst/Winter", cta: "Termin vereinbaren", href: "#kontakt" },
})
// ── Start ────────────────────────────────────────────────────────────────────
export const heroKino = defineBlock({
type: "hero-kino",
label: "Kino-Fenster",
category: "Start",
description: "Ein Bildfenster öffnet sich beim Scrollen zum Vollbild – filmisch und eindrucksvoll.",
defaults: {
eyebrow: "Seit 1998 · Hamburg",
title: "Ideen, die\n*bleiben.*",
text: "Wir verbinden Erfahrung mit Neugier – und schaffen Lösungen, die heute begeistern und morgen noch tragen.",
cta: "Mehr erfahren",
href: "#leistungen",
image: unsplash("1506905925346-21bda4d32df4", 2400),
},
})
export const heroVollbild = defineBlock({
type: "hero-vollbild",
label: "Vollbild",
category: "Start",
description: "Großes Bild über die ganze Höhe mit langsamem Zoom, Überschrift und zwei Buttons.",
defaults: {
eyebrow: "Willkommen",
title: "Wir bringen Ideen\n*ans Licht.*",
text: "Persönlich, verlässlich und mit Liebe zum Detail – seit über 25 Jahren an der Seite unserer Kundinnen und Kunden.",
cta: "Kontakt aufnehmen",
href: "#kontakt",
ctaSecondary: "Unsere Leistungen",
hrefSecondary: "#leistungen",
image: unsplash("1519681393784-d120267933ba", 2400),
},
})
export const heroAurora = defineBlock({
type: "hero-aurora",
label: "Aurora",
category: "Start",
description: "Leuchtender Farbverlauf, Glas-Effekte und Schlagworte, die eine Lichtkugel umkreisen.",
defaults: {
badge: "Neu: Erstberatung in 48 Stunden",
title: "Die Zukunft beginnt\nmit *einer Idee.*",
text: "Wir verbinden Strategie, Design und Technologie – für Unternehmen, die nicht abwarten, sondern gestalten.",
cta: "Gespräch vereinbaren",
href: "#kontakt",
ctaSecondary: "Leistungen",
hrefSecondary: "#leistungen",
keywords: "Strategie, Design, Technologie, Wachstum, Service",
},
})
export const heroEditorial = defineBlock({
type: "hero-editorial",
label: "Editorial",
category: "Start",
description: "Wie ein Magazin: große Serifenschrift, das Bild öffnet sich wie Jalousien.",
defaults: {
eyebrow: "Ausgabe Nº 01",
title: "Schönheit\nliegt im *Detail.*",
text: "Wir glauben an Dinge, die mit Sorgfalt gemacht sind – und an Räume, die Geschichten erzählen.",
cta: "Entdecken",
href: "#projekte",
image: unsplash("1600607687939-ce8a6c25118c", 1600),
caption: "Wohnraum, Hamburg-Eppendorf",
},
})
export const heroKinetik = defineBlock({
type: "hero-kinetik",
label: "Kinetik",
category: "Start",
description: "Riesiger Schriftzug, dessen Buchstaben auf die Maus reagieren – auf dem Handy wogt er von selbst.",
defaults: {
eyebrow: "Studio für Gestaltung & Strategie",
word: "",
text: "Wir gestalten Marken, Räume und Erlebnisse, die Menschen bewegen – präzise im Detail, mutig im Ganzen.",
cta: "Projekte ansehen",
href: "#projekte",
image: unsplash("1479839672679-a46483c0e7c8", 1600),
},
})
// ── Über uns ─────────────────────────────────────────────────────────────────
export const statement = defineBlock({
type: "statement",
label: "Leitsatz",
category: "Über uns",
description: "Großer Text, dessen Wörter beim Scrollen nacheinander aufleuchten.",
defaults: {
menu: "",
eyebrow: "Über uns",
text: "Gute Arbeit beginnt mit Zuhören. Wir nehmen uns Zeit, verstehen, was Sie bewegt – und entwickeln daraus Lösungen, die nicht nur funktionieren, sondern begeistern.",
author: "Anna Lindberg",
role: "Gründerin",
},
})
export const storyKapitel = defineBlock({
type: "story-kapitel",
label: "Kapitel",
category: "Über uns",
description: "Erzählt eine Geschichte in Kapiteln; das Bild wechselt beim Scrollen mit.",
defaults: {
menu: "Geschichte",
eyebrow: "Unsere Geschichte",
title: "Vom ersten Tag\nbis *heute.*",
items: [
{ year: "1998", title: "Der Anfang", text: "Mit zwei Schreibtischen und einer großen Idee gründen wir unser Studio in einem Hinterhof in Hamburg.", image: unsplash("1497366811353-6870744d04b2", 1400) },
{ year: "2010", title: "Das Wachstum", text: "Aus dem kleinen Team werden 40 Menschen, aus Aufträgen werden langjährige Partnerschaften.", image: unsplash("1521737604893-d14cc237f11d", 1400) },
{ year: "2026", title: "Die Zukunft", text: "Heute verbinden wir Erfahrung mit neuen Ideen – und bleiben dabei, was uns ausmacht: nah, ehrlich, leidenschaftlich.", image: unsplash("1556761175-5973dc0f32e7", 1400) },
],
},
items: { items: "Kapitel" },
})
export const textBild = defineBlock({
type: "text-bild",
label: "Text & Bild",
category: "Über uns",
description: "Editorial mit Initiale, Zitat und Unterschrift; das Bild färbt sich beim Darüberfahren von der Maus aus ein.",
defaults: {
menu: "Über uns",
eyebrow: "Über uns",
title: "Mit Herz\nund *Haltung.*",
text: "Seit über 25 Jahren begleiten wir Menschen und Unternehmen auf ihrem Weg. Wir hören zu, denken mit und packen an – mit einem Team, das seine Arbeit liebt und für jedes Projekt brennt.",
quote: "Wir messen uns nicht an Aufträgen, sondern an Beziehungen, die bleiben.",
signature: "Anna Lindberg",
image: unsplash("1522071820081-009f0129c71c", 1400),
caption: "Unser Team im Hamburger Studio",
},
})
// ── Leistungen ───────────────────────────────────────────────────────────────
export const leistungenPanels = defineBlock({
type: "leistungen-panels",
label: "Panels",
category: "Leistungen",
description: "Bildpaneele, die sich beim Darüberfahren aufziehen – ideal für drei bis fünf Leistungen.",
defaults: {
menu: "Leistungen",
eyebrow: "Leistungen",
title: "Was wir *für Sie* tun.",
items: [
{ title: "Beratung", text: "Wir analysieren, wo Sie stehen, und zeigen, wohin es gehen kann – klar, ehrlich und umsetzbar.", image: unsplash("1552664730-d307ca884978", 1400) },
{ title: "Gestaltung", text: "Von der Idee zum Entwurf: Wir geben Ihren Vorhaben eine Form, die begeistert.", image: unsplash("1497366811353-6870744d04b2", 1400) },
{ title: "Umsetzung", text: "Wir setzen um – termingerecht, im Budget und mit einem Auge für jedes Detail.", image: unsplash("1531297484001-80022131f5a1", 1400) },
{ title: "Betreuung", text: "Auch nach dem Projekt sind wir für Sie da – persönlich und auf kurzem Weg.", image: unsplash("1521737604893-d14cc237f11d", 1400) },
],
},
items: { items: "Leistung" },
})
export const leistungenBento = defineBlock({
type: "leistungen-bento",
label: "Bento mit Lichtkegel",
category: "Leistungen",
description: "Kacheln im Bento-Raster; ein Lichtkegel folgt der Maus über alle Kacheln. Die erste Kachel ist groß, ein Bild ist optional.",
defaults: {
menu: "Leistungen",
eyebrow: "Leistungen",
title: "Alles aus\n*einer Hand.*",
text: "Von der ersten Idee bis zum fertigen Ergebnis – wir begleiten Sie auf dem ganzen Weg.",
items: [
{ title: "Strategie", text: "Wir finden heraus, was Sie wirklich weiterbringt, und machen daraus einen klaren Plan.", image: unsplash("1552664730-d307ca884978", 1200) },
{ title: "Design", text: "Gestaltung, die Ihre Marke unverwechselbar macht.", image: "" },
{ title: "Technologie", text: "Moderne Lösungen, die zuverlässig laufen.", image: "" },
{ title: "Service", text: "Persönliche Betreuung – schnell, freundlich und kompetent.", image: "" },
{ title: "Wachstum", text: "Maßnahmen, die messbar mehr Kundschaft bringen.", image: "" },
{ title: "Qualität", text: "Sorgfalt bis ins Detail – geprüft und dokumentiert.", image: "" },
],
},
items: { items: "Leistung" },
})
export const leistungenKarten = defineBlock({
type: "leistungen-karten",
label: "3D-Karten",
category: "Leistungen",
description: "Karten, die sich zur Maus neigen und einen Glanz werfen – mit Aufzählung je Leistung.",
defaults: {
menu: "Leistungen",
eyebrow: "Leistungen",
title: "Was wir *können.*",
items: [
{ title: "Beratung", text: "Klarheit über Ziele, Wege und Möglichkeiten.", features: "Analyse & Workshop\nStrategie & Fahrplan\nFördermöglichkeiten" },
{ title: "Planung", text: "Durchdachte Konzepte bis ins Detail.", features: "Konzept & Entwurf\nKosten & Zeitplan\nAbstimmung mit Partnern" },
{ title: "Umsetzung", text: "Wir machen aus Plänen Wirklichkeit.", features: "Projektsteuerung\nQualitätssicherung\nTransparente Berichte" },
{ title: "Betreuung", text: "Langfristig an Ihrer Seite.", features: "Feste Ansprechperson\nWartung & Pflege\nSchnelle Hilfe" },
],
},
items: { items: "Leistung" },
})
// ── Projekte & Galerie ───────────────────────────────────────────────────────
export const projekteQuerlauf = defineBlock({
type: "projekte-querlauf",
label: "Querlauf",
category: "Projekte & Galerie",
description: "Beim Scrollen gleiten große Bilder seitlich vorbei – mit Fortschrittsleiste.",
defaults: {
menu: "Projekte",
eyebrow: "Projekte",
title: "Ausgewählte\n*Arbeiten*",
items: [
{ title: "Haus am Wasser", category: "Wohnen", year: "2026", image: unsplash("1613490493576-7fde63acd811", 1600) },
{ title: "Pavillon", category: "Kultur", year: "2025", image: unsplash("1518005020951-eccb494ad742", 1600) },
{ title: "Studio Ost", category: "Arbeiten", year: "2024", image: unsplash("1497366811353-6870744d04b2", 1600) },
{ title: "Villa Sol", category: "Wohnen", year: "2023", image: unsplash("1512917774080-9991f1c4c750", 1600) },
{ title: "Haus Weiß", category: "Wohnen", year: "2022", image: unsplash("1487958449943-2429e8be8625", 1600) },
],
},
items: { items: "Projekt" },
})
export const projekteIndex = defineBlock({
type: "projekte-index",
label: "Index mit Bildspur",
category: "Projekte & Galerie",
description: "Projektliste im Swiss-Stil; die Maus hinterlässt eine Spur aus Projektbildern.",
defaults: {
menu: "Projekte",
eyebrow: "Index",
title: "Ausgewählte *Projekte*",
items: [
{ title: "Haus Weiß", location: "Hamburg", category: "Wohnen", year: "2026", image: unsplash("1487958449943-2429e8be8625", 800) },
{ title: "Pavillon Blau", location: "Berlin", category: "Kultur", year: "2025", image: unsplash("1518005020951-eccb494ad742", 800) },
{ title: "Kubus", location: "Köln", category: "Arbeiten", year: "2024", image: unsplash("1479839672679-a46483c0e7c8", 800) },
{ title: "Villa Sol", location: "Mallorca", category: "Wohnen", year: "2023", image: unsplash("1512917774080-9991f1c4c750", 800) },
{ title: "Atelier Licht", location: "München", category: "Innenraum", year: "2022", image: unsplash("1517705008128-361805f42e86", 800) },
],
},
items: { items: "Projekt" },
})
export const galerieKarussell = defineBlock({
type: "galerie-karussell",
label: "3D-Karussell",
category: "Projekte & Galerie",
description: "Bilder auf einem drehenden Zylinder – dreht sich beim Scrollen und lässt sich mit der Maus oder dem Finger ziehen.",
defaults: {
menu: "Galerie",
eyebrow: "Galerie",
title: "Einblicke in\n*Bewegung.*",
text: "Ziehen oder scrollen Sie, um die Galerie zu drehen.",
images: [
{ src: unsplash("1487958449943-2429e8be8625", 900), caption: "Haus Weiß" },
{ src: unsplash("1518005020951-eccb494ad742", 900), caption: "Pavillon" },
{ src: unsplash("1479839672679-a46483c0e7c8", 900), caption: "Kubus" },
{ src: unsplash("1613490493576-7fde63acd811", 900), caption: "Haus am Wasser" },
{ src: unsplash("1517705008128-361805f42e86", 900), caption: "Atelier" },
{ src: unsplash("1512917774080-9991f1c4c750", 900), caption: "Villa Sol" },
{ src: unsplash("1592078615290-033ee584e267", 900), caption: "Objekt" },
{ src: unsplash("1431576901776-e539bd916ba2", 900), caption: "Fassade" },
],
},
items: { images: "Bild" },
})
// ── Ablauf ───────────────────────────────────────────────────────────────────
export const ablaufLinie = defineBlock({
type: "ablauf-linie",
label: "Zeitstrahl",
category: "Ablauf",
description: "Eine Linie zeichnet sich beim Scrollen und lässt die Schritte nacheinander aufleuchten.",
defaults: {
menu: "Ablauf",
eyebrow: "Ablauf",
title: "So einfach geht's\n*mit uns.*",
items: [
{ title: "Kennenlernen", text: "In einem ersten Gespräch erfahren wir, was Sie vorhaben – kostenlos und unverbindlich.", duration: "Tag 1" },
{ title: "Konzept", text: "Wir entwickeln einen klaren Plan mit Zeitrahmen und transparentem Angebot.", duration: "1–2 Wochen" },
{ title: "Umsetzung", text: "Wir setzen um und halten Sie in jeder Phase auf dem Laufenden.", duration: "nach Plan" },
{ title: "Übergabe", text: "Sie erhalten das Ergebnis – und uns als Ansprechpartner auch danach.", duration: "Ziel erreicht" },
],
},
items: { items: "Schritt" },
})
export const ablaufSpalten = defineBlock({
type: "ablauf-spalten",
label: "Spalten",
category: "Ablauf",
description: "Schritte nebeneinander mit römischen Ziffern und Linien, die sich zeichnen.",
defaults: {
menu: "Ablauf",
eyebrow: "Ablauf",
title: "In vier *Schritten.*",
items: [
{ title: "Zuhören", text: "Wir lernen Sie und Ihr Vorhaben kennen – in Ruhe und ohne Verpflichtung." },
{ title: "Entwerfen", text: "Wir entwickeln Ideen und einen klaren Plan, den Sie mitgestalten." },
{ title: "Umsetzen", text: "Wir setzen sorgfältig und termingerecht um – mit festen Ansprechpartnern." },
{ title: "Begleiten", text: "Wir bleiben an Ihrer Seite – auch lange nach dem Abschluss." },
],
},
items: { items: "Schritt" },
})
// ── Vertrauen ────────────────────────────────────────────────────────────────
export const zahlen = defineBlock({
type: "zahlen",
label: "Kennzahlen",
category: "Vertrauen",
description: "Zahlen zählen beim Erscheinen hoch, feine Linien zeichnen sich. Überschrift optional.",
defaults: {
eyebrow: "",
title: "",
items: [
{ value: "25", suffix: "+", label: "Jahre Erfahrung" },
{ value: "1.200", suffix: "", label: "zufriedene Kunden" },
{ value: "40", suffix: "", label: "Menschen im Team" },
{ value: "4,9", suffix: "/5", label: "Bewertung im Schnitt" },
],
},
items: { items: "Kennzahl" },
})
export const logos = defineBlock({
type: "logos",
label: "Logo-Laufband",
category: "Vertrauen",
description: "Kunden oder Partner als endloses Laufband – mit Logo-Bild oder als Schriftzug.",
defaults: {
title: "Partner und Kunden, die uns vertrauen",
items: [
{ name: "Nordwerk", logo: "" },
{ name: "Velora", logo: "" },
{ name: "Kraftbau", logo: "" },
{ name: "Brightfield", logo: "" },
{ name: "Okuma", logo: "" },
{ name: "Lumio", logo: "" },
],
},
items: { items: "Kunde" },
})
// ── Stimmen ──────────────────────────────────────────────────────────────────
export const stimmenZitat = defineBlock({
type: "stimmen-zitat",
label: "Großes Zitat",
category: "Stimmen",
description: "Ein Zitat groß in Szene gesetzt; wechselt automatisch, mit Fortschrittsanzeige.",
defaults: {
menu: "",
eyebrow: "Stimmen",
items: [
{ quote: "Vom ersten Gespräch bis zum Ergebnis haben wir uns bestens aufgehoben gefühlt. Ehrlich, schnell und mit großem Gespür für das, was uns wichtig ist.", author: "Julia Hartmann", role: "Geschäftsführerin, Hartmann & Co." },
{ quote: "Selten so ein engagiertes Team erlebt. Jede Frage wurde sofort beantwortet, jeder Termin eingehalten.", author: "Markus Weber", role: "Inhaber, Weber Logistik" },
{ quote: "Das Ergebnis hat unsere Erwartungen übertroffen – und unsere Kunden sehen es genauso.", author: "Dr. Sophie Klein", role: "Praxis Dr. Klein" },
],
},
items: { items: "Stimme" },
})
export const stimmenWand = defineBlock({
type: "stimmen-wand",
label: "Stimmen-Wand",
category: "Stimmen",
description: "Spalten mit Kundenstimmen, die endlos gegenläufig laufen und beim Darüberfahren sanft anhalten.",
defaults: {
menu: "Stimmen",
eyebrow: "Stimmen",
title: "Was unsere Kunden *sagen.*",
items: [
{ quote: "Unkompliziert, schnell und richtig gut. Wir haben uns vom ersten Tag an verstanden gefühlt.", author: "Lena Brandt", role: "Inhaberin, Studio Brandt", image: unsplash("1494790108377-be9c29b29330", 300) },
{ quote: "Endlich ein Partner, der mitdenkt, statt nur abzuarbeiten. Klare Empfehlung!", author: "Tobias Lehmann", role: "Geschäftsführer, Lehmann Bau", image: unsplash("1560250097-0b93528c311a", 300) },
{ quote: "Die Zusammenarbeit war professionell und herzlich zugleich. Das Ergebnis spricht für sich.", author: "Mira Schulz", role: "Marketing, Velora", image: unsplash("1534528741775-53994a69daeb", 300) },
{ quote: "Wir haben unsere Ziele in der Hälfte der Zeit erreicht. Das hätten wir nie gedacht.", author: "Jonas Becker", role: "Gründer, Kraftbau", image: unsplash("1472099645785-5658abf4ff4e", 300) },
{ quote: "Jede Frage wurde geduldig beantwortet. Man merkt, dass hier Menschen mit Leidenschaft arbeiten.", author: "Amara Okafor", role: "Praxis am Park", image: unsplash("1531123897727-8f129e1688ce", 300) },
{ quote: "Termingerecht, im Budget und mit Liebe zum Detail – so wünscht man sich das.", author: "Felix Wagner", role: "Wagner & Söhne", image: unsplash("1539571696357-5a69c17a67c6", 300) },
],
},
items: { items: "Stimme" },
})
// ── Team ─────────────────────────────────────────────────────────────────────
export const team = defineBlock({
type: "team",
label: "Team",
category: "Team",
description: "Porträts in Schwarzweiß, die sich beim Darüberfahren von der Maus aus einfärben.",
defaults: {
menu: "Team",
eyebrow: "Team",
title: "Die Menschen\n*dahinter.*",
text: "Ein Team aus Expertinnen und Experten, das für jedes Projekt brennt.",
members: [
{ name: "Anna Lindberg", role: "Gründerin & Geschäftsführung", image: unsplash("1438761681033-6461ffad8d80", 700) },
{ name: "David Moreno", role: "Projektleitung", image: unsplash("1507003211169-0a1dd7228f2d", 700) },
{ name: "Sophie Wagner", role: "Gestaltung", image: unsplash("1508214751196-bcfd4ca60f91", 700) },
{ name: "Lukas Brenner", role: "Technik", image: unsplash("1506794778202-cad84cf45f1d", 700) },
],
},
items: { members: "Person" },
})
// ── Angebot ──────────────────────────────────────────────────────────────────
export const pakete = defineBlock({
type: "pakete",
label: "Pakete",
category: "Angebot",
description: "Pakete im Vergleich; das hervorgehobene bekommt einen umlaufenden Lichtrand.",
defaults: {
menu: "Pakete",
eyebrow: "Pakete",
title: "Klar, fair und\n*transparent.*",
text: "Wählen Sie das Paket, das zu Ihnen passt. Alle Preise zzgl. MwSt.",
href: "#kontakt",
plans: [
{ name: "Basis", price: "990 €", period: "einmalig", text: "Für den Einstieg", features: "Erstgespräch & Analyse\nKonzept mit Empfehlungen\nSupport per E-Mail", ribbon: "", cta: "Anfragen" },
{ name: "Plus", price: "2.490 €", period: "einmalig", text: "Unser Klassiker", features: "Alles aus Basis\nUmsetzung durch unser Team\nPersönliche Ansprechperson\n3 Monate Betreuung", ribbon: "Beliebt", cta: "Anfragen" },
{ name: "Premium", price: "Individuell", period: "", text: "Für große Vorhaben", features: "Alles aus Plus\nPriorisierte Umsetzung\nRegelmäßige Strategie-Termine\n12 Monate Betreuung", ribbon: "", cta: "Gespräch vereinbaren" },
],
},
items: { plans: "Paket" },
})
// ── FAQ ──────────────────────────────────────────────────────────────────────
export const faq = defineBlock({
type: "faq",
label: "FAQ",
category: "FAQ",
description: "Häufige Fragen zum Aufklappen, daneben Überschrift und Kontakt-Hinweis.",
defaults: {
menu: "FAQ",
eyebrow: "FAQ",
title: "Häufige\n*Fragen*",
text: "Ihre Frage ist nicht dabei? Wir antworten gern persönlich.",
items: [
{ question: "Wie läuft die Zusammenarbeit ab?", answer: "Nach einem kostenlosen Erstgespräch erhalten Sie ein transparentes Angebot. Danach begleitet Sie eine feste Ansprechperson durch alle Schritte." },
{ question: "Was kostet ein Projekt?", answer: "Das hängt vom Umfang ab. Nach dem Erstgespräch nennen wir Ihnen einen verbindlichen Festpreis – ohne versteckte Kosten." },
{ question: "Wie schnell können Sie starten?", answer: "In der Regel innerhalb von zwei Wochen. Bei dringenden Anliegen finden wir fast immer eine Lösung." },
{ question: "Arbeiten Sie auch überregional?", answer: "Ja. Wir arbeiten deutschlandweit – vor Ort oder digital, ganz wie es für Sie am besten passt." },
],
},
items: { items: "Frage" },
})
// ── Kontakt ──────────────────────────────────────────────────────────────────
export const ctaPortal = defineBlock({
type: "cta-portal",
label: "Leuchtender Aufruf",
category: "Kontakt",
description: "Große Fläche mit pulsierendem Leuchten und magnetischem Button – der letzte Anstoß.",
defaults: {
menu: "",
eyebrow: "Bereit?",
title: "Lassen Sie uns\netwas *Großes* starten.",
text: "Ein kurzes Gespräch genügt – kostenlos und unverbindlich.",
cta: "Jetzt Kontakt aufnehmen",
href: "#kontakt",
},
})
export const kontaktFormular = defineBlock({
type: "kontakt-formular",
label: "Kontakt mit Formular",
category: "Kontakt",
description: "Überschrift, Kontaktdaten aus „Marke & Kontakt“ und ein elegantes Formular mit Themen-Auswahl.",
defaults: {
menu: "Kontakt",
eyebrow: "Kontakt",
title: "Lassen Sie\nuns *sprechen.*",
text: "Erzählen Sie uns von Ihrem Vorhaben – wir melden uns innerhalb von 24 Stunden.",
topics: "Anfrage, Beratung, Zusammenarbeit, Sonstiges",
button: "Nachricht senden",
success: "Vielen Dank! Wir melden uns in Kürze bei Ihnen.",
hours: "Mo–Fr, 9–18 Uhr",
},
})
// ── Akzente ──────────────────────────────────────────────────────────────────
export const laufband = defineBlock({
type: "laufband",
label: "Text-Laufband",
category: "Akzente",
description: "Großer Text als Laufband, das beim schnellen Scrollen Tempo aufnimmt und sich neigt.",
defaults: {
text: "Ideen · Gestaltung · Umsetzung · Begeisterung ·",
secondary: "Mit Herz und Verstand ·",
},
})
export const wortmaske = defineBlock({
type: "wortmaske",
label: "Bild im Schriftzug",
category: "Akzente",
description: "Ein Bild scheint durch riesige Buchstaben und wandert beim Scrollen mit.",
defaults: {
menu: "",
eyebrow: "Was uns antreibt",
word: "Neugier",
text: "Neugier ist der Anfang von allem. Sie lässt uns Fragen stellen, Gewohntes hinterfragen und Lösungen finden, an die vorher niemand gedacht hat.",
image: unsplash("1501785888041-af3ef285b470", 2000),
},
})
// ── Abschluss ────────────────────────────────────────────────────────────────
export const footerWortmarke = defineBlock({
type: "footer-wortmarke",
label: "Riesen-Schriftzug",
category: "Abschluss",
description: "Abschluss mit Navigation, Kontaktdaten und dem Namen als Schriftzug über die volle Breite.",
defaults: { text: "Ideen, die bleiben.", cta: "Kontakt aufnehmen", href: "#kontakt" },
})
export const footerSchlicht = defineBlock({
type: "footer-schlicht",
label: "Schlicht",
category: "Abschluss",
description: "Klarer Abschluss in Spalten mit Navigation, Kontakt und Ortszeit.",
defaults: { city: "Hamburg", note: "Mit Sorgfalt gemacht." },
})
// Reihenfolge = Reihenfolge im Bausteine-Dialog
export const blockLibrary = [
navLeiste,
navGlas,
navMasthead,
heroKino,
heroVollbild,
heroAurora,
heroEditorial,
heroKinetik,
statement,
storyKapitel,
textBild,
leistungenPanels,
leistungenBento,
leistungenKarten,
projekteQuerlauf,
projekteIndex,
galerieKarussell,
ablaufLinie,
ablaufSpalten,
zahlen,
logos,
stimmenZitat,
stimmenWand,
team,
pakete,
faq,
ctaPortal,
kontaktFormular,
laufband,
wortmaske,
footerWortmarke,
footerSchlicht,
]
export type NavLeisteData = typeof navLeiste.defaults
export type NavGlasData = typeof navGlas.defaults
export type NavMastheadData = typeof navMasthead.defaults
export type HeroKinoData = typeof heroKino.defaults
export type HeroVollbildData = typeof heroVollbild.defaults
export type HeroAuroraData = typeof heroAurora.defaults
export type HeroEditorialData = typeof heroEditorial.defaults
export type HeroKinetikData = typeof heroKinetik.defaults
export type StatementData = typeof statement.defaults
export type StoryKapitelData = typeof storyKapitel.defaults
export type TextBildData = typeof textBild.defaults
export type LeistungenPanelsData = typeof leistungenPanels.defaults
export type LeistungenBentoData = typeof leistungenBento.defaults
export type LeistungenKartenData = typeof leistungenKarten.defaults
export type ProjekteQuerlaufData = typeof projekteQuerlauf.defaults
export type ProjekteIndexData = typeof projekteIndex.defaults
export type GalerieKarussellData = typeof galerieKarussell.defaults
export type AblaufLinieData = typeof ablaufLinie.defaults
export type AblaufSpaltenData = typeof ablaufSpalten.defaults
export type ZahlenData = typeof zahlen.defaults
export type LogosData = typeof logos.defaults
export type StimmenZitatData = typeof stimmenZitat.defaults
export type StimmenWandData = typeof stimmenWand.defaults
export type TeamData = typeof team.defaults
export type PaketeData = typeof pakete.defaults
export type FaqData = typeof faq.defaults
export type CtaPortalData = typeof ctaPortal.defaults
export type KontaktFormularData = typeof kontaktFormular.defaults
export type LaufbandData = typeof laufband.defaults
export type WortmaskeData = typeof wortmaske.defaults
export type FooterWortmarkeData = typeof footerWortmarke.defaults
export type FooterSchlichtData = typeof footerSchlicht.defaults