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
Voir tout : ChampsOù 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.