{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "manner",
  "homepage": "https://ui.myudak.com",
  "items": [
    {
      "name": "manner-theme",
      "type": "registry:theme",
      "title": "Manner Theme",
      "description": "Warm editorial semantic tokens for Manner interfaces.",
      "cssVars": {
        "light": {
          "canvas": "oklch(0.968 0.012 75)",
          "surface": "oklch(0.992 0.005 75)",
          "surface-raised": "oklch(0.997 0.003 75)",
          "surface-inset": "oklch(0.944 0.012 72)",
          "ink": "oklch(0.235 0.016 48)",
          "ink-secondary": "oklch(0.39 0.018 48)",
          "ink-muted": "oklch(0.55 0.018 55)",
          "muted": "oklch(0.55 0.018 55)",
          "accent": "oklch(0.58 0.145 38)",
          "accent-soft": "oklch(0.91 0.05 45)",
          "border": "oklch(0.78 0.016 68)",
          "border-subtle": "oklch(0.87 0.012 72)",
          "border-strong": "oklch(0.64 0.02 62)",
          "focus": "oklch(0.58 0.16 245)",
          "info": "oklch(0.58 0.16 245)",
          "danger": "oklch(0.56 0.19 26)",
          "success": "oklch(0.55 0.12 145)",
          "warning": "oklch(0.7 0.14 78)",
          "radius-xs": "4px",
          "radius-sm": "6px",
          "radius-md": "10px",
          "radius-lg": "14px",
          "radius-xl": "20px",
          "lift-1": "0 12px 30px color-mix(in oklab, var(--ink) 7%, transparent)",
          "lift-2": "0 28px 75px color-mix(in oklab, var(--ink) 13%, transparent)",
          "duration-fast": "120ms",
          "duration-base": "190ms",
          "duration-slow": "320ms",
          "ease-enter": "cubic-bezier(.22,.8,.2,1)",
          "ease-exit": "cubic-bezier(.4,0,1,1)"
        },
        "dark": {
          "canvas": "oklch(0.19 0.012 48)",
          "surface": "oklch(0.235 0.014 48)",
          "surface-raised": "oklch(0.27 0.016 48)",
          "surface-inset": "oklch(0.16 0.01 48)",
          "ink": "oklch(0.92 0.012 75)",
          "ink-secondary": "oklch(0.76 0.014 72)",
          "ink-muted": "oklch(0.64 0.015 68)",
          "muted": "oklch(0.64 0.015 68)",
          "accent": "oklch(0.7 0.13 39)",
          "accent-soft": "oklch(0.33 0.06 38)",
          "border": "oklch(0.4 0.018 55)",
          "border-subtle": "oklch(0.31 0.014 55)",
          "border-strong": "oklch(0.5 0.02 55)",
          "focus": "oklch(0.72 0.14 245)",
          "info": "oklch(0.72 0.14 245)",
          "danger": "oklch(0.68 0.16 26)",
          "success": "oklch(0.7 0.11 145)",
          "warning": "oklch(0.78 0.12 78)"
        }
      }
    },
    {
      "name": "utils",
      "type": "registry:lib",
      "title": "Class Name Utility",
      "description": "Merges conditional Tailwind class names safely.",
      "dependencies": ["clsx@^2.1.1", "tailwind-merge@^3.6.0"],
      "files": [{ "path": "lib/cn.ts", "type": "registry:lib" }]
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "A Base UI-backed action with restrained Manner variants.",
      "dependencies": ["@base-ui/react@^1.6.0", "class-variance-authority@^0.7.1"],
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ui/button.tsx", "type": "registry:ui" }]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "A semantic text input with visible focus and invalid states.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ui/input.tsx", "type": "registry:ui" }]
    },
    {
      "name": "textarea",
      "type": "registry:ui",
      "title": "Textarea",
      "description": "A readable multiline field with controlled resizing.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ui/textarea.tsx", "type": "registry:ui" }]
    },
    {
      "name": "field",
      "type": "registry:ui",
      "title": "Field",
      "description": "Label, description, and error primitives for form relationships.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ui/field.tsx", "type": "registry:ui" }]
    },
    {
      "name": "switch",
      "type": "registry:ui",
      "title": "Switch",
      "description": "A Base UI-backed binary control with keyboard behavior.",
      "dependencies": ["@base-ui/react@^1.6.0"],
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ui/switch.tsx", "type": "registry:ui" }]
    },
    {
      "name": "select",
      "type": "registry:ui",
      "title": "Select",
      "description": "A Base UI-backed choice control with portal positioning and keyboard navigation.",
      "dependencies": ["@base-ui/react@^1.6.0", "lucide-react@^1.28.0"],
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ui/select.tsx", "type": "registry:ui" }]
    },
    {
      "name": "dialog",
      "type": "registry:ui",
      "title": "Dialog",
      "description": "A Base UI-backed modal with focus trapping and restoration.",
      "dependencies": ["@base-ui/react@^1.6.0", "lucide-react@^1.28.0"],
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ui/dialog.tsx", "type": "registry:ui" }]
    },
    {
      "name": "command",
      "type": "registry:ui",
      "title": "Command",
      "description": "A keyboard-first filtered command list.",
      "dependencies": ["lucide-react@^1.28.0"],
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ui/command.tsx", "type": "registry:ui" }]
    },
    {
      "name": "surface",
      "type": "registry:ui",
      "title": "Surface",
      "description": "Semantic content grouping with default, inset, and raised tones.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/editorial/surface.tsx", "type": "registry:ui" }]
    },
    {
      "name": "section-heading",
      "type": "registry:ui",
      "title": "Section Heading",
      "description": "Editorial hierarchy for meaningful sections.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/editorial/section-heading.tsx", "type": "registry:ui" }]
    },
    {
      "name": "note",
      "type": "registry:ui",
      "title": "Note",
      "description": "A restrained aside for contextual information.",
      "dependencies": ["lucide-react@^1.28.0"],
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/editorial/note.tsx", "type": "registry:ui" }]
    },
    {
      "name": "quote",
      "type": "registry:ui",
      "title": "Quote",
      "description": "A quotation with strong reading rhythm and attribution.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/editorial/quote.tsx", "type": "registry:ui" }]
    },
    {
      "name": "timeline",
      "type": "registry:ui",
      "title": "Timeline",
      "description": "A compact semantic history for decisions and releases.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/editorial/timeline.tsx", "type": "registry:ui" }]
    },
    {
      "name": "metadata",
      "type": "registry:ui",
      "title": "Metadata",
      "description": "Dense supporting facts that remain calm and scannable.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/editorial/metadata.tsx", "type": "registry:ui" }]
    },
    {
      "name": "message",
      "type": "registry:ui",
      "title": "Message",
      "description": "Conversation content with authorship and optional actions.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ai/message.tsx", "type": "registry:ui" }]
    },
    {
      "name": "composer",
      "type": "registry:ui",
      "title": "Composer",
      "description": "A flexible prompt input with keyboard submission.",
      "dependencies": ["lucide-react@^1.28.0"],
      "registryDependencies": ["@manner/utils", "@manner/manner-theme", "@manner/button", "@manner/textarea"],
      "files": [{ "path": "registry/manner/ai/composer.tsx", "type": "registry:ui" }]
    },
    {
      "name": "reasoning",
      "type": "registry:ui",
      "title": "Reasoning",
      "description": "Progressive disclosure for intermediate work.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ai/reasoning.tsx", "type": "registry:ui" }]
    },
    {
      "name": "tool-call",
      "type": "registry:ui",
      "title": "Tool Call",
      "description": "Operational state for tool name, status, duration, and output.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ai/tool-call.tsx", "type": "registry:ui" }]
    },
    {
      "name": "sources",
      "type": "registry:ui",
      "title": "Sources",
      "description": "Evidence links with origin context.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ai/sources.tsx", "type": "registry:ui" }]
    },
    {
      "name": "artifact",
      "type": "registry:ui",
      "title": "Artifact",
      "description": "A focused output surface connected to a conversation.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ai/artifact.tsx", "type": "registry:ui" }]
    },
    {
      "name": "checkbox", "type": "registry:ui", "title": "Checkbox", "description": "An accessible independent selection control.",
      "dependencies": ["lucide-react@^1.28.0"], "registryDependencies": ["@manner/utils", "@manner/manner-theme"],
      "files": [{ "path": "registry/manner/ui/checkbox.tsx", "type": "registry:ui" }]
    },
    {
      "name": "radio-group", "type": "registry:ui", "title": "Radio Group", "description": "A mutually exclusive choice set with native keyboard behavior.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/radio-group.tsx", "type": "registry:ui" }]
    },
    {
      "name": "date-picker", "type": "registry:ui", "title": "Date Picker", "description": "An accessible date input with a clear label.",
      "dependencies": ["lucide-react@^1.28.0"], "registryDependencies": ["@manner/utils", "@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/date-picker.tsx", "type": "registry:ui" }]
    },
    {
      "name": "file-upload", "type": "registry:ui", "title": "File Upload", "description": "A labeled upload target with selected-file feedback.",
      "dependencies": ["lucide-react@^1.28.0"], "registryDependencies": ["@manner/utils", "@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/file-upload.tsx", "type": "registry:ui" }]
    },
    {
      "name": "card", "type": "registry:ui", "title": "Card", "description": "A restrained bounded surface for meaningful grouping.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/card.tsx", "type": "registry:ui" }]
    },
    {
      "name": "drawer", "type": "registry:ui", "title": "Drawer", "description": "A spatially grounded side panel for secondary tasks.",
      "dependencies": ["@base-ui/react@^1.6.0", "lucide-react@^1.28.0"], "registryDependencies": ["@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/drawer.tsx", "type": "registry:ui" }]
    },
    {
      "name": "tooltip", "type": "registry:ui", "title": "Tooltip", "description": "A short accessible label for compact controls.",
      "registryDependencies": ["@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/tooltip.tsx", "type": "registry:ui" }]
    },
    {
      "name": "tabs", "type": "registry:ui", "title": "Tabs", "description": "Keyboard-friendly related view switching.",
      "registryDependencies": ["@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/tabs.tsx", "type": "registry:ui" }]
    },
    {
      "name": "breadcrumb", "type": "registry:ui", "title": "Breadcrumb", "description": "A semantic location trail for shallow hierarchies.",
      "dependencies": ["lucide-react@^1.28.0"], "registryDependencies": ["@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/breadcrumb.tsx", "type": "registry:ui" }]
    },
    {
      "name": "pagination", "type": "registry:ui", "title": "Pagination", "description": "Navigation through ordered result pages.",
      "registryDependencies": ["@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/pagination.tsx", "type": "registry:ui" }]
    },
    {
      "name": "stepper", "type": "registry:ui", "title": "Stepper", "description": "Progress through a finite multi-step flow.",
      "registryDependencies": ["@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/stepper.tsx", "type": "registry:ui" }]
    },
    {
      "name": "alert", "type": "registry:ui", "title": "Alert", "description": "A semantic status message with calm hierarchy.",
      "dependencies": ["lucide-react@^1.28.0"], "registryDependencies": ["@manner/utils", "@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/alert.tsx", "type": "registry:ui" }]
    },
    {
      "name": "progress", "type": "registry:ui", "title": "Progress", "description": "A labeled semantic completion meter.",
      "registryDependencies": ["@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/progress.tsx", "type": "registry:ui" }]
    },
    {
      "name": "skeleton", "type": "registry:ui", "title": "Skeleton", "description": "A reduced-motion loading placeholder.",
      "registryDependencies": ["@manner/utils", "@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/skeleton.tsx", "type": "registry:ui" }]
    },
    {
      "name": "empty-state", "type": "registry:ui", "title": "Empty State", "description": "An empty result explanation with a useful next action.",
      "dependencies": ["lucide-react@^1.28.0"], "registryDependencies": ["@manner/manner-theme"], "files": [{ "path": "registry/manner/ui/empty-state.tsx", "type": "registry:ui" }]
    },
    {
      "name": "login-01",
      "type": "registry:block",
      "title": "Editorial Sign In",
      "description": "A focused sign-in composition with product context.",
      "registryDependencies": ["@manner/button", "@manner/field", "@manner/input"],
      "files": [{ "path": "registry/manner/blocks/login-01.tsx", "type": "registry:component" }]
    },
    {
      "name": "sidebar-01",
      "type": "registry:block",
      "title": "Collapsible Workspace",
      "description": "A content-first shell with compact navigation.",
      "registryDependencies": ["@manner/button"],
      "files": [{ "path": "registry/manner/blocks/sidebar-01.tsx", "type": "registry:component" }]
    },
    {
      "name": "settings-01",
      "type": "registry:block",
      "title": "Preference Workspace",
      "description": "Section navigation, accessible controls, and explicit save state.",
      "registryDependencies": ["@manner/button", "@manner/select", "@manner/switch"],
      "files": [{ "path": "registry/manner/blocks/settings-01.tsx", "type": "registry:component" }]
    },
    {
      "name": "reader-01",
      "type": "registry:block",
      "title": "Knowledge Reader",
      "description": "Outline navigation, long-form reading, and margin notes.",
      "registryDependencies": ["@manner/note"],
      "files": [{ "path": "registry/manner/blocks/reader-01.tsx", "type": "registry:component" }]
    },
    {
      "name": "ai-workspace-01",
      "type": "registry:block",
      "title": "Conversation Workspace",
      "description": "Messages, composer, and a responsive artifact panel.",
      "registryDependencies": ["@manner/artifact", "@manner/composer", "@manner/message"],
      "files": [{ "path": "registry/manner/blocks/ai-workspace-01.tsx", "type": "registry:component" }]
    },
    {
      "name": "leaderboard-01",
      "type": "registry:block",
      "title": "Comparison Leaderboard",
      "description": "Ranked data with methodology context and responsive overflow.",
      "registryDependencies": ["@manner/metadata"],
      "files": [{ "path": "registry/manner/blocks/leaderboard-01.tsx", "type": "registry:component" }]
    },
    {
      "name": "agent-rules",
      "type": "registry:file",
      "title": "Manner Agent Rules",
      "description": "Installs Manner design constraints and agent workflow at the consumer project root.",
      "files": [
        { "path": "public/DESIGN.md", "type": "registry:file", "target": "~/DESIGN.md" },
        { "path": "public/MANNER_AGENT.md", "type": "registry:file", "target": "~/MANNER_AGENT.md" }
      ]
    }
  ]
}