import { useEffect, useState } from 'react' import { Link } from 'react-router-dom' import { Facets, fetchFacets, fetchStats, formatInt, Stats } from '../api' import CountUp from '../components/CountUp' import { categoryIcon, IconArrowRight } from '../components/Icons' import Rail from '../components/Rail' import SearchBar from '../components/SearchBar' import Skeleton from '../components/Skeleton' interface RailDef { title: string category?: string seeAllHref: string } function pickCategory( facets: Facets | null, keywords: string[] ): string | undefined { if (!facets) return undefined const found = facets.categories.find((c) => keywords.some( (k) => c.key.toLowerCase().includes(k) || c.label.toLowerCase().includes(k) ) ) return found?.key } export default function Home() { const [stats, setStats] = useState(null) const [facets, setFacets] = useState(null) useEffect(() => { const controller = new AbortController() fetchStats(controller.signal) .then(setStats) .catch(() => {}) fetchFacets(controller.signal) .then(setFacets) .catch(() => {}) return () => controller.abort() }, []) const rails: RailDef[] = [ { title: 'Nouveautés', seeAllHref: '/produits?sort=recent' }, ] const erable = pickCategory(facets, ['érable', 'erable', 'miel']) if (erable) { rails.push({ title: 'Érable & miel', category: erable, seeAllHref: `/produits?category=${encodeURIComponent(erable)}`, }) } const beaute = pickCategory(facets, ['beauté', 'beaute', 'soins']) if (beaute) { rails.push({ title: 'Beauté & soins', category: beaute, seeAllHref: `/produits?category=${encodeURIComponent(beaute)}`, }) } const maison = pickCategory(facets, ['maison', 'déco', 'deco']) if (maison) { rails.push({ title: 'Maison & déco', category: maison, seeAllHref: `/produits?category=${encodeURIComponent(maison)}`, }) } return (

Le répertoire des produits d'ici

Tous les produits québécois.
Un seul endroit.

Fabri-Ka rassemble les catalogues des boutiques en ligne d'ici — fabriqué, conçu et vendu au Québec.

{stats ? ( <>
Produits
Boutiques
Régions
) : ( <> )}
Statistiques

Parcourir par catégorie

Tout le catalogue
{facets ? ( facets.categories.map((c) => ( {c.label} {formatInt(c.n)} )) ) : ( <> )}
{rails.map((r) => ( ))}
) }