Barre de recherche voyage
Destination, dates et voyageurs dans une barre arrondie ; la section touchée se détache en pastille.
Réglages
Code
import { useState } from "react";
import { motion } from "framer-motion";
import { CalendarDays, MapPin, Search, Users } from "lucide-react";
const spring = { type: "spring" as const, stiffness: 300, damping: 30 };
const items = [
{ Icon: MapPin, label: "Où", hint: "Rechercher une destination" },
{ Icon: CalendarDays, label: "Dates", hint: "Ajouter des dates" },
{ Icon: Users, label: "Voyageurs", hint: "Ajouter des voyageurs" },
] as const;
interface TravelSearchProps {
color?: string;
onSearch?: () => void;
}
export default function TravelSearch({ color = "#0071e3", onSearch }: TravelSearchProps) {
const [active, setActive] = useState(0);
return (
<motion.div
layout
transition={spring}
className="flex w-full max-w-[440px] flex-wrap items-center rounded-[28px] bg-white p-1.5 text-[#1d1d1f] shadow-[0_1px_2px_rgba(0,0,0,0.03),0_8px_28px_rgba(0,0,0,0.05)] dark:bg-[#1c1c1e] dark:text-[#f5f5f7]"
>
{items.map(({ Icon, label, hint }, i) => (
<motion.button
layout
key={label}
type="button"
aria-pressed={active === i}
onClick={() => setActive(i)}
className={`flex min-w-28 flex-1 items-center gap-2 rounded-full px-4 py-3 text-left ${
active === i
? "bg-[#f5f5f7] shadow-[0_1px_2px_rgba(0,0,0,0.03),0_8px_28px_rgba(0,0,0,0.05)] dark:bg-black"
: ""
}`}
>
<Icon className="h-4 w-4" />
<span>
<b className="block text-xs font-medium">{label}</b>
<small className="block text-[11px] text-[#86868b]">{hint}</small>
</span>
</motion.button>
))}
<button
type="button"
aria-label="Rechercher"
onClick={onSearch}
className="grid h-11 w-11 place-items-center rounded-full text-white"
style={{ backgroundColor: color }}
>
<Search className="h-4 w-4" />
</button>
</motion.div>
);
}
Prompt pour l’IA
Collez-le dans ChatGPT, Claude ou Cursor : le bloc sera adapté à votre projet avec ces réglages, même sans React.
Plus dans Champs
Où l’utiliser
Tout le monde connaît cette barre : destination, dates et nombre de voyageurs côte à côte, puis un bouton rond. Elle convient à un site de locations de vacances, une petite chaîne d’hôtels, un camping ou une agence d’excursions. Si vous montez un site de réservation, cette barre de recherche de voyage vous évite de la maquetter.
Les champs sont des exemples : reliez chacun à votre propre calendrier ou sélecteur de voyageurs. Passez le bouton de recherche à la couleur de votre marque. Sur écran étroit, les sections passent à la ligne, vérifiez le rendu avec vos vrais libellés.