[{"data":1,"prerenderedAt":634},["ShallowReactive",2],{"navigation_docs":3,"-docs-collections-inherit-schema-from-component":209,"-docs-collections-inherit-schema-from-component-surround":629},[4,24,51,73,99,116,162,175],{"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,95],{"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":96,"path":97,"stem":98},"useSearchCollection","\u002Fdocs\u002Futils\u002Fuse-search-collection","docs\u002F4.utils\u002F5.use-search-collection",{"title":47,"icon":100,"path":101,"stem":102,"children":103,"page":50},"i-lucide-square-code","\u002Fdocs\u002Fcomponents","docs\u002F5.components",[104,108,112],{"title":105,"path":106,"stem":107},"ContentRenderer","\u002Fdocs\u002Fcomponents\u002Fcontent-renderer","docs\u002F5.components\u002F0.content-renderer",{"title":109,"path":110,"stem":111},"Slot","\u002Fdocs\u002Fcomponents\u002Fslot","docs\u002F5.components\u002F1.slot",{"title":113,"path":114,"stem":115},"Prose Components","\u002Fdocs\u002Fcomponents\u002Fprose","docs\u002F5.components\u002F2.prose",{"title":117,"icon":118,"path":119,"stem":120,"children":121,"page":50},"Deploy","i-lucide-cloud-upload","\u002Fdocs\u002Fdeploy","docs\u002F6.deploy",[122,126,130,134,138,142,146,150,154,158],{"title":123,"path":124,"stem":125},"Server","\u002Fdocs\u002Fdeploy\u002Fserver","docs\u002F6.deploy\u002F1.server",{"title":127,"path":128,"stem":129},"Static","\u002Fdocs\u002Fdeploy\u002Fstatic","docs\u002F6.deploy\u002F10.static",{"title":131,"path":132,"stem":133},"Serverless","\u002Fdocs\u002Fdeploy\u002Fserverless","docs\u002F6.deploy\u002F2.serverless",{"title":135,"path":136,"stem":137},"NuxtHub","\u002Fdocs\u002Fdeploy\u002Fnuxthub","docs\u002F6.deploy\u002F3.nuxthub",{"title":139,"path":140,"stem":141},"Cloudflare Pages","\u002Fdocs\u002Fdeploy\u002Fcloudflare-pages","docs\u002F6.deploy\u002F4.cloudflare-pages",{"title":143,"path":144,"stem":145},"Cloudflare Workers","\u002Fdocs\u002Fdeploy\u002Fcloudflare-workers","docs\u002F6.deploy\u002F5.cloudflare-workers",{"title":147,"path":148,"stem":149},"Vercel","\u002Fdocs\u002Fdeploy\u002Fvercel","docs\u002F6.deploy\u002F6.vercel",{"title":151,"path":152,"stem":153},"Netlify","\u002Fdocs\u002Fdeploy\u002Fnetlify","docs\u002F6.deploy\u002F7.netlify",{"title":155,"path":156,"stem":157},"AWS Amplify","\u002Fdocs\u002Fdeploy\u002Faws-amplify","docs\u002F6.deploy\u002F8.aws-amplify",{"title":159,"path":160,"stem":161},"Docker","\u002Fdocs\u002Fdeploy\u002Fdocker","docs\u002F6.deploy\u002F9.docker",{"title":163,"icon":118,"path":164,"stem":165,"children":166,"page":50},"Integrations","\u002Fdocs\u002Fintegrations","docs\u002F7.integrations",[167,171],{"title":168,"path":169,"stem":170},"Nuxt i18n","\u002Fdocs\u002Fintegrations\u002Fi18n","docs\u002F7.integrations\u002F01.i18n",{"title":172,"path":173,"stem":174},"Nuxt LLMs","\u002Fdocs\u002Fintegrations\u002Fllms","docs\u002F7.integrations\u002F02.llms",{"title":176,"icon":177,"path":178,"stem":179,"children":180,"page":50},"Advanced","i-lucide-code-xml","\u002Fdocs\u002Fadvanced","docs\u002F8.advanced",[181,185,189,193,197,201,205],{"title":182,"path":183,"stem":184},"Full-Text Search","\u002Fdocs\u002Fadvanced\u002Ffulltext-search","docs\u002F8.advanced\u002F1.fulltext-search",{"title":186,"path":187,"stem":188},"Raw Content","\u002Fdocs\u002Fadvanced\u002Fraw-content","docs\u002F8.advanced\u002F2.raw-content",{"title":190,"path":191,"stem":192},"SQL Storage","\u002Fdocs\u002Fadvanced\u002Fdatabase","docs\u002F8.advanced\u002F3.database",{"title":194,"path":195,"stem":196},"Debugging tools","\u002Fdocs\u002Fadvanced\u002Ftools","docs\u002F8.advanced\u002F4.tools",{"title":198,"path":199,"stem":200},"Hooks","\u002Fdocs\u002Fadvanced\u002Fhooks","docs\u002F8.advanced\u002F5.hooks",{"title":202,"path":203,"stem":204},"Custom Source","\u002Fdocs\u002Fadvanced\u002Fcustom-source","docs\u002F8.advanced\u002F6.custom-source",{"title":206,"path":207,"stem":208},"Transformers","\u002Fdocs\u002Fadvanced\u002Ftransformers","docs\u002F8.advanced\u002F8.transformers",{"id":210,"title":211,"body":212,"description":622,"extension":623,"links":624,"meta":625,"navigation":626,"path":48,"seo":627,"stem":49,"__hash__":628},"docs\u002Fdocs\u002F2.collections\u002F5.inherit-schema-from-component.md","Inherit Schema from a Vue Component",{"type":213,"value":214,"toc":617},"minimark",[215,219,224,232,246,253,257,570,574,602,613],[216,217,218],"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.",[220,221,223],"h2",{"id":222},"how-it-works","How it works",[216,225,226,227,231],{},"Nuxt Content provides a ",[228,229,230],"code",{},"property()"," helper that augments your validator and adds the following utility:",[233,234,235],"ul",{},[236,237,238,242,243],"li",{},[239,240,241],"strong",{},"inherit(path)",": replace the current object schema with the props JSON Schema inferred from a Vue component at ",[228,244,245],{},"path",[216,247,248,249,252],{},"Under the hood, Nuxt Content reads the component's props (via ",[228,250,251],{},"nuxt-component-meta",") and converts them to JSON Schema, then merges them into your collection schema.",[220,254,256],{"id":255},"example","Example",[258,259,265],"pre",{"className":260,"code":261,"filename":262,"language":263,"meta":264,"style":264},"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","",[228,266,267,311,332,339,357,370,384,403,420,440,447,491,496,502,540,548,556,562],{"__ignoreMap":264},[268,269,272,276,280,284,287,290,292,295,298,301,304,308],"span",{"class":270,"line":271},"line",1,[268,273,275],{"class":274},"s7zQu","import",[268,277,279],{"class":278},"sMK4o"," {",[268,281,283],{"class":282},"sTEyZ"," defineContentConfig",[268,285,286],{"class":278},",",[268,288,289],{"class":282}," defineCollection",[268,291,286],{"class":278},[268,293,294],{"class":282}," property",[268,296,297],{"class":278}," }",[268,299,300],{"class":274}," from",[268,302,303],{"class":278}," '",[268,305,307],{"class":306},"sfazB","@nuxt\u002Fcontent",[268,309,310],{"class":278},"'\n",[268,312,314,316,318,321,323,325,327,330],{"class":270,"line":313},2,[268,315,275],{"class":274},[268,317,279],{"class":278},[268,319,320],{"class":282}," z",[268,322,297],{"class":278},[268,324,300],{"class":274},[268,326,303],{"class":278},[268,328,329],{"class":306},"zod",[268,331,310],{"class":278},[268,333,335],{"class":270,"line":334},3,[268,336,338],{"emptyLinePlaceholder":337},true,"\n",[268,340,342,345,348,351,354],{"class":270,"line":341},4,[268,343,344],{"class":274},"export",[268,346,347],{"class":274}," default",[268,349,283],{"class":350},"s2Zo4",[268,352,353],{"class":282},"(",[268,355,356],{"class":278},"{\n",[268,358,360,364,367],{"class":270,"line":359},5,[268,361,363],{"class":362},"swJcz","  collections",[268,365,366],{"class":278},":",[268,368,369],{"class":278}," {\n",[268,371,373,376,378,380,382],{"class":270,"line":372},6,[268,374,375],{"class":362},"    pages",[268,377,366],{"class":278},[268,379,289],{"class":350},[268,381,353],{"class":282},[268,383,356],{"class":278},[268,385,387,390,392,394,397,400],{"class":270,"line":386},7,[268,388,389],{"class":362},"      type",[268,391,366],{"class":278},[268,393,303],{"class":278},[268,395,396],{"class":306},"page",[268,398,399],{"class":278},"'",[268,401,402],{"class":278},",\n",[268,404,406,409,411,413,416,418],{"class":270,"line":405},8,[268,407,408],{"class":362},"      source",[268,410,366],{"class":278},[268,412,303],{"class":278},[268,414,415],{"class":306},"**\u002F*.md",[268,417,399],{"class":278},[268,419,402],{"class":278},[268,421,423,426,428,430,433,436,438],{"class":270,"line":422},9,[268,424,425],{"class":362},"      schema",[268,427,366],{"class":278},[268,429,320],{"class":282},[268,431,432],{"class":278},".",[268,434,435],{"class":350},"object",[268,437,353],{"class":282},[268,439,356],{"class":278},[268,441,443],{"class":270,"line":442},10,[268,444,446],{"class":445},"sHwdD","        \u002F\u002F Reuse props from a local component\n",[268,448,450,453,455,457,460,462,464,466,469,472,474,477,479,481,484,486,489],{"class":270,"line":449},11,[268,451,452],{"class":362},"        hero",[268,454,366],{"class":278},[268,456,294],{"class":350},[268,458,459],{"class":282},"(z",[268,461,432],{"class":278},[268,463,435],{"class":350},[268,465,353],{"class":282},[268,467,468],{"class":278},"{}",[268,470,471],{"class":282},"))",[268,473,432],{"class":278},[268,475,476],{"class":350},"inherit",[268,478,353],{"class":282},[268,480,399],{"class":278},[268,482,483],{"class":306},"app\u002Fcomponents\u002FHeroSection.vue",[268,485,399],{"class":278},[268,487,488],{"class":282},")",[268,490,402],{"class":278},[268,492,494],{"class":270,"line":493},12,[268,495,338],{"emptyLinePlaceholder":337},[268,497,499],{"class":270,"line":498},13,[268,500,501],{"class":445},"        \u002F\u002F Reuse props from a dependency (path is resolved like an import)\n",[268,503,505,508,510,512,514,516,518,520,522,524,526,528,530,532,535,537],{"class":270,"line":504},14,[268,506,507],{"class":362},"        button",[268,509,366],{"class":278},[268,511,294],{"class":350},[268,513,459],{"class":282},[268,515,432],{"class":278},[268,517,435],{"class":350},[268,519,353],{"class":282},[268,521,468],{"class":278},[268,523,471],{"class":282},[268,525,432],{"class":278},[268,527,476],{"class":350},[268,529,353],{"class":282},[268,531,399],{"class":278},[268,533,534],{"class":306},"@nuxt\u002Fui\u002Fcomponents\u002FButton.vue",[268,536,399],{"class":278},[268,538,539],{"class":282},")\n",[268,541,543,546],{"class":270,"line":542},15,[268,544,545],{"class":278},"      }",[268,547,539],{"class":282},[268,549,551,554],{"class":270,"line":550},16,[268,552,553],{"class":278},"    }",[268,555,539],{"class":282},[268,557,559],{"class":270,"line":558},17,[268,560,561],{"class":278},"  }\n",[268,563,565,568],{"class":270,"line":564},18,[268,566,567],{"class":278},"}",[268,569,539],{"class":282},[220,571,573],{"id":572},"notes","Notes",[233,575,576,583,592,599],{},[236,577,578,579,582],{},"The argument to ",[228,580,581],{},"inherit()"," is resolved like a module path. You can pass a relative path from project root or a package path.",[236,584,585,587,588,591],{},[228,586,581],{}," expects to be used on an object field (e.g., ",[228,589,590],{},"property(z.object({}))",").",[236,593,594,595,598],{},"Nested usage is supported: you can place inherited objects inside other objects and arrays; Nuxt Content recursively replaces ",[228,596,597],{},"$content.inherit"," markers.",[236,600,601],{},"If the component cannot be resolved, the schema falls back to the original object definition.",[603,604,605,606,608,609,612],"tip",{},"Pair ",[228,607,581],{}," with ",[228,610,611],{},"editor(...)"," for better Studio forms if you need custom inputs on top of the component's props.",[614,615,616],"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":264,"searchDepth":313,"depth":313,"links":618},[619,620,621],{"id":222,"depth":313,"text":223},{"id":255,"depth":313,"text":256},{"id":572,"depth":313,"text":573},"Reuse a Vue component's props as part of your collection schema using property().inherit().","md",[],{},{"title":47},{"title":211,"description":622},"DjDwxKGpdfOhfMT34qWierD5w2Uwd0Fbc0BcQXxbv1k",[630,632],{"title":43,"path":44,"stem":45,"description":631,"children":-1},"Define collection schemas with your preferred validator and full type-safety.",{"title":58,"path":59,"stem":60,"description":633,"children":-1},"Create and query Markdown files in your Nuxt applications and use the MDC syntax to integrate Vue components.",1778161209794]