import type { Handle } from '@remix-run/ui' import { css, ref } from '@remix-run/ui' export function Cube(handle: Handle) { let cube: HTMLDivElement function animate(t: number) { if (handle.signal.aborted) return let rotate = Math.sin(t / 10000) * 200 let y = (1 + Math.sin(t / 1000)) * -25 cube.style.transform = `translateY(${y}px) rotateX(${rotate}deg) rotateY(${rotate}deg)` requestAnimationFrame(animate) } return () => (
{ cube = node requestAnimationFrame(animate) }), css({ width: '100px', height: '100px', position: 'relative', transformStyle: 'preserve-3d', }), ]} >
) }