[{"data":1,"prerenderedAt":527},["ShallowReactive",2],{"docs-navigation:en":3,"content-page:docs:yZdNWbcS1S2Vit72AaO-SKN_F4l4WhGcGS8MR6KhkzY":235,"content-page-surround:docs:yZdNWbcS1S2Vit72AaO-SKN_F4l4WhGcGS8MR6KhkzY":524},[4,50,111,152,214],{"title":5,"page":6,"canonicalKey":7,"locale":8,"id":9,"draft":6,"icon":10,"sidebar":11,"children":12},"Start",false,"1","en","content:docs:1.start:.navigation.yml","i-lucide-rocket","section",[13,19,24,29,35,40,45],{"title":14,"id":15,"canonicalKey":16,"locale":8,"draft":6,"navigation":17,"path":18},"Why Nuxt Photo","content:docs:1.start:1.why-nuxt-photo.md","1\u002F1",{"title":14},"\u002Fdocs\u002Fstart\u002Fwhy-nuxt-photo",{"title":20,"id":21,"canonicalKey":22,"locale":8,"draft":6,"path":23},"Install Nuxt Photo","content:docs:1.start:2.installation.md","1\u002F2","\u002Fdocs\u002Fstart\u002Finstallation",{"title":25,"id":26,"canonicalKey":27,"locale":8,"draft":6,"path":28},"Build your first album","content:docs:1.start:3.build-your-first-album.md","1\u002F3","\u002Fdocs\u002Fstart\u002Fbuild-your-first-album",{"title":30,"id":31,"canonicalKey":32,"locale":8,"draft":6,"navigation":33,"path":34},"Choose a component","content:docs:1.start:4.choose-a-component.md","1\u002F4",{"title":30},"\u002Fdocs\u002Fstart\u002Fchoose-a-component",{"title":36,"id":37,"canonicalKey":38,"locale":8,"draft":6,"path":39},"Use Nuxt Photo with Vue","content:docs:1.start:5.plain-vue.md","1\u002F5","\u002Fdocs\u002Fstart\u002Fplain-vue",{"title":41,"id":42,"canonicalKey":43,"locale":8,"draft":6,"path":44},"Compare gallery approaches","content:docs:1.start:6.compare-approaches.md","1\u002F6","\u002Fdocs\u002Fstart\u002Fcompare-approaches",{"title":46,"id":47,"canonicalKey":48,"locale":8,"draft":6,"path":49},"Performance and bundle size","content:docs:1.start:7.performance-and-bundle-size.md","1\u002F7","\u002Fdocs\u002Fstart\u002Fperformance-and-bundle-size",{"title":51,"page":6,"canonicalKey":52,"locale":8,"id":53,"draft":6,"icon":54,"children":55},"Guides","2","content:docs:2.guides:.navigation.yml","i-lucide-route",[56,61,66,71,76,81,86,91,96,101,106],{"title":57,"id":58,"canonicalKey":59,"locale":8,"draft":6,"path":60},"Use CMS photos","content:docs:2.guides:1.use-cms-photos.md","2\u002F1","\u002Fdocs\u002Fguides\u002Fuse-cms-photos",{"title":62,"id":63,"canonicalKey":64,"locale":8,"draft":6,"path":65},"Use Nuxt Image","content:docs:2.guides:2.use-nuxt-image.md","2\u002F2","\u002Fdocs\u002Fguides\u002Fuse-nuxt-image",{"title":67,"id":68,"canonicalKey":69,"locale":8,"draft":6,"path":70},"Style with Tailwind","content:docs:2.guides:3.style-with-tailwind.md","2\u002F3","\u002Fdocs\u002Fguides\u002Fstyle-with-tailwind",{"title":72,"id":73,"canonicalKey":74,"locale":8,"draft":6,"path":75},"Share one lightbox","content:docs:2.guides:4.share-one-lightbox.md","2\u002F4","\u002Fdocs\u002Fguides\u002Fshare-one-lightbox",{"title":77,"id":78,"canonicalKey":79,"locale":8,"draft":6,"path":80},"Build a carousel","content:docs:2.guides:5.build-a-carousel.md","2\u002F5","\u002Fdocs\u002Fguides\u002Fbuild-a-carousel",{"title":82,"id":83,"canonicalKey":84,"locale":8,"draft":6,"path":85},"Tune responsive layouts","content:docs:2.guides:6.tune-responsive-layouts.md","2\u002F6","\u002Fdocs\u002Fguides\u002Ftune-responsive-layouts",{"title":87,"id":88,"canonicalKey":89,"locale":8,"draft":6,"path":90},"Create a custom thumbnail layout","content:docs:2.guides:7.create-a-custom-thumbnail-layout.md","2\u002F7","\u002Fdocs\u002Fguides\u002Fcreate-a-custom-thumbnail-layout",{"title":92,"id":93,"canonicalKey":94,"locale":8,"draft":6,"path":95},"Customize the built-in lightbox","content:docs:2.guides:8.customize-the-built-in-lightbox.md","2\u002F8","\u002Fdocs\u002Fguides\u002Fcustomize-the-built-in-lightbox",{"title":97,"id":98,"canonicalKey":99,"locale":8,"draft":6,"path":100},"Build a lightbox from primitives","content:docs:2.guides:9.build-a-lightbox-from-primitives.md","2\u002F9","\u002Fdocs\u002Fguides\u002Fbuild-a-lightbox-from-primitives",{"title":102,"id":103,"canonicalKey":104,"locale":8,"draft":6,"path":105},"Integrate a custom image service","content:docs:2.guides:10.integrate-a-custom-image-service.md","2\u002F10","\u002Fdocs\u002Fguides\u002Fintegrate-a-custom-image-service",{"title":107,"id":108,"canonicalKey":109,"locale":8,"draft":6,"path":110},"Control a lightbox programmatically","content:docs:2.guides:11.control-a-lightbox-programmatically.md","2\u002F11","\u002Fdocs\u002Fguides\u002Fcontrol-a-lightbox-programmatically",{"title":112,"page":6,"canonicalKey":113,"locale":8,"id":114,"draft":6,"icon":115,"children":116},"Concepts","3","content:docs:3.concepts:.navigation.yml","i-lucide-compass",[117,122,127,132,137,142,147],{"title":118,"id":119,"canonicalKey":120,"locale":8,"draft":6,"path":121},"Photo data and dimensions","content:docs:3.concepts:1.photo-data-and-dimensions.md","3\u002F1","\u002Fdocs\u002Fconcepts\u002Fphoto-data-and-dimensions",{"title":123,"id":124,"canonicalKey":125,"locale":8,"draft":6,"path":126},"Collections and navigation order","content:docs:3.concepts:2.collections-and-navigation-order.md","3\u002F2","\u002Fdocs\u002Fconcepts\u002Fcollections-and-navigation-order",{"title":128,"id":129,"canonicalKey":130,"locale":8,"draft":6,"path":131},"Layouts and responsive values","content:docs:3.concepts:3.layouts-and-responsive-values.md","3\u002F3","\u002Fdocs\u002Fconcepts\u002Flayouts-and-responsive-values",{"title":133,"id":134,"canonicalKey":135,"locale":8,"draft":6,"path":136},"SSR and layout stability","content:docs:3.concepts:4.ssr-and-layout-stability.md","3\u002F4","\u002Fdocs\u002Fconcepts\u002Fssr-and-layout-stability",{"title":138,"id":139,"canonicalKey":140,"locale":8,"draft":6,"path":141},"Image delivery","content:docs:3.concepts:5.image-delivery.md","3\u002F5","\u002Fdocs\u002Fconcepts\u002Fimage-delivery",{"title":143,"id":144,"canonicalKey":145,"locale":8,"draft":6,"path":146},"Lightbox, gestures, and accessibility","content:docs:3.concepts:6.lightbox-gestures-and-accessibility.md","3\u002F6","\u002Fdocs\u002Fconcepts\u002Flightbox-gestures-and-accessibility",{"title":148,"id":149,"canonicalKey":150,"locale":8,"draft":6,"path":151},"Customization levels","content:docs:3.concepts:7.customization-levels.md","3\u002F7","\u002Fdocs\u002Fconcepts\u002Fcustomization-levels",{"title":153,"id":154,"canonicalKey":155,"locale":8,"draft":6,"icon":156,"sidebar":11,"path":157,"children":158},"Reference","content:docs:4.reference:.navigation.yml","4","i-lucide-braces","\u002Fdocs\u002Freference",[159,164,169,174,179,184,189,194,199,204,209],{"title":160,"id":161,"canonicalKey":162,"locale":8,"draft":6,"path":163},"Photo","content:docs:4.reference:2.photo.md","4\u002F2","\u002Fdocs\u002Freference\u002Fphoto",{"title":165,"id":166,"canonicalKey":167,"locale":8,"draft":6,"path":168},"PhotoAlbum","content:docs:4.reference:3.photo-album.md","4\u002F3","\u002Fdocs\u002Freference\u002Fphoto-album",{"title":170,"id":171,"canonicalKey":172,"locale":8,"draft":6,"path":173},"PhotoGroup","content:docs:4.reference:4.photo-group.md","4\u002F4","\u002Fdocs\u002Freference\u002Fphoto-group",{"title":175,"id":176,"canonicalKey":177,"locale":8,"draft":6,"path":178},"PhotoCarousel","content:docs:4.reference:5.photo-carousel.md","4\u002F5","\u002Fdocs\u002Freference\u002Fphoto-carousel",{"title":180,"id":181,"canonicalKey":182,"locale":8,"draft":6,"path":183},"Lightbox","content:docs:4.reference:6.lightbox.md","4\u002F6","\u002Fdocs\u002Freference\u002Flightbox",{"title":185,"id":186,"canonicalKey":187,"locale":8,"draft":6,"path":188},"Lightbox primitives API","content:docs:4.reference:7.primitives.md","4\u002F7","\u002Fdocs\u002Freference\u002Fprimitives",{"title":190,"id":191,"canonicalKey":192,"locale":8,"draft":6,"path":193},"Composables","content:docs:4.reference:8.composables.md","4\u002F8","\u002Fdocs\u002Freference\u002Fcomposables",{"title":195,"id":196,"canonicalKey":197,"locale":8,"draft":6,"path":198},"Configuration and labels","content:docs:4.reference:9.configuration-and-labels.md","4\u002F9","\u002Fdocs\u002Freference\u002Fconfiguration-and-labels",{"title":200,"id":201,"canonicalKey":202,"locale":8,"draft":6,"path":203},"Types","content:docs:4.reference:10.types.md","4\u002F10","\u002Fdocs\u002Freference\u002Ftypes",{"title":205,"id":206,"canonicalKey":207,"locale":8,"draft":6,"path":208},"CSS","content:docs:4.reference:11.css.md","4\u002F11","\u002Fdocs\u002Freference\u002Fcss",{"title":210,"id":211,"canonicalKey":212,"locale":8,"draft":6,"path":213},"Package exports","content:docs:4.reference:12.package-exports.md","4\u002F12","\u002Fdocs\u002Freference\u002Fpackage-exports",{"title":215,"page":6,"canonicalKey":216,"locale":8,"id":217,"draft":6,"icon":218,"children":219},"Help","5","content:docs:5.help:.navigation.yml","i-lucide-life-buoy",[220,225,230],{"title":221,"id":222,"canonicalKey":223,"locale":8,"draft":6,"path":224},"Troubleshooting","content:docs:5.help:1.troubleshooting.md","5\u002F1","\u002Fdocs\u002Fhelp\u002Ftroubleshooting",{"title":226,"id":227,"canonicalKey":228,"locale":8,"draft":6,"path":229},"Known constraints","content:docs:5.help:2.known-constraints.md","5\u002F2","\u002Fdocs\u002Fhelp\u002Fknown-constraints",{"title":231,"id":232,"canonicalKey":233,"locale":8,"draft":6,"path":234},"Upgrade from 0.2 to 1.0","content:docs:5.help:3.upgrade-from-0-2-to-1-0.md","5\u002F3","\u002Fdocs\u002Fhelp\u002Fupgrade-from-0-2-to-1-0",{"title":226,"description":236,"body":237,"type":511,"id":227,"canonicalKey":228,"draft":6,"partial":6,"locale":8,"collection":512,"navigationFile":6,"file":513,"route":519,"resolution":521},"Product boundaries and setup-time behavior in Nuxt Photo 1.0.",{"type":238,"children":239,"toc":495},"root",[240,249,270,276,281,287,321,327,339,345,355,361,366,372,398,404,428,434,449,455,467,473,483],{"type":241,"tag":242,"props":243,"children":245},"element","h2",{"id":244},"known-dimensions-are-required",[246],{"type":247,"value":248},"text","Known dimensions are required",{"type":241,"tag":250,"props":251,"children":252},"p",{},[253,255,261,263,268],{"type":247,"value":254},"Every photo needs accurate intrinsic ",{"type":241,"tag":256,"props":257,"children":258},"code",{},[259],{"type":247,"value":260},"width",{"type":247,"value":262}," and ",{"type":241,"tag":256,"props":264,"children":265},{},[266],{"type":247,"value":267},"height",{"type":247,"value":269}," values before it is\nrendered. Nuxt Photo does not measure images in the browser. Calculate missing\ndimensions during upload or server-side ingestion.",{"type":241,"tag":242,"props":271,"children":273},{"id":272},"the-photo-model-contains-images-only",[274],{"type":247,"value":275},"The photo model contains images only",{"type":241,"tag":250,"props":277,"children":278},{},[279],{"type":247,"value":280},"Video and mixed-media slides are outside the Nuxt Photo 1.0 model. Build those\nexperiences separately instead of representing them as photos.",{"type":241,"tag":242,"props":282,"children":284},{"id":283},"a-single-photo-is-strict",[285],{"type":247,"value":286},"A single Photo is strict",{"type":241,"tag":250,"props":288,"children":289},{},[290,294,296,301,303,307,309,313,315,319],{"type":241,"tag":256,"props":291,"children":292},{},[293],{"type":247,"value":160},{"type":247,"value":295}," throws when its item is invalid. ",{"type":241,"tag":256,"props":297,"children":298},{},[299],{"type":247,"value":300},"validation=\"drop\"",{"type":247,"value":302}," exists only on\ncollection components: ",{"type":241,"tag":256,"props":304,"children":305},{},[306],{"type":247,"value":165},{"type":247,"value":308},", ",{"type":241,"tag":256,"props":310,"children":311},{},[312],{"type":247,"value":170},{"type":247,"value":314},", and ",{"type":241,"tag":256,"props":316,"children":317},{},[318],{"type":247,"value":175},{"type":247,"value":320},".",{"type":241,"tag":242,"props":322,"children":324},{"id":323},"lightbox-capability-is-decided-at-setup",[325],{"type":247,"value":326},"Lightbox capability is decided at setup",{"type":241,"tag":250,"props":328,"children":329},{},[330,332,337],{"type":247,"value":331},"The ",{"type":241,"tag":256,"props":333,"children":334},{},[335],{"type":247,"value":336},"lightbox",{"type":247,"value":338}," option on ready-made components is read when the component is\ncreated. Remount the component to change that capability. Transition settings\ncan change while the component remains mounted.",{"type":241,"tag":242,"props":340,"children":342},{"id":341},"photogroup-uses-one-explicit-collection",[343],{"type":247,"value":344},"PhotoGroup uses one explicit collection",{"type":241,"tag":250,"props":346,"children":347},{},[348,353],{"type":241,"tag":256,"props":349,"children":350},{},[351],{"type":247,"value":352},"PhotoGroup.photos",{"type":247,"value":354}," owns identity and navigation order. Descendant components\nregister thumbnail and slide behavior, but do not add items to the collection.",{"type":241,"tag":242,"props":356,"children":358},{"id":357},"one-lightbox-owns-the-modal-state",[359],{"type":247,"value":360},"One lightbox owns the modal state",{"type":241,"tag":250,"props":362,"children":363},{},[364],{"type":247,"value":365},"Only one provider owns focus and page isolation at a time. Opening another\nlightbox closes the current owner.",{"type":241,"tag":242,"props":367,"children":369},{"id":368},"structure-css-is-required",[370],{"type":247,"value":371},"Structure CSS is required",{"type":241,"tag":250,"props":373,"children":374},{},[375,377,382,384,389,391,396],{"type":247,"value":376},"Use ",{"type":241,"tag":256,"props":378,"children":379},{},[380],{"type":247,"value":381},"css: 'all'",{"type":247,"value":383}," for the included appearance or ",{"type":241,"tag":256,"props":385,"children":386},{},[387],{"type":247,"value":388},"css: 'structure'",{"type":247,"value":390}," with your own\ntheme. With ",{"type":241,"tag":256,"props":392,"children":393},{},[394],{"type":247,"value":395},"css: 'none'",{"type":247,"value":397},", your application must recreate all structural album,\ncarousel, lightbox, focus, and transition CSS.",{"type":241,"tag":242,"props":399,"children":401},{"id":400},"carousel-options-are-intentionally-limited",[402],{"type":247,"value":403},"Carousel options are intentionally limited",{"type":241,"tag":250,"props":405,"children":406},{},[407,409,414,415,420,421,426],{"type":247,"value":408},"The public behavior options are ",{"type":241,"tag":256,"props":410,"children":411},{},[412],{"type":247,"value":413},"loop",{"type":247,"value":308},{"type":241,"tag":256,"props":416,"children":417},{},[418],{"type":247,"value":419},"dragFree",{"type":247,"value":308},{"type":241,"tag":256,"props":422,"children":423},{},[424],{"type":247,"value":425},"direction",{"type":247,"value":427},", and Nuxt\nPhoto's autoplay settings. Embla plugins, private methods, and arbitrary Embla\noptions are not extension points.",{"type":241,"tag":242,"props":429,"children":431},{"id":430},"runtime-direction-changes-must-be-explicit",[432],{"type":247,"value":433},"Runtime direction changes must be explicit",{"type":241,"tag":250,"props":435,"children":436},{},[437,441,443,447],{"type":241,"tag":256,"props":438,"children":439},{},[440],{"type":247,"value":175},{"type":247,"value":442}," reads inherited text direction when it mounts. Bind its\n",{"type":241,"tag":256,"props":444,"children":445},{},[446],{"type":247,"value":425},{"type":247,"value":448}," prop when locale direction can change without a remount.",{"type":241,"tag":242,"props":450,"children":452},{"id":451},"reduced-motion-can-change-animation-behavior",[453],{"type":247,"value":454},"Reduced motion can change animation behavior",{"type":241,"tag":250,"props":456,"children":457},{},[458,460,465],{"type":247,"value":459},"Nuxt Photo follows ",{"type":241,"tag":256,"props":461,"children":462},{},[463],{"type":247,"value":464},"prefers-reduced-motion",{"type":247,"value":466},". It replaces movement-heavy\ntransitions with a short fade and reacts when the media query changes.",{"type":241,"tag":242,"props":468,"children":470},{"id":469},"a-failed-image-keeps-its-placeholder",[471],{"type":247,"value":472},"A failed image keeps its placeholder",{"type":241,"tag":250,"props":474,"children":475},{},[476,481],{"type":241,"tag":256,"props":477,"children":478},{},[479],{"type":247,"value":480},"placeholderSrc",{"type":247,"value":482}," stays visible after the main image fails. It resets when the\nadapter produces a different image request and disappears after that request\nloads successfully.",{"type":241,"tag":250,"props":484,"children":485},{},[486,488,493],{"type":247,"value":487},"These constraints keep server rendering, navigation order, and modal ownership\npredictable. Use ",{"type":241,"tag":489,"props":490,"children":491},"a",{"href":224},[492],{"type":247,"value":221},{"type":247,"value":494}," for symptom-based\nfixes.",{"title":496,"searchDepth":497,"depth":497,"links":498},"",4,[499,501,502,503,504,505,506,507,508,509,510],{"id":244,"depth":500,"text":248},2,{"id":272,"depth":500,"text":275},{"id":283,"depth":500,"text":286},{"id":323,"depth":500,"text":326},{"id":341,"depth":500,"text":344},{"id":357,"depth":500,"text":360},{"id":368,"depth":500,"text":371},{"id":400,"depth":500,"text":403},{"id":430,"depth":500,"text":433},{"id":451,"depth":500,"text":454},{"id":469,"depth":500,"text":472},"markdown","docs",{"source":514,"path":515,"stem":516,"dir":517,"extension":518},"content","docs\u002F5.help\u002F2.known-constraints.md","docs\u002F5.help\u002F2.known-constraints","help","md",{"requestedPath":229,"resolvedPath":229,"alternates":520},[],{"requested":522,"resolved":523,"usedFallback":6},{},{"locale":8},{"previous":525,"next":526},{"title":221,"id":222,"canonicalKey":223,"locale":8,"draft":6,"path":224},{"title":231,"id":232,"canonicalKey":233,"locale":8,"draft":6,"path":234},1788702889050]