/** * Spinner — 3x3 grid pulse for **active processing / execution** states. * * Use when the system is actively doing work or waiting for human action * (streaming content, generating responses, awaiting approval). * For passive content-loading states, use `` instead. * * Inherits color from `currentColor` (use Tailwind `text-*`). * Scales with font-size (use Tailwind `text-*` for size). */ import { cn } from "@/lib/utils" export interface SpinnerProps { /** Additional className for styling (color via text-*, size via Tailwind text-*) */ className?: string } const DELAYS = [0.2, 0.3, 0.4, 0.1, 0.2, 0.3, 0, 0.1, 0.2] const cubeStyle: React.CSSProperties = { backgroundColor: "currentColor", animation: "spinner-grid 1.3s infinite ease-in-out", transform: "scale3d(0.5, 0.5, 1)", } export function Spinner({ className }: SpinnerProps) { return ( {DELAYS.map((delay, i) => ( ))} ) }