Compare commits
24 Commits
version_4_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 7bec83ca9b | |||
| 185ec8b229 | |||
| 6c37c658cf | |||
| a5af4a00b0 | |||
| 6cd09a5242 | |||
| 591e403089 | |||
| 1964d424a6 | |||
|
|
96cf4a96e7 | ||
| 93c74b59d1 | |||
| 9a5b086e4d | |||
| 221dc8e1cb | |||
| 6eb4fe2ec8 | |||
| 3e0a20faba | |||
| ae5fafee55 | |||
| af53d7852e | |||
| 3ea0a01d60 | |||
| 23fe2f3376 | |||
| 4c1d7bb5f8 | |||
| cdcedf4c63 | |||
| 31ba7352b5 | |||
| 407f16f22f | |||
| 377f0c257b | |||
| a0087b39ad | |||
| 3220308473 |
@@ -5,15 +5,15 @@
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #f6f0e9;
|
||||
--card: #efe7dd;
|
||||
--foreground: #2b180a;
|
||||
--primary-cta: #2b180a;
|
||||
--primary-cta-text: #f6f0e9;
|
||||
--secondary-cta: #efe7dd;
|
||||
--secondary-cta-text: #2b180a;
|
||||
--accent: #94877c;
|
||||
--background-accent: #afa094;
|
||||
--background: #0a0a0a;
|
||||
--card: #1a1a1a;
|
||||
--foreground: #ffffffe6;
|
||||
--primary-cta: #e6e6e6;
|
||||
--primary-cta-text: #0a0a0a;
|
||||
--secondary-cta: #1a1a1a;
|
||||
--secondary-cta-text: #ffffffe6;
|
||||
--accent: #737373;
|
||||
--background-accent: #737373;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 1rem;
|
||||
|
||||
@@ -1,126 +1,33 @@
|
||||
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee';
|
||||
import TeamListCards from '@/components/sections/team/TeamListCards';
|
||||
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
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 ServicesSection from './HomePage/sections/Services';
|
||||
import TeamSection from './HomePage/sections/Team';
|
||||
import ReviewsSection from './HomePage/sections/Reviews';
|
||||
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">
|
||||
<HeroSplitVerticalMarquee
|
||||
tag="Since 2024"
|
||||
title="Cristaux Barber-Shop: Your Style, Our Expertise."
|
||||
description="Experience professional grooming in the heart of Montendre. From classic cuts to precision beard trims, we define gentlemanly style."
|
||||
primaryButton={{ text: "Book an Appointment", href: "tel:0780149717" }}
|
||||
secondaryButton={{ text: "View Location", href: "https://maps.google.com" }}
|
||||
leftItems={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/photo-metal-texture-pattern_58702-13629.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-composition-shaving-objects_23-2148121964.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/comfortable-old-fashioned-chair-rustic-antique-elegance-indoors-generated-by-ai_188544-29043.jpg" }
|
||||
]}
|
||||
rightItems={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/barber-equipment-working-surface-by-mirror-barbershop_627829-8282.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/luxury-armchairs-barber-shop_140725-7720.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/background-from-old-boards-with-bright-patterns-wall-old-barn-bright-sun-weathered-sunbleached-wooden-boards-with-remnants-old-blue-white-paint_166373-2101.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="About Cristaux Barber-Shop"
|
||||
descriptions={[
|
||||
"Located at 4 Av. de Royan, we are committed to providing Montendre with the finest men's grooming services. Our shop combines tradition with modern precision for every client.", "Our team takes pride in cleanliness, friendliness, and high-quality results. Whether you need a simple cleanup or a full style overhaul, you are in safe hands here."
|
||||
]}
|
||||
primaryButton={{ text: "Call us now", href: "tel:0780149717" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesMediaCarousel
|
||||
tag="Services"
|
||||
title="Professional Grooming Services"
|
||||
description="Premium care for your hair and beard."
|
||||
items={[
|
||||
{ title: "Precision Haircut", description: "Classic and modern cuts.", buttonIcon: "Scissors", imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-hairdresser-shop_23-2149220595.jpg" },
|
||||
{ title: "Beard Trim", description: "Expert shaping and care.", buttonIcon: "Zap", imageSrc: "http://img.b2bpic.net/free-photo/from-hands-shaving-neck_23-2147778916.jpg" },
|
||||
{ title: "Hot Towel Shave", description: "Luxury grooming experience.", buttonIcon: "Sparkles", imageSrc: "http://img.b2bpic.net/free-photo/overhead-view-foam-bowl-shaving-brush-razor-white-folded-napkin-against-wooden-textured-backdrop_23-2148088537.jpg" },
|
||||
{ title: "Hair Styling", description: "Professional styling finishes.", buttonIcon: "Star", imageSrc: "http://img.b2bpic.net/free-photo/woman-holding-her-client-s-head-side-view_23-2148353446.jpg" },
|
||||
{ title: "Scalp Treatment", description: "Refreshing scalp care.", buttonIcon: "Award", imageSrc: "http://img.b2bpic.net/free-photo/lovely-overjoyed-woman-domestic-wear-has-healthy-skin-clenches-fists-from-happiness_273609-37082.jpg" },
|
||||
{ title: "Full Grooming", description: "Comprehensive care package.", buttonIcon: "CheckCircle", imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-selfcare-products_23-2149313012.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ServicesSection />
|
||||
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamListCards
|
||||
tag="Our Team"
|
||||
title="Meet the Barbers"
|
||||
description="Skilled professionals dedicated to your perfect look."
|
||||
groups={[
|
||||
{
|
||||
title: "The Team", members: [
|
||||
{ name: "The Master Barber", role: "Senior Stylist", detail: "10+ years of expertise in classic grooming and modern fade techniques.", imageSrc: "http://img.b2bpic.net/free-photo/positive-bearded-black-male-with-tattoo-cross-arms-dressed-white-shirt_613910-15917.jpg" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TeamSection />
|
||||
|
||||
<div id="reviews" data-section="reviews">
|
||||
<SectionErrorBoundary name="reviews">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Testimonials"
|
||||
title="What our clients say"
|
||||
description="Rated 4.5/5 stars by our valued community."
|
||||
testimonials={[
|
||||
{ name: "John Edgar", role: "Traveler", quote: "Best haircut I've had in months of traveling Europe. Listened to exactly what I wanted.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-young-man-isolated-white-background_23-2148056445.jpg" },
|
||||
{ name: "Stephen Course", role: "Local Client", quote: "Excellent work, clean shop. Friendly bilingual staff made everything easy.", imageSrc: "http://img.b2bpic.net/free-photo/professional-girl-hairdresser-makes-client-haircut-girl-is-sitting-mask-beauty-salon_343596-4457.jpg" },
|
||||
{ name: "Haithem", role: "Regular", quote: "Excellent 5/5, highly recommended.", imageSrc: "http://img.b2bpic.net/free-photo/side-view-makeup-artist-applying-powder-model_23-2147783866.jpg" },
|
||||
{ name: "Client Four", role: "Local", quote: "Great atmosphere and consistent quality every visit.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-blue-eyed-redhead-full-throttle-bearded-male-grey-background_613910-9289.jpg" },
|
||||
{ name: "Client Five", role: "Regular", quote: "Super nice barber, always a pleasure to visit.", imageSrc: "http://img.b2bpic.net/free-photo/excited-young-male-barber-wearing-glasses-red-shirt-barber-apron-holding-barbering-tools-looking-camera-showing-thumb-up-isolated-blue-background_141793-138548.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ReviewsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTwoColumn
|
||||
tag="FAQ"
|
||||
title="Common Questions"
|
||||
description="Get the answers you need."
|
||||
items={[
|
||||
{ question: "Do I need an appointment?", answer: "We recommend booking ahead, especially for weekends. Please call 07 80 14 97 17." },
|
||||
{ question: "Where are you located?", answer: "We are located at 4 Av. de Royan, 17130 Montendre." },
|
||||
{ question: "Do you speak English?", answer: "Yes, we are happy to assist in English." }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Visit Us"
|
||||
text="Ready for your next cut? Book your spot today."
|
||||
primaryButton={{ text: "Book Now", href: "tel:0780149717" }}
|
||||
secondaryButton={{ text: "Directions", href: "https://maps.google.com/?q=4+Av.+de+Royan,17130+Montendre" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
22
src/pages/HomePage/sections/About.tsx
Normal file
22
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
// 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 AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="About Cristaux Barber-Shop"
|
||||
descriptions={[
|
||||
"Located at 4 Av. de Royan, we are committed to providing Montendre with the finest men's grooming services. Our shop combines tradition with modern precision for every client.", "Our team takes pride in cleanliness, friendliness, and high-quality results. Whether you need a simple cleanup or a full style overhaul, you are in safe hands here."
|
||||
]}
|
||||
primaryButton={{ text: "Call us now", href: "tel:0780149717" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Contact.tsx
Normal file
21
src/pages/HomePage/sections/Contact.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 "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="Visit Us"
|
||||
text="Ready for your next cut? Book your spot today."
|
||||
primaryButton={{ text: "Book Now", href: "tel:0780149717" }}
|
||||
secondaryButton={{ text: "Directions", href: "https://maps.google.com/?q=4+Av.+de+Royan,17130+Montendre" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
25
src/pages/HomePage/sections/Faq.tsx
Normal file
25
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,25 @@
|
||||
// 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 FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTwoColumn
|
||||
tag="FAQ"
|
||||
title="Common Questions"
|
||||
description="Get the answers you need."
|
||||
items={[
|
||||
{ question: "Do I need an appointment?", answer: "We recommend booking ahead, especially for weekends. Please call 07 80 14 97 17." },
|
||||
{ question: "Where are you located?", answer: "We are located at 4 Av. de Royan, 17130 Montendre." },
|
||||
{ question: "Do you speak English?", answer: "Yes, we are happy to assist in English." }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
19
src/pages/HomePage/sections/Hero.tsx
Normal file
19
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,19 @@
|
||||
// Created by add_section_from_catalog (HeroBillboardCarousel).
|
||||
|
||||
import React from 'react';
|
||||
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div data-webild-section="hero" id="hero">
|
||||
<HeroBillboardCarousel
|
||||
title="Cristaux Barber-Shop: Your Style, Our Expertise."
|
||||
items={[{"imageSrc":"http://img.b2bpic.net/free-photo/photo-metal-texture-pattern_58702-13629.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/flat-lay-composition-shaving-objects_23-2148121964.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/comfortable-old-fashioned-chair-rustic-antique-elegance-indoors-generated-by-ai_188544-29043.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/barber-equipment-working-surface-by-mirror-barbershop_627829-8282.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/luxury-armchairs-barber-shop_140725-7720.jpg"}]}
|
||||
primaryButton={{"href":"tel:0780149717","text":"Book an Appointment"}}
|
||||
secondaryButton={{"href":"https://maps.google.com","text":"View Location"}}
|
||||
tag="Since 2024"
|
||||
description="Experience professional grooming in the heart of Montendre. From classic cuts to precision beard trims, we define gentlemanly style."
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Reviews.tsx
Normal file
27
src/pages/HomePage/sections/Reviews.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 "reviews" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ReviewsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="reviews" data-section="reviews">
|
||||
<SectionErrorBoundary name="reviews">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Testimonials"
|
||||
title="What our clients say"
|
||||
description="Rated 4.5/5 stars by our valued community."
|
||||
testimonials={[
|
||||
{ name: "John Edgar", role: "Traveler", quote: "Best haircut I've had in months of traveling Europe. Listened to exactly what I wanted.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-young-man-isolated-white-background_23-2148056445.jpg" },
|
||||
{ name: "Stephen Course", role: "Local Client", quote: "Excellent work, clean shop. Friendly bilingual staff made everything easy.", imageSrc: "http://img.b2bpic.net/free-photo/professional-girl-hairdresser-makes-client-haircut-girl-is-sitting-mask-beauty-salon_343596-4457.jpg" },
|
||||
{ name: "Haithem", role: "Regular", quote: "Excellent 5/5, highly recommended.", imageSrc: "http://img.b2bpic.net/free-photo/side-view-makeup-artist-applying-powder-model_23-2147783866.jpg" },
|
||||
{ name: "Client Four", role: "Local", quote: "Great atmosphere and consistent quality every visit.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-blue-eyed-redhead-full-throttle-bearded-male-grey-background_613910-9289.jpg" },
|
||||
{ name: "Client Five", role: "Regular", quote: "Super nice barber, always a pleasure to visit.", imageSrc: "http://img.b2bpic.net/free-photo/excited-young-male-barber-wearing-glasses-red-shirt-barber-apron-holding-barbering-tools-looking-camera-showing-thumb-up-isolated-blue-background_141793-138548.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Services.tsx
Normal file
28
src/pages/HomePage/sections/Services.tsx
Normal file
@@ -0,0 +1,28 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "services" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ServicesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesMediaCarousel
|
||||
tag="Services"
|
||||
title="Professional Grooming Services"
|
||||
description="Premium care for your hair and beard."
|
||||
items={[
|
||||
{ title: "Precision Haircut", description: "Classic and modern cuts.", buttonIcon: "Scissors", imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-hairdresser-shop_23-2149220595.jpg" },
|
||||
{ title: "Beard Trim", description: "Expert shaping and care.", buttonIcon: "Zap", imageSrc: "http://img.b2bpic.net/free-photo/from-hands-shaving-neck_23-2147778916.jpg" },
|
||||
{ title: "Hot Towel Shave", description: "Luxury grooming experience.", buttonIcon: "Sparkles", imageSrc: "http://img.b2bpic.net/free-photo/overhead-view-foam-bowl-shaving-brush-razor-white-folded-napkin-against-wooden-textured-backdrop_23-2148088537.jpg" },
|
||||
{ title: "Hair Styling", description: "Professional styling finishes.", buttonIcon: "Star", imageSrc: "http://img.b2bpic.net/free-photo/woman-holding-her-client-s-head-side-view_23-2148353446.jpg" },
|
||||
{ title: "Scalp Treatment", description: "Refreshing scalp care.", buttonIcon: "Award", imageSrc: "http://img.b2bpic.net/free-photo/lovely-overjoyed-woman-domestic-wear-has-healthy-skin-clenches-fists-from-happiness_273609-37082.jpg" },
|
||||
{ title: "Full Grooming", description: "Comprehensive care package.", buttonIcon: "CheckCircle", imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-selfcare-products_23-2149313012.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Team.tsx
Normal file
27
src/pages/HomePage/sections/Team.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 "team" section.
|
||||
|
||||
import React from 'react';
|
||||
import TeamListCards from '@/components/sections/team/TeamListCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TeamSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamListCards
|
||||
tag="Our Team"
|
||||
title="Meet the Barbers"
|
||||
description="Skilled professionals dedicated to your perfect look."
|
||||
groups={[
|
||||
{
|
||||
title: "The Team", members: [
|
||||
{ name: "The Master Barber", role: "Senior Stylist", detail: "10+ years of expertise in classic grooming and modern fade techniques.", imageSrc: "http://img.b2bpic.net/free-photo/positive-bearded-black-male-with-tattoo-cross-arms-dressed-white-shirt_613910-15917.jpg" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user