import React, { forwardRef } from "react"; import { css, cx } from "@emotion/css"; export interface AnimateEntryProps extends React.HTMLAttributes { as?: React.ElementType; delay?: number; } export const AnimateEntry = forwardRef( ( { children, className, as: Component = "div", delay = 100, ...props }, ref, ) => { return ( * { animation: slideIn 300ms backwards; } ${React.Children.map( children, (child, i) => child && css` & > *:nth-child(${i + 1}) { animation-delay: ${i * delay}ms; } `, )} @keyframes slideIn { from { opacity: 0; translate: 0 3rem; } to { opacity: 1; translate: 0 0; } } `, className, )} {...props} ref={ref}> {children} ); }, );