diff --git a/next.config.ts b/next.config.ts index 9352f4e..b1765fb 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,7 +1,7 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { - /* config options here */ + output: "standalone", }; export default nextConfig; @@ -9,4 +9,7 @@ export default nextConfig; // Enable calling `getCloudflareContext()` in `next dev`. // See https://opennext.js.org/cloudflare/bindings#local-access-to-bindings. import { initOpenNextCloudflareForDev } from "@opennextjs/cloudflare"; -initOpenNextCloudflareForDev(); + +if (process.env.NODE_ENV === "development") { + initOpenNextCloudflareForDev(); +} diff --git a/package-lock.json b/package-lock.json index 285bbf3..10a80c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "@opennextjs/cloudflare": "^1.11.0", + "framer-motion": "^12.23.24", "next": "15.5.6", "react": "19.1.0", "react-dom": "19.1.0" @@ -7560,7 +7561,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.0.tgz", "integrity": "sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==", - "dev": true, "license": "MIT OR Apache-2.0", "dependencies": { "mime": "^3.0.0" @@ -7573,7 +7573,6 @@ "version": "2.7.10", "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.7.10.tgz", "integrity": "sha512-mvsNAiJSduC/9yxv1ZpCxwgAXgcuoDvkl8yaHjxoLpFxXy2ugc6TZK20EKgv4yO0vZhAEKwqJm+eGOzf8Oc45w==", - "dev": true, "license": "MIT OR Apache-2.0", "peerDependencies": { "unenv": "2.0.0-rc.24", @@ -7592,7 +7591,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -7609,7 +7607,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -7626,7 +7623,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -7643,7 +7639,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -7660,7 +7655,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -7674,7 +7668,6 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -7687,7 +7680,6 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -9368,7 +9360,6 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.5.tgz", "integrity": "sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==", - "dev": true, "license": "MIT", "dependencies": { "kleur": "^4.1.5" @@ -9378,7 +9369,6 @@ "version": "0.6.5", "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.5.tgz", "integrity": "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==", - "dev": true, "license": "MIT", "dependencies": { "@poppinss/colors": "^4.1.5", @@ -9390,7 +9380,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.2.tgz", "integrity": "sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==", - "dev": true, "license": "MIT" }, "node_modules/@rtsao/scc": { @@ -9411,7 +9400,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.1.1.tgz", "integrity": "sha512-rO92VvpgMc3kfiTjGT52LEtJ8Yc5kCWhZjLQ3LwlA4pSgPpQO7bVpYXParOD8Jwf+cVQECJo3yP/4I8aZtUQTQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -10829,7 +10817,6 @@ "version": "1.2.12", "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.12.tgz", "integrity": "sha512-uilwrK0Ygyri5dToHYdZSjcvpS2ZwX0w5aSt3GCEN9hrjxWCoeV4Z2DTXuxjwbntaLQIEEAlCeNQss5SoHvAEA==", - "dev": true, "license": "CC0-1.0" }, "node_modules/@swc/helpers": { @@ -11806,7 +11793,6 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -12132,7 +12118,6 @@ "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==", - "dev": true, "license": "MIT" }, "node_modules/body-parser": { @@ -12426,7 +12411,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1", @@ -12458,7 +12442,6 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "^1.0.0", @@ -12717,7 +12700,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -12843,7 +12825,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -13606,7 +13587,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -13980,6 +13960,33 @@ "node": ">= 0.6" } }, + "node_modules/framer-motion": { + "version": "12.23.24", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.24.tgz", + "integrity": "sha512-HMi5HRoRCTou+3fb3h9oTLyJGBxHfW+HnNE25tAXOvVx/IvwMHK0cx7IR4a2ZU6sh3IX1Z+4ts32PcYBOqka8w==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.23.23", + "motion-utils": "^12.23.6", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", @@ -13999,7 +14006,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -14201,7 +14207,6 @@ "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==", - "dev": true, "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/minimatch": { @@ -14515,7 +14520,6 @@ "version": "0.3.4", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", - "dev": true, "license": "MIT" }, "node_modules/is-async-function": { @@ -15072,7 +15076,6 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -15514,7 +15517,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, "license": "MIT", "bin": { "mime": "cli.js" @@ -15557,7 +15559,6 @@ "version": "4.20251109.1", "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20251109.1.tgz", "integrity": "sha512-btcTw1pH40PGVMwn1pZDcrodQkgY8ijKJA/r7LKgJQGqVZ1k9gqfHHtbelZp8O9bJ995eQqdURyvXMflZwCo+g==", - "dev": true, "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "0.8.1", @@ -15587,7 +15588,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -15610,7 +15610,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -15633,7 +15632,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -15650,7 +15648,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -15667,7 +15664,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -15684,7 +15680,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -15701,7 +15696,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -15718,7 +15712,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -15735,7 +15728,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -15752,7 +15744,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -15769,7 +15760,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -15792,7 +15782,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -15815,7 +15804,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -15838,7 +15826,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -15861,7 +15848,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -15884,7 +15870,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -15907,7 +15892,6 @@ "cpu": [ "wasm32" ], - "dev": true, "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { @@ -15927,7 +15911,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ @@ -15947,7 +15930,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ @@ -15964,7 +15946,6 @@ "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -15977,7 +15958,6 @@ "version": "0.33.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", - "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -16066,6 +16046,21 @@ "obliterator": "^1.6.1" } }, + "node_modules/motion-dom": { + "version": "12.23.23", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.23.tgz", + "integrity": "sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.23.6" + } + }, + "node_modules/motion-utils": { + "version": "12.23.6", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz", + "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==", + "license": "MIT" + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -16584,7 +16579,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, "license": "MIT" }, "node_modules/picocolors": { @@ -17063,7 +17057,6 @@ "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -17312,7 +17305,6 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", - "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.3.1" @@ -17380,7 +17372,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", - "dev": true, "license": "MIT", "engines": { "node": ">=4", @@ -17661,7 +17652,6 @@ "version": "10.2.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", - "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -17953,7 +17943,6 @@ "version": "7.14.0", "resolved": "https://registry.npmjs.org/undici/-/undici-7.14.0.tgz", "integrity": "sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=20.18.1" @@ -17969,7 +17958,6 @@ "version": "2.0.0-rc.24", "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", - "dev": true, "license": "MIT", "dependencies": { "pathe": "^2.0.3" @@ -18209,7 +18197,6 @@ "version": "1.20251109.0", "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20251109.0.tgz", "integrity": "sha512-VfazMiymlzos0c1t9AhNi0w8gN9+ZbCVLdEE0VDOsI22WYa6yj+pYOhpZzI/mOzCGmk/o1eNjLMkfjWli6aRVg==", - "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "bin": { @@ -18230,7 +18217,6 @@ "version": "4.48.0", "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.48.0.tgz", "integrity": "sha512-qkcwysx96XNDWXl4w/5VjAZjqWatxAq9chMXVeqv/etL9e06ouPaZ+Hwwbe5XYV2GYf/XhZVZ3fHJcTBrq60gQ==", - "dev": true, "license": "MIT OR Apache-2.0", "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", @@ -18368,7 +18354,6 @@ "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10.0.0" @@ -18500,7 +18485,6 @@ "version": "4.1.0-beta.10", "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz", "integrity": "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==", - "dev": true, "license": "MIT", "dependencies": { "@poppinss/colors": "^4.1.5", @@ -18514,7 +18498,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", - "dev": true, "license": "MIT", "dependencies": { "@poppinss/exception": "^1.2.2", @@ -18525,7 +18508,6 @@ "version": "3.22.3", "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.3.tgz", "integrity": "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index 325e443..f99e6e8 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "@opennextjs/cloudflare": "^1.11.0", + "framer-motion": "^12.23.24", "next": "15.5.6", "react": "19.1.0", "react-dom": "19.1.0" @@ -30,4 +31,4 @@ "typescript": "^5", "wrangler": "^4.48.0" } -} \ No newline at end of file +} diff --git a/public/cats/coffee/IMG_0339.jpeg b/public/cats/coffee/IMG_0339.jpeg new file mode 100644 index 0000000..e0a402d Binary files /dev/null and b/public/cats/coffee/IMG_0339.jpeg differ diff --git a/public/cats/coffee/IMG_1153.jpeg b/public/cats/coffee/IMG_1153.jpeg new file mode 100644 index 0000000..78d135b Binary files /dev/null and b/public/cats/coffee/IMG_1153.jpeg differ diff --git a/public/cats/coffee/IMG_1730.jpeg b/public/cats/coffee/IMG_1730.jpeg new file mode 100644 index 0000000..b98302e Binary files /dev/null and b/public/cats/coffee/IMG_1730.jpeg differ diff --git a/public/cats/coffee/IMG_5373.jpeg b/public/cats/coffee/IMG_5373.jpeg new file mode 100644 index 0000000..7391178 Binary files /dev/null and b/public/cats/coffee/IMG_5373.jpeg differ diff --git a/public/cats/coffee/IMG_5443.jpeg b/public/cats/coffee/IMG_5443.jpeg new file mode 100644 index 0000000..0d03d23 Binary files /dev/null and b/public/cats/coffee/IMG_5443.jpeg differ diff --git a/public/cats/coffee/IMG_5757.jpeg b/public/cats/coffee/IMG_5757.jpeg new file mode 100644 index 0000000..50e5d1b Binary files /dev/null and b/public/cats/coffee/IMG_5757.jpeg differ diff --git a/public/cats/coffee/IMG_5767.jpeg b/public/cats/coffee/IMG_5767.jpeg new file mode 100644 index 0000000..d3254ca Binary files /dev/null and b/public/cats/coffee/IMG_5767.jpeg differ diff --git a/public/cats/coffee/IMG_5768.jpeg b/public/cats/coffee/IMG_5768.jpeg new file mode 100644 index 0000000..0432ef3 Binary files /dev/null and b/public/cats/coffee/IMG_5768.jpeg differ diff --git a/public/cats/coffee/IMG_9590.jpeg b/public/cats/coffee/IMG_9590.jpeg new file mode 100644 index 0000000..364d7d7 Binary files /dev/null and b/public/cats/coffee/IMG_9590.jpeg differ diff --git a/public/cats/coffee/IMG_9591.jpeg b/public/cats/coffee/IMG_9591.jpeg new file mode 100644 index 0000000..e2c3b5a Binary files /dev/null and b/public/cats/coffee/IMG_9591.jpeg differ diff --git a/public/cats/coffee/IMG_9861.jpeg b/public/cats/coffee/IMG_9861.jpeg new file mode 100644 index 0000000..b587602 Binary files /dev/null and b/public/cats/coffee/IMG_9861.jpeg differ diff --git a/public/cats/honey-boy/IMG_0988.jpeg b/public/cats/honey-boy/IMG_0988.jpeg new file mode 100644 index 0000000..163a03c Binary files /dev/null and b/public/cats/honey-boy/IMG_0988.jpeg differ diff --git a/public/cats/miso/IMG_0457.jpeg b/public/cats/miso/IMG_0457.jpeg new file mode 100644 index 0000000..2d6e890 Binary files /dev/null and b/public/cats/miso/IMG_0457.jpeg differ diff --git a/public/cats/miso/IMG_1056.jpeg b/public/cats/miso/IMG_1056.jpeg new file mode 100644 index 0000000..3563614 Binary files /dev/null and b/public/cats/miso/IMG_1056.jpeg differ diff --git a/public/cats/mochi-and-miso/IMG_0327.jpeg b/public/cats/mochi-and-miso/IMG_0327.jpeg new file mode 100644 index 0000000..f02c1d6 Binary files /dev/null and b/public/cats/mochi-and-miso/IMG_0327.jpeg differ diff --git a/public/cats/mochi-and-miso/IMG_0334.jpeg b/public/cats/mochi-and-miso/IMG_0334.jpeg new file mode 100644 index 0000000..3da8c05 Binary files /dev/null and b/public/cats/mochi-and-miso/IMG_0334.jpeg differ diff --git a/public/cats/mochi-and-miso/IMG_8850.jpeg b/public/cats/mochi-and-miso/IMG_8850.jpeg new file mode 100644 index 0000000..0d64024 Binary files /dev/null and b/public/cats/mochi-and-miso/IMG_8850.jpeg differ diff --git a/public/cats/mochi-and-miso/IMG_9883.jpeg b/public/cats/mochi-and-miso/IMG_9883.jpeg new file mode 100644 index 0000000..ffc8a5a Binary files /dev/null and b/public/cats/mochi-and-miso/IMG_9883.jpeg differ diff --git a/public/cats/mochi/775A306A-399B-4F9D-8FB8-7447821C0008.jpeg b/public/cats/mochi/775A306A-399B-4F9D-8FB8-7447821C0008.jpeg new file mode 100644 index 0000000..2e57edc Binary files /dev/null and b/public/cats/mochi/775A306A-399B-4F9D-8FB8-7447821C0008.jpeg differ diff --git a/public/cats/mochi/IMG_0074.jpeg b/public/cats/mochi/IMG_0074.jpeg new file mode 100644 index 0000000..128fb42 Binary files /dev/null and b/public/cats/mochi/IMG_0074.jpeg differ diff --git a/public/cats/mochi/IMG_0075.jpeg b/public/cats/mochi/IMG_0075.jpeg new file mode 100644 index 0000000..46b9bb8 Binary files /dev/null and b/public/cats/mochi/IMG_0075.jpeg differ diff --git a/public/cats/mochi/IMG_0237 2.jpeg b/public/cats/mochi/IMG_0237 2.jpeg new file mode 100644 index 0000000..d61ecff Binary files /dev/null and b/public/cats/mochi/IMG_0237 2.jpeg differ diff --git a/public/cats/mochi/IMG_0237.jpeg b/public/cats/mochi/IMG_0237.jpeg new file mode 100644 index 0000000..d61ecff Binary files /dev/null and b/public/cats/mochi/IMG_0237.jpeg differ diff --git a/public/cats/mochi/IMG_0585.jpeg b/public/cats/mochi/IMG_0585.jpeg new file mode 100644 index 0000000..c202772 Binary files /dev/null and b/public/cats/mochi/IMG_0585.jpeg differ diff --git a/public/cats/mochi/IMG_9809.jpeg b/public/cats/mochi/IMG_9809.jpeg new file mode 100644 index 0000000..82d0691 Binary files /dev/null and b/public/cats/mochi/IMG_9809.jpeg differ diff --git a/src/app/cats/page.tsx b/src/app/cats/page.tsx new file mode 100644 index 0000000..e701c71 --- /dev/null +++ b/src/app/cats/page.tsx @@ -0,0 +1,114 @@ +import Image from "next/image"; +import { StudioNav } from "@/components/ui/studio-nav"; +import { cats, memorialDetails } from "@/data/cats"; + +export default function CatsPage() { + return ( +
+
+
+ +
+
+

Cat Universe

+

Portraits, memorials, and mood sliders.

+

+ Landing grid showcases Miso Soup, Honey-Boy, Coffee June-Bean, and Mochi with arched frames. +

+
+
+

Page Anatomy

+
    +
  • Profile cards with brass borders + cat badges.
  • +
  • Individual pages will host gallery, timeline, and letter box.
  • +
  • Mochi’s memorial adds sparkles + music toggle.
  • +
+
+
+
+
+ {cats.map((cat) => ( +
+
+ {`${cat.name} +
+

+ {cat.role} +

+
+
+

{cat.name}

+

{cat.description}

+
    + {cat.favorites.map((fav) => ( +
  • • {fav}
  • + ))} +
+
+ Mood: {cat.mood} +
+
+ {cat.gallery.slice(1, 4).map((src) => ( +
+ {`${cat.name} +
+ ))} +
+ {cat.isMemorial && ( +

Memorial mode enabled

+ )} +
+
+ ))} +
+
+
+

Mochi Memorial

+

{memorialDetails.note}

+

{memorialDetails.music}

+

{memorialDetails.animation}

+

Letter box saves locally for privacy.

+
+
+

Gallery Highlights

+
+ {cats + .filter((cat) => cat.gallery.length > 2) + .map((cat) => ( +
+

{cat.name}

+
+ {`${cat.name} +
+
+ ))} +
+
    +
  • • Photo gallery with filmstrip slider
  • +
  • • Mood slider (sleepy → chaotic)
  • +
  • • Toy + snack checklist tied to the pantry inventory
  • +
+
+
+
+
+ ); +} diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx new file mode 100644 index 0000000..75c9fad --- /dev/null +++ b/src/app/contact/page.tsx @@ -0,0 +1,56 @@ +import { StudioNav } from "@/components/ui/studio-nav"; + +export default function ContactPage() { + return ( +
+
+
+ +
+

Contact

+

Book, collaborate, or drop a love note.

+

+ Form styling mirrors the UI inspiration board—cream inputs, coffee borders, and terracotta submit button. +

+
+
+
+
+ + +