About
Liquid-glass navigation that expands a selected icon into its destination panel. Includes a working local workspace demo. Customize routes, content, zoom distance, material, ripples and GSAP timing. Restores heading focus and respects reduced motion.
Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds Liquid Glass Zoom Navigation to your project and fits it to your theme.
Code
How Liquid Glass Zoom Navigation is used: the demo's code. The component's own source comes with a free account.
Usage.tsx
"use client";
import { useEffect, useRef, useState, type MouseEvent } from "react";
import { ArrowUpRight, ArrowRight, House, Folder, Plus, Inbox, UserRound, CalendarDays, Settings2, CircleHelp, Layers, ChevronRight } from "lucide-react";
import { LiquidGlassZoomNavigation, type GlassNavItem } from "@/components/ui/liquid-glass-zoom-navigation";
import "@fontsource-variable/manrope";
const settings = {
useHostTheme: true,
frost: 2,
opacity: 0.12,
saturation: 1.3,
edgeLight: 0.8,
refraction: 36,
glassTint: "#eee9df",
accentColor: "#9af1d6",
rippleStrength: 0.8,
pointerLight: 0.85,
transitionSpeed: 1,
zoomDistance: 1,
motion: true,
};
// Demo photography: Kevin Lieder / Unsplash, https://unsplash.com/photos/5T_XETRABHs.
const logo="https://cdn.21st.dev/assets/mirror/33/3314e81c65ee88c42385123033c6796eb61d5ba4bf1412ba011feb156013144c.png";
const demoCSS=".lg-demo-zoom{--gs-bg:#f7f6f1;--gs-ink:#29332b;--gs-muted:#667064;--gs-line:#dcdfd5;--gs-accent:#365a42;background:var(--gs-bg);color:var(--gs-ink);min-height:100vh;padding:0 40px;font-family:Manrope Variable,sans-serif;-webkit-font-smoothing:antialiased}.lg-demo-zoom[data-theme=dark]{--gs-bg:#151b17;--gs-ink:#eef3e7;--gs-muted:#b6c1b1;--gs-line:#344035;--gs-accent:#cae8b7;color-scheme:dark}.lg-demo-zoom *,.lg-demo-zoom *:before,.lg-demo-zoom *:after{box-sizing:border-box}.lg-demo-zoom button,.lg-demo-zoom input{font:inherit}.lg-demo-zoom button{color:inherit;cursor:pointer}.lg-demo-zoom a{color:inherit;text-decoration:none}.lg-demo-zoom svg{width:18px;height:18px;stroke-width:1.6;flex-shrink:0}.lg-demo-zoom :focus-visible{outline:2px solid var(--gs-accent);outline-offset:5px}.lg-demo-zoom ::selection{background:var(--gs-accent);color:var(--gs-bg)}.lg-demo-zoom input{caret-color:var(--gs-accent)}.lg-demo-zoom ::-webkit-scrollbar{width:6px;height:6px}.lg-demo-zoom ::-webkit-scrollbar-thumb{background:var(--gs-line);border-radius:10px}{max-width:1600px;margin:auto;height:92px;display:flex;align-items:center;justify-content:space-between}{display:flex;align-items:center;gap:10px}{width:36px;height:36px;object-fit:contain}{font-size:13px;font-weight:750;letter-spacing:-.025em}{display:block;font-size:10px;font-weight:500;letter-spacing:.01em;color:var(--gs-muted);margin-top:3px}{display:flex;align-items:center;gap:8px}{width:38px;height:38px;border:1px solid var(--gs-line);background:none;border-radius:50%;display:grid;place-items:center}{background:color-mix(in srgb,var(--gs-accent) 8%,transparent)}{font-size:10px;color:var(--gs-muted);margin-right:14px}{max-width:1600px;margin:36px auto 32px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}{font-size:clamp(28px,3vw,42px);line-height:1.1;font-weight:550;letter-spacing:-.04em;margin:0 0 12px}{margin:0;font-size:12px;color:var(--gs-muted)}.gs-material-caption{color:var(--gs-muted);font-size:10px;padding-bottom:4px}{max-width:1600px;margin:auto auto 24px;display:flex;align-items:center;border-bottom:1px solid var(--gs-line);gap:28px}{background:none;border:0;border-bottom:2px solid transparent;font-size:11px;color:var(--gs-muted);padding:15px 0;margin-bottom:-1px;white-space:nowrap}{color:var(--gs-ink);border-bottom-color:var(--gs-accent);font-weight:750}{color:var(--gs-ink)}.gs-workbench{max-width:1600px;margin:auto;display:grid;grid-template-columns:minmax(0,1fr) 228px;gap:32px;align-items:start}{grid-template-columns:1fr}.gs-exhibit{min-width:0}.gs-stage{position:relative;min-height:620px;overflow:hidden;border-radius:18px;isolation:isolate;display:flex;align-items:center;justify-content:center}.gs-scene{position:absolute;inset:0;z-index:-3;background:url(https://cdn.21st.dev/assets/mirror/86/86a2007848781c48142219e11781c67e391ed15072e1df35b5c7146261ca1649.jpg) center 56% / cover}.gs-scene-shade{position:absolute;inset:0;z-index:-2;background:#faf4e938}.gs-stage--sidebar .gs-scene-shade{background:#faf4e938}.lg-demo-zoom[data-theme=dark] .gs-scene-shade{background:#090f0c6b}.gs-photo-credit{position:absolute;right:16px;bottom:12px;color:#fff;text-shadow:0 1px 4px #000;font-size:8px;pointer-events:none}.gs-navigation-placement{display:flex;flex-direction:column;gap:100px;align-items:center;width:min(620px,calc(100% - 64px));padding:80px 0 88px;position:relative}.gs-stage-copy{text-align:center;color:#fffaf0;text-shadow:0 2px 20px #19251960}.gs-stage-emblem{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;margin:0 auto 18px;background:#f7f4e31a;backdrop-filter:blur(8px);box-shadow:inset 0 1px 1px #fff6}.gs-stage-emblem svg{width:20px;height:20px}.gs-stage-copy h2{font-size:clamp(23px,2.7vw,36px);font-weight:550;letter-spacing:-.035em;margin:0 0 12px;text-wrap:balance}.gs-stage-copy p{font-size:12px;margin:0;color:#fff8e9;padding:6px 10px;border-radius:6px;background:#0b170fa6}.gs-selected-page{display:inline-flex;align-items:center;gap:5px;font-size:10px;margin-top:12px;font-weight:750;padding:6px 10px;border-radius:6px;background:#0b170fa6}.gs-selected-page svg{width:12px;height:12px}.gs-nav-holder{width:100%}.gs-nav-holder>.glass-kit[data-theme=light]{--g-ink:#17261d;--g-muted:#2b3b30}{width:min(1120px,calc(100% - 96px));margin:110px auto 48px}{align-items:flex-end;min-height:650px}{height:clamp(180px,20vw,270px)}.gs-sidebar-placement{position:relative;padding:40px 0 62px}.gs-sidebar-destination{position:absolute;bottom:26px;left:50%;transform:translate(-50%);display:flex;gap:8px;white-space:nowrap;font-size:9px;color:#fff7ea;text-shadow:0 1px 5px #000}.gs-sidebar-destination span{opacity:.9}{display:flex;gap:30px;justify-content:space-between;align-items:flex-start;padding:22px 0}{font-size:13px;font-weight:750;margin:0 0 7px}{font-size:11px;color:var(--gs-muted);line-height:1.75;max-width:60ch;margin:0}{display:flex;gap:6px;align-items:center;font-size:9px;color:var(--gs-muted);padding-top:4px;white-space:nowrap}.gs-live-dot{display:block;width:5px;height:5px;background:var(--gs-accent);border-radius:50%}{padding-top:4px}{display:flex;align-items:center;justify-content:space-between}{font-size:14px;font-weight:700;margin:0}{border:0;background:none;border-radius:50%;width:32px;height:32px;display:grid;place-items:center}{width:14px;height:14px}{font-size:10px;line-height:1.7;color:var(--gs-muted);margin:8px 0 20px}{display:flex;gap:4px;padding:4px;background:color-mix(in srgb,var(--gs-accent) 6%,transparent);border-radius:8px;margin-bottom:28px}{flex:1;font-size:10px;border:0;background:var(--gs-bg);padding:9px 4px;border-radius:5px}{background:var(--gs-line)}{display:block;margin:0 0 22px}{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:600}{font-size:10px;color:var(--gs-muted);font-weight:500;font-variant-numeric:tabular-nums}{display:block;appearance:none;width:100%;height:4px;border-radius:3px;background:var(--gs-line);accent-color:var(--gs-accent);margin:17px 0 0;cursor:pointer}{appearance:none;width:13px;height:13px;border:2px solid var(--gs-bg);border-radius:50%;background:var(--gs-accent);box-shadow:0 1px 4px #0003}{width:11px;height:11px;border:2px solid var(--gs-bg);border-radius:50%;background:var(--gs-accent)}{display:flex;gap:18px;padding:4px 0 22px}{flex:1;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px}{appearance:none;width:28px;height:28px;border:0;background:none;padding:0;cursor:pointer}{padding:0}{border-radius:8px;border:1px solid #8884}{padding-top:22px;border-top:1px solid var(--gs-line)}{font-size:11px}{width:100%;color:var(--gs-ink);background:none;border:1px solid var(--gs-line);border-radius:7px;padding:10px;font-size:12px;margin:9px 0 22px}{display:flex;gap:8px;border-top:1px solid var(--gs-line);padding-top:16px;color:var(--gs-muted)}{width:13px;height:13px;margin-top:3px}{margin:0;font-size:9px;line-height:1.8}{max-width:1600px;margin:28px auto 0;border-top:1px solid var(--gs-line);display:flex;justify-content:space-between;padding:24px 0;font-size:9px;color:var(--gs-muted)}.gs-navigation-placement--zoom{gap:30px;padding-block:48px;width:min(580px,calc(100% - 64px))}.gs-destination{width:100%;min-height:290px;border-radius:22px;padding:24px;will-change:transform}.gs-page-title{display:flex;gap:7px;align-items:center;padding-bottom:18px;border-bottom:1px solid color-mix(in srgb,currentColor 15%,transparent)}.gs-page-title h3{font-size:11px;font-weight:700;margin:0}.gs-page-title>span:last-child{margin-left:auto;font-size:8px;opacity:.7}.gs-page-dot{width:5px;height:5px;border-radius:50%;background:var(--glass-accent)}.gs-page-body{padding-top:24px}.gs-page-body h4{font-size:23px;line-height:1.25;letter-spacing:-.035em;margin:0 0 14px;font-weight:600}.gs-page-body p{font-size:11px;line-height:1.65;max-width:34ch;margin:0}.gs-page-link{display:inline-flex;align-items:center;gap:12px;margin-top:26px;font-size:11px;font-weight:750}.gs-page-link svg{width:14px;height:14px}.gs-project-list{display:flex;flex-direction:column}.gs-project-list>div{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid color-mix(in srgb,currentColor 10%,transparent);font-size:10px}.gs-project-list strong{font-weight:650}.gs-project-list>div>span:last-child{margin-left:auto;font-size:9px;opacity:.75}.gs-project-symbol{width:26px;height:26px;display:grid;place-items:center;border-radius:7px;background:color-mix(in srgb,var(--glass-accent) 15%,transparent)}.gs-project-symbol svg{width:13px;height:13px}.gs-create-form label{display:block;font-size:10px;margin:18px 0 8px}.gs-create-form>div{display:flex;align-items:center;gap:8px}.gs-create-form input{min-width:0;width:100%;padding:10px 0;color:inherit;border:0;border-bottom:1px solid currentColor;background:none;font-size:11px}.gs-create-form input::placeholder{color:inherit;opacity:.7}.gs-create-form button{display:flex;align-items:center;gap:6px;border:0;padding:10px 12px;background:var(--glass-accent);color:var(--g-accent-ink,#fff);border-radius:8px;font-size:10px}.gs-create-form button svg{width:14px;height:14px}.gs-create-form small{display:block;font-size:9px;margin-top:14px}.gs-message{display:flex;align-items:flex-start;gap:10px;margin-top:14px}.gs-message>span,.gs-profile>span{display:grid;place-items:center;flex-shrink:0;width:28px;height:28px;font-size:9px;border-radius:50%;background:color-mix(in srgb,var(--glass-accent) 18%,transparent)}.gs-message strong{font-size:10px}.gs-message p{font-size:10px;margin-top:3px}.gs-profile{display:flex;gap:16px;align-items:center;margin-top:14px}.gs-profile>span{width:60px;height:60px;font-size:18px}.gs-profile h4{margin-bottom:4px}@media(min-width:1600px){.gs-stage{min-height:700px}{height:340px}}@media(max-width:1100px){.lg-demo-zoom{padding-inline:24px}.gs-workbench{gap:22px;grid-template-columns:minmax(0,1fr) 200px}.gs-material-caption{display:none}{gap:24px}}@media(max-width:800px){.gs-workbench{grid-template-columns:1fr;gap:22px}{padding:22px 0;border-top:1px solid var(--gs-line);display:grid;grid-template-columns:1fr 1fr;gap:0 28px}{grid-column:1 / -1;max-width:260px}{display:grid;grid-template-columns:1fr 1fr;gap:0 28px}{grid-column:1 / -1}.gs-stage{min-height:560px}{margin-top:24px}{justify-content:space-between;gap:12px}{font-size:10px}}@media(max-width:540px){.lg-demo-zoom{padding-inline:18px}{height:76px}{display:none}{width:34px;height:34px}{margin:22px 0 24px}{font-size:29px;margin-bottom:10px}{font-size:11px}{display:grid;grid-template-columns:repeat(3,1fr);gap:0 14px;border:0;margin-bottom:18px}{padding:11px 0;font-size:10px;border-bottom:1px solid var(--gs-line)}{border-bottom:2px solid var(--gs-accent)}.gs-stage{border-radius:14px;min-height:490px}.gs-navigation-placement{width:calc(100% - 24px);padding:60px 0 64px;gap:90px}.gs-stage--contour .gs-navigation-placement,.gs-stage--spotlight .gs-navigation-placement{width:calc(100% - 40px)}.gs-stage-copy h2{font-size:26px;max-width:10em;margin:0 auto 10px}.gs-stage-copy p{font-size:10px}{width:calc(100% - 48px);margin:84px 24px 32px}{height:148px}{min-height:0}.gs-photo-credit{font-size:7px;right:12px;bottom:10px}{gap:16px;padding-top:18px}{font-size:10px}{font-size:8px}.gs-stage--sidebar{min-height:650px}.gs-navigation-placement--zoom{gap:24px;padding:38px 0}.gs-stage--zoom{min-height:510px}.gs-destination{padding:20px;min-height:300px;border-radius:18px}.gs-page-body h4{font-size:22px}.gs-page-title>span:last-child{font-size:7px}.gs-sidebar-placement{padding-top:32px}{font-size:8px;gap:20px}}@media(prefers-reduced-motion:reduce){.lg-demo-zoom *{scroll-behavior:auto!important}}{min-height:680px}{margin-top:130px}.gs-stage--sidebar .gs-scene{background-position:52% 75%}{background-position:50% 30%}.gs-stage--contour .gs-scene,.gs-stage--spotlight .gs-scene,.gs-stage--notched .gs-scene,.gs-stage--zoom .gs-scene{background-position:50% 67%}.gs-navigation-placement{gap:120px}@media(min-width:801px)and (max-width:1190px){{grid-template-columns:1fr;gap:12px}{grid-template-columns:repeat(3,1fr)}}@media(max-width:540px){{min-height:0}{margin-top:80px}.gs-navigation-placement{gap:100px}.gs-navigation-placement--zoom{gap:24px}}.lg-demo-zoom[data-theme=light] .gs-stage-copy{color:#17261d;text-shadow:0 1px 8px #fff5}.gs-selected-page{color:#fffaf0}.lg-demo-zoom.gs-embedded{padding:0}{display:none}.gs-embedded .gs-workbench{max-width:none;grid-template-columns:1fr;gap:0}.gs-embedded .gs-stage{border-radius:0;min-height:100svh}@media(max-width:540px){{bottom:-42%;background-position:50% 0%}}.gs-stage .gs-navigation-placement{width:min(560px,calc(100% - 72px));gap:104px}.gs-stage .gs-navigation-placement--zoom{width:min(560px,calc(100% - 64px));gap:28px}.gs-stage .gs-stage-copy h2{font-size:32px}.gs-stage .gs-stage-copy p{background:none;text-shadow:0 1px 8px #0007;color:inherit;opacity:.85;padding:0}.gs-stage .gs-selected-page{background:#0b170f94}.gs-destination{will-change:auto}{border-top:1px solid var(--gs-line);padding-top:18px;grid-column:1 / -1}{font-size:12px;margin:0 0 22px}{display:flex;align-items:center;justify-content:space-between;font-size:11px;min-height:44px;margin-bottom:14px}{width:18px;height:18px;accent-color:var(--gs-accent)}{height:24px;background:linear-gradient(var(--gs-line),var(--gs-line)) center/100% 4px no-repeat;margin-top:7px}{width:44px;height:44px}{min-height:44px}@media(max-width:600px){.gs-stage .gs-navigation-placement{width:calc(100% - 40px);gap:96px}.gs-stage .gs-navigation-placement--zoom{width:calc(100% - 40px);gap:24px}.gs-stage .gs-stage-copy h2{font-size:24px}.gs-stage .gs-stage-copy p{font-size:10px}.gs-destination{padding:20px}{display:grid;grid-template-columns:1fr 1fr;gap:0 28px}{grid-column:1 / -1}{width:44px;height:44px}}.lg-demo-zoom{padding:0;width:100%;min-width:0;color:var(--color-foreground,CanvasText);background:var(--color-background,Canvas)}.lg-demo-zoom .gs-stage{border-radius:0;min-height:100svh}.lg-demo-zoom .gs-destination{color:var(--color-foreground,CanvasText);background:color-mix(in srgb,var(--color-card,Canvas) 60%,transparent);backdrop-filter:blur(20px);box-shadow:inset 0 1px 1px #fff8,0 14px 28px #0002}.lg-demo-zoom .gs-create-form input{font-size:16px}.lg-demo-zoom .gs-create-form button,.lg-demo-zoom .gs-page-link{min-height:44px}";
const items: GlassNavItem[] = [
{ id: "home", label: "Home", href: "#home", icon: <House /> },
{ id: "projects", label: "Projects", href: "#projects", icon: <Folder /> },
{ id: "create", label: "Create", href: "#create", icon: <Plus /> },
{ id: "inbox", label: "Inbox", href: "#inbox", icon: <Inbox />, badge: "2 unread messages" },
{ id: "profile", label: "Profile", href: "#profile", icon: <UserRound /> },
];
const extraItems: GlassNavItem[] = [
{ id: "calendar", label: "Calendar", href: "#calendar", icon: <CalendarDays /> },
{ id: "settings", label: "Settings", href: "#settings", icon: <Settings2 /> },
{ id: "help", label: "Help & feedback", href: "#help", icon: <CircleHelp /> },
];
const projectPages: GlassNavItem[] = [{ id: "studio", label: "Studio website", href: "#studio", icon: <Folder /> }, { id: "portal", label: "Client portal", href: "#portal", icon: <Folder /> }];
const knownIds = [...items, ...extraItems, ...projectPages].map(item => item.id);
const route = () => typeof location !== "undefined" && knownIds.includes(location.hash.slice(1)) ? location.hash.slice(1) : "home";
function Destination({ id, projects, onCreate }: { id: string; projects: string[]; onCreate: (name: string) => void }) {
const heading = [...items, ...extraItems, ...projectPages].find(item => item.id === id)?.label ?? "Home";
return <><div className="gs-page-title"><span className="gs-page-dot" /><h3 tabIndex={-1} data-page-heading>{heading}</h3><span>Workspace preview</span></div>
<div data-page-body className="gs-page-body">
{id === "home" && <><h4>A little space to think.</h4><p>Your projects, conversations and next ideas. All in one place.</p><a className="gs-page-link" href="#projects">Open your projects <ArrowRight /></a></>}
{id === "projects" && <><h4>Work in progress.</h4><div className="gs-project-list">{projects.map((name, i) => <div key={name + i}><span className="gs-project-symbol"><Layers /></span><strong>{name}</strong><span>{i === 0 ? "In review" : "Draft"}</span></div>)}</div></>}
{id === "create" && <><h4>Give the next idea a name.</h4><form className="gs-create-form" onSubmit={event => { event.preventDefault(); const form = event.currentTarget; const name = String(new FormData(form).get("project") ?? "").trim(); if (name) { onCreate(name); form.reset(); } }}><label htmlFor="project-name">Project name</label><div><input id="project-name" name="project" required maxLength={60} placeholder="A new beginning" /><button type="submit">Create <Plus /></button></div><small>Saved in this preview until you reload.</small></form></>}
{id === "inbox" && <><h4>The conversation continues.</h4><div className="gs-message"><span>JS</span><div><strong>Jordan</strong><p>The latest direction feels right. Ready for a closer look?</p></div></div><div className="gs-message"><span>AK</span><div><strong>Alex</strong><p>Added a few notes to the studio project.</p></div></div></>}
{id === "profile" && <><div className="gs-profile"><span>TL</span><div><h4>Troy Lorents</h4><p>Automate Flows</p></div></div><a className="gs-page-link" href="https://automateflows.io" target="_blank" rel="noreferrer">Visit Automate Flows <ArrowUpRight /></a></>}
{id === "calendar" && <><h4>Keep a little room.</h4><p>No scheduled items in this preview.</p><a className="gs-page-link" href="#create">Start something new <Plus /></a></>}
{id === "settings" && <><h4>Make it feel like you.</h4><p>Use the demo controls to adjust tint, frost, light and motion.</p></>}
{id === "help" && <><h4>A hand, when you need one.</h4><a className="gs-page-link" href="https://automateflows.io/#contact">Contact Automate Flows <ArrowUpRight /></a></>}
</div></>;
}
/** Example content and routing live only in the demo. Pass your own links and icons to the component. */
export default function LiquidGlassZoomNavigationDemo(props: Partial< typeof settings>) {
const s={...settings,...props};
const [dark,setDark]=useState(false),[active,setActive]=useState(route);
const [expanded,setExpanded]=useState(true);
const [projects,setProjects]=useState(["The studio project","A quieter workspace","Spring collection"]);
const page=useRef< HTMLDivElement>(null);
useEffect(()=>{
const root=document.documentElement,media=matchMedia('(prefers-color-scheme:dark)');
const update=()=>setDark(root.classList.contains('dark')||root.dataset.theme==='dark'||(!root.classList.contains('light')&&root.dataset.theme!=='light'&&media.matches));
const observer=new MutationObserver(update);observer.observe(root,{attributes:true,attributeFilter:['class','data-theme']});media.addEventListener('change',update);update();
const change=()=>setActive(route());addEventListener('hashchange',change);addEventListener('popstate',change);
return()=>{observer.disconnect();media.removeEventListener('change',update);removeEventListener('hashchange',change);removeEventListener('popstate',change);};
},[]);
const updateHash=(id:string)=>{if(location.hash!=="#"+id)history.pushState(null,"","#"+id);setActive(id);};
const navigate=(item:GlassNavItem,event:MouseEvent< HTMLAnchorElement>)=>{event.preventDefault();updateHash(item.id);};
const common={theme:s.useHostTheme?undefined:dark?"dark" as const:"light" as const,glass:{blur:s.frost,opacity:s.opacity,saturation:s.saturation,edge:s.edgeLight,distortion:s.refraction,tint:s.useHostTheme?undefined:s.glassTint},accent:s.useHostTheme?undefined:s.accentColor,effects:{ripple:s.rippleStrength,pointerLight:s.pointerLight,speed:s.transitionSpeed},motion:s.motion};
return <main className="lg-demo-zoom" data-theme={dark?"dark":"light"}><style>{demoCSS}</style>
<section className="gs-stage gs-stage--zoom" aria-label="Icon to Page Navigation">
<div className="gs-scene" aria-hidden="true"/><div className="gs-scene-shade" aria-hidden="true"/>
<div className={"gs-navigation-placement"+(true?" gs-navigation-placement--zoom":"")}>
<div className="gs-destination" ref={page}><Destination id={active} projects={projects} onCreate={name=>{setProjects(current=>[name,...current]);updateHash("projects");}} /></div>
<div className="gs-nav-holder"><LiquidGlassZoomNavigation {...common} items={items} activeId={active} onNavigate={navigate} effectIntensity={s.zoomDistance} targetRef={page}/></div></div>
<span className="gs-photo-credit">Photography by Kevin Lieder / Unsplash</span>
</section>
</main>;
}
















