"use client"; import { useEffect, useRef, useState, type ReactNode } from "react"; type RevealTag = "div" | "li" | "article" | "section"; /** * Fades and lifts its content into place the first time it scrolls into view. * Pass an increasing `delay` across a list to stagger the sequence. * * Renders as whatever element the slot needs (`li` inside a list, `article` in a * grid) so it never introduces a wrapper that would break list semantics or grid * placement. Honours `prefers-reduced-motion` by showing content immediately. * * The starting state is hidden, so every instance carries `data-reveal` and the * layout ships a `