Merge version_1 into main #3
@@ -24,7 +24,7 @@ export default function AboutPage() {
|
||||
borderRadius="pill"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSizeMediumTitles"
|
||||
background="noiseDiagonalGradient"
|
||||
background="circleGradient"
|
||||
cardStyle="glass-depth"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="solid"
|
||||
|
||||
261
src/app/page.tsx
261
src/app/page.tsx
@@ -28,7 +28,7 @@ export default function HomePage() {
|
||||
borderRadius="pill"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSizeMediumTitles"
|
||||
background="noiseDiagonalGradient"
|
||||
background="circleGradient"
|
||||
cardStyle="glass-depth"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="solid"
|
||||
@@ -47,18 +47,12 @@ export default function HomePage() {
|
||||
<HeroBillboard
|
||||
title="Willkommen bei Tresor"
|
||||
description="Entdecken Sie kulinarische Exzellenz in gemütlicher Atmosphäre. Regionale Zutaten, meisterhafte Zubereitung und herzliche Gastfreundschaft."
|
||||
background={{ variant: "noiseDiagonalGradient" }}
|
||||
background={{ variant: "sparkles-gradient" }}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/woman-eating-food-restaurant_23-2150520105.jpg"
|
||||
imageAlt="Elegantes Tresor Restaurant Interieur"
|
||||
imageAlt="elegant restaurant dining ambiance warm lighting"
|
||||
buttons={[
|
||||
{
|
||||
text: "Jetzt reservieren",
|
||||
href: "/contact",
|
||||
},
|
||||
{
|
||||
text: "Speisekarte ansehen",
|
||||
href: "/menu",
|
||||
},
|
||||
{ text: "Jetzt reservieren", href: "/contact" },
|
||||
{ text: "Speisekarte ansehen", href: "/" },
|
||||
]}
|
||||
tag="Premium Dining"
|
||||
tagIcon={Sparkles}
|
||||
@@ -68,22 +62,11 @@ export default function HomePage() {
|
||||
<div id="about" data-section="about">
|
||||
<InlineImageSplitTextAbout
|
||||
heading={[
|
||||
{
|
||||
type: "text",
|
||||
content: "Tresor:",
|
||||
},
|
||||
{
|
||||
type: "text",
|
||||
content: "Tradition trifft Innovation",
|
||||
},
|
||||
{ type: "text", content: "Tresor:" },
|
||||
{ type: "text", content: "Tradition trifft Innovation" },
|
||||
]}
|
||||
useInvertedBackground={false}
|
||||
buttons={[
|
||||
{
|
||||
text: "Mehr über uns erfahren",
|
||||
href: "/about",
|
||||
},
|
||||
]}
|
||||
buttons={[{ text: "Mehr über uns erfahren", href: "#contact" }]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -96,28 +79,16 @@ export default function HomePage() {
|
||||
features={[
|
||||
{
|
||||
id: 1,
|
||||
title: "Regionale Zutaten",
|
||||
description: "Wir arbeiten ausschließlich mit lokalen Bauern und Lieferanten zusammen, um die frischesten und besten Zutaten zu garantieren.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gastronomy-expert-grating-piece-cheese-plate-while-preparing-culinary-dish-dinner-service-restaurant-culinary-gastronomic-chef-cooking-fine-dining-meal-professional-kitchen_482257-44203.jpg?_wi=1",
|
||||
},
|
||||
title: "Regionale Zutaten", description: "Wir arbeiten ausschließlich mit lokalen Bauern und Lieferanten zusammen, um die frischesten und besten Zutaten zu garantieren.", imageSrc: "http://img.b2bpic.net/free-photo/gastronomy-expert-grating-piece-cheese-plate-while-preparing-culinary-dish-dinner-service-restaurant-culinary-gastronomic-chef-cooking-fine-dining-meal-professional-kitchen_482257-44203.jpg"},
|
||||
{
|
||||
id: 2,
|
||||
title: "Meisterhafte Küche",
|
||||
description: "Unsere erfahrenen Köche kreieren täglich Gerichte, die traditionelle deutsche Küche mit modernen Einflüssen verbinden.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gastronomy-expert-grating-piece-cheese-plate-while-preparing-culinary-dish-dinner-service-restaurant-culinary-gastronomic-chef-cooking-fine-dining-meal-professional-kitchen_482257-44203.jpg?_wi=2",
|
||||
},
|
||||
title: "Meisterhafte Küche", description: "Unsere erfahrenen Köche kreieren täglich Gerichte, die traditionelle deutsche Küche mit modernen Einflüssen verbinden.", imageSrc: "http://img.b2bpic.net/free-photo/gastronomy-expert-grating-piece-cheese-plate-while-preparing-culinary-dish-dinner-service-restaurant-culinary-gastronomic-chef-cooking-fine-dining-meal-professional-kitchen_482257-44203.jpg"},
|
||||
{
|
||||
id: 3,
|
||||
title: "Gastfreundschaft",
|
||||
description: "Jeder Gast wird bei uns wie Familie behandelt. Ihr Wohlbefinden ist unsere höchste Priorität.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gastronomy-expert-grating-piece-cheese-plate-while-preparing-culinary-dish-dinner-service-restaurant-culinary-gastronomic-chef-cooking-fine-dining-meal-professional-kitchen_482257-44203.jpg?_wi=3",
|
||||
},
|
||||
title: "Gastfreundschaft", description: "Jeder Gast wird bei uns wie Familie behandelt. Ihr Wohlbefinden ist unsere höchste Priorität.", imageSrc: "http://img.b2bpic.net/free-photo/gastronomy-expert-grating-piece-cheese-plate-while-preparing-culinary-dish-dinner-service-restaurant-culinary-gastronomic-chef-cooking-fine-dining-meal-professional-kitchen_482257-44203.jpg"},
|
||||
{
|
||||
id: 4,
|
||||
title: "Gemütliche Atmosphäre",
|
||||
description: "In unserem Restaurant finden Sie einen Ort zum Entspannen, Genießen und unvergessliche Momente mit Ihren Liebsten zu teilen.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gastronomy-expert-grating-piece-cheese-plate-while-preparing-culinary-dish-dinner-service-restaurant-culinary-gastronomic-chef-cooking-fine-dining-meal-professional-kitchen_482257-44203.jpg?_wi=4",
|
||||
},
|
||||
title: "Gemütliche Atmosphäre", description: "In unserem Restaurant finden Sie einen Ort zum Entspannen, Genießen und unvergessliche Momente mit Ihren Liebsten zu teilen.", imageSrc: "http://img.b2bpic.net/free-photo/gastronomy-expert-grating-piece-cheese-plate-while-preparing-culinary-dish-dinner-service-restaurant-culinary-gastronomic-chef-cooking-fine-dining-meal-professional-kitchen_482257-44203.jpg"},
|
||||
]}
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
@@ -132,55 +103,20 @@ export default function HomePage() {
|
||||
tagIcon={UtensilsCrossed}
|
||||
products={[
|
||||
{
|
||||
id: "1",
|
||||
brand: "Klassiker",
|
||||
name: "Wiener Schnitzel",
|
||||
price: "€18,50",
|
||||
rating: 5,
|
||||
reviewCount: "127",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-white-cheese-with-grapes-lemon-slices-dark-background-food-milk-bun-fruit_140725-115836.jpg?_wi=1",
|
||||
imageAlt: "Wiener Schnitzel mit Zitrone",
|
||||
},
|
||||
id: "1", brand: "Klassiker", name: "Wiener Schnitzel", price: "€18,50", rating: 5,
|
||||
reviewCount: "127", imageSrc: "http://img.b2bpic.net/free-photo/front-view-white-cheese-with-grapes-lemon-slices-dark-background-food-milk-bun-fruit_140725-115836.jpg", imageAlt: "Wiener Schnitzel mit Zitrone"},
|
||||
{
|
||||
id: "2",
|
||||
brand: "Pasta",
|
||||
name: "Pasta Carbonara",
|
||||
price: "€16,00",
|
||||
rating: 5,
|
||||
reviewCount: "89",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/garlic-pasta-near-spices-blackboard_23-2147849740.jpg?_wi=1",
|
||||
imageAlt: "Authentische Pasta Carbonara",
|
||||
},
|
||||
id: "2", brand: "Pasta", name: "Pasta Carbonara", price: "€16,00", rating: 5,
|
||||
reviewCount: "89", imageSrc: "http://img.b2bpic.net/free-photo/garlic-pasta-near-spices-blackboard_23-2147849740.jpg", imageAlt: "Authentische Pasta Carbonara"},
|
||||
{
|
||||
id: "3",
|
||||
brand: "Salate",
|
||||
name: "Frischer Gartensalat",
|
||||
price: "€12,50",
|
||||
rating: 4,
|
||||
reviewCount: "65",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/plate-with-boiled-egg-wild-garlic-flowers_166373-668.jpg?_wi=1",
|
||||
imageAlt: "Frischer Gartensalat mit Balsamico",
|
||||
},
|
||||
id: "3", brand: "Salate", name: "Frischer Gartensalat", price: "€12,50", rating: 4,
|
||||
reviewCount: "65", imageSrc: "http://img.b2bpic.net/free-photo/plate-with-boiled-egg-wild-garlic-flowers_166373-668.jpg", imageAlt: "Frischer Gartensalat mit Balsamico"},
|
||||
{
|
||||
id: "4",
|
||||
brand: "Desserts",
|
||||
name: "Schokoladen Torte",
|
||||
price: "€8,00",
|
||||
rating: 5,
|
||||
reviewCount: "156",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-dessert-ready-be-served_23-2148622358.jpg?_wi=1",
|
||||
imageAlt: "Gourmet Schokoladen Torte",
|
||||
},
|
||||
id: "4", brand: "Desserts", name: "Schokoladen Torte", price: "€8,00", rating: 5,
|
||||
reviewCount: "156", imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-dessert-ready-be-served_23-2148622358.jpg", imageAlt: "Gourmet Schokoladen Torte"},
|
||||
{
|
||||
id: "5",
|
||||
brand: "Getränke",
|
||||
name: "Hauswein Rot",
|
||||
price: "€5,50",
|
||||
rating: 5,
|
||||
reviewCount: "112",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elegant-vegan-alcohol-arrangement_23-2149337726.jpg?_wi=1",
|
||||
imageAlt: "Premium Rotwein im Glas",
|
||||
},
|
||||
id: "5", brand: "Getränke", name: "Hauswein Rot", price: "€5,50", rating: 5,
|
||||
reviewCount: "112", imageSrc: "http://img.b2bpic.net/free-photo/elegant-vegan-alcohol-arrangement_23-2149337726.jpg", imageAlt: "Premium Rotwein im Glas"},
|
||||
]}
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
animationType="slide-up"
|
||||
@@ -197,59 +133,23 @@ export default function HomePage() {
|
||||
tagIcon={Star}
|
||||
testimonials={[
|
||||
{
|
||||
id: "1",
|
||||
name: "Sarah Müller",
|
||||
role: "Marketing Manager",
|
||||
company: "München",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/waitress-serving-cup-coffee-customers_1170-653.jpg?_wi=1",
|
||||
imageAlt: "Portrait von Sarah Müller",
|
||||
},
|
||||
id: "1", name: "Sarah Müller", role: "Marketing Manager", company: "München", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/waitress-serving-cup-coffee-customers_1170-653.jpg", imageAlt: "Portrait von Sarah Müller"},
|
||||
{
|
||||
id: "2",
|
||||
name: "Martin Schmidt",
|
||||
role: "Geschäftsführer",
|
||||
company: "Stuttgart",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=1",
|
||||
imageAlt: "Portrait von Martin Schmidt",
|
||||
},
|
||||
id: "2", name: "Martin Schmidt", role: "Geschäftsführer", company: "Stuttgart", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg", imageAlt: "Portrait von Martin Schmidt"},
|
||||
{
|
||||
id: "3",
|
||||
name: "Julia Wagner",
|
||||
role: "Architektin",
|
||||
company: "Berlin",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pretty-young-model-student-teenage-girl-dressed-up-jeans-cafe-holds-coffee-tea-cup-her-hands_231208-5219.jpg?_wi=1",
|
||||
imageAlt: "Portrait von Julia Wagner",
|
||||
},
|
||||
id: "3", name: "Julia Wagner", role: "Architektin", company: "Berlin", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pretty-young-model-student-teenage-girl-dressed-up-jeans-cafe-holds-coffee-tea-cup-her-hands_231208-5219.jpg", imageAlt: "Portrait von Julia Wagner"},
|
||||
{
|
||||
id: "4",
|
||||
name: "Thomas & Angela Meyer",
|
||||
role: "Pensionär",
|
||||
company: "Göppingen",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-family-enjoying-food-together_23-2149228715.jpg",
|
||||
imageAlt: "Portrait von Thomas und Angela Meyer",
|
||||
},
|
||||
id: "4", name: "Thomas & Angela Meyer", role: "Pensionär", company: "Göppingen", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-family-enjoying-food-together_23-2149228715.jpg", imageAlt: "Portrait von Thomas und Angela Meyer"},
|
||||
{
|
||||
id: "5",
|
||||
name: "Klaus Richter",
|
||||
role: "Professor",
|
||||
company: "Heidelberg",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/waitress-serving-cup-coffee-customers_1170-653.jpg?_wi=2",
|
||||
imageAlt: "Portrait von Klaus Richter",
|
||||
},
|
||||
id: "5", name: "Klaus Richter", role: "Professor", company: "Heidelberg", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/waitress-serving-cup-coffee-customers_1170-653.jpg", imageAlt: "Portrait von Klaus Richter"},
|
||||
{
|
||||
id: "6",
|
||||
name: "Emma Hoffmann",
|
||||
role: "Rechtsanwältin",
|
||||
company: "Ulm",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pretty-young-model-student-teenage-girl-dressed-up-jeans-cafe-holds-coffee-tea-cup-her-hands_231208-5219.jpg?_wi=2",
|
||||
imageAlt: "Portrait von Emma Hoffmann",
|
||||
},
|
||||
id: "6", name: "Emma Hoffmann", role: "Rechtsanwältin", company: "Ulm", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pretty-young-model-student-teenage-girl-dressed-up-jeans-cafe-holds-coffee-tea-cup-her-hands_231208-5219.jpg", imageAlt: "Portrait von Emma Hoffmann"},
|
||||
]}
|
||||
gridVariant="uniform-all-items-equal"
|
||||
animationType="slide-up"
|
||||
@@ -266,43 +166,13 @@ export default function HomePage() {
|
||||
tagIcon={Clock}
|
||||
metrics={[
|
||||
{
|
||||
id: "1",
|
||||
title: "Montag bis Freitag",
|
||||
subtitle: "Mittags & Abends",
|
||||
category: "Wochentage",
|
||||
value: "11:00 - 23:00",
|
||||
buttons: [
|
||||
{
|
||||
text: "Reservieren",
|
||||
href: "/contact",
|
||||
},
|
||||
],
|
||||
id: "1", title: "Montag bis Freitag", subtitle: "Mittags & Abends", category: "Wochentage", value: "11:00 - 23:00", buttons: [{ text: "Reservieren", href: "#contact" }],
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
title: "Samstag & Sonntag",
|
||||
subtitle: "Durchgehend geöffnet",
|
||||
category: "Wochenende",
|
||||
value: "10:00 - 24:00",
|
||||
buttons: [
|
||||
{
|
||||
text: "Reservieren",
|
||||
href: "/contact",
|
||||
},
|
||||
],
|
||||
id: "2", title: "Samstag & Sonntag", subtitle: "Durchgehend geöffnet", category: "Wochenende", value: "10:00 - 24:00", buttons: [{ text: "Reservieren", href: "#contact" }],
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
title: "Feiertage",
|
||||
subtitle: "Nach Ankündigung",
|
||||
category: "Besonderheiten",
|
||||
value: "Variabel",
|
||||
buttons: [
|
||||
{
|
||||
text: "Anfrage senden",
|
||||
href: "/contact",
|
||||
},
|
||||
],
|
||||
id: "3", title: "Feiertage", subtitle: "Nach Ankündigung", category: "Besonderheiten", value: "Variabel", buttons: [{ text: "Anfrage senden", href: "#contact" }],
|
||||
},
|
||||
]}
|
||||
animationType="slide-up"
|
||||
@@ -311,46 +181,43 @@ export default function HomePage() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<ContactSplit
|
||||
tag="Reservierung & Kontakt"
|
||||
title="Reservieren Sie Ihren Platz"
|
||||
description="Buchen Sie einen Tisch für ein unvergessliches kulinarisches Erlebnis. Wir freuen uns auf Ihren Besuch im Tresor Restaurant."
|
||||
tagIcon={Mail}
|
||||
background={{ variant: "sparkles-gradient" }}
|
||||
useInvertedBackground={false}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/blurred-red-pins-map_23-2148510530.jpg"
|
||||
imageAlt="Tresor Restaurant Standort Göppingen"
|
||||
mediaPosition="right"
|
||||
inputPlaceholder="Ihre E-Mail Adresse"
|
||||
buttonText="Newsletter abonnieren"
|
||||
termsText="Mit dem Absenden akzeptieren Sie unsere Datenschutzrichtlinien. Sie können sich jederzeit abmelden."
|
||||
mediaAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterSimple
|
||||
columns={[
|
||||
{
|
||||
title: "Navigation",
|
||||
items: [
|
||||
{
|
||||
label: "Startseite",
|
||||
href: "/",
|
||||
},
|
||||
{
|
||||
label: "Über uns",
|
||||
href: "/about",
|
||||
},
|
||||
title: "Navigation", items: [
|
||||
{ label: "Startseite", href: "/" },
|
||||
{ label: "Über uns", href: "/about" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Kontakt",
|
||||
items: [
|
||||
{
|
||||
label: "Telefon: +49 7161 123456",
|
||||
href: "tel:+491617123456",
|
||||
},
|
||||
{
|
||||
label: "E-Mail: info@tresor-restaurant.de",
|
||||
href: "mailto:info@tresor-restaurant.de",
|
||||
},
|
||||
title: "Kontakt", items: [
|
||||
{ label: "Telefon: +49 7161 123456", href: "tel:+491617123456" },
|
||||
{ label: "E-Mail: info@tresor-restaurant.de", href: "mailto:info@tresor-restaurant.de" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Folge uns",
|
||||
items: [
|
||||
{
|
||||
label: "Instagram",
|
||||
href: "https://instagram.com",
|
||||
},
|
||||
{
|
||||
label: "Facebook",
|
||||
href: "https://facebook.com",
|
||||
},
|
||||
title: "Folge uns", items: [
|
||||
{ label: "Instagram", href: "https://instagram.com" },
|
||||
{ label: "Facebook", href: "https://facebook.com" },
|
||||
],
|
||||
},
|
||||
]}
|
||||
|
||||
@@ -1,51 +1,41 @@
|
||||
"use client";
|
||||
|
||||
import { memo } from "react";
|
||||
import useSvgTextLogo from "./useSvgTextLogo";
|
||||
import { cls } from "@/lib/utils";
|
||||
import React from "react";
|
||||
|
||||
interface SvgTextLogoProps {
|
||||
logoText: string;
|
||||
adjustHeightFactor?: number;
|
||||
verticalAlign?: "top" | "center";
|
||||
text: string;
|
||||
fontSize?: number;
|
||||
fontFamily?: string;
|
||||
fontWeight?: number;
|
||||
fill?: string;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
const SvgTextLogo = memo<SvgTextLogoProps>(function SvgTextLogo({
|
||||
logoText,
|
||||
adjustHeightFactor,
|
||||
verticalAlign = "top",
|
||||
className = "",
|
||||
}) {
|
||||
const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor);
|
||||
|
||||
const SvgTextLogo: React.FC<SvgTextLogoProps> = ({
|
||||
text,
|
||||
fontSize = 24,
|
||||
fontFamily = "Arial, sans-serif", fontWeight = 700,
|
||||
fill = "currentColor", className = ""}) => {
|
||||
return (
|
||||
<svg
|
||||
ref={svgRef}
|
||||
viewBox={viewBox}
|
||||
className={cls("w-full", className)}
|
||||
style={{ aspectRatio: aspectRatio }}
|
||||
preserveAspectRatio="none"
|
||||
role="img"
|
||||
aria-label={`${logoText} logo`}
|
||||
width="200"
|
||||
height="60"
|
||||
viewBox="0 0 200 60"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className={className}
|
||||
>
|
||||
<text
|
||||
ref={textRef}
|
||||
x="0"
|
||||
y={verticalAlign === "center" ? "50%" : "0"}
|
||||
className="font-bold fill-current"
|
||||
style={{
|
||||
fontSize: "20px",
|
||||
letterSpacing: "-0.02em",
|
||||
dominantBaseline: verticalAlign === "center" ? "middle" : "text-before-edge"
|
||||
}}
|
||||
x="50%"
|
||||
y="50%"
|
||||
textAnchor="middle"
|
||||
dominantBaseline="middle"
|
||||
fontSize={fontSize}
|
||||
fontFamily={fontFamily}
|
||||
fontWeight={fontWeight}
|
||||
fill={fill}
|
||||
>
|
||||
{logoText}
|
||||
{text}
|
||||
</text>
|
||||
</svg>
|
||||
);
|
||||
});
|
||||
|
||||
SvgTextLogo.displayName = "SvgTextLogo";
|
||||
};
|
||||
|
||||
export default SvgTextLogo;
|
||||
|
||||
Reference in New Issue
Block a user