import { css, on, type Handle, type RemixNode } from '@remix-run/ui' import { DefaultAnimate } from './default-animate.tsx' import { EnterAnimation } from './enter.tsx' import { ExitAnimation } from './exit.tsx' import { Press } from './press.tsx' import { HTMLContent } from './html-content.tsx' import { Keyframes } from './keyframes.tsx' import { InterruptibleKeyframes } from './interruptible-keyframes.tsx' import { RollingSquare } from './rolling-square.tsx' import { Rotate } from './rotate.tsx' import { TransitionOptions } from './transition-options.tsx' import { Cube } from './cube.tsx' import { SharedLayout } from './shared-layout.tsx' import { AspectRatio } from './aspect-ratio.tsx' import { BouncySwitch } from './bouncy-switch.tsx' import { ColorInterpolation } from './color-interpolation.tsx' import { FlipToggle } from './flip-toggle.tsx' import { Reordering } from './reordering.tsx' import { MultiStateBadge } from './multi-state-badge.tsx' import { HoldToConfirm } from './hold-to-confirm.tsx' import { MaterialRipple } from './material-ripple.tsx' function Tile(handle: Handle<{ title: string; children: RemixNode; notes?: string }>) { let remountKey = 0 return () => { let { title, children, notes } = handle.props return (

{title}

{children}
{notes && (

{notes}

)}
) } } /** * @name Animation Gallery * @description A collection of motion and animation experiments adapted from the standalone demos. */ export default function AnimationGallery() { return () => ( <>

Animations

Most animations are adapted from Motion. Thank you for your work Matt Perry!

) }