Compare commits
3 Commits
version_1_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 427db1ec5b | |||
|
|
9b7d15f9b8 | ||
|
|
60d4f18e87 |
@@ -1,311 +1,39 @@
|
||||
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
|
||||
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
|
||||
import TeamStackedCards from '@/components/sections/team/TeamStackedCards';
|
||||
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
// AUTO-GENERATED shell by per-section-migrate.
|
||||
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
|
||||
// files directly. Non-block content (wrappers, non-inlinable sections) is
|
||||
// preserved inline; extracted section blocks become <XSection/> refs.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HeroSection from './HomePage/sections/Hero';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import FeaturesSection from './HomePage/sections/Features';
|
||||
import ProductsSection from './HomePage/sections/Products';
|
||||
import PricingSection from './HomePage/sections/Pricing';
|
||||
import TeamSection from './HomePage/sections/Team';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitMediaGrid
|
||||
tag="Premium Erkek Bakımı"
|
||||
title="Hassas Kesim, Zamansız Zarafet"
|
||||
description="Modern beyefendiler için özel olarak tasarlanmış premium berberlik deneyimi. Uzman kesimler, kaliteli ürünler ve ödünsüz detaylar."
|
||||
primaryButton={{
|
||||
text: "Randevunuzu Alın",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Hizmetlerimiz",
|
||||
href: "#features",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-hands-shaving-neck_23-2147778912.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/master-hairdresser-prepares-face-shaving-barber-shop_613910-6221.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="Hakkımızda"
|
||||
title="Geleneksel Sanat, Modern Dokunuş"
|
||||
description="ÇAKMAK Erkek Kuaförü olarak, ustalığımızı modern bir anlayışla birleştiriyoruz. Her bir müşteri için kişiselleştirilmiş hizmetimizle, sadece saçınızı değil, tarzınızı da yeniliyoruz."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/mid-section-view-barber-s-hand-with-shaving-brush_23-2147839815.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesTaggedCards
|
||||
tag="Hizmetlerimiz"
|
||||
title="Özel Bakım Seçenekleri"
|
||||
description="İhtiyaçlarınıza uygun profesyonel bakım hizmetlerimiz."
|
||||
items={[
|
||||
{
|
||||
tag: "Bakım",
|
||||
title: "Sakal Tasarımı",
|
||||
description: "Yüz hattınıza en uygun sakal tasarımı ve bakımı.",
|
||||
primaryButton: {
|
||||
text: "Detaylar",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-closes-his-eyes-while-barber-shapes-his-black-beard_1304-2778.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Kesim",
|
||||
title: "Modern Saç Kesimi",
|
||||
description: "Trendlere uygun, profesyonel saç kesim modelleri.",
|
||||
primaryButton: {
|
||||
text: "Detaylar",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-getting-ready-giving-haircut-her-client_23-2148353413.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Bakım",
|
||||
title: "Cilt Bakımı",
|
||||
description: "Sıcak havlu eşliğinde rahatlatıcı cilt bakımı deneyimi.",
|
||||
primaryButton: {
|
||||
text: "Detaylar",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-man-getting-haircut_23-2149220553.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesImageBento
|
||||
tag="Ürünler"
|
||||
title="Profesyonel Bakım Ürünleri"
|
||||
description="Evde de devam ettirebileceğiniz en iyi ürünler."
|
||||
items={[
|
||||
{
|
||||
title: "Saç Şekillendirici",
|
||||
description: "Gün boyu kalıcı mat görünüm.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-selfcare-products_23-2149313034.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sakal Yağı",
|
||||
description: "Yumuşak ve parlak bir sakal için.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elevated-view-three-beer-bottles-ears-wheat-wooden-backdrop_23-2147952035.jpg",
|
||||
},
|
||||
{
|
||||
title: "Tıraş Kremi",
|
||||
description: "Tahrişi önleyen özel içerik.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/everyday-bath-utensils-dark-marble-background_58702-17765.jpg",
|
||||
},
|
||||
{
|
||||
title: "Saç Spreyi",
|
||||
description: "Güçlü tutuş sağlayan tasarım.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/male-make-up-artist-putting-make-up-himself_23-2150166126.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sakal Balmı",
|
||||
description: "Kolay şekillendirme için ideal.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/professional-hairdresser-modeling-beard-barbershop-close-up-photo_613910-18422.jpg",
|
||||
},
|
||||
{
|
||||
title: "Tıraş Sonrası Losyon",
|
||||
description: "Ferahlatan bakım etkisi.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/hair-shampoo_187299-46014.jpg",
|
||||
},
|
||||
{
|
||||
title: "Barber Tarak",
|
||||
description: "Profesyonel kullanım için set.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-male-self-care-setting-still-life_23-2150326535.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProductsSection />
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingLayeredCards
|
||||
tag="Fiyatlarımız"
|
||||
title="Hizmet Paketlerimiz"
|
||||
description="Size uygun olanı seçin ve hemen randevunuzu oluşturun."
|
||||
plans={[
|
||||
{
|
||||
tag: "Temel",
|
||||
price: "₺450",
|
||||
description: "Hızlı ve profesyonel hizmet.",
|
||||
primaryButton: {
|
||||
text: "Randevu Al",
|
||||
href: "#contact",
|
||||
},
|
||||
features: [
|
||||
"Saç Kesimi",
|
||||
"Sakal Düzeltme",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Popüler",
|
||||
price: "₺750",
|
||||
description: "Tam kapsamlı berberlik deneyimi.",
|
||||
primaryButton: {
|
||||
text: "Randevu Al",
|
||||
href: "#contact",
|
||||
},
|
||||
features: [
|
||||
"Saç Kesimi",
|
||||
"Sakal Tasarımı",
|
||||
"Maske",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Premium",
|
||||
price: "₺1200",
|
||||
description: "VIP berber hizmeti.",
|
||||
primaryButton: {
|
||||
text: "Randevu Al",
|
||||
href: "#contact",
|
||||
},
|
||||
features: [
|
||||
"Saç & Sakal",
|
||||
"Cilt Bakımı",
|
||||
"Masaj",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PricingSection />
|
||||
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamStackedCards
|
||||
tag="Ekibimiz"
|
||||
title="Uzman Kadromuz"
|
||||
description="İşinin ehli ustalarımızla tanışın."
|
||||
members={[
|
||||
{
|
||||
name: "Ahmet Çakmak",
|
||||
role: "Master Barber",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-joyful-blonde-male-barber-uniform-holds-hair-clipper-raises-fist-up-isolated-olive-green-space-with-copy-space_141793-60317.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mehmet Yılmaz",
|
||||
role: "Senior Stylist",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/impressed-young-afro-american-male-barber-wearing-uniform-holding-scissors-comb_141793-117056.jpg",
|
||||
},
|
||||
{
|
||||
name: "Caner Demir",
|
||||
role: "Stylist",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/confident-young-caucasian-male-barber-wearing-glasses-wavy-hair-band-uniform-holding-hair-clippers-isolated-crimson-background-with-copy-space_141793-31955.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TeamSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Müşteri Yorumları"
|
||||
title="Ne Dediler?"
|
||||
description="Müşterilerimizin memnuniyet hikayeleri."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Emre K.",
|
||||
role: "Mühendis",
|
||||
quote: "Harika bir deneyim, kesinlikle tavsiye ederim.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-looking-his-phone-barber-shop_23-2148353459.jpg",
|
||||
},
|
||||
{
|
||||
name: "Burak A.",
|
||||
role: "Yönetici",
|
||||
quote: "Profesyonel hizmet ve samimi ortam, çok memnun kaldım.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-looking-mirror-medium-shot_23-2149141782.jpg",
|
||||
},
|
||||
{
|
||||
name: "Caner S.",
|
||||
role: "Sanatçı",
|
||||
quote: "Tarzımı tam anlayan tek yer.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-hair-salon_23-2150665449.jpg",
|
||||
},
|
||||
{
|
||||
name: "Deniz T.",
|
||||
role: "Yazılımcı",
|
||||
quote: "Çok titiz çalışıyorlar, kaliteli bir yer.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-portrait-smiling-attractive-business-lady_1262-2978.jpg",
|
||||
},
|
||||
{
|
||||
name: "Kerem L.",
|
||||
role: "Mimar",
|
||||
quote: "Yıllardır vazgeçemediğim tek berber.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/european-brutal-man-with-beard-cut-barbershop_343596-4697.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTabbedAccordion
|
||||
tag="SSS"
|
||||
title="Sıkça Sorulan Sorular"
|
||||
description="Hizmetlerimizle ilgili merak edilenler."
|
||||
categories={[
|
||||
{
|
||||
name: "Randevu",
|
||||
items: [
|
||||
{
|
||||
question: "Randevu almam gerekiyor mu?",
|
||||
answer: "Evet, daha hızlı hizmet almak için randevu öneriyoruz.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Hizmetler",
|
||||
items: [
|
||||
{
|
||||
question: "Hangi hizmetleri sunuyorsunuz?",
|
||||
answer: "Saç kesimi, sakal tasarımı ve cilt bakımı hizmetlerimiz mevcuttur.",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="İletişim"
|
||||
text="Yeni tarzınız için hemen randevu oluşturun."
|
||||
primaryButton={{
|
||||
text: "WhatsApp'tan Randevu Al",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Konum Bilgisi",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
21
src/pages/HomePage/sections/About.tsx
Normal file
21
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "about" section.
|
||||
|
||||
import React from 'react';
|
||||
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="Hakkımızda"
|
||||
title="Geleneksel Sanat, Modern Dokunuş"
|
||||
description="ÇAKMAK Erkek Kuaförü olarak, ustalığımızı modern bir anlayışla birleştiriyoruz. Her bir müşteri için kişiselleştirilmiş hizmetimizle, sadece saçınızı değil, tarzınızı da yeniliyoruz."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/mid-section-view-barber-s-hand-with-shaving-brush_23-2147839815.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "contact" section.
|
||||
|
||||
import React from 'react';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ContactSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="İletişim"
|
||||
text="Yeni tarzınız için hemen randevu oluşturun."
|
||||
primaryButton={{
|
||||
text: "WhatsApp'tan Randevu Al",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Konum Bilgisi",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Faq.tsx
Normal file
40
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "faq" section.
|
||||
|
||||
import React from 'react';
|
||||
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTabbedAccordion
|
||||
tag="SSS"
|
||||
title="Sıkça Sorulan Sorular"
|
||||
description="Hizmetlerimizle ilgili merak edilenler."
|
||||
categories={[
|
||||
{
|
||||
name: "Randevu",
|
||||
items: [
|
||||
{
|
||||
question: "Randevu almam gerekiyor mu?",
|
||||
answer: "Evet, daha hızlı hizmet almak için randevu öneriyoruz.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Hizmetler",
|
||||
items: [
|
||||
{
|
||||
question: "Hangi hizmetleri sunuyorsunuz?",
|
||||
answer: "Saç kesimi, sakal tasarımı ve cilt bakımı hizmetlerimiz mevcuttur.",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
52
src/pages/HomePage/sections/Features.tsx
Normal file
52
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesTaggedCards
|
||||
tag="Hizmetlerimiz"
|
||||
title="Özel Bakım Seçenekleri"
|
||||
description="İhtiyaçlarınıza uygun profesyonel bakım hizmetlerimiz."
|
||||
items={[
|
||||
{
|
||||
tag: "Bakım",
|
||||
title: "Sakal Tasarımı",
|
||||
description: "Yüz hattınıza en uygun sakal tasarımı ve bakımı.",
|
||||
primaryButton: {
|
||||
text: "Detaylar",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-closes-his-eyes-while-barber-shapes-his-black-beard_1304-2778.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Kesim",
|
||||
title: "Modern Saç Kesimi",
|
||||
description: "Trendlere uygun, profesyonel saç kesim modelleri.",
|
||||
primaryButton: {
|
||||
text: "Detaylar",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-getting-ready-giving-haircut-her-client_23-2148353413.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Bakım",
|
||||
title: "Cilt Bakımı",
|
||||
description: "Sıcak havlu eşliğinde rahatlatıcı cilt bakımı deneyimi.",
|
||||
primaryButton: {
|
||||
text: "Detaylar",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-man-getting-haircut_23-2149220553.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Hero.tsx
Normal file
36
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,36 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitMediaGrid
|
||||
tag="Premium Erkek Bakımı"
|
||||
title="Hassas Kesim, Zamansız Zarafet"
|
||||
description="Modern beyefendiler için özel olarak tasarlanmış premium berberlik deneyimi. Uzman kesimler, kaliteli ürünler ve ödünsüz detaylar."
|
||||
primaryButton={{
|
||||
text: "Randevunuzu Alın",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Hizmetlerimiz",
|
||||
href: "#features",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-hands-shaving-neck_23-2147778912.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/master-hairdresser-prepares-face-shaving-barber-shop_613910-6221.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
63
src/pages/HomePage/sections/Pricing.tsx
Normal file
63
src/pages/HomePage/sections/Pricing.tsx
Normal file
@@ -0,0 +1,63 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "pricing" section.
|
||||
|
||||
import React from 'react';
|
||||
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PricingSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingLayeredCards
|
||||
tag="Fiyatlarımız"
|
||||
title="Hizmet Paketlerimiz"
|
||||
description="Size uygun olanı seçin ve hemen randevunuzu oluşturun."
|
||||
plans={[
|
||||
{
|
||||
tag: "Temel",
|
||||
price: "₺450",
|
||||
description: "Hızlı ve profesyonel hizmet.",
|
||||
primaryButton: {
|
||||
text: "Randevu Al",
|
||||
href: "#contact",
|
||||
},
|
||||
features: [
|
||||
"Saç Kesimi",
|
||||
"Sakal Düzeltme",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Popüler",
|
||||
price: "₺750",
|
||||
description: "Tam kapsamlı berberlik deneyimi.",
|
||||
primaryButton: {
|
||||
text: "Randevu Al",
|
||||
href: "#contact",
|
||||
},
|
||||
features: [
|
||||
"Saç Kesimi",
|
||||
"Sakal Tasarımı",
|
||||
"Maske",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Premium",
|
||||
price: "₺1200",
|
||||
description: "VIP berber hizmeti.",
|
||||
primaryButton: {
|
||||
text: "Randevu Al",
|
||||
href: "#contact",
|
||||
},
|
||||
features: [
|
||||
"Saç & Sakal",
|
||||
"Cilt Bakımı",
|
||||
"Masaj",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Products.tsx
Normal file
57
src/pages/HomePage/sections/Products.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "products" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProductsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesImageBento
|
||||
tag="Ürünler"
|
||||
title="Profesyonel Bakım Ürünleri"
|
||||
description="Evde de devam ettirebileceğiniz en iyi ürünler."
|
||||
items={[
|
||||
{
|
||||
title: "Saç Şekillendirici",
|
||||
description: "Gün boyu kalıcı mat görünüm.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-selfcare-products_23-2149313034.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sakal Yağı",
|
||||
description: "Yumuşak ve parlak bir sakal için.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elevated-view-three-beer-bottles-ears-wheat-wooden-backdrop_23-2147952035.jpg",
|
||||
},
|
||||
{
|
||||
title: "Tıraş Kremi",
|
||||
description: "Tahrişi önleyen özel içerik.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/everyday-bath-utensils-dark-marble-background_58702-17765.jpg",
|
||||
},
|
||||
{
|
||||
title: "Saç Spreyi",
|
||||
description: "Güçlü tutuş sağlayan tasarım.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/male-make-up-artist-putting-make-up-himself_23-2150166126.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sakal Balmı",
|
||||
description: "Kolay şekillendirme için ideal.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/professional-hairdresser-modeling-beard-barbershop-close-up-photo_613910-18422.jpg",
|
||||
},
|
||||
{
|
||||
title: "Tıraş Sonrası Losyon",
|
||||
description: "Ferahlatan bakım etkisi.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/hair-shampoo_187299-46014.jpg",
|
||||
},
|
||||
{
|
||||
title: "Barber Tarak",
|
||||
description: "Profesyonel kullanım için set.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-male-self-care-setting-still-life_23-2150326535.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
58
src/pages/HomePage/sections/Team.tsx
Normal file
58
src/pages/HomePage/sections/Team.tsx
Normal file
@@ -0,0 +1,58 @@
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import GridOrCarousel from "@/components/ui/GridOrCarousel";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
|
||||
type TeamMember = {
|
||||
name: string;
|
||||
role: string;
|
||||
imageSrc?: string;
|
||||
};
|
||||
|
||||
const members: TeamMember[] = [
|
||||
{ name: "Ahmet Yılmaz", role: "Usta Berber" },
|
||||
{ name: "Mehmet Demir", role: "Saç Stilisti" },
|
||||
{ name: "Ali Kaya", role: "Sakal Uzmanı" }
|
||||
];
|
||||
|
||||
export default function TeamSection() {
|
||||
return (
|
||||
<section id="team" aria-label="Team section" className="">
|
||||
<div className="flex flex-col gap-8">
|
||||
<div className="flex flex-col items-center w-content-width mx-auto gap-2">
|
||||
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
|
||||
<p>Ekibimiz</p>
|
||||
</div>
|
||||
|
||||
<TextAnimation
|
||||
text="Uzman Kadromuz"
|
||||
variant="slide-up"
|
||||
gradientText={true}
|
||||
tag="h2"
|
||||
className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance"
|
||||
/>
|
||||
|
||||
<TextAnimation
|
||||
text="Deneyimli ve profesyonel ekibimizle hizmetinizdeyiz."
|
||||
variant="slide-up"
|
||||
gradientText={false}
|
||||
tag="p"
|
||||
className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<ScrollReveal variant="slide-up">
|
||||
<GridOrCarousel>
|
||||
{members.map((member, idx) => (
|
||||
<div key={idx} className="flex flex-col items-center justify-center gap-4 xl:gap-5 2xl:gap-6 p-6 xl:p-7 2xl:p-8 h-full card rounded text-center min-h-[200px]">
|
||||
<div className="flex flex-col gap-2">
|
||||
<span className="text-3xl font-semibold">{member.name}</span>
|
||||
<span className="text-lg font-medium text-foreground/70">{member.role}</span>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</GridOrCarousel>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
52
src/pages/HomePage/sections/Testimonials.tsx
Normal file
52
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "testimonials" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Müşteri Yorumları"
|
||||
title="Ne Dediler?"
|
||||
description="Müşterilerimizin memnuniyet hikayeleri."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Emre K.",
|
||||
role: "Mühendis",
|
||||
quote: "Harika bir deneyim, kesinlikle tavsiye ederim.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-looking-his-phone-barber-shop_23-2148353459.jpg",
|
||||
},
|
||||
{
|
||||
name: "Burak A.",
|
||||
role: "Yönetici",
|
||||
quote: "Profesyonel hizmet ve samimi ortam, çok memnun kaldım.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-looking-mirror-medium-shot_23-2149141782.jpg",
|
||||
},
|
||||
{
|
||||
name: "Caner S.",
|
||||
role: "Sanatçı",
|
||||
quote: "Tarzımı tam anlayan tek yer.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-hair-salon_23-2150665449.jpg",
|
||||
},
|
||||
{
|
||||
name: "Deniz T.",
|
||||
role: "Yazılımcı",
|
||||
quote: "Çok titiz çalışıyorlar, kaliteli bir yer.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-portrait-smiling-attractive-business-lady_1262-2978.jpg",
|
||||
},
|
||||
{
|
||||
name: "Kerem L.",
|
||||
role: "Mimar",
|
||||
quote: "Yıllardır vazgeçemediğim tek berber.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/european-brutal-man-with-beard-cut-barbershop_343596-4697.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user