[{"data":1,"prerenderedAt":977},["ShallowReactive",2],{"navigation_docs":3,"-resources-faq":188,"-resources-faq-surround":972},[4,9,27,52,101,130,163],{"title":5,"path":6,"stem":7,"icon":8},"Playground","\u002Fplayground","1.playground","i-lucide-flask-conical",{"title":10,"path":11,"stem":12,"children":13,"page":26},"Getting Started","\u002Fgetting-started","2.getting-started",[14,18,22],{"title":15,"path":16,"stem":17},"Introduction","\u002Fgetting-started\u002Fintroduction","2.getting-started\u002F1.introduction",{"title":19,"path":20,"stem":21},"Installation","\u002Fgetting-started\u002Finstallation","2.getting-started\u002F2.installation",{"title":23,"path":24,"stem":25},"First modal","\u002Fgetting-started\u002Ffirst-modal","2.getting-started\u002F3.first-modal",false,{"title":28,"path":29,"stem":30,"children":31,"page":26},"Concepts","\u002Fconcepts","3.concepts",[32,36,40,44,48],{"title":33,"path":34,"stem":35},"Architecture","\u002Fconcepts\u002Farchitecture","3.concepts\u002F1.architecture",{"title":37,"path":38,"stem":39},"Imperative flow","\u002Fconcepts\u002Fimperative-flow","3.concepts\u002F2.imperative-flow",{"title":41,"path":42,"stem":43},"Stacking","\u002Fconcepts\u002Fstacking","3.concepts\u002F3.stacking",{"title":45,"path":46,"stem":47},"Groups","\u002Fconcepts\u002Fgroups","3.concepts\u002F4.groups",{"title":49,"path":50,"stem":51},"Headless primitives","\u002Fconcepts\u002Fheadless-primitives","3.concepts\u002F5.headless-primitives",{"title":53,"path":54,"stem":55,"children":56,"page":26},"Guide","\u002Fguide","4.guide",[57,61,65,69,73,77,81,85,89,93,97],{"title":58,"path":59,"stem":60},"Writing a modal","\u002Fguide\u002Fwriting-a-modal","4.guide\u002F01.writing-a-modal",{"title":62,"path":63,"stem":64},"Opening & closing","\u002Fguide\u002Fopening-and-closing","4.guide\u002F02.opening-and-closing",{"title":66,"path":67,"stem":68},"Props & results","\u002Fguide\u002Fpassing-props-and-results","4.guide\u002F03.passing-props-and-results",{"title":70,"path":71,"stem":72},"Behavior options","\u002Fguide\u002Fbehavior-options","4.guide\u002F04.behavior-options",{"title":74,"path":75,"stem":76},"Animations & styling","\u002Fguide\u002Fstyling-and-animations","4.guide\u002F05.styling-and-animations",{"title":78,"path":79,"stem":80},"useModal composable","\u002Fguide\u002Fusemodal-composable","4.guide\u002F06.usemodal-composable",{"title":82,"path":83,"stem":84},"Modal context","\u002Fguide\u002Fmodal-context","4.guide\u002F07.modal-context",{"title":86,"path":87,"stem":88},"Multiple targets","\u002Fguide\u002Fmultiple-targets","4.guide\u002F08.multiple-targets",{"title":90,"path":91,"stem":92},"Overlay","\u002Fguide\u002Foverlay","4.guide\u002F09.overlay",{"title":94,"path":95,"stem":96},"Async components","\u002Fguide\u002Fasync-components","4.guide\u002F10.async-components",{"title":98,"path":99,"stem":100},"TypeScript","\u002Fguide\u002Ftypescript","4.guide\u002F11.typescript",{"title":102,"path":103,"stem":104,"children":105,"page":26},"Recipes","\u002Frecipes","5.recipes",[106,110,114,118,122,126],{"title":107,"path":108,"stem":109},"Confirm dialog","\u002Frecipes\u002Fconfirm-dialog","5.recipes\u002F1.confirm-dialog",{"title":111,"path":112,"stem":113},"Form modal with validation","\u002Frecipes\u002Fform-modal-with-validation","5.recipes\u002F2.form-modal-with-validation",{"title":115,"path":116,"stem":117},"Image lightbox","\u002Frecipes\u002Fimage-lightbox","5.recipes\u002F3.image-lightbox",{"title":119,"path":120,"stem":121},"Command palette","\u002Frecipes\u002Fcommand-palette","5.recipes\u002F4.command-palette",{"title":123,"path":124,"stem":125},"Nested flows \u002F wizards","\u002Frecipes\u002Fnested-flows","5.recipes\u002F5.nested-flows",{"title":127,"path":128,"stem":129},"Global error modal","\u002Frecipes\u002Fglobal-error-modal","5.recipes\u002F6.global-error-modal",{"title":131,"path":132,"stem":133,"children":134,"page":26},"Api","\u002Fapi","6.api",[135,139,143,147,151,155,159],{"title":136,"path":137,"stem":138},"Functions","\u002Fapi\u002Ffunctions","6.api\u002F1.functions",{"title":140,"path":141,"stem":142},"Components","\u002Fapi\u002Fcomponents","6.api\u002F2.components",{"title":144,"path":145,"stem":146},"Composables","\u002Fapi\u002Fcomposables","6.api\u002F3.composables",{"title":148,"path":149,"stem":150},"Plugin","\u002Fapi\u002Fplugin","6.api\u002F4.plugin",{"title":152,"path":153,"stem":154},"State helpers","\u002Fapi\u002Fstate","6.api\u002F5.state",{"title":156,"path":157,"stem":158},"Global events","\u002Fapi\u002Fevents","6.api\u002F6.events",{"title":160,"path":161,"stem":162},"Types","\u002Fapi\u002Ftypes","6.api\u002F7.types",{"title":164,"path":165,"stem":166,"children":167,"page":26},"Resources","\u002Fresources","7.resources",[168,172,176,180,184],{"title":169,"path":170,"stem":171},"Migration from v1","\u002Fresources\u002Fmigration-from-v1","7.resources\u002F1.migration-from-v1",{"title":173,"path":174,"stem":175},"FAQ","\u002Fresources\u002Ffaq","7.resources\u002F2.faq",{"title":177,"path":178,"stem":179},"Troubleshooting","\u002Fresources\u002Ftroubleshooting","7.resources\u002F3.troubleshooting",{"title":181,"path":182,"stem":183},"Comparison","\u002Fresources\u002Fcomparison","7.resources\u002F4.comparison",{"title":185,"path":186,"stem":187},"Changelog","\u002Fresources\u002Fchangelog","7.resources\u002F5.changelog",{"id":189,"title":173,"body":190,"description":966,"extension":967,"links":968,"meta":969,"navigation":503,"path":174,"seo":970,"stem":175,"__hash__":971},"docs\u002F7.resources\u002F2.faq.md",{"type":191,"value":192,"toc":951},"minimark",[193,197,211,239,243,275,279,292,316,324,331,346,350,364,372,389,393,419,423,435,568,572,583,658,664,753,758,762,772,933,947],[194,195,173],"h1",{"id":196},"faq",[198,199,201,202,206,207,210],"h2",{"id":200},"why-modaltarget-instead-of-plain-teleport","Why ",[203,204,205],"code",{},"\u003CModalTarget>"," instead of plain ",[203,208,209],{},"\u003CTeleport>","?",[212,213,214,216,217,219,220,223,224,227,228,231,232,235,236,238],"p",{},[203,215,209],{}," moves DOM nodes but provides no coordination. ",[203,218,205],{}," is the stack manager for one modal group: it filters ",[203,221,222],{},"state.modals"," to its group, drives the enter\u002Fexit transition sequence (one modal animates out before the next becomes visible), owns scroll-lock and user-select lock for that group, and provides the ",[203,225,226],{},"modalGroupConfigKey"," injection that ",[203,229,230],{},"\u003CModalRoot>"," and ",[203,233,234],{},"useModalContext"," depend on. Multiple ",[203,237,205],{}," instances give you independently positioned stacks (e.g., full-screen dialogs at one target, side-panels at another).",[198,240,242],{"id":241},"does-it-work-with-ssr","Does it work with SSR?",[212,244,245,246,248,249,252,253,255,256,259,260,263,264,267,268,271,272,274],{},"The component primitives (",[203,247,230],{},", ",[203,250,251],{},"\u003CModalContent>",", etc.) render on the server without errors because ",[203,254,205],{}," uses a plain ",[203,257,258],{},"\u003Cdiv>"," with no DOM-only APIs until mounted. However, ",[203,261,262],{},"openModal"," is imperative — it mutates reactive state and is meaningless on the server. Only call it inside event handlers or ",[203,265,266],{},"onMounted",". Wrapping calls in ",[203,269,270],{},"if (typeof window !== 'undefined')"," is not necessary for the package itself, but do not call ",[203,273,262],{}," at module scope.",[198,276,278],{"id":277},"how-do-i-test-modals","How do I test modals?",[212,280,281,285,286,288,289,291],{},[282,283,284],"strong",{},"Integration tests (recommended)."," Mount the full app (or a test-app wrapper that registers the plugin and places ",[203,287,205],{},"), then call ",[203,290,262],{}," in the test body and query the rendered output with Testing Library.",[212,293,294,297,298,301,302,304,305,308,309,311,312,315],{},[282,295,296],{},"Unit tests for a modal component."," Wrap the component in a ",[203,299,300],{},"\u003CModalTarget group=\"…\">"," stub that provides the required injections, or use ",[203,303,262],{}," after mounting a minimal app in ",[203,306,307],{},"jsdom",". Avoid mounting ",[203,310,230],{}," in isolation — it throws if ",[203,313,314],{},"modalContextKey"," is not injected.",[212,317,318,319,323],{},"See the ",[320,321,322],"a",{"href":108},"Confirm dialog recipe"," for a concrete example.",[198,325,327,328,330],{"id":326},"why-is-there-no-teleport-per-modal","Why is there no ",[203,329,209],{}," per modal?",[212,332,333,335,336,339,340,342,343,345],{},[203,334,205],{}," is effectively the teleport target — it's ",[203,337,338],{},"position: fixed; inset: 0"," by default and sits wherever you place it in the DOM. Each modal rendered inside it is already in the correct stacking layer. Adding a ",[203,341,209],{}," per modal would teleport elements into a target that is itself fixed-positioned, which gains nothing and breaks the group isolation ",[203,344,205],{}," provides.",[198,347,349],{"id":348},"can-i-use-this-with-vue-2","Can I use this with Vue 2?",[212,351,352,353,356,357,248,360,363],{},"No. The package requires Vue 3.4+ and relies on ",[203,354,355],{},"provide","\u002F",[203,358,359],{},"inject",[203,361,362],{},"\u003Cscript setup>",", and reactivity APIs that are not available in Vue 2.",[198,365,367,368,371],{"id":366},"why-does-reka-ui-appear-as-a-peer-dependency","Why does ",[203,369,370],{},"reka-ui"," appear as a peer dependency?",[212,373,374,376,377,380,381,384,385,388],{},[203,375,230],{}," wraps reka-ui's ",[203,378,379],{},"\u003CDialogRoot>"," to get ARIA ",[203,382,383],{},"role=\"dialog\"",", the focus trap, and Escape key handling correct out of the box. reka-ui is itself dependency-light and tree-shakeable; only the ",[203,386,387],{},"DialogRoot"," primitive is consumed. Because reka-ui ships multiple composables your app may already use, it is declared as a peer dep rather than bundled.",[198,390,392],{"id":391},"how-does-scroll-lock-work-under-ios","How does scroll-lock work under iOS?",[212,394,395,398,399,402,403,406,407,410,411,414,415,418],{},[203,396,397],{},"useScrollLock"," sets ",[203,400,401],{},"document.body.style.overflow = 'hidden'"," and compensates for the removed scrollbar by adding ",[203,404,405],{},"paddingRight"," equal to ",[203,408,409],{},"window.innerWidth - document.documentElement.clientWidth",". This prevents layout shift. iOS Safari's elastic overscroll is not fully blocked by overflow alone — if you need to prevent body bounce, add ",[203,412,413],{},"-webkit-overflow-scrolling: touch"," to the modal's inner scroll container and set ",[203,416,417],{},"overscroll-behavior: contain",".",[198,420,422],{"id":421},"can-i-open-a-modal-during-ssr-or-hydration","Can I open a modal during SSR or hydration?",[212,424,425,426,428,429,431,432,434],{},"No. ",[203,427,262],{}," pushes to ",[203,430,222],{}," which triggers reactive renders — this must happen client-side. Guard calls with ",[203,433,266],{}," if your component setup runs during SSR:",[436,437,442],"pre",{"className":438,"code":439,"language":440,"meta":441,"style":441},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { onMounted } from 'vue'\nimport { openModal } from '@kolirt\u002Fvue-modal'\n\nonMounted(() => {\n  openModal(WelcomeDialog, { group: 'default' })\n})\n","ts","",[203,443,444,477,498,505,524,560],{"__ignoreMap":441},[445,446,449,453,457,461,464,467,470,474],"span",{"class":447,"line":448},"line",1,[445,450,452],{"class":451},"s7zQu","import",[445,454,456],{"class":455},"sMK4o"," {",[445,458,460],{"class":459},"sTEyZ"," onMounted",[445,462,463],{"class":455}," }",[445,465,466],{"class":451}," from",[445,468,469],{"class":455}," '",[445,471,473],{"class":472},"sfazB","vue",[445,475,476],{"class":455},"'\n",[445,478,480,482,484,487,489,491,493,496],{"class":447,"line":479},2,[445,481,452],{"class":451},[445,483,456],{"class":455},[445,485,486],{"class":459}," openModal",[445,488,463],{"class":455},[445,490,466],{"class":451},[445,492,469],{"class":455},[445,494,495],{"class":472},"@kolirt\u002Fvue-modal",[445,497,476],{"class":455},[445,499,501],{"class":447,"line":500},3,[445,502,504],{"emptyLinePlaceholder":503},true,"\n",[445,506,508,511,514,517,521],{"class":447,"line":507},4,[445,509,266],{"class":510},"s2Zo4",[445,512,513],{"class":459},"(",[445,515,516],{"class":455},"()",[445,518,520],{"class":519},"spNyl"," =>",[445,522,523],{"class":455}," {\n",[445,525,527,530,533,536,539,541,544,547,549,552,555,557],{"class":447,"line":526},5,[445,528,529],{"class":510},"  openModal",[445,531,513],{"class":532},"swJcz",[445,534,535],{"class":459},"WelcomeDialog",[445,537,538],{"class":455},",",[445,540,456],{"class":455},[445,542,543],{"class":532}," group",[445,545,546],{"class":455},":",[445,548,469],{"class":455},[445,550,551],{"class":472},"default",[445,553,554],{"class":455},"'",[445,556,463],{"class":455},[445,558,559],{"class":532},")\n",[445,561,563,566],{"class":447,"line":562},6,[445,564,565],{"class":455},"}",[445,567,559],{"class":459},[198,569,571],{"id":570},"how-do-i-get-the-currently-open-top-modal-programmatically","How do I get the currently open top modal programmatically?",[212,573,574,575,578,579,582],{},"Import ",[203,576,577],{},"modals"," from the package (a computed ref of ",[203,580,581],{},"ModalItem[]",") and read the last element:",[436,584,586],{"className":438,"code":585,"language":440,"meta":441,"style":441},"import { modals } from '@kolirt\u002Fvue-modal'\n\nconst topModal = computed(() => modals.value[modals.value.length - 1])\n",[203,587,588,607,611],{"__ignoreMap":441},[445,589,590,592,594,597,599,601,603,605],{"class":447,"line":448},[445,591,452],{"class":451},[445,593,456],{"class":455},[445,595,596],{"class":459}," modals",[445,598,463],{"class":455},[445,600,466],{"class":451},[445,602,469],{"class":455},[445,604,495],{"class":472},[445,606,476],{"class":455},[445,608,609],{"class":447,"line":479},[445,610,504],{"emptyLinePlaceholder":503},[445,612,613,616,619,622,625,627,629,631,633,635,638,640,643,645,648,651,655],{"class":447,"line":500},[445,614,615],{"class":519},"const",[445,617,618],{"class":459}," topModal ",[445,620,621],{"class":455},"=",[445,623,624],{"class":510}," computed",[445,626,513],{"class":459},[445,628,516],{"class":455},[445,630,520],{"class":519},[445,632,596],{"class":459},[445,634,418],{"class":455},[445,636,637],{"class":459},"value[modals",[445,639,418],{"class":455},[445,641,642],{"class":459},"value",[445,644,418],{"class":455},[445,646,647],{"class":459},"length ",[445,649,650],{"class":455},"-",[445,652,654],{"class":653},"sbssI"," 1",[445,656,657],{"class":459},"])\n",[212,659,660,661,546],{},"For group-scoped top-of-stack, use ",[203,662,663],{},"groupModals",[436,665,667],{"className":438,"code":666,"language":440,"meta":441,"style":441},"import { groupModals } from '@kolirt\u002Fvue-modal'\n\nconst confirmModals = groupModals('confirm')\nconst topConfirm = computed(() => confirmModals.value[confirmModals.value.length - 1])\n",[203,668,669,688,692,714],{"__ignoreMap":441},[445,670,671,673,675,678,680,682,684,686],{"class":447,"line":448},[445,672,452],{"class":451},[445,674,456],{"class":455},[445,676,677],{"class":459}," groupModals",[445,679,463],{"class":455},[445,681,466],{"class":451},[445,683,469],{"class":455},[445,685,495],{"class":472},[445,687,476],{"class":455},[445,689,690],{"class":447,"line":479},[445,691,504],{"emptyLinePlaceholder":503},[445,693,694,696,699,701,703,705,707,710,712],{"class":447,"line":500},[445,695,615],{"class":519},[445,697,698],{"class":459}," confirmModals ",[445,700,621],{"class":455},[445,702,677],{"class":510},[445,704,513],{"class":459},[445,706,554],{"class":455},[445,708,709],{"class":472},"confirm",[445,711,554],{"class":455},[445,713,559],{"class":459},[445,715,716,718,721,723,725,727,729,731,734,736,739,741,743,745,747,749,751],{"class":447,"line":507},[445,717,615],{"class":519},[445,719,720],{"class":459}," topConfirm ",[445,722,621],{"class":455},[445,724,624],{"class":510},[445,726,513],{"class":459},[445,728,516],{"class":455},[445,730,520],{"class":519},[445,732,733],{"class":459}," confirmModals",[445,735,418],{"class":455},[445,737,738],{"class":459},"value[confirmModals",[445,740,418],{"class":455},[445,742,642],{"class":459},[445,744,418],{"class":455},[445,746,647],{"class":459},[445,748,650],{"class":455},[445,750,654],{"class":653},[445,752,657],{"class":459},[212,754,318,755,418],{},[320,756,757],{"href":153},"State API reference",[198,759,761],{"id":760},"can-i-prevent-a-modal-from-closing","Can I prevent a modal from closing?",[212,763,764,765,768,769,546],{},"Yes — register a ",[203,766,767],{},"beforeClose"," guard with ",[203,770,771],{},"useModalContext().onBeforeClose",[436,773,775],{"className":438,"code":774,"language":440,"meta":441,"style":441},"const modal = useModalContext()\n\nmodal.onBeforeClose(async () => {\n  if (formIsDirty.value) {\n    const confirmed = await openModal(ConfirmDiscard, { group: 'confirm' }).catch(() => false)\n    if (!confirmed) return false \u002F\u002F veto the close\n  }\n})\n",[203,776,777,792,796,818,839,896,920,926],{"__ignoreMap":441},[445,778,779,781,784,786,789],{"class":447,"line":448},[445,780,615],{"class":519},[445,782,783],{"class":459}," modal ",[445,785,621],{"class":455},[445,787,788],{"class":510}," useModalContext",[445,790,791],{"class":459},"()\n",[445,793,794],{"class":447,"line":479},[445,795,504],{"emptyLinePlaceholder":503},[445,797,798,801,803,806,808,811,814,816],{"class":447,"line":500},[445,799,800],{"class":459},"modal",[445,802,418],{"class":455},[445,804,805],{"class":510},"onBeforeClose",[445,807,513],{"class":459},[445,809,810],{"class":519},"async",[445,812,813],{"class":455}," ()",[445,815,520],{"class":519},[445,817,523],{"class":455},[445,819,820,823,826,829,831,833,836],{"class":447,"line":507},[445,821,822],{"class":451},"  if",[445,824,825],{"class":532}," (",[445,827,828],{"class":459},"formIsDirty",[445,830,418],{"class":455},[445,832,642],{"class":459},[445,834,835],{"class":532},") ",[445,837,838],{"class":455},"{\n",[445,840,841,844,847,850,853,855,857,860,862,864,866,868,870,872,874,876,879,881,884,886,888,890,894],{"class":447,"line":526},[445,842,843],{"class":519},"    const",[445,845,846],{"class":459}," confirmed",[445,848,849],{"class":455}," =",[445,851,852],{"class":451}," await",[445,854,486],{"class":510},[445,856,513],{"class":532},[445,858,859],{"class":459},"ConfirmDiscard",[445,861,538],{"class":455},[445,863,456],{"class":455},[445,865,543],{"class":532},[445,867,546],{"class":455},[445,869,469],{"class":455},[445,871,709],{"class":472},[445,873,554],{"class":455},[445,875,463],{"class":455},[445,877,878],{"class":532},")",[445,880,418],{"class":455},[445,882,883],{"class":510},"catch",[445,885,513],{"class":532},[445,887,516],{"class":455},[445,889,520],{"class":519},[445,891,893],{"class":892},"sfNiH"," false",[445,895,559],{"class":532},[445,897,898,901,903,906,909,911,914,916],{"class":447,"line":562},[445,899,900],{"class":451},"    if",[445,902,825],{"class":532},[445,904,905],{"class":455},"!",[445,907,908],{"class":459},"confirmed",[445,910,835],{"class":532},[445,912,913],{"class":451},"return",[445,915,893],{"class":892},[445,917,919],{"class":918},"sHwdD"," \u002F\u002F veto the close\n",[445,921,923],{"class":447,"line":922},7,[445,924,925],{"class":455},"  }\n",[445,927,929,931],{"class":447,"line":928},8,[445,930,565],{"class":455},[445,932,559],{"class":459},[212,934,935,936,939,940,942,943,946],{},"Return ",[203,937,938],{},"false"," (or a promise that resolves to ",[203,941,938],{},") to block the close. Guards are bypassed when ",[203,944,945],{},"ignoreGuard: true"," is passed.",[948,949,950],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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}",{"title":441,"searchDepth":479,"depth":479,"links":952},[953,955,956,957,959,960,962,963,964,965],{"id":200,"depth":479,"text":954},"Why \u003CModalTarget> instead of plain \u003CTeleport>?",{"id":241,"depth":479,"text":242},{"id":277,"depth":479,"text":278},{"id":326,"depth":479,"text":958},"Why is there no \u003CTeleport> per modal?",{"id":348,"depth":479,"text":349},{"id":366,"depth":479,"text":961},"Why does reka-ui appear as a peer dependency?",{"id":391,"depth":479,"text":392},{"id":421,"depth":479,"text":422},{"id":570,"depth":479,"text":571},{"id":760,"depth":479,"text":761},"Frequently asked questions about @kolirt\u002Fvue-modal v2.","md",null,{},{"title":173,"description":966},"mBeYRJy9ecqN3tDT1awB-WJ85tX1V6kRaT_xybALOm0",[973,975],{"title":169,"path":170,"stem":171,"description":974,"children":-1},"Step-by-step guide to upgrading from @kolirt\u002Fvue-modal v1 to v2.",{"title":177,"path":178,"stem":179,"description":976,"children":-1},"Common errors and problems in @kolirt\u002Fvue-modal v2, with causes and fixes.",1779523621808]