React + MotionChamps

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.

Version Markdown avec tout le code, pour les assistants IA

Plus dans Champs

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