// ================== icons.jsx ================== // Minimal stroke icon set — thin, geometric, automotive-blueprint vibe. // Each icon: 24×24 viewBox, stroke="currentColor", strokeWidth 1.4. const Icon = ({ children, size = 18, className = "", stroke = 1.4, ...rest }) => ( {children} ); const IArrow = (p) => ( ); const IArrowUpRight = (p) => ( ); const ICheck = (p) => ( ); const IDot = ({ size = 8, className = "" }) => ( ); const IPlus = (p) => ( ); const IMinus = (p) => ( ); const ICar = (p) => ( ); const ISpark = (p) => ( ); const IChart = (p) => ( ); const IUsers = (p) => ( ); const IGlobe = (p) => ( ); const ILayers = (p) => ( ); const IShield = (p) => ( ); const IBolt = (p) => ( ); const IPhone = (p) => ( ); const IMonitor = (p) => ( ); const ICRM = (p) => ( ); const IInbox = (p) => ( ); const IDomain = (p) => ( ); const ITemplate = (p) => ( ); const IMenu = (p) => ( ); const IX = (p) => ( ); const ITag = (p) => ( ); // Platform glyphs (geometric placeholders — not the real brand marks) const PlatformFB = ({ size = 22 }) => ( ); const PlatformIG = ({ size = 22 }) => ( ); const PlatformR5 = ({ size = 22 }) => (
R5
); const PlatformP3 = ({ size = 22 }) => (
P3
); Object.assign(window, { Icon, IArrow, IArrowUpRight, ICheck, IDot, IPlus, IMinus, ICar, ISpark, IChart, IUsers, IGlobe, ILayers, IShield, IBolt, IPhone, IMonitor, ICRM, IInbox, IDomain, ITemplate, IMenu, IX, ITag, PlatformFB, PlatformIG, PlatformR5, PlatformP3, }); // ================== primitives.jsx ================== // Shared primitives: layout containers, eyebrows, buttons, section headers. const { motion, AnimatePresence, useInView } = window.framerMotion || window.FramerMotion || {}; const cn = (...xs) => xs.filter(Boolean).join(" "); // Container with consistent gutter const Container = ({ className = "", children, ...rest }) => (
{children}
); // Section wrapper with vertical rhythm + optional eyebrow + label. // Premium polish: a centered hairline gradient at the very top of every // section gives the page a quiet structural rhythm. Pure white with no // lime accent — the calmer treatment reads as luxury SaaS instead of // neon-y. Pointer events off so the line never intercepts clicks. const Section = ({ id, children, className = "", label, n }) => (
{children}
); // Tiny monospaced eyebrow ("§ 03 / How it works") const Eyebrow = ({ index, children, className = "" }) => (
{index && § {index}} {children}
); // Big editorial section title const SectionTitle = ({ children, className = "" }) => (

{children}

); const SectionLead = ({ children, className = "" }) => (

{children}

); // Buttons — render as when href is passed (so the landing CTAs can // link straight to /signup without a wrapper anchor); fall back to //
); }; // ---------- 06. TEMPLATES ---------- const Templates = [ { key: "premia", name: "Premia", desc: "За премиум салони", accent: "#C9A66B", tone: "warm", }, { key: "apex", name: "Apex", desc: "Спортски и динамичен стил", accent: "#FF5C42", tone: "sport", }, { key: "voltek", name: "Voltek", desc: "Модерен electric / future изглед", accent: "#CFF255", tone: "future", }, { key: "familia", name: "Familia", desc: "Пристапен и доверлив стил", accent: "#7AA8FF", tone: "family", }, { key: "classic", name: "Classic", desc: "Чист, професионален изглед", accent: "#E8E8E6", tone: "classic", }, ]; const TemplatePreview = ({ t }) => { // tiny stylized website mock per tone return (
{/* Browser bar */}
{t.key}.salon.mk
{/* Header */}
{t.name === "Premia" ? "Premia" : t.name === "Familia" ? "Familia" : t.name === "Voltek" ? "VOLTEK" : t.name} {t.tone === "sport" && }
Возила Финансирање Контакт
{/* Hero strip */}
{t.tone === "future" ? "Иднината на возила." : t.tone === "sport" ? "Вози. Победувај." : t.tone === "warm" ? "Класа, без компромис." : t.tone === "family" ? "Возило за фамилијата." : "Возила со доверба."}
{/* Featured car silhouette */}
{/* Cards row */}
{[0, 1, 2].map((i) => (
))}
{/* Live preview badge */}
Во живо
); }; const TemplatesSection = () => { const scrollerRef = React.useRef(null); const [active, setActive] = React.useState(0); const total = Templates.length + 1; // +1 for the "all templates" card const onScroll = () => { const el = scrollerRef.current; if (!el) return; const cardW = el.firstChild ? el.firstChild.offsetWidth + 16 : 0; if (!cardW) return; const idx = Math.round(el.scrollLeft / cardW); setActive(Math.min(total - 1, Math.max(0, idx))); }; return (
Дизајни Секој салон може да изгледа{" "} премиум.
Готови шаблони што се прилагодуваат на твојот бренд. Менуваш бои, фотки и копирајт — без дизајнер.
{/* Mobile: horizontal snap carousel */}
{Templates.map((t) => (
{t.name}
{t.desc}
))} {/* All templates card */}
+ Уште шаблони

12+ шаблони. Сите со сопствен домен.

Сите се responsive, SEO-структурирани и оптимизирани за возила.

Види ги сите дизајни
{/* Dots */}
{Array.from({ length: total }).map((_, i) => ( ))}
{/* Desktop: grid */}
{Templates.map((t, i) => (
{t.name}
{t.desc}
))} {/* Sixth card: "All templates" */}
+ Уште шаблони

12+ шаблони. Сите со сопствен домен.

Сите се responsive, SEO-структурирани и оптимизирани за возила.

Види ги сите дизајни
); }; // ---------- 08. PLATFORM AUTOMATION ---------- const PlatformCard = ({ name, Logo, sub, idx, animate }) => { // animation: cycle through "Ready" -> "Publishing" -> "Published" const published = animate >= 2; const publishing = animate === 1; return (
{published ? "Published" : publishing ? "Publishing…" : "Ready"}
{name}
{sub}
{/* progress */}
Audi A6 {published ? "00:12" : publishing ? "00:08" : "00:00"}
); }; const PlatformsSection = () => { // animation cycle for all 4 cards const [phase, setPhase] = React.useState(0); // 0,1,2 -> loop React.useEffect(() => { const id = setInterval(() => setPhase((p) => (p + 1) % 3), 2200); return () => clearInterval(id); }, []); return (
Автоматизација Еден клик. Четири канали.
DealerHub го оптимизира текстот, сликите и форматот за секој канал — автоматски.
{/* Real-world preview: 4 phones with the same Audi A6 listing on FB / IG / Реклама5 / Pazar3 */}
Истиот оглас на Facebook, Instagram, Реклама5 и Pazar3
{[ { name: "Facebook", Logo: PlatformFB, sub: "Marketplace · Page · Groups" }, { name: "Instagram", Logo: PlatformIG, sub: "Post · Reel · Story" }, { name: "Реклама5", Logo: PlatformR5, sub: "Возила · MK" }, { name: "Pazar3", Logo: PlatformP3, sub: "Возила · MK" }, ].map((p, i) => ( ))}
{[ { t: "Формат за секој канал", d: "Различни димензии, текст и tags по платформа — без рачно прилагодување.", }, { t: "Маркер за продадено на сите канали", d: "Кога ќе се означи продадено, огласите автоматски се повлекуваат.", }, { t: "Распоред на објави", d: "Закажи кога одат огласите — викенди, утра или вечерни пикови.", }, ].map((f) => (
{f.t}
{f.d}
))}
); }; // ---------- 09. CRM ---------- const Leads = [ { n: "Стефан М.", c: "Audi A6 · 2021", s: "New", src: "Facebook", v: "€ 38.900", color: "#CFF255" }, { n: "Ана Т.", c: "BMW X5 · 2020", s: "Contacted", src: "Instagram", v: "€ 41.500", color: "#E8E8E6" }, { n: "Дамјан П.", c: "VW Tiguan · 2022", s: "Test Drive", src: "Реклама5", v: "€ 26.400", color: "#7AA8FF" }, { n: "Маја С.", c: "Mercedes C-Class", s: "Closed", src: "Pazar3", v: "€ 32.000", color: "#CFF255" }, { n: "Бојан Р.", c: "Škoda Octavia", s: "Contacted", src: "Website", v: "€ 18.900", color: "#E8E8E6" }, ]; const statusTone = { New: "border-lime/30 bg-lime/[0.08] text-lime", Contacted: "border-white/[0.12] bg-white/[0.04] text-ink-100", "Test Drive": "border-blue-300/30 bg-blue-300/[0.06] text-[#9EC0FF]", Closed: "border-lime/40 bg-lime/[0.14] text-lime", }; const CRMSection = () => (
CRM Не губи клиенти{" "} низ пораки.
DealerHub ги собира купците од сите канали и ти помага да следиш кој клиент за кое возило е заинтересиран.
{/* Left: stats */}
{[ { l: "Активни возила", v: 38, sub: "+4 оваа недела" }, { l: "Купци / месец", v: 127, sub: "+18% од минатиот месец" }, { l: "Посети на сајтот", v: 4287, sub: "82% mobile", wide: true }, ].map((s, i) => (
{s.l}
{s.sub}
))}
* Демо податоци за приказ.
{/* Right: CRM table */}
Pipeline · оваа недела Live
5 нови 2 test drives 1 closed
{/* Pipeline chips (mobile only) */}
{[ { l: "Нов", n: 2, tone: "lime" }, { l: "Контактиран", n: 2, tone: "soft" }, { l: "Тест возење", n: 1, tone: "soft" }, { l: "Продадено", n: 1, tone: "lime" }, ].map((c) => ( {c.l} {c.n} ))}
Клиент Возило Канал Статус Вредност
{Leads.map((l, i) => (
{/* Mobile layout */}
{l.n.split(" ").map((p) => p[0]).join("")}
{l.n}
{l.c}
{l.s}
Од: {l.src} {l.v}
{/* Desktop layout */}
{l.n.split(" ").map((p) => p[0]).join("")}
{l.n}
ID #{1024 + i}
{l.c}
{l.src}
{l.s}
{l.v}
))}
{/* Footer summary */}
Pipeline вредност
€ 157.700
); // ---------- 10. ANALYTICS ---------- const AnalyticsSection = () => (
Аналитика Знај што навистина продава.
Која платформа носи најмногу клиенти. Кои возила бараат најмногу внимание. Едно место за сите одговори.
{/* Top viewed vehicle */} Најгледано возило
Audi A6 45 TFSI
2021 · S-line · 48.210 km
Views
Leads
CTR
4,6%
{/* Best channel */} Најдобар канал
{[ { l: "Facebook", v: 48, Logo: PlatformFB }, { l: "Instagram", v: 27, Logo: PlatformIG }, { l: "Реклама5", v: 18, Logo: PlatformR5 }, { l: "Pazar3", v: 7, Logo: PlatformP3 }, ].map((c, i) => (
{c.l} {c.v}%
))}
{/* Conversion */} Conversion rate
3,8%
↑ 0,7
Lead → продажба, последни 30 дена
{/* sparkline */}
{/* Bottom row */} Најмногу побарувани
{[ { v: "BMW X5", n: 41 }, { v: "Audi A6", n: 37 }, { v: "VW Tiguan", n: 28 }, { v: "Mercedes C", n: 22 }, ].map((r) => (
{r.v} {r.n}
))}
Продадени возила
Q4 2025 · +3 vs. Q3
{/* monthly bars */}
{[3, 5, 4, 6, 4, 7].map((h, i) => (
{["Јул", "Авг", "Сеп", "Окт", "Ное", "Дек"][i]}
))}
Mobile traffic
{/* ring */}
82%
Mobile-first посетители
Сите шаблони се mobile-optimized
); Object.assign(window, { TemplatesSection, PlatformsSection, CRMSection, AnalyticsSection }); // ================== pricing.jsx ================== // Pricing, Trust, FAQ, Final CTA, Footer const { motion: M4 } = window.framerMotion; // ---------- 11. PRICING ---------- // Plans MUST match src/lib/plan-features.ts (PLAN_FEATURES) — that's the // source of truth used by /admin/billing, feature gates and signup checkout. // Prices below mirror monthlyPriceEur for each tier: // PRESENCE €29 — сакам само сајт // STARTER €69 — solo dealer // PRO €129 — активен тим (NAJPOPULARNO) // BUSINESS €229 — голем салон // ENTERPRISE — контактирај продажби const Plans = [ { key: "presence", name: "Презенс", price: 29, forWho: "Сакам само вебсајт за моите возила — без социјални и CRM.", features: [ "Сопствен сајт со домен", "До 20 возила", "1 администратор", "Основна аналитика", "Поддршка на македонски", ], cta: "Започни сега", }, { key: "starter", name: "Стартер", price: 69, forWho: "За самостоен дилер што почнува со автоматско објавување.", features: [ "Сè од Презенс", "До 50 возила · 2 корисници", "Instagram + Reels објавување", "AI описи на возила", "Преводи на пораки од купувачи", "Неделен дигест извештај", ], cta: "Започни сега", }, { key: "pro", name: "Про", price: 129, badge: "Најпопуларен", forWho: "За активен дилерски тим што објавува секоја недела.", features: [ "Сè од Стартер", "До 200 возила · 5 корисници", "Facebook + Реклама5 + Pazar3", "Reels масовно објавување (50/мес.)", "AI текст за реклами", "Сопствен домен + паметно пребарување", "Замена на возило + пазарна аналитика", ], cta: "Започни сега", highlighted: true, }, { key: "business", name: "Бизнис", price: 229, forWho: "За поголем салон со повеќе корисници и напредна поддршка.", features: [ "Сè од Про", "Неограничено возила и корисници", "Сопствен бренд (white-label)", "API пристап за интеграции", "Приоритет на купци + автоматизации", "Reels без лимит", ], cta: "Започни сега", }, ]; // Enterprise lives in its own strip below the 4-card grid — contact sales // only, no monthly price to show. const EnterprisePlan = { name: "Ентерпрајс", forWho: "За мрежи салони, повеќе локации или индивидуален SLA. Договараме поединечно.", features: [ "Сè од Бизнис", "Повеќе локации под еден акаунт", "Посветен account manager", "SLA за uptime и поддршка", ], cta: "Контактирај нè", }; const PriceCard = ({ p }) => (
{p.highlighted && (
)}
{p.name}
{p.forWho}
{p.badge && ( {p.badge} )}
€{p.price} / мес.
без ДДВ · отказ во секое време
    {p.features.map((f) => (
  • {f}
  • ))}
{p.highlighted ? ( {p.cta} ) : ( {p.cta} )}
); const PricingSection = () => (
Цени Пакети за секој тип авто салон.
Без поставување, без скриени трошоци. 14 дена бесплатно за сите пакети — плаќаш дури кога ќе одлучиш дека е вистинско.
{/* Plans — 4 self-serve tiers as a responsive grid (1 col mobile, 2 cols tablet, 4 cols desktop). Pro card is visually highlighted and lifted to first position on mobile so the most-popular plan gets the lead position regardless of viewport. */}
{Plans.map((p, i) => ( ))}
{/* Enterprise — separate full-width strip below the 4 self-serve cards. Contact-sales only, so it gets a calmer treatment without a price. */}
{EnterprisePlan.name}
Контактирај продажби

{EnterprisePlan.forWho}

    {EnterprisePlan.features.map((f) => (
  • {f}
  • ))}
{EnterprisePlan.cta}
{/* Conversion strip */}
{[ { l: "Готов сајт за 15 мин.", d: "Дизајн, инвентар и објави во еден чекор." }, { l: "Без обврзувачки договор", d: "Месечно. Откажуваш во секое време." }, { l: "Поддршка на македонски", d: "Реални луѓе, не chatbot." }, ].map((b) => (
{b.l}
{b.d}
))}

Цените може да се приспособат според потребите на салонот.

); // ---------- CONTACT / DEMO ---------- const ContactSection = () => { const [submitted, setSubmitted] = React.useState(false); const onSubmit = (e) => { e.preventDefault(); setSubmitted(true); }; return (
{!submitted ? (

Со праќањето се согласуваш со условите.

Испрати барање
) : (
Барањето е испратено.

Се јавуваме во рок од 24 часа. Дотогаш можеш и сам да го{" "} креираш сајтот.

)}
); }; const Field = ({ label, name, type = "text", ...rest }) => ( ); const FieldArea = ({ label, name, rows = 3, ...rest }) => (