[{"data":1,"prerenderedAt":1661},["ShallowReactive",2],{"navigation":3,"/docs/getting-started/migration":195,"NtdLehvC6r":1648},[4,24,43,61,83,101,135,165],{"title":5,"path":6,"stem":7,"children":8,"icon":23},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[9,11,15,19],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Installation","/docs/getting-started/installation","docs/1.getting-started/2.installation",{"title":16,"path":17,"stem":18},"Configuration","/docs/getting-started/configuration","docs/1.getting-started/3.configuration",{"title":20,"path":21,"stem":22},"Migration","/docs/getting-started/migration","docs/1.getting-started/4.migration","i-lucide-square-play",{"title":25,"icon":26,"path":27,"stem":28,"children":29,"page":42},"Collections","i-lucide-database","/docs/collections","docs/2.collections",[30,34,38],{"title":31,"path":32,"stem":33},"Define","/docs/collections/define","docs/2.collections/1.define",{"title":35,"path":36,"stem":37},"Types","/docs/collections/types","docs/2.collections/2.types",{"title":39,"path":40,"stem":41},"Sources","/docs/collections/sources","docs/2.collections/3.sources",false,{"title":44,"icon":45,"path":46,"stem":47,"children":48,"page":42},"Files","i-lucide-file","/docs/files","docs/3.files",[49,53,57],{"title":50,"path":51,"stem":52},"Markdown","/docs/files/markdown","docs/3.files/1.markdown",{"title":54,"path":55,"stem":56},"YAML","/docs/files/yaml","docs/3.files/2.yaml",{"title":58,"path":59,"stem":60},"JSON","/docs/files/json","docs/3.files/3.json",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":42},"Query Utils","i-lucide-square-function","/docs/utils","docs/4.utils",[67,71,75,79],{"title":68,"path":69,"stem":70},"queryCollection","/docs/utils/query-collection","docs/4.utils/1.query-collection",{"title":72,"path":73,"stem":74},"queryCollectionNavigation","/docs/utils/query-collection-navigation","docs/4.utils/2.query-collection-navigation",{"title":76,"path":77,"stem":78},"queryCollectionItemSurroundings","/docs/utils/query-collection-item-surroundings","docs/4.utils/3.query-collection-item-surroundings",{"title":80,"path":81,"stem":82},"queryCollectionSearchSections","/docs/utils/query-collection-search-sections","docs/4.utils/4.query-collection-search-sections",{"title":84,"icon":85,"path":86,"stem":87,"children":88,"page":42},"Components","i-lucide-square-code","/docs/components","docs/5.components",[89,93,97],{"title":90,"path":91,"stem":92},"ContentRenderer","/docs/components/content-renderer","docs/5.components/0.content-renderer",{"title":94,"path":95,"stem":96},"Slot","/docs/components/slot","docs/5.components/1.slot",{"title":98,"path":99,"stem":100},"Prose Components","/docs/components/prose","docs/5.components/2.prose",{"title":102,"icon":103,"path":104,"stem":105,"children":106,"page":42},"Deploy","i-lucide-cloud-upload","/docs/deploy","docs/6.deploy",[107,111,115,119,123,127,131],{"title":108,"path":109,"stem":110},"Server","/docs/deploy/server","docs/6.deploy/1.server",{"title":112,"path":113,"stem":114},"Serverless","/docs/deploy/serverless","docs/6.deploy/2.serverless",{"title":116,"path":117,"stem":118},"NuxtHub","/docs/deploy/nuxthub","docs/6.deploy/3.nuxthub",{"title":120,"path":121,"stem":122},"Cloudflare Pages","/docs/deploy/cloudflare-pages","docs/6.deploy/4.cloudflare-pages",{"title":124,"path":125,"stem":126},"Vercel","/docs/deploy/vercel","docs/6.deploy/5.vercel",{"title":128,"path":129,"stem":130},"Docker","/docs/deploy/docker","docs/6.deploy/6.docker",{"title":132,"path":133,"stem":134},"Static","/docs/deploy/static","docs/6.deploy/7.static",{"title":136,"icon":137,"path":138,"stem":139,"children":140,"page":42},"Advanced","i-lucide-code-xml","/docs/advanced","docs/7.advanced",[141,145,149,153,157,161],{"title":142,"path":143,"stem":144},"Full-Text Search","/docs/advanced/fulltext-search","docs/7.advanced/1.fulltext-search",{"title":146,"path":147,"stem":148},"Raw Content","/docs/advanced/raw-content","docs/7.advanced/2.raw-content",{"title":150,"path":151,"stem":152},"SQL Storage","/docs/advanced/database","docs/7.advanced/3.database",{"title":154,"path":155,"stem":156},"Debugging tools","/docs/advanced/tools","docs/7.advanced/4.tools",{"title":158,"path":159,"stem":160},"Hooks","/docs/advanced/hooks","docs/7.advanced/5.hooks",{"title":162,"path":163,"stem":164},"Custom Source","/docs/advanced/custom-source","docs/7.advanced/6.custom-source",{"title":166,"icon":167,"path":168,"stem":169,"children":170,"page":42},"Studio","i-lucide-monitor","/docs/studio","docs/8.studio",[171,175,179,183,187,191],{"title":172,"path":173,"stem":174},"Setup","/docs/studio/setup","docs/8.studio/1.setup",{"title":176,"path":177,"stem":178},"Synchronization","/docs/studio/github","docs/8.studio/2.github",{"title":180,"path":181,"stem":182},"Content editors","/docs/studio/content","docs/8.studio/3.content",{"title":184,"path":185,"stem":186},"Medias","/docs/studio/medias","docs/8.studio/4.medias",{"title":188,"path":189,"stem":190},"App Config","/docs/studio/config","docs/8.studio/5.config",{"title":192,"path":193,"stem":194},"Local Debug","/docs/studio/debug","docs/8.studio/6.debug",{"page":196,"surround":1643},{"id":197,"title":20,"body":198,"description":1638,"extension":1639,"links":1640,"meta":1641,"navigation":750,"path":21,"seo":1642,"stem":22},"docs/docs/1.getting-started/4.migration.md",{"type":199,"value":200,"toc":1619},"minimal",[201,205,208,213,218,232,238,289,292,329,349,371,374,385,389,442,446,469,564,584,588,591,878,888,897,910,993,1136,1141,1148,1151,1346,1351,1366,1378,1401,1407,1425,1432,1444,1458,1462,1471,1538,1553,1615],[202,203,204],"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.",[202,206,207],{},"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.",[209,210,212],"h2",{"id":211},"changes","Changes",[214,215,217],"h3",{"id":216},"vue-utils","Vue utils",[219,220,221],"ul",{},[222,223,224,228,229],"li",{},[225,226,227],"code",{},"queryContent()"," API is replaced with new ",[225,230,231],{},"queryCollection()",[233,234,235],"prose-tip",{},[202,236,237],{},"The new API is backed by SQL and content queries happens within a specific collection.",[219,239,240,248,254,266,272,281],{},[222,241,242,228,245],{},[225,243,244],{},"fetchContentNavigation()",[225,246,247],{},"queryCollectionNavigation()",[222,249,250,251],{},"Surroundings now has its own separate API ",[225,252,253],{},"queryCollectionItemSurroundings()",[222,255,256,257,259,260,265],{},"Document driven mode is dropped: ",[225,258,50],{}," files will not convert to Nuxt pages automatically, you need to create pages, ",[261,262,264],"a",{"href":263},"/docs/components/content-renderer#example","check this section to see how",".",[222,267,268,271],{},[225,269,270],{},"useContent()"," composable is removed",[222,273,274,277,278,280],{},[225,275,276],{},"searchContent()"," is dropped in favor of the new ",[225,279,80],{}," API",[222,282,283,284,286,287],{},"Full text search can easily be done using the ",[225,285,80],{}," API, ",[261,288,264],{"href":143},[214,290,84],{"id":291},"components",[219,293,294,316],{},[222,295,296,297,300,301,304,305,304,308,311,312,315],{},"All content should be rendered using ",[225,298,299],{},"\u003CContentRenderer>"," component. ",[225,302,303],{},"\u003CContentDoc>",", ",[225,306,307],{},"\u003CContentList>",[225,309,310],{},"\u003CContentNavigation>"," and ",[225,313,314],{},"\u003CContentQuery>"," components are dropped in v3.",[222,317,318,311,321,324,325,328],{},[225,319,320],{},"\u003CContentSlot>",[225,322,323],{},"\u003CMDCSlot>"," components are not supported in v3. Instead components can simply use Vue's native ",[225,326,327],{},"\u003Cslot>"," component",[330,331,332],"prose-note",{},[202,333,334,311,336,338,339,342,343,345,346],{},[225,335,320],{},[225,337,323],{}," was initially pro to manipulate content before rendering and removing wrapping paragraphs from slot content. This unwrapping behavior is now supported via ",[225,340,341],{},"mdc-unwrap"," attribute in ",[225,344,327],{}," component. Example: ",[225,347,348],{},"\u003Cslot mdc-unwrap=\"p\" />",[219,350,351],{},[222,352,353,354,357,358,364,365,370],{},"Components created under the ",[225,355,356],{},"components/content"," directory are no longer automatically registered as global components. If you use ",[261,359,363],{"href":360,"rel":361},"https://vuejs.org/guide/essentials/component-basics.html#dynamic-components",[362],"nofollow","dynamic rendering"," to render these components outside markdown files, you must manually register them in your Nuxt app. Check out the ",[261,366,369],{"href":367,"rel":368},"https://nuxt.com/docs/guide/directory-structure/components#custom-directories",[362],"Nuxt - Custom Components Directories"," documentation for more information on how to do so.",[214,372,35],{"id":373},"types",[219,375,376],{},[222,377,378,381,382],{},[225,379,380],{},"import type { NavItem } from '@nuxt/content/dist/runtime/types'"," is replaced with ",[225,383,384],{},"import type { ContentNavigationItem } from '@nuxt/content'",[214,386,388],{"id":387},"general","General",[219,390,391,400,410,425,431],{},[222,392,393,396,397],{},[225,394,395],{},"_dir.yml"," files are renamed to ",[225,398,399],{},".navigation.yml",[222,401,402,403,406,407,265],{},"There is no source option in module options, instead you can define ",[261,404,405],{"href":40},"multiple sources"," for your collections in ",[225,408,409],{},"content.config.ts",[222,411,412,413,416,417,420,421,424],{},"Document ",[225,414,415],{},"._path"," is now renamed to ",[225,418,419],{},".path",", likewise all internal fields with ",[225,422,423],{},"_"," prefix are removed or renamed.",[222,426,427,430],{},[225,428,429],{},"useContentHelpers()"," is removed",[222,432,433,434,437,438,441],{},"Module does not ignore dot files by default, you can ignore them by adding ",[225,435,436],{},"ignore: ['**/.*']"," in ",[225,439,440],{},"exclude"," options of your collection source.",[214,443,445],{"id":444},"nuxt-studio-integration","Nuxt Studio integration",[219,447,448],{},[222,449,450,451,456,457,460,461,464,465,468],{},"The ",[261,452,455],{"href":453,"rel":454},"https://nuxt.studio",[362],"studio module"," has been deprecated and a new generic ",[225,458,459],{},"Preview API"," has been implemented directly into Nuxt Content, you can remove the ",[225,462,463],{},"@nuxthq/studio"," package from your dependencies and from the ",[225,466,467],{},"nuxt.config.ts"," modules. Instead we just need to enable the preview mode in the Nuxt configuration file by binding the Studio API.",[470,471,476],"pre",{"className":472,"code":473,"filename":467,"language":474,"meta":475,"style":475},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  content: {\n    preview: {\n      api: 'https://api.nuxt.studio'\n    }\n  },\n})\n","ts","",[225,477,478,502,515,525,543,549,555],{"__ignoreMap":475},[479,480,483,487,490,494,498],"span",{"class":481,"line":482},"line",1,[479,484,486],{"class":485},"s8pZq","export",[479,488,489],{"class":485}," default",[479,491,493],{"class":492},"swgpB"," defineNuxtConfig",[479,495,497],{"class":496},"sndM8","(",[479,499,501],{"class":500},"s86vT","{\n",[479,503,505,509,512],{"class":481,"line":504},2,[479,506,508],{"class":507},"sd2Uz","  content",[479,510,511],{"class":500},":",[479,513,514],{"class":500}," {\n",[479,516,518,521,523],{"class":481,"line":517},3,[479,519,520],{"class":507},"    preview",[479,522,511],{"class":500},[479,524,514],{"class":500},[479,526,528,531,533,536,540],{"class":481,"line":527},4,[479,529,530],{"class":507},"      api",[479,532,511],{"class":500},[479,534,535],{"class":500}," '",[479,537,539],{"class":538},"sIEYB","https://api.nuxt.studio",[479,541,542],{"class":500},"'\n",[479,544,546],{"class":481,"line":545},5,[479,547,548],{"class":500},"    }\n",[479,550,552],{"class":481,"line":551},6,[479,553,554],{"class":500},"  },\n",[479,556,558,561],{"class":481,"line":557},7,[479,559,560],{"class":500},"}",[479,562,563],{"class":496},")\n",[219,565,566],{},[222,567,568,569,572,573,576,577,580,581,265],{},"In order to keep the ",[261,570,571],{"href":189},"app config file"," updatable from Studio we just need to update the helper import of the ",[225,574,575],{},"nuxt.schema.ts"," file from ",[225,578,579],{},"@nuxthq/studio/theme"," to ",[225,582,583],{},"@nuxt/content/preview",[209,585,587],{"id":586},"implement-document-driven-mode-in-v3","Implement Document Driven mode in v3",[202,589,590],{},"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.",[470,592,597],{"className":593,"code":594,"filename":595,"language":596,"meta":475,"style":475},"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/script>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cheader>\u003C!-- ... -->\u003C/header>\n\n    \u003CContentRenderer v-if=\"page\" :value=\"page\" />\n\n    \u003Cfooter>\u003C!-- ... -->\u003C/footer>\n  \u003C/div>\n\u003C/template>\n","pages/[...slug].vue","vue",[225,598,599,627,643,688,731,737,746,752,762,773,795,800,836,841,859,869],{"__ignoreMap":475},[479,600,601,604,607,611,614,617,619,621,624],{"class":481,"line":482},[479,602,603],{"class":500},"\u003C",[479,605,606],{"class":507},"script",[479,608,610],{"class":609},"s50WR"," lang",[479,612,613],{"class":500},"=",[479,615,616],{"class":500},"\"",[479,618,474],{"class":538},[479,620,616],{"class":500},[479,622,623],{"class":609}," setup",[479,625,626],{"class":500},">\n",[479,628,629,632,635,637,640],{"class":481,"line":504},[479,630,631],{"class":609},"const",[479,633,634],{"class":496}," route ",[479,636,613],{"class":500},[479,638,639],{"class":492}," useRoute",[479,641,642],{"class":496},"()\n",[479,644,645,647,650,653,655,658,660,663,666,669,672,674,677,680,683,686],{"class":481,"line":517},[479,646,631],{"class":609},[479,648,649],{"class":500}," {",[479,651,652],{"class":507}," data",[479,654,511],{"class":500},[479,656,657],{"class":496}," page ",[479,659,560],{"class":500},[479,661,662],{"class":500}," =",[479,664,665],{"class":485}," await",[479,667,668],{"class":492}," useAsyncData",[479,670,671],{"class":496},"(route",[479,673,265],{"class":500},[479,675,676],{"class":496},"path",[479,678,679],{"class":500},",",[479,681,682],{"class":500}," ()",[479,684,685],{"class":609}," =>",[479,687,514],{"class":500},[479,689,690,693,696,698,701,704,706,709,711,713,715,718,720,722,724,726,729],{"class":481,"line":527},[479,691,692],{"class":485},"  return",[479,694,695],{"class":492}," queryCollection",[479,697,497],{"class":507},[479,699,700],{"class":500},"'",[479,702,703],{"class":538},"content",[479,705,700],{"class":500},[479,707,708],{"class":507},")",[479,710,265],{"class":500},[479,712,676],{"class":492},[479,714,497],{"class":507},[479,716,717],{"class":496},"route",[479,719,265],{"class":500},[479,721,676],{"class":496},[479,723,708],{"class":507},[479,725,265],{"class":500},[479,727,728],{"class":492},"first",[479,730,642],{"class":507},[479,732,733,735],{"class":481,"line":545},[479,734,560],{"class":500},[479,736,563],{"class":496},[479,738,739,742,744],{"class":481,"line":551},[479,740,741],{"class":500},"\u003C/",[479,743,606],{"class":507},[479,745,626],{"class":500},[479,747,748],{"class":481,"line":557},[479,749,751],{"emptyLinePlaceholder":750},true,"\n",[479,753,755,757,760],{"class":481,"line":754},8,[479,756,603],{"class":500},[479,758,759],{"class":507},"template",[479,761,626],{"class":500},[479,763,765,768,771],{"class":481,"line":764},9,[479,766,767],{"class":500},"  \u003C",[479,769,770],{"class":507},"div",[479,772,626],{"class":500},[479,774,776,779,782,785,789,791,793],{"class":481,"line":775},10,[479,777,778],{"class":500},"    \u003C",[479,780,781],{"class":507},"header",[479,783,784],{"class":500},">",[479,786,788],{"class":787},"syuKq","\u003C!-- ... -->",[479,790,741],{"class":500},[479,792,781],{"class":507},[479,794,626],{"class":500},[479,796,798],{"class":481,"line":797},11,[479,799,751],{"emptyLinePlaceholder":750},[479,801,803,805,807,810,812,814,817,819,822,825,827,829,831,833],{"class":481,"line":802},12,[479,804,778],{"class":500},[479,806,90],{"class":507},[479,808,809],{"class":485}," v-if",[479,811,613],{"class":500},[479,813,616],{"class":500},[479,815,816],{"class":496},"page",[479,818,616],{"class":500},[479,820,821],{"class":500}," :",[479,823,824],{"class":609},"value",[479,826,613],{"class":500},[479,828,616],{"class":500},[479,830,816],{"class":496},[479,832,616],{"class":500},[479,834,835],{"class":500}," />\n",[479,837,839],{"class":481,"line":838},13,[479,840,751],{"emptyLinePlaceholder":750},[479,842,844,846,849,851,853,855,857],{"class":481,"line":843},14,[479,845,778],{"class":500},[479,847,848],{"class":507},"footer",[479,850,784],{"class":500},[479,852,788],{"class":787},[479,854,741],{"class":500},[479,856,848],{"class":507},[479,858,626],{"class":500},[479,860,862,865,867],{"class":481,"line":861},15,[479,863,864],{"class":500},"  \u003C/",[479,866,770],{"class":507},[479,868,626],{"class":500},[479,870,872,874,876],{"class":481,"line":871},16,[479,873,741],{"class":500},[479,875,759],{"class":507},[479,877,626],{"class":500},[209,879,881,882,580,885],{"id":880},"converting-querycontent-to-querycollections","Converting ",[225,883,884],{},"queryContent",[225,886,887],{},"queryCollections",[202,889,890,891,893,894,896],{},"As we mentioned above, ",[225,892,884],{}," is dropped in favor of new collection based ",[225,895,68],{},". There are two main differences between these two:",[898,899,900,905],"ol",{},[222,901,902,904],{},[225,903,68],{}," is building a query for an SQL database.",[222,906,907,909],{},[225,908,68],{}," does the search only inside the specified collection. You should know the collection's name (key on config).",[470,911,914],{"className":472,"code":912,"filename":913,"language":474,"meta":475,"style":475},"// Content v2\nconst v2Query = await queryContent(route.path).findOne()\n// 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",[225,915,916,921,949,954],{"__ignoreMap":475},[479,917,918],{"class":481,"line":482},[479,919,920],{"class":787},"// Content v2\n",[479,922,923,925,928,930,932,935,937,939,942,944,947],{"class":481,"line":504},[479,924,631],{"class":609},[479,926,927],{"class":496}," v2Query ",[479,929,613],{"class":500},[479,931,665],{"class":485},[479,933,934],{"class":492}," queryContent",[479,936,671],{"class":496},[479,938,265],{"class":500},[479,940,941],{"class":496},"path)",[479,943,265],{"class":500},[479,945,946],{"class":492},"findOne",[479,948,642],{"class":496},[479,950,951],{"class":481,"line":517},[479,952,953],{"class":787},"// Content v3 - don't forget to create `content` collection in `content.config.ts`\n",[479,955,956,958,961,963,965,967,969,971,973,975,977,979,981,983,985,987,989,991],{"class":481,"line":527},[479,957,631],{"class":609},[479,959,960],{"class":496}," v3Query ",[479,962,613],{"class":500},[479,964,665],{"class":485},[479,966,695],{"class":492},[479,968,497],{"class":496},[479,970,700],{"class":500},[479,972,703],{"class":538},[479,974,700],{"class":500},[479,976,708],{"class":496},[479,978,265],{"class":500},[479,980,676],{"class":492},[479,982,671],{"class":496},[479,984,265],{"class":500},[479,986,941],{"class":496},[479,988,265],{"class":500},[479,990,728],{"class":492},[479,992,642],{"class":496},[470,994,997],{"className":472,"code":995,"filename":996,"language":474,"meta":475,"style":475},"// Content v2\nconst v2Query = await queryContent()\n  .where({ path: /^\\/hello\\/.*/ })\n  .find()\n// Content v3 - don't forget to create `content` collection in `content.config.ts`\nconst v3Query = await queryCollection('content')\n  .where('path', 'LIKE', '/hello%')\n  .first()\n","Find contents with custom filter",[225,998,999,1003,1017,1059,1068,1072,1094,1128],{"__ignoreMap":475},[479,1000,1001],{"class":481,"line":482},[479,1002,920],{"class":787},[479,1004,1005,1007,1009,1011,1013,1015],{"class":481,"line":504},[479,1006,631],{"class":609},[479,1008,927],{"class":496},[479,1010,613],{"class":500},[479,1012,665],{"class":485},[479,1014,934],{"class":492},[479,1016,642],{"class":496},[479,1018,1019,1022,1025,1027,1030,1033,1035,1038,1041,1044,1047,1049,1051,1054,1057],{"class":481,"line":517},[479,1020,1021],{"class":500},"  .",[479,1023,1024],{"class":492},"where",[479,1026,497],{"class":496},[479,1028,1029],{"class":500},"{",[479,1031,1032],{"class":507}," path",[479,1034,511],{"class":500},[479,1036,1037],{"class":500}," /",[479,1039,1040],{"class":485},"^",[479,1042,1043],{"class":496},"\\/",[479,1045,1046],{"class":538},"hello",[479,1048,1043],{"class":496},[479,1050,265],{"class":538},[479,1052,1053],{"class":500},"*/",[479,1055,1056],{"class":500}," }",[479,1058,563],{"class":496},[479,1060,1061,1063,1066],{"class":481,"line":527},[479,1062,1021],{"class":500},[479,1064,1065],{"class":492},"find",[479,1067,642],{"class":496},[479,1069,1070],{"class":481,"line":545},[479,1071,953],{"class":787},[479,1073,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092],{"class":481,"line":551},[479,1075,631],{"class":609},[479,1077,960],{"class":496},[479,1079,613],{"class":500},[479,1081,665],{"class":485},[479,1083,695],{"class":492},[479,1085,497],{"class":496},[479,1087,700],{"class":500},[479,1089,703],{"class":538},[479,1091,700],{"class":500},[479,1093,563],{"class":496},[479,1095,1096,1098,1100,1102,1104,1106,1108,1110,1112,1115,1117,1119,1121,1124,1126],{"class":481,"line":557},[479,1097,1021],{"class":500},[479,1099,1024],{"class":492},[479,1101,497],{"class":496},[479,1103,700],{"class":500},[479,1105,676],{"class":538},[479,1107,700],{"class":500},[479,1109,679],{"class":500},[479,1111,535],{"class":500},[479,1113,1114],{"class":538},"LIKE",[479,1116,700],{"class":500},[479,1118,679],{"class":500},[479,1120,535],{"class":500},[479,1122,1123],{"class":538},"/hello%",[479,1125,700],{"class":500},[479,1127,563],{"class":496},[479,1129,1130,1132,1134],{"class":481,"line":754},[479,1131,1021],{"class":500},[479,1133,728],{"class":492},[479,1135,642],{"class":496},[330,1137,1138],{"to":32},[202,1139,1140],{},"Check the dedicated section for more info about collections",[209,1142,1144,1145],{"id":1143},"convert-querycontentfindsurround","Convert ",[225,1146,1147],{},"queryContent().findSurround()",[202,1149,1150],{},"Surround now has its own separate API.",[470,1152,1154],{"className":472,"code":1153,"language":474,"meta":475,"style":475},"const targetPath = '/docs'\n\n// Content v2\nconst v2Surround = await queryContent(targetPath)\n  .only(['title', 'description', 'navigation'])\n  .findSurround(withoutTrailingSlash(route.path))\n\n// 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",[225,1155,1156,1172,1176,1180,1196,1234,1253,1257,1261,1278,1290,1297,1302,1337,1342],{"__ignoreMap":475},[479,1157,1158,1160,1163,1165,1167,1170],{"class":481,"line":482},[479,1159,631],{"class":609},[479,1161,1162],{"class":496}," targetPath ",[479,1164,613],{"class":500},[479,1166,535],{"class":500},[479,1168,1169],{"class":538},"/docs",[479,1171,542],{"class":500},[479,1173,1174],{"class":481,"line":504},[479,1175,751],{"emptyLinePlaceholder":750},[479,1177,1178],{"class":481,"line":517},[479,1179,920],{"class":787},[479,1181,1182,1184,1187,1189,1191,1193],{"class":481,"line":527},[479,1183,631],{"class":609},[479,1185,1186],{"class":496}," v2Surround ",[479,1188,613],{"class":500},[479,1190,665],{"class":485},[479,1192,934],{"class":492},[479,1194,1195],{"class":496},"(targetPath)\n",[479,1197,1198,1200,1203,1206,1208,1211,1213,1215,1217,1220,1222,1224,1226,1229,1231],{"class":481,"line":545},[479,1199,1021],{"class":500},[479,1201,1202],{"class":492},"only",[479,1204,1205],{"class":496},"([",[479,1207,700],{"class":500},[479,1209,1210],{"class":538},"title",[479,1212,700],{"class":500},[479,1214,679],{"class":500},[479,1216,535],{"class":500},[479,1218,1219],{"class":538},"description",[479,1221,700],{"class":500},[479,1223,679],{"class":500},[479,1225,535],{"class":500},[479,1227,1228],{"class":538},"navigation",[479,1230,700],{"class":500},[479,1232,1233],{"class":496},"])\n",[479,1235,1236,1238,1241,1243,1246,1248,1250],{"class":481,"line":551},[479,1237,1021],{"class":500},[479,1239,1240],{"class":492},"findSurround",[479,1242,497],{"class":496},[479,1244,1245],{"class":492},"withoutTrailingSlash",[479,1247,671],{"class":496},[479,1249,265],{"class":500},[479,1251,1252],{"class":496},"path))\n",[479,1254,1255],{"class":481,"line":557},[479,1256,751],{"emptyLinePlaceholder":750},[479,1258,1259],{"class":481,"line":754},[479,1260,953],{"class":787},[479,1262,1263,1265,1268,1270,1272,1275],{"class":481,"line":764},[479,1264,631],{"class":609},[479,1266,1267],{"class":496}," v3Surround ",[479,1269,613],{"class":500},[479,1271,665],{"class":485},[479,1273,1274],{"class":492}," queryCollectionItemSurroundings",[479,1276,1277],{"class":496},"(\n",[479,1279,1280,1283,1285,1287],{"class":481,"line":775},[479,1281,1282],{"class":500},"  '",[479,1284,703],{"class":538},[479,1286,700],{"class":500},[479,1288,1289],{"class":500},",\n",[479,1291,1292,1295],{"class":481,"line":797},[479,1293,1294],{"class":496},"  targetPath",[479,1296,1289],{"class":500},[479,1298,1299],{"class":481,"line":802},[479,1300,1301],{"class":500},"  {\n",[479,1303,1304,1307,1309,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334],{"class":481,"line":838},[479,1305,1306],{"class":507},"    fields",[479,1308,511],{"class":500},[479,1310,1311],{"class":496}," [",[479,1313,700],{"class":500},[479,1315,1210],{"class":538},[479,1317,700],{"class":500},[479,1319,679],{"class":500},[479,1321,535],{"class":500},[479,1323,1219],{"class":538},[479,1325,700],{"class":500},[479,1327,679],{"class":500},[479,1329,535],{"class":500},[479,1331,1228],{"class":538},[479,1333,700],{"class":500},[479,1335,1336],{"class":496},"]\n",[479,1338,1339],{"class":481,"line":843},[479,1340,1341],{"class":500},"  }\n",[479,1343,1344],{"class":481,"line":861},[479,1345,563],{"class":496},[330,1347,1348],{},[202,1349,1350],{},"Check the dedicated section for more information about the",[209,1352,1354,1355,304,1358,1361,1362,1365],{"id":1353},"consolidate-prosepre-prosecode-and-prosecodeinline-components","Consolidate ",[225,1356,1357],{},"ProsePre",[225,1359,1360],{},"ProseCode",", and ",[225,1363,1364],{},"ProseCodeInline"," components",[202,1367,1368,1369,1371,1372,1374,1375,1377],{},"Many ",[225,1370,1357],{}," components are thin wrappers around the ",[225,1373,1360],{}," component. We've consolidated these three components into two components. There is now no difference between ",[225,1376,1357],{}," and multi-line code blocks.",[898,1379,1380,1392],{},[222,1381,1382,1383,1386,1387,1389,1390,265],{},"MDC will now map and parse single backticks ",[225,1384,1385],{},"`"," as ",[225,1388,1360],{}," instead of ",[225,1391,1364],{},[222,1393,1394,1395,1386,1398,1400],{},"MDC will now map and parse block code starting with three backticks",[225,1396,1397],{},"```",[225,1399,1357],{}," component.",[202,1402,1403],{},[1404,1405,1406],"strong",{},"Suggested Changes:",[898,1408,1409,1417],{},[222,1410,1411,1412,1414,1415],{},"Your current ",[225,1413,1360],{}," logic should be moved to ",[225,1416,1357],{},[222,1418,1419,1420,1422,1423],{},"Rename your ",[225,1421,1364],{}," components to ",[225,1424,1360],{},[209,1426,1428,396,1430],{"id":1427},"_diryml-files-are-renamed-to-navigationyml",[225,1429,395],{},[225,1431,399],{},[202,1433,1434,1435,580,1437,1439,1440,1443],{},"In Content v3, we renamed ",[225,1436,395],{},[225,1438,399],{},". The new name better reflects the purpose of these files.",[1441,1442],"br",{},"\nModule uses these files to gather information about directories for generating navigation.",[202,1445,1446,1447,311,1450,1453,1454,1457],{},"Note that in order to make these files available for Module, youe should define your collection's source in\na way that includes these files. For example ",[225,1448,1449],{},"source: '**'",[225,1451,1452],{},"source: '**/*.{md|yml}"," will include these files\nin collection, but ",[225,1455,1456],{},"source: '**/*.md'"," will not include them.",[209,1459,1461],{"id":1460},"ignore-dot-files","Ignore dot files",[202,1463,1464,1465,1467,1468,1470],{},"By default, Content v3 does not ignore dot files. If you want to ignore them, you can add ",[225,1466,436],{}," in the ",[225,1469,440],{}," option of your collection source.",[470,1472,1474],{"className":472,"code":1473,"language":474,"meta":475,"style":475},"defineCollection({\n  source: {\n    include: '**',\n    exclude: ['**/.*']\n  }\n})\n",[225,1475,1476,1485,1494,1510,1528,1532],{"__ignoreMap":475},[479,1477,1478,1481,1483],{"class":481,"line":482},[479,1479,1480],{"class":492},"defineCollection",[479,1482,497],{"class":496},[479,1484,501],{"class":500},[479,1486,1487,1490,1492],{"class":481,"line":504},[479,1488,1489],{"class":507},"  source",[479,1491,511],{"class":500},[479,1493,514],{"class":500},[479,1495,1496,1499,1501,1503,1506,1508],{"class":481,"line":517},[479,1497,1498],{"class":507},"    include",[479,1500,511],{"class":500},[479,1502,535],{"class":500},[479,1504,1505],{"class":538},"**",[479,1507,700],{"class":500},[479,1509,1289],{"class":500},[479,1511,1512,1515,1517,1519,1521,1524,1526],{"class":481,"line":527},[479,1513,1514],{"class":507},"    exclude",[479,1516,511],{"class":500},[479,1518,1311],{"class":496},[479,1520,700],{"class":500},[479,1522,1523],{"class":538},"**/.*",[479,1525,700],{"class":500},[479,1527,1336],{"class":496},[479,1529,1530],{"class":481,"line":545},[479,1531,1341],{"class":500},[479,1533,1534,1536],{"class":481,"line":551},[479,1535,560],{"class":500},[479,1537,563],{"class":496},[202,1539,1540,1541,1543,1544,1546,1547,1550,1551,265],{},"Note that the above pattern will also excldue ",[225,1542,399],{}," file from collection. If you use ",[225,1545,399],{}," and want to keep them\nyou can use ",[225,1548,1549],{},"**/.(!(navigation.yml))"," patter to exclude all dot files except ",[225,1552,399],{},[470,1554,1556],{"className":472,"code":1555,"language":474,"meta":475,"style":475},"defineCollection({\n  source: {\n    include: '**',\n    exclude: ['**/.!(navigation.yml)']\n  }\n})\n",[225,1557,1558,1566,1574,1588,1605,1609],{"__ignoreMap":475},[479,1559,1560,1562,1564],{"class":481,"line":482},[479,1561,1480],{"class":492},[479,1563,497],{"class":496},[479,1565,501],{"class":500},[479,1567,1568,1570,1572],{"class":481,"line":504},[479,1569,1489],{"class":507},[479,1571,511],{"class":500},[479,1573,514],{"class":500},[479,1575,1576,1578,1580,1582,1584,1586],{"class":481,"line":517},[479,1577,1498],{"class":507},[479,1579,511],{"class":500},[479,1581,535],{"class":500},[479,1583,1505],{"class":538},[479,1585,700],{"class":500},[479,1587,1289],{"class":500},[479,1589,1590,1592,1594,1596,1598,1601,1603],{"class":481,"line":527},[479,1591,1514],{"class":507},[479,1593,511],{"class":500},[479,1595,1311],{"class":496},[479,1597,700],{"class":500},[479,1599,1600],{"class":538},"**/.!(navigation.yml)",[479,1602,700],{"class":500},[479,1604,1336],{"class":496},[479,1606,1607],{"class":481,"line":545},[479,1608,1341],{"class":500},[479,1610,1611,1613],{"class":481,"line":551},[479,1612,560],{"class":500},[479,1614,563],{"class":496},[1616,1617,1618],"style",{},"html pre.shiki code .s8pZq, html code.shiki .s8pZq{--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 .swgpB, html code.shiki .swgpB{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sndM8, html code.shiki .sndM8{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s86vT, html code.shiki .s86vT{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sd2Uz, html code.shiki .sd2Uz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sIEYB, html code.shiki .sIEYB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}html pre.shiki code .s50WR, html code.shiki .s50WR{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .syuKq, html code.shiki .syuKq{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":475,"searchDepth":527,"depth":527,"links":1620},[1621,1628,1629,1631,1633,1635,1637],{"id":211,"depth":504,"text":212,"children":1622},[1623,1624,1625,1626,1627],{"id":216,"depth":517,"text":217},{"id":291,"depth":517,"text":84},{"id":373,"depth":517,"text":35},{"id":387,"depth":517,"text":388},{"id":444,"depth":517,"text":445},{"id":586,"depth":504,"text":587},{"id":880,"depth":504,"text":1630},"Converting queryContent to queryCollections",{"id":1143,"depth":504,"text":1632},"Convert queryContent().findSurround()",{"id":1353,"depth":504,"text":1634},"Consolidate ProsePre, ProseCode, and ProseCodeInline components",{"id":1427,"depth":504,"text":1636},"_dir.yml files are renamed to .navigation.yml",{"id":1460,"depth":504,"text":1461},"How to migrate from v2 to v3","md",null,{},{"title":20,"description":1638},[1644,1646],{"title":16,"path":17,"stem":18,"description":1645,"children":-1},"Nuxt Content is configured with sensible defaults.",{"title":31,"path":32,"stem":33,"description":1647,"children":-1},"Learn how to define and configure content collections in your Nuxt application.",{"data":1649,"body":1650,"excerpt":-1,"toc":1659},{"title":475,"description":1638},{"type":1651,"children":1652},"root",[1653],{"type":1654,"tag":202,"props":1655,"children":1656},"element",{},[1657],{"type":1658,"value":1638},"text",{"title":475,"searchDepth":504,"depth":504,"links":1660},[],1740061576594]