import { useEffect, useRef, useState } from 'react'
import { useParams } from 'react-router-dom'
import PrimaryButton from '../components/PrimaryButton'
import {
resolveLandingModel,
type LandingModel,
} from '../data/landingModels'
import { listPublicBlogs, type PublicBlog } from '../lib/api'
import { toFaDigits } from '../lib/faDigits'
import SeoHead from '../components/SeoHead'
import watermarkBg from '../assets/images/mado-230-bg.png'
import BlogCarousel from '../components/BlogCarousel'
import NotFoundPage from './NotFoundPage'
import './LandingModelPage.css'
function ColorCarousel({ images }: { images: string[] }) {
const [index, setIndex] = useState(0)
if (images.length === 0) return null
return (
{images.map((_, i) => (
)
}
function LandingContent({ model }: { model: LandingModel }) {
const [blogs, setBlogs] = useState([])
const rootRef = useRef(null)
const modelCode = model.label.replace('مادو ', '')
useEffect(() => {
void listPublicBlogs()
.then((data) => setBlogs(data))
.catch(() => setBlogs([]))
}, [model])
useEffect(() => {
const root = rootRef.current
if (!root) return
const nodes = [...root.querySelectorAll('.js-reveal')]
const io = new IntersectionObserver(
(entries) => {
for (const entry of entries) {
if (!entry.isIntersecting) continue
entry.target.classList.add('is-in')
io.unobserve(entry.target)
}
},
{ threshold: 0.16, rootMargin: '0px 0px -8% 0px' },
)
nodes.forEach((node) => io.observe(node))
return () => io.disconnect()
}, [model.id, blogs.length])
return (
حداکثر سرعت
{toFaDigits(model.maxSpeed)}
کیلومتــــر
{model.heroExtras?.[0] ? (
{model.heroExtras[0].title}
{model.heroExtras[0].subtitle}
) : null}
پیمایش تا
{toFaDigits(model.rangeValue)}
کیلومتر
{model.rangeNote}
پیمایش تا
{toFaDigits(model.rangeValue)}
کیلومتر
{model.rangeNote}
{model.heroExtras?.[1] ? (
{model.heroExtras[1].title}
{model.heroExtras[1].subtitle}
) : null}
مـــــــــادو
{modelCode}
{model.introText}
{model.featureBlocks?.length ? (
model.featureBlocks.map((block) => (
{block.eyebrow}
{block.title}
{block.body}
))
) : (
<>
کیلومتر
دیجیتالی
{model.dashText}
>
)}

{model.id === 'mado-230' ? (
<>
قابلیت
فست شارژ
به زودی...
>
) : (
<>
{model.highlight.title}
{model.highlight.body ? (
{model.highlight.body}
) : null}
>
)}
{model.colorTitle}
{model.colorSubtitles.map((line) => (
{line}
))}
باطری
لیتیومی نسل جدید
{model.batteryItems.map((item) => (
- {item}
))}
دسترسی آسان به تمامی قطعات بواسطه تولید 80 قطعه از 100 قطعه اصلی در داخل کشور قیمت مناسب
خدمات و قطعات موتور سیکلت
مادوموتور
دوست دار محیط زیست
با موتور سیکت های برقی مادو موتور با کاهش آلایندگی هوا به سلامت یکدیگر کمک کنیم
گارانتی
بلند مدت و خدمات پس از فروش
{model.guaranteeItems.map((item) => (
- {item}
))}
قیمت
و شرایط مناسب
{model.priceItems.map((item) => (
- {item}
))}
{blogs.length > 0 ? (
) : null}
)
}
export default function LandingModelPage() {
const { model } = useParams()
const landing = resolveLandingModel(model)
if (!landing) return
return
}