From 6e87b758b73d182e3960c56e01966f9f811c9fe3 Mon Sep 17 00:00:00 2001 From: io-kobayashiii Date: Sun, 18 Jun 2023 22:21:24 +0900 Subject: [PATCH] #166: Upgrade Next.js --- next-env.d.ts | 1 + next.config.js | 1 + package.json | 12 +- public/globals.css | 92 ++++--- src/app/global-error.tsx | 18 ++ src/app/layout.tsx | 59 +++++ src/app/not-found.tsx | 3 + src/app/page.tsx | 39 +++ .../Card/ArticleCard/ArticleCard.module.scss | 6 - .../Card/ArticleCard/ArticleCard.tsx | 17 +- .../ArticleCardTitle/ArticleCardTitle.tsx | 4 +- src/components/Header/Header.tsx | 52 ++-- .../NeumorphismButton.module.scss | 6 - src/contexts/ContextProviders.tsx | 2 + src/contexts/GlobalNavigationStateContext.tsx | 2 + src/hooks/useApplyHighlightJs.ts | 2 + src/hooks/useGlobalNavigation.ts | 13 +- src/hooks/useGlobalNavigationStateContext.ts | 2 + src/hooks/useWindowDimensions.ts | 2 + src/pages/404.tsx | 17 -- src/pages/500.tsx | 15 -- src/pages/articles/[id].tsx | 23 +- src/pages/categories/[slug].tsx | 53 ++-- src/pages/index.tsx | 58 ----- src/utils/ApiClient.ts | 2 +- tsconfig.json | 25 +- yarn.lock | 226 ++++++++---------- 27 files changed, 415 insertions(+), 337 deletions(-) create mode 100644 src/app/global-error.tsx create mode 100644 src/app/layout.tsx create mode 100644 src/app/not-found.tsx create mode 100644 src/app/page.tsx delete mode 100644 src/pages/404.tsx delete mode 100644 src/pages/500.tsx delete mode 100644 src/pages/index.tsx diff --git a/next-env.d.ts b/next-env.d.ts index 4f11a03..fd36f94 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,5 +1,6 @@ /// /// +/// // NOTE: This file should not be edited // see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/next.config.js b/next.config.js index 4e870f8..c22bf91 100644 --- a/next.config.js +++ b/next.config.js @@ -4,4 +4,5 @@ const withBundleAnalyzer = require('@next/bundle-analyzer')({ module.exports = withBundleAnalyzer({ reactStrictMode: false, + output: 'export', }); diff --git a/package.json b/package.json index 79dc65b..cb1145e 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build": "next build && next export && next-sitemap --config sitemap.config.cjs", "analyze": "ANALYZE=true next build", "analyze:windows": "cross-env ANALYZE=true next build", - "start": "next start", + "start": "serve out", "lint": "next lint", "format": "prettier --write src/**/*.{js,json,ts,tsx,css,scss}", "watch-storybook": "concurrently \"yarn:watch:*\"", @@ -23,11 +23,9 @@ "@coreui/icons": "^3.0.0", "@coreui/icons-react": "^2.1.0", "highlight.js": "^11.7.0", - "moment": "^2.29.4", - "next": "13.1.5", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-moment": "^1.1.3" + "next": "^13.4.6", + "react": "^18.2.0", + "react-dom": "^18.2.0" }, "devDependencies": { "@babel/core": "^7.20.12", @@ -52,7 +50,7 @@ "concurrently": "^7.6.0", "cross-env": "^7.0.3", "eslint": "8.32.0", - "eslint-config-next": "13.1.5", + "eslint-config-next": "^13.4.6", "eslint-config-prettier": "^8.6.0", "husky": "^8.0.3", "lint-staged": "^13.1.0", diff --git a/public/globals.css b/public/globals.css index 060fcd9..6d09282 100644 --- a/public/globals.css +++ b/public/globals.css @@ -534,6 +534,14 @@ video { margin-top: 15px; } +.mt-40 { + margin-top: 40px; +} + +.mt-20 { + margin-top: 20px; +} + .mt-30 { margin-top: 30px; } @@ -550,10 +558,6 @@ video { margin-top: 16px; } -.mt-40 { - margin-top: 40px; -} - .mb-15 { margin-bottom: 15px; } @@ -574,6 +578,14 @@ video { display: none; } +.h-2 { + height: 2px; +} + +.h-56 { + height: 56px; +} + .w-100p { width: 100%; } @@ -582,6 +594,10 @@ video { max-width: 992px; } +.cursor-pointer { + cursor: pointer; +} + .resize { resize: both; } @@ -614,8 +630,8 @@ video { border-radius: 6px; } -.border-b-2 { - border-bottom-width: 2px; +.border { + border-width: 1px; } .border-t-2 { @@ -627,19 +643,14 @@ video { border-color: rgb(229 231 235 / var(--tw-border-opacity)); } -.bg-gray-100 { +.bg-gray-800 { --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); + background-color: rgb(31 41 55 / var(--tw-bg-opacity)); } -.bg-white { - --tw-bg-opacity: 1; - background-color: rgb(255 255 255 / var(--tw-bg-opacity)); -} - -.bg-product-github { +.bg-gray-100 { --tw-bg-opacity: 1; - background-color: rgb(23 21 21 / var(--tw-bg-opacity)); + background-color: rgb(243 244 246 / var(--tw-bg-opacity)); } .p-15 { @@ -673,24 +684,28 @@ video { padding-bottom: 5px; } -.pt-70 { - padding-top: 70px; +.pt-76 { + padding-top: 76px; } -.pb-50 { - padding-bottom: 50px; +.pb-20 { + padding-bottom: 20px; } -.pb-10 { - padding-bottom: 10px; +.pt-106 { + padding-top: 106px; } -.pt-15 { - padding-top: 15px; +.pb-50 { + padding-bottom: 50px; } -.pb-5 { - padding-bottom: 5px; +.pt-70 { + padding-top: 70px; +} + +.pt-20 { + padding-top: 20px; } .text-center { @@ -717,14 +732,14 @@ video { font-size: 12px; } -.text-32 { - font-size: 32px; -} - .text-20 { font-size: 20px; } +.text-11 { + font-size: 11px; +} + .font-bold { font-weight: 700; } @@ -738,6 +753,10 @@ video { color: rgb(255 255 255 / var(--tw-text-opacity)); } +.filter { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +} + html, body { padding: 0; @@ -747,7 +766,8 @@ body { body { font-family: 'M PLUS 1p', sans-serif; - color: #3c3c3c; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); } a { @@ -782,6 +802,10 @@ a { margin-top: 30px; } + .md\:mt-80 { + margin-top: 80px; + } + .md\:mt-50 { margin-top: 50px; } @@ -794,10 +818,6 @@ a { margin-top: 25px; } - .md\:mt-80 { - margin-top: 80px; - } - .md\:block { display: block; } @@ -893,6 +913,10 @@ a { .md\:text-32 { font-size: 32px; } + + .md\:text-12 { + font-size: 12px; + } } @media (min-width: 992px) { diff --git a/src/app/global-error.tsx b/src/app/global-error.tsx new file mode 100644 index 0000000..2c3a0d9 --- /dev/null +++ b/src/app/global-error.tsx @@ -0,0 +1,18 @@ +'use client'; + +export default function GlobalError({ + error, + reset, +}: { + error: Error; + reset: () => void; +}) { + return ( + + +

Something went wrong!

+ + + + ); +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 0000000..7d8a8c7 --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,59 @@ +import '@/styles/globals.css'; +import { Metadata } from 'next'; +import { M_PLUS_1p } from 'next/font/google'; +import ContextProviders from '@/contexts/ContextProviders'; +import ApiClient from '@/utils/ApiClient'; +import { Header } from '@/components/Header'; +import { Footer } from '@/components/Footer'; + +const mPlus1pFont = M_PLUS_1p({ + subsets: ['latin-ext'], + weight: ['400', '700'], +}); + +export const metadata: Metadata = { + title: 'For', + description: + 'Webアプリケーション開発における備忘録や実装メモなどを発信しています。', +}; + +type Props = { + children: React.ReactNode; +}; + +export default async function RootLayout({ children }: Props) { + const { contents } = await ApiClient.categories(); + return ( + + + + +