{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "spinner",
  "title": "Spinner",
  "description": "shadcn/ui(new-york-v4) spinner의 유니버설(웹+네이티브 한 벌 소스) 포팅. 회전 표시기. 포팅 판단(원본 대비 차이):",
  "dependencies": [
    "@unikit-bridge/ui",
    "class-variance-authority"
  ],
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "registry/ui/spinner.tsx",
      "content": "// Spinner — shadcn/ui（new-york-v4） spinner.tsx 유니버설 포팅 （사이클 40, T-3c）.\n// 원본: shadcn-ref/ui/spinner.tsx — lucide-react Loader2Icon（svg, stroke currentColor）\n// 회전 표시기.\n//\n// 포팅 판단（원본 대비 차이）:\n// - Loader2Icon은 브리지 primitives 경유（lucide-react / lucide-react-native）.\n// - 원본 토큰 size-4·animate-spin은 유지하되 animate-spin은 웹 전용 web: 접두.\n//   네이티브는 브리지 LoopRotate（RN Animated useNativeDriver）로 같은 회전을\n//   구동한다.\n// - 색: 기본 text-foreground. Primary 버튼 등에서는 className으로\n//   text-*-foreground를 덮어쓰면 된다（아이콘에 전달）.\n// - 접근성: role=\"status\" + 기본 라벨 \"Loading\"（accessibilityLabel prop）.\n//   아이콘은 aria-hidden, 상태 라벨은 래퍼 View가 담당한다.\nimport { forwardRef } from \"react\";\nimport {\n  Loader2Icon,\n  LoopRotate,\n  View,\n  type BridgeViewRef,\n  type ViewProps,\n} from \"@unikit-bridge/ui/primitives\";\nimport { cva } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst spinnerVariants = cva(\"size-4 text-foreground\");\n\nexport type SpinnerProps = ViewProps;\n\nconst Spinner = forwardRef<BridgeViewRef, SpinnerProps>(\n  ({ className, accessibilityLabel = \"Loading\", ...props }, ref) => (\n    <LoopRotate>\n      <View\n        ref={ref}\n        accessibilityRole=\"status\"\n        accessibilityLabel={accessibilityLabel}\n        className=\"items-center justify-center\"\n        {...props}\n      >\n        <Loader2Icon\n          className={cn(spinnerVariants(), \"web:animate-spin\", className)}\n          aria-hidden\n        />\n      </View>\n    </LoopRotate>\n  ),\n);\nSpinner.displayName = \"Spinner\";\n\nexport { Spinner, spinnerVariants };\n",
      "type": "registry:ui",
      "target": "components/ui/spinner.tsx"
    }
  ],
  "type": "registry:ui"
}
