{
  "$schema": "https://shadcn-vue.com/schema/registry-item.json",
  "name": "page",
  "title": "Page",
  "type": "registry:ui",
  "files": [
    {
      "path": "packages/registry-vue/components/page/Page.vue",
      "content": "<script setup lang=\"ts\">\nimport { cn } from '@/lib/utils'\n\ndefineProps<{\n  class?: string\n}>()\n</script>\n\n<template>\n  <div :class=\"cn('space-y-6', $props.class)\">\n    <slot />\n  </div>\n</template>\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/page/Page.vue"
    },
    {
      "path": "packages/registry-vue/components/page/PageBody.vue",
      "content": "<script setup lang=\"ts\">\nimport { cn } from '@/lib/utils'\n\ndefineProps<{\n  class?: string\n}>()\n</script>\n\n<template>\n  <div :class=\"cn('', $props.class)\">\n    <slot />\n  </div>\n</template>\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/page/PageBody.vue"
    },
    {
      "path": "packages/registry-vue/components/page/PageHeader.vue",
      "content": "<script setup lang=\"ts\">\nimport { cn } from '@/lib/utils'\n\ndefineProps<{\n  class?: string\n}>()\n</script>\n\n<template>\n  <div :class=\"cn('flex flex-col justify-between gap-4 sm:flex-row sm:items-center', $props.class)\">\n    <div class=\"flex-1\">\n      <slot />\n    </div>\n    <slot name=\"actions\" />\n  </div>\n</template>\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/page/PageHeader.vue"
    },
    {
      "path": "packages/registry-vue/components/page/PageHeaderHeading.vue",
      "content": "<script setup lang=\"ts\">\nimport { cn } from '@/lib/utils'\n\ndefineProps<{\n  title: string\n  description?: string\n  class?: string\n}>()\n</script>\n\n<template>\n  <div :class=\"cn('', $props.class)\">\n    <h2 class=\"text-xl font-bold tracking-tight\">{{ title }}</h2>\n    <p v-if=\"description\" class=\"text-muted-foreground mt-1 text-sm leading-relaxed\">{{ description }}</p>\n  </div>\n</template>\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/page/PageHeaderHeading.vue"
    },
    {
      "path": "packages/registry-vue/components/page/index.ts",
      "content": "export { default as Page } from './Page.vue'\nexport { default as PageHeader } from './PageHeader.vue'\nexport { default as PageHeaderHeading } from './PageHeaderHeading.vue'\nexport { default as PageBody } from './PageBody.vue'\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/page/index.ts"
    }
  ],
  "dependencies": [],
  "devDependencies": [],
  "registryDependencies": [],
  "description": "Page-level layout shell — title row, optional breadcrumbs, action bar, and slotted content well. The standard wrapper for `routes/*.vue` pages so every screen looks consistent.",
  "categories": [
    "layout"
  ]
}