React + MotionNavigation

Segment-Tabs im iOS-Stil

Eine hellgraue Spur, auf der eine weiße Pille mit leichtem Schatten zum gewählten Bereich gleitet.

Einstellungen

3

Code

import { useState } from "react";
import { AnimatePresence, motion } from "framer-motion";

const spring = { type: "spring" as const, stiffness: 300, damping: 30 };

const OPTIONS = ["Unterkünfte", "Erlebnisse", "Leistungen"];

interface SegmentedControlProps {
  count?: number;
}

export default function SegmentedControl({ count = 3 }: SegmentedControlProps) {
  const options = OPTIONS.slice(0, count);
  const [active, setActive] = useState(0);

  return (
    <div className="flex rounded-full bg-black/5 p-1 text-[#1d1d1f] dark:text-[#f5f5f7] dark:bg-white/10">
      {options.map((option, i) => (
        <button
          key={option}
          type="button"
          aria-pressed={active === i}
          onClick={() => setActive(i)}
          className="relative rounded-full px-4 py-2 text-sm"
        >
          <AnimatePresence>
            {active === i && (
              <motion.span
                layoutId="segmented-pill"
                className="absolute inset-0 rounded-full bg-white dark:bg-[#1c1c1e] shadow-[0_1px_2px_rgba(0,0,0,0.03),0_8px_28px_rgba(0,0,0,0.05)]"
                transition={spring}
              />
            )}
          </AnimatePresence>
          <span className="relative">{option}</span>
        </button>
      ))}
    </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 Navigation

Wofür du ihn nutzen kannst

Stell dir den Kopf einer Buchungsseite vor, die ihr Angebot in „Unterkünfte“, „Erlebnisse“ und „Services“ teilt. Genau dort passen diese Segment-Tabs im iOS-Stil: ein neutraler Wechsel zwischen zwei oder drei großen Bereichen, kein bunter Filter. Die weiße Pille gleitet mit sanfter Feder hinüber, ganz wie in iPhone-Apps.

Weil sie keine Akzentfarbe hat, fügt sie sich auch in volle Seiten ein, ohne deinen Haupt-Buttons Konkurrenz zu machen. Bleib bei höchstens drei Optionen und nimm Begriffe, nach denen Leute suchen würden, keine internen Namen.