diff --git a/package-lock.json b/package-lock.json index b785898..89cd16e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "@trpc/react-query": "^10.37.1", "@trpc/server": "^10.37.1", "@types/mapbox-gl": "^2.7.14", + "@vercel/og": "^0.5.20", "class-variance-authority": "^0.7.0", "clsx": "^2.0.0", "cmdk": "^0.2.0", @@ -36,6 +37,7 @@ "mixpanel-browser": "^2.47.0", "next": "^13.4.19", "next-auth": "^4.23.0", + "next-seo": "^6.4.0", "react": "18.2.0", "react-dom": "18.2.0", "react-map-gl": "^7.1.6", @@ -1874,12 +1876,35 @@ "@babel/runtime": "^7.13.10" } }, + "node_modules/@resvg/resvg-wasm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-wasm/-/resvg-wasm-2.6.0.tgz", + "integrity": "sha512-iDkBM6Ivex8nULtBu8cX670/lfsGxq8U1cuqE+qS9xFpPQP1enPdVm/33Kq3+B+bAldA+AHNZnCgpmlHo/fZrQ==", + "engines": { + "node": ">= 10" + } + }, "node_modules/@rushstack/eslint-patch": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==", "dev": true }, + "node_modules/@shuding/opentype.js": { + "version": "1.4.0-beta.0", + "resolved": "https://registry.npmjs.org/@shuding/opentype.js/-/opentype.js-1.4.0-beta.0.tgz", + "integrity": "sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==", + "dependencies": { + "fflate": "^0.7.3", + "string.prototype.codepointat": "^0.2.1" + }, + "bin": { + "ot": "bin/ot" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/@swc/helpers": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", @@ -2449,6 +2474,19 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, + "node_modules/@vercel/og": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/@vercel/og/-/og-0.5.20.tgz", + "integrity": "sha512-zi+ZXSx/peXA+1lq7s/5Vzmm/TTfTSf/5P1qNYnh42+7X+pZmahWoXt0i7SWiq3WagfsNUNA4hUDapDiHRoXqA==", + "dependencies": { + "@resvg/resvg-wasm": "2.6.0", + "satori": "0.10.9", + "yoga-wasm-web": "0.3.3" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/acorn": { "version": "8.11.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", @@ -2820,6 +2858,14 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2971,6 +3017,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001561", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", @@ -3336,8 +3390,7 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/colorbrewer": { "version": "1.0.0", @@ -3424,6 +3477,34 @@ "node": ">= 8" } }, + "node_modules/css-background-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/css-background-parser/-/css-background-parser-0.1.0.tgz", + "integrity": "sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==" + }, + "node_modules/css-box-shadow": { + "version": "1.0.0-3", + "resolved": "https://registry.npmjs.org/css-box-shadow/-/css-box-shadow-1.0.0-3.tgz", + "integrity": "sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg==" + }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "node_modules/csscolorparser": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", @@ -3888,6 +3969,11 @@ "node": ">=6" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -4403,6 +4489,11 @@ "reusify": "^1.0.4" } }, + "node_modules/fflate": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz", + "integrity": "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==" + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -4842,6 +4933,17 @@ "node": ">= 0.4" } }, + "node_modules/hex-rgb": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-4.3.0.tgz", + "integrity": "sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -5524,6 +5626,15 @@ "node": ">=10" } }, + "node_modules/linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "dependencies": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -5865,6 +5976,16 @@ } } }, + "node_modules/next-seo": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/next-seo/-/next-seo-6.4.0.tgz", + "integrity": "sha512-XQFxkOL2hw0YE+P100HbI3EAvcludlHPxuzMgaIjKb7kPK0CvjGvLFjd9hszZFEDc5oiQkGFA8+cuWcnip7eYA==", + "peerDependencies": { + "next": "^8.1.1-canary.54 || >=9.0.0", + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -6109,6 +6230,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -6121,6 +6247,15 @@ "node": ">=6" } }, + "node_modules/parse-css-color": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/parse-css-color/-/parse-css-color-0.2.1.tgz", + "integrity": "sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==", + "dependencies": { + "color-name": "^1.1.4", + "hex-rgb": "^4.1.0" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -6883,6 +7018,31 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/satori": { + "version": "0.10.9", + "resolved": "https://registry.npmjs.org/satori/-/satori-0.10.9.tgz", + "integrity": "sha512-XU9EELUEZuioT4acLIpCXxHcFzrsC8muvg0MY28d+TlqwxbkTzBmWbw+3+hnCzXT7YZ0Qm8k3eXktDaEu+qmEw==", + "dependencies": { + "@shuding/opentype.js": "1.4.0-beta.0", + "css-background-parser": "^0.1.0", + "css-box-shadow": "1.0.0-3", + "css-to-react-native": "^3.0.0", + "emoji-regex": "^10.2.1", + "escape-html": "^1.0.3", + "linebreak": "^1.1.0", + "parse-css-color": "^0.2.1", + "postcss-value-parser": "^4.2.0", + "yoga-wasm-web": "^0.3.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/satori/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" + }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -7113,6 +7273,11 @@ "node": ">=10.0.0" } }, + "node_modules/string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" + }, "node_modules/string.prototype.matchall": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", @@ -7460,6 +7625,11 @@ "integrity": "sha512-cxHzpa5JgsugY9NUVRH43gPaGJw/29LecAn4X7UGOP64+kB8pU4VQ3bIhSyfb5Mk4jDxwl3yk330L/EIhbJ5aw==", "deprecated": "This module is now under the @mapbox namespace: install @mapbox/tilebelt instead" }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, "node_modules/tinyqueue": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", @@ -7665,6 +7835,15 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, "node_modules/union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -7947,6 +8126,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoga-wasm-web": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz", + "integrity": "sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==" + }, "node_modules/zod": { "version": "3.22.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", diff --git a/package.json b/package.json index 81117e5..154bcb1 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "@trpc/react-query": "^10.37.1", "@trpc/server": "^10.37.1", "@types/mapbox-gl": "^2.7.14", + "@vercel/og": "^0.5.20", "class-variance-authority": "^0.7.0", "clsx": "^2.0.0", "cmdk": "^0.2.0", @@ -39,6 +40,7 @@ "mixpanel-browser": "^2.47.0", "next": "^13.4.19", "next-auth": "^4.23.0", + "next-seo": "^6.4.0", "react": "18.2.0", "react-dom": "18.2.0", "react-map-gl": "^7.1.6", diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index da6b0d1..68977a9 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -11,20 +11,86 @@ import { import "~/styles/globals.css"; import Head from "next/head"; +import type { Metadata } from "next"; +import { NextSeo } from "next-seo"; +import Test from "./test"; -const title = "PostCovet"; +const title = "PostCovet 33333"; const description = "San Francisco Deed Search. Search and find deed data within seconds. Address Search. Individual Name"; const url = "https://postcovet.com"; const image = `${url}/postcovet.png`; +// https://nextjs.org/docs/app/api-reference/functions/generate-metadata#template +// either use the static metadata object from next or +// the dynamic metadata with generateMetaData({ params }) +// another approach: +// https://github.com/vercel/next.js/issues/35172#issuecomment-1501040414 +export const metadata: Metadata = { + title, + description, + openGraph: { + title: "Post Covet 2222", + description: "Find owners of single family homes in SF!", + images: [ + { + url: `${url}/postcovet.png`, + width: 800, + height: 600, + }, + { + url: `${url}/postcovet.png`, + width: 1800, + height: 1600, + alt: "Post Covet Logo San Francisco", + }, + ], + locale: "en_US", + type: "website", + }, +}; + const MyApp: AppType<{ session: Session | null }> = ({ Component, pageProps: { session, ...pageProps }, }) => { return ( - <> - +
+ + {/* = ({ {title} - - + */} + {/* + */} + + {/* Conditionally render based on authentication status */} + + {/* User is signed in, render the main content */} + + + + + {/* User is signed out, render your sign-in page */} + + - +
); }; diff --git a/src/pages/api/og.tsx b/src/pages/api/og.tsx new file mode 100644 index 0000000..3da69d1 --- /dev/null +++ b/src/pages/api/og.tsx @@ -0,0 +1,80 @@ +import { NextRequest, NextResponse } from "next/server"; + +export const config = { + runtime: "experimental-edge", +}; + +const handle = (req: NextRequest) => { + return NextResponse.json({ hello: true }); +}; + +export default handle; + +// import { ImageResponse } from "@vercel/og"; + +// export const config = { +// runtime: "edge", +// }; + +// export default function handler() { +// return new ImageResponse( +// ( +//
+// 👋 Hello 你好 नमस्ते こんにちは สวัสดีค่ะ 안녕 добрий день Hallá +//
+// ), +// { +// width: 1200, +// height: 630, +// }, +// ); +// } + +// import { ImageResponse } from "@vercel/og"; +// import { NextRequest } from "next/server"; + +// export const config = { +// runtime: "edge", +// }; + +// // Trying this from +// // https://www.richardjzhang.com/posts/og-image-generation-in-nextjs +// // but it's currently not working + +// export default function handler() { +// return new ImageResponse( +// ( +//
+// Hello world! +//
+// ), +// { +// width: 1200, +// height: 630, +// }, +// ); +// } diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 8c6f850..55ee4e4 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -12,6 +12,7 @@ import { useMapStore } from "~/store/store"; import { useEffect, useState } from "react"; import { UserButton, SignInButton, useUser, useSignIn } from "@clerk/nextjs"; import { env } from "process"; +import { Metadata } from "next"; const LoadingView = () => { return ( @@ -23,7 +24,53 @@ const LoadingView = () => { ); }; +export const metadata: Metadata = { + title: "Post Covet", + description: "Find owners of single family homes in SF", + generator: "Next.js", + applicationName: "Next.js", + referrer: "origin-when-cross-origin", + keywords: ["deed search", "property records in San Francisco", "own homes"], + authors: [{ name: "Seb" }, { name: "Josh", url: "https://nextjs.org" }], + robots: { + index: false, + follow: true, + nocache: true, + googleBot: { + index: true, + follow: false, + noimageindex: true, + "max-video-preview": -1, + "max-image-preview": "large", + "max-snippet": -1, + }, + }, + openGraph: { + title: "Next.js", + description: "The React Framework for the Web", + url: "https://nextjs.org", + siteName: "Next.js", + images: [ + { + url: "https://nextjs.org/og.png", + width: 800, + height: 600, + }, + { + url: "https://nextjs.org/og-alt.png", + width: 1800, + height: 1600, + alt: "My custom alt", + }, + ], + locale: "en_US", + type: "website", + }, +}; + const DeckMap = dynamic(() => import("~/components/DeckMap"), { + // SRR has to be false because of this: + // https://github.com/visgl/deck.gl/issues/7735#issuecomment-1464197310 ssr: false, loading: () => , }); @@ -38,33 +85,38 @@ export default function Home() { const addressCounter = useMapStore((state) => state.addressCounter); - const { isSignedIn, user, isLoaded } = useUser(); - const { signIn } = useSignIn(); + // const { isSignedIn, user, isLoaded } = useUser(); + // const { signIn } = useSignIn(); - useEffect(() => { - if (user) { - mixpanel.identify(user.id); - mixpanel.register({ - Email: user.primaryEmailAddress?.emailAddress, - }); - mixpanel.people.set({ - // Email: user.primaryEmailAddress?.emailAddress, - name: user.fullName, - createdAt: new Date().toISOString(), - }); - } - }, [signIn?.status, user]); + // useEffect(() => { + // if (user) { + // mixpanel.identify(user.id); + // mixpanel.register({ + // Email: user.primaryEmailAddress?.emailAddress, + // }); + // mixpanel.people.set({ + // // Email: user.primaryEmailAddress?.emailAddress, + // name: user.fullName, + // createdAt: new Date().toISOString(), + // }); + // } + // }, [signIn?.status, user]); return ( <>
+ {/* hypothesis: dynamically importing deckmap is causing the head tag to not work. + approach: try using a react-map component (non-dynamically loaded and see if meta tags work) + + also try this: https://github.com/garmeeh/next-seo + */}
{/* */} - {isSignedIn ? ( + {true ? ( ) : (
diff --git a/src/pages/test.tsx b/src/pages/test.tsx new file mode 100644 index 0000000..80a35a7 --- /dev/null +++ b/src/pages/test.tsx @@ -0,0 +1,27 @@ +import Head from "next/head"; +import React from "react"; + +export default function test() { + const title = "PostCovet 33333"; + const description = + "San Francisco Deed Search. Search and find deed data within seconds. Address Search. Individual Name"; + const url = "https://postcovet.com"; + const image = `${url}/postcovet.png`; + + return ( +
+ + + + + + + + +
test
+
+ ); +}