[{"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","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[9,11,15,19],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",{"title":16,"path":17,"stem":18},"Configuration","\u002Fdocs\u002Fgetting-started\u002Fconfiguration","docs\u002F1.getting-started\u002F3.configuration",{"title":20,"path":21,"stem":22},"Migration","\u002Fdocs\u002Fgetting-started\u002Fmigration","docs\u002F1.getting-started\u002F4.migration","i-lucide-square-play",{"title":25,"icon":26,"path":27,"stem":28,"children":29,"page":50},"Collections","i-lucide-database","\u002Fdocs\u002Fcollections","docs\u002F2.collections",[30,34,38,42,46],{"title":31,"path":32,"stem":33},"Define","\u002Fdocs\u002Fcollections\u002Fdefine","docs\u002F2.collections\u002F1.define",{"title":35,"path":36,"stem":37},"Types","\u002Fdocs\u002Fcollections\u002Ftypes","docs\u002F2.collections\u002F2.types",{"title":39,"path":40,"stem":41},"Sources","\u002Fdocs\u002Fcollections\u002Fsources","docs\u002F2.collections\u002F3.sources",{"title":43,"path":44,"stem":45},"Validators","\u002Fdocs\u002Fcollections\u002Fvalidators","docs\u002F2.collections\u002F4.validators",{"title":47,"path":48,"stem":49},"Components","\u002Fdocs\u002Fcollections\u002Finherit-schema-from-component","docs\u002F2.collections\u002F5.inherit-schema-from-component",false,{"title":52,"icon":53,"path":54,"stem":55,"children":56,"page":50},"Files","i-lucide-file","\u002Fdocs\u002Ffiles","docs\u002F3.files",[57,61,65,69],{"title":58,"path":59,"stem":60},"Markdown","\u002Fdocs\u002Ffiles\u002Fmarkdown","docs\u002F3.files\u002F1.markdown",{"title":62,"path":63,"stem":64},"YAML","\u002Fdocs\u002Ffiles\u002Fyaml","docs\u002F3.files\u002F2.yaml",{"title":66,"path":67,"stem":68},"JSON","\u002Fdocs\u002Ffiles\u002Fjson","docs\u002F3.files\u002F3.json",{"title":70,"path":71,"stem":72},"CSV","\u002Fdocs\u002Ffiles\u002Fcsv","docs\u002F3.files\u002F4.csv",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":50},"Query Utils","i-lucide-square-function","\u002Fdocs\u002Futils","docs\u002F4.utils",[79,83,87,91],{"title":80,"path":81,"stem":82},"queryCollection","\u002Fdocs\u002Futils\u002Fquery-collection","docs\u002F4.utils\u002F1.query-collection",{"title":84,"path":85,"stem":86},"queryCollectionNavigation","\u002Fdocs\u002Futils\u002Fquery-collection-navigation","docs\u002F4.utils\u002F2.query-collection-navigation",{"title":88,"path":89,"stem":90},"queryCollectionItemSurroundings","\u002Fdocs\u002Futils\u002Fquery-collection-item-surroundings","docs\u002F4.utils\u002F3.query-collection-item-surroundings",{"title":92,"path":93,"stem":94},"queryCollectionSearchSections","\u002Fdocs\u002Futils\u002Fquery-collection-search-sections","docs\u002F4.utils\u002F4.query-collection-search-sections",{"title":47,"icon":96,"path":97,"stem":98,"children":99,"page":50},"i-lucide-square-code","\u002Fdocs\u002Fcomponents","docs\u002F5.components",[100,104,108],{"title":101,"path":102,"stem":103},"ContentRenderer","\u002Fdocs\u002Fcomponents\u002Fcontent-renderer","docs\u002F5.components\u002F0.content-renderer",{"title":105,"path":106,"stem":107},"Slot","\u002Fdocs\u002Fcomponents\u002Fslot","docs\u002F5.components\u002F1.slot",{"title":109,"path":110,"stem":111},"Prose Components","\u002Fdocs\u002Fcomponents\u002Fprose","docs\u002F5.components\u002F2.prose",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":50},"Deploy","i-lucide-cloud-upload","\u002Fdocs\u002Fdeploy","docs\u002F6.deploy",[118,122,126,130,134,138,142,146,150,154],{"title":119,"path":120,"stem":121},"Server","\u002Fdocs\u002Fdeploy\u002Fserver","docs\u002F6.deploy\u002F1.server",{"title":123,"path":124,"stem":125},"Static","\u002Fdocs\u002Fdeploy\u002Fstatic","docs\u002F6.deploy\u002F10.static",{"title":127,"path":128,"stem":129},"Serverless","\u002Fdocs\u002Fdeploy\u002Fserverless","docs\u002F6.deploy\u002F2.serverless",{"title":131,"path":132,"stem":133},"NuxtHub","\u002Fdocs\u002Fdeploy\u002Fnuxthub","docs\u002F6.deploy\u002F3.nuxthub",{"title":135,"path":136,"stem":137},"Cloudflare Pages","\u002Fdocs\u002Fdeploy\u002Fcloudflare-pages","docs\u002F6.deploy\u002F4.cloudflare-pages",{"title":139,"path":140,"stem":141},"Cloudflare Workers","\u002Fdocs\u002Fdeploy\u002Fcloudflare-workers","docs\u002F6.deploy\u002F5.cloudflare-workers",{"title":143,"path":144,"stem":145},"Vercel","\u002Fdocs\u002Fdeploy\u002Fvercel","docs\u002F6.deploy\u002F6.vercel",{"title":147,"path":148,"stem":149},"Netlify","\u002Fdocs\u002Fdeploy\u002Fnetlify","docs\u002F6.deploy\u002F7.netlify",{"title":151,"path":152,"stem":153},"AWS Amplify","\u002Fdocs\u002Fdeploy\u002Faws-amplify","docs\u002F6.deploy\u002F8.aws-amplify",{"title":155,"path":156,"stem":157},"Docker","\u002Fdocs\u002Fdeploy\u002Fdocker","docs\u002F6.deploy\u002F9.docker",{"title":159,"icon":114,"path":160,"stem":161,"children":162,"page":50},"Integrations","\u002Fdocs\u002Fintegrations","docs\u002F7.integrations",[163,167],{"title":164,"path":165,"stem":166},"Nuxt i18n","\u002Fdocs\u002Fintegrations\u002Fi18n","docs\u002F7.integrations\u002F01.i18n",{"title":168,"path":169,"stem":170},"Nuxt LLMs","\u002Fdocs\u002Fintegrations\u002Fllms","docs\u002F7.integrations\u002F02.llms",{"title":172,"icon":173,"path":174,"stem":175,"children":176,"page":50},"Advanced","i-lucide-code-xml","\u002Fdocs\u002Fadvanced","docs\u002F8.advanced",[177,181,185,189,193,197,201],{"title":178,"path":179,"stem":180},"Full-Text Search","\u002Fdocs\u002Fadvanced\u002Ffulltext-search","docs\u002F8.advanced\u002F1.fulltext-search",{"title":182,"path":183,"stem":184},"Raw Content","\u002Fdocs\u002Fadvanced\u002Fraw-content","docs\u002F8.advanced\u002F2.raw-content",{"title":186,"path":187,"stem":188},"SQL Storage","\u002Fdocs\u002Fadvanced\u002Fdatabase","docs\u002F8.advanced\u002F3.database",{"title":190,"path":191,"stem":192},"Debugging tools","\u002Fdocs\u002Fadvanced\u002Ftools","docs\u002F8.advanced\u002F4.tools",{"title":194,"path":195,"stem":196},"Hooks","\u002Fdocs\u002Fadvanced\u002Fhooks","docs\u002F8.advanced\u002F5.hooks",{"title":198,"path":199,"stem":200},"Custom Source","\u002Fdocs\u002Fadvanced\u002Fcustom-source","docs\u002F8.advanced\u002F6.custom-source",{"title":202,"path":203,"stem":204},"Transformers","\u002Fdocs\u002Fadvanced\u002Ftransformers","docs\u002F8.advanced\u002F8.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\u002Fdocs\u002F2.collections\u002F5.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\u002Fcontent'\nimport { z } from 'zod'\n\nexport default defineContentConfig({\n  collections: {\n    pages: defineCollection({\n      type: 'page',\n      source: '**\u002F*.md',\n      schema: z.object({\n        \u002F\u002F Reuse props from a local component\n        hero: property(z.object({})).inherit('app\u002Fcomponents\u002FHeroSection.vue'),\n\n        \u002F\u002F Reuse props from a dependency (path is resolved like an import)\n        button: property(z.object({})).inherit('@nuxt\u002Fui\u002Fcomponents\u002FButton.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\u002Fcontent",[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},"**\u002F*.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","        \u002F\u002F 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\u002Fcomponents\u002FHeroSection.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},"        \u002F\u002F 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\u002Fui\u002Fcomponents\u002FButton.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.",1774604970087]