From a944973655633ee911c62110c15bfc09a1981919 Mon Sep 17 00:00:00 2001 From: Onur Date: Wed, 10 Apr 2024 18:55:12 +0200 Subject: [PATCH] feat: client component (#83) --- .eslintrc | 3 ++- bun.lockb | Bin 283078 -> 281409 bytes package.json | 3 ++- src/app/[slug]/opengraph-image.js | 8 ++++---- src/app/[slug]/page.js | 3 ++- src/app/bookmarks/[slug]/opengraph-image.js | 6 +++--- src/app/bookmarks/[slug]/page.js | 7 +++++++ src/app/bookmarks/opengraph-image.js | 8 ++++---- src/app/journey/opengraph-image.js | 8 ++++---- src/app/journey/page.js | 6 +++--- src/app/layout.js | 6 +++--- src/app/opengraph-image.js | 6 +++--- src/app/workspace/opengraph-image.js | 8 ++++---- src/app/writing/[slug]/opengraph-image.js | 8 ++++---- src/app/writing/[slug]/page.js | 10 +++++++--- src/app/writing/opengraph-image.js | 8 ++++---- src/assets/fonts/Geist-Medium.otf | Bin 0 -> 68256 bytes src/assets/fonts/Geist-Regular.otf | Bin 0 -> 66660 bytes src/assets/fonts/Geist-Regular.woff2 | Bin 0 -> 39980 bytes src/components/bookmark-list.jsx | 4 ++-- src/components/client-only.js | 15 +++++++++++++++ src/components/contentful/code-block.js | 6 +++--- src/components/floating-header.js | 2 +- src/components/gradient-bg.js | 4 ++-- src/components/loading-spinner.js | 4 ++-- src/components/mobile-drawer.js | 2 +- src/components/og-image.js | 8 +++++--- src/components/ui/button.jsx | 2 +- src/components/ui/select.jsx | 2 +- src/components/ui/sonner.jsx | 1 + src/components/writing-link.js | 4 +--- src/components/writing-list.js | 4 ++-- src/lib/constants.js | 2 +- src/lib/contentful.js | 2 ++ src/lib/fonts.js | 14 +++++++------- src/lib/utils.js | 9 ++++++--- 36 files changed, 109 insertions(+), 74 deletions(-) create mode 100644 src/assets/fonts/Geist-Medium.otf create mode 100644 src/assets/fonts/Geist-Regular.otf create mode 100644 src/assets/fonts/Geist-Regular.woff2 create mode 100644 src/components/client-only.js diff --git a/.eslintrc b/.eslintrc index a8717af1..d90f2005 100644 --- a/.eslintrc +++ b/.eslintrc @@ -5,7 +5,8 @@ "prettier", "plugin:react/recommended", "plugin:react/jsx-runtime", - "plugin:import/recommended" + "plugin:import/recommended", + "plugin:tailwindcss/recommended" ], "env": { "node": true, diff --git a/bun.lockb b/bun.lockb index 880cc39520192afdfbc2586a81c8bfb58e8fbd70..13ee3596a9089679f9bb8c1b87bfb9ac600e5806 100755 GIT binary patch delta 56873 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 diff --git a/package.json b/package.json index 98832298..9c814329 100644 --- a/package.json +++ b/package.json @@ -53,12 +53,13 @@ "autoprefixer": "^10.4.16", "cssnano": "^6.1.1", "cssnano-preset-advanced": "^6.1.1", - "eslint": "^9.0.0", + "eslint": "^8.50.0", "eslint-config-next": "^14.1.4", "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-alias": "^1.1.2", "eslint-plugin-import": "^2.28.1", "eslint-plugin-react": "^7.33.2", + "eslint-plugin-tailwindcss": "^3.15.1", "next-unused": "^0.0.6", "postcss": "^8.4.31", "prettier": "^3.0.3", diff --git a/src/app/[slug]/opengraph-image.js b/src/app/[slug]/opengraph-image.js index 10fd4fad..f1849f26 100644 --- a/src/app/[slug]/opengraph-image.js +++ b/src/app/[slug]/opengraph-image.js @@ -2,7 +2,7 @@ import { ImageResponse } from 'next/og' import { OpenGraphImage } from '@/components/og-image' import { getPageSeo } from '@/lib/contentful' -import { getMediumFont, getBoldFont } from '@/lib/fonts' +import { getRegularFont, getBoldFont } from '@/lib/fonts' import { sharedTitle, sharedImage } from '@/app/shared-metadata' export const runtime = 'edge' @@ -15,9 +15,9 @@ export const contentType = sharedImage.type export default async function Image({ params }) { const { slug } = params - const [seoData = {}, mediumFontData, boldFontData] = await Promise.all([ + const [seoData = {}, regularFontData, boldFontData] = await Promise.all([ getPageSeo(slug), - getMediumFont(), + getRegularFont(), getBoldFont() ]) const { seo: { title, description, ogImageTitle, ogImageSubtitle } = {} } = seoData @@ -67,7 +67,7 @@ export default async function Image({ params }) { fonts: [ { name: 'SF Pro', - data: mediumFontData, + data: regularFontData, style: 'normal', weight: 500 }, diff --git a/src/app/[slug]/page.js b/src/app/[slug]/page.js index a459dc22..e311fd31 100644 --- a/src/app/[slug]/page.js +++ b/src/app/[slug]/page.js @@ -56,13 +56,14 @@ export async function generateMetadata({ params }) { if (!seoData) return null const { - seo: { title, description } + seo: { title, description, keywords } } = seoData const siteUrl = `/${slug}` return { title, description, + keywords, openGraph: { title, description, diff --git a/src/app/bookmarks/[slug]/opengraph-image.js b/src/app/bookmarks/[slug]/opengraph-image.js index c1d1d20d..a4786ed5 100644 --- a/src/app/bookmarks/[slug]/opengraph-image.js +++ b/src/app/bookmarks/[slug]/opengraph-image.js @@ -1,7 +1,7 @@ import { ImageResponse } from 'next/og' import { OpenGraphImage } from '@/components/og-image' -import { getMediumFont, getBoldFont } from '@/lib/fonts' +import { getRegularFont, getBoldFont } from '@/lib/fonts' import { getBookmarks } from '@/lib/raindrop' import { sharedImage } from '@/app/shared-metadata' @@ -15,7 +15,7 @@ export const contentType = sharedImage.type export default async function Image({ params }) { const { slug } = params - const [bookmarks, mediumFontData, boldFontData] = await Promise.all([getBookmarks(), getMediumFont(), getBoldFont()]) + const [bookmarks, regularFontData, boldFontData] = await Promise.all([getBookmarks(), getRegularFont(), getBoldFont()]) const currentBookmark = bookmarks.find((bookmark) => bookmark.slug === slug) if (!currentBookmark) return null @@ -47,7 +47,7 @@ export default async function Image({ params }) { fonts: [ { name: 'SF Pro', - data: mediumFontData, + data: regularFontData, style: 'normal', weight: 500 }, diff --git a/src/app/bookmarks/[slug]/page.js b/src/app/bookmarks/[slug]/page.js index 1d912e2c..8fe9f7c7 100644 --- a/src/app/bookmarks/[slug]/page.js +++ b/src/app/bookmarks/[slug]/page.js @@ -66,6 +66,13 @@ export async function generateMetadata({ params }) { return { title: seoTitle, description: seoDescription, + keywords: [ + currentBookmark.title, + 'bookmarks', + `${currentBookmark.title} bookmarks`, + 'collection', + `${currentBookmark.title} collection` + ], openGraph: { title: seoTitle, description: seoDescription, diff --git a/src/app/bookmarks/opengraph-image.js b/src/app/bookmarks/opengraph-image.js index 3a55a4d9..93adafb0 100644 --- a/src/app/bookmarks/opengraph-image.js +++ b/src/app/bookmarks/opengraph-image.js @@ -2,7 +2,7 @@ import { ImageResponse } from 'next/og' import { OpenGraphImage } from '@/components/og-image' import { getPageSeo } from '@/lib/contentful' -import { getMediumFont, getBoldFont } from '@/lib/fonts' +import { getRegularFont, getBoldFont } from '@/lib/fonts' import { sharedImage } from '@/app/shared-metadata' export const runtime = 'edge' @@ -14,9 +14,9 @@ export const size = { export const contentType = sharedImage.type export default async function Image() { - const [seoData = {}, mediumFontData, boldFontData] = await Promise.all([ + const [seoData = {}, regularFontData, boldFontData] = await Promise.all([ getPageSeo('bookmarks'), - getMediumFont(), + getRegularFont(), getBoldFont() ]) const { seo: { title, description, ogImageTitle, ogImageSubtitle } = {} } = seoData @@ -49,7 +49,7 @@ export default async function Image() { fonts: [ { name: 'SF Pro', - data: mediumFontData, + data: regularFontData, style: 'normal', weight: 500 }, diff --git a/src/app/journey/opengraph-image.js b/src/app/journey/opengraph-image.js index 48ce0a12..344a74a0 100644 --- a/src/app/journey/opengraph-image.js +++ b/src/app/journey/opengraph-image.js @@ -2,7 +2,7 @@ import { ImageResponse } from 'next/og' import { OpenGraphImage } from '@/components/og-image' import { getPageSeo } from '@/lib/contentful' -import { getMediumFont, getBoldFont } from '@/lib/fonts' +import { getRegularFont, getBoldFont } from '@/lib/fonts' import { sharedImage } from '@/app/shared-metadata' export const runtime = 'edge' @@ -14,9 +14,9 @@ export const size = { export const contentType = sharedImage.type export default async function Image() { - const [seoData = {}, mediumFontData, boldFontData] = await Promise.all([ + const [seoData = {}, regularFontData, boldFontData] = await Promise.all([ getPageSeo('journey'), - getMediumFont(), + getRegularFont(), getBoldFont() ]) const { seo: { title, description, ogImageTitle, ogImageSubtitle } = {} } = seoData @@ -49,7 +49,7 @@ export default async function Image() { fonts: [ { name: 'SF Pro', - data: mediumFontData, + data: regularFontData, style: 'normal', weight: 500 }, diff --git a/src/app/journey/page.js b/src/app/journey/page.js index 8ed85adb..dfe6138a 100644 --- a/src/app/journey/page.js +++ b/src/app/journey/page.js @@ -46,13 +46,13 @@ export default async function Journey() {
{logIndex !== item.logs.length - 1 && (
-
+
)} -
+
-
+
diff --git a/src/app/layout.js b/src/app/layout.js index ec7bfe76..89dff464 100644 --- a/src/app/layout.js +++ b/src/app/layout.js @@ -25,12 +25,12 @@ export default async function RootLayout({ children }) { preloadGetAllPosts(isEnabled) return ( - - + + {/* eslint-disable-next-line react/no-unknown-property */}
{isEnabled && ( -
+
Draft mode is enabled diff --git a/src/app/opengraph-image.js b/src/app/opengraph-image.js index 8e8516df..5885e63e 100644 --- a/src/app/opengraph-image.js +++ b/src/app/opengraph-image.js @@ -1,7 +1,7 @@ import { ImageResponse } from 'next/og' import { OpenGraphImage } from '@/components/og-image' -import { getMediumFont, getBoldFont } from '@/lib/fonts' +import { getRegularFont, getBoldFont } from '@/lib/fonts' import { sharedTitle, sharedDescription, sharedImage } from '@/app/shared-metadata' export const runtime = 'edge' @@ -19,7 +19,7 @@ export const contentType = sharedImage.type } */ export default async function Image() { - const [mediumFontData, boldFontData] = await Promise.all([getMediumFont(), getBoldFont()]) + const [regularFontData, boldFontData] = await Promise.all([getRegularFont(), getBoldFont()]) return new ImageResponse( ( @@ -52,7 +52,7 @@ export default async function Image() { fonts: [ { name: 'SF Pro', - data: mediumFontData, + data: regularFontData, style: 'normal', weight: 500 }, diff --git a/src/app/workspace/opengraph-image.js b/src/app/workspace/opengraph-image.js index 714fc880..96a9f632 100644 --- a/src/app/workspace/opengraph-image.js +++ b/src/app/workspace/opengraph-image.js @@ -2,7 +2,7 @@ import { ImageResponse } from 'next/og' import { OpenGraphImage } from '@/components/og-image' import { getPageSeo } from '@/lib/contentful' -import { getMediumFont, getBoldFont } from '@/lib/fonts' +import { getRegularFont, getBoldFont } from '@/lib/fonts' import { sharedImage } from '@/app/shared-metadata' export const runtime = 'edge' @@ -14,9 +14,9 @@ export const size = { export const contentType = sharedImage.type export default async function Image() { - const [seoData = {}, mediumFontData, boldFontData] = await Promise.all([ + const [seoData = {}, regularFontData, boldFontData] = await Promise.all([ getPageSeo('workspace'), - getMediumFont(), + getRegularFont(), getBoldFont() ]) const { seo: { title, description, ogImageTitle, ogImageSubtitle } = {} } = seoData @@ -52,7 +52,7 @@ export default async function Image() { fonts: [ { name: 'SF Pro', - data: mediumFontData, + data: regularFontData, style: 'normal', weight: 500 }, diff --git a/src/app/writing/[slug]/opengraph-image.js b/src/app/writing/[slug]/opengraph-image.js index 5646a5da..d93204db 100644 --- a/src/app/writing/[slug]/opengraph-image.js +++ b/src/app/writing/[slug]/opengraph-image.js @@ -2,7 +2,7 @@ import { ImageResponse } from 'next/og' import { OpenGraphImage } from '@/components/og-image' import { getWritingSeo } from '@/lib/contentful' -import { getMediumFont, getBoldFont } from '@/lib/fonts' +import { getRegularFont, getBoldFont } from '@/lib/fonts' import { sharedImage } from '@/app/shared-metadata' export const runtime = 'edge' @@ -15,9 +15,9 @@ export const contentType = sharedImage.type export default async function Image({ params }) { const { slug } = params - const [seoData, mediumFontData, boldFontData] = await Promise.all([ + const [seoData, regularFontData, boldFontData] = await Promise.all([ getWritingSeo(slug), - getMediumFont(), + getRegularFont(), getBoldFont() ]) if (!seoData) return null @@ -38,7 +38,7 @@ export default async function Image({ params }) { fonts: [ { name: 'SF Pro', - data: mediumFontData, + data: regularFontData, style: 'normal', weight: 500 }, diff --git a/src/app/writing/[slug]/page.js b/src/app/writing/[slug]/page.js index 39465a55..91ace78f 100644 --- a/src/app/writing/[slug]/page.js +++ b/src/app/writing/[slug]/page.js @@ -6,6 +6,7 @@ import { RichText } from '@/components/contentful/rich-text' import { PageTitle } from '@/components/page-title' import { FloatingHeader } from '@/components/floating-header' import { WritingViews } from '@/components/writing-views' +import { ClientOnly } from '@/components/client-only' import { getPost, getWritingSeo, getAllPostSlugs } from '@/lib/contentful' import { getDateTimeFormat, isDevelopment } from '@/lib/utils' @@ -66,7 +67,7 @@ export default async function WritingSlug({ params }) { + } @@ -76,7 +77,9 @@ export default async function WritingSlug({ params }) {
-