{
  "name": "toolbar",
  "type": "registry:ui",
  "title": "Toolbar",
  "description": "A compact roving-focus group for equal-priority buttons, toggles, links and lightweight controls.",
  "registryDependencies": [
    "@siteplane/base"
  ],
  "dependencies": [
    "@base-ui/react@1.5.0"
  ],
  "files": [
    {
      "path": "src/components/ui/toolbar.tsx",
      "type": "registry:ui",
      "content": "\"use client\";\n\nimport { Toolbar as ToolbarPrimitive } from \"@base-ui/react/toolbar\";\nimport type React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport function Toolbar({\n  className,\n  ...props\n}: ToolbarPrimitive.Root.Props): React.ReactElement {\n  return (\n    <ToolbarPrimitive.Root\n      className={cn(\n        \"relative flex gap-2 rounded-xl border bg-card not-dark:bg-clip-padding p-1 text-card-foreground\",\n        className,\n      )}\n      data-slot=\"toolbar\"\n      {...props}\n    />\n  );\n}\n\nexport function ToolbarButton({\n  className,\n  ...props\n}: ToolbarPrimitive.Button.Props): React.ReactElement {\n  return (\n    <ToolbarPrimitive.Button\n      className={cn(className)}\n      data-slot=\"toolbar-button\"\n      {...props}\n    />\n  );\n}\n\nexport function ToolbarLink({\n  className,\n  ...props\n}: ToolbarPrimitive.Link.Props): React.ReactElement {\n  return (\n    <ToolbarPrimitive.Link\n      className={cn(className)}\n      data-slot=\"toolbar-link\"\n      {...props}\n    />\n  );\n}\n\nexport function ToolbarInput({\n  className,\n  ...props\n}: ToolbarPrimitive.Input.Props): React.ReactElement {\n  return (\n    <ToolbarPrimitive.Input\n      className={cn(className)}\n      data-slot=\"toolbar-input\"\n      {...props}\n    />\n  );\n}\n\nexport function ToolbarGroup({\n  className,\n  ...props\n}: ToolbarPrimitive.Group.Props): React.ReactElement {\n  return (\n    <ToolbarPrimitive.Group\n      className={cn(\"flex items-center gap-1\", className)}\n      data-slot=\"toolbar-group\"\n      {...props}\n    />\n  );\n}\n\nexport function ToolbarSeparator({\n  className,\n  ...props\n}: ToolbarPrimitive.Separator.Props): React.ReactElement {\n  return (\n    <ToolbarPrimitive.Separator\n      className={cn(\n        \"shrink-0 bg-border data-[orientation=horizontal]:my-0.5 data-[orientation=vertical]:my-1.5 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:not-[[class^='h-']]:not-[[class*='_h-']]:self-stretch\",\n        className,\n      )}\n      data-slot=\"toolbar-separator\"\n      {...props}\n    />\n  );\n}\n\nexport { ToolbarPrimitive };\n"
    }
  ],
  "categories": [
    "navigation"
  ],
  "docs": "# Toolbar\n\n> Siteplane UI release `0.1.1`.\n\n## Public Purpose\n\nUse Toolbar to group equal-priority actions and controls in one compact roving-focus region.\n\n## Import\n\n`import { Toolbar } from \"@/components/ui/toolbar\";`\n\n`import { ToolbarButton, ToolbarGroup, ToolbarInput, ToolbarLink, ToolbarSeparator } from \"@/components/ui/toolbar\";`\n\n`import { ToggleGroup, ToggleGroupItem } from \"@/components/ui/toggle-group\";`\n\n`import { Select, SelectItem, SelectPopup, SelectTrigger, SelectValue } from \"@/components/ui/select\";`\n\n`import { Tooltip, TooltipPopup, TooltipProvider, TooltipTrigger } from \"@/components/ui/tooltip\";`\n\n## Public API\n\n- Compose `Toolbar`, `ToolbarGroup`, `ToolbarButton`, `ToolbarLink`, `ToolbarInput` and `ToolbarSeparator`.\n- `Toolbar` accepts Base UI toolbar props including `orientation`, `loopFocus` and `focusableWhenDisabled`.\n- Compose `ToolbarButton` through `render` with an existing Button, Toggle, Select or popup trigger instead of nesting interactive elements.\n- In a vertical Toolbar, the separator becomes horizontal through the native orientation contract; include it when groups need a real boundary.\n\n## Public Motion\n\n- Toolbar itself is static. Nested Button, Toggle, Select and Tooltip primitives retain their own native motion.\n- No additional toolbar-level reduced-motion handling is required.\n\n## Public Accessibility\n\n- Preserve Base UI roving focus and arrow-key navigation.\n- Give icon-only actions an accessible name; a Tooltip supplements but does not replace the trigger name.\n- Use inputs sparingly because arrow keys also have text-cursor meaning inside an input.\n\n## Public Agent Guidance\n\n- Use `render` to compose existing controls into toolbar items.\n- Match separator direction to the toolbar orientation and keep related actions in `ToolbarGroup`.\n- Do not invent a parallel toolbar button visual contract.\n\n## Public Links\n\n- [Documentation and preview](https://ui.siteplane.io/docs/components/navigation/toolbar)\n\n- [Registry source](https://ui.siteplane.io/r/toolbar.json)\n",
  "meta": {
    "siteplane:agentContractVersion": 1,
    "siteplane:docs": "https://ui.siteplane.io/docs/components/navigation/toolbar",
    "siteplane:releaseVersion": "0.1.1",
    "siteplane:sourceOwned": true
  },
  "devDependencies": []
}
