[{"data":1,"prerenderedAt":630},["ShallowReactive",2],{"navigation_docs":3,"-docs-collections-inherit-schema-from-component":205,"-docs-collections-inherit-schema-from-component-surround":625},[4,24,51,73,95,112,158,171],{"title":5,"path":6,"stem":7,"children":8,"icon":23},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[9,11,15,19],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Installation","/docs/getting-started/installation","docs/1.getting-started/2.installation",{"title":16,"path":17,"stem":18},"Configuration","/docs/getting-started/configuration","docs/1.getting-started/3.configuration",{"title":20,"path":21,"stem":22},"Migration","/docs/getting-started/migration","docs/1.getting-started/4.migration","i-lucide-square-play",{"title":25,"icon":26,"path":27,"stem":28,"children":29,"page":50},"Collections","i-lucide-database","/docs/collections","docs/2.collections",[30,34,38,42,46],{"title":31,"path":32,"stem":33},"Define","/docs/collections/define","docs/2.collections/1.define",{"title":35,"path":36,"stem":37},"Types","/docs/collections/types","docs/2.collections/2.types",{"title":39,"path":40,"stem":41},"Sources","/docs/collections/sources","docs/2.collections/3.sources",{"title":43,"path":44,"stem":45},"Validators","/docs/collections/validators","docs/2.collections/4.validators",{"title":47,"path":48,"stem":49},"Components","/docs/collections/inherit-schema-from-component","docs/2.collections/5.inherit-schema-from-component",false,{"title":52,"icon":53,"path":54,"stem":55,"children":56,"page":50},"Files","i-lucide-file","/docs/files","docs/3.files",[57,61,65,69],{"title":58,"path":59,"stem":60},"Markdown","/docs/files/markdown","docs/3.files/1.markdown",{"title":62,"path":63,"stem":64},"YAML","/docs/files/yaml","docs/3.files/2.yaml",{"title":66,"path":67,"stem":68},"JSON","/docs/files/json","docs/3.files/3.json",{"title":70,"path":71,"stem":72},"CSV","/docs/files/csv","docs/3.files/4.csv",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":50},"Query Utils","i-lucide-square-function","/docs/utils","docs/4.utils",[79,83,87,91],{"title":80,"path":81,"stem":82},"queryCollection","/docs/utils/query-collection","docs/4.utils/1.query-collection",{"title":84,"path":85,"stem":86},"queryCollectionNavigation","/docs/utils/query-collection-navigation","docs/4.utils/2.query-collection-navigation",{"title":88,"path":89,"stem":90},"queryCollectionItemSurroundings","/docs/utils/query-collection-item-surroundings","docs/4.utils/3.query-collection-item-surroundings",{"title":92,"path":93,"stem":94},"queryCollectionSearchSections","/docs/utils/query-collection-search-sections","docs/4.utils/4.query-collection-search-sections",{"title":47,"icon":96,"path":97,"stem":98,"children":99,"page":50},"i-lucide-square-code","/docs/components","docs/5.components",[100,104,108],{"title":101,"path":102,"stem":103},"ContentRenderer","/docs/components/content-renderer","docs/5.components/0.content-renderer",{"title":105,"path":106,"stem":107},"Slot","/docs/components/slot","docs/5.components/1.slot",{"title":109,"path":110,"stem":111},"Prose Components","/docs/components/prose","docs/5.components/2.prose",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":50},"Deploy","i-lucide-cloud-upload","/docs/deploy","docs/6.deploy",[118,122,126,130,134,138,142,146,150,154],{"title":119,"path":120,"stem":121},"Server","/docs/deploy/server","docs/6.deploy/1.server",{"title":123,"path":124,"stem":125},"Static","/docs/deploy/static","docs/6.deploy/10.static",{"title":127,"path":128,"stem":129},"Serverless","/docs/deploy/serverless","docs/6.deploy/2.serverless",{"title":131,"path":132,"stem":133},"NuxtHub","/docs/deploy/nuxthub","docs/6.deploy/3.nuxthub",{"title":135,"path":136,"stem":137},"Cloudflare Pages","/docs/deploy/cloudflare-pages","docs/6.deploy/4.cloudflare-pages",{"title":139,"path":140,"stem":141},"Cloudflare Workers","/docs/deploy/cloudflare-workers","docs/6.deploy/5.cloudflare-workers",{"title":143,"path":144,"stem":145},"Vercel","/docs/deploy/vercel","docs/6.deploy/6.vercel",{"title":147,"path":148,"stem":149},"Netlify","/docs/deploy/netlify","docs/6.deploy/7.netlify",{"title":151,"path":152,"stem":153},"AWS Amplify","/docs/deploy/aws-amplify","docs/6.deploy/8.aws-amplify",{"title":155,"path":156,"stem":157},"Docker","/docs/deploy/docker","docs/6.deploy/9.docker",{"title":159,"icon":114,"path":160,"stem":161,"children":162,"page":50},"Integrations","/docs/integrations","docs/7.integrations",[163,167],{"title":164,"path":165,"stem":166},"Nuxt i18n","/docs/integrations/i18n","docs/7.integrations/01.i18n",{"title":168,"path":169,"stem":170},"Nuxt LLMs","/docs/integrations/llms","docs/7.integrations/02.llms",{"title":172,"icon":173,"path":174,"stem":175,"children":176,"page":50},"Advanced","i-lucide-code-xml","/docs/advanced","docs/8.advanced",[177,181,185,189,193,197,201],{"title":178,"path":179,"stem":180},"Full-Text Search","/docs/advanced/fulltext-search","docs/8.advanced/1.fulltext-search",{"title":182,"path":183,"stem":184},"Raw Content","/docs/advanced/raw-content","docs/8.advanced/2.raw-content",{"title":186,"path":187,"stem":188},"SQL Storage","/docs/advanced/database","docs/8.advanced/3.database",{"title":190,"path":191,"stem":192},"Debugging tools","/docs/advanced/tools","docs/8.advanced/4.tools",{"title":194,"path":195,"stem":196},"Hooks","/docs/advanced/hooks","docs/8.advanced/5.hooks",{"title":198,"path":199,"stem":200},"Custom Source","/docs/advanced/custom-source","docs/8.advanced/6.custom-source",{"title":202,"path":203,"stem":204},"Transformers","/docs/advanced/transformers","docs/8.advanced/8.transformers",{"id":206,"title":207,"body":208,"description":618,"extension":619,"links":620,"meta":621,"navigation":622,"path":48,"seo":623,"stem":49,"__hash__":624},"docs/docs/2.collections/5.inherit-schema-from-component.md","Inherit Schema from a Vue Component",{"type":209,"value":210,"toc":613},"minimark",[211,215,220,228,242,249,253,566,570,598,609],[212,213,214],"p",{},"You can reuse a Vue component's props as part of your collection schema. This helps keep your content model aligned with your UI, reduces duplication, and prevents drift.",[216,217,219],"h2",{"id":218},"how-it-works","How it works",[212,221,222,223,227],{},"Nuxt Content provides a ",[224,225,226],"code",{},"property()"," helper that augments your validator and adds the following utility:",[229,230,231],"ul",{},[232,233,234,238,239],"li",{},[235,236,237],"strong",{},"inherit(path)",": replace the current object schema with the props JSON Schema inferred from a Vue component at ",[224,240,241],{},"path",[212,243,244,245,248],{},"Under the hood, Nuxt Content reads the component's props (via ",[224,246,247],{},"nuxt-component-meta",") and converts them to JSON Schema, then merges them into your collection schema.",[216,250,252],{"id":251},"example","Example",[254,255,261],"pre",{"className":256,"code":257,"filename":258,"language":259,"meta":260,"style":260},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineContentConfig, defineCollection, property } from '@nuxt/content'\nimport { z } from 'zod'\n\nexport default defineContentConfig({\n  collections: {\n    pages: defineCollection({\n      type: 'page',\n      source: '**/*.md',\n      schema: z.object({\n        // Reuse props from a local component\n        hero: property(z.object({})).inherit('app/components/HeroSection.vue'),\n\n        // Reuse props from a dependency (path is resolved like an import)\n        button: property(z.object({})).inherit('@nuxt/ui/components/Button.vue')\n      })\n    })\n  }\n})\n","content.config.ts","ts","",[224,262,263,307,328,335,353,366,380,399,416,436,443,487,492,498,536,544,552,558],{"__ignoreMap":260},[264,265,268,272,276,280,283,286,288,291,294,297,300,304],"span",{"class":266,"line":267},"line",1,[264,269,271],{"class":270},"s7zQu","import",[264,273,275],{"class":274},"sMK4o"," {",[264,277,279],{"class":278},"sTEyZ"," defineContentConfig",[264,281,282],{"class":274},",",[264,284,285],{"class":278}," defineCollection",[264,287,282],{"class":274},[264,289,290],{"class":278}," property",[264,292,293],{"class":274}," }",[264,295,296],{"class":270}," from",[264,298,299],{"class":274}," '",[264,301,303],{"class":302},"sfazB","@nuxt/content",[264,305,306],{"class":274},"'\n",[264,308,310,312,314,317,319,321,323,326],{"class":266,"line":309},2,[264,311,271],{"class":270},[264,313,275],{"class":274},[264,315,316],{"class":278}," z",[264,318,293],{"class":274},[264,320,296],{"class":270},[264,322,299],{"class":274},[264,324,325],{"class":302},"zod",[264,327,306],{"class":274},[264,329,331],{"class":266,"line":330},3,[264,332,334],{"emptyLinePlaceholder":333},true,"\n",[264,336,338,341,344,347,350],{"class":266,"line":337},4,[264,339,340],{"class":270},"export",[264,342,343],{"class":270}," default",[264,345,279],{"class":346},"s2Zo4",[264,348,349],{"class":278},"(",[264,351,352],{"class":274},"{\n",[264,354,356,360,363],{"class":266,"line":355},5,[264,357,359],{"class":358},"swJcz","  collections",[264,361,362],{"class":274},":",[264,364,365],{"class":274}," {\n",[264,367,369,372,374,376,378],{"class":266,"line":368},6,[264,370,371],{"class":358},"    pages",[264,373,362],{"class":274},[264,375,285],{"class":346},[264,377,349],{"class":278},[264,379,352],{"class":274},[264,381,383,386,388,390,393,396],{"class":266,"line":382},7,[264,384,385],{"class":358},"      type",[264,387,362],{"class":274},[264,389,299],{"class":274},[264,391,392],{"class":302},"page",[264,394,395],{"class":274},"'",[264,397,398],{"class":274},",\n",[264,400,402,405,407,409,412,414],{"class":266,"line":401},8,[264,403,404],{"class":358},"      source",[264,406,362],{"class":274},[264,408,299],{"class":274},[264,410,411],{"class":302},"**/*.md",[264,413,395],{"class":274},[264,415,398],{"class":274},[264,417,419,422,424,426,429,432,434],{"class":266,"line":418},9,[264,420,421],{"class":358},"      schema",[264,423,362],{"class":274},[264,425,316],{"class":278},[264,427,428],{"class":274},".",[264,430,431],{"class":346},"object",[264,433,349],{"class":278},[264,435,352],{"class":274},[264,437,439],{"class":266,"line":438},10,[264,440,442],{"class":441},"sHwdD","        // Reuse props from a local component\n",[264,444,446,449,451,453,456,458,460,462,465,468,470,473,475,477,480,482,485],{"class":266,"line":445},11,[264,447,448],{"class":358},"        hero",[264,450,362],{"class":274},[264,452,290],{"class":346},[264,454,455],{"class":278},"(z",[264,457,428],{"class":274},[264,459,431],{"class":346},[264,461,349],{"class":278},[264,463,464],{"class":274},"{}",[264,466,467],{"class":278},"))",[264,469,428],{"class":274},[264,471,472],{"class":346},"inherit",[264,474,349],{"class":278},[264,476,395],{"class":274},[264,478,479],{"class":302},"app/components/HeroSection.vue",[264,481,395],{"class":274},[264,483,484],{"class":278},")",[264,486,398],{"class":274},[264,488,490],{"class":266,"line":489},12,[264,491,334],{"emptyLinePlaceholder":333},[264,493,495],{"class":266,"line":494},13,[264,496,497],{"class":441},"        // Reuse props from a dependency (path is resolved like an import)\n",[264,499,501,504,506,508,510,512,514,516,518,520,522,524,526,528,531,533],{"class":266,"line":500},14,[264,502,503],{"class":358},"        button",[264,505,362],{"class":274},[264,507,290],{"class":346},[264,509,455],{"class":278},[264,511,428],{"class":274},[264,513,431],{"class":346},[264,515,349],{"class":278},[264,517,464],{"class":274},[264,519,467],{"class":278},[264,521,428],{"class":274},[264,523,472],{"class":346},[264,525,349],{"class":278},[264,527,395],{"class":274},[264,529,530],{"class":302},"@nuxt/ui/components/Button.vue",[264,532,395],{"class":274},[264,534,535],{"class":278},")\n",[264,537,539,542],{"class":266,"line":538},15,[264,540,541],{"class":274},"      }",[264,543,535],{"class":278},[264,545,547,550],{"class":266,"line":546},16,[264,548,549],{"class":274},"    }",[264,551,535],{"class":278},[264,553,555],{"class":266,"line":554},17,[264,556,557],{"class":274},"  }\n",[264,559,561,564],{"class":266,"line":560},18,[264,562,563],{"class":274},"}",[264,565,535],{"class":278},[216,567,569],{"id":568},"notes","Notes",[229,571,572,579,588,595],{},[232,573,574,575,578],{},"The argument to ",[224,576,577],{},"inherit()"," is resolved like a module path. You can pass a relative path from project root or a package path.",[232,580,581,583,584,587],{},[224,582,577],{}," expects to be used on an object field (e.g., ",[224,585,586],{},"property(z.object({}))",").",[232,589,590,591,594],{},"Nested usage is supported: you can place inherited objects inside other objects and arrays; Nuxt Content recursively replaces ",[224,592,593],{},"$content.inherit"," markers.",[232,596,597],{},"If the component cannot be resolved, the schema falls back to the original object definition.",[599,600,601,602,604,605,608],"tip",{},"Pair ",[224,603,577],{}," with ",[224,606,607],{},"editor(...)"," for better Studio forms if you need custom inputs on top of the component's props.",[610,611,612],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":260,"searchDepth":309,"depth":309,"links":614},[615,616,617],{"id":218,"depth":309,"text":219},{"id":251,"depth":309,"text":252},{"id":568,"depth":309,"text":569},"Reuse a Vue component's props as part of your collection schema using property().inherit().","md",[],{},{"title":47},{"title":207,"description":618},"DjDwxKGpdfOhfMT34qWierD5w2Uwd0Fbc0BcQXxbv1k",[626,628],{"title":43,"path":44,"stem":45,"description":627,"children":-1},"Define collection schemas with your preferred validator and full type-safety.",{"title":58,"path":59,"stem":60,"description":629,"children":-1},"Create and query Markdown files in your Nuxt applications and use the MDC syntax to integrate Vue components.",1774543460523]