Sanftes Akkordeon
Eine Frage, die sich sanft öffnet und ihre Antwort zeigt, dazu ein Pfeil, der sich beim Aufklappen dreht.
Einstellungen
Code
import { useState } from "react";
import { AnimatePresence, motion } from "framer-motion";
import { ChevronDown } from "lucide-react";
const spring = { type: "spring" as const, stiffness: 300, damping: 30 };
interface AccordionProps {
title?: string;
}
export default function Accordion({ title = "Was ist in der Buchung enthalten?" }: AccordionProps) {
const [open, setOpen] = useState(false);
return (
<div className="w-72 overflow-hidden rounded-[22px] bg-white dark:bg-[#1c1c1e] text-[#1d1d1f] dark:text-[#f5f5f7] shadow-[0_1px_2px_rgba(0,0,0,0.03),0_8px_28px_rgba(0,0,0,0.05)]">
<button
type="button"
aria-expanded={open}
onClick={() => setOpen((o) => !o)}
className="flex w-full items-center justify-between p-5 text-left text-sm font-medium"
>
{title}
<motion.span animate={{ rotate: open ? 180 : 0 }} transition={spring}>
<ChevronDown className="h-4 w-4" />
</motion.span>
</button>
<AnimatePresence initial={false}>
{open && (
<motion.div
initial={{ height: 0, opacity: 0 }}
animate={{ height: "auto", opacity: 1 }}
exit={{ height: 0, opacity: 0 }}
transition={spring}
className="overflow-hidden"
>
<p className="border-t border-black/10 px-5 py-4 text-sm text-[#86868b] dark:border-white/10">
Alles Nötige ist enthalten. Du kannst diese Antwort über die Steuerelemente ändern.
</p>
</motion.div>
)}
</AnimatePresence>
</div>
);
}
Prompt für KI
Füg ihn in ChatGPT, Claude oder Cursor ein und der Baustein wird mit diesen Einstellungen an dein Projekt angepasst, auch ohne React.
Mehr aus Mikrointeraktionen
Wofür du ihn nutzen kannst
Akkordeons halten FAQ-Seiten und Produktdetails übersichtlich: Man liest die Fragen und öffnet nur, was einen interessiert. Nutz es für „Was ist in der Buchung enthalten?“ auf einer Hotelseite, für Versand und Rückgabe im Onlineshop oder für den Ablauf eines Kurses. Die Höhe wird animiert statt zu springen, deshalb wirkt dieses Akkordeon in React ruhig.
Formulier jede Frage so, wie ein Kunde sie stellen würde, nicht als Überschrift wie „Richtlinien“. Halte Antworten kurz. Brauchen fast alle jede Antwort, zeig sie einfach direkt auf der Seite, denn Verstecken kostet nur Klicks.