ca122ad723
Deploy / deploy (push) Successful in 30s
- Unlinked, noindex page listing marker PNGs from public/set/markers (discovered at build time; filenames encode device/resolution/orientation) - Detects the current screen and offers the closest match first - One-tap full-screen viewer: wake lock, hidden controls, full grid/edges toggle, fill vs fit by aspect, back button closes, deep links via hash - Offline service worker + home-screen manifest for iPhone full screen - Marketing chrome moved into an (site) route group so /set has none Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
14 lines
423 B
TypeScript
14 lines
423 B
TypeScript
import Footer from "@/components/Footer";
|
|
import Header from "@/components/Header";
|
|
|
|
// Marketing pages: header, footer and film grain. Tools like /set live outside this group.
|
|
export default function SiteLayout({ children }: { children: React.ReactNode }) {
|
|
return (
|
|
<div className="grain flex min-h-dvh flex-col">
|
|
<Header />
|
|
<main className="flex-1">{children}</main>
|
|
<Footer />
|
|
</div>
|
|
);
|
|
}
|