mirror of
https://github.com/Since-3/since3-portal.git
synced 2026-10-12 19:51:17 +00:00
642 lines
31 KiB
TypeScript
642 lines
31 KiB
TypeScript
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
|