Merge version_1 into main #3

Merged
bender merged 2 commits from version_1 into main 2026-03-13 07:23:20 +00:00
2 changed files with 110 additions and 191 deletions

View File

@@ -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>

View File

@@ -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;