import { useEffect, useState } from "react"; // --- Minimal, bilingual, multi-page single-file site --- // Pages: Home (Accueil), Vendre (Producteurs), Acheter (Professionnels) // Brand colors: #fbb500 (brand), #322400 (ink), #ffffff (white) // Sign-in / Sign-up links to www.arrivage.pro; Social links in footer. // Inspiration assets (logo/photos) can be wired later via placeholders. const STRINGS = { fr: { langLabel: "FR", switchTo: "EN", nav: { home: "Accueil", sell: "Vendre", buy: "Acheter", signin: "Se connecter", signup: "Créer un compte" }, hero: { title: "La commande B2B des agriculteurs québécois qui vendent en direct", subtitle: "Arrivage simplifie la vente en circuits courts : inventaire central, listes de prix par clientèle, diffusion d’offres, commandes en quelques clics, documents et rapports automatiques.", ctaDemo: "Demander une démo", ctaExplore: "Explorer les fonctionnalités" }, home: { producersTitle: "Pour les producteurs-vendeurs", producersBullets: [ "Inventaire central riche avec formats multiples, prix par format et fiches techniques", "Listes de prix par type de clientèle ou par territoire", "Diffusion ciblée (PDF, lien partagé, Marché Arrivage)", "Bons de commande en quelques clics côté acheteur", "Documents automatiques : bons de cueillette, préparation, livraison, factures", "Logistique : routes par quartiers/régions, minimums, frais/gratuité" ], buyersTitle: "Pour les acheteurs professionnels", buyersBullets: [ "Place de marché montrant l’offre livrable à votre adresse", "Filtrage automatique par routes/conditions définies par les producteurs", "Transparence sur prix et stocks quand une liste active est associée", "Commande possible avec ou sans compte selon le contexte" ], buyerTypesTitle: "Exemples d’acheteurs", buyerTypes: [ "Restaurants", "Hôtels", "Traiteurs", "Détaillants alimentaires", "Institutions (écoles, CPE, hôpitaux)", "Résidences pour aînés", "Banques alimentaires" ], sellerTypesTitle: "Exemples de vendeurs", sellerTypes: [ "Maraîchers", "Éleveurs", "Cueilleurs", "Transformateurs", "Artisans", "Apiculteurs" ] }, sell: { title: "Vendre en B2B, simplement", lead: "Gérez toute la chaîne de commande avec autonomie, efficacité et traçabilité.", steps: [ "Créez l’inventaire : produits, formats, prix, fiches techniques", "Déclinez en listes de prix par client/segment/territoire", "Diffusez : PDF personnalisable, lien sécurisé, visibilité Marché", "Recevez et approuvez les commandes ; ajustez au besoin", "Préparez & livrez : listes d’accueil/préparation, routes, bons de livraison (attachez la copie signée)", "Facturez : en 1 clic ou import externe ; l’acheteur retrouve la facture liée à sa commande", "Analysez : rapports filtrables par période, client, département, produit (export CSV/PDF)" ] }, buy: { title: "Acheter local, sans friction", lead: "Accédez à une offre locale et livrable, filtrée automatiquement selon votre adresse.", points: [ "Offres contextualisées par routes et conditions (jour, minimum, frais/gratuité)", "Commandes rapides depuis des offres personnalisées ou inventaires en temps réel", "Documents clairs : bons de commande, bons de livraison, factures accessibles dans votre compte", "Un seul compte de facturation possible quand plusieurs producteurs sont regroupés" ] }, ctaDemo: { title: "Prêt à gagner du temps et des ventes ?", lead: "On vous montre l’outil et on l’adapte à votre réalité (maraîchage, élevage, transformateurs, HUBs).", placeholder: "Votre courriel", submit: "Demander une démo", note: "Aucune obligation. Réponse sous peu." }, footer: { resources: "Ressources", producers: "Producteurs", buyers: "Acheteurs", contact: "Nous joindre", rights: "Tous droits réservés.", socials: "Réseaux sociaux" } }, en: { langLabel: "EN", switchTo: "FR", nav: { home: "Home", sell: "Sell", buy: "Buy", signin: "Sign in", signup: "Sign up" }, hero: { title: "The B2B ordering tool for Québec farmers selling direct", subtitle: "Arrivage streamlines short-supply-chain sales: central inventory, customer-specific price lists, offer distribution, one‑click orders, automated documents and reports.", ctaDemo: "Request a demo", ctaExplore: "Explore features" }, home: { producersTitle: "For producer-sellers", producersBullets: [ "Rich central inventory with multiple formats, per‑format pricing and technical sheets", "Price lists by customer type or territory", "Targeted distribution (PDF, shareable link, Arrivage Marketplace)", "Buyers order in a few clicks", "Automatic documents: picking, prep, delivery slips, invoices", "Logistics: delivery routes by neighborhood/region, minimums, fees/free delivery" ], buyersTitle: "For professional buyers", buyersBullets: [ "Marketplace shows what’s deliverable to your address", "Auto‑filtering by producer routes and conditions", "Transparent pricing and stock when an active list is attached", "Ordering with or without an account depending on context" ], buyerTypesTitle: "Buyer examples", buyerTypes: [ "Restaurants", "Hotels", "Caterers", "Grocery/Retail", "Institutions (schools, childcare, hospitals)", "Seniors’ residences", "Food banks" ], sellerTypesTitle: "Seller examples", sellerTypes: [ "Vegetable growers", "Livestock", "Foragers", "Processors", "Artisans", "Beekeepers" ] }, sell: { title: "Sell B2B, simply", lead: "Run your entire order chain with autonomy, efficiency and traceability.", steps: [ "Create inventory: products, formats, prices, technical sheets", "Branch into price lists by client/segment/territory", "Distribute: customizable PDF, secure link, Marketplace visibility", "Receive & approve orders; adjust if needed", "Prep & deliver: intake/picking lists, routes, delivery slips (attach signed copy)", "Invoice: one‑click or external import; buyers see the invoice linked to their order", "Analyze: reports by period, client, department, product (CSV/PDF export)" ] }, buy: { title: "Buy local without friction", lead: "See what’s deliverable to your address, automatically filtered.", points: [ "Offers contextualized by routes and conditions (day, minimum, fees/free delivery)", "Fast ordering from personalized offers or real‑time inventories", "Clear documents: POs, delivery slips, invoices accessible in your account", "A single billing account can group multiple producers when relevant" ] }, ctaDemo: { title: "Ready to save time and sell more?", lead: "We’ll demo the tool and tailor it to your context (vegetables, livestock, processors, HUBs).", placeholder: "Your email", submit: "Request a demo", note: "No obligation. We’ll get back shortly." }, footer: { resources: "Resources", producers: "Producers", buyers: "Buyers", contact: "Contact", rights: "All rights reserved.", socials: "Socials" } } }; function useHashRoute() { const [route, setRoute] = useState(window.location.hash.replace('#','') || '/'); useEffect(() => { const onHash = () => setRoute(window.location.hash.replace('#','') || '/'); window.addEventListener('hashchange', onHash); return () => window.removeEventListener('hashchange', onHash); }, []); return [route, (r) => { window.location.hash = r; setRoute(r); }]; } export default function ArrivageSite() { const [lang, setLang] = useState<'fr' | 'en'>('fr'); const t = STRINGS[lang]; const [route] = useHashRoute(); return (
{route === '/' && } {route === '/vendre' && } {route === '/acheter' && }
); } function StyleBlock(){ return ( ); } function Header({lang, setLang, t}:{lang:'fr'|'en', setLang:(l:'fr'|'en')=>void, t:any}){ return (
A Arrivage
); } function Home({t}:{t:any}){ return (
B2B · Circuits courts

{t.hero.title}

{t.hero.subtitle}

Aperçu / Preview

Inventaire central & Listes de prix

Formats multiples, prix par clientèle, PDF de diffusion. Emplacements pour logos/photos à intégrer.

{/* Placeholder visuels – remplacer par assets du site actuel */}

{t.home.producersTitle}

    {t.home.producersBullets.map((x:string,i:number)=>(
  • {x}
  • ))}

{t.home.buyersTitle}

    {t.home.buyersBullets.map((x:string,i:number)=>(
  • {x}
  • ))}
{t.home.buyerTypesTitle}
{t.home.buyerTypes.map((x:string,i:number)=>({x}))}
{t.home.sellerTypesTitle}
{t.home.sellerTypes.map((x:string,i:number)=>({x}))}
); } function Sell({t}:{t:any}){ return (

{t.sell.title}

{t.sell.lead}

    {t.sell.steps.map((x:string,i:number)=>(
  1. {i+1}. {x}
  2. ))}
Documents automatiques
  • PDF de liste de prix personnalisable (logo, entête, conditions)
  • Bons de commande générés et conservés dans chaque commande
  • Bons de cueillette, préparation et livraison (attachez la copie signée)
  • Factures : en 1 clic ou import externe ; visibles côté acheteur
); } function Buy({t}:{t:any}){ return (

{t.buy.title}

{t.buy.lead}

    {t.buy.points.map((x:string,i:number)=>(
  • {x}
  • ))}
Adresse & conditions

Les offres visibles sont filtrées par routes de livraison (jour, minimum, frais/gratuité) définies par les producteurs.

); } function Cta({t}:{t:any}){ const [email, setEmail] = useState(""); return (

{t.ctaDemo.title}

{t.ctaDemo.lead}

{e.preventDefault(); alert('Merci / Thanks!');}}> setEmail(e.target.value)} style={{flex:1,height:44,padding:'0 12px',borderRadius:12,border:'1px solid #e6e1d5'}}/>
{t.ctaDemo.note}
www.arrivage.com

Prévu pour un hébergement simple. Remplacer les placeholders d’images par vos assets (logo/photos du site actuel).

); } function Footer({t}:{t:any}){ return ( ); }