feat: new logo v1
| @@ -25,7 +25,9 @@ const BlogPage = async (): Promise<JSX.Element> => { | |||||||
|   return ( |   return ( | ||||||
|     <main className="flex flex-1 flex-col flex-wrap items-center"> |     <main className="flex flex-1 flex-col flex-wrap items-center"> | ||||||
|       <div className="mt-10 flex flex-col items-center"> |       <div className="mt-10 flex flex-col items-center"> | ||||||
|         <h1 className="text-4xl font-semibold">Blog</h1> |         <h1 className="text-4xl font-semibold text-yellow dark:text-yellow-dark"> | ||||||
|  |           Blog | ||||||
|  |         </h1> | ||||||
|         <p className="mt-6 text-center" data-cy="blog-post-date"> |         <p className="mt-6 text-center" data-cy="blog-post-date"> | ||||||
|           {description} |           {description} | ||||||
|         </p> |         </p> | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								app/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.4 KiB | 
| @@ -29,7 +29,7 @@ | |||||||
|  |  | ||||||
| .prose a, | .prose a, | ||||||
| .prose strong { | .prose strong { | ||||||
|   @apply text-yellow dark:text-yellow-dark; |   @apply text-yellow dark:text-yellow-dark font-semibold; | ||||||
| } | } | ||||||
|  |  | ||||||
| strong, | strong, | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ import { getTheme } from "@/theme/theme.server" | |||||||
| const title = "Théo LUDWIG" | const title = "Théo LUDWIG" | ||||||
| const description = | const description = | ||||||
|   "Théo LUDWIG - Developer Full Stack • Open-Source Enthusiast" |   "Théo LUDWIG - Developer Full Stack • Open-Source Enthusiast" | ||||||
| const image = "/images/icon-96x96.png" | const image = "/images/logo.png" | ||||||
| const url = new URL("https://theoludwig.fr") | const url = new URL("https://theoludwig.fr") | ||||||
| const locale = "fr-FR, en-US" | const locale = "fr-FR, en-US" | ||||||
|  |  | ||||||
| @@ -36,9 +36,6 @@ export const metadata: Metadata = { | |||||||
|     locale, |     locale, | ||||||
|     type: "website", |     type: "website", | ||||||
|   }, |   }, | ||||||
|   icons: { |  | ||||||
|     icon: "/images/icon-96x96.png", |  | ||||||
|   }, |  | ||||||
|   twitter: { |   twitter: { | ||||||
|     card: "summary", |     card: "summary", | ||||||
|     title, |     title, | ||||||
|   | |||||||
| @@ -21,7 +21,9 @@ export const BlogPost = async (props: BlogPostProps): Promise<JSX.Element> => { | |||||||
|   return ( |   return ( | ||||||
|     <main className="break-wrap-words flex flex-1 flex-col flex-wrap items-center justify-center"> |     <main className="break-wrap-words flex flex-1 flex-col flex-wrap items-center justify-center"> | ||||||
|       <div className="my-10 flex flex-col items-center text-center"> |       <div className="my-10 flex flex-col items-center text-center"> | ||||||
|         <h1 className="text-3xl font-semibold">{blogPost.frontmatter.title}</h1> |         <h1 className="text-3xl font-semibold text-yellow dark:text-yellow-dark"> | ||||||
|  |           {blogPost.frontmatter.title} | ||||||
|  |         </h1> | ||||||
|         <p className="mt-2" data-cy="blog-post-date"> |         <p className="mt-2" data-cy="blog-post-date"> | ||||||
|           {date.format( |           {date.format( | ||||||
|             new Date(blogPost.frontmatter.publishedOn), |             new Date(blogPost.frontmatter.publishedOn), | ||||||
|   | |||||||
| @@ -23,7 +23,10 @@ export const BlogPosts = async (): Promise<JSX.Element> => { | |||||||
|               data-cy={post.slug} |               data-cy={post.slug} | ||||||
|             > |             > | ||||||
|               <ShadowContainer className="cursor-pointer p-6 transition duration-200 ease-in-out hover:-translate-y-2"> |               <ShadowContainer className="cursor-pointer p-6 transition duration-200 ease-in-out hover:-translate-y-2"> | ||||||
|                 <h2 data-cy="blog-post-title" className="text-xl font-semibold"> |                 <h2 | ||||||
|  |                   data-cy="blog-post-title" | ||||||
|  |                   className="text-xl font-semibold text-yellow dark:text-yellow-dark" | ||||||
|  |                 > | ||||||
|                   {post.frontmatter.title} |                   {post.frontmatter.title} | ||||||
|                 </h2> |                 </h2> | ||||||
|                 <p data-cy="blog-post-date" className="mt-2"> |                 <p data-cy="blog-post-date" className="mt-2"> | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ export const FooterText = (): JSX.Element => { | |||||||
|     <p> |     <p> | ||||||
|       <Link |       <Link | ||||||
|         href="/" |         href="/" | ||||||
|         className="text-yellow hover:underline dark:text-yellow-dark" |         className="text-yellow hover:underline dark:text-yellow-dark font-semibold" | ||||||
|       > |       > | ||||||
|         Théo LUDWIG |         Théo LUDWIG | ||||||
|       </Link>{" "} |       </Link>{" "} | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ export const FooterVersion = (props: FooterVersionProps): JSX.Element => { | |||||||
|       Version{" "} |       Version{" "} | ||||||
|       <a |       <a | ||||||
|         data-cy="version-link" |         data-cy="version-link" | ||||||
|         className="text-yellow hover:underline dark:text-yellow-dark" |         className="text-yellow hover:underline dark:text-yellow-dark font-semibold" | ||||||
|         href={versionLink} |         href={versionLink} | ||||||
|         target="_blank" |         target="_blank" | ||||||
|         rel="noopener noreferrer" |         rel="noopener noreferrer" | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ import { cookies } from "next/headers" | |||||||
| import Link from "next/link" | import Link from "next/link" | ||||||
| import Image from "next/image" | import Image from "next/image" | ||||||
|  |  | ||||||
|  | import Logo from "@/public/images/logo.png" | ||||||
| import { getI18n } from "@/i18n/i18n.server" | import { getI18n } from "@/i18n/i18n.server" | ||||||
|  |  | ||||||
| import { Locales } from "./Locales" | import { Locales } from "./Locales" | ||||||
| @@ -17,13 +18,12 @@ export const Header = (): JSX.Element => { | |||||||
|         <div className="flex items-center justify-center"> |         <div className="flex items-center justify-center"> | ||||||
|           <Image |           <Image | ||||||
|             quality={100} |             quality={100} | ||||||
|             width={60} |             className="w-16 h-16" | ||||||
|             height={60} |             src={Logo} | ||||||
|             src="/images/icon_small.png" |  | ||||||
|             alt="Théo LUDWIG" |             alt="Théo LUDWIG" | ||||||
|             priority |             priority | ||||||
|           /> |           /> | ||||||
|           <strong className="ml-1 hidden font-headline font-semibold text-yellow dark:text-yellow-dark xs:block"> |           <strong className="ml-1 hidden font-headline font-semibold text-yellow dark:text-yellow-dark xs:block sm:text-xl"> | ||||||
|             Théo LUDWIG |             Théo LUDWIG | ||||||
|           </strong> |           </strong> | ||||||
|         </div> |         </div> | ||||||
| @@ -33,7 +33,7 @@ export const Header = (): JSX.Element => { | |||||||
|           <Link |           <Link | ||||||
|             href="/blog" |             href="/blog" | ||||||
|             data-cy="header-blog-link" |             data-cy="header-blog-link" | ||||||
|             className="text-yellow hover:underline dark:text-yellow-dark" |             className="font-semibold text-yellow hover:underline dark:text-yellow-dark" | ||||||
|           > |           > | ||||||
|             Blog |             Blog | ||||||
|           </Link> |           </Link> | ||||||
|   | |||||||
| @@ -15,7 +15,9 @@ export const Repository = (props: RepositoryProps): JSX.Element => { | |||||||
|       <a href={href} target="_blank" rel="noopener noreferrer"> |       <a href={href} target="_blank" rel="noopener noreferrer"> | ||||||
|         <div className="flex"> |         <div className="flex"> | ||||||
|           <GitHubIcon className="mr-2 h-6" /> |           <GitHubIcon className="mr-2 h-6" /> | ||||||
|           <span className="text-yellow dark:text-yellow-dark">{name}</span> |           <span className="text-yellow dark:text-yellow-dark font-semibold"> | ||||||
|  |             {name} | ||||||
|  |           </span> | ||||||
|         </div> |         </div> | ||||||
|         <p className="my-4">{description}</p> |         <p className="my-4">{description}</p> | ||||||
|       </a> |       </a> | ||||||
|   | |||||||
| @@ -32,10 +32,10 @@ export const PortfolioItem = (props: PortfolioItemProps): JSX.Element => { | |||||||
|           /> |           /> | ||||||
|         </div> |         </div> | ||||||
|         <div className="absolute bottom-0 h-auto overflow-hidden text-center opacity-0 transition-opacity duration-500 group-hover:opacity-100"> |         <div className="absolute bottom-0 h-auto overflow-hidden text-center opacity-0 transition-opacity duration-500 group-hover:opacity-100"> | ||||||
|           <h3 className="my-6 text-xl font-semibold text-yellow dark:text-yellow-dark"> |           <h3 className="my-6 text-2xl font-semibold text-yellow dark:text-yellow-dark"> | ||||||
|             {title} |             {title} | ||||||
|           </h3> |           </h3> | ||||||
|           <p className="my-6 mx-2">{description}</p> |           <p className="my-6 mx-4 font-semibold">{description}</p> | ||||||
|         </div> |         </div> | ||||||
|       </a> |       </a> | ||||||
|     </ShadowContainer> |     </ShadowContainer> | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ export const ProfileDescriptionBottom = (): JSX.Element => { | |||||||
|       <br /> |       <br /> | ||||||
|       <a |       <a | ||||||
|         href="/curriculum-vitae/index.html" |         href="/curriculum-vitae/index.html" | ||||||
|         className="text-yellow hover:underline dark:text-yellow-dark" |         className="text-yellow hover:underline dark:text-yellow-dark font-semibold" | ||||||
|       > |       > | ||||||
|         Curriculum vitæ ({i18n.translate("common.fr-FR")}) |         Curriculum vitæ ({i18n.translate("common.fr-FR")}) | ||||||
|       </a> |       </a> | ||||||
|   | |||||||
| @@ -42,7 +42,7 @@ export const SkillComponent = (props: SkillComponentProps): JSX.Element => { | |||||||
|           alt={skill} |           alt={skill} | ||||||
|           src={getImage()} |           src={getImage()} | ||||||
|         /> |         /> | ||||||
|         <p className="mt-1">{skill}</p> |         <p className="mt-1 font-semibold">{skill}</p> | ||||||
|       </div> |       </div> | ||||||
|     </a> |     </a> | ||||||
|   ) |   ) | ||||||
|   | |||||||
| @@ -4,7 +4,10 @@ export const SectionHeading = (props: SectionHeadingProps): JSX.Element => { | |||||||
|   const { children, ...rest } = props |   const { children, ...rest } = props | ||||||
|  |  | ||||||
|   return ( |   return ( | ||||||
|     <h2 {...rest} className="mb-3 mt-1 text-center text-4xl font-semibold"> |     <h2 | ||||||
|  |       {...rest} | ||||||
|  |       className="mb-3 mt-1 text-center text-4xl font-semibold text-yellow dark:text-yellow-dark" | ||||||
|  |     > | ||||||
|       {children} |       {children} | ||||||
|     </h2> |     </h2> | ||||||
|   ) |   ) | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
|   "basics": { |   "basics": { | ||||||
|     "name": "Théo LUDWIG", |     "name": "Théo LUDWIG", | ||||||
|     "label": "Développeur Full Stack • Étudiant", |     "label": "Développeur Full Stack • Étudiant", | ||||||
|     "image": "https://theoludwig.fr/images/logo_orange.png", |     "image": "https://theoludwig.fr/images/logo_background.png", | ||||||
|     "email": "contact@theoludwig.fr", |     "email": "contact@theoludwig.fr", | ||||||
|     "age": "31/03/2003", |     "age": "31/03/2003", | ||||||
|     "location": { |     "location": { | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ | |||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|         "title": "Open-Source Enthusiast", |         "title": "Open-Source Enthusiast", | ||||||
|         "description": "I value the <strong>sharing of knowledge and collaboration</strong> to collectively resolve problems. <br /> The source code of the website is available on <a class='text-yellow dark:text-yellow-dark hover:underline' href='https://github.com/theoludwig/theoludwig' target='_blank' rel='noopener noreferrer'>GitHub</a>.", |         "description": "I value the <strong>sharing of knowledge and collaboration</strong> to collectively resolve problems. <br /> The source code of the website is available on <a class='text-yellow dark:text-yellow-dark hover:underline font-semibold' href='https://github.com/theoludwig/theoludwig' target='_blank' rel='noopener noreferrer'>GitHub</a>.", | ||||||
|         "id": "open-source" |         "id": "open-source" | ||||||
|       } |       } | ||||||
|     ] |     ] | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ | |||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|         "title": "Enthousiaste de l'Open-Source", |         "title": "Enthousiaste de l'Open-Source", | ||||||
|         "description": "J'apprécie le <strong>partage des connaissances et la collaboration</strong> pour résoudre des défis collectivement. <br /> Le code source du site est accessible sur <a class='text-yellow dark:text-yellow-dark hover:underline' href='https://github.com/theoludwig/theoludwig' target='_blank' rel='noopener noreferrer'>GitHub</a>.", |         "description": "J'apprécie le <strong>partage des connaissances et la collaboration</strong> pour résoudre des défis collectivement. <br /> Le code source du site est accessible sur <a class='text-yellow dark:text-yellow-dark hover:underline font-semibold' href='https://github.com/theoludwig/theoludwig' target='_blank' rel='noopener noreferrer'>GitHub</a>.", | ||||||
|         "id": "open-source" |         "id": "open-source" | ||||||
|       } |       } | ||||||
|     ] |     ] | ||||||
|   | |||||||
| Before Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 7.5 KiB | 
| Before Width: | Height: | Size: 2.2 KiB | 
| Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 6.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								public/images/logo_background.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.8 KiB | 
| Before Width: | Height: | Size: 89 KiB | 
| @@ -15,16 +15,16 @@ const tailwindConfig = { | |||||||
|         black: "#181818", |         black: "#181818", | ||||||
|         gray: { |         gray: { | ||||||
|           DEFAULT: "#333333", |           DEFAULT: "#333333", | ||||||
|           dark: "#b2bac2", |           dark: "#b7c0c9", | ||||||
|         }, |         }, | ||||||
|         yellow: { |         yellow: { | ||||||
|           DEFAULT: "#ff6000", |           DEFAULT: "#006cff", | ||||||
|           dark: "#ffd800", |           dark: "#00aeff", | ||||||
|         }, |         }, | ||||||
|       }, |       }, | ||||||
|       boxShadow: { |       boxShadow: { | ||||||
|         dark: "0px 0px 4px 4px rgba(0, 0, 0, 0.25)", |         dark: "0px 0px 2px 2px rgba(0, 0, 0, 0.25)", | ||||||
|         light: "0px 0px 4px 4px rgba(0, 0, 0, 0.10)", |         light: "0px 0px 2px 2px rgba(0, 0, 0, 0.10)", | ||||||
|         darkFlag: "0px 1px 10px hsla(0, 0%, 100%, 0.2)", |         darkFlag: "0px 1px 10px hsla(0, 0%, 100%, 0.2)", | ||||||
|         lightFlag: "0px 1px 10px rgba(0, 0, 0, 0.25)", |         lightFlag: "0px 1px 10px rgba(0, 0, 0, 0.25)", | ||||||
|       }, |       }, | ||||||
|   | |||||||