[{"data":1,"prerenderedAt":1062},["ShallowReactive",2],{"navigation_docs":3,"-api":226,"-api-surround":1057},[4,90],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":28},"Guide","i-lucide-book-open","\u002Fguide","1.guide",[10,29,51,68],{"title":11,"icon":12,"path":13,"stem":14,"children":15,"page":28},"Getting Started","i-lucide-rocket","\u002Fguide\u002Fgetting-started","1.guide\u002F1.getting-started",[16,20,24],{"title":17,"path":18,"stem":19},"Introduction","\u002Fguide\u002Fgetting-started\u002Fintroduction","1.guide\u002F1.getting-started\u002F1.introduction",{"title":21,"path":22,"stem":23},"First Tooltip","\u002Fguide\u002Fgetting-started\u002Ffirst-tooltip","1.guide\u002F1.getting-started\u002F2.first-tooltip",{"title":25,"path":26,"stem":27},"First Menu","\u002Fguide\u002Fgetting-started\u002Ffirst-menu","1.guide\u002F1.getting-started\u002F3.first-menu",false,{"title":30,"icon":31,"path":32,"stem":33,"children":34,"page":28},"Core Concepts","i-lucide-boxes","\u002Fguide\u002Fcore-concepts","1.guide\u002F2.core-concepts",[35,39,43,47],{"title":36,"path":37,"stem":38},"Floating node","\u002Fguide\u002Fcore-concepts\u002Ffloating-node","1.guide\u002F2.core-concepts\u002F1.floating-node",{"title":40,"path":41,"stem":42},"Positioning","\u002Fguide\u002Fcore-concepts\u002Fpositioning","1.guide\u002F2.core-concepts\u002F2.positioning",{"title":44,"path":45,"stem":46},"Interaction model","\u002Fguide\u002Fcore-concepts\u002Finteraction-model","1.guide\u002F2.core-concepts\u002F3.interaction-model",{"title":48,"path":49,"stem":50},"Hierarchy","\u002Fguide\u002Fcore-concepts\u002Fhierarchy","1.guide\u002F2.core-concepts\u002F4.hierarchy",{"title":40,"icon":52,"path":53,"stem":54,"children":55,"page":28},"i-lucide-crosshair","\u002Fguide\u002Fpositioning","1.guide\u002F3.positioning",[56,60,64],{"title":57,"path":58,"stem":59},"Middlewares","\u002Fguide\u002Fpositioning\u002Fmiddlewares","1.guide\u002F3.positioning\u002F1.middlewares",{"title":61,"path":62,"stem":63},"Virtual Anchors","\u002Fguide\u002Fpositioning\u002Fvirtual-anchors","1.guide\u002F3.positioning\u002F2.virtual-anchors",{"title":65,"path":66,"stem":67},"Animations and Transitions","\u002Fguide\u002Fpositioning\u002Fanimations-and-transitions","1.guide\u002F3.positioning\u002F3.animations-and-transitions",{"title":69,"icon":70,"path":71,"stem":72,"children":73,"page":28},"Accessibility","i-lucide-person-standing","\u002Fguide\u002Faccessibility","1.guide\u002F4.accessibility",[74,78,82,86],{"title":75,"path":76,"stem":77},"ARIA & Semantics","\u002Fguide\u002Faccessibility\u002Faria-and-semantics","1.guide\u002F4.accessibility\u002F1.aria-and-semantics",{"title":79,"path":80,"stem":81},"Focus Models","\u002Fguide\u002Faccessibility\u002Ffocus-models","1.guide\u002F4.accessibility\u002F2.focus-models",{"title":83,"path":84,"stem":85},"Keyboard Navigation","\u002Fguide\u002Faccessibility\u002Fkeyboard-navigation","1.guide\u002F4.accessibility\u002F3.keyboard-navigation",{"title":87,"path":88,"stem":89},"Hover & Dismissal","\u002Fguide\u002Faccessibility\u002Fhover-and-dismissal","1.guide\u002F4.accessibility\u002F4.hover-and-dismissal",{"title":91,"icon":92,"path":93,"stem":94,"children":95},"API Reference","i-lucide-code-xml","\u002Fapi","2.api",[96,100,110,120,137,171,188],{"title":97,"path":93,"stem":98,"icon":99},"Overview","2.api\u002Findex","i-lucide-file-text",{"title":101,"icon":102,"path":103,"stem":104,"children":105,"page":28},"Reference","i-lucide-braces","\u002Fapi\u002Foverview","2.api\u002F1.overview",[106],{"title":107,"path":108,"stem":109},"Types","\u002Fapi\u002Foverview\u002Ftypes","2.api\u002F1.overview\u002F1.types",{"title":111,"icon":112,"path":113,"stem":114,"children":115,"page":28},"Core","i-lucide-box","\u002Fapi\u002Fcore","2.api\u002F2.core",[116],{"title":117,"path":118,"stem":119},"useFloatingNode","\u002Fapi\u002Fcore\u002Fuse-floating-node","2.api\u002F2.core\u002F1.use-floating-node",{"title":40,"icon":121,"path":122,"stem":123,"children":124,"page":28},"i-lucide-move","\u002Fapi\u002Fpositioning","2.api\u002F3.positioning",[125,129,133],{"title":126,"path":127,"stem":128},"usePosition","\u002Fapi\u002Fpositioning\u002Fuse-position","2.api\u002F3.positioning\u002F1.use-position",{"title":130,"path":131,"stem":132},"useArrow","\u002Fapi\u002Fpositioning\u002Fuse-arrow","2.api\u002F3.positioning\u002F2.use-arrow",{"title":134,"path":135,"stem":136},"useClientPoint","\u002Fapi\u002Fpositioning\u002Fuse-client-point","2.api\u002F3.positioning\u002F3.use-client-point",{"title":138,"icon":139,"path":140,"stem":141,"children":142,"page":28},"Interactions","i-lucide-mouse-pointer-click","\u002Fapi\u002Finteractions","2.api\u002F4.interactions",[143,147,151,155,159,163,167],{"title":144,"path":145,"stem":146},"useClick","\u002Fapi\u002Finteractions\u002Fuse-click","2.api\u002F4.interactions\u002F1.use-click",{"title":148,"path":149,"stem":150},"useHover","\u002Fapi\u002Finteractions\u002Fuse-hover","2.api\u002F4.interactions\u002F2.use-hover",{"title":152,"path":153,"stem":154},"useFocus","\u002Fapi\u002Finteractions\u002Fuse-focus","2.api\u002F4.interactions\u002F3.use-focus",{"title":156,"path":157,"stem":158},"useFocusTrap","\u002Fapi\u002Finteractions\u002Fuse-focus-trap","2.api\u002F4.interactions\u002F4.use-focus-trap",{"title":160,"path":161,"stem":162},"useOutsideClick","\u002Fapi\u002Finteractions\u002Fuse-outside-click","2.api\u002F4.interactions\u002F5.use-outside-click",{"title":164,"path":165,"stem":166},"useEscapeKey","\u002Fapi\u002Finteractions\u002Fuse-escape-key","2.api\u002F4.interactions\u002F6.use-escape-key",{"title":168,"path":169,"stem":170},"useRole","\u002Fapi\u002Finteractions\u002Fuse-role","2.api\u002F4.interactions\u002F7.use-role",{"title":83,"icon":172,"path":173,"stem":174,"children":175,"page":28},"i-lucide-keyboard","\u002Fapi\u002Fkeyboard-navigation","2.api\u002F5.keyboard-navigation",[176,180,184],{"title":177,"path":178,"stem":179},"useRovingFocus","\u002Fapi\u002Fkeyboard-navigation\u002Fuse-roving-focus","2.api\u002F5.keyboard-navigation\u002F1.use-roving-focus",{"title":181,"path":182,"stem":183},"useAriaActivedescendant","\u002Fapi\u002Fkeyboard-navigation\u002Fuse-aria-activedescendant","2.api\u002F5.keyboard-navigation\u002F2.use-aria-activedescendant",{"title":185,"path":186,"stem":187},"useTypeahead","\u002Fapi\u002Fkeyboard-navigation\u002Fuse-typeahead","2.api\u002F5.keyboard-navigation\u002F3.use-typeahead",{"title":189,"icon":190,"path":191,"stem":192,"children":193,"page":28},"Middleware","i-lucide-blocks","\u002Fapi\u002Fmiddleware","2.api\u002F6.middleware",[194,198,202,206,210,214,218,222],{"title":195,"path":196,"stem":197},"offset","\u002Fapi\u002Fmiddleware\u002Foffset","2.api\u002F6.middleware\u002F1.offset",{"title":199,"path":200,"stem":201},"flip","\u002Fapi\u002Fmiddleware\u002Fflip","2.api\u002F6.middleware\u002F2.flip",{"title":203,"path":204,"stem":205},"shift","\u002Fapi\u002Fmiddleware\u002Fshift","2.api\u002F6.middleware\u002F3.shift",{"title":207,"path":208,"stem":209},"autoPlacement","\u002Fapi\u002Fmiddleware\u002Fautoplacement","2.api\u002F6.middleware\u002F4.autoplacement",{"title":211,"path":212,"stem":213},"size","\u002Fapi\u002Fmiddleware\u002Fsize","2.api\u002F6.middleware\u002F5.size",{"title":215,"path":216,"stem":217},"inline","\u002Fapi\u002Fmiddleware\u002Finline","2.api\u002F6.middleware\u002F6.inline",{"title":219,"path":220,"stem":221},"arrow","\u002Fapi\u002Fmiddleware\u002Farrow","2.api\u002F6.middleware\u002F7.arrow",{"title":223,"path":224,"stem":225},"hide","\u002Fapi\u002Fmiddleware\u002Fhide","2.api\u002F6.middleware\u002F8.hide",{"id":227,"title":91,"body":228,"description":1050,"extension":1051,"links":1052,"meta":1053,"navigation":1054,"path":93,"seo":1055,"stem":98,"__hash__":1056},"docs\u002F2.api\u002Findex.md",{"type":229,"value":230,"toc":1039},"minimark",[231,235,243,248,251,539,542,545,579,582,585,630,633,636,725,728,731,783,786,792,799,972,976],[232,233,234],"p",{},"VFloat provides composable primitives for building anchored floating interfaces in Vue 3. Each composable handles one focused responsibility: lifecycle and refs, positioning calculations, interaction listeners, accessibility semantics, or keyboard navigation.",[232,236,237,238,242],{},"Use the ",[239,240,241],"a",{"href":18},"Guides"," to learn end-to-end workflows and architectural principles. Use these API reference pages when you need exact signatures, options, return shapes, and integration contracts.",[244,245,247],"h2",{"id":246},"choose-primitives-by-goal","Choose Primitives by Goal",[232,249,250],{},"Pick the combination of composables and middleware that matches your interface pattern:",[252,253,254,272],"table",{},[255,256,257],"thead",{},[258,259,260,264,267,270],"tr",{},[261,262,263],"th",{},"Interface Pattern",[261,265,266],{},"Primary Composables",[261,268,269],{},"Suggested Middleware",[261,271,5],{},[273,274,275,314,355,391,430,471,506],"tbody",{},[258,276,277,284,300,310],{},[278,279,280],"td",{},[281,282,283],"strong",{},"Tooltip",[278,285,286,291,292,291,296],{},[239,287,288],{"href":118},[289,290,117],"code",{},", ",[239,293,294],{"href":149},[289,295,148],{},[239,297,298],{"href":127},[289,299,126],{},[278,301,302,291,304,291,306,291,308],{},[289,303,195],{},[289,305,199],{},[289,307,203],{},[289,309,219],{},[278,311,312],{},[239,313,21],{"href":22},[258,315,316,321,343,351],{},[278,317,318],{},[281,319,320],{},"Popover \u002F Dropdown",[278,322,323,291,327,291,331,291,335,291,339],{},[239,324,325],{"href":118},[289,326,117],{},[239,328,329],{"href":145},[289,330,144],{},[239,332,333],{"href":161},[289,334,160],{},[239,336,337],{"href":165},[289,338,164],{},[239,340,341],{"href":127},[289,342,126],{},[278,344,345,291,347,291,349],{},[289,346,195],{},[289,348,199],{},[289,350,203],{},[278,352,353],{},[239,354,25],{"href":26},[258,356,357,362,384,387],{},[278,358,359],{},[281,360,361],{},"Dialog \u002F Modal",[278,363,364,291,368,291,372,291,376,291,380],{},[239,365,366],{"href":118},[289,367,117],{},[239,369,370],{"href":157},[289,371,156],{},[239,373,374],{"href":165},[289,375,164],{},[239,377,378],{"href":161},[289,379,160],{},[239,381,382],{"href":169},[289,383,168],{},[278,385,386],{},"None (CSS centered)",[278,388,389],{},[239,390,79],{"href":80},[258,392,393,398,420,426],{},[278,394,395],{},[281,396,397],{},"ContextMenu \u002F Cursor",[278,399,400,291,404,291,408,291,412,291,416],{},[239,401,402],{"href":118},[289,403,117],{},[239,405,406],{"href":135},[289,407,134],{},[239,409,410],{"href":161},[289,411,160],{},[239,413,414],{"href":165},[289,415,164],{},[239,417,418],{"href":127},[289,419,126],{},[278,421,422,291,424],{},[289,423,199],{},[289,425,203],{},[278,427,428],{},[239,429,61],{"href":62},[258,431,432,437,459,467],{},[278,433,434],{},[281,435,436],{},"Menu with Roving Focus",[278,438,439,291,443,291,447,291,451,291,455],{},[239,440,441],{"href":118},[289,442,117],{},[239,444,445],{"href":178},[289,446,177],{},[239,448,449],{"href":145},[289,450,144],{},[239,452,453],{"href":161},[289,454,160],{},[239,456,457],{"href":165},[289,458,164],{},[278,460,461,291,463,291,465],{},[289,462,195],{},[289,464,199],{},[289,466,203],{},[278,468,469],{},[239,470,83],{"href":84},[258,472,473,478,496,502],{},[278,474,475],{},[281,476,477],{},"Nested Menu Tree",[278,479,480,291,484,291,488,291,492],{},[239,481,482],{"href":118},[289,483,117],{},[239,485,486],{"href":178},[289,487,177],{},[239,489,490],{"href":161},[289,491,160],{},[239,493,494],{"href":165},[289,495,164],{},[278,497,498,291,500],{},[289,499,195],{},[289,501,199],{},[278,503,504],{},[239,505,48],{"href":49},[258,507,508,513,527,535],{},[278,509,510],{},[281,511,512],{},"Combobox \u002F Autocomplete",[278,514,515,291,519,291,523],{},[239,516,517],{"href":182},[289,518,181],{},[239,520,521],{"href":186},[289,522,185],{},[239,524,525],{"href":127},[289,526,126],{},[278,528,529,291,531,291,533],{},[289,530,195],{},[289,532,199],{},[289,534,211],{},[278,536,537],{},[239,538,83],{"href":84},[244,540,111],{"id":541},"core",[232,543,544],{},"Core primitives manage node identity, shared element references, open\u002Fclose lifecycle, and composite tree hierarchies.",[252,546,547,557],{},[255,548,549],{},[258,550,551,554],{},[261,552,553],{},"Composable",[261,555,556],{},"Description",[273,558,559,570],{},[258,560,561,567],{},[278,562,563],{},[239,564,565],{"href":118},[289,566,117],{},[278,568,569],{},"Creates a composite floating node managing element refs, open state, and parent-child hierarchy.",[258,571,572,576],{},[278,573,574],{},[239,575,107],{"href":108},[278,577,578],{},"Canonical types, navigation protocols, and data structures exported by VFloat.",[244,580,40],{"id":581},"positioning",[232,583,584],{},"Positioning composables compute screen coordinates, run the middleware pipeline, listen to viewport changes, and generate style bindings.",[252,586,587,595],{},[255,588,589],{},[258,590,591,593],{},[261,592,553],{},[261,594,556],{},[273,596,597,608,619],{},[258,598,599,605],{},[278,600,601],{},[239,602,603],{"href":127},[289,604,126],{},[278,606,607],{},"Computes reactive coordinates and automatically applies inline positioning styles to the floating element.",[258,609,610,616],{},[278,611,612],{},[239,613,614],{"href":131},[289,615,130],{},[278,617,618],{},"Registers an arrow element with the positioning pipeline and automatically applies computed arrow styles.",[258,620,621,627],{},[278,622,623],{},[239,624,625],{"href":135},[289,626,134],{},[278,628,629],{},"Positions a floating element relative to pointer coordinates using a virtual anchor.",[244,631,138],{"id":632},"interactions",[232,634,635],{},"Interaction composables attach DOM event listeners to the anchor or document to open, close, and manage focus for floating surfaces.",[252,637,638,646],{},[255,639,640],{},[258,641,642,644],{},[261,643,553],{},[261,645,556],{},[273,647,648,659,670,681,692,703,714],{},[258,649,650,656],{},[278,651,652],{},[239,653,654],{"href":145},[289,655,144],{},[278,657,658],{},"Toggles open state from click, tap, or keyboard activation on the anchor.",[258,660,661,667],{},[278,662,663],{},[239,664,665],{"href":149},[289,666,148],{},[278,668,669],{},"Opens and closes floating content on pointer hover with delay and safe polygon tracking.",[258,671,672,678],{},[278,673,674],{},[239,675,676],{"href":153},[289,677,152],{},[278,679,680],{},"Opens and closes floating content when the anchor gains or loses keyboard focus.",[258,682,683,689],{},[278,684,685],{},[239,686,687],{"href":157},[289,688,156],{},[278,690,691],{},"Manages modal focus containment, boundary sentinels, background isolation, and return focus.",[258,693,694,700],{},[278,695,696],{},[239,697,698],{"href":161},[289,699,160],{},[278,701,702],{},"Closes open floating surfaces when pointer interactions occur outside the floating family.",[258,704,705,711],{},[278,706,707],{},[239,708,709],{"href":165},[289,710,164],{},[278,712,713],{},"Closes open floating surfaces on Escape key presses with leaf-first hierarchy and IME coordination.",[258,715,716,722],{},[278,717,718],{},[239,719,720],{"href":169},[289,721,168],{},[278,723,724],{},"Synchronizes ARIA roles, popup states, and accessibility relationships on anchor and panel.",[244,726,83],{"id":727},"keyboard-navigation",[232,729,730],{},"Primitives for managing keyboard navigation patterns in dropdowns, menus, and comboboxes.",[252,732,733,741],{},[255,734,735],{},[258,736,737,739],{},[261,738,553],{},[261,740,556],{},[273,742,743,758,772],{},[258,744,745,751],{},[278,746,747],{},[239,748,749],{"href":178},[289,750,177],{},[278,752,753,754,757],{},"Moves physical DOM focus between elements in composite widgets using roving ",[289,755,756],{},"tabindex",".",[258,759,760,766],{},[278,761,762],{},[239,763,764],{"href":182},[289,765,181],{},[278,767,768,769,757],{},"Virtual focus keeping DOM focus on an input while highlighting options via ",[289,770,771],{},"aria-activedescendant",[258,773,774,780],{},[278,775,776],{},[239,777,778],{"href":186},[289,779,185],{},[278,781,782],{},"Captures rapid typing sequences to jump directly to matching items in a list.",[244,784,189],{"id":785},"middleware",[232,787,788,789,791],{},"Positioning middleware runs sequentially inside ",[289,790,126],{}," to modify placement, prevent collisions, add spacing, or measure boundary constraints.",[232,793,794,795,798],{},"Configure them declaratively inside ",[289,796,797],{},"usePosition(node, { middlewares: { ... } })"," or pass middleware instances directly.",[252,800,801,815],{},[255,802,803],{},[258,804,805,807,810,813],{},[261,806,189],{},[261,808,809],{},"Pipeline Phase",[261,811,812],{},"Declarative Key",[261,814,556],{},[273,816,817,836,855,874,896,915,934,953],{},[258,818,819,825,828,833],{},[278,820,821],{},[239,822,823],{"href":196},[289,824,195],{},[278,826,827],{},"1. Distance",[278,829,830],{},[289,831,832],{},"offset: 8",[278,834,835],{},"Adds distance along the main and cross axes between anchor and panel.",[258,837,838,844,847,852],{},[278,839,840],{},[239,841,842],{"href":200},[289,843,199],{},[278,845,846],{},"2. Collision",[278,848,849],{},[289,850,851],{},"flip: true",[278,853,854],{},"Flips to the opposite or fallback placement when space is constrained.",[258,856,857,863,866,871],{},[278,858,859],{},[239,860,861],{"href":204},[289,862,203],{},[278,864,865],{},"3. Boundary",[278,867,868],{},[289,869,870],{},"shift: true",[278,872,873],{},"Nudges the floating element along its axis to remain inside the viewport.",[258,875,876,882,885,890],{},[278,877,878],{},[239,879,880],{"href":208},[289,881,207],{},[278,883,884],{},"4. Placement",[278,886,887],{},[289,888,889],{},"autoPlacement: true",[278,891,892,893,895],{},"Selects the placement with the greatest available space (alternative to ",[289,894,199],{},").",[258,897,898,904,907,912],{},[278,899,900],{},[239,901,902],{"href":212},[289,903,211],{},[278,905,906],{},"5. Sizing",[278,908,909],{},[289,910,911],{},"size: { apply }",[278,913,914],{},"Measures available space to resize or constrain panel dimensions.",[258,916,917,923,926,931],{},[278,918,919],{},[239,920,921],{"href":216},[289,922,215],{},[278,924,925],{},"6. Geometry",[278,927,928],{},[289,929,930],{},"inline: true",[278,932,933],{},"Positions relative to individual client rects for multi-line inline triggers.",[258,935,936,942,945,950],{},[278,937,938],{},[239,939,940],{"href":220},[289,941,219],{},[278,943,944],{},"7. Decorator",[278,946,947],{},[289,948,949],{},"arrow: true",[278,951,952],{},"Positions an arrow element aligned with the anchor.",[258,954,955,961,964,969],{},[278,956,957],{},[239,958,959],{"href":224},[289,960,223],{},[278,962,963],{},"8. Visibility",[278,965,966],{},[289,967,968],{},"hide: true",[278,970,971],{},"Detects when the anchor is clipped or when the panel escapes its boundary.",[244,973,975],{"id":974},"conventions-across-apis","Conventions Across APIs",[977,978,979,990,1004],"ul",{},[980,981,982,985,986,989],"li",{},[281,983,984],{},"Reactivity:"," Options accept plain values, Vue refs, or getter functions (",[289,987,988],{},"MaybeRefOrGetter\u003CT>","). Changes automatically re-evaluate active composables.",[980,991,992,995,996,999,1000,757],{},[281,993,994],{},"Node Coupling:"," Every composable in a floating surface accepts the same ",[289,997,998],{},"FloatingNode"," created by ",[239,1001,1002],{"href":118},[289,1003,117],{},[980,1005,1006,1009,1010,1013,1014,1016,1017,1019,1020,1016,1023,1026,1027,1030,1031,1034,1035,1038],{},[281,1007,1008],{},"Style Binding:"," By default (",[289,1011,1012],{},"applyStyles: true","), ",[289,1015,126],{}," and ",[289,1018,130],{}," automatically synchronize positioning and arrow styles directly to ",[289,1021,1022],{},"node.refs.floatingEl",[289,1024,1025],{},"node.refs.arrowEl",". Alternatively, set ",[289,1028,1029],{},"applyStyles: false"," and bind ",[289,1032,1033],{},":style=\"styles\""," or ",[289,1036,1037],{},":style=\"arrowStyles\""," manually in templates.",{"title":1040,"searchDepth":1041,"depth":1041,"links":1042},"",2,[1043,1044,1045,1046,1047,1048,1049],{"id":246,"depth":1041,"text":247},{"id":541,"depth":1041,"text":111},{"id":581,"depth":1041,"text":40},{"id":632,"depth":1041,"text":138},{"id":727,"depth":1041,"text":83},{"id":785,"depth":1041,"text":189},{"id":974,"depth":1041,"text":975},"Canonical API reference and composable index for VFloat.","md",null,{},{"title":97,"icon":99},{"title":91,"description":1050},"hwf7MQ0TVXyMChFql7L9KJBvzqlRjpx1UTAELTygTio",[1058,1060],{"title":87,"path":88,"stem":89,"description":1059,"children":-1},"Satisfy WCAG 2.1 Success Criterion 1.4.13 with safe hover corridors, keyboard dismissal, and persistent content.",{"title":107,"path":108,"stem":109,"description":1061,"children":-1},"Shared types, protocols, and data structures across the VFloat library.",1791268046404]