2 Commits

Author SHA1 Message Date
d8e6ad9806 Merge version_2_1781384395428 into main
Merge version_2_1781384395428 into main
2026-06-13 21:04:09 +00:00
kudinDmitriyUp
eb783a987f Bob AI: Replaced hero, pricing, and contact sections with custom des 2026-06-13 21:03:25 +00:00
10 changed files with 470 additions and 291 deletions

View File

@@ -5,15 +5,15 @@
:root {
/* @colorThemes/lightTheme/grayNavyBlue */
--background: #f5faff;
--card: #ffffff;
--foreground: #001122;
--primary-cta: #15479c;
--primary-cta-text: #f5faff;
--secondary-cta: #ffffff;
--secondary-cta-text: #001122;
--accent: #a8cce8;
--background-accent: #7ba3cf;
--background: #050012;
--card: #16002b;
--foreground: #f8f0ff;
--primary-cta: #8b5cf6;
--primary-cta-text: #ffffff;
--secondary-cta: #3b82f6;
--secondary-cta-text: #ffffff;
--accent: #facc15;
--background-accent: #5b21b6;
/* @layout/border-radius/rounded */
--radius: 1.5rem;

View File

@@ -1,294 +1,36 @@
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import PricingCenteredCards from '@/components/sections/pricing/PricingCenteredCards';
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
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 AboutSection from './HomePage/sections/About';
import ProductSection from './HomePage/sections/Product';
import MetricsSection from './HomePage/sections/Metrics';
import TestimonialsSection from './HomePage/sections/Testimonials';
import FaqSection from './HomePage/sections/Faq';
import HeroSection from './HomePage/sections/Hero';
import PricingSection from './HomePage/sections/Pricing';
import ContactSection from './HomePage/sections/Contact';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboardCarousel
tag="BIG MARD Store"
title="iPhone 17 Series Available"
description="Best prices in Moscow. Experience the future of mobile technology with our anime-grade hardware."
primaryButton={{
text: "Reserve Now",
href: "#contact",
}}
secondaryButton={{
text: "Catalog",
href: "#pricing",
}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-clouds-digital-art_23-2151105889.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/anime-character-using-virtual-reality-glasses-metaverse_23-2151568847.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-futuristic-sci-fi-techno-lights-cool-background_181624-23655.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/rainbow-colored-smartphone-design-with-gradient-effect-isolated-white-background_187299-47164.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/motion-lights-background-concept_23-2148241225.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/phone-16-pro-max-gold-mockup_187299-45926.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<>
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTestimonial
tag="About Us"
quote="Bringing you the latest Apple tech with Moscow's best prices. Join the trend, stay connected."
author="BIG MARD Team"
role="Moscow Apple Tech Specialists"
imageSrc="http://img.b2bpic.net/free-vector/gradient-text-illustration-cyber-monday-sale_23-2150879721.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="product" data-section="product">
<SectionErrorBoundary name="product">
<FeaturesImageBento
tag="Featured Collection"
title="iPhone 17 Models"
description="Premium colors, latest technology."
items={[
{
title: "iPhone 17",
description: "Classic power",
imageSrc: "http://img.b2bpic.net/free-photo/neon-lights-road-water_23-2151966344.jpg",
},
{
title: "iPhone 17 Pro",
description: "Maximum performance",
imageSrc: "http://img.b2bpic.net/free-photo/anime-character-using-virtual-reality-glasses-metaverse_23-2151568883.jpg",
},
{
title: "iPhone 17 Max",
description: "Ultimate screen",
imageSrc: "http://img.b2bpic.net/free-photo/illustration-rain-futuristic-city_23-2151406564.jpg",
},
{
title: "17 Air",
description: "Ultra light",
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-man-with-phone_23-2150964583.jpg",
},
{
title: "White Series",
description: "Clean aesthetics",
imageSrc: "http://img.b2bpic.net/free-photo/vivid-abstract-psychedelic-corridor-pattern-with-blue-purple-colors_181624-23157.jpg",
},
{
title: "Pink/Blue",
description: "Vibrant colors",
imageSrc: "http://img.b2bpic.net/free-photo/cyber-monday-deals-gaming-joy_23-2152027085.jpg",
},
{
title: "Black/Gold",
description: "Luxury finish",
imageSrc: "http://img.b2bpic.net/free-photo/empty-dark-room-modern-futuristic-sci-fi-background-3d-illustration_35913-2290.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ProductSection />
<PricingSection />
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingCenteredCards
tag="Digital Catalog"
title="Price List"
description="Reserve your model today"
plans={[
{
tag: "Popular",
price: "58,500 ₽",
description: "iPhone 17E Pink 256GB 1SIM",
features: [
"Moscow Stock",
"Best Price",
"Reserve Now",
],
primaryButton: {
text: "Reserve",
href: "#contact",
},
},
{
tag: "Elite",
price: "102,000 ₽",
description: "iPhone 17 Pro Starting Price",
features: [
"Advanced Camera",
"Top Speed",
"Global Support",
],
primaryButton: {
text: "Reserve",
href: "#contact",
},
},
{
tag: "Max",
price: "109,500 ₽",
description: "iPhone 17 Pro Max Starting Price",
features: [
"Biggest Battery",
"Cinema Display",
"Top Specs",
],
primaryButton: {
text: "Reserve",
href: "#contact",
},
},
]}
/>
</SectionErrorBoundary>
</div>
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="Our Stats"
title="Why BIG MARD"
description="Trust in our service"
metrics={[
{
value: "100+",
title: "Daily Sales",
features: [
"Satisfied customers",
"Fast shipping",
"Expert support",
],
},
{
value: "24/7",
title: "Service",
features: [
"Technical assistance",
"Fast answers",
"Order tracking",
],
},
{
value: "5/5",
title: "Rating",
features: [
"Verified quality",
"Excellent feedback",
"Premium experience",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialRatingCards
tag="Reviews"
title="Customer Stories"
description="What our customers say"
testimonials={[
{
name: "Anna",
role: "Photographer",
quote: "Love the pink 17! Smooth purchase.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/woman-choosing-earphones-store_1303-31280.jpg",
},
{
name: "Ivan",
role: "Tech Enthusiast",
quote: "Best prices in Moscow, hands down.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-cartoon-woman-portrait_23-2151839667.jpg",
},
{
name: "Elena",
role: "Student",
quote: "Quick reserve process, very happy.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/lifestyle-portrait-happy-excited-young-man-sitting-coffee-shop-with-laptop-headphones_1258-245362.jpg",
},
{
name: "Dmitry",
role: "Professional",
quote: "My 17Pro was ready in an hour.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/photogenic-woman-smiling-with-heaphones-shopping-mall0_23-2148397231.jpg",
},
{
name: "Sofia",
role: "Influencer",
quote: "Style and power in one device.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/anime-character-using-virtual-reality-glasses-metaverse_23-2151568892.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSplitMedia
tag="Support"
title="Common Questions"
description="How can we help you?"
items={[
{
question: "Where are you located?",
answer: "Moscow, Barklaya street 8, pavilion 138",
},
{
question: "What are your hours?",
answer: "Every day, 10:0021:00",
},
{
question: "Can I reserve online?",
answer: "Yes! Use Telegram to reserve your device now.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/sad-anime-blue-monday-illustration_23-2151910274.jpg"
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<ContactSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Get in Touch"
text="Ask any question / Reserve your iPhone now via Telegram @big_mard or call +7 (985) 791-00-99."
primaryButton={{
text: "Message @big_mard",
href: "https://t.me/big_mard",
}}
secondaryButton={{
text: "Call +7 (985) 791-00-99",
href: "tel:+79857910099",
}}
/>
</SectionErrorBoundary>
</div>
<HeroSection />
</>
);
}

View 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 AboutTestimonial from '@/components/sections/about/AboutTestimonial';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTestimonial
tag="About Us"
quote="Bringing you the latest Apple tech with Moscow's best prices. Join the trend, stay connected."
author="BIG MARD Team"
role="Moscow Apple Tech Specialists"
imageSrc="http://img.b2bpic.net/free-vector/gradient-text-illustration-cyber-monday-sale_23-2150879721.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,73 @@
import { motion } from 'motion/react';
import Button from '@/components/ui/Button';
export default function ContactSection() {
return (
<section id="contact" data-webild-section="contact" className="relative w-full py-24 bg-background overflow-hidden">
<div className="max-w-content-width mx-auto px-6">
<div className="card p-8 md:p-12 rounded-radius-lg bg-card border border-border/50 relative overflow-hidden">
<div className="absolute inset-0 bg-gradient-to-br from-primary-cta/10 to-accent/10 pointer-events-none" />
<div className="relative z-10 grid grid-cols-1 md:grid-cols-2 gap-12">
<div>
<span className="inline-block px-3 py-1 mb-4 text-sm font-medium rounded-full bg-primary-cta/20 text-primary-cta">Get in Touch</span>
<h2 className="text-3xl md:text-4xl font-bold text-foreground mb-6">Ask any question / Reserve your iPhone now</h2>
<div className="space-y-6">
<div className="flex items-start gap-4">
<div className="w-10 h-10 rounded-full bg-primary-cta/20 flex items-center justify-center shrink-0">
<svg className="w-5 h-5 text-primary-cta" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z"></path></svg>
</div>
<div>
<h3 className="font-semibold text-foreground">Phone</h3>
<a href="tel:+79857910099" className="text-muted-foreground hover:text-primary-cta transition-colors">+7 (985) 791-00-99</a>
</div>
</div>
<div className="flex items-start gap-4">
<div className="w-10 h-10 rounded-full bg-primary-cta/20 flex items-center justify-center shrink-0">
<svg className="w-5 h-5 text-primary-cta" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path></svg>
</div>
<div>
<h3 className="font-semibold text-foreground">Telegram</h3>
<a href="https://t.me/big_mard" className="text-muted-foreground hover:text-primary-cta transition-colors">@big_mard</a>
</div>
</div>
</div>
</div>
<div className="space-y-8">
<div>
<h3 className="text-xl font-bold text-foreground mb-4">Visit Us</h3>
<div className="flex items-start gap-4">
<div className="w-10 h-10 rounded-full bg-accent/20 flex items-center justify-center shrink-0">
<svg className="w-5 h-5 text-accent" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"></path><path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"></path></svg>
</div>
<div>
<p className="text-muted-foreground">Moscow, Barklaya street 8,<br/>1st floor, pavilion 138</p>
</div>
</div>
</div>
<div>
<h3 className="text-xl font-bold text-foreground mb-4">Working Hours</h3>
<div className="flex items-start gap-4">
<div className="w-10 h-10 rounded-full bg-accent/20 flex items-center justify-center shrink-0">
<svg className="w-5 h-5 text-accent" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
</div>
<div>
<p className="text-muted-foreground">Every day<br/>10:0021:00</p>
</div>
</div>
</div>
<div className="pt-4">
<Button text="Message @big_mard" href="https://t.me/big_mard" variant="primary" className="w-full py-3" />
</div>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@@ -0,0 +1,35 @@
// 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 FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSplitMedia
tag="Support"
title="Common Questions"
description="How can we help you?"
items={[
{
question: "Where are you located?",
answer: "Moscow, Barklaya street 8, pavilion 138",
},
{
question: "What are your hours?",
answer: "Every day, 10:0021:00",
},
{
question: "Can I reserve online?",
answer: "Yes! Use Telegram to reserve your device now.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/sad-anime-blue-monday-illustration_23-2151910274.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,50 @@
import { motion } from 'motion/react';
import Button from '@/components/ui/Button';
export default function HeroSection() {
return (
<section id="hero" data-webild-section="hero" className="relative w-full min-h-[80vh] flex items-center bg-background overflow-hidden">
<div className="absolute inset-0 bg-gradient-to-br from-background via-background to-background-accent/20 z-0" />
<div className="max-w-content-width mx-auto px-6 relative z-10 grid grid-cols-1 lg:grid-cols-2 gap-12 items-center py-24">
<motion.div
initial={{ opacity: 0, x: -30 }}
animate={{ opacity: 1, x: 0 }}
transition={{ duration: 0.6 }}
className="space-y-8"
>
<span className="inline-block px-4 py-1.5 rounded-full bg-primary-cta/20 text-primary-cta font-semibold text-sm tracking-wide">
BIG MARD Store
</span>
<h1 className="text-5xl md:text-7xl font-bold text-foreground leading-tight">
iPhone 17 Series <span className="text-transparent bg-clip-text bg-gradient-to-r from-primary-cta to-accent">Available</span>
</h1>
<p className="text-xl text-muted-foreground max-w-lg">
Best prices in Moscow. Experience the future of mobile technology with our premium Apple devices.
</p>
<div className="flex flex-wrap gap-4 pt-4">
<Button text="Reserve Now" href="#contact" variant="primary" className="px-8 py-4 text-lg" />
<Button text="Catalog" href="#pricing" variant="secondary" className="px-8 py-4 text-lg" />
</div>
</motion.div>
<motion.div
initial={{ opacity: 0, scale: 0.9 }}
animate={{ opacity: 1, scale: 1 }}
transition={{ duration: 0.8, delay: 0.2 }}
className="relative"
>
<div className="absolute inset-0 bg-gradient-to-tr from-primary-cta/30 to-accent/30 blur-3xl rounded-full opacity-50 animate-pulse" />
<img
src="http://img.b2bpic.net/free-photo/phone-16-pro-max-gold-mockup_187299-45926.jpg"
alt="iPhone 17 Pro Max"
className="relative z-10 w-full h-auto object-contain drop-shadow-2xl"
/>
</motion.div>
</div>
</section>
);
}

View File

@@ -0,0 +1,49 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "metrics" section.
import React from 'react';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="Our Stats"
title="Why BIG MARD"
description="Trust in our service"
metrics={[
{
value: "100+",
title: "Daily Sales",
features: [
"Satisfied customers",
"Fast shipping",
"Expert support",
],
},
{
value: "24/7",
title: "Service",
features: [
"Technical assistance",
"Fast answers",
"Order tracking",
],
},
{
value: "5/5",
title: "Rating",
features: [
"Verified quality",
"Excellent feedback",
"Premium experience",
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,94 @@
import { motion } from 'motion/react';
import Button from '@/components/ui/Button';
export default function PricingSection() {
const products = [
{
model: "iPhone 17E",
storage: "256GB",
color: "Pink",
version: "🇮🇳 India",
sim: "1SIM",
price: "58,500 ₽",
image: "http://img.b2bpic.net/free-photo/rainbow-colored-smartphone-design-with-gradient-effect-isolated-white-background_187299-47164.jpg"
},
{
model: "iPhone 17",
storage: "256GB",
color: "Black",
version: "🇯🇵 Japan",
sim: "eSIM",
price: "67,000 ₽",
image: "http://img.b2bpic.net/free-photo/phone-16-pro-max-gold-mockup_187299-45926.jpg"
},
{
model: "iPhone 17 Air",
storage: "256GB",
color: "White",
version: "🇯🇵 Japan",
sim: "eSIM",
price: "78,000 ₽",
image: "http://img.b2bpic.net/free-photo/rainbow-colored-smartphone-design-with-gradient-effect-isolated-white-background_187299-47164.jpg"
},
{
model: "iPhone 17 Pro",
storage: "From",
color: "All Colors",
version: "Global",
sim: "Dual",
price: "102,000 ₽",
image: "http://img.b2bpic.net/free-photo/phone-16-pro-max-gold-mockup_187299-45926.jpg"
},
{
model: "iPhone 17 Pro Max",
storage: "From",
color: "All Colors",
version: "Global",
sim: "Dual",
price: "109,500 ₽",
image: "http://img.b2bpic.net/free-photo/phone-16-pro-max-gold-mockup_187299-45926.jpg"
}
];
return (
<section id="pricing" data-webild-section="pricing" className="relative w-full py-24 bg-background overflow-hidden">
<div className="max-w-content-width mx-auto px-6">
<div className="text-center mb-16">
<h2 className="text-4xl md:text-5xl font-bold text-foreground mb-4">Digital Catalog</h2>
<p className="text-lg text-muted-foreground">Swipe through our premium selection</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{products.map((product, idx) => (
<motion.div
key={idx}
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ delay: idx * 0.1 }}
className="card p-6 rounded-radius-lg bg-card border border-border/50 hover:border-primary-cta/50 transition-colors group relative overflow-hidden"
>
<div className="absolute inset-0 bg-gradient-to-br from-primary-cta/5 to-accent/5 opacity-0 group-hover:opacity-100 transition-opacity" />
<div className="relative z-10">
<div className="aspect-[4/5] w-full mb-6 rounded-radius-md overflow-hidden bg-background/50 flex items-center justify-center">
<img src={product.image} alt={product.model} className="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500" />
</div>
<h3 className="text-xl font-bold text-foreground mb-2">{product.model}</h3>
<div className="flex flex-wrap gap-2 mb-4">
<span className="px-2 py-1 text-xs rounded-full bg-background-accent/20 text-foreground">{product.storage}</span>
<span className="px-2 py-1 text-xs rounded-full bg-background-accent/20 text-foreground">{product.color}</span>
<span className="px-2 py-1 text-xs rounded-full bg-background-accent/20 text-foreground">{product.version}</span>
<span className="px-2 py-1 text-xs rounded-full bg-background-accent/20 text-foreground">{product.sim}</span>
</div>
<div className="flex items-center justify-between mt-6">
<div className="text-2xl font-bold text-primary-cta">{product.price}</div>
<Button text="Reserve" href="#contact" variant="primary" className="px-4 py-2 text-sm" />
</div>
</div>
</motion.div>
))}
</div>
</div>
</section>
);
}

View File

@@ -0,0 +1,57 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "product" section.
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ProductSection(): React.JSX.Element {
return (
<div id="product" data-section="product">
<SectionErrorBoundary name="product">
<FeaturesImageBento
tag="Featured Collection"
title="iPhone 17 Models"
description="Premium colors, latest technology."
items={[
{
title: "iPhone 17",
description: "Classic power",
imageSrc: "http://img.b2bpic.net/free-photo/neon-lights-road-water_23-2151966344.jpg",
},
{
title: "iPhone 17 Pro",
description: "Maximum performance",
imageSrc: "http://img.b2bpic.net/free-photo/anime-character-using-virtual-reality-glasses-metaverse_23-2151568883.jpg",
},
{
title: "iPhone 17 Max",
description: "Ultimate screen",
imageSrc: "http://img.b2bpic.net/free-photo/illustration-rain-futuristic-city_23-2151406564.jpg",
},
{
title: "17 Air",
description: "Ultra light",
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-man-with-phone_23-2150964583.jpg",
},
{
title: "White Series",
description: "Clean aesthetics",
imageSrc: "http://img.b2bpic.net/free-photo/vivid-abstract-psychedelic-corridor-pattern-with-blue-purple-colors_181624-23157.jpg",
},
{
title: "Pink/Blue",
description: "Vibrant colors",
imageSrc: "http://img.b2bpic.net/free-photo/cyber-monday-deals-gaming-joy_23-2152027085.jpg",
},
{
title: "Black/Gold",
description: "Luxury finish",
imageSrc: "http://img.b2bpic.net/free-photo/empty-dark-room-modern-futuristic-sci-fi-background-3d-illustration_35913-2290.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,57 @@
// 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 TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialRatingCards
tag="Reviews"
title="Customer Stories"
description="What our customers say"
testimonials={[
{
name: "Anna",
role: "Photographer",
quote: "Love the pink 17! Smooth purchase.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/woman-choosing-earphones-store_1303-31280.jpg",
},
{
name: "Ivan",
role: "Tech Enthusiast",
quote: "Best prices in Moscow, hands down.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-cartoon-woman-portrait_23-2151839667.jpg",
},
{
name: "Elena",
role: "Student",
quote: "Quick reserve process, very happy.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/lifestyle-portrait-happy-excited-young-man-sitting-coffee-shop-with-laptop-headphones_1258-245362.jpg",
},
{
name: "Dmitry",
role: "Professional",
quote: "My 17Pro was ready in an hour.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/photogenic-woman-smiling-with-heaphones-shopping-mall0_23-2148397231.jpg",
},
{
name: "Sofia",
role: "Influencer",
quote: "Style and power in one device.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/anime-character-using-virtual-reality-glasses-metaverse_23-2151568892.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}