[{"data":1,"prerenderedAt":423},["ShallowReactive",2],{"docs-navigation:en":3,"content-page:docs:HQZ-sHdT9ACoWmbbsakvi1zsJd4TASfa9LXp8aOPq1w":235,"content-page-surround:docs:HQZ-sHdT9ACoWmbbsakvi1zsJd4TASfa9LXp8aOPq1w":420},[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",{"navigation":236,"title":237,"description":238,"body":239,"type":407,"id":15,"canonicalKey":16,"draft":6,"partial":6,"locale":8,"collection":408,"navigationFile":6,"file":409,"route":415,"resolution":417},{"title":14},"Why Nuxt Photo?","Decide whether one Nuxt-first photo system fits your albums, lightboxes, and image delivery.",{"type":240,"children":241,"toc":398},"root",[242,250,254,259,266,301,314,320,325,331,336,347,353,386],{"type":243,"tag":244,"props":245,"children":246},"element","p",{},[247],{"type":248,"value":249},"text","Nuxt Photo combines responsive photo layouts with an accessible lightbox. It\nuses each image's known dimensions to produce useful server-rendered layout\nbefore the browser loads the image.",{"type":243,"tag":251,"props":252,"children":253},"lightbox-behavior-lab",{},[],{"type":243,"tag":244,"props":255,"children":256},{},[257],{"type":248,"value":258},"The example above runs the public Nuxt Photo components. Select a photo to test\nthe lightbox, keyboard navigation, zoom, and focus restoration.",{"type":243,"tag":260,"props":261,"children":263},"h2",{"id":262},"what-it-includes",[264],{"type":248,"value":265},"What it includes",{"type":243,"tag":267,"props":268,"children":269},"ul",{},[270,276,281,286,291,296],{"type":243,"tag":271,"props":272,"children":273},"li",{},[274],{"type":248,"value":275},"Responsive rows, columns, and masonry albums.",{"type":243,"tag":271,"props":277,"children":278},{},[279],{"type":248,"value":280},"A lightbox with keyboard, touch, zoom, focus, and reduced-motion behavior.",{"type":243,"tag":271,"props":282,"children":283},{},[284],{"type":248,"value":285},"A shared collection for navigation across several albums.",{"type":243,"tag":271,"props":287,"children":288},{},[289],{"type":248,"value":290},"A carousel with thumbnails and optional autoplay or lightbox behavior.",{"type":243,"tag":271,"props":292,"children":293},{},[294],{"type":248,"value":295},"Optional Nuxt Image integration.",{"type":243,"tag":271,"props":297,"children":298},{},[299],{"type":248,"value":300},"Slots and lower-level components for focused customization.",{"type":243,"tag":244,"props":302,"children":303},{},[304,306,312],{"type":248,"value":305},"All components use the same ",{"type":243,"tag":307,"props":308,"children":309},"code",{},[310],{"type":248,"value":311},"PhotoItem",{"type":248,"value":313}," data shape. Moving from an album to a\ncarousel does not require a second image model.",{"type":243,"tag":260,"props":315,"children":317},{"id":316},"when-it-is-a-good-fit",[318],{"type":248,"value":319},"When it is a good fit",{"type":243,"tag":244,"props":321,"children":322},{},[323],{"type":248,"value":324},"Use Nuxt Photo when the application needs an album and lightbox that work\ntogether, especially when server-rendered layout stability matters. It is also\nuseful when several photo sections must share one clear navigation order.",{"type":243,"tag":260,"props":326,"children":328},{"id":327},"when-to-choose-something-smaller-or-broader",[329],{"type":248,"value":330},"When to choose something smaller or broader",{"type":243,"tag":244,"props":332,"children":333},{},[334],{"type":248,"value":335},"Choose a plain CSS grid when users do not need a lightbox, gestures, shared\nnavigation, or calculated photo rows. Choose a broader media viewer when the\nproject requires video, plugins, or a mixed-media model. Nuxt Photo 1.0 is\nintentionally limited to photos with known dimensions.",{"type":243,"tag":244,"props":337,"children":338},{},[339,345],{"type":243,"tag":340,"props":341,"children":342},"a",{"href":44},[343],{"type":248,"value":344},"Compare Nuxt Photo with other approaches",{"type":248,"value":346}," for the\nmain trade-offs.",{"type":243,"tag":260,"props":348,"children":350},{"id":349},"what-you-need-to-provide",[351],{"type":248,"value":352},"What you need to provide",{"type":243,"tag":244,"props":354,"children":355},{},[356,358,363,365,370,372,377,379,384],{"type":248,"value":357},"Each photo needs a stable ",{"type":243,"tag":307,"props":359,"children":360},{},[361],{"type":248,"value":362},"id",{"type":248,"value":364},", a ",{"type":243,"tag":307,"props":366,"children":367},{},[368],{"type":248,"value":369},"src",{"type":248,"value":371},", and its real ",{"type":243,"tag":307,"props":373,"children":374},{},[375],{"type":248,"value":376},"width",{"type":248,"value":378}," and ",{"type":243,"tag":307,"props":380,"children":381},{},[382],{"type":248,"value":383},"height",{"type":248,"value":385},".\nNuxt Photo does not measure images in the browser because that would delay\nlayout until after download. Add dimensions in your CMS, upload pipeline, or\nserver-side ingestion process.",{"type":243,"tag":244,"props":387,"children":388},{},[389,391,396],{"type":248,"value":390},"Ready to try it? ",{"type":243,"tag":340,"props":392,"children":393},{"href":23},[394],{"type":248,"value":395},"Install the 1.0 beta",{"type":248,"value":397},".",{"title":399,"searchDepth":400,"depth":400,"links":401},"",4,[402,404,405,406],{"id":262,"depth":403,"text":265},2,{"id":316,"depth":403,"text":319},{"id":327,"depth":403,"text":330},{"id":349,"depth":403,"text":352},"markdown","docs",{"source":410,"path":411,"stem":412,"dir":413,"extension":414},"content","docs\u002F1.start\u002F1.why-nuxt-photo.md","docs\u002F1.start\u002F1.why-nuxt-photo","start","md",{"requestedPath":18,"resolvedPath":18,"alternates":416},[],{"requested":418,"resolved":419,"usedFallback":6},{},{"locale":8},{"previous":421,"next":422},null,{"title":20,"id":21,"canonicalKey":22,"locale":8,"draft":6,"path":23},1788702876595]