Toggle im iOS-Stil
Ein kompakter Schalter wie in den iPhone-Einstellungen, grün im aktiven Zustand, mit natürlicher Feder.
Einstellungen
Code
import { useState } from "react";
import { motion } from "framer-motion";
const spring = { type: "spring" as const, stiffness: 300, damping: 30 };
interface IosToggleProps {
color?: string;
checked?: boolean;
defaultChecked?: boolean;
onCheckedChange?: (checked: boolean) => void;
label?: string;
}
export default function IosToggle({
color = "#34c759",
checked,
defaultChecked = true,
onCheckedChange,
label = "Aktivieren",
}: IosToggleProps) {
const [internal, setInternal] = useState(defaultChecked);
const on = checked ?? internal;
const toggle = () => {
if (checked === undefined) setInternal(!on);
onCheckedChange?.(!on);
};
return (
<button
type="button"
role="switch"
aria-checked={on}
aria-label={label}
onClick={toggle}
className={`flex h-8 w-14 items-center rounded-full p-1 transition-colors ${
on ? "" : "bg-black/5 dark:bg-white/10"
}`}
style={on ? { backgroundColor: color } : undefined}
>
<motion.span
className="h-6 w-6 rounded-full bg-white shadow-[0_1px_2px_rgba(0,0,0,0.03),0_8px_28px_rgba(0,0,0,0.05)]"
animate={{ x: on ? 24 : 0 }}
transition={spring}
/>
</button>
);
}
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 Eingabefelder
Wofür du ihn nutzen kannst
Die meisten haben so einen Schalter tausendfach auf dem Handy umgelegt und wissen ohne Lesen, was er tut. Er passt zu Einstellungsseiten und Präferenzen: „Angemeldet bleiben“ beim Login, „Newsletter“ im Kundenkonto oder „Automatisch verlängern“ in einer Abo-App. Ein iOS-Toggle in React, den Screenreader als echten Schalter erkennen.
Grün heißt für iPhone-Nutzer „an“. Nimm trotzdem deine Markenfarbe, wenn Grün auf deiner Seite schon etwas anderes bedeutet, etwa Lagerbestand. Gib ihm immer ein klares Label, denn der Schalter allein sagt nicht, was er steuert.