[{"data":1,"prerenderedAt":1551},["ShallowReactive",2],{"navigation_docs":3,"-docs-getting-started-migration":209,"-docs-getting-started-migration-surround":1546},[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":1540,"extension":1541,"links":1542,"meta":1543,"navigation":655,"path":21,"seo":1544,"stem":22,"__hash__":1545},"docs\u002Fdocs\u002F1.getting-started\u002F4.migration.md",{"type":212,"value":213,"toc":1522},"minimark",[214,218,221,226,231,245,249,300,303,340,358,380,383,394,398,466,470,473,780,791,800,813,897,1041,1044,1051,1054,1250,1253,1268,1280,1303,1309,1327,1334,1346,1360,1364,1373,1441,1456,1518],[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,738,743,761,771],{"__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,729,731,733,735],{"class":486,"line":707},12,[484,709,683],{"class":490},[484,711,105],{"class":494},[484,713,714],{"class":498}," v-if",[484,716,502],{"class":490},[484,718,505],{"class":490},[484,720,721],{"class":508},"page",[484,723,505],{"class":490},[484,725,726],{"class":498}," :value",[484,728,502],{"class":490},[484,730,505],{"class":490},[484,732,721],{"class":508},[484,734,505],{"class":490},[484,736,737],{"class":490}," \u002F>\n",[484,739,741],{"class":486,"line":740},13,[484,742,656],{"emptyLinePlaceholder":655},[484,744,746,748,751,753,755,757,759],{"class":486,"line":745},14,[484,747,683],{"class":490},[484,749,750],{"class":494},"footer",[484,752,689],{"class":490},[484,754,693],{"class":692},[484,756,645],{"class":490},[484,758,750],{"class":494},[484,760,517],{"class":490},[484,762,764,767,769],{"class":486,"line":763},15,[484,765,766],{"class":490},"  \u003C\u002F",[484,768,675],{"class":494},[484,770,517],{"class":490},[484,772,774,776,778],{"class":486,"line":773},16,[484,775,645],{"class":490},[484,777,664],{"class":494},[484,779,517],{"class":490},[222,781,783,784,787,788],{"id":782},"converting-querycontent-to-querycollections","Converting ",[238,785,786],{},"queryContent"," to ",[238,789,790],{},"queryCollections",[215,792,793,794,796,797,799],{},"As we mentioned above, ",[238,795,786],{}," is dropped in favor of new collection based ",[238,798,80],{},". There are two main differences between these two:",[801,802,803,808],"ol",{},[235,804,805,807],{},[238,806,80],{}," is building a query for an SQL database.",[235,809,810,812],{},[238,811,80],{}," does the search only inside the specified collection. You should know the collection's name (key on config).",[474,814,818],{"className":815,"code":816,"filename":817,"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,819,820,825,853,858],{"__ignoreMap":480},[484,821,822],{"class":486,"line":487},[484,823,824],{"class":692},"\u002F\u002F Content v2\n",[484,826,827,829,832,834,836,839,841,843,846,848,851],{"class":486,"line":520},[484,828,523],{"class":498},[484,830,831],{"class":526}," v2Query ",[484,833,502],{"class":490},[484,835,563],{"class":562},[484,837,838],{"class":532}," queryContent",[484,840,569],{"class":526},[484,842,276],{"class":490},[484,844,845],{"class":526},"path)",[484,847,276],{"class":490},[484,849,850],{"class":532},"findOne",[484,852,536],{"class":526},[484,854,855],{"class":486,"line":539},[484,856,857],{"class":692},"\u002F\u002F Content v3 - don't forget to create `content` collection in `content.config.ts`\n",[484,859,860,862,865,867,869,871,873,875,877,879,881,883,885,887,889,891,893,895],{"class":486,"line":589},[484,861,523],{"class":498},[484,863,864],{"class":526}," v3Query ",[484,866,502],{"class":490},[484,868,563],{"class":562},[484,870,595],{"class":532},[484,872,598],{"class":526},[484,874,601],{"class":490},[484,876,604],{"class":508},[484,878,601],{"class":490},[484,880,609],{"class":526},[484,882,276],{"class":490},[484,884,574],{"class":532},[484,886,569],{"class":526},[484,888,276],{"class":490},[484,890,845],{"class":526},[484,892,276],{"class":490},[484,894,629],{"class":532},[484,896,536],{"class":526},[474,898,901],{"className":815,"code":899,"filename":900,"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,902,903,907,921,963,972,976,998,1033],{"__ignoreMap":480},[484,904,905],{"class":486,"line":487},[484,906,824],{"class":692},[484,908,909,911,913,915,917,919],{"class":486,"line":520},[484,910,523],{"class":498},[484,912,831],{"class":526},[484,914,502],{"class":490},[484,916,563],{"class":562},[484,918,838],{"class":532},[484,920,536],{"class":526},[484,922,923,926,929,931,934,937,939,942,945,948,951,953,955,958,961],{"class":486,"line":539},[484,924,925],{"class":490},"  .",[484,927,928],{"class":532},"where",[484,930,598],{"class":526},[484,932,933],{"class":490},"{",[484,935,936],{"class":494}," path",[484,938,550],{"class":490},[484,940,941],{"class":490}," \u002F",[484,943,944],{"class":562},"^",[484,946,947],{"class":526},"\\\u002F",[484,949,950],{"class":508},"hello",[484,952,947],{"class":526},[484,954,276],{"class":508},[484,956,957],{"class":490},"*\u002F",[484,959,960],{"class":490}," }",[484,962,639],{"class":526},[484,964,965,967,970],{"class":486,"line":589},[484,966,925],{"class":490},[484,968,969],{"class":532},"find",[484,971,536],{"class":526},[484,973,974],{"class":486,"line":634},[484,975,857],{"class":692},[484,977,978,980,982,984,986,988,990,992,994,996],{"class":486,"line":642},[484,979,523],{"class":498},[484,981,864],{"class":526},[484,983,502],{"class":490},[484,985,563],{"class":562},[484,987,595],{"class":532},[484,989,598],{"class":526},[484,991,601],{"class":490},[484,993,604],{"class":508},[484,995,601],{"class":490},[484,997,639],{"class":526},[484,999,1000,1002,1004,1006,1008,1010,1012,1014,1017,1020,1022,1024,1026,1029,1031],{"class":486,"line":652},[484,1001,925],{"class":490},[484,1003,928],{"class":532},[484,1005,598],{"class":526},[484,1007,601],{"class":490},[484,1009,574],{"class":508},[484,1011,601],{"class":490},[484,1013,577],{"class":490},[484,1015,1016],{"class":490}," '",[484,1018,1019],{"class":508},"LIKE",[484,1021,601],{"class":490},[484,1023,577],{"class":490},[484,1025,1016],{"class":490},[484,1027,1028],{"class":508},"\u002Fhello%",[484,1030,601],{"class":490},[484,1032,639],{"class":526},[484,1034,1035,1037,1039],{"class":486,"line":659},[484,1036,925],{"class":490},[484,1038,629],{"class":532},[484,1040,536],{"class":526},[341,1042,1043],{"to":32},"Check the dedicated section for more info about collections",[222,1045,1047,1048],{"id":1046},"convert-querycontentfindsurround","Convert ",[238,1049,1050],{},"queryContent().findSurround()",[215,1052,1053],{},"Surround now has its own separate API.",[474,1055,1057],{"className":815,"code":1056,"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,1058,1059,1076,1080,1084,1100,1138,1157,1161,1165,1182,1194,1201,1206,1241,1246],{"__ignoreMap":480},[484,1060,1061,1063,1066,1068,1070,1073],{"class":486,"line":487},[484,1062,523],{"class":498},[484,1064,1065],{"class":526}," targetPath ",[484,1067,502],{"class":490},[484,1069,1016],{"class":490},[484,1071,1072],{"class":508},"\u002Fdocs",[484,1074,1075],{"class":490},"'\n",[484,1077,1078],{"class":486,"line":520},[484,1079,656],{"emptyLinePlaceholder":655},[484,1081,1082],{"class":486,"line":539},[484,1083,824],{"class":692},[484,1085,1086,1088,1091,1093,1095,1097],{"class":486,"line":589},[484,1087,523],{"class":498},[484,1089,1090],{"class":526}," v2Surround ",[484,1092,502],{"class":490},[484,1094,563],{"class":562},[484,1096,838],{"class":532},[484,1098,1099],{"class":526},"(targetPath)\n",[484,1101,1102,1104,1107,1110,1112,1115,1117,1119,1121,1124,1126,1128,1130,1133,1135],{"class":486,"line":634},[484,1103,925],{"class":490},[484,1105,1106],{"class":532},"only",[484,1108,1109],{"class":526},"([",[484,1111,601],{"class":490},[484,1113,1114],{"class":508},"title",[484,1116,601],{"class":490},[484,1118,577],{"class":490},[484,1120,1016],{"class":490},[484,1122,1123],{"class":508},"description",[484,1125,601],{"class":490},[484,1127,577],{"class":490},[484,1129,1016],{"class":490},[484,1131,1132],{"class":508},"navigation",[484,1134,601],{"class":490},[484,1136,1137],{"class":526},"])\n",[484,1139,1140,1142,1145,1147,1150,1152,1154],{"class":486,"line":642},[484,1141,925],{"class":490},[484,1143,1144],{"class":532},"findSurround",[484,1146,598],{"class":526},[484,1148,1149],{"class":532},"withoutTrailingSlash",[484,1151,569],{"class":526},[484,1153,276],{"class":490},[484,1155,1156],{"class":526},"path))\n",[484,1158,1159],{"class":486,"line":652},[484,1160,656],{"emptyLinePlaceholder":655},[484,1162,1163],{"class":486,"line":659},[484,1164,857],{"class":692},[484,1166,1167,1169,1172,1174,1176,1179],{"class":486,"line":669},[484,1168,523],{"class":498},[484,1170,1171],{"class":526}," v3Surround ",[484,1173,502],{"class":490},[484,1175,563],{"class":562},[484,1177,1178],{"class":532}," queryCollectionItemSurroundings",[484,1180,1181],{"class":526},"(\n",[484,1183,1184,1187,1189,1191],{"class":486,"line":680},[484,1185,1186],{"class":490},"  '",[484,1188,604],{"class":508},[484,1190,601],{"class":490},[484,1192,1193],{"class":490},",\n",[484,1195,1196,1199],{"class":486,"line":702},[484,1197,1198],{"class":526},"  targetPath",[484,1200,1193],{"class":490},[484,1202,1203],{"class":486,"line":707},[484,1204,1205],{"class":490},"  {\n",[484,1207,1208,1211,1213,1216,1218,1220,1222,1224,1226,1228,1230,1232,1234,1236,1238],{"class":486,"line":740},[484,1209,1210],{"class":494},"    fields",[484,1212,550],{"class":490},[484,1214,1215],{"class":526}," [",[484,1217,601],{"class":490},[484,1219,1114],{"class":508},[484,1221,601],{"class":490},[484,1223,577],{"class":490},[484,1225,1016],{"class":490},[484,1227,1123],{"class":508},[484,1229,601],{"class":490},[484,1231,577],{"class":490},[484,1233,1016],{"class":490},[484,1235,1132],{"class":508},[484,1237,601],{"class":490},[484,1239,1240],{"class":526},"]\n",[484,1242,1243],{"class":486,"line":745},[484,1244,1245],{"class":490},"  }\n",[484,1247,1248],{"class":486,"line":763},[484,1249,639],{"class":526},[341,1251,1252],{},"Check the dedicated section for more information about the",[222,1254,1256,1257,315,1260,1263,1264,1267],{"id":1255},"consolidate-prosepre-prosecode-and-prosecodeinline-components","Consolidate ",[238,1258,1259],{},"ProsePre",[238,1261,1262],{},"ProseCode",", and ",[238,1265,1266],{},"ProseCodeInline"," components",[215,1269,1270,1271,1273,1274,1276,1277,1279],{},"Many ",[238,1272,1259],{}," components are thin wrappers around the ",[238,1275,1262],{}," component. We've consolidated these three components into two components. There is now no difference between ",[238,1278,1259],{}," and multi-line code blocks.",[801,1281,1282,1294],{},[235,1283,1284,1285,1288,1289,1291,1292,276],{},"MDC will now map and parse single backticks ",[238,1286,1287],{},"`"," as ",[238,1290,1262],{}," instead of ",[238,1293,1266],{},[235,1295,1296,1297,1288,1300,1302],{},"MDC will now map and parse block code starting with three backticks",[238,1298,1299],{},"```",[238,1301,1259],{}," component.",[215,1304,1305],{},[1306,1307,1308],"strong",{},"Suggested Changes:",[801,1310,1311,1319],{},[235,1312,1313,1314,1316,1317],{},"Your current ",[238,1315,1262],{}," logic should be moved to ",[238,1318,1259],{},[235,1320,1321,1322,1324,1325],{},"Rename your ",[238,1323,1266],{}," components to ",[238,1326,1262],{},[222,1328,1330,405,1332],{"id":1329},"_diryml-files-are-renamed-to-navigationyml",[238,1331,404],{},[238,1333,408],{},[215,1335,1336,1337,787,1339,1341,1342,1345],{},"In Content v3, we renamed ",[238,1338,404],{},[238,1340,408],{},". The new name better reflects the purpose of these files.",[1343,1344],"br",{},"\nModule uses these files to gather information about directories for generating navigation.",[215,1347,1348,1349,322,1352,1355,1356,1359],{},"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,1350,1351],{},"source: '**'",[238,1353,1354],{},"source: '**\u002F*.{md,yml}'"," will include these files\nin collection, but ",[238,1357,1358],{},"source: '**\u002F*.md'"," will not include them.",[222,1361,1363],{"id":1362},"ignore-dot-files","Ignore dot files",[215,1365,1366,1367,1369,1370,1372],{},"By default, Content v3 does not ignore dot files. If you want to ignore them, you can add ",[238,1368,445],{}," in the ",[238,1371,449],{}," option of your collection source.",[474,1374,1376],{"className":815,"code":1375,"language":509,"meta":480,"style":480},"defineCollection({\n  source: {\n    include: '**',\n    exclude: ['**\u002F.*']\n  }\n})\n",[238,1377,1378,1388,1397,1413,1431,1435],{"__ignoreMap":480},[484,1379,1380,1383,1385],{"class":486,"line":487},[484,1381,1382],{"class":532},"defineCollection",[484,1384,598],{"class":526},[484,1386,1387],{"class":490},"{\n",[484,1389,1390,1393,1395],{"class":486,"line":520},[484,1391,1392],{"class":494},"  source",[484,1394,550],{"class":490},[484,1396,586],{"class":490},[484,1398,1399,1402,1404,1406,1409,1411],{"class":486,"line":539},[484,1400,1401],{"class":494},"    include",[484,1403,550],{"class":490},[484,1405,1016],{"class":490},[484,1407,1408],{"class":508},"**",[484,1410,601],{"class":490},[484,1412,1193],{"class":490},[484,1414,1415,1418,1420,1422,1424,1427,1429],{"class":486,"line":589},[484,1416,1417],{"class":494},"    exclude",[484,1419,550],{"class":490},[484,1421,1215],{"class":526},[484,1423,601],{"class":490},[484,1425,1426],{"class":508},"**\u002F.*",[484,1428,601],{"class":490},[484,1430,1240],{"class":526},[484,1432,1433],{"class":486,"line":634},[484,1434,1245],{"class":490},[484,1436,1437,1439],{"class":486,"line":642},[484,1438,556],{"class":490},[484,1440,639],{"class":526},[215,1442,1443,1444,1446,1447,1449,1450,1453,1454,276],{},"Note that the above pattern will also exclude ",[238,1445,408],{}," file from collection. If you use ",[238,1448,408],{}," and want to keep them\nyou can use ",[238,1451,1452],{},"**\u002F.(!(navigation.yml))"," pattern to exclude all dot files except ",[238,1455,408],{},[474,1457,1459],{"className":815,"code":1458,"language":509,"meta":480,"style":480},"defineCollection({\n  source: {\n    include: '**',\n    exclude: ['**\u002F.!(navigation.yml)']\n  }\n})\n",[238,1460,1461,1469,1477,1491,1508,1512],{"__ignoreMap":480},[484,1462,1463,1465,1467],{"class":486,"line":487},[484,1464,1382],{"class":532},[484,1466,598],{"class":526},[484,1468,1387],{"class":490},[484,1470,1471,1473,1475],{"class":486,"line":520},[484,1472,1392],{"class":494},[484,1474,550],{"class":490},[484,1476,586],{"class":490},[484,1478,1479,1481,1483,1485,1487,1489],{"class":486,"line":539},[484,1480,1401],{"class":494},[484,1482,550],{"class":490},[484,1484,1016],{"class":490},[484,1486,1408],{"class":508},[484,1488,601],{"class":490},[484,1490,1193],{"class":490},[484,1492,1493,1495,1497,1499,1501,1504,1506],{"class":486,"line":589},[484,1494,1417],{"class":494},[484,1496,550],{"class":490},[484,1498,1215],{"class":526},[484,1500,601],{"class":490},[484,1502,1503],{"class":508},"**\u002F.!(navigation.yml)",[484,1505,601],{"class":490},[484,1507,1240],{"class":526},[484,1509,1510],{"class":486,"line":634},[484,1511,1245],{"class":490},[484,1513,1514,1516],{"class":486,"line":642},[484,1515,556],{"class":490},[484,1517,639],{"class":526},[1519,1520,1521],"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":1523},[1524,1530,1531,1533,1535,1537,1539],{"id":224,"depth":520,"text":225,"children":1525},[1526,1527,1528,1529],{"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":782,"depth":520,"text":1532},"Converting queryContent to queryCollections",{"id":1046,"depth":520,"text":1534},"Convert queryContent().findSurround()",{"id":1255,"depth":520,"text":1536},"Consolidate ProsePre, ProseCode, and ProseCodeInline components",{"id":1329,"depth":520,"text":1538},"_dir.yml files are renamed to .navigation.yml",{"id":1362,"depth":520,"text":1363},"How to migrate from v2 to v3","md",null,{},{"title":20,"description":1540},"f5KJ8Xc5cWU-8Te7A9z394XRZXaILcYdWY857oYkbAM",[1547,1549],{"title":16,"path":17,"stem":18,"description":1548,"children":-1},"Nuxt Content is configured with sensible defaults.",{"title":31,"path":32,"stem":33,"description":1550,"children":-1},"Learn how to define and configure content collections in your Nuxt application.",1778072771267]