"use client"; import { useEffect, useId, useState } from "react"; export default function OverlapChip(props: { label: string; tooltip?: string; /** stable key so chip doesn't re-animate on trivial rerenders */ persistKey?: string; className?: string; }) { const { label, tooltip, persistKey, className } = props; // Animate only once per persistKey per session const storageKey = persistKey ? `bb_overlapchip_seen:${persistKey}` : null; const [animateIn, setAnimateIn] = useState(false); const tooltipId = useId(); useEffect(() => { if (!storageKey) { // No key provided: animate once on mount setAnimateIn(true); return; } try { const seen = sessionStorage.getItem(storageKey); if (!seen) { sessionStorage.setItem(storageKey, "1"); setAnimateIn(true); } } catch { // sessionStorage blocked — still animate setAnimateIn(true); } }, [storageKey]); return ( {label} {/* Optional: if you later want a real tooltip instead of title, you can wire one here using tooltipId. */} {tooltip ? {tooltip} : null} ); }