since3-portal/modules/templates/catalog/fitness/definition.ts
2026-10-05 08:23:02 +02:00

121 lines
6.9 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 { defineTemplate, describeSections, unsplash } from "../../lib/content"
const defaults = {
brand: { name: "PULSE", suffix: "Training Club", phone: "030 123 456 78", address: "Torstraße 140, 10119 Berlin" },
hero: {
eyebrow: "Training Club · Berlin Mitte",
title: "Stärker\nals *gestern.*",
text: "Functional Training, Kraft und Yoga in kleinen Gruppen – mit Coaches, die dich wirklich sehen.",
cta: "Probetraining sichern",
ctaSecondary: "Kursplan ansehen",
image: unsplash("1605296867304-46d5465a13f1"),
},
stats: {
items: [
{ value: "40", suffix: "+", label: "Kurse pro Woche" },
{ value: "12", suffix: "", label: "Coaches" },
{ value: "1.800", suffix: "", label: "Mitglieder" },
{ value: "24", suffix: "/7", label: "Zugang" },
],
},
marquee: { items: [{ text: "HIIT" }, { text: "Kraft" }, { text: "Mobility" }, { text: "Yoga" }, { text: "Boxen" }, { text: "Cycling" }] },
programs: {
eyebrow: "Training",
title: "Vier Wege zu *mehr* Energie.",
items: [
{ title: "Kraft", text: "Langhantel, Kettlebell und saubere Technik – Schritt für Schritt stärker.", image: unsplash("1517963879433-6ad2b056d712", 1400) },
{ title: "Functional", text: "Ganzkörper-Workouts, die dich für den Alltag fit machen.", image: unsplash("1599058917212-d750089bc07e", 1400) },
{ title: "Yoga & Mobility", text: "Beweglichkeit, Atmung und Ruhe für Körper und Kopf.", image: unsplash("1544367567-0f2fcb009e0b", 1400) },
{ title: "Boxen", text: "Technik, Ausdauer und Kopf frei – ganz ohne Sparring-Zwang.", image: unsplash("1549060279-7e168fcee0c2", 1400) },
],
},
classes: {
eyebrow: "Kursplan",
title: "Finde deinen *Flow.*",
items: [
{ day: "Mo", time: "07:00", name: "Morning HIIT", trainer: "Lena", level: "3" },
{ day: "Mo", time: "12:15", name: "Lunch Mobility", trainer: "Aylin", level: "1" },
{ day: "Mo", time: "18:30", name: "Strength Basics", trainer: "Marco", level: "2" },
{ day: "Di", time: "07:00", name: "Functional Flow", trainer: "Lena", level: "2" },
{ day: "Di", time: "19:00", name: "Box Fit", trainer: "Jonas", level: "3" },
{ day: "Mi", time: "06:45", name: "Sunrise Yoga", trainer: "Aylin", level: "1" },
{ day: "Mi", time: "18:00", name: "Heavy Lifting", trainer: "Marco", level: "3" },
{ day: "Do", time: "12:15", name: "Core & Back", trainer: "Lena", level: "2" },
{ day: "Do", time: "19:30", name: "Box Technik", trainer: "Jonas", level: "2" },
{ day: "Fr", time: "07:00", name: "Morning HIIT", trainer: "Lena", level: "3" },
{ day: "Fr", time: "17:30", name: "Friday Burn", trainer: "Marco", level: "3" },
{ day: "Sa", time: "10:00", name: "Team Workout", trainer: "Alle", level: "2" },
{ day: "So", time: "11:00", name: "Slow Flow Yoga", trainer: "Aylin", level: "1" },
],
},
transformation: {
eyebrow: "Ergebnisse",
title: "Zwölf Wochen.\n*Echte* Veränderung.",
text: "Mit festen Trainingszeiten, einem Plan, der zu dir passt, und Coaches, die dranbleiben, wenn du es mal nicht tust.",
image: unsplash("1574680096145-d05b474e2155", 1800),
before: "Woche 1",
after: "Woche 12",
quote: "Ich hätte nie gedacht, dass ich mich auf Montagmorgen freue. Minus acht Kilo, plus ganz viel Energie.",
author: "Mara, 34, Mitglied seit 2025",
},
pricing: {
eyebrow: "Mitgliedschaft",
title: "Kein Vertrag, der *bremst.*",
plans: [
{ name: "Flex", price: "59", period: "pro Monat", features: "Alle Kurse\nMonatlich kündbar\nBuchung per App", highlight: "" },
{ name: "Club", price: "79", period: "pro Monat", features: "Alle Kurse & Open Gym\n24/7 Zugang\nSauna & Recovery\n1 Personal Training im Quartal", highlight: "ja" },
{ name: "10er-Karte", price: "190", period: "einmalig", features: "10 Kurse nach Wahl\n6 Monate gültig\nIdeal zum Reinschnuppern", highlight: "" },
],
},
coaches: {
eyebrow: "Coaches",
title: "Dein *Team.*",
members: [
{ name: "Lena Kraus", role: "HIIT & Functional", image: unsplash("1546483875-ad9014c88eba", 900) },
{ name: "Marco Silva", role: "Kraft & Athletik", image: unsplash("1581009146145-b5ef050c2e1e", 900) },
{ name: "Aylin Demir", role: "Yoga & Mobility", image: unsplash("1552196563-55cd4e45efb3", 900) },
{ name: "Jonas Weber", role: "Boxen & Kondition", image: unsplash("1583454110551-21f2fa2afe61", 900) },
],
},
trial: {
title: "Dein erstes Training ist *gratis.*",
text: "Komm vorbei, lern das Team kennen und trainiere eine Stunde mit – ohne Verpflichtung.",
cta: "Probetraining sichern",
},
}
export const fitness = defineTemplate({
key: "fitness",
name: "Pulse",
industry: "Fitness, Sport & Yoga",
description: "Energiegeladen und dunkel: kinetische Typografie, aufklappende Trainingsbereiche, Kursplan nach Wochentagen, Vorher/Nachher-Regler und Mitgliedschaften.",
cover: unsplash("1517836357463-d25dfeac3438", 1200),
samples: {
inquiry: "Hey, ich bin 31 und möchte nach längerer Pause wieder anfangen – vor allem wegen Rückenschmerzen. Was empfehlt ihr mir, und was kostet eine Mitgliedschaft mit Personal Training? Gruß, Felix",
topic: "Neuer Kurs: Mobility & Rücken ab Montag",
},
palettes: [
{ key: "volt", label: "Volt", dark: true, bg: "#0a0a0a", fg: "#f4f4ef", muted: "#8f8f88", surface: "#161616", accent: "#c6ff3d" },
{ key: "ember", label: "Ember", dark: true, bg: "#0d0a09", fg: "#f7f1ec", muted: "#9a8f88", surface: "#1a1412", accent: "#ff5a1f" },
{ key: "kreide", label: "Kreide", bg: "#f1f1ee", fg: "#0c0c0c", muted: "#62625d", surface: "#e2e2dd", accent: "#3d5afe" },
],
fonts: [
{ key: "power", label: "Unbounded & Space Grotesk" },
{ key: "athletic", label: "Anton & Work Sans" },
],
sections: describeSections(defaults, {
brand: "Studio & Kontakt",
hero: "Startbereich",
stats: { label: "Zahlen", optional: true, items: { items: "Kennzahl" } },
marquee: { label: "Laufband", optional: true, items: { items: "Begriff" } },
programs: { label: "Trainingsbereiche", optional: true, items: { items: "Bereich" } },
classes: { label: "Kursplan", optional: true, items: { items: "Kurs" } },
transformation: { label: "Vorher/Nachher", optional: true },
pricing: { label: "Mitgliedschaften", optional: true, items: { plans: "Tarif" } },
coaches: { label: "Coaches", optional: true, items: { members: "Coach" } },
trial: "Probetraining",
}),
defaults,
})
export type FitnessData = typeof fitness.defaults