diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..bf61c24 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,55 @@ +# AGENTS.md + +This file provides guidance to Opencode when working with code in this repository. + +## Repository Snapshot + +TypeScript + React 19 (Next.js 15.5.4) site builder for Biohazard VFX studio. Single npm workspace. Deployed to Cloudflare Workers via OpenNext. ESLint + TypeScript strict mode enforced pre-commit. No automated tests; manual QA in Chromium/Safari only. (Sources: package.json, tsconfig.json, README.md) + +## Commands + +| Task | Command | Scope | Source | +|------|---------|-------|--------| +| Dev server | `npm run dev` | Root | package.json:6 | +| Build (Next.js) | `npm run build` | Root | package.json:7 | +| Build (Cloudflare Workers) | `npm run build:open-next` | Root | package.json:8 | +| Lint (ESLint) | `npm run lint` | Root | package.json:10 | +| Type check (TypeScript) | `npm run type-check` | Root | package.json:11 | +| Start production server | `npm run start` | Root | package.json:9 | + +**Run a single test:** Not applicable; no automated test runner configured. + +## Architecture Overview + +- **Entry point**: `src/app/layout.tsx` (root layout with Navigation & Footer); app routes in `src/app/{route}/page.tsx` (about, contact, portfolio, services). (Source: README.md:61–69, src/app/layout.tsx) +- **Components**: Functional React + Radix UI via shadcn/ui. Primitives in `src/components/ui/`; feature components in `src/components/`. (Source: README.md:70–79, package.json:16–24) +- **Data & utils**: Project and service metadata in `src/data/projects.ts` and `src/data/services.ts`; shared utilities in `src/lib/utils.ts`. (Source: README.md:80–84) +- **Styling**: Tailwind CSS 4 + CSS variables in `src/app/globals.css`; components use `clsx` + `tailwind-merge` for conditional styles. (Source: tsconfig.json, package.json:39) +- **Forms**: `react-hook-form` + Zod validation; e.g., MultiStepForm (contact page). (Source: package.json:14–15, 33, 35) +- **External services**: Instagram Feed component integrates Instagram API via `src/lib/instagram-api.ts`. Remote images from unsplash.com. (Source: next.config.ts:7–13, src/lib/) +- **Deployment**: OpenNext adapter for Cloudflare Workers. Build output in `.open-next/` (worker.js + assets). Domain routes in wrangler.toml. (Source: wrangler.toml, open-next.config.ts, next.config.ts:16–22) + +## Conventions and Rules + +From CONTRIBUTING.md: + +- **Commit format**: conventional commits (`feat(scope): subject`). Atomic commits. Examples: `feat(portfolio): add project filtering`, `fix(header): resolve mobile menu overflow`. (CONTRIBUTING.md:122–147) +- **Branch strategy**: `main` (production), `develop` (integration), `feature/*`, `fix/*`, `hotfix/*`. Always create from `develop`. (CONTRIBUTING.md:49–54, 57–62) +- **React/Next.js**: Server components by default; client-only where needed. Single responsibility per component. Keep custom CSS minimal. (CONTRIBUTING.md:80–92) +- **TypeScript**: Avoid `any`. Define interfaces for props and API responses. (CONTRIBUTING.md:74–78) + +## CI Hooks That Matter Locally + +From `.gitea/workflows/ci.yml`: + +- **Lint & type-check** (lines 14–35): `npm run lint` and `npm run type-check` run on every PR to main/develop. **Failures block merge.** +- **Build** (lines 37–65): `npm run build` with `NODE_ENV=production` required before merge. Artifacts uploaded for 7 days. + +Run both before pushing: `npm run lint && npm run type-check && npm run build`. + +## Known Pitfalls + +- **Build ignores errors**: next.config.ts (lines 17–22) sets `eslint.ignoreDuringBuilds` and `typescript.ignoreBuildErrors` to `true`. Lint and typecheck **must pass locally** before deploy or CI will catch them. (Source: next.config.ts) +- **No test suite**: Manual QA only. Verify changes in Chromium and Safari before PR. (Source: README.md:55, AGENTS.md (this file, earlier)) +- **Secrets in wrangler.toml**: Never commit credentials there. Use Gitea Secrets for env vars. (Source: CONTRIBUTING.md:153, AGENTS.md (this file, earlier)) +- **Cloudflare compatibility**: Requires `nodejs_compat` flag and compatibility date ≥ 2024-09-23. (Source: wrangler.toml:4) diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..38939fb --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,168 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +Biohazard VFX is a modern Next.js 15 website for a visual effects studio, deployed to Cloudflare Workers using OpenNext. The site showcases portfolio work, services, and provides a multi-step contact form for client intake. + +**Tech Stack:** +- Next.js 15.5.4 with App Router +- TypeScript (strict mode) +- React 19.1.0 +- Tailwind CSS 4 +- shadcn/ui (New York style) +- Framer Motion for animations +- Cloudflare Workers deployment via OpenNext + +## Development Commands + +```bash +# Development +npm run dev # Start dev server with Turbopack +npm run type-check # Run TypeScript compiler (no emit) +npm run lint # Run ESLint + +# Building +npm run build # Standard Next.js build +npm run build:open-next # Build for Cloudflare Workers (runs next build + open-next build) + +# Production +npm start # Start Next.js production server (not used for Cloudflare deployment) +``` + +## Deployment (Cloudflare Workers) + +The site deploys to Cloudflare Workers, not Vercel. Critical deployment files: + +- **`wrangler.toml`**: Cloudflare Workers configuration with routes for biohazardvfx.com +- **`open-next.config.ts`**: OpenNext adapter configuration for Cloudflare +- **`next.config.ts`**: Ignores lint/TypeScript errors during build (required for deployment) + +**Deploy commands:** +```bash +npx opennextjs-cloudflare build # Build for Cloudflare +npx wrangler deploy # Deploy to Cloudflare Workers +``` + +**Live URLs:** +- Production: https://biohazardvfx.com +- Worker: https://biohazard-vfx-website.nicholaivogelfilms.workers.dev + +**Cloudflare-specific requirements:** +- Requires `nodejs_compat` compatibility flag +- Compatibility date: `2024-09-23` or later +- Assets binding configured at `.open-next/assets` + +## Architecture + +### Path Aliases +- `@/*` maps to `./src/*` (configured in tsconfig.json) +- shadcn/ui aliases: `@/components`, `@/components/ui`, `@/lib/utils` + +### App Structure (Next.js App Router) + +Pages are in `src/app/`: +- `page.tsx` - Homepage with hero, featured projects, capabilities +- `about/page.tsx` - Studio origins, values, testimonials +- `services/page.tsx` - Service offerings with ServiceCard components +- `portfolio/page.tsx` - Masonry grid portfolio layout +- `contact/page.tsx` - Multi-step contact form +- `layout.tsx` - Root layout with Navigation and Footer (removed from individual pages) + +**Important:** Navigation and Footer components are only in the root layout. Individual pages should NOT include them. + +### Data Files + +Content is separated from components in `src/data/`: +- `projects.ts` - Project data with Project interface (id, title, description, category, thumbnailUrl, videoUrl, aspectRatio, featured, tags) +- `services.ts` - Services data + +When adding new projects or services, update these files rather than hardcoding data in components. + +### Component Organization + +Custom components in `src/components/`: +- **Layout:** Navigation, Footer +- **Page sections:** Hero, ContactSection, MissionSection, BrandingSection +- **Content display:** ProjectCard, ServiceCard, MasonryGrid, ProjectShowcase, VideoPlayer, VideoPreview +- **Interactive:** MultiStepForm (4-step client intake), HorizontalAccordion +- **Visual effects:** DepthMap, CursorDotBackground, ScrollProgressBar, SectionDivider +- **Third-party:** InstagramFeed, ClientLogoGrid + +shadcn/ui components in `src/components/ui/`: +- Uses New York style variant +- Includes: accordion, button, card, dialog, hover-card, input, label, navigation-menu, progress, select, separator, textarea + +### Styling System + +**Fonts:** Nine Google Fonts preloaded in layout.tsx: +- Geist Sans (primary), Geist Mono +- Bebas Neue, Orbitron, Inter, JetBrains Mono, Space Mono, Rajdhani, Exo 2 +- Available as CSS variables: `--font-geist-sans`, `--font-bebas`, etc. + +**Theme:** +- Dark mode by default (`className="dark"` on html element) +- CSS variables in `src/app/globals.css` +- shadcn/ui config in `components.json` (New York style, neutral base color) + +**Tailwind:** +- Tailwind CSS 4 with PostCSS +- Config: `tailwind.config.ts` +- Global styles: `src/app/globals.css` + +### SEO & Metadata + +All pages include Next.js Metadata API: +- Open Graph tags +- Twitter cards +- Canonical links +- JSON-LD structured data (Organization schema in root layout) +- metadataBase: `https://biohazardvfx.com` + +### Forms & Validation + +MultiStepForm component uses: +- react-hook-form for form state +- zod for validation (via @hookform/resolvers) +- 4 steps: Project Type → Budget/Timeline → Project Details → Contact Info +- Progress indicator using shadcn/ui Progress component + +### Images + +Next.js Image optimization configured in next.config.ts: +- Remote patterns allowed: `images.unsplash.com` +- `unoptimized: false` (optimization enabled) + +## Key Constraints + +1. **Cloudflare deployment:** Do not suggest Vercel-specific features that won't work with OpenNext +2. **Build config:** Lint and TypeScript errors are ignored during build (required for deployment). Do not remove these settings from next.config.ts +3. **Dark theme only:** Site uses dark mode by default. Do not create light mode variants unless explicitly requested +4. **Layout structure:** Navigation and Footer are in root layout only. Do not add them to individual pages +5. **Data separation:** Project and service data lives in `src/data/`. Keep content separate from components + +## Common Tasks + +**Add a new page:** +1. Create directory in `src/app/` +2. Add `page.tsx` with metadata export +3. Update Navigation component at `src/components/Navigation.tsx` + +**Add a new shadcn/ui component:** +```bash +npx shadcn@latest add [component-name] +``` + +**Update project portfolio:** +1. Edit `src/data/projects.ts` +2. Add new Project object to projects array +3. Ensure aspectRatio is set correctly for masonry layout + +**Update services:** +1. Edit `src/data/services.ts` +2. Add service object with required fields + +**Modify theme colors:** +1. Edit CSS variables in `src/app/globals.css` +2. Theme uses neutral base color with CSS variables for theming diff --git a/UI_ref/borders-and-flow.png b/UI_ref/borders-and-flow.png new file mode 100644 index 0000000..8889381 Binary files /dev/null and b/UI_ref/borders-and-flow.png differ diff --git a/UI_ref/currentsite.png b/UI_ref/currentsite.png new file mode 100644 index 0000000..dbf8771 Binary files /dev/null and b/UI_ref/currentsite.png differ diff --git a/UI_ref/layout-minimal-card.jpg b/UI_ref/layout-minimal-card.jpg new file mode 100644 index 0000000..64808b6 Binary files /dev/null and b/UI_ref/layout-minimal-card.jpg differ diff --git a/UI_ref/layout-minimal-card2.png b/UI_ref/layout-minimal-card2.png new file mode 100644 index 0000000..04457e0 Binary files /dev/null and b/UI_ref/layout-minimal-card2.png differ diff --git a/UI_ref/typography.png b/UI_ref/typography.png new file mode 100644 index 0000000..86a0fac Binary files /dev/null and b/UI_ref/typography.png differ diff --git a/open-next.config.ts b/open-next.config.ts index 7cd62c7..711bb23 100644 --- a/open-next.config.ts +++ b/open-next.config.ts @@ -1,7 +1,7 @@ const config = { default: { override: { - wrapper: "cloudflare-node", + wrapper: "cloudflare", converter: "edge", proxyExternalRequest: "fetch", incrementalCache: "dummy", @@ -13,7 +13,7 @@ const config = { middleware: { external: true, override: { - wrapper: "cloudflare-edge", + wrapper: "cloudflare", converter: "edge", proxyExternalRequest: "fetch", incrementalCache: "dummy", diff --git a/package-lock.json b/package-lock.json index c286669..80aa8ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3624,7 +3624,6 @@ "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.0.tgz", "integrity": "sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==", "license": "MIT OR Apache-2.0", - "peer": true, "dependencies": { "mime": "^3.0.0" }, @@ -3637,7 +3636,6 @@ "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.7.7.tgz", "integrity": "sha512-HtZuh166y0Olbj9bqqySckz0Rw9uHjggJeoGbDx5x+sgezBXlxO6tQSig2RZw5tgObF8mWI8zaPvQMkQZtAODw==", "license": "MIT OR Apache-2.0", - "peer": true, "peerDependencies": { "unenv": "2.0.0-rc.21", "workerd": "^1.20250927.0" @@ -3660,7 +3658,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=16" } @@ -3677,7 +3674,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=16" } @@ -3694,7 +3690,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=16" } @@ -3711,7 +3706,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=16" } @@ -3728,7 +3722,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=16" } @@ -3738,7 +3731,6 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -3751,7 +3743,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -3821,6 +3812,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -5321,6 +5313,7 @@ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", "license": "MIT", + "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -5963,7 +5956,6 @@ "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.5.tgz", "integrity": "sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==", "license": "MIT", - "peer": true, "dependencies": { "kleur": "^4.1.5" } @@ -5973,7 +5965,6 @@ "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.4.tgz", "integrity": "sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==", "license": "MIT", - "peer": true, "dependencies": { "@poppinss/colors": "^4.1.5", "@sindresorhus/is": "^7.0.2", @@ -5985,7 +5976,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -5997,8 +5987,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.2.tgz", "integrity": "sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@radix-ui/number": { "version": "1.1.1", @@ -6773,7 +6762,6 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.1.0.tgz", "integrity": "sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==", "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -7516,8 +7504,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.7.tgz", "integrity": "sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==", - "license": "CC0-1.0", - "peer": true + "license": "CC0-1.0" }, "node_modules/@standard-schema/utils": { "version": "0.3.0", @@ -7873,6 +7860,7 @@ "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -7883,6 +7871,7 @@ "integrity": "sha512-/EEvYBdT3BflCWvTMO7YkYBHVE9Ci6XdqZciZANQgKpaiDRGOLIlRo91jbTNRQjgPFWVaRxcYc0luVNFitz57A==", "devOptional": true, "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -7939,6 +7928,7 @@ "integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.46.0", "@typescript-eslint/types": "8.46.0", @@ -8480,6 +8470,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -8502,7 +8493,6 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.4.0" } @@ -8833,8 +8823,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/body-parser": { "version": "2.2.0", @@ -9124,7 +9113,6 @@ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", "license": "MIT", - "peer": true, "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" @@ -9156,7 +9144,6 @@ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "license": "MIT", - "peer": true, "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -9372,8 +9359,7 @@ "version": "6.1.4", "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/delayed-stream": { "version": "1.0.0", @@ -9529,7 +9515,6 @@ "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/antfu" } @@ -9713,6 +9698,7 @@ "integrity": "sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==", "hasInstallScript": true, "license": "MIT", + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -9777,6 +9763,7 @@ "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -9951,6 +9938,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -10243,7 +10231,6 @@ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", "license": "MIT", - "peer": true, "engines": { "node": ">=6" }, @@ -10330,8 +10317,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -10654,7 +10640,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } @@ -10854,8 +10839,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.2", @@ -11186,8 +11170,7 @@ "version": "0.3.4", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/is-async-function": { "version": "2.1.1", @@ -11740,7 +11723,6 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -12153,7 +12135,6 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "license": "MIT", - "peer": true, "bin": { "mime": "cli.js" }, @@ -12196,7 +12177,6 @@ "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20251008.0.tgz", "integrity": "sha512-sKCNYNzXG6l8qg0Oo7y8WcDKcpbgw0qwZsxNpdZilFTR4EavRow2TlcwuPSVN99jqAjhz0M4VXvTdSGdtJ2VfQ==", "license": "MIT", - "peer": true, "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", @@ -12230,7 +12210,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, @@ -12253,7 +12232,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, @@ -12276,7 +12254,6 @@ "os": [ "darwin" ], - "peer": true, "funding": { "url": "https://opencollective.com/libvips" } @@ -12293,7 +12270,6 @@ "os": [ "darwin" ], - "peer": true, "funding": { "url": "https://opencollective.com/libvips" } @@ -12310,7 +12286,6 @@ "os": [ "linux" ], - "peer": true, "funding": { "url": "https://opencollective.com/libvips" } @@ -12327,7 +12302,6 @@ "os": [ "linux" ], - "peer": true, "funding": { "url": "https://opencollective.com/libvips" } @@ -12344,7 +12318,6 @@ "os": [ "linux" ], - "peer": true, "funding": { "url": "https://opencollective.com/libvips" } @@ -12361,7 +12334,6 @@ "os": [ "linux" ], - "peer": true, "funding": { "url": "https://opencollective.com/libvips" } @@ -12378,7 +12350,6 @@ "os": [ "linux" ], - "peer": true, "funding": { "url": "https://opencollective.com/libvips" } @@ -12395,7 +12366,6 @@ "os": [ "linux" ], - "peer": true, "funding": { "url": "https://opencollective.com/libvips" } @@ -12412,7 +12382,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, @@ -12435,7 +12404,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, @@ -12458,7 +12426,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, @@ -12481,7 +12448,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, @@ -12504,7 +12470,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, @@ -12527,7 +12492,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, @@ -12547,7 +12511,6 @@ ], "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, - "peer": true, "dependencies": { "@emnapi/runtime": "^1.2.0" }, @@ -12570,7 +12533,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, @@ -12590,7 +12552,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, @@ -12603,7 +12564,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -12617,7 +12577,6 @@ "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", @@ -12656,7 +12615,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.3.tgz", "integrity": "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -13071,8 +13029,7 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", @@ -13294,8 +13251,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", @@ -13490,6 +13446,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -13499,6 +13456,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.26.0" }, @@ -13511,6 +13469,7 @@ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.65.0.tgz", "integrity": "sha512-xtOzDz063WcXvGWaHgLNrNzlsdFgtUWcb32E6WFaGTd7kPZG3EeDusjdZfUsPwKCKVXy1ZlntifaHZ4l8pAsmw==", "license": "MIT", + "peer": true, "engines": { "node": ">=18.0.0" }, @@ -14081,7 +14040,6 @@ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", "license": "MIT", - "peer": true, "dependencies": { "is-arrayish": "^0.3.1" } @@ -14149,7 +14107,6 @@ "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", "license": "MIT", - "peer": true, "engines": { "node": ">=4", "npm": ">=6" @@ -14563,6 +14520,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -14747,6 +14705,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -14759,8 +14718,7 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/unbox-primitive": { "version": "1.1.0", @@ -14786,7 +14744,6 @@ "resolved": "https://registry.npmjs.org/undici/-/undici-7.14.0.tgz", "integrity": "sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=20.18.1" } @@ -15110,7 +15067,6 @@ "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.42.2.tgz", "integrity": "sha512-1iTnbjB4F12KSP1zbfxQL495xarS+vdrZnulQP2SEcAxDTUGn7N9zk1O2WtFOc+Fhcgl+9/sdz/4AL9pF34Pwg==", "license": "MIT OR Apache-2.0", - "peer": true, "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", "@cloudflare/unenv-preset": "2.7.7", @@ -15152,7 +15108,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -15169,7 +15124,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -15186,7 +15140,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -15203,7 +15156,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -15220,7 +15172,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -15237,7 +15188,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -15254,7 +15204,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -15271,7 +15220,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -15288,7 +15236,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -15305,7 +15252,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -15322,7 +15268,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -15339,7 +15284,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -15356,7 +15300,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -15373,7 +15316,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -15390,7 +15332,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -15407,7 +15348,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -15424,7 +15364,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -15441,7 +15380,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -15458,7 +15396,6 @@ "os": [ "sunos" ], - "peer": true, "engines": { "node": ">=18" } @@ -15475,7 +15412,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -15492,7 +15428,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -15509,7 +15444,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -15520,7 +15454,6 @@ "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", "hasInstallScript": true, "license": "MIT", - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -15660,7 +15593,6 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -15752,7 +15684,6 @@ "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz", "integrity": "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==", "license": "MIT", - "peer": true, "dependencies": { "@poppinss/colors": "^4.1.5", "@poppinss/dumper": "^0.6.4", @@ -15766,7 +15697,6 @@ "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", "license": "MIT", - "peer": true, "dependencies": { "@poppinss/exception": "^1.2.2", "error-stack-parser-es": "^1.0.5" diff --git a/src/components/Temp-Placeholder.tsx b/src/components/Temp-Placeholder.tsx index be25be7..e79603a 100644 --- a/src/components/Temp-Placeholder.tsx +++ b/src/components/Temp-Placeholder.tsx @@ -96,24 +96,27 @@ export function TempPlaceholder() {
-
- - +
+
+
+
+ + + No pigeons allowed in this zone - + + +
+
+
+
-
-
+ ); -} \ No newline at end of file +} diff --git a/wrangler.toml b/wrangler.toml index c9404a0..81eea47 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -1,8 +1,9 @@ # Cloudflare Workers configuration for Next.js name = "biohazard-vfx-website" +account_id = "a19f770b9be1b20e78b8d25bdcfd3bbd" compatibility_date = "2024-09-23" compatibility_flags = ["nodejs_compat"] -main = ".open-next/worker.js" +main = ".open-next/middleware/handler.mjs" # Custom domains routes = [