{
  "name": "skeleton",
  "type": "registry:ui",
  "title": "Skeleton",
  "description": "Content-shaped loading placeholders with a shared shimmer and stable layout dimensions.",
  "registryDependencies": [
    "@siteplane/base"
  ],
  "dependencies": [],
  "files": [
    {
      "path": "src/components/ui/skeleton.tsx",
      "type": "registry:ui",
      "content": "import type React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport function Skeleton({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">): React.ReactElement {\n  return (\n    <div\n      className={cn(\n        \"siteplane-skeleton-motion animate-skeleton rounded-sm [--skeleton-highlight:--alpha(var(--color-white)/64%)] [background:linear-gradient(120deg,transparent_40%,var(--skeleton-highlight),transparent_60%)_var(--color-muted)_0_0/200%_100%] dark:[--skeleton-highlight:--alpha(var(--color-white)/4%)]\",\n        className,\n      )}\n      data-slot=\"skeleton\"\n      {...props}\n    />\n  );\n}\n"
    }
  ],
  "categories": [
    "feedback"
  ],
  "docs": "# Skeleton\n\n> Siteplane UI release `0.1.1`.\n\n## Public Purpose\n\nUse Skeleton to reserve the approximate shape of content while a layout is loading and the final value is not yet available.\n\n## Import\n\n`import { Skeleton } from \"@/components/ui/skeleton\";`\n\n## Public API\n\n- `Skeleton` accepts standard `div` props. Set its dimensions and shape with existing layout and radius utilities.\n- The primitive owns `data-slot=\"skeleton\"` and the shared shimmer animation; it does not introduce content-specific variants.\n\n## Public Motion\n\n- Skeleton uses the central `animate-skeleton` shimmer. Both the provider override and the operating-system reduced-motion preference stop it through the shared `siteplane-skeleton-motion` contract.\n- Do not add a second animation, fixed background attachment or component-local timing values.\n\n## Public Accessibility\n\n- Keep placeholders hidden from the accessibility tree when they carry no meaningful status.\n- Announce loading on the surrounding region when users need that information; do not expose fake text or fake controls to screen readers.\n- Preserve layout without making the placeholder look interactive.\n\n## Public Agent Guidance\n\n- Shape Skeleton with normal layout utilities instead of adding parallel variants or wrappers.\n- Use Spinner for an indeterminate operation indicator and Skeleton for content-shaped loading.\n- Remove the placeholder when real content arrives rather than layering both states.\n\n## Public Links\n\n- [Documentation and preview](https://ui.siteplane.io/docs/components/feedback/skeleton)\n\n- [Registry source](https://ui.siteplane.io/r/skeleton.json)\n",
  "meta": {
    "siteplane:agentContractVersion": 1,
    "siteplane:docs": "https://ui.siteplane.io/docs/components/feedback/skeleton",
    "siteplane:releaseVersion": "0.1.1",
    "siteplane:sourceOwned": true
  },
  "devDependencies": []
}
