{
  "name": "label",
  "type": "registry:ui",
  "title": "Label",
  "description": "Label gives one form control a visible, clickable name through htmlFor or wrapper semantics.",
  "registryDependencies": [
    "@siteplane/base"
  ],
  "dependencies": [
    "@base-ui/react@1.5.0"
  ],
  "files": [
    {
      "path": "src/components/ui/label.tsx",
      "type": "registry:ui",
      "content": "\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport type React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport function Label({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"label\">): React.ReactElement {\n  const defaultProps = {\n    className: cn(\n      \"inline-flex cursor-pointer items-center gap-2 font-medium text-base/4.5 text-foreground data-disabled:cursor-not-allowed data-disabled:text-muted-foreground has-disabled:cursor-not-allowed has-disabled:text-muted-foreground sm:text-sm/4\",\n      className,\n    ),\n    \"data-slot\": \"label\",\n  };\n\n  return useRender({\n    defaultTagName: \"label\",\n    props: mergeProps<\"label\">(defaultProps, props),\n    render,\n  });\n}\n"
    }
  ],
  "categories": [
    "form-controls"
  ],
  "docs": "# Label\n\n> Siteplane UI release `0.1.1`.\n\n## Public Purpose\n\nLabel gives one form control a visible, clickable name through `htmlFor` or\nwrapper semantics.\n\n## Import\n\n`import { Label } from \"@/components/ui/label\";`\n\n## Public API\n\n- Connect `htmlFor` to the control `id`, or wrap the control when the\n  primitive supports that pattern.\n- `render` may change the underlying element while retaining Label behavior.\n- Use `FieldLabel` inside Field so disabled and validation context stays\n  synchronized.\n\n## Public Motion\n\n- Label has no animation.\n- Clickable labels use a pointer cursor and activate their connected control.\n- Disabled styling changes color without changing layout.\n\n## Public Accessibility\n\n- Every visible Label must name exactly one connected control.\n- Controls without visible labels require an explicit accessible name.\n- Mark decorative required asterisks `aria-hidden`; expose required state on\n  the control itself.\n- Connect invalid state to the control and render a visible FieldError.\n\n## Public Agent Guidance\n\n- Do not render visible controls without a connected label or accessible name.\n- Use FieldLabel inside Field and Label for direct control pairings.\n- Preserve pointer, disabled, render, and native label behavior.\n\n## Public Links\n\n- [Documentation and preview](https://ui.siteplane.io/docs/components/form-controls/label)\n\n- [Registry source](https://ui.siteplane.io/r/label.json)\n",
  "meta": {
    "siteplane:agentContractVersion": 1,
    "siteplane:docs": "https://ui.siteplane.io/docs/components/form-controls/label",
    "siteplane:releaseVersion": "0.1.1",
    "siteplane:sourceOwned": true
  },
  "devDependencies": []
}
