{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "pixilui",
  "homepage": "https://pixilui.com",
  "items": [
    {
      "name": "foundation",
      "type": "registry:item",
      "title": "Foundation",
      "description": "Tokens, motion presets and cn: the colour roles, radii, type scale, shadows and springs every pixilui item reads.",
      "dependencies": [
        "clsx",
        "tailwind-merge",
        "motion"
      ],
      "registryDependencies": [],
      "categories": [
        "layout"
      ],
      "files": [
        {
          "path": "components/pixilui/foundation.css",
          "type": "registry:file",
          "target": "components/pixilui/foundation.css"
        },
        {
          "path": "components/pixilui/motion-tokens.ts",
          "type": "registry:lib",
          "target": "components/pixilui/motion-tokens.ts"
        },
        {
          "path": "components/pixilui/lib/use-measure.ts",
          "type": "registry:lib",
          "target": "components/pixilui/lib/use-measure.ts"
        },
        {
          "path": "components/pixilui/lib/use-morph-size.ts",
          "type": "registry:lib",
          "target": "components/pixilui/lib/use-morph-size.ts"
        },
        {
          "path": "components/pixilui/lib/utils.ts",
          "type": "registry:lib",
          "target": "components/pixilui/lib/utils.ts"
        }
      ]
    },
    {
      "name": "approval-card",
      "type": "registry:ui",
      "title": "Approval card",
      "description": "An agent asks before it acts: what it will do, the rows that matter, the risk, and approve or reject with a note.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://pixilui.com/r/foundation.json",
        "https://pixilui.com/r/button.json",
        "https://pixilui.com/r/input.json"
      ],
      "categories": [
        "ai"
      ],
      "files": [
        {
          "path": "components/pixilui/approval-card.tsx",
          "type": "registry:ui",
          "target": "components/pixilui/approval-card.tsx"
        }
      ]
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "A button whose label can change without a jump: the width springs to the new words while they swap in place.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://pixilui.com/r/foundation.json"
      ],
      "categories": [
        "actions"
      ],
      "files": [
        {
          "path": "components/pixilui/button.tsx",
          "type": "registry:ui",
          "target": "components/pixilui/button.tsx"
        }
      ]
    },
    {
      "name": "dialog",
      "type": "registry:ui",
      "title": "Dialog",
      "description": "A modal panel for one decision or one short task: a title, what happens, and the buttons that do it, with pending and error handled.",
      "dependencies": [
        "@base-ui/react",
        "motion"
      ],
      "registryDependencies": [
        "https://pixilui.com/r/foundation.json",
        "https://pixilui.com/r/button.json"
      ],
      "categories": [
        "overlays"
      ],
      "files": [
        {
          "path": "components/pixilui/dialog.tsx",
          "type": "registry:ui",
          "target": "components/pixilui/dialog.tsx"
        }
      ]
    },
    {
      "name": "drawer",
      "type": "registry:ui",
      "title": "Drawer",
      "description": "A sheet that slides in from the right, left or bottom for details read alongside the page: a run, a trace, a record, a settings panel.",
      "dependencies": [
        "@base-ui/react",
        "motion"
      ],
      "registryDependencies": [
        "https://pixilui.com/r/foundation.json",
        "https://pixilui.com/r/dialog.json",
        "https://pixilui.com/r/button.json"
      ],
      "categories": [
        "overlays"
      ],
      "files": [
        {
          "path": "components/pixilui/drawer.tsx",
          "type": "registry:ui",
          "target": "components/pixilui/drawer.tsx"
        }
      ]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "A text field with its label, help, error, prefix and suffix slots and a clear button, wired for screen readers.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://pixilui.com/r/foundation.json"
      ],
      "categories": [
        "inputs"
      ],
      "files": [
        {
          "path": "components/pixilui/input.tsx",
          "type": "registry:ui",
          "target": "components/pixilui/input.tsx"
        }
      ]
    },
    {
      "name": "popover",
      "type": "registry:ui",
      "title": "Popover",
      "description": "A small panel anchored to a control for a closer look or a quick change: a run's budget, a model's settings, who can see a thread.",
      "dependencies": [
        "@base-ui/react",
        "motion"
      ],
      "registryDependencies": [
        "https://pixilui.com/r/foundation.json",
        "https://pixilui.com/r/button.json"
      ],
      "categories": [
        "overlays"
      ],
      "files": [
        {
          "path": "components/pixilui/popover.tsx",
          "type": "registry:ui",
          "target": "components/pixilui/popover.tsx"
        }
      ]
    },
    {
      "name": "run-timeline",
      "type": "registry:ui",
      "title": "Run timeline",
      "description": "The steps of one agent run as a vertical timeline: a connector that fills as steps finish, a live timer on the active step, and a waiting step that holds an approval.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://pixilui.com/r/foundation.json"
      ],
      "categories": [
        "ai"
      ],
      "files": [
        {
          "path": "components/pixilui/run-timeline.tsx",
          "type": "registry:ui",
          "target": "components/pixilui/run-timeline.tsx"
        }
      ]
    },
    {
      "name": "streaming-text",
      "type": "registry:ui",
      "title": "Streaming text",
      "description": "Renders a model's answer as it streams: only new words rise into place at reading speed, a caret holds the end, and half-arrived words wait until they are whole.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://pixilui.com/r/foundation.json"
      ],
      "categories": [
        "ai"
      ],
      "files": [
        {
          "path": "components/pixilui/streaming-text.tsx",
          "type": "registry:ui",
          "target": "components/pixilui/streaming-text.tsx"
        }
      ]
    },
    {
      "name": "thinking-state",
      "type": "registry:ui",
      "title": "Thinking state",
      "description": "A quiet line that says what the agent is doing while it works, with a live timer, steps that unfold, and a fold into \"Thought for 12s\" when it is done.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://pixilui.com/r/foundation.json"
      ],
      "categories": [
        "ai"
      ],
      "files": [
        {
          "path": "components/pixilui/thinking-state.tsx",
          "type": "registry:ui",
          "target": "components/pixilui/thinking-state.tsx"
        }
      ]
    },
    {
      "name": "tool-call-row",
      "type": "registry:ui",
      "title": "Tool call row",
      "description": "One line per tool call: what it did in plain words, the tool's name, a live timer, and a fold-out with the input and output as copyable JSON. ToolCallRowGroup sums several calls into one line.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://pixilui.com/r/foundation.json",
        "https://pixilui.com/r/button.json"
      ],
      "categories": [
        "ai"
      ],
      "files": [
        {
          "path": "components/pixilui/tool-call-row.tsx",
          "type": "registry:ui",
          "target": "components/pixilui/tool-call-row.tsx"
        }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:ui",
      "title": "Tooltip",
      "description": "A short text label for an icon button, with its keyboard shortcut, that waits 400ms and then opens neighbours instantly while you scan a toolbar.",
      "dependencies": [
        "@base-ui/react",
        "motion"
      ],
      "registryDependencies": [
        "https://pixilui.com/r/foundation.json"
      ],
      "categories": [
        "overlays"
      ],
      "files": [
        {
          "path": "components/pixilui/tooltip.tsx",
          "type": "registry:ui",
          "target": "components/pixilui/tooltip.tsx"
        }
      ]
    }
  ]
}
