Merge version_1 into main #3
235
src/app/page.tsx
235
src/app/page.tsx
@@ -1,19 +1,27 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen";
|
||||
import HeroLogo from "@/components/sections/hero/HeroLogo";
|
||||
import MetricCardThree from "@/components/sections/metrics/MetricCardThree";
|
||||
import InlineImageSplitTextAbout from "@/components/sections/about/InlineImageSplitTextAbout";
|
||||
import FeatureBorderGlow from "@/components/sections/feature/featureBorderGlow/FeatureBorderGlow";
|
||||
import ProductCardFour from "@/components/sections/product/ProductCardFour";
|
||||
import TestimonialCardThirteen from "@/components/sections/testimonial/TestimonialCardThirteen";
|
||||
import SocialProofOne from "@/components/sections/socialProof/SocialProofOne";
|
||||
import ContactSplit from "@/components/sections/contact/ContactSplit";
|
||||
import FooterLogoEmphasis from "@/components/sections/footer/FooterLogoEmphasis";
|
||||
import { MapPin, Phone, DollarSign, Star, Wine, Utensils, Music, Users, Lightbulb, Heart, Calendar, Quote, Package, TrendingUp } from "lucide-react";
|
||||
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
|
||||
import HeroLogo from '@/components/sections/hero/HeroLogo';
|
||||
import MetricCardThree from '@/components/sections/metrics/MetricCardThree';
|
||||
import InlineImageSplitTextAbout from '@/components/sections/about/InlineImageSplitTextAbout';
|
||||
import FeatureBorderGlow from '@/components/sections/feature/featureBorderGlow/FeatureBorderGlow';
|
||||
import ProductCardFour from '@/components/sections/product/ProductCardFour';
|
||||
import TestimonialCardThirteen from '@/components/sections/testimonial/TestimonialCardThirteen';
|
||||
import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
|
||||
import ContactSplit from '@/components/sections/contact/ContactSplit';
|
||||
import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
|
||||
import { MapPin, Phone, DollarSign, Star, Wine, Utensils, Music, Users, Lightbulb, Heart } from 'lucide-react';
|
||||
|
||||
export default function HomePage() {
|
||||
const navItems = [
|
||||
{ name: "Strona główna", id: "/" },
|
||||
{ name: "Menu", id: "/menu" },
|
||||
{ name: "Rezerwacje", id: "/rezerwacje" },
|
||||
{ name: "O nas", id: "/about" },
|
||||
{ name: "Kontakt", id: "/contact" }
|
||||
];
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="elastic-effect"
|
||||
@@ -28,14 +36,8 @@ export default function HomePage() {
|
||||
headingFontWeight="medium"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleFullscreen
|
||||
navItems={[
|
||||
{ name: "Strona główna", id: "/" },
|
||||
{ name: "Menu", id: "/menu" },
|
||||
{ name: "Rezerwacje", id: "reservations" },
|
||||
{ name: "Wydarzenia", id: "events" },
|
||||
{ name: "Kontakt", id: "contact" },
|
||||
]}
|
||||
<NavbarStyleFullscreen
|
||||
navItems={navItems}
|
||||
brandName="OSTRO"
|
||||
bottomLeftText="Lublin, Polska"
|
||||
bottomRightText="791 792 849"
|
||||
@@ -47,8 +49,8 @@ export default function HomePage() {
|
||||
logoText="OSTRO"
|
||||
description="Najlepsze miejsce spotkań w Lublinie"
|
||||
buttons={[
|
||||
{ text: "Zarezerwuj stolik", href: "reservations" },
|
||||
{ text: "Zobacz menu", href: "/menu" },
|
||||
{ text: "Zarezerwuj stolik", href: "rezerwacje" },
|
||||
{ text: "Zobacz menu", href: "menu" }
|
||||
]}
|
||||
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=192rgx"
|
||||
imageAlt="Elegantna atmosfera lounge baru Ostro"
|
||||
@@ -61,29 +63,21 @@ export default function HomePage() {
|
||||
<MetricCardThree
|
||||
metrics={[
|
||||
{
|
||||
id: "1",
|
||||
icon: MapPin,
|
||||
title: "Adres",
|
||||
value: "Krakowskie Przedmieście 25",
|
||||
id: "1", icon: MapPin,
|
||||
title: "Adres", value: "Krakowskie Przedmieście 25"
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
icon: Phone,
|
||||
title: "Telefon",
|
||||
value: "791 792 849",
|
||||
id: "2", icon: Phone,
|
||||
title: "Telefon", value: "791 792 849"
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
icon: DollarSign,
|
||||
title: "Średnia cena",
|
||||
value: "40-60 zł",
|
||||
id: "3", icon: DollarSign,
|
||||
title: "Średnia cena", value: "40-60 zł"
|
||||
},
|
||||
{
|
||||
id: "4",
|
||||
icon: Star,
|
||||
title: "Ocena",
|
||||
value: "4,3/5",
|
||||
},
|
||||
id: "4", icon: Star,
|
||||
title: "Ocena", value: "4,3/5"
|
||||
}
|
||||
]}
|
||||
title="Informacje"
|
||||
description="Wszystko co musisz wiedzieć o Ostro Klubokawiarnia"
|
||||
@@ -98,10 +92,12 @@ export default function HomePage() {
|
||||
heading={[
|
||||
{ type: "text", content: "O nas - Wyjątkowe doświadczenie w serca" },
|
||||
{ type: "image", src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=gewtvw", alt: "Wnętrze baru Ostro" },
|
||||
{ type: "text", content: "Lublina" },
|
||||
{ type: "text", content: "Lublina" }
|
||||
]}
|
||||
useInvertedBackground={false}
|
||||
buttons={[{ text: "Poznaj nas lepiej", href: "contact" }]}
|
||||
buttons={[
|
||||
{ text: "Poznaj nas lepiej", href: "contact" }
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
@@ -111,34 +107,28 @@ export default function HomePage() {
|
||||
features={[
|
||||
{
|
||||
icon: Wine,
|
||||
title: "Wyjątkowe drinki",
|
||||
description: "Autorskie koktajle przygotowywane przez doświadczonych barmanów z najlepszych składników",
|
||||
title: "Wyjątkowe drinki", description: "Autorskie koktajle przygotowywane przez doświadczonych barmanów z najlepszych składników"
|
||||
},
|
||||
{
|
||||
icon: Utensils,
|
||||
title: "Świetne jedzenie",
|
||||
description: "Menu łączące kuchnię włoską z lokalnymi specjałami, przygotowywane ze świeżych składników",
|
||||
title: "Świetne jedzenie", description: "Menu łączące kuchnię włoską z lokalnymi specjałami, przygotowywane ze świeżych składników"
|
||||
},
|
||||
{
|
||||
icon: Music,
|
||||
title: "Muzyka na żywo",
|
||||
description: "Regularne koncerty i wieczory muzyczne z topowymi artystami z regionu",
|
||||
title: "Muzyka na żywo", description: "Regularne koncerty i wieczory muzyczne z topowymi artystami z regionu"
|
||||
},
|
||||
{
|
||||
icon: Users,
|
||||
title: "Idealne na spotkania",
|
||||
description: "Doskonała atmosfera do randek, spotkań biznesowych i imprez ze znajomymi",
|
||||
title: "Idealne na spotkania", description: "Doskonała atmosfera do randek, spotkań biznesowych i imprez ze znajomymi"
|
||||
},
|
||||
{
|
||||
icon: Lightbulb,
|
||||
title: "Nowoczesny design",
|
||||
description: "Eleganckie wnętrze łączące minimalizm z luksusowymi detalami",
|
||||
title: "Nowoczesny design", description: "Eleganckie wnętrze łączące minimalizm z luksusowymi detalami"
|
||||
},
|
||||
{
|
||||
icon: Heart,
|
||||
title: "Gościnność",
|
||||
description: "Przyjazne i profesjonalne obsługiwanie każdego gościa to nasz priorytet",
|
||||
},
|
||||
title: "Gościnność", description: "Przyjazne i profesjonalne obsługiwanie każdego gościa to nasz priorytet"
|
||||
}
|
||||
]}
|
||||
title="Dlaczego wybrać Ostro?"
|
||||
description="Odkryj to co nas wyróżnia na mapie kulinarnej Lublina"
|
||||
@@ -152,53 +142,23 @@ export default function HomePage() {
|
||||
<ProductCardFour
|
||||
products={[
|
||||
{
|
||||
id: "1",
|
||||
name: "Pizza",
|
||||
price: "32-48 zł",
|
||||
variant: "Domowe wypieki",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=a6vng1&_wi=1",
|
||||
imageAlt: "Pizza",
|
||||
id: "1", name: "Pizza", price: "32-48 zł", variant: "Domowe wypieki", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=a6vng1", imageAlt: "Pizza"
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
name: "Carbonara",
|
||||
price: "38 zł",
|
||||
variant: "Autentyczna włoska",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=huxgu9&_wi=1",
|
||||
imageAlt: "Pasta Carbonara",
|
||||
id: "2", name: "Carbonara", price: "38 zł", variant: "Autentyczna włoska", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=huxgu9", imageAlt: "Pasta Carbonara"
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
name: "Burgery",
|
||||
price: "34-42 zł",
|
||||
variant: "Z najlepszego mięsa",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=bg5e8s&_wi=1",
|
||||
imageAlt: "Burger",
|
||||
id: "3", name: "Burgery", price: "34-42 zł", variant: "Z najlepszego mięsa", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=bg5e8s", imageAlt: "Burger"
|
||||
},
|
||||
{
|
||||
id: "4",
|
||||
name: "Koktajle",
|
||||
price: "28-45 zł",
|
||||
variant: "Autorskie kompozycje",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=l54g0c&_wi=1",
|
||||
imageAlt: "Koktajl",
|
||||
id: "4", name: "Koktajle", price: "28-45 zł", variant: "Autorskie kompozycje", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=l54g0c", imageAlt: "Koktajl"
|
||||
},
|
||||
{
|
||||
id: "5",
|
||||
name: "Desery",
|
||||
price: "16-24 zł",
|
||||
variant: "Słodkie wariacje",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=apgvt6",
|
||||
imageAlt: "Deser",
|
||||
id: "5", name: "Desery", price: "16-24 zł", variant: "Słodkie wariacje", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=apgvt6", imageAlt: "Deser"
|
||||
},
|
||||
{
|
||||
id: "6",
|
||||
name: "Kawa",
|
||||
price: "8-14 zł",
|
||||
variant: "Artisanal selection",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=d6quar",
|
||||
imageAlt: "Kawa",
|
||||
},
|
||||
id: "6", name: "Kawa", price: "8-14 zł", variant: "Artisanal selection", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=d6quar", imageAlt: "Kawa"
|
||||
}
|
||||
]}
|
||||
title="Nasze specjały"
|
||||
description="Wybrane pozycje z naszego bogatego menu"
|
||||
@@ -213,77 +173,44 @@ export default function HomePage() {
|
||||
<TestimonialCardThirteen
|
||||
testimonials={[
|
||||
{
|
||||
id: "1",
|
||||
name: "Krystyna Nowak",
|
||||
handle: "@krystyna_n",
|
||||
testimonial: "Absolutnie wspaniałe miejsce! Przemiła obsługa, pyszne koktajle i świetna atmosfera. Polecam każdemu!",
|
||||
rating: 5,
|
||||
icon: Users,
|
||||
id: "1", name: "Krystyna Nowak", handle: "@krystyna_n", testimonial: "Absolutnie wspaniałe miejsce! Przemiła obsługa, pyszne koktajle i świetna atmosfera. Polecam każdemu!", rating: 5,
|
||||
icon: Users
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
name: "Marcin Kowalski",
|
||||
handle: "@marcin_k",
|
||||
testimonial: "Impreza ze znajomymi była niezapomniana. Muzyka na żywo, dobre piwo, świetne jedzenie. Wracam!",
|
||||
rating: 5,
|
||||
icon: Users,
|
||||
id: "2", name: "Marcin Kowalski", handle: "@marcin_k", testimonial: "Impreza ze znajomymi była niezapomniana. Muzyka na żywo, dobre piwo, świetne jedzenie. Wracam!", rating: 5,
|
||||
icon: Users
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
name: "Anna Wiśniewski",
|
||||
handle: "@anna_w",
|
||||
testimonial: "Idealne miejsce na romantyczną kolację. Eleganckie wnętrze i wyśmienidte potrawy. Dziękuję!",
|
||||
rating: 5,
|
||||
icon: Users,
|
||||
id: "3", name: "Anna Wiśniewski", handle: "@anna_w", testimonial: "Idealne miejsce na romantyczną kolację. Eleganckie wnętrze i wyśmienite potrawy. Dziękuję!", rating: 5,
|
||||
icon: Users
|
||||
},
|
||||
{
|
||||
id: "4",
|
||||
name: "Paweł Lewandowski",
|
||||
handle: "@pawel_l",
|
||||
testimonial: "Spotkanie biznesowe poszło fantastycznie. Profesjonalna obsługa i spokojne miejsce do rozmów.",
|
||||
rating: 4,
|
||||
icon: Users,
|
||||
id: "4", name: "Paweł Lewandowski", handle: "@pawel_l", testimonial: "Spotkanie biznesowe poszło fantastycznie. Profesjonalna obsługa i spokojne miejsce do rozmów.", rating: 4,
|
||||
icon: Users
|
||||
},
|
||||
{
|
||||
id: "5",
|
||||
name: "Joanna Zielińska",
|
||||
handle: "@joanna_z",
|
||||
testimonial: "Każdy wizyta to nowe doświadczenie. Zawsze cztery mogą liczyć na świeżość i jakość. Bravo!",
|
||||
rating: 5,
|
||||
icon: Users,
|
||||
id: "5", name: "Joanna Zielińska", handle: "@joanna_z", testimonial: "Każda wizyta to nowe doświadczenie. Zawsze możemy liczyć na świeżość i jakość. Bravo!", rating: 5,
|
||||
icon: Users
|
||||
},
|
||||
{
|
||||
id: "6",
|
||||
name: "Robert Szymański",
|
||||
handle: "@robert_s",
|
||||
testimonial: "Wśród najlepszych restauracji w Lublinie. Atmosfera, jedzenie i serwis na najwyższym poziomie.",
|
||||
rating: 5,
|
||||
icon: Users,
|
||||
},
|
||||
id: "6", name: "Robert Szymański", handle: "@robert_s", testimonial: "Wśród najlepszych restauracji w Lublinie. Atmosfera, jedzenie i serwis na najwyższym poziomie.", rating: 5,
|
||||
icon: Users
|
||||
}
|
||||
]}
|
||||
showRating={true}
|
||||
title="Co mówią o nas nasi goście?"
|
||||
description="Opinie ze sprawdzonych serwisów takich jak Google i TripAdvisor"
|
||||
textboxLayout="default"
|
||||
animationType="slide-up"
|
||||
useInvertedBackground={false}
|
||||
showRating={true}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="social-proof" data-section="social-proof">
|
||||
<SocialProofOne
|
||||
names={[
|
||||
"Google Maps",
|
||||
"TripAdvisor",
|
||||
"Pyszne.pl",
|
||||
"Dining City",
|
||||
"Foursquare",
|
||||
"Zomato",
|
||||
"Facebook",
|
||||
"Instagram",
|
||||
]}
|
||||
title="Zaufaj nam"
|
||||
description="Rekomendowani przez wiodące portale branżowe"
|
||||
names={["Google Maps", "TripAdvisor", "Pyszne.pl", "Dining City", "Foursquare", "Zomato", "Facebook", "Instagram"]}
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
showCard={true}
|
||||
@@ -296,9 +223,9 @@ export default function HomePage() {
|
||||
tag="Rezerwacja"
|
||||
title="Zarezerwuj stolik już teraz"
|
||||
description="Nie czekaj! Zabezpiecz sobie miejsce w naszym klimatycznym wnętrzu. Możesz zarezerować przez naszą stronę, telefon lub aplikację eatbu.com"
|
||||
tagIcon={Calendar}
|
||||
tagIcon={undefined}
|
||||
useInvertedBackground={false}
|
||||
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=6r7lu3&_wi=1"
|
||||
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/default/no-image.jpg?id=6r7lu3"
|
||||
mediaAnimation="slide-up"
|
||||
mediaPosition="right"
|
||||
background={{ variant: "radial-gradient" }}
|
||||
@@ -315,38 +242,38 @@ export default function HomePage() {
|
||||
{
|
||||
items: [
|
||||
{ label: "Strona główna", href: "/" },
|
||||
{ label: "Menu", href: "/menu" },
|
||||
{ label: "O nas", href: "#about" },
|
||||
],
|
||||
{ label: "Menu", href: "menu" },
|
||||
{ label: "O nas", href: "about" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "Rezerwacje", href: "#reservations" },
|
||||
{ label: "Wydarzenia", href: "#events" },
|
||||
{ label: "Galeria", href: "#" },
|
||||
],
|
||||
{ label: "Rezerwacje", href: "rezerwacje" },
|
||||
{ label: "Wydarzenia", href: "wydarzenia" },
|
||||
{ label: "Galeria", href: "#" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "Telefon", href: "tel:791792849" },
|
||||
{ label: "E-mail", href: "mailto:info@ostroklub.pl" },
|
||||
{ label: "Adres", href: "https://maps.google.com" },
|
||||
],
|
||||
{ label: "Adres", href: "https://maps.google.com" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "Instagram", href: "https://instagram.com" },
|
||||
{ label: "Facebook", href: "https://facebook.com" },
|
||||
{ label: "TripAdvisor", href: "https://tripadvisor.com" },
|
||||
],
|
||||
{ label: "TripAdvisor", href: "https://tripadvisor.com" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "Polityka prywatności", href: "#" },
|
||||
{ label: "Warunki użytkowania", href: "#" },
|
||||
{ label: "Mapa strony", href: "#" },
|
||||
],
|
||||
},
|
||||
{ label: "Mapa strony", href: "#" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -1,51 +1,43 @@
|
||||
"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;
|
||||
className?: string;
|
||||
fontSize?: number;
|
||||
fontWeight?: number | string;
|
||||
letterSpacing?: number;
|
||||
dominantBaseline?: 'auto' | 'text-top' | 'middle' | 'central' | 'text-bottom' | 'ideographic' | 'mathematical' | 'hanging';
|
||||
}
|
||||
|
||||
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,
|
||||
className = '',
|
||||
fontSize = 48,
|
||||
fontWeight = 700,
|
||||
letterSpacing = 0,
|
||||
dominantBaseline = 'middle',
|
||||
}) => {
|
||||
return (
|
||||
<svg
|
||||
ref={svgRef}
|
||||
viewBox={viewBox}
|
||||
className={cls("w-full", className)}
|
||||
style={{ aspectRatio: aspectRatio }}
|
||||
preserveAspectRatio="none"
|
||||
role="img"
|
||||
aria-label={`${logoText} logo`}
|
||||
viewBox="0 0 1200 200"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className={`w-full h-auto ${className}`}
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
>
|
||||
<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={dominantBaseline}
|
||||
fontSize={fontSize}
|
||||
fontWeight={fontWeight}
|
||||
letterSpacing={letterSpacing}
|
||||
className="fill-current font-bold"
|
||||
>
|
||||
{logoText}
|
||||
{text}
|
||||
</text>
|
||||
</svg>
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
SvgTextLogo.displayName = "SvgTextLogo";
|
||||
|
||||
export default SvgTextLogo;
|
||||
export default SvgTextLogo;
|
||||
Reference in New Issue
Block a user