mirror of
https://github.com/theoludwig/theoludwig.git
synced 2025-05-29 22:37:44 +02:00
chore: better Prettier config for easier reviews
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import { Loader } from '@/components/design/Loader'
|
||||
import { Loader } from "@/components/design/Loader"
|
||||
|
||||
const Loading = (): JSX.Element => {
|
||||
return (
|
||||
<main className='flex flex-col flex-1 items-center justify-center'>
|
||||
<main className="flex flex-col flex-1 items-center justify-center">
|
||||
<Loader />
|
||||
</main>
|
||||
)
|
||||
|
@@ -1,10 +1,10 @@
|
||||
import type { Metadata } from 'next'
|
||||
import { notFound } from 'next/navigation'
|
||||
import type { Metadata } from "next"
|
||||
import { notFound } from "next/navigation"
|
||||
|
||||
import 'katex/dist/katex.min.css'
|
||||
import "katex/dist/katex.min.css"
|
||||
|
||||
import { getBlogPostBySlug } from '@/blog/blog'
|
||||
import { BlogPost } from '@/blog/BlogPost'
|
||||
import { getBlogPostBySlug } from "@/blog/blog"
|
||||
import { BlogPost } from "@/blog/BlogPost"
|
||||
|
||||
interface BlogPostPageProps {
|
||||
params: {
|
||||
@@ -13,7 +13,7 @@ interface BlogPostPageProps {
|
||||
}
|
||||
|
||||
export const generateMetadata = async (
|
||||
props: BlogPostPageProps
|
||||
props: BlogPostPageProps,
|
||||
): Promise<Metadata> => {
|
||||
const blogPost = await getBlogPostBySlug(props.params.slug)
|
||||
if (blogPost == null) {
|
||||
@@ -26,12 +26,12 @@ export const generateMetadata = async (
|
||||
description,
|
||||
openGraph: {
|
||||
title,
|
||||
description
|
||||
description,
|
||||
},
|
||||
twitter: {
|
||||
title,
|
||||
description
|
||||
}
|
||||
description,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
import { Loader } from '@/components/design/Loader'
|
||||
import { Loader } from "@/components/design/Loader"
|
||||
|
||||
const Loading = (): JSX.Element => {
|
||||
return (
|
||||
<main className='flex flex-col flex-1 items-center justify-center'>
|
||||
<main className="flex flex-col flex-1 items-center justify-center">
|
||||
<Loader />
|
||||
</main>
|
||||
)
|
||||
|
@@ -1,36 +1,36 @@
|
||||
import { Suspense } from 'react'
|
||||
import type { Metadata } from 'next'
|
||||
import { Suspense } from "react"
|
||||
import type { Metadata } from "next"
|
||||
|
||||
import { BlogPosts } from '@/blog/BlogPosts'
|
||||
import { Loader } from '@/components/design/Loader'
|
||||
import { BlogPosts } from "@/blog/BlogPosts"
|
||||
import { Loader } from "@/components/design/Loader"
|
||||
|
||||
const title = 'Blog | Théo LUDWIG'
|
||||
const title = "Blog | Théo LUDWIG"
|
||||
const description =
|
||||
'The latest news about my journey of learning computer science.'
|
||||
"The latest news about my journey of learning computer science."
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title,
|
||||
description,
|
||||
openGraph: {
|
||||
title,
|
||||
description
|
||||
description,
|
||||
},
|
||||
twitter: {
|
||||
title,
|
||||
description
|
||||
}
|
||||
description,
|
||||
},
|
||||
}
|
||||
|
||||
const BlogPage = async (): Promise<JSX.Element> => {
|
||||
return (
|
||||
<main className='flex flex-1 flex-col flex-wrap items-center'>
|
||||
<div className='mt-10 flex flex-col items-center'>
|
||||
<h1 className='text-4xl font-semibold'>Blog</h1>
|
||||
<p className='mt-6 text-center' data-cy='blog-post-date'>
|
||||
<main className="flex flex-1 flex-col flex-wrap items-center">
|
||||
<div className="mt-10 flex flex-col items-center">
|
||||
<h1 className="text-4xl font-semibold">Blog</h1>
|
||||
<p className="mt-6 text-center" data-cy="blog-post-date">
|
||||
{description}
|
||||
</p>
|
||||
</div>
|
||||
<Suspense fallback={<Loader className='mt-8' />}>
|
||||
<Suspense fallback={<Loader className="mt-8" />}>
|
||||
<BlogPosts />
|
||||
</Suspense>
|
||||
</main>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
'use client'
|
||||
"use client"
|
||||
|
||||
import { useEffect } from 'react'
|
||||
import { useEffect } from "react"
|
||||
|
||||
export interface ErrorHandlingProps {
|
||||
error: Error
|
||||
@@ -14,17 +14,17 @@ const ErrorHandling = (props: ErrorHandlingProps): JSX.Element => {
|
||||
}, [error])
|
||||
|
||||
return (
|
||||
<main className='flex flex-col flex-1 items-center justify-center'>
|
||||
<h1 className='my-6 text-4xl font-semibold'>
|
||||
Error{' '}
|
||||
<main className="flex flex-col flex-1 items-center justify-center">
|
||||
<h1 className="my-6 text-4xl font-semibold">
|
||||
Error{" "}
|
||||
<span
|
||||
className='text-yellow dark:text-yellow-dark'
|
||||
data-cy='status-code'
|
||||
className="text-yellow dark:text-yellow-dark"
|
||||
data-cy="status-code"
|
||||
>
|
||||
500
|
||||
</span>
|
||||
</h1>
|
||||
<p className='text-center text-lg'>Server error</p>
|
||||
<p className="text-center text-lg">Server error</p>
|
||||
</main>
|
||||
)
|
||||
}
|
||||
|
@@ -16,7 +16,7 @@
|
||||
}
|
||||
|
||||
.prose [id]::before {
|
||||
content: '';
|
||||
content: "";
|
||||
display: block;
|
||||
height: 90px;
|
||||
margin-top: -90px;
|
||||
@@ -39,9 +39,9 @@
|
||||
.prose code {
|
||||
color: #ce9178;
|
||||
}
|
||||
.prose :where(code):not(:where([class~='not-prose'] *))::before,
|
||||
.prose :where(code):not(:where([class~='not-prose'] *))::after {
|
||||
content: '';
|
||||
.prose :where(code):not(:where([class~="not-prose"] *))::before,
|
||||
.prose :where(code):not(:where([class~="not-prose"] *))::after {
|
||||
content: "";
|
||||
}
|
||||
.shiki {
|
||||
white-space: pre-wrap !important;
|
||||
|
@@ -1,21 +1,21 @@
|
||||
import type { Metadata } from 'next'
|
||||
import classNames from 'clsx'
|
||||
import type { Metadata } from "next"
|
||||
import classNames from "clsx"
|
||||
|
||||
import '@fontsource/montserrat/400.css'
|
||||
import '@fontsource/montserrat/600.css'
|
||||
import './globals.css'
|
||||
import "@fontsource/montserrat/400.css"
|
||||
import "@fontsource/montserrat/600.css"
|
||||
import "./globals.css"
|
||||
|
||||
import { Header } from '@/components/Header'
|
||||
import { Footer } from '@/components/Footer'
|
||||
import { getI18n } from '@/i18n/i18n.server'
|
||||
import { getTheme } from '@/theme/theme.server'
|
||||
import { Header } from "@/components/Header"
|
||||
import { Footer } from "@/components/Footer"
|
||||
import { getI18n } from "@/i18n/i18n.server"
|
||||
import { getTheme } from "@/theme/theme.server"
|
||||
|
||||
const title = 'Théo LUDWIG'
|
||||
const title = "Théo LUDWIG"
|
||||
const description =
|
||||
'Théo LUDWIG - Developer Full Stack • Open-Source enthusiast'
|
||||
const image = '/images/icon-96x96.png'
|
||||
const url = new URL('https://theoludwig.fr')
|
||||
const locale = 'fr-FR, en-US'
|
||||
"Théo LUDWIG - Developer Full Stack • Open-Source enthusiast"
|
||||
const image = "/images/icon-96x96.png"
|
||||
const url = new URL("https://theoludwig.fr")
|
||||
const locale = "fr-FR, en-US"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title,
|
||||
@@ -30,21 +30,21 @@ export const metadata: Metadata = {
|
||||
{
|
||||
url: image,
|
||||
width: 96,
|
||||
height: 96
|
||||
}
|
||||
height: 96,
|
||||
},
|
||||
],
|
||||
locale,
|
||||
type: 'website'
|
||||
type: "website",
|
||||
},
|
||||
icons: {
|
||||
icon: '/images/icon-96x96.png'
|
||||
icon: "/images/icon-96x96.png",
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary',
|
||||
card: "summary",
|
||||
title,
|
||||
description,
|
||||
images: [image]
|
||||
}
|
||||
images: [image],
|
||||
},
|
||||
}
|
||||
|
||||
interface RootLayoutProps {
|
||||
@@ -61,14 +61,14 @@ const RootLayout = (props: RootLayoutProps): JSX.Element => {
|
||||
<html
|
||||
lang={i18n.locale}
|
||||
className={classNames({
|
||||
dark: theme === 'dark',
|
||||
light: theme === 'light'
|
||||
dark: theme === "dark",
|
||||
light: theme === "light",
|
||||
})}
|
||||
style={{
|
||||
colorScheme: theme
|
||||
colorScheme: theme,
|
||||
}}
|
||||
>
|
||||
<body className='bg-white font-headline text-black dark:bg-black dark:text-white flex flex-col min-h-screen'>
|
||||
<body className="bg-white font-headline text-black dark:bg-black dark:text-white flex flex-col min-h-screen">
|
||||
<Header />
|
||||
{children}
|
||||
<Footer />
|
||||
|
@@ -1,8 +1,8 @@
|
||||
import { Loader } from '@/components/design/Loader'
|
||||
import { Loader } from "@/components/design/Loader"
|
||||
|
||||
const Loading = (): JSX.Element => {
|
||||
return (
|
||||
<main className='flex flex-col flex-1 items-center justify-center'>
|
||||
<main className="flex flex-col flex-1 items-center justify-center">
|
||||
<Loader />
|
||||
</main>
|
||||
)
|
||||
|
@@ -1,28 +1,28 @@
|
||||
import Link from 'next/link'
|
||||
import Link from "next/link"
|
||||
|
||||
import { getI18n } from '@/i18n/i18n.server'
|
||||
import { getI18n } from "@/i18n/i18n.server"
|
||||
|
||||
const NotFound = (): JSX.Element => {
|
||||
const i18n = getI18n()
|
||||
|
||||
return (
|
||||
<main className='flex flex-col flex-1 items-center justify-center'>
|
||||
<h1 className='my-6 text-4xl font-semibold'>
|
||||
{i18n.translate('errors.error')}{' '}
|
||||
<main className="flex flex-col flex-1 items-center justify-center">
|
||||
<h1 className="my-6 text-4xl font-semibold">
|
||||
{i18n.translate("errors.error")}{" "}
|
||||
<span
|
||||
className='text-yellow dark:text-yellow-dark'
|
||||
data-cy='status-code'
|
||||
className="text-yellow dark:text-yellow-dark"
|
||||
data-cy="status-code"
|
||||
>
|
||||
404
|
||||
</span>
|
||||
</h1>
|
||||
<p className='text-center text-lg'>
|
||||
{i18n.translate('errors.not-found')}{' '}
|
||||
<p className="text-center text-lg">
|
||||
{i18n.translate("errors.not-found")}{" "}
|
||||
<Link
|
||||
href='/'
|
||||
className='text-yellow hover:underline dark:text-yellow-dark'
|
||||
href="/"
|
||||
className="text-yellow hover:underline dark:text-yellow-dark"
|
||||
>
|
||||
{i18n.translate('errors.return-to-home-page')}
|
||||
{i18n.translate("errors.return-to-home-page")}
|
||||
</Link>
|
||||
</p>
|
||||
</main>
|
||||
|
36
app/page.tsx
36
app/page.tsx
@@ -1,27 +1,27 @@
|
||||
import { RevealFade } from '@/components/design/RevealFade'
|
||||
import { Section } from '@/components/design/Section'
|
||||
import { Interests } from '@/components/Interests'
|
||||
import { Portfolio } from '@/components/Portfolio'
|
||||
import { Profile } from '@/components/Profile'
|
||||
import { SocialMediaList } from '@/components/Profile/SocialMediaList'
|
||||
import { Skills } from '@/components/Skills'
|
||||
import { OpenSource } from '@/components/OpenSource'
|
||||
import { getI18n } from '@/i18n/i18n.server'
|
||||
import { RevealFade } from "@/components/design/RevealFade"
|
||||
import { Section } from "@/components/design/Section"
|
||||
import { Interests } from "@/components/Interests"
|
||||
import { Portfolio } from "@/components/Portfolio"
|
||||
import { Profile } from "@/components/Profile"
|
||||
import { SocialMediaList } from "@/components/Profile/SocialMediaList"
|
||||
import { Skills } from "@/components/Skills"
|
||||
import { OpenSource } from "@/components/OpenSource"
|
||||
import { getI18n } from "@/i18n/i18n.server"
|
||||
|
||||
const HomePage = (): JSX.Element => {
|
||||
const i18n = getI18n()
|
||||
|
||||
return (
|
||||
<main className='flex flex-col md:mx-auto md:max-w-4xl lg:max-w-7xl'>
|
||||
<Section isMain id='about'>
|
||||
<main className="flex flex-col md:mx-auto md:max-w-4xl lg:max-w-7xl">
|
||||
<Section isMain id="about">
|
||||
<Profile />
|
||||
<SocialMediaList />
|
||||
</Section>
|
||||
|
||||
<RevealFade>
|
||||
<Section
|
||||
id='interests'
|
||||
heading={i18n.translate('home.interests.title')}
|
||||
id="interests"
|
||||
heading={i18n.translate("home.interests.title")}
|
||||
>
|
||||
<Interests />
|
||||
</Section>
|
||||
@@ -29,8 +29,8 @@ const HomePage = (): JSX.Element => {
|
||||
|
||||
<RevealFade>
|
||||
<Section
|
||||
id='skills'
|
||||
heading={i18n.translate('home.skills.title')}
|
||||
id="skills"
|
||||
heading={i18n.translate("home.skills.title")}
|
||||
withoutShadowContainer
|
||||
>
|
||||
<Skills />
|
||||
@@ -39,8 +39,8 @@ const HomePage = (): JSX.Element => {
|
||||
|
||||
<RevealFade>
|
||||
<Section
|
||||
id='portfolio'
|
||||
heading={i18n.translate('home.portfolio.title')}
|
||||
id="portfolio"
|
||||
heading={i18n.translate("home.portfolio.title")}
|
||||
withoutShadowContainer
|
||||
>
|
||||
<Portfolio />
|
||||
@@ -48,7 +48,7 @@ const HomePage = (): JSX.Element => {
|
||||
</RevealFade>
|
||||
|
||||
<RevealFade>
|
||||
<Section id='open-source' heading='Open source' withoutShadowContainer>
|
||||
<Section id="open-source" heading="Open source" withoutShadowContainer>
|
||||
<OpenSource />
|
||||
</Section>
|
||||
</RevealFade>
|
||||
|
Reference in New Issue
Block a user