'use client'; import React, { forwardRef } from 'react'; import { cn, Surface, useEffectiveSurface } from '../common'; import { tone as toneTokens, ToneKey } from '../tokens'; import { useReducedMotion } from '../hooks/useReducedMotion'; type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg'; const sizeMap: Record = { xs: 'h-2.5 w-2.5', sm: 'h-3 w-3', md: 'h-4 w-4', lg: 'h-6 w-6', }; const linearBorderMap: Record = { xs: 'border', sm: 'border', md: 'border-2', lg: 'border-2', }; export interface PixelSpinnerProps extends React.HTMLAttributes { size?: SpinnerSize; label?: string; surface?: Surface; tone?: ToneKey; /** * When `true`, renders as pure decoration (aria-hidden, no role, no label). * Use inside an already-announcing parent (e.g. a `