[{"data":1,"prerenderedAt":1554},["ShallowReactive",2],{"navigation_docs":3,"-docs-getting-started-migration":209,"-docs-getting-started-migration-surround":1549},[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":20,"body":211,"description":1543,"extension":1544,"links":1545,"meta":1546,"navigation":655,"path":21,"seo":1547,"stem":22,"__hash__":1548},"docs\u002Fdocs\u002F1.getting-started\u002F4.migration.md",{"type":212,"value":213,"toc":1525},"minimark",[214,218,221,226,231,245,249,300,303,340,358,380,383,394,398,466,470,473,783,794,803,816,900,1044,1047,1054,1057,1253,1256,1271,1283,1306,1312,1330,1337,1349,1363,1367,1376,1444,1459,1521],[215,216,217],"p",{},"Nuxt Content v3 has been rebuilt from the ground up, resulting in a new library with enhanced capabilities. While we've redesigned concepts and components in a similar way as Content v2, breaking changes are inevitable.",[215,219,220],{},"Don't worry, you don't need to modify your content files. We made sure that Content v3 handles content in the same way as Content v2.",[222,223,225],"h2",{"id":224},"changes","Changes",[227,228,230],"h3",{"id":229},"vue-utils","Vue utils",[232,233,234],"ul",{},[235,236,237,241,242],"li",{},[238,239,240],"code",{},"queryContent()"," API is replaced with new ",[238,243,244],{},"queryCollection()",[246,247,248],"prose-tip",{},"The new API is backed by SQL and content queries happens within a specific collection.",[232,250,251,259,265,277,283,292],{},[235,252,253,241,256],{},[238,254,255],{},"fetchContentNavigation()",[238,257,258],{},"queryCollectionNavigation()",[235,260,261,262],{},"Surroundings now has its own separate API ",[238,263,264],{},"queryCollectionItemSurroundings()",[235,266,267,268,270,271,276],{},"Document driven mode is dropped: ",[238,269,58],{}," files will not convert to Nuxt pages automatically, you need to create pages, ",[272,273,275],"a",{"href":274},"\u002Fdocs\u002Fcomponents\u002Fcontent-renderer#example-usage","check this section to see how",".",[235,278,279,282],{},[238,280,281],{},"useContent()"," composable is removed",[235,284,285,288,289,291],{},[238,286,287],{},"searchContent()"," is dropped in favor of the new ",[238,290,92],{}," API",[235,293,294,295,297,298],{},"Full text search can easily be done using the ",[238,296,92],{}," API, ",[272,299,275],{"href":183},[227,301,47],{"id":302},"components",[232,304,305,327],{},[235,306,307,308,311,312,315,316,315,319,322,323,326],{},"All content should be rendered using ",[238,309,310],{},"\u003CContentRenderer>"," component. ",[238,313,314],{},"\u003CContentDoc>",", ",[238,317,318],{},"\u003CContentList>",[238,320,321],{},"\u003CContentNavigation>"," and ",[238,324,325],{},"\u003CContentQuery>"," components are dropped in v3.",[235,328,329,322,332,335,336,339],{},[238,330,331],{},"\u003CContentSlot>",[238,333,334],{},"\u003CMDCSlot>"," components are not supported in v3. Instead components can simply use Vue's native ",[238,337,338],{},"\u003Cslot>"," component",[341,342,343,322,345,347,348,351,352,354,355],"prose-note",{},[238,344,331],{},[238,346,334],{}," was initially pro to manipulate content before rendering and removing wrapping paragraphs from slot content. This unwrapping behavior is now supported via ",[238,349,350],{},"mdc-unwrap"," attribute in ",[238,353,338],{}," component. Example: ",[238,356,357],{},"\u003Cslot mdc-unwrap=\"p\" \u002F>",[232,359,360],{},[235,361,362,363,366,367,373,374,379],{},"Components created under the ",[238,364,365],{},"components\u002Fcontent"," directory are no longer automatically registered as global components. If you use ",[272,368,372],{"href":369,"rel":370},"https:\u002F\u002Fvuejs.org\u002Fguide\u002Fessentials\u002Fcomponent-basics.html#dynamic-components",[371],"nofollow","dynamic rendering"," to render these components outside markdown files, you must manually register them in your Nuxt app. Check out the ",[272,375,378],{"href":376,"rel":377},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fguide\u002Fdirectory-structure\u002Fcomponents#custom-directories",[371],"Nuxt - Custom Components Directories"," documentation for more information on how to do so.",[227,381,35],{"id":382},"types",[232,384,385],{},[235,386,387,390,391],{},[238,388,389],{},"import type { NavItem } from '@nuxt\u002Fcontent\u002Fdist\u002Fruntime\u002Ftypes'"," is replaced with ",[238,392,393],{},"import type { ContentNavigationItem } from '@nuxt\u002Fcontent'",[227,395,397],{"id":396},"general","General",[232,399,400,409,419,434,440,451,459],{},[235,401,402,405,406],{},[238,403,404],{},"_dir.yml"," files are renamed to ",[238,407,408],{},".navigation.yml",[235,410,411,412,415,416,276],{},"There is no source option in module options, instead you can define ",[272,413,414],{"href":40},"multiple sources"," for your collections in ",[238,417,418],{},"content.config.ts",[235,420,421,422,425,426,429,430,433],{},"Document ",[238,423,424],{},"._path"," is now renamed to ",[238,427,428],{},".path",", likewise all internal fields with ",[238,431,432],{},"_"," prefix are removed or renamed.",[235,435,436,439],{},[238,437,438],{},"useContentHelpers()"," is removed",[235,441,442,443,446,447,450],{},"Module does not ignore dot files by default, you can ignore them by adding ",[238,444,445],{},"ignore: ['**\u002F.*']"," in ",[238,448,449],{},"exclude"," options of your collection source.",[235,452,453,454,458],{},"Due to SQL limitations, sort order now uses alphabetical order instead for numerical order. Check out the ",[272,455,457],{"href":456},"\u002Fdocs\u002Fcollections\u002Ftypes#ordering-files","Ordering Files"," section for more information.",[235,460,461,462,465],{},"Module options have changed from v2. Check out ",[272,463,464],{"href":17},"configuration page"," for details.",[222,467,469],{"id":468},"implement-document-driven-mode-in-v3","Implement Document Driven mode in v3",[215,471,472],{},"Implementing document driven mode in Content v3 is quite easy. All you need is to create a catch-all page in Nuxt and fetch contents based on route path.",[474,475,481],"pre",{"className":476,"code":477,"filename":478,"language":479,"meta":480,"style":480},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript lang=\"ts\" setup>\nconst route = useRoute()\nconst { data: page } = await useAsyncData(route.path, () => {\n  return queryCollection('content').path(route.path).first()\n})\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cheader>\u003C!-- ... -->\u003C\u002Fheader>\n\n    \u003CContentRenderer v-if=\"page\" :value=\"page\" \u002F>\n\n    \u003Cfooter>\u003C!-- ... -->\u003C\u002Ffooter>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","pages\u002F[...slug].vue","vue","",[238,482,483,518,537,587,632,640,650,657,667,678,700,705,741,746,764,774],{"__ignoreMap":480},[484,485,488,492,496,500,503,506,510,512,515],"span",{"class":486,"line":487},"line",1,[484,489,491],{"class":490},"sMK4o","\u003C",[484,493,495],{"class":494},"swJcz","script",[484,497,499],{"class":498},"spNyl"," lang",[484,501,502],{"class":490},"=",[484,504,505],{"class":490},"\"",[484,507,509],{"class":508},"sfazB","ts",[484,511,505],{"class":490},[484,513,514],{"class":498}," setup",[484,516,517],{"class":490},">\n",[484,519,521,524,528,530,534],{"class":486,"line":520},2,[484,522,523],{"class":498},"const",[484,525,527],{"class":526},"sTEyZ"," route ",[484,529,502],{"class":490},[484,531,533],{"class":532},"s2Zo4"," useRoute",[484,535,536],{"class":526},"()\n",[484,538,540,542,545,548,551,554,557,560,564,567,570,572,575,578,581,584],{"class":486,"line":539},3,[484,541,523],{"class":498},[484,543,544],{"class":490}," {",[484,546,547],{"class":494}," data",[484,549,550],{"class":490},":",[484,552,553],{"class":526}," page ",[484,555,556],{"class":490},"}",[484,558,559],{"class":490}," =",[484,561,563],{"class":562},"s7zQu"," await",[484,565,566],{"class":532}," useAsyncData",[484,568,569],{"class":526},"(route",[484,571,276],{"class":490},[484,573,574],{"class":526},"path",[484,576,577],{"class":490},",",[484,579,580],{"class":490}," ()",[484,582,583],{"class":498}," =>",[484,585,586],{"class":490}," {\n",[484,588,590,593,596,599,602,605,607,610,612,614,616,619,621,623,625,627,630],{"class":486,"line":589},4,[484,591,592],{"class":562},"  return",[484,594,595],{"class":532}," queryCollection",[484,597,598],{"class":494},"(",[484,600,601],{"class":490},"'",[484,603,604],{"class":508},"content",[484,606,601],{"class":490},[484,608,609],{"class":494},")",[484,611,276],{"class":490},[484,613,574],{"class":532},[484,615,598],{"class":494},[484,617,618],{"class":526},"route",[484,620,276],{"class":490},[484,622,574],{"class":526},[484,624,609],{"class":494},[484,626,276],{"class":490},[484,628,629],{"class":532},"first",[484,631,536],{"class":494},[484,633,635,637],{"class":486,"line":634},5,[484,636,556],{"class":490},[484,638,639],{"class":526},")\n",[484,641,643,646,648],{"class":486,"line":642},6,[484,644,645],{"class":490},"\u003C\u002F",[484,647,495],{"class":494},[484,649,517],{"class":490},[484,651,653],{"class":486,"line":652},7,[484,654,656],{"emptyLinePlaceholder":655},true,"\n",[484,658,660,662,665],{"class":486,"line":659},8,[484,661,491],{"class":490},[484,663,664],{"class":494},"template",[484,666,517],{"class":490},[484,668,670,673,676],{"class":486,"line":669},9,[484,671,672],{"class":490},"  \u003C",[484,674,675],{"class":494},"div",[484,677,517],{"class":490},[484,679,681,684,687,690,694,696,698],{"class":486,"line":680},10,[484,682,683],{"class":490},"    \u003C",[484,685,686],{"class":494},"header",[484,688,689],{"class":490},">",[484,691,693],{"class":692},"sHwdD","\u003C!-- ... -->",[484,695,645],{"class":490},[484,697,686],{"class":494},[484,699,517],{"class":490},[484,701,703],{"class":486,"line":702},11,[484,704,656],{"emptyLinePlaceholder":655},[484,706,708,710,712,715,717,719,722,724,727,730,732,734,736,738],{"class":486,"line":707},12,[484,709,683],{"class":490},[484,711,105],{"class":494},[484,713,714],{"class":562}," v-if",[484,716,502],{"class":490},[484,718,505],{"class":490},[484,720,721],{"class":526},"page",[484,723,505],{"class":490},[484,725,726],{"class":490}," :",[484,728,729],{"class":498},"value",[484,731,502],{"class":490},[484,733,505],{"class":490},[484,735,721],{"class":526},[484,737,505],{"class":490},[484,739,740],{"class":490}," \u002F>\n",[484,742,744],{"class":486,"line":743},13,[484,745,656],{"emptyLinePlaceholder":655},[484,747,749,751,754,756,758,760,762],{"class":486,"line":748},14,[484,750,683],{"class":490},[484,752,753],{"class":494},"footer",[484,755,689],{"class":490},[484,757,693],{"class":692},[484,759,645],{"class":490},[484,761,753],{"class":494},[484,763,517],{"class":490},[484,765,767,770,772],{"class":486,"line":766},15,[484,768,769],{"class":490},"  \u003C\u002F",[484,771,675],{"class":494},[484,773,517],{"class":490},[484,775,777,779,781],{"class":486,"line":776},16,[484,778,645],{"class":490},[484,780,664],{"class":494},[484,782,517],{"class":490},[222,784,786,787,790,791],{"id":785},"converting-querycontent-to-querycollections","Converting ",[238,788,789],{},"queryContent"," to ",[238,792,793],{},"queryCollections",[215,795,796,797,799,800,802],{},"As we mentioned above, ",[238,798,789],{}," is dropped in favor of new collection based ",[238,801,80],{},". There are two main differences between these two:",[804,805,806,811],"ol",{},[235,807,808,810],{},[238,809,80],{}," is building a query for an SQL database.",[235,812,813,815],{},[238,814,80],{}," does the search only inside the specified collection. You should know the collection's name (key on config).",[474,817,821],{"className":818,"code":819,"filename":820,"language":509,"meta":480,"style":480},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Content v2\nconst v2Query = await queryContent(route.path).findOne()\n\u002F\u002F Content v3 - don't forget to create `content` collection in `content.config.ts`\nconst v3Query = await queryCollection('content').path(route.path).first()\n","Find content with path",[238,822,823,828,856,861],{"__ignoreMap":480},[484,824,825],{"class":486,"line":487},[484,826,827],{"class":692},"\u002F\u002F Content v2\n",[484,829,830,832,835,837,839,842,844,846,849,851,854],{"class":486,"line":520},[484,831,523],{"class":498},[484,833,834],{"class":526}," v2Query ",[484,836,502],{"class":490},[484,838,563],{"class":562},[484,840,841],{"class":532}," queryContent",[484,843,569],{"class":526},[484,845,276],{"class":490},[484,847,848],{"class":526},"path)",[484,850,276],{"class":490},[484,852,853],{"class":532},"findOne",[484,855,536],{"class":526},[484,857,858],{"class":486,"line":539},[484,859,860],{"class":692},"\u002F\u002F Content v3 - don't forget to create `content` collection in `content.config.ts`\n",[484,862,863,865,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898],{"class":486,"line":589},[484,864,523],{"class":498},[484,866,867],{"class":526}," v3Query ",[484,869,502],{"class":490},[484,871,563],{"class":562},[484,873,595],{"class":532},[484,875,598],{"class":526},[484,877,601],{"class":490},[484,879,604],{"class":508},[484,881,601],{"class":490},[484,883,609],{"class":526},[484,885,276],{"class":490},[484,887,574],{"class":532},[484,889,569],{"class":526},[484,891,276],{"class":490},[484,893,848],{"class":526},[484,895,276],{"class":490},[484,897,629],{"class":532},[484,899,536],{"class":526},[474,901,904],{"className":818,"code":902,"filename":903,"language":509,"meta":480,"style":480},"\u002F\u002F Content v2\nconst v2Query = await queryContent()\n  .where({ path: \u002F^\\\u002Fhello\\\u002F.*\u002F })\n  .find()\n\u002F\u002F Content v3 - don't forget to create `content` collection in `content.config.ts`\nconst v3Query = await queryCollection('content')\n  .where('path', 'LIKE', '\u002Fhello%')\n  .first()\n","Find contents with custom filter",[238,905,906,910,924,966,975,979,1001,1036],{"__ignoreMap":480},[484,907,908],{"class":486,"line":487},[484,909,827],{"class":692},[484,911,912,914,916,918,920,922],{"class":486,"line":520},[484,913,523],{"class":498},[484,915,834],{"class":526},[484,917,502],{"class":490},[484,919,563],{"class":562},[484,921,841],{"class":532},[484,923,536],{"class":526},[484,925,926,929,932,934,937,940,942,945,948,951,954,956,958,961,964],{"class":486,"line":539},[484,927,928],{"class":490},"  .",[484,930,931],{"class":532},"where",[484,933,598],{"class":526},[484,935,936],{"class":490},"{",[484,938,939],{"class":494}," path",[484,941,550],{"class":490},[484,943,944],{"class":490}," \u002F",[484,946,947],{"class":562},"^",[484,949,950],{"class":526},"\\\u002F",[484,952,953],{"class":508},"hello",[484,955,950],{"class":526},[484,957,276],{"class":508},[484,959,960],{"class":490},"*\u002F",[484,962,963],{"class":490}," }",[484,965,639],{"class":526},[484,967,968,970,973],{"class":486,"line":589},[484,969,928],{"class":490},[484,971,972],{"class":532},"find",[484,974,536],{"class":526},[484,976,977],{"class":486,"line":634},[484,978,860],{"class":692},[484,980,981,983,985,987,989,991,993,995,997,999],{"class":486,"line":642},[484,982,523],{"class":498},[484,984,867],{"class":526},[484,986,502],{"class":490},[484,988,563],{"class":562},[484,990,595],{"class":532},[484,992,598],{"class":526},[484,994,601],{"class":490},[484,996,604],{"class":508},[484,998,601],{"class":490},[484,1000,639],{"class":526},[484,1002,1003,1005,1007,1009,1011,1013,1015,1017,1020,1023,1025,1027,1029,1032,1034],{"class":486,"line":652},[484,1004,928],{"class":490},[484,1006,931],{"class":532},[484,1008,598],{"class":526},[484,1010,601],{"class":490},[484,1012,574],{"class":508},[484,1014,601],{"class":490},[484,1016,577],{"class":490},[484,1018,1019],{"class":490}," '",[484,1021,1022],{"class":508},"LIKE",[484,1024,601],{"class":490},[484,1026,577],{"class":490},[484,1028,1019],{"class":490},[484,1030,1031],{"class":508},"\u002Fhello%",[484,1033,601],{"class":490},[484,1035,639],{"class":526},[484,1037,1038,1040,1042],{"class":486,"line":659},[484,1039,928],{"class":490},[484,1041,629],{"class":532},[484,1043,536],{"class":526},[341,1045,1046],{"to":32},"Check the dedicated section for more info about collections",[222,1048,1050,1051],{"id":1049},"convert-querycontentfindsurround","Convert ",[238,1052,1053],{},"queryContent().findSurround()",[215,1055,1056],{},"Surround now has its own separate API.",[474,1058,1060],{"className":818,"code":1059,"language":509,"meta":480,"style":480},"const targetPath = '\u002Fdocs'\n\n\u002F\u002F Content v2\nconst v2Surround = await queryContent(targetPath)\n  .only(['title', 'description', 'navigation'])\n  .findSurround(withoutTrailingSlash(route.path))\n\n\u002F\u002F Content v3 - don't forget to create `content` collection in `content.config.ts`\nconst v3Surround = await queryCollectionItemSurroundings(\n  'content',\n  targetPath,\n  {\n    fields: ['title', 'description', 'navigation']\n  }\n)\n",[238,1061,1062,1079,1083,1087,1103,1141,1160,1164,1168,1185,1197,1204,1209,1244,1249],{"__ignoreMap":480},[484,1063,1064,1066,1069,1071,1073,1076],{"class":486,"line":487},[484,1065,523],{"class":498},[484,1067,1068],{"class":526}," targetPath ",[484,1070,502],{"class":490},[484,1072,1019],{"class":490},[484,1074,1075],{"class":508},"\u002Fdocs",[484,1077,1078],{"class":490},"'\n",[484,1080,1081],{"class":486,"line":520},[484,1082,656],{"emptyLinePlaceholder":655},[484,1084,1085],{"class":486,"line":539},[484,1086,827],{"class":692},[484,1088,1089,1091,1094,1096,1098,1100],{"class":486,"line":589},[484,1090,523],{"class":498},[484,1092,1093],{"class":526}," v2Surround ",[484,1095,502],{"class":490},[484,1097,563],{"class":562},[484,1099,841],{"class":532},[484,1101,1102],{"class":526},"(targetPath)\n",[484,1104,1105,1107,1110,1113,1115,1118,1120,1122,1124,1127,1129,1131,1133,1136,1138],{"class":486,"line":634},[484,1106,928],{"class":490},[484,1108,1109],{"class":532},"only",[484,1111,1112],{"class":526},"([",[484,1114,601],{"class":490},[484,1116,1117],{"class":508},"title",[484,1119,601],{"class":490},[484,1121,577],{"class":490},[484,1123,1019],{"class":490},[484,1125,1126],{"class":508},"description",[484,1128,601],{"class":490},[484,1130,577],{"class":490},[484,1132,1019],{"class":490},[484,1134,1135],{"class":508},"navigation",[484,1137,601],{"class":490},[484,1139,1140],{"class":526},"])\n",[484,1142,1143,1145,1148,1150,1153,1155,1157],{"class":486,"line":642},[484,1144,928],{"class":490},[484,1146,1147],{"class":532},"findSurround",[484,1149,598],{"class":526},[484,1151,1152],{"class":532},"withoutTrailingSlash",[484,1154,569],{"class":526},[484,1156,276],{"class":490},[484,1158,1159],{"class":526},"path))\n",[484,1161,1162],{"class":486,"line":652},[484,1163,656],{"emptyLinePlaceholder":655},[484,1165,1166],{"class":486,"line":659},[484,1167,860],{"class":692},[484,1169,1170,1172,1175,1177,1179,1182],{"class":486,"line":669},[484,1171,523],{"class":498},[484,1173,1174],{"class":526}," v3Surround ",[484,1176,502],{"class":490},[484,1178,563],{"class":562},[484,1180,1181],{"class":532}," queryCollectionItemSurroundings",[484,1183,1184],{"class":526},"(\n",[484,1186,1187,1190,1192,1194],{"class":486,"line":680},[484,1188,1189],{"class":490},"  '",[484,1191,604],{"class":508},[484,1193,601],{"class":490},[484,1195,1196],{"class":490},",\n",[484,1198,1199,1202],{"class":486,"line":702},[484,1200,1201],{"class":526},"  targetPath",[484,1203,1196],{"class":490},[484,1205,1206],{"class":486,"line":707},[484,1207,1208],{"class":490},"  {\n",[484,1210,1211,1214,1216,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241],{"class":486,"line":743},[484,1212,1213],{"class":494},"    fields",[484,1215,550],{"class":490},[484,1217,1218],{"class":526}," [",[484,1220,601],{"class":490},[484,1222,1117],{"class":508},[484,1224,601],{"class":490},[484,1226,577],{"class":490},[484,1228,1019],{"class":490},[484,1230,1126],{"class":508},[484,1232,601],{"class":490},[484,1234,577],{"class":490},[484,1236,1019],{"class":490},[484,1238,1135],{"class":508},[484,1240,601],{"class":490},[484,1242,1243],{"class":526},"]\n",[484,1245,1246],{"class":486,"line":748},[484,1247,1248],{"class":490},"  }\n",[484,1250,1251],{"class":486,"line":766},[484,1252,639],{"class":526},[341,1254,1255],{},"Check the dedicated section for more information about the",[222,1257,1259,1260,315,1263,1266,1267,1270],{"id":1258},"consolidate-prosepre-prosecode-and-prosecodeinline-components","Consolidate ",[238,1261,1262],{},"ProsePre",[238,1264,1265],{},"ProseCode",", and ",[238,1268,1269],{},"ProseCodeInline"," components",[215,1272,1273,1274,1276,1277,1279,1280,1282],{},"Many ",[238,1275,1262],{}," components are thin wrappers around the ",[238,1278,1265],{}," component. We've consolidated these three components into two components. There is now no difference between ",[238,1281,1262],{}," and multi-line code blocks.",[804,1284,1285,1297],{},[235,1286,1287,1288,1291,1292,1294,1295,276],{},"MDC will now map and parse single backticks ",[238,1289,1290],{},"`"," as ",[238,1293,1265],{}," instead of ",[238,1296,1269],{},[235,1298,1299,1300,1291,1303,1305],{},"MDC will now map and parse block code starting with three backticks",[238,1301,1302],{},"```",[238,1304,1262],{}," component.",[215,1307,1308],{},[1309,1310,1311],"strong",{},"Suggested Changes:",[804,1313,1314,1322],{},[235,1315,1316,1317,1319,1320],{},"Your current ",[238,1318,1265],{}," logic should be moved to ",[238,1321,1262],{},[235,1323,1324,1325,1327,1328],{},"Rename your ",[238,1326,1269],{}," components to ",[238,1329,1265],{},[222,1331,1333,405,1335],{"id":1332},"_diryml-files-are-renamed-to-navigationyml",[238,1334,404],{},[238,1336,408],{},[215,1338,1339,1340,790,1342,1344,1345,1348],{},"In Content v3, we renamed ",[238,1341,404],{},[238,1343,408],{},". The new name better reflects the purpose of these files.",[1346,1347],"br",{},"\nModule uses these files to gather information about directories for generating navigation.",[215,1350,1351,1352,322,1355,1358,1359,1362],{},"Note that in order to make these files available for Module, you should define your collection's source in\na way that includes these files. For example ",[238,1353,1354],{},"source: '**'",[238,1356,1357],{},"source: '**\u002F*.{md,yml}'"," will include these files\nin collection, but ",[238,1360,1361],{},"source: '**\u002F*.md'"," will not include them.",[222,1364,1366],{"id":1365},"ignore-dot-files","Ignore dot files",[215,1368,1369,1370,1372,1373,1375],{},"By default, Content v3 does not ignore dot files. If you want to ignore them, you can add ",[238,1371,445],{}," in the ",[238,1374,449],{}," option of your collection source.",[474,1377,1379],{"className":818,"code":1378,"language":509,"meta":480,"style":480},"defineCollection({\n  source: {\n    include: '**',\n    exclude: ['**\u002F.*']\n  }\n})\n",[238,1380,1381,1391,1400,1416,1434,1438],{"__ignoreMap":480},[484,1382,1383,1386,1388],{"class":486,"line":487},[484,1384,1385],{"class":532},"defineCollection",[484,1387,598],{"class":526},[484,1389,1390],{"class":490},"{\n",[484,1392,1393,1396,1398],{"class":486,"line":520},[484,1394,1395],{"class":494},"  source",[484,1397,550],{"class":490},[484,1399,586],{"class":490},[484,1401,1402,1405,1407,1409,1412,1414],{"class":486,"line":539},[484,1403,1404],{"class":494},"    include",[484,1406,550],{"class":490},[484,1408,1019],{"class":490},[484,1410,1411],{"class":508},"**",[484,1413,601],{"class":490},[484,1415,1196],{"class":490},[484,1417,1418,1421,1423,1425,1427,1430,1432],{"class":486,"line":589},[484,1419,1420],{"class":494},"    exclude",[484,1422,550],{"class":490},[484,1424,1218],{"class":526},[484,1426,601],{"class":490},[484,1428,1429],{"class":508},"**\u002F.*",[484,1431,601],{"class":490},[484,1433,1243],{"class":526},[484,1435,1436],{"class":486,"line":634},[484,1437,1248],{"class":490},[484,1439,1440,1442],{"class":486,"line":642},[484,1441,556],{"class":490},[484,1443,639],{"class":526},[215,1445,1446,1447,1449,1450,1452,1453,1456,1457,276],{},"Note that the above pattern will also exclude ",[238,1448,408],{}," file from collection. If you use ",[238,1451,408],{}," and want to keep them\nyou can use ",[238,1454,1455],{},"**\u002F.(!(navigation.yml))"," pattern to exclude all dot files except ",[238,1458,408],{},[474,1460,1462],{"className":818,"code":1461,"language":509,"meta":480,"style":480},"defineCollection({\n  source: {\n    include: '**',\n    exclude: ['**\u002F.!(navigation.yml)']\n  }\n})\n",[238,1463,1464,1472,1480,1494,1511,1515],{"__ignoreMap":480},[484,1465,1466,1468,1470],{"class":486,"line":487},[484,1467,1385],{"class":532},[484,1469,598],{"class":526},[484,1471,1390],{"class":490},[484,1473,1474,1476,1478],{"class":486,"line":520},[484,1475,1395],{"class":494},[484,1477,550],{"class":490},[484,1479,586],{"class":490},[484,1481,1482,1484,1486,1488,1490,1492],{"class":486,"line":539},[484,1483,1404],{"class":494},[484,1485,550],{"class":490},[484,1487,1019],{"class":490},[484,1489,1411],{"class":508},[484,1491,601],{"class":490},[484,1493,1196],{"class":490},[484,1495,1496,1498,1500,1502,1504,1507,1509],{"class":486,"line":589},[484,1497,1420],{"class":494},[484,1499,550],{"class":490},[484,1501,1218],{"class":526},[484,1503,601],{"class":490},[484,1505,1506],{"class":508},"**\u002F.!(navigation.yml)",[484,1508,601],{"class":490},[484,1510,1243],{"class":526},[484,1512,1513],{"class":486,"line":634},[484,1514,1248],{"class":490},[484,1516,1517,1519],{"class":486,"line":642},[484,1518,556],{"class":490},[484,1520,639],{"class":526},[1522,1523,1524],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .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":480,"searchDepth":520,"depth":520,"links":1526},[1527,1533,1534,1536,1538,1540,1542],{"id":224,"depth":520,"text":225,"children":1528},[1529,1530,1531,1532],{"id":229,"depth":539,"text":230},{"id":302,"depth":539,"text":47},{"id":382,"depth":539,"text":35},{"id":396,"depth":539,"text":397},{"id":468,"depth":520,"text":469},{"id":785,"depth":520,"text":1535},"Converting queryContent to queryCollections",{"id":1049,"depth":520,"text":1537},"Convert queryContent().findSurround()",{"id":1258,"depth":520,"text":1539},"Consolidate ProsePre, ProseCode, and ProseCodeInline components",{"id":1332,"depth":520,"text":1541},"_dir.yml files are renamed to .navigation.yml",{"id":1365,"depth":520,"text":1366},"How to migrate from v2 to v3","md",null,{},{"title":20,"description":1543},"GbvaS3q0zFk8DXeBzcRJUssjd3U5XfAAH3_Hpls4W_c",[1550,1552],{"title":16,"path":17,"stem":18,"description":1551,"children":-1},"Nuxt Content is configured with sensible defaults.",{"title":31,"path":32,"stem":33,"description":1553,"children":-1},"Learn how to define and configure content collections in your Nuxt application.",1787749343176]