Toggle style iOS
Un interrupteur compact comme dans les réglages de l’iPhone, vert une fois activé, avec un ressort naturel.
Réglages
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 = "Activer",
}: 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 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
La plupart des gens en ont actionné des milliers sur leur téléphone et comprennent sans rien lire. Il a sa place dans les écrans de réglages et de préférences : « Se souvenir de moi » à la connexion, « Newsletter » dans un compte client ou « Renouvellement automatique » dans une application d’abonnement. Un toggle iOS en React, reconnu comme interrupteur par les lecteurs d’écran.
Le vert signifie « activé » pour les utilisateurs d’iPhone, mais passez à votre couleur si le vert veut déjà dire autre chose sur votre site, comme le stock disponible. Donnez-lui toujours un libellé clair.