[{"data":1,"prerenderedAt":712},["ShallowReactive",2],{"navigation_docs":3,"-api-composables":81,"-api-composables-surround":708},[4,27,41,67],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration",{"title":23,"path":24,"stem":25},"Directory Structure","\u002Fgetting-started\u002Fdirectory-structure","1.getting-started\u002F4.directory-structure",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Routing","i-lucide-route","\u002Frouting","2.routing",[33,37],{"title":34,"path":35,"stem":36},"Parallel Routes","\u002Frouting\u002Fparallel-routes","2.routing\u002F1.parallel-routes",{"title":38,"path":39,"stem":40},"Modal Routes","\u002Frouting\u002Fmodal-routes","2.routing\u002F2.modal-routes",{"title":42,"icon":43,"path":44,"stem":45,"children":46,"page":26},"Components","i-lucide-blocks","\u002Fcomponents","3.components",[47,51,55,59,63],{"title":48,"path":49,"stem":50},"\u003CPlusParallelPage \u002F>","\u002Fcomponents\u002Fplus-parallel-page","3.components\u002F1.plus-parallel-page",{"title":52,"path":53,"stem":54},"\u003CPlusModalApp \u002F>","\u002Fcomponents\u002Fplus-modal-app","3.components\u002F2.plus-modal-app",{"title":56,"path":57,"stem":58},"\u003CPlusModalNuxtPage \u002F>","\u002Fcomponents\u002Fplus-modal-nuxt-page","3.components\u002F3.plus-modal-nuxt-page",{"title":60,"path":61,"stem":62},"\u003CPlusModalPage \u002F>","\u002Fcomponents\u002Fplus-modal-page","3.components\u002F4.plus-modal-page",{"title":64,"path":65,"stem":66},"\u003CPlusModalLink \u002F>","\u002Fcomponents\u002Fplus-modal-link","3.components\u002F5.plus-modal-link",{"title":68,"icon":69,"path":70,"stem":71,"children":72,"page":26},"API","i-lucide-braces","\u002Fapi","4.api",[73,77],{"title":74,"path":75,"stem":76},"Composables","\u002Fapi\u002Fcomposables","4.api\u002F2.composables",{"title":78,"path":79,"stem":80},"Interfaces","\u002Fapi\u002Finterfaces","4.api\u002F3.interfaces",{"id":82,"title":74,"body":83,"description":164,"extension":703,"links":704,"meta":705,"navigation":612,"path":75,"seo":706,"stem":76,"__hash__":707},"docs\u002F4.api\u002F2.composables.md",{"type":84,"value":85,"toc":692},"minimark",[86,94,106,126,132,145,157,246,252,264,271,329,335,344,351,409,415,427,439,445,455,468,474,491,497,525,535,538,544,558,564,567,682,688],[87,88,90],"h2",{"id":89},"usemodalrouter",[91,92,93],"code",{},"useModalRouter",[95,96,97,98,105],"p",{},"Get the global modal router object. Returns a ",[99,100,102],"a",{"href":101},"\u002Fapi\u002Finterfaces#modalrouter",[91,103,104],{},"ModalRouter"," object.",[95,107,108,109,112,113,116,117,125],{},"You can also access it by ",[91,110,111],{},"$modalRouter"," in ",[91,114,115],{},"\u003Ctemplate>"," or ",[99,118,122],{"href":119,"rel":120},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app",[121],"nofollow",[91,123,124],{},"useNuxtApp",".",[87,127,129],{"id":128},"useparallelrouter",[91,130,131],{},"useParallelRouter",[95,133,134,135,141,142,125],{},"Gets the current component's parent parallel router and returns a ",[99,136,138],{"href":137},"\u002Fapi\u002Finterfaces#parallelrouter",[91,139,140],{},"ParallelRouter"," object. If the copmonent is inside global router, it will return ",[91,143,144],{},"undefined",[146,147,148,149,156],"warning",{},"This composables calls ",[99,150,153],{"href":151,"rel":152},"https:\u002F\u002Fvuejs.org\u002Fguide\u002Fcomponents\u002Fprovide-inject#inject",[121],[91,154,155],{},"inject"," so that it can only be used inside setup or functional components.",[158,159,165],"pre",{"className":160,"code":161,"filename":162,"language":163,"meta":164,"style":164},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup>\nconst parentRouter = useParallelRouter()\nconsole.log(parentRouter.currentRoute.value.fullPath)\n\u003C\u002Fscript>\n","pages\u002F@foo\u002FTheFoo.vue","html","",[91,166,167,187,207,236],{"__ignoreMap":164},[168,169,172,176,180,184],"span",{"class":170,"line":171},"line",1,[168,173,175],{"class":174},"sMK4o","\u003C",[168,177,179],{"class":178},"swJcz","script",[168,181,183],{"class":182},"spNyl"," setup",[168,185,186],{"class":174},">\n",[168,188,190,193,197,200,204],{"class":170,"line":189},2,[168,191,192],{"class":182},"const",[168,194,196],{"class":195},"sTEyZ"," parentRouter ",[168,198,199],{"class":174},"=",[168,201,203],{"class":202},"s2Zo4"," useParallelRouter",[168,205,206],{"class":195},"()\n",[168,208,210,213,215,218,221,223,226,228,231,233],{"class":170,"line":209},3,[168,211,212],{"class":195},"console",[168,214,125],{"class":174},[168,216,217],{"class":202},"log",[168,219,220],{"class":195},"(parentRouter",[168,222,125],{"class":174},[168,224,225],{"class":195},"currentRoute",[168,227,125],{"class":174},[168,229,230],{"class":195},"value",[168,232,125],{"class":174},[168,234,235],{"class":195},"fullPath)\n",[168,237,239,242,244],{"class":170,"line":238},4,[168,240,241],{"class":174},"\u003C\u002F",[168,243,179],{"class":178},[168,245,186],{"class":174},[87,247,249],{"id":248},"useparallelroute",[91,250,251],{},"useParallelRoute",[95,253,254,255,141,262,125],{},"Gets the current component's parent parallel router's route and returns a ",[99,256,259],{"href":257,"rel":258},"https:\u002F\u002Frouter.vuejs.org\u002Fapi\u002Finterfaces\u002FRouteLocationNormalizedLoaded.html#Interface-RouteLocationNormalizedLoaded",[121],[91,260,261],{},"RouteLocationNormalizedLoaded",[91,263,144],{},[146,265,148,266,156],{},[99,267,269],{"href":151,"rel":268},[121],[91,270,155],{},[158,272,274],{"className":160,"code":273,"filename":162,"language":163,"meta":164,"style":164},"\u003Cscript setup>\nconst parentRouter = useParallelRoute()\nconsole.log(parentRouter.currentRoute.value.fullPath)\n\u003C\u002Fscript>\n",[91,275,276,286,299,321],{"__ignoreMap":164},[168,277,278,280,282,284],{"class":170,"line":171},[168,279,175],{"class":174},[168,281,179],{"class":178},[168,283,183],{"class":182},[168,285,186],{"class":174},[168,287,288,290,292,294,297],{"class":170,"line":189},[168,289,192],{"class":182},[168,291,196],{"class":195},[168,293,199],{"class":174},[168,295,296],{"class":202}," useParallelRoute",[168,298,206],{"class":195},[168,300,301,303,305,307,309,311,313,315,317,319],{"class":170,"line":209},[168,302,212],{"class":195},[168,304,125],{"class":174},[168,306,217],{"class":202},[168,308,220],{"class":195},[168,310,125],{"class":174},[168,312,225],{"class":195},[168,314,125],{"class":174},[168,316,230],{"class":195},[168,318,125],{"class":174},[168,320,235],{"class":195},[168,322,323,325,327],{"class":170,"line":238},[168,324,241],{"class":174},[168,326,179],{"class":178},[168,328,186],{"class":174},[87,330,332],{"id":331},"useparentroutername",[91,333,334],{},"useParentRouterName",[95,336,337,338,341,342,125],{},"Gets the current component's parent parallel router name in the ",[91,339,340],{},"MaybeRef\u003Cstring>"," type. If the copmonent is inside the global router, it will return ",[91,343,144],{},[146,345,148,346,156],{},[99,347,349],{"href":151,"rel":348},[121],[91,350,155],{},[158,352,354],{"className":160,"code":353,"filename":162,"language":163,"meta":164,"style":164},"\u003Cscript setup>\nconst parentRouterName = useParentRouterName()\nconsole.log(unref(parentRouterName)) \u002F\u002F 'foo'\n\u003C\u002Fscript>\n",[91,355,356,366,380,401],{"__ignoreMap":164},[168,357,358,360,362,364],{"class":170,"line":171},[168,359,175],{"class":174},[168,361,179],{"class":178},[168,363,183],{"class":182},[168,365,186],{"class":174},[168,367,368,370,373,375,378],{"class":170,"line":189},[168,369,192],{"class":182},[168,371,372],{"class":195}," parentRouterName ",[168,374,199],{"class":174},[168,376,377],{"class":202}," useParentRouterName",[168,379,206],{"class":195},[168,381,382,384,386,388,391,394,397],{"class":170,"line":209},[168,383,212],{"class":195},[168,385,125],{"class":174},[168,387,217],{"class":202},[168,389,390],{"class":195},"(",[168,392,393],{"class":202},"unref",[168,395,396],{"class":195},"(parentRouterName)) ",[168,398,400],{"class":399},"sHwdD","\u002F\u002F 'foo'\n",[168,402,403,405,407],{"class":170,"line":238},[168,404,241],{"class":174},[168,406,179],{"class":178},[168,408,186],{"class":174},[87,410,412],{"id":411},"useparallelrouters",[91,413,414],{},"useParallelRouters",[95,416,417,418,421,422,426],{},"Get all of the parallel routers in the application. Returns a ",[91,419,420],{},"Record"," of ",[99,423,424],{"href":137},[91,425,140],{}," objects, each identified by a unique router name key.",[95,428,108,429,112,432,116,434,125],{},[91,430,431],{},"$parallelRouters",[91,433,115],{},[99,435,437],{"href":119,"rel":436},[121],[91,438,124],{},[87,440,442],{"id":441},"useparallelroutes",[91,443,444],{},"useParallelRoutes",[95,446,447,448,421,450,426],{},"Get all of the parallel routers' routes in the application. Returns a ",[91,449,420],{},[99,451,453],{"href":257,"rel":452},[121],[91,454,261],{},[95,456,457,458,112,461,116,463,125],{},"You can also access it by using ",[91,459,460],{},"$parallelRoutes",[91,462,115],{},[99,464,466],{"href":119,"rel":465},[121],[91,467,124],{},[87,469,471],{"id":470},"useparentrouter",[91,472,473],{},"useParentRouter",[95,475,476,477,482,483,490],{},"Same as ",[99,478,480],{"href":479},"#useparallelrouter",[91,481,131],{}," but returns the global ",[99,484,487],{"href":485,"rel":486},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-router",[121],[91,488,489],{},"useRouter()"," if the component is inside the global router.",[87,492,494],{"id":493},"useparentroute",[91,495,496],{},"useParentRoute",[95,498,499,500,503,504,507,508,510,511,516,517,524],{},"When the ",[91,501,502],{},"route"," prop on ",[91,505,506],{},"\u003CPlusParallelPage>"," is omitted or ",[91,509,144],{},", returns the same reactive object as ",[99,512,514],{"href":513},"#useparallelroute",[91,515,251],{},", or the global ",[99,518,521],{"href":519,"rel":520},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-route",[121],[91,522,523],{},"useRoute()"," outside a parallel outlet.",[95,526,527,528,530,531,534],{},"When ",[91,529,502],{}," contains an explicit route, follows that outlet's rendered route instead. This also supports setting or clearing the prop later, including through dynamic ",[91,532,533],{},"v-bind"," objects.",[95,536,537],{},"Switching between shared and explicit routes remounts the rendered page or fallback slot so its components receive the correct route object. Local component state resets at this boundary. Updates within either mode follow the normal route component reuse and page-key behavior.",[87,539,541],{"id":540},"resolveparallelroutersbypath",[91,542,543],{},"resolveParallelRoutersByPath",[158,545,549],{"className":546,"code":547,"language":548,"meta":164,"style":164},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","resolveParallelRoutersByPath(path: string): ParallelRouter[]\n","ts",[91,550,551],{"__ignoreMap":164},[168,552,553,555],{"class":170,"line":171},[168,554,543],{"class":202},[168,556,557],{"class":195},"(path: string): ParallelRouter[]\n",[95,559,560,561,125],{},"This function searches through all parallel routers and filters out those that contain the specified ",[91,562,563],{},"path",[95,565,566],{},"It's typically used in a global router context, for instance, in a catch-all path to determine whether to redirect to an error page when no parallel router contains the given path.",[158,568,571],{"className":160,"code":569,"filename":570,"language":163,"meta":164,"style":164},"\u003Cscript setup>\nconst routers = resolveParallelRoutersByPath(useRoute().path)\n\nif (routers.length === 0) {\n  showError(`Path not found: ${useRoute().path}`)\n\u003Cscript>\n","pages\u002F[...all].vue",[91,572,573,583,608,614,641,673],{"__ignoreMap":164},[168,574,575,577,579,581],{"class":170,"line":171},[168,576,175],{"class":174},[168,578,179],{"class":178},[168,580,183],{"class":182},[168,582,186],{"class":174},[168,584,585,587,590,592,595,597,600,603,605],{"class":170,"line":189},[168,586,192],{"class":182},[168,588,589],{"class":195}," routers ",[168,591,199],{"class":174},[168,593,594],{"class":202}," resolveParallelRoutersByPath",[168,596,390],{"class":195},[168,598,599],{"class":202},"useRoute",[168,601,602],{"class":195},"()",[168,604,125],{"class":174},[168,606,607],{"class":195},"path)\n",[168,609,610],{"class":170,"line":209},[168,611,613],{"emptyLinePlaceholder":612},true,"\n",[168,615,616,620,623,625,628,631,635,638],{"class":170,"line":238},[168,617,619],{"class":618},"s7zQu","if",[168,621,622],{"class":195}," (routers",[168,624,125],{"class":174},[168,626,627],{"class":195},"length ",[168,629,630],{"class":174},"===",[168,632,634],{"class":633},"sbssI"," 0",[168,636,637],{"class":195},") ",[168,639,640],{"class":174},"{\n",[168,642,644,647,649,652,656,659,661,663,665,667,670],{"class":170,"line":643},5,[168,645,646],{"class":202},"  showError",[168,648,390],{"class":178},[168,650,651],{"class":174},"`",[168,653,655],{"class":654},"sfazB","Path not found: ",[168,657,658],{"class":174},"${",[168,660,599],{"class":202},[168,662,602],{"class":195},[168,664,125],{"class":174},[168,666,563],{"class":195},[168,668,669],{"class":174},"}`",[168,671,672],{"class":178},")\n",[168,674,676,678,680],{"class":170,"line":675},6,[168,677,175],{"class":174},[168,679,179],{"class":178},[168,681,186],{"class":174},[95,683,684,685,687],{},"In this example, ",[91,686,543],{}," is used to find parallel routers that has the current route's path. If no router is found, an error is shown indicating that the path was not found.",[689,690,691],"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 .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 .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 .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 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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":164,"searchDepth":189,"depth":189,"links":693},[694,695,696,697,698,699,700,701,702],{"id":89,"depth":189,"text":93},{"id":128,"depth":189,"text":131},{"id":248,"depth":189,"text":251},{"id":331,"depth":189,"text":334},{"id":411,"depth":189,"text":414},{"id":441,"depth":189,"text":444},{"id":470,"depth":189,"text":473},{"id":493,"depth":189,"text":496},{"id":540,"depth":189,"text":543},"md",null,{},{"title":74,"description":164},"fsje6XGCZRe6akbgkaj7uimlwpUxkms0I5x0W2j5XKk",[709,711],{"title":64,"path":65,"stem":66,"description":710,"children":-1},"Component to open a modal with a url or navigate inside modal view.",{"title":78,"path":79,"stem":80,"description":164,"children":-1},1790164128325]