mirror of
				https://github.com/theoludwig/theoludwig.git
				synced 2025-10-14 20:23:25 +02:00 
			
		
		
		
	build(deps): bump Next.js to v13
This commit is contained in:
		| @@ -30,10 +30,11 @@ export const ErrorPage: React.FC<ErrorPageProps> = (props) => { | ||||
|           </h1> | ||||
|           <p className='text-center text-lg'> | ||||
|             {message}{' '} | ||||
|             <Link href='/'> | ||||
|               <a className='text-yellow hover:underline dark:text-yellow-dark'> | ||||
|                 {t('errors:return-to-home-page')} | ||||
|               </a> | ||||
|             <Link | ||||
|               href='/' | ||||
|               className='text-yellow hover:underline dark:text-yellow-dark' | ||||
|             > | ||||
|               {t('errors:return-to-home-page')} | ||||
|             </Link> | ||||
|           </p> | ||||
|         </main> | ||||
|   | ||||
| @@ -17,10 +17,11 @@ export const Footer: React.FC<FooterProps> = (props) => { | ||||
|   return ( | ||||
|     <footer className='flex flex-col items-center justify-center border-t-2 border-gray-600 bg-white py-6 text-lg dark:border-gray-400 dark:bg-black'> | ||||
|       <p> | ||||
|         <Link href='/'> | ||||
|           <a className='text-yellow hover:underline dark:text-yellow-dark'> | ||||
|             Divlo | ||||
|           </a> | ||||
|         <Link | ||||
|           href='/' | ||||
|           className='text-yellow hover:underline dark:text-yellow-dark' | ||||
|         > | ||||
|           Divlo | ||||
|         </Link>{' '} | ||||
|         | {t('common:all-rights-reserved')} | ||||
|       </p> | ||||
|   | ||||
| @@ -14,30 +14,27 @@ export const Header: React.FC<HeaderProps> = (props) => { | ||||
|   return ( | ||||
|     <header className='sticky top-0 z-50 flex w-full justify-between border-b-2 border-gray-600 bg-white px-6 py-2 dark:border-gray-400 dark:bg-black'> | ||||
|       <Link href='/'> | ||||
|         <a> | ||||
|           <div className='flex items-center justify-center'> | ||||
|             <Image | ||||
|               quality={100} | ||||
|               width={60} | ||||
|               height={60} | ||||
|               src='/images/divlo_icon_small.png' | ||||
|               alt='Divlo' | ||||
|             /> | ||||
|             <strong className='ml-1 hidden font-headline font-semibold text-yellow dark:text-yellow-dark xs:block'> | ||||
|               Divlo | ||||
|             </strong> | ||||
|           </div> | ||||
|         </a> | ||||
|         <div className='flex items-center justify-center'> | ||||
|           <Image | ||||
|             quality={100} | ||||
|             width={60} | ||||
|             height={60} | ||||
|             src='/images/divlo_icon_small.png' | ||||
|             alt='Divlo' | ||||
|           /> | ||||
|           <strong className='ml-1 hidden font-headline font-semibold text-yellow dark:text-yellow-dark xs:block'> | ||||
|             Divlo | ||||
|           </strong> | ||||
|         </div> | ||||
|       </Link> | ||||
|       <div className='flex justify-between'> | ||||
|         <div className='flex flex-col items-center justify-center px-6'> | ||||
|           <Link href='/blog'> | ||||
|             <a | ||||
|               data-cy='header-blog-link' | ||||
|               className='text-yellow hover:underline dark:text-yellow-dark' | ||||
|             > | ||||
|               Blog | ||||
|             </a> | ||||
|           <Link | ||||
|             href='/blog' | ||||
|             data-cy='header-blog-link' | ||||
|             className='text-yellow hover:underline dark:text-yellow-dark' | ||||
|           > | ||||
|             Blog | ||||
|           </Link> | ||||
|         </div> | ||||
|         {showLanguage && <Language />} | ||||
|   | ||||
| @@ -24,7 +24,7 @@ export const PortfolioItem: React.FC<PortfolioItemProps> = (props) => { | ||||
|         <div className='flex justify-center'> | ||||
|           <Image | ||||
|             quality={100} | ||||
|             className='transition-opacity duration-500 group-hover:opacity-20 dark:group-hover:opacity-5' | ||||
|             className='h-auto w-auto transition-opacity duration-500 group-hover:opacity-20 dark:group-hover:opacity-5' | ||||
|             width={300} | ||||
|             height={300} | ||||
|             src={image} | ||||
|   | ||||
| @@ -5,7 +5,7 @@ import DivloLogo from 'public/images/divlo_logo.png' | ||||
| export const ProfileLogo: React.FC = () => { | ||||
|   return ( | ||||
|     <div className='max-h-[370px] max-w-[370px] px-2 py-6'> | ||||
|       <Image quality={100} src={DivloLogo} alt='Divlo' /> | ||||
|       <Image quality={100} src={DivloLogo} alt='Divlo' priority /> | ||||
|     </div> | ||||
|   ) | ||||
| } | ||||
|   | ||||
| @@ -32,7 +32,14 @@ export const SkillComponent: React.FC<SkillComponentProps> = (props) => { | ||||
|       rel='noopener noreferrer' | ||||
|     > | ||||
|       <div className='text-center'> | ||||
|         <Image quality={100} width={60} height={60} alt={skill} src={image} /> | ||||
|         <Image | ||||
|           className='inline h-auto w-auto' | ||||
|           quality={100} | ||||
|           width={60} | ||||
|           height={60} | ||||
|           alt={skill} | ||||
|           src={image} | ||||
|         /> | ||||
|         <p className='mt-1'>{skill}</p> | ||||
|       </div> | ||||
|     </a> | ||||
|   | ||||
| @@ -4,12 +4,7 @@ describe('Page /', () => { | ||||
|   }) | ||||
|  | ||||
|   it('should reveals the sections while scrolling except the about section', () => { | ||||
|     const sectionsReveals = [ | ||||
|       '#interests', | ||||
|       '#skills', | ||||
|       '#portfolio', | ||||
|       '#open-source' | ||||
|     ] | ||||
|     const sectionsReveals = ['#interests', '#skills', '#portfolio'] | ||||
|     cy.get('#about').should('be.visible') | ||||
|     for (const section of sectionsReveals) { | ||||
|       cy.get(section) | ||||
|   | ||||
							
								
								
									
										64
									
								
								jsonresume-theme-custom/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										64
									
								
								jsonresume-theme-custom/package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -11,9 +11,9 @@ | ||||
|         "modern-normalize": "1.1.0" | ||||
|       }, | ||||
|       "devDependencies": { | ||||
|         "@types/node": "18.11.3", | ||||
|         "@types/node": "18.11.7", | ||||
|         "date-and-time": "2.4.1", | ||||
|         "vite": "3.1.8", | ||||
|         "vite": "3.2.0", | ||||
|         "vite-plugin-html": "3.2.0" | ||||
|       } | ||||
|     }, | ||||
| @@ -156,15 +156,15 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@types/node": { | ||||
|       "version": "18.11.3", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.3.tgz", | ||||
|       "integrity": "sha512-fNjDQzzOsZeKZu5NATgXUPsaFaTxeRgFXoosrHivTl8RGeV733OLawXsGfEk9a8/tySyZUyiZ6E8LcjPFZ2y1A==", | ||||
|       "version": "18.11.7", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", | ||||
|       "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/acorn": { | ||||
|       "version": "8.8.0", | ||||
|       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", | ||||
|       "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", | ||||
|       "version": "8.8.1", | ||||
|       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", | ||||
|       "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", | ||||
|       "dev": true, | ||||
|       "bin": { | ||||
|         "acorn": "bin/acorn" | ||||
| @@ -1301,9 +1301,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/rollup": { | ||||
|       "version": "2.78.1", | ||||
|       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", | ||||
|       "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", | ||||
|       "version": "2.79.1", | ||||
|       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", | ||||
|       "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", | ||||
|       "dev": true, | ||||
|       "bin": { | ||||
|         "rollup": "dist/bin/rollup" | ||||
| @@ -1442,15 +1442,15 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/vite": { | ||||
|       "version": "3.1.8", | ||||
|       "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz", | ||||
|       "integrity": "sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==", | ||||
|       "version": "3.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.0.tgz", | ||||
|       "integrity": "sha512-Ovj7+cqIdM1I0LPCk2CWxzgADXMix3NLXpUT6g7P7zg/a9grk/TaC3qn9YMg7w7M0POIVCBOp1aBANJW+RH7oA==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "esbuild": "^0.15.9", | ||||
|         "postcss": "^8.4.16", | ||||
|         "postcss": "^8.4.18", | ||||
|         "resolve": "^1.22.1", | ||||
|         "rollup": "~2.78.0" | ||||
|         "rollup": "^2.79.1" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "vite": "bin/vite.js" | ||||
| @@ -1465,6 +1465,7 @@ | ||||
|         "less": "*", | ||||
|         "sass": "*", | ||||
|         "stylus": "*", | ||||
|         "sugarss": "*", | ||||
|         "terser": "^5.4.0" | ||||
|       }, | ||||
|       "peerDependenciesMeta": { | ||||
| @@ -1477,6 +1478,9 @@ | ||||
|         "stylus": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "sugarss": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "terser": { | ||||
|           "optional": true | ||||
|         } | ||||
| @@ -1607,15 +1611,15 @@ | ||||
|       } | ||||
|     }, | ||||
|     "@types/node": { | ||||
|       "version": "18.11.3", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.3.tgz", | ||||
|       "integrity": "sha512-fNjDQzzOsZeKZu5NATgXUPsaFaTxeRgFXoosrHivTl8RGeV733OLawXsGfEk9a8/tySyZUyiZ6E8LcjPFZ2y1A==", | ||||
|       "version": "18.11.7", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", | ||||
|       "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "acorn": { | ||||
|       "version": "8.8.0", | ||||
|       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", | ||||
|       "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", | ||||
|       "version": "8.8.1", | ||||
|       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", | ||||
|       "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "ansi-styles": { | ||||
| @@ -2365,9 +2369,9 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "rollup": { | ||||
|       "version": "2.78.1", | ||||
|       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", | ||||
|       "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", | ||||
|       "version": "2.79.1", | ||||
|       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", | ||||
|       "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "fsevents": "~2.3.2" | ||||
| @@ -2461,16 +2465,16 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "vite": { | ||||
|       "version": "3.1.8", | ||||
|       "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz", | ||||
|       "integrity": "sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==", | ||||
|       "version": "3.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.0.tgz", | ||||
|       "integrity": "sha512-Ovj7+cqIdM1I0LPCk2CWxzgADXMix3NLXpUT6g7P7zg/a9grk/TaC3qn9YMg7w7M0POIVCBOp1aBANJW+RH7oA==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "esbuild": "^0.15.9", | ||||
|         "fsevents": "~2.3.2", | ||||
|         "postcss": "^8.4.16", | ||||
|         "postcss": "^8.4.18", | ||||
|         "resolve": "^1.22.1", | ||||
|         "rollup": "~2.78.0" | ||||
|         "rollup": "^2.79.1" | ||||
|       } | ||||
|     }, | ||||
|     "vite-plugin-html": { | ||||
|   | ||||
| @@ -12,9 +12,9 @@ | ||||
|     "modern-normalize": "1.1.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/node": "18.11.3", | ||||
|     "@types/node": "18.11.7", | ||||
|     "date-and-time": "2.4.1", | ||||
|     "vite": "3.1.8", | ||||
|     "vite": "3.2.0", | ||||
|     "vite-plugin-html": "3.2.0" | ||||
|   } | ||||
| } | ||||
|   | ||||
							
								
								
									
										979
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										979
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										16
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								package.json
									
									
									
									
									
								
							| @@ -42,7 +42,7 @@ | ||||
|     "date-and-time": "2.4.1", | ||||
|     "gray-matter": "4.0.3", | ||||
|     "html-react-parser": "3.0.4", | ||||
|     "next": "12.3.1", | ||||
|     "next": "13.0.0", | ||||
|     "next-mdx-remote": "4.1.0", | ||||
|     "next-pwa": "5.6.0", | ||||
|     "next-themes": "0.2.1", | ||||
| @@ -66,16 +66,16 @@ | ||||
|     "@saithodev/semantic-release-backmerge": "2.1.2", | ||||
|     "@semantic-release/git": "10.0.1", | ||||
|     "@tailwindcss/typography": "0.5.7", | ||||
|     "@types/node": "18.11.3", | ||||
|     "@types/react": "18.0.21", | ||||
|     "@types/node": "18.11.7", | ||||
|     "@types/react": "18.0.24", | ||||
|     "@types/unist": "2.0.6", | ||||
|     "@typescript-eslint/eslint-plugin": "5.40.1", | ||||
|     "@typescript-eslint/eslint-plugin": "5.41.0", | ||||
|     "autoprefixer": "10.4.12", | ||||
|     "cypress": "10.10.0", | ||||
|     "cypress": "10.11.0", | ||||
|     "editorconfig-checker": "4.0.2", | ||||
|     "eslint": "8.25.0", | ||||
|     "eslint": "8.26.0", | ||||
|     "eslint-config-conventions": "5.0.0", | ||||
|     "eslint-config-next": "12.3.1", | ||||
|     "eslint-config-next": "13.0.0", | ||||
|     "eslint-config-prettier": "8.5.0", | ||||
|     "eslint-plugin-import": "2.26.0", | ||||
|     "eslint-plugin-prettier": "4.2.1", | ||||
| @@ -91,7 +91,7 @@ | ||||
|     "prettier-plugin-tailwindcss": "0.1.13", | ||||
|     "semantic-release": "19.0.5", | ||||
|     "start-server-and-test": "1.14.0", | ||||
|     "tailwindcss": "3.2.0", | ||||
|     "tailwindcss": "3.2.1", | ||||
|     "typescript": "4.8.4", | ||||
|     "vercel": "28.4.12" | ||||
|   } | ||||
|   | ||||
| @@ -39,23 +39,26 @@ const BlogPage: NextPage<BlogPageProps> = (props) => { | ||||
|                 'DD/MM/YYYY' | ||||
|               ) | ||||
|               return ( | ||||
|                 <Link href={`/blog/${post.slug}`} key={index} locale='en'> | ||||
|                   <a data-cy={post.slug}> | ||||
|                     <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' | ||||
|                       > | ||||
|                         {post.frontmatter.title} | ||||
|                       </h2> | ||||
|                       <p data-cy='blog-post-date' className='mt-2'> | ||||
|                         {postPublishedOn} | ||||
|                       </p> | ||||
|                       <p data-cy='blog-post-description' className='mt-3'> | ||||
|                         {post.frontmatter.description} | ||||
|                       </p> | ||||
|                     </ShadowContainer> | ||||
|                   </a> | ||||
|                 <Link | ||||
|                   href={`/blog/${post.slug}`} | ||||
|                   key={index} | ||||
|                   locale='en' | ||||
|                   data-cy={post.slug} | ||||
|                 > | ||||
|                   <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' | ||||
|                     > | ||||
|                       {post.frontmatter.title} | ||||
|                     </h2> | ||||
|                     <p data-cy='blog-post-date' className='mt-2'> | ||||
|                       {postPublishedOn} | ||||
|                     </p> | ||||
|                     <p data-cy='blog-post-description' className='mt-3'> | ||||
|                       {post.frontmatter.description} | ||||
|                     </p> | ||||
|                   </ShadowContainer> | ||||
|                 </Link> | ||||
|               ) | ||||
|             })} | ||||
|   | ||||
| @@ -9,7 +9,7 @@ Hello! 👋 | ||||
|  | ||||
| Welcome to the Ultimate Guide to master `git` in your daily workflow, we will see what are the most used commands, what are the best practices, and tips and tricks. | ||||
|  | ||||
| This guide is a summary of the most important things to know when working with `git`, and in general, will link to the official documentation of `git` or other resources for more details (you can use it as a `git` cheatsheet). | ||||
| This guide is a summary of the most important things to know when working with `git`, and in general, will link to the official documentation of `git` or other resources for more details, it is on purpose to not go in depth in each topic, it allows to summarize `git` and vocabulary about it (you can use it as a `git` cheatsheet). | ||||
|  | ||||
| **Note:** Sources used to write this blog post are available at the [end of this post](#sources). | ||||
|  | ||||
|   | ||||
| @@ -10,7 +10,7 @@ | ||||
|     "email": "contact@divlo.fr", | ||||
|     "location": {}, | ||||
|     "url": "https://divlo.fr", | ||||
|     "summary": "Je me forme en autodidacte dans l'informatique en suivant des formations en ligne et je suis aussi un étudiant à l'université suivant la formation \"BUT Informatique\" (première année). <br/> Je mets en pratique tout ce que j'apprends et réalise de nombreux projets." | ||||
|     "summary": "Je me forme en autodidacte dans l'informatique en suivant des formations en ligne et je suis aussi un étudiant à l'université suivant la formation \"BUT Informatique\" (deuxième année). <br/> Je mets en pratique tout ce que j'apprends et réalise de nombreux projets." | ||||
|   }, | ||||
|   "education": [ | ||||
|     { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user