├── exercises
├── 99.upgrade-v7
│ ├── FINISHED.mdx
│ ├── README.mdx
│ ├── 01.problem.v7
│ │ ├── README.mdx
│ │ ├── src
│ │ │ ├── vite-env.d.ts
│ │ │ ├── main.tsx
│ │ │ ├── styles
│ │ │ │ ├── fonts.css
│ │ │ │ └── index.css
│ │ │ ├── routes
│ │ │ │ ├── 404.tsx
│ │ │ │ └── app
│ │ │ │ │ ├── recipients
│ │ │ │ │ ├── new.tsx
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── $id.edit.tsx
│ │ │ │ │ ├── layout.tsx
│ │ │ │ │ └── marketing
│ │ │ │ │ ├── homepage.tsx
│ │ │ │ │ ├── layout.tsx
│ │ │ │ │ └── about.tsx
│ │ │ └── error-boundary.tsx
│ │ ├── public
│ │ │ ├── favicon.ico
│ │ │ ├── fonts
│ │ │ │ ├── Poppins
│ │ │ │ │ ├── Poppins-Bold.ttf
│ │ │ │ │ ├── Poppins-Thin.ttf
│ │ │ │ │ ├── Poppins-Black.ttf
│ │ │ │ │ ├── Poppins-Italic.ttf
│ │ │ │ │ ├── Poppins-Light.ttf
│ │ │ │ │ ├── Poppins-Medium.ttf
│ │ │ │ │ ├── Poppins-ExtraBold.ttf
│ │ │ │ │ ├── Poppins-Regular.ttf
│ │ │ │ │ ├── Poppins-SemiBold.ttf
│ │ │ │ │ ├── Poppins-BlackItalic.ttf
│ │ │ │ │ ├── Poppins-BoldItalic.ttf
│ │ │ │ │ ├── Poppins-ExtraLight.ttf
│ │ │ │ │ ├── Poppins-LightItalic.ttf
│ │ │ │ │ ├── Poppins-ThinItalic.ttf
│ │ │ │ │ ├── Poppins-MediumItalic.ttf
│ │ │ │ │ ├── Poppins-SemiBoldItalic.ttf
│ │ │ │ │ ├── Poppins-ExtraBoldItalic.ttf
│ │ │ │ │ └── Poppins-ExtraLightItalic.ttf
│ │ │ │ └── Source_Serif_4
│ │ │ │ │ ├── static
│ │ │ │ │ ├── SourceSerif4-Black.ttf
│ │ │ │ │ ├── SourceSerif4-Bold.ttf
│ │ │ │ │ ├── SourceSerif4-Light.ttf
│ │ │ │ │ ├── SourceSerif4-Italic.ttf
│ │ │ │ │ ├── SourceSerif4-Medium.ttf
│ │ │ │ │ ├── SourceSerif4-Regular.ttf
│ │ │ │ │ ├── SourceSerif4-BoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4-ExtraBold.ttf
│ │ │ │ │ ├── SourceSerif4-ExtraLight.ttf
│ │ │ │ │ ├── SourceSerif4-SemiBold.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-Black.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-Bold.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-Light.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-Black.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-Bold.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-Light.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-Black.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-Bold.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-Light.ttf
│ │ │ │ │ ├── SourceSerif4-BlackItalic.ttf
│ │ │ │ │ ├── SourceSerif4-LightItalic.ttf
│ │ │ │ │ ├── SourceSerif4-MediumItalic.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-Italic.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-Medium.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-Regular.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-Italic.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-Medium.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-Regular.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-Italic.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-Medium.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-Regular.ttf
│ │ │ │ │ ├── SourceSerif4-ExtraBoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4-SemiBoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-BoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-ExtraBold.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-ExtraLight.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-SemiBold.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-BoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-ExtraBold.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-ExtraLight.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-SemiBold.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-BoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-ExtraBold.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-ExtraLight.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-SemiBold.ttf
│ │ │ │ │ ├── SourceSerif4-ExtraLightItalic.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-BlackItalic.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-LightItalic.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-MediumItalic.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-BlackItalic.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-LightItalic.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-MediumItalic.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-BlackItalic.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-LightItalic.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-MediumItalic.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-ExtraBoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-SemiBoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-ExtraBoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-SemiBoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-ExtraBoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4_48pt-SemiBoldItalic.ttf
│ │ │ │ │ ├── SourceSerif4_18pt-ExtraLightItalic.ttf
│ │ │ │ │ ├── SourceSerif4_36pt-ExtraLightItalic.ttf
│ │ │ │ │ └── SourceSerif4_48pt-ExtraLightItalic.ttf
│ │ │ │ │ ├── SourceSerif4-VariableFont_opsz,wght.ttf
│ │ │ │ │ └── SourceSerif4-Italic-VariableFont_opsz,wght.ttf
│ │ │ └── images
│ │ │ │ ├── woman-smiling-at-text.jpg
│ │ │ │ └── README.md
│ │ ├── tsconfig.json
│ │ ├── vite.config.ts
│ │ ├── .gitignore
│ │ ├── index.html
│ │ ├── tsconfig.node.json
│ │ ├── tsconfig.app.json
│ │ ├── tests
│ │ │ └── playwright.config.ts
│ │ └── package.json
│ └── 01.solution.v7
│ │ ├── README.mdx
│ │ ├── src
│ │ ├── vite-env.d.ts
│ │ ├── main.tsx
│ │ ├── styles
│ │ │ ├── fonts.css
│ │ │ └── index.css
│ │ ├── routes
│ │ │ ├── 404.tsx
│ │ │ └── app
│ │ │ │ ├── recipients
│ │ │ │ ├── new.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ └── $id.edit.tsx
│ │ │ │ ├── layout.tsx
│ │ │ │ └── marketing
│ │ │ │ ├── homepage.tsx
│ │ │ │ ├── layout.tsx
│ │ │ │ └── about.tsx
│ │ └── error-boundary.tsx
│ │ ├── public
│ │ ├── favicon.ico
│ │ ├── fonts
│ │ │ ├── Poppins
│ │ │ │ ├── Poppins-Black.ttf
│ │ │ │ ├── Poppins-Bold.ttf
│ │ │ │ ├── Poppins-Light.ttf
│ │ │ │ ├── Poppins-Thin.ttf
│ │ │ │ ├── Poppins-Italic.ttf
│ │ │ │ ├── Poppins-Medium.ttf
│ │ │ │ ├── Poppins-Regular.ttf
│ │ │ │ ├── Poppins-SemiBold.ttf
│ │ │ │ ├── Poppins-BoldItalic.ttf
│ │ │ │ ├── Poppins-ExtraBold.ttf
│ │ │ │ ├── Poppins-ExtraLight.ttf
│ │ │ │ ├── Poppins-ThinItalic.ttf
│ │ │ │ ├── Poppins-BlackItalic.ttf
│ │ │ │ ├── Poppins-LightItalic.ttf
│ │ │ │ ├── Poppins-MediumItalic.ttf
│ │ │ │ ├── Poppins-ExtraBoldItalic.ttf
│ │ │ │ ├── Poppins-SemiBoldItalic.ttf
│ │ │ │ └── Poppins-ExtraLightItalic.ttf
│ │ │ └── Source_Serif_4
│ │ │ │ ├── static
│ │ │ │ ├── SourceSerif4-Bold.ttf
│ │ │ │ ├── SourceSerif4-Black.ttf
│ │ │ │ ├── SourceSerif4-Italic.ttf
│ │ │ │ ├── SourceSerif4-Light.ttf
│ │ │ │ ├── SourceSerif4-Medium.ttf
│ │ │ │ ├── SourceSerif4-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4-Regular.ttf
│ │ │ │ ├── SourceSerif4-SemiBold.ttf
│ │ │ │ ├── SourceSerif4_18pt-Bold.ttf
│ │ │ │ ├── SourceSerif4_36pt-Bold.ttf
│ │ │ │ ├── SourceSerif4_48pt-Bold.ttf
│ │ │ │ ├── SourceSerif4-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4-LightItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-Black.ttf
│ │ │ │ ├── SourceSerif4_18pt-Italic.ttf
│ │ │ │ ├── SourceSerif4_18pt-Light.ttf
│ │ │ │ ├── SourceSerif4_18pt-Medium.ttf
│ │ │ │ ├── SourceSerif4_36pt-Black.ttf
│ │ │ │ ├── SourceSerif4_36pt-Italic.ttf
│ │ │ │ ├── SourceSerif4_36pt-Light.ttf
│ │ │ │ ├── SourceSerif4_36pt-Medium.ttf
│ │ │ │ ├── SourceSerif4_48pt-Black.ttf
│ │ │ │ ├── SourceSerif4_48pt-Italic.ttf
│ │ │ │ ├── SourceSerif4_48pt-Light.ttf
│ │ │ │ ├── SourceSerif4_48pt-Medium.ttf
│ │ │ │ ├── SourceSerif4-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4_18pt-Regular.ttf
│ │ │ │ ├── SourceSerif4_18pt-SemiBold.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4_36pt-Regular.ttf
│ │ │ │ ├── SourceSerif4_36pt-SemiBold.ttf
│ │ │ │ ├── SourceSerif4_48pt-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4_48pt-Regular.ttf
│ │ │ │ ├── SourceSerif4_48pt-SemiBold.ttf
│ │ │ │ ├── SourceSerif4-ExtraBoldItalic.ttf
│ │ │ │ ├── SourceSerif4-ExtraLightItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4_18pt-LightItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4_36pt-LightItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4_48pt-LightItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraLightItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraLightItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-ExtraBoldItalic.ttf
│ │ │ │ └── SourceSerif4_48pt-ExtraLightItalic.ttf
│ │ │ │ ├── SourceSerif4-VariableFont_opsz,wght.ttf
│ │ │ │ └── SourceSerif4-Italic-VariableFont_opsz,wght.ttf
│ │ └── images
│ │ │ ├── woman-smiling-at-text.jpg
│ │ │ └── README.md
│ │ ├── tsconfig.json
│ │ ├── vite.config.ts
│ │ ├── .gitignore
│ │ ├── index.html
│ │ ├── tsconfig.node.json
│ │ ├── tsconfig.app.json
│ │ ├── package.json
│ │ └── tests
│ │ └── playwright.config.ts
├── 50.upgrade-v6
│ ├── FINISHED.mdx
│ ├── README.mdx
│ └── 01.problem.v6
│ │ ├── README.mdx
│ │ ├── src
│ │ ├── vite-env.d.ts
│ │ ├── main.tsx
│ │ ├── styles
│ │ │ ├── fonts.css
│ │ │ └── index.css
│ │ ├── routes
│ │ │ ├── 404.tsx
│ │ │ └── app
│ │ │ │ ├── recipients
│ │ │ │ ├── new.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ └── $id.edit.tsx
│ │ │ │ ├── layout.tsx
│ │ │ │ └── marketing
│ │ │ │ ├── homepage.tsx
│ │ │ │ ├── layout.tsx
│ │ │ │ └── about.tsx
│ │ └── error-boundary.tsx
│ │ ├── public
│ │ ├── favicon.ico
│ │ ├── fonts
│ │ │ ├── Poppins
│ │ │ │ ├── Poppins-Bold.ttf
│ │ │ │ ├── Poppins-Thin.ttf
│ │ │ │ ├── Poppins-Black.ttf
│ │ │ │ ├── Poppins-Italic.ttf
│ │ │ │ ├── Poppins-Light.ttf
│ │ │ │ ├── Poppins-Medium.ttf
│ │ │ │ ├── Poppins-ExtraBold.ttf
│ │ │ │ ├── Poppins-Regular.ttf
│ │ │ │ ├── Poppins-SemiBold.ttf
│ │ │ │ ├── Poppins-BlackItalic.ttf
│ │ │ │ ├── Poppins-BoldItalic.ttf
│ │ │ │ ├── Poppins-ExtraLight.ttf
│ │ │ │ ├── Poppins-LightItalic.ttf
│ │ │ │ ├── Poppins-ThinItalic.ttf
│ │ │ │ ├── Poppins-MediumItalic.ttf
│ │ │ │ ├── Poppins-SemiBoldItalic.ttf
│ │ │ │ ├── Poppins-ExtraBoldItalic.ttf
│ │ │ │ └── Poppins-ExtraLightItalic.ttf
│ │ │ └── Source_Serif_4
│ │ │ │ ├── static
│ │ │ │ ├── SourceSerif4-Black.ttf
│ │ │ │ ├── SourceSerif4-Bold.ttf
│ │ │ │ ├── SourceSerif4-Light.ttf
│ │ │ │ ├── SourceSerif4-Italic.ttf
│ │ │ │ ├── SourceSerif4-Medium.ttf
│ │ │ │ ├── SourceSerif4-Regular.ttf
│ │ │ │ ├── SourceSerif4-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4-SemiBold.ttf
│ │ │ │ ├── SourceSerif4_18pt-Black.ttf
│ │ │ │ ├── SourceSerif4_18pt-Bold.ttf
│ │ │ │ ├── SourceSerif4_18pt-Light.ttf
│ │ │ │ ├── SourceSerif4_36pt-Black.ttf
│ │ │ │ ├── SourceSerif4_36pt-Bold.ttf
│ │ │ │ ├── SourceSerif4_36pt-Light.ttf
│ │ │ │ ├── SourceSerif4_48pt-Black.ttf
│ │ │ │ ├── SourceSerif4_48pt-Bold.ttf
│ │ │ │ ├── SourceSerif4_48pt-Light.ttf
│ │ │ │ ├── SourceSerif4-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4-LightItalic.ttf
│ │ │ │ ├── SourceSerif4-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-Italic.ttf
│ │ │ │ ├── SourceSerif4_18pt-Medium.ttf
│ │ │ │ ├── SourceSerif4_18pt-Regular.ttf
│ │ │ │ ├── SourceSerif4_36pt-Italic.ttf
│ │ │ │ ├── SourceSerif4_36pt-Medium.ttf
│ │ │ │ ├── SourceSerif4_36pt-Regular.ttf
│ │ │ │ ├── SourceSerif4_48pt-Italic.ttf
│ │ │ │ ├── SourceSerif4_48pt-Medium.ttf
│ │ │ │ ├── SourceSerif4_48pt-Regular.ttf
│ │ │ │ ├── SourceSerif4-ExtraBoldItalic.ttf
│ │ │ │ ├── SourceSerif4-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4_18pt-SemiBold.ttf
│ │ │ │ ├── SourceSerif4_36pt-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4_36pt-SemiBold.ttf
│ │ │ │ ├── SourceSerif4_48pt-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4_48pt-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4_48pt-SemiBold.ttf
│ │ │ │ ├── SourceSerif4-ExtraLightItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-LightItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-LightItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-LightItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-ExtraBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraLightItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraLightItalic.ttf
│ │ │ │ └── SourceSerif4_48pt-ExtraLightItalic.ttf
│ │ │ │ ├── SourceSerif4-VariableFont_opsz,wght.ttf
│ │ │ │ └── SourceSerif4-Italic-VariableFont_opsz,wght.ttf
│ │ └── images
│ │ │ ├── woman-smiling-at-text.jpg
│ │ │ └── README.md
│ │ ├── tsconfig.json
│ │ ├── vite.config.ts
│ │ ├── .gitignore
│ │ ├── index.html
│ │ ├── tsconfig.node.json
│ │ ├── tsconfig.app.json
│ │ ├── tests
│ │ └── playwright.config.ts
│ │ └── package.json
├── 01.upgrade-v5
│ ├── FINISHED.mdx
│ ├── README.mdx
│ └── 01.problem.v5
│ │ ├── README.mdx
│ │ ├── src
│ │ ├── vite-env.d.ts
│ │ ├── main.tsx
│ │ ├── styles
│ │ │ ├── fonts.css
│ │ │ └── index.css
│ │ ├── routes
│ │ │ ├── 404.tsx
│ │ │ └── app
│ │ │ │ ├── recipients
│ │ │ │ ├── new.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ └── $id.edit.tsx
│ │ │ │ ├── layout.tsx
│ │ │ │ └── marketing
│ │ │ │ ├── homepage.tsx
│ │ │ │ ├── layout.tsx
│ │ │ │ └── about.tsx
│ │ └── error-boundary.tsx
│ │ ├── public
│ │ ├── favicon.ico
│ │ ├── fonts
│ │ │ ├── Poppins
│ │ │ │ ├── Poppins-Bold.ttf
│ │ │ │ ├── Poppins-Thin.ttf
│ │ │ │ ├── Poppins-Black.ttf
│ │ │ │ ├── Poppins-Italic.ttf
│ │ │ │ ├── Poppins-Light.ttf
│ │ │ │ ├── Poppins-Medium.ttf
│ │ │ │ ├── Poppins-ExtraBold.ttf
│ │ │ │ ├── Poppins-Regular.ttf
│ │ │ │ ├── Poppins-SemiBold.ttf
│ │ │ │ ├── Poppins-BlackItalic.ttf
│ │ │ │ ├── Poppins-BoldItalic.ttf
│ │ │ │ ├── Poppins-ExtraLight.ttf
│ │ │ │ ├── Poppins-LightItalic.ttf
│ │ │ │ ├── Poppins-ThinItalic.ttf
│ │ │ │ ├── Poppins-MediumItalic.ttf
│ │ │ │ ├── Poppins-SemiBoldItalic.ttf
│ │ │ │ ├── Poppins-ExtraBoldItalic.ttf
│ │ │ │ └── Poppins-ExtraLightItalic.ttf
│ │ │ └── Source_Serif_4
│ │ │ │ ├── static
│ │ │ │ ├── SourceSerif4-Black.ttf
│ │ │ │ ├── SourceSerif4-Bold.ttf
│ │ │ │ ├── SourceSerif4-Light.ttf
│ │ │ │ ├── SourceSerif4-Italic.ttf
│ │ │ │ ├── SourceSerif4-Medium.ttf
│ │ │ │ ├── SourceSerif4-Regular.ttf
│ │ │ │ ├── SourceSerif4-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4-SemiBold.ttf
│ │ │ │ ├── SourceSerif4_18pt-Black.ttf
│ │ │ │ ├── SourceSerif4_18pt-Bold.ttf
│ │ │ │ ├── SourceSerif4_18pt-Light.ttf
│ │ │ │ ├── SourceSerif4_36pt-Black.ttf
│ │ │ │ ├── SourceSerif4_36pt-Bold.ttf
│ │ │ │ ├── SourceSerif4_36pt-Light.ttf
│ │ │ │ ├── SourceSerif4_48pt-Black.ttf
│ │ │ │ ├── SourceSerif4_48pt-Bold.ttf
│ │ │ │ ├── SourceSerif4_48pt-Light.ttf
│ │ │ │ ├── SourceSerif4-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4-LightItalic.ttf
│ │ │ │ ├── SourceSerif4-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-Italic.ttf
│ │ │ │ ├── SourceSerif4_18pt-Medium.ttf
│ │ │ │ ├── SourceSerif4_18pt-Regular.ttf
│ │ │ │ ├── SourceSerif4_36pt-Italic.ttf
│ │ │ │ ├── SourceSerif4_36pt-Medium.ttf
│ │ │ │ ├── SourceSerif4_36pt-Regular.ttf
│ │ │ │ ├── SourceSerif4_48pt-Italic.ttf
│ │ │ │ ├── SourceSerif4_48pt-Medium.ttf
│ │ │ │ ├── SourceSerif4_48pt-Regular.ttf
│ │ │ │ ├── SourceSerif4-ExtraBoldItalic.ttf
│ │ │ │ ├── SourceSerif4-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4_18pt-SemiBold.ttf
│ │ │ │ ├── SourceSerif4_36pt-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4_36pt-SemiBold.ttf
│ │ │ │ ├── SourceSerif4_48pt-BoldItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-ExtraBold.ttf
│ │ │ │ ├── SourceSerif4_48pt-ExtraLight.ttf
│ │ │ │ ├── SourceSerif4_48pt-SemiBold.ttf
│ │ │ │ ├── SourceSerif4-ExtraLightItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-LightItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-LightItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-BlackItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-LightItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-MediumItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-ExtraBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_48pt-SemiBoldItalic.ttf
│ │ │ │ ├── SourceSerif4_18pt-ExtraLightItalic.ttf
│ │ │ │ ├── SourceSerif4_36pt-ExtraLightItalic.ttf
│ │ │ │ └── SourceSerif4_48pt-ExtraLightItalic.ttf
│ │ │ │ ├── SourceSerif4-VariableFont_opsz,wght.ttf
│ │ │ │ └── SourceSerif4-Italic-VariableFont_opsz,wght.ttf
│ │ └── images
│ │ │ ├── woman-smiling-at-text.jpg
│ │ │ └── README.md
│ │ ├── tsconfig.json
│ │ ├── vite.config.ts
│ │ ├── .gitignore
│ │ ├── index.html
│ │ ├── tsconfig.node.json
│ │ ├── tsconfig.app.json
│ │ ├── tests
│ │ └── playwright.config.ts
│ │ └── package.json
├── FINISHED.mdx
└── README.mdx
├── .npmrc
├── epicshop
├── .npmrc
├── package.json
├── update-deps.sh
├── Dockerfile
├── setup-custom.js
└── fly.toml
├── public
└── images
│ └── instructor.png
├── .prettierignore
├── LICENSE.md
├── .gitignore
├── eslint.config.js
├── tsconfig.json
└── .github
└── workflows
└── validate.yml
/exercises/99.upgrade-v7/FINISHED.mdx:
--------------------------------------------------------------------------------
1 | # Final
2 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/README.mdx:
--------------------------------------------------------------------------------
1 | # Final
2 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/FINISHED.mdx:
--------------------------------------------------------------------------------
1 | # v6 Upgrade
2 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/README.mdx:
--------------------------------------------------------------------------------
1 | # v6 Upgrade
2 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/FINISHED.mdx:
--------------------------------------------------------------------------------
1 | # Simple Server
2 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/README.mdx:
--------------------------------------------------------------------------------
1 | # Simple Server
2 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/README.mdx:
--------------------------------------------------------------------------------
1 | # v5 Start
2 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/README.mdx:
--------------------------------------------------------------------------------
1 | # v6 Start
2 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/README.mdx:
--------------------------------------------------------------------------------
1 | # v7 Start
2 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/README.mdx:
--------------------------------------------------------------------------------
1 | # v7 Finish
2 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | legacy-peer-deps=true
2 | registry=https://registry.npmjs.org/
3 |
--------------------------------------------------------------------------------
/epicshop/.npmrc:
--------------------------------------------------------------------------------
1 | legacy-peer-deps=true
2 | registry=https://registry.npmjs.org/
3 |
--------------------------------------------------------------------------------
/exercises/FINISHED.mdx:
--------------------------------------------------------------------------------
1 | # Upgrade React Router 🔼
2 |
3 | Hooray! You're all done! 👏👏
4 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/public/images/instructor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/public/images/instructor.png
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | **/node_modules/**
2 | **/.cache/**
3 | **/build/**
4 | **/dist/**
5 | **/public/build/**
6 | **/package-lock.json
7 | **/playwright-report/**
8 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/favicon.ico
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/favicon.ico
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/favicon.ico
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/favicon.ico
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | { "path": "./tsconfig.app.json" },
5 | { "path": "./tsconfig.node.json" }
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | { "path": "./tsconfig.app.json" },
5 | { "path": "./tsconfig.node.json" }
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | { "path": "./tsconfig.app.json" },
5 | { "path": "./tsconfig.node.json" }
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | { "path": "./tsconfig.app.json" },
5 | { "path": "./tsconfig.node.json" }
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Bold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Thin.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Bold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Thin.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Bold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Thin.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Black.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Italic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Light.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Medium.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/images/woman-smiling-at-text.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/images/woman-smiling-at-text.jpg
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Black.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Italic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Light.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Medium.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/images/woman-smiling-at-text.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/images/woman-smiling-at-text.jpg
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Black.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Italic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Medium.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/images/woman-smiling-at-text.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/images/woman-smiling-at-text.jpg
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Black.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Bold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Thin.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-Regular.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-Regular.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Italic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Medium.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/images/woman-smiling-at-text.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/images/woman-smiling-at-text.jpg
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-ThinItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-ThinItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-ThinItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-ThinItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-ThinItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-ThinItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-ThinItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-ThinItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Poppins/Poppins-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Poppins/Poppins-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Poppins/Poppins-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Poppins/Poppins-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Black.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Bold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Light.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Black.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Bold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Black.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Bold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Bold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Italic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Medium.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-Regular.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Italic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Medium.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Italic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Medium.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Black.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Italic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Medium.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Bold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Bold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Bold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Bold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Bold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Bold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Bold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Bold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Bold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Bold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Bold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Bold.ttf
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | This material is available for private, non-commercial use under the
2 | [GPL version 3](http://www.gnu.org/licenses/gpl-3.0-standalone.html). If you
3 | would like to use this material to conduct your own workshop, please contact us
4 | at team@epicweb.dev
5 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Black.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Italic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Light.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Medium.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBold.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-Regular.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBold.ttf
--------------------------------------------------------------------------------
/epicshop/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "module",
3 | "dependencies": {
4 | "@epic-web/workshop-app": "^5.22.3",
5 | "@epic-web/workshop-utils": "^5.22.3",
6 | "chokidar": "^4.0.3",
7 | "execa": "^9.5.2",
8 | "fs-extra": "^11.3.0"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BlackItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-BoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLight.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-LightItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-MediumItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/SourceSerif4-Italic-VariableFont_opsz,wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/SourceSerif4-Italic-VariableFont_opsz,wght.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/01.upgrade-v5/01.problem.v5/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/SourceSerif4-Italic-VariableFont_opsz,wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/SourceSerif4-Italic-VariableFont_opsz,wght.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/50.upgrade-v6/01.problem.v6/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/SourceSerif4-Italic-VariableFont_opsz,wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/SourceSerif4-Italic-VariableFont_opsz,wght.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.problem.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_18pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_36pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/static/SourceSerif4_48pt-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/SourceSerif4-Italic-VariableFont_opsz,wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/upgrade-react-router/HEAD/exercises/99.upgrade-v7/01.solution.v7/public/fonts/Source_Serif_4/SourceSerif4-Italic-VariableFont_opsz,wght.ttf
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { createRoot } from 'react-dom/client'
2 | import { RouterProvider } from 'react-router'
3 | import './styles/index.css'
4 | import { router } from './routes.tsx'
5 |
6 | createRoot(document.getElementById('🧭')!).render(
7 | ,
8 | )
9 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
3 | workspace/
4 | **/.cache/
5 | **/build/
6 | **/public/build
7 | **/playwright-report
8 | data.db
9 | /playground
10 | **/tsconfig.tsbuildinfo
11 |
12 | # in a real app you'd want to not commit the .env
13 | # file as well, but since this is for a workshop
14 | # we're going to keep them around.
15 | # .env
16 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { createRoot } from 'react-dom/client'
2 | import { BrowserRouter as Router } from 'react-router-dom'
3 | import './styles/index.css'
4 | import { AppRoutes } from './routes.tsx'
5 |
6 | createRoot(document.getElementById('🧭')!).render(
7 |
8 |
9 | ,
10 | )
11 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { createRoot } from 'react-dom/client'
2 | import { BrowserRouter as Router } from 'react-router-dom'
3 | import './styles/index.css'
4 | import { AppRoutes } from './routes.tsx'
5 |
6 | createRoot(document.getElementById('🧭')!).render(
7 |
8 |
9 | ,
10 | )
11 |
--------------------------------------------------------------------------------
/eslint.config.js:
--------------------------------------------------------------------------------
1 | import defaultConfig from '@epic-web/config/eslint'
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default [
5 | ...defaultConfig,
6 | {
7 | rules: {
8 | // we leave unused vars around for the exercises
9 | 'no-unused-vars': 'off',
10 | '@typescript-eslint/no-unused-vars': 'off',
11 | },
12 | },
13 | ]
14 |
--------------------------------------------------------------------------------
/epicshop/update-deps.sh:
--------------------------------------------------------------------------------
1 | npx npm-check-updates --dep prod,dev --upgrade --workspaces --root
2 | cd epicshop && npx npm-check-updates --dep prod,dev --upgrade --root
3 | cd ..
4 | rm -rf node_modules package-lock.json ./epicshop/package-lock.json ./epicshop/node_modules ./exercises/**/node_modules
5 | npm install
6 | npm run setup
7 | npm run typecheck
8 | npm run lint --fix
9 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/vite.config.ts:
--------------------------------------------------------------------------------
1 | import tailwindcss from '@tailwindcss/vite'
2 | import react from '@vitejs/plugin-react'
3 | import { defineConfig } from 'vite'
4 |
5 | // https://vite.dev/config/
6 | export default defineConfig({
7 | plugins: [react(), tailwindcss()],
8 | server: {
9 | port: process.env.PORT ? Number(process.env.PORT) : undefined,
10 | },
11 | })
12 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/vite.config.ts:
--------------------------------------------------------------------------------
1 | import tailwindcss from '@tailwindcss/vite'
2 | import react from '@vitejs/plugin-react'
3 | import { defineConfig } from 'vite'
4 |
5 | // https://vite.dev/config/
6 | export default defineConfig({
7 | plugins: [react(), tailwindcss()],
8 | server: {
9 | port: process.env.PORT ? Number(process.env.PORT) : undefined,
10 | },
11 | })
12 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/vite.config.ts:
--------------------------------------------------------------------------------
1 | import tailwindcss from '@tailwindcss/vite'
2 | import react from '@vitejs/plugin-react'
3 | import { defineConfig } from 'vite'
4 |
5 | // https://vite.dev/config/
6 | export default defineConfig({
7 | plugins: [react(), tailwindcss()],
8 | server: {
9 | port: process.env.PORT ? Number(process.env.PORT) : undefined,
10 | },
11 | })
12 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/vite.config.ts:
--------------------------------------------------------------------------------
1 | import tailwindcss from '@tailwindcss/vite'
2 | import react from '@vitejs/plugin-react'
3 | import { defineConfig } from 'vite'
4 |
5 | // https://vite.dev/config/
6 | export default defineConfig({
7 | plugins: [react(), tailwindcss()],
8 | server: {
9 | port: process.env.PORT ? Number(process.env.PORT) : undefined,
10 | },
11 | })
12 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | GratiText
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | GratiText
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | GratiText
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/public/images/README.md:
--------------------------------------------------------------------------------
1 | # Images
2 |
3 | - "woman-smiling-at-text.jpg" photo by
4 | Good
5 | Faces on
6 | Unsplash
7 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/public/images/README.md:
--------------------------------------------------------------------------------
1 | # Images
2 |
3 | - "woman-smiling-at-text.jpg" photo by
4 | Good
5 | Faces on
6 | Unsplash
7 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/public/images/README.md:
--------------------------------------------------------------------------------
1 | # Images
2 |
3 | - "woman-smiling-at-text.jpg" photo by
4 | Good
5 | Faces on
6 | Unsplash
7 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | GratiText
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/public/images/README.md:
--------------------------------------------------------------------------------
1 | # Images
2 |
3 | - "woman-smiling-at-text.jpg" photo by
4 | Good
5 | Faces on
6 | Unsplash
7 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "exclude": [
4 | "node_modules"
5 | ],
6 | "references": [
7 | {
8 | "path": "exercises/01.upgrade-v5/01.problem.v5"
9 | },
10 | {
11 | "path": "exercises/50.upgrade-v6/01.problem.v6"
12 | },
13 | {
14 | "path": "exercises/99.upgrade-v7/01.problem.v7"
15 | },
16 | {
17 | "path": "exercises/99.upgrade-v7/01.solution.v7"
18 | }
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { createRoot } from 'react-dom/client'
2 | import { RouterProvider } from 'react-router-dom'
3 | import './styles/index.css'
4 | import { UnknownErrorBoundary } from './error-boundary.tsx'
5 | import { router } from './routes.tsx'
6 |
7 | createRoot(document.getElementById('🧭')!).render(
8 |
9 |
10 | ,
11 | )
12 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/styles/fonts.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Poppins';
3 | font-style: normal;
4 | font-weight: 400;
5 | src: url('/fonts/Poppins/Poppins-Regular.ttf') format('truetype');
6 | }
7 |
8 | /* Source_Serif_4 */
9 | @font-face {
10 | font-family: 'Source_Serif_4';
11 | font-style: normal;
12 | font-weight: 400;
13 | src: url('/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf')
14 | format('truetype');
15 | }
16 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/styles/fonts.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Poppins';
3 | font-style: normal;
4 | font-weight: 400;
5 | src: url('/fonts/Poppins/Poppins-Regular.ttf') format('truetype');
6 | }
7 |
8 | /* Source_Serif_4 */
9 | @font-face {
10 | font-family: 'Source_Serif_4';
11 | font-style: normal;
12 | font-weight: 400;
13 | src: url('/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf')
14 | format('truetype');
15 | }
16 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/styles/fonts.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Poppins';
3 | font-style: normal;
4 | font-weight: 400;
5 | src: url('/fonts/Poppins/Poppins-Regular.ttf') format('truetype');
6 | }
7 |
8 | /* Source_Serif_4 */
9 | @font-face {
10 | font-family: 'Source_Serif_4';
11 | font-style: normal;
12 | font-weight: 400;
13 | src: url('/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf')
14 | format('truetype');
15 | }
16 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/styles/fonts.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Poppins';
3 | font-style: normal;
4 | font-weight: 400;
5 | src: url('/fonts/Poppins/Poppins-Regular.ttf') format('truetype');
6 | }
7 |
8 | /* Source_Serif_4 */
9 | @font-face {
10 | font-family: 'Source_Serif_4';
11 | font-style: normal;
12 | font-weight: 400;
13 | src: url('/fonts/Source_Serif_4/SourceSerif4-VariableFont_opsz,wght.ttf')
14 | format('truetype');
15 | }
16 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/routes/404.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 |
3 | export function NotFoundRoute() {
4 | return (
5 |
6 |
404 - Page Not Found
7 |
8 | Sorry, we couldn't find the page you're looking for.
9 |
10 |
Go back home
11 |
12 | )
13 | }
14 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/routes/404.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 |
3 | export function NotFoundRoute() {
4 | return (
5 |
6 |
404 - Page Not Found
7 |
8 | Sorry, we couldn't find the page you're looking for.
9 |
10 |
Go back home
11 |
12 | )
13 | }
14 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/routes/404.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 |
3 | export function NotFoundRoute() {
4 | return (
5 |
6 |
404 - Page Not Found
7 |
8 | Sorry, we couldn't find the page you're looking for.
9 |
10 |
Go back home
11 |
12 | )
13 | }
14 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/routes/404.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 |
3 | export function NotFoundRoute() {
4 | return (
5 |
6 |
404 - Page Not Found
7 |
8 | Sorry, we couldn't find the page you're looking for.
9 |
10 |
Go back home
11 |
12 | )
13 | }
14 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/routes/app/recipients/new.tsx:
--------------------------------------------------------------------------------
1 | import { RecipientEditor } from './recipient-editor.tsx'
2 |
3 | export function NewRecipientRoute() {
4 | return (
5 |
6 |
7 |
8 | Add New Recipient
9 |
10 |
Who should receive your messages?
11 |
12 |
13 |
14 |
15 | )
16 | }
17 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/routes/app/recipients/new.tsx:
--------------------------------------------------------------------------------
1 | import { RecipientEditor } from './recipient-editor.tsx'
2 |
3 | export function NewRecipientRoute() {
4 | return (
5 |
6 |
7 |
8 | Add New Recipient
9 |
10 |
Who should receive your messages?
11 |
12 |
13 |
14 |
15 | )
16 | }
17 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/routes/app/recipients/new.tsx:
--------------------------------------------------------------------------------
1 | import { RecipientEditor } from './recipient-editor.tsx'
2 |
3 | export function NewRecipientRoute() {
4 | return (
5 |
6 |
7 |
8 | Add New Recipient
9 |
10 |
Who should receive your messages?
11 |
12 |
13 |
14 |
15 | )
16 | }
17 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/routes/app/recipients/new.tsx:
--------------------------------------------------------------------------------
1 | import { RecipientEditor } from './recipient-editor.tsx'
2 |
3 | export function NewRecipientRoute() {
4 | return (
5 |
6 |
7 |
8 | Add New Recipient
9 |
10 |
Who should receive your messages?
11 |
12 |
13 |
14 |
15 | )
16 | }
17 |
--------------------------------------------------------------------------------
/epicshop/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:22-bookworm-slim as base
2 |
3 | RUN apt-get update && apt-get install -y git
4 |
5 | ENV EPICSHOP_CONTEXT_CWD="/myapp/workshop-content"
6 | ENV EPICSHOP_DEPLOYED="true"
7 | ENV EPICSHOP_DISABLE_WATCHER="true"
8 | ENV FLY="true"
9 | ENV PORT="8080"
10 | ENV NODE_ENV="production"
11 |
12 | WORKDIR /myapp
13 |
14 | ADD . .
15 |
16 | RUN npm install --omit=dev
17 |
18 | CMD rm -rf ${EPICSHOP_CONTEXT_CWD} && \
19 | git clone https://github.com/epicweb-dev/upgrade-react-router ${EPICSHOP_CONTEXT_CWD} && \
20 | cd ${EPICSHOP_CONTEXT_CWD} && \
21 | npx epicshop start
22 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4 | "target": "ES2022",
5 | "lib": ["ES2023"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "isolatedModules": true,
13 | "moduleDetection": "force",
14 | "noEmit": true,
15 |
16 | /* Linting */
17 | "strict": true,
18 | "noUnusedLocals": true,
19 | "noUnusedParameters": true,
20 | "noFallthroughCasesInSwitch": true,
21 | "noUncheckedSideEffectImports": true
22 | },
23 | "include": ["vite.config.ts", "tests/**/*.ts"]
24 | }
25 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4 | "target": "ES2022",
5 | "lib": ["ES2023"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "isolatedModules": true,
13 | "moduleDetection": "force",
14 | "noEmit": true,
15 |
16 | /* Linting */
17 | "strict": true,
18 | "noUnusedLocals": true,
19 | "noUnusedParameters": true,
20 | "noFallthroughCasesInSwitch": true,
21 | "noUncheckedSideEffectImports": true
22 | },
23 | "include": ["vite.config.ts", "tests/**/*.ts"]
24 | }
25 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4 | "target": "ES2022",
5 | "lib": ["ES2023"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "isolatedModules": true,
13 | "moduleDetection": "force",
14 | "noEmit": true,
15 |
16 | /* Linting */
17 | "strict": true,
18 | "noUnusedLocals": true,
19 | "noUnusedParameters": true,
20 | "noFallthroughCasesInSwitch": true,
21 | "noUncheckedSideEffectImports": true
22 | },
23 | "include": ["vite.config.ts", "tests/**/*.ts"]
24 | }
25 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4 | "target": "ES2022",
5 | "lib": ["ES2023"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "isolatedModules": true,
13 | "moduleDetection": "force",
14 | "noEmit": true,
15 |
16 | /* Linting */
17 | "strict": true,
18 | "noUnusedLocals": true,
19 | "noUnusedParameters": true,
20 | "noFallthroughCasesInSwitch": true,
21 | "noUncheckedSideEffectImports": true
22 | },
23 | "include": ["vite.config.ts", "tests/**/*.ts"]
24 | }
25 |
--------------------------------------------------------------------------------
/exercises/README.mdx:
--------------------------------------------------------------------------------
1 | # Upgrade React Router 🔼
2 |
3 | ## NOTICE: This is incomplete.
4 |
5 | I may finish making it a proper workshop with exercises and all that, but for
6 | now, it's just a couple checkpoints. You can run it locally and check the diff
7 | (or just check the
8 | [diff tab in the deployed version](https://upgrade-react-router.epicweb.dev/diff)).
9 | You'll want to check
10 | [v5 vs v6](https://upgrade-react-router.epicweb.dev/diff?app1=01.01.problem&app2=50.01.problem)
11 | and then
12 | [v6 vs v7](https://upgrade-react-router.epicweb.dev/diff?app1=50.01.problem&app2=99.01.problem)
13 | and then
14 | [one more incremental improvement on v7](https://upgrade-react-router.epicweb.dev/diff?app1=99.01.problem&app2=99.01.solution).
15 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/error-boundary.tsx:
--------------------------------------------------------------------------------
1 | import { useRouteError } from 'react-router'
2 |
3 | export function UnknownErrorBoundary() {
4 | const error = useRouteError()
5 |
6 | return (
7 |
8 |
Unknown error
9 |
10 | An unknown error occurred. Please try again later.
11 |
12 |
13 | {error instanceof Error ? error.message : 'Unknown error'}
14 |
15 |
16 | )
17 | }
18 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4 | "target": "ES2020",
5 | "useDefineForClassFields": true,
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "module": "ESNext",
8 | "skipLibCheck": true,
9 |
10 | /* Bundler mode */
11 | "moduleResolution": "bundler",
12 | "allowImportingTsExtensions": true,
13 | "isolatedModules": true,
14 | "moduleDetection": "force",
15 | "noEmit": true,
16 | "jsx": "react-jsx",
17 |
18 | /* Linting */
19 | "strict": true,
20 | "noUnusedLocals": true,
21 | "noUnusedParameters": true,
22 | "noFallthroughCasesInSwitch": true,
23 | "noUncheckedSideEffectImports": true,
24 |
25 | "paths": {
26 | "#src/*": ["./src/*"]
27 | }
28 | },
29 | "include": ["src"]
30 | }
31 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4 | "target": "ES2020",
5 | "useDefineForClassFields": true,
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "module": "ESNext",
8 | "skipLibCheck": true,
9 |
10 | /* Bundler mode */
11 | "moduleResolution": "bundler",
12 | "allowImportingTsExtensions": true,
13 | "isolatedModules": true,
14 | "moduleDetection": "force",
15 | "noEmit": true,
16 | "jsx": "react-jsx",
17 |
18 | /* Linting */
19 | "strict": true,
20 | "noUnusedLocals": true,
21 | "noUnusedParameters": true,
22 | "noFallthroughCasesInSwitch": true,
23 | "noUncheckedSideEffectImports": true,
24 |
25 | "paths": {
26 | "#src/*": ["./src/*"]
27 | }
28 | },
29 | "include": ["src"]
30 | }
31 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4 | "target": "ES2020",
5 | "useDefineForClassFields": true,
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "module": "ESNext",
8 | "skipLibCheck": true,
9 |
10 | /* Bundler mode */
11 | "moduleResolution": "bundler",
12 | "allowImportingTsExtensions": true,
13 | "isolatedModules": true,
14 | "moduleDetection": "force",
15 | "noEmit": true,
16 | "jsx": "react-jsx",
17 |
18 | /* Linting */
19 | "strict": true,
20 | "noUnusedLocals": true,
21 | "noUnusedParameters": true,
22 | "noFallthroughCasesInSwitch": true,
23 | "noUncheckedSideEffectImports": true,
24 |
25 | "paths": {
26 | "#src/*": ["./src/*"]
27 | }
28 | },
29 | "include": ["src"]
30 | }
31 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4 | "target": "ES2020",
5 | "useDefineForClassFields": true,
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "module": "ESNext",
8 | "skipLibCheck": true,
9 |
10 | /* Bundler mode */
11 | "moduleResolution": "bundler",
12 | "allowImportingTsExtensions": true,
13 | "isolatedModules": true,
14 | "moduleDetection": "force",
15 | "noEmit": true,
16 | "jsx": "react-jsx",
17 |
18 | /* Linting */
19 | "strict": true,
20 | "noUnusedLocals": true,
21 | "noUnusedParameters": true,
22 | "noFallthroughCasesInSwitch": true,
23 | "noUncheckedSideEffectImports": true,
24 |
25 | "paths": {
26 | "#src/*": ["./src/*"]
27 | }
28 | },
29 | "include": ["src"]
30 | }
31 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/routes/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import { Link, Outlet } from 'react-router-dom'
2 | import { ButtonLink } from '#src/components/button.tsx'
3 |
4 | export function AppLayout() {
5 | return (
6 |
7 |
20 |
21 |
22 |
23 |
24 |
25 | )
26 | }
27 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/routes/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import { Link, Outlet } from 'react-router-dom'
2 | import { ButtonLink } from '#src/components/button.tsx'
3 |
4 | export function AppLayout() {
5 | return (
6 |
7 |
20 |
21 |
22 |
23 |
24 |
25 | )
26 | }
27 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/routes/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import { Link, Outlet } from 'react-router'
2 | import { ButtonLink } from '#src/components/button.tsx'
3 |
4 | export function AppLayout() {
5 | return (
6 |
7 |
20 |
21 |
22 |
23 |
24 |
25 | )
26 | }
27 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/routes/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import { Link } from 'react-router-dom'
2 | import { ButtonLink } from '#src/components/button.tsx'
3 |
4 | export function AppLayout({ children }: { children: React.ReactNode }) {
5 | return (
6 |
7 |
20 |
21 |
{children}
22 |
23 | )
24 | }
25 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/error-boundary.tsx:
--------------------------------------------------------------------------------
1 | import { ErrorBoundary } from 'react-error-boundary'
2 |
3 | export function UnknownErrorBoundary({
4 | children,
5 | }: {
6 | children: React.ReactNode
7 | }) {
8 | return (
9 | (
11 |
12 |
Unknown error
13 |
14 | An unknown error occurred. Please try again later.
15 |
16 |
17 | {error instanceof Error ? error.message : 'Unknown error'}
18 |
19 |
20 | )}
21 | >
22 | {children}
23 |
24 | )
25 | }
26 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/error-boundary.tsx:
--------------------------------------------------------------------------------
1 | import { ErrorBoundary } from 'react-error-boundary'
2 |
3 | export function UnknownErrorBoundary({
4 | children,
5 | }: {
6 | children: React.ReactNode
7 | }) {
8 | return (
9 | (
11 |
12 |
Unknown error
13 |
14 | An unknown error occurred. Please try again later.
15 |
16 |
17 | {error instanceof Error ? error.message : 'Unknown error'}
18 |
19 |
20 | )}
21 | >
22 | {children}
23 |
24 | )
25 | }
26 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/error-boundary.tsx:
--------------------------------------------------------------------------------
1 | import { ErrorBoundary } from 'react-error-boundary'
2 |
3 | export function UnknownErrorBoundary({
4 | children,
5 | }: {
6 | children: React.ReactNode
7 | }) {
8 | return (
9 | (
11 |
12 |
Unknown error
13 |
14 | An unknown error occurred. Please try again later.
15 |
16 |
17 | {error instanceof Error ? error.message : 'Unknown error'}
18 |
19 |
20 | )}
21 | >
22 | {children}
23 |
24 | )
25 | }
26 |
--------------------------------------------------------------------------------
/epicshop/setup-custom.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path'
2 | import {
3 | getApps,
4 | isProblemApp,
5 | setPlayground,
6 | } from '@epic-web/workshop-utils/apps.server'
7 | import fsExtra from 'fs-extra'
8 |
9 | const allApps = await getApps()
10 | const problemApps = allApps.filter(isProblemApp)
11 |
12 | if (!process.env.SKIP_PLAYGROUND) {
13 | const firstProblemApp = problemApps[0]
14 | if (firstProblemApp) {
15 | console.log('🛝 setting up the first problem app...')
16 | const playgroundPath = path.join(process.cwd(), 'playground')
17 | if (await fsExtra.exists(playgroundPath)) {
18 | console.log('🗑 deleting existing playground app')
19 | await fsExtra.remove(playgroundPath)
20 | }
21 | await setPlayground(firstProblemApp.fullPath).then(
22 | () => {
23 | console.log('✅ first problem app set up')
24 | },
25 | (error) => {
26 | console.error(error)
27 | throw new Error('❌ first problem app setup failed')
28 | },
29 | )
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/epicshop/fly.toml:
--------------------------------------------------------------------------------
1 | app = "epicweb-dev-upgrade-react-router"
2 | primary_region = "sjc"
3 | kill_signal = "SIGINT"
4 | kill_timeout = 5
5 | processes = [ ]
6 | swap_size_mb = 512
7 |
8 | [experimental]
9 | allowed_public_ports = [ ]
10 | auto_rollback = true
11 |
12 | [[services]]
13 | internal_port = 8080
14 | processes = [ "app" ]
15 | protocol = "tcp"
16 | script_checks = [ ]
17 |
18 | [services.concurrency]
19 | hard_limit = 100
20 | soft_limit = 80
21 | type = "connections"
22 |
23 | [[services.ports]]
24 | handlers = [ "http" ]
25 | port = 80
26 | force_https = true
27 |
28 | [[services.ports]]
29 | handlers = [ "tls", "http" ]
30 | port = 443
31 |
32 | [[services.tcp_checks]]
33 | grace_period = "1s"
34 | interval = "15s"
35 | restart_limit = 0
36 | timeout = "2s"
37 |
38 | [[services.http_checks]]
39 | interval = "10s"
40 | grace_period = "5s"
41 | method = "get"
42 | path = "/"
43 | protocol = "http"
44 | timeout = "2s"
45 | tls_skip_verify = false
46 | headers = { }
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "exercises_99.upgrade-v7_01.solution.v7",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "imports": {
7 | "#src/*": "./src/*"
8 | },
9 | "scripts": {
10 | "dev": "vite",
11 | "build": "tsc -b && vite build",
12 | "preview": "vite preview",
13 | "test": "playwright test --config=./tests/playwright.config.ts"
14 | },
15 | "dependencies": {
16 | "@tailwindcss/vite": "^4.0.9",
17 | "class-variance-authority": "^0.7.1",
18 | "clsx": "^2.1.1",
19 | "cron-parser": "^5.0.4",
20 | "match-sorter": "^8.0.0",
21 | "react": "^19.0.0",
22 | "react-dom": "^19.0.0",
23 | "react-router": "^7.0.0",
24 | "tailwindcss": "^4.0.9"
25 | },
26 | "devDependencies": {
27 | "@playwright/test": "^1.50.1",
28 | "@types/node": "^22.13.5",
29 | "@types/react": "^19.0.10",
30 | "@types/react-dom": "^19.0.4",
31 | "@vitejs/plugin-react": "^4.3.4",
32 | "typescript": "^5.7.3",
33 | "vite": "^6.2.0"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/routes/app/marketing/homepage.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 |
3 | export function HomepageRoute() {
4 | return (
5 |
6 |
7 |
8 | Thoughtful Connections Made Simple
9 |
10 |
11 | Strengthen your relationships with regular personalized messages of
12 | love and gratitude.
13 |
14 |
15 |
16 | Get Started
17 |
18 |
19 |
20 |
21 |
26 |
27 |
28 | )
29 | }
30 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/routes/app/marketing/homepage.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 |
3 | export function HomepageRoute() {
4 | return (
5 |
6 |
7 |
8 | Thoughtful Connections Made Simple
9 |
10 |
11 | Strengthen your relationships with regular personalized messages of
12 | love and gratitude.
13 |
14 |
15 |
16 | Get Started
17 |
18 |
19 |
20 |
21 |
26 |
27 |
28 | )
29 | }
30 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/routes/app/marketing/homepage.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 |
3 | export function HomepageRoute() {
4 | return (
5 |
6 |
7 |
8 | Thoughtful Connections Made Simple
9 |
10 |
11 | Strengthen your relationships with regular personalized messages of
12 | love and gratitude.
13 |
14 |
15 |
16 | Get Started
17 |
18 |
19 |
20 |
21 |
26 |
27 |
28 | )
29 | }
30 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/routes/app/marketing/homepage.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 |
3 | export function HomepageRoute() {
4 | return (
5 |
6 |
7 |
8 | Thoughtful Connections Made Simple
9 |
10 |
11 | Strengthen your relationships with regular personalized messages of
12 | love and gratitude.
13 |
14 |
15 |
16 | Get Started
17 |
18 |
19 |
20 |
21 |
26 |
27 |
28 | )
29 | }
30 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/tests/playwright.config.ts:
--------------------------------------------------------------------------------
1 | import os from 'os'
2 | import path from 'path'
3 | import { defineConfig, devices } from '@playwright/test'
4 |
5 | const PORT = process.env.PORT || '3000'
6 |
7 | const tmpDir = path.join(os.tmpdir(), 'epicweb-get-started-with-react-router')
8 |
9 | export default defineConfig({
10 | timeout: 10000 * (process.env.CI ? 10 : 1),
11 | expect: {
12 | timeout: 5000 * (process.env.CI ? 10 : 1),
13 | },
14 | outputDir: path.join(tmpDir, 'playwright-test-output'),
15 | reporter: [
16 | [
17 | 'html',
18 | { open: 'never', outputFolder: path.join(tmpDir, 'playwright-report') },
19 | ],
20 | ],
21 | use: {
22 | baseURL: `http://localhost:${PORT}/`,
23 | trace: 'retain-on-failure',
24 | },
25 |
26 | projects: [
27 | {
28 | name: 'chromium',
29 | use: { ...devices['Desktop Chrome'] },
30 | },
31 | ],
32 |
33 | webServer: {
34 | command: 'npm run dev',
35 | port: Number(PORT),
36 | reuseExistingServer: !process.env.CI,
37 | stdout: 'pipe',
38 | stderr: 'pipe',
39 | env: { PORT },
40 | },
41 | })
42 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/tests/playwright.config.ts:
--------------------------------------------------------------------------------
1 | import os from 'os'
2 | import path from 'path'
3 | import { defineConfig, devices } from '@playwright/test'
4 |
5 | const PORT = process.env.PORT || '3000'
6 |
7 | const tmpDir = path.join(os.tmpdir(), 'epicweb-get-started-with-react-router')
8 |
9 | export default defineConfig({
10 | timeout: 10000 * (process.env.CI ? 10 : 1),
11 | expect: {
12 | timeout: 5000 * (process.env.CI ? 10 : 1),
13 | },
14 | outputDir: path.join(tmpDir, 'playwright-test-output'),
15 | reporter: [
16 | [
17 | 'html',
18 | { open: 'never', outputFolder: path.join(tmpDir, 'playwright-report') },
19 | ],
20 | ],
21 | use: {
22 | baseURL: `http://localhost:${PORT}/`,
23 | trace: 'retain-on-failure',
24 | },
25 |
26 | projects: [
27 | {
28 | name: 'chromium',
29 | use: { ...devices['Desktop Chrome'] },
30 | },
31 | ],
32 |
33 | webServer: {
34 | command: 'npm run dev',
35 | port: Number(PORT),
36 | reuseExistingServer: !process.env.CI,
37 | stdout: 'pipe',
38 | stderr: 'pipe',
39 | env: { PORT },
40 | },
41 | })
42 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/tests/playwright.config.ts:
--------------------------------------------------------------------------------
1 | import os from 'os'
2 | import path from 'path'
3 | import { defineConfig, devices } from '@playwright/test'
4 |
5 | const PORT = process.env.PORT || '3000'
6 |
7 | const tmpDir = path.join(os.tmpdir(), 'epicweb-get-started-with-react-router')
8 |
9 | export default defineConfig({
10 | timeout: 10000 * (process.env.CI ? 10 : 1),
11 | expect: {
12 | timeout: 5000 * (process.env.CI ? 10 : 1),
13 | },
14 | outputDir: path.join(tmpDir, 'playwright-test-output'),
15 | reporter: [
16 | [
17 | 'html',
18 | { open: 'never', outputFolder: path.join(tmpDir, 'playwright-report') },
19 | ],
20 | ],
21 | use: {
22 | baseURL: `http://localhost:${PORT}/`,
23 | trace: 'retain-on-failure',
24 | },
25 |
26 | projects: [
27 | {
28 | name: 'chromium',
29 | use: { ...devices['Desktop Chrome'] },
30 | },
31 | ],
32 |
33 | webServer: {
34 | command: 'npm run dev',
35 | port: Number(PORT),
36 | reuseExistingServer: !process.env.CI,
37 | stdout: 'pipe',
38 | stderr: 'pipe',
39 | env: { PORT },
40 | },
41 | })
42 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/tests/playwright.config.ts:
--------------------------------------------------------------------------------
1 | import os from 'os'
2 | import path from 'path'
3 | import { defineConfig, devices } from '@playwright/test'
4 |
5 | const PORT = process.env.PORT || '3000'
6 |
7 | const tmpDir = path.join(os.tmpdir(), 'epicweb-get-started-with-react-router')
8 |
9 | export default defineConfig({
10 | timeout: 10000 * (process.env.CI ? 10 : 1),
11 | expect: {
12 | timeout: 5000 * (process.env.CI ? 10 : 1),
13 | },
14 | outputDir: path.join(tmpDir, 'playwright-test-output'),
15 | reporter: [
16 | [
17 | 'html',
18 | { open: 'never', outputFolder: path.join(tmpDir, 'playwright-report') },
19 | ],
20 | ],
21 | use: {
22 | baseURL: `http://localhost:${PORT}/`,
23 | trace: 'retain-on-failure',
24 | },
25 |
26 | projects: [
27 | {
28 | name: 'chromium',
29 | use: { ...devices['Desktop Chrome'] },
30 | },
31 | ],
32 |
33 | webServer: {
34 | command: 'npm run dev',
35 | port: Number(PORT),
36 | reuseExistingServer: !process.env.CI,
37 | stdout: 'pipe',
38 | stderr: 'pipe',
39 | env: { PORT },
40 | },
41 | })
42 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "exercises_99.upgrade-v7_01.problem.v7",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "imports": {
7 | "#src/*": "./src/*"
8 | },
9 | "scripts": {
10 | "dev": "vite",
11 | "build": "tsc -b && vite build",
12 | "preview": "vite preview",
13 | "test": "playwright test --config=./tests/playwright.config.ts"
14 | },
15 | "dependencies": {
16 | "@tailwindcss/vite": "^4.0.9",
17 | "class-variance-authority": "^0.7.1",
18 | "clsx": "^2.1.1",
19 | "cron-parser": "^5.0.4",
20 | "match-sorter": "^8.0.0",
21 | "react": "^19.0.0",
22 | "react-dom": "^19.0.0",
23 | "react-error-boundary": "^3.1.4",
24 | "react-router-dom": "^7.0.0",
25 | "tailwindcss": "^4.0.9"
26 | },
27 | "devDependencies": {
28 | "@playwright/test": "^1.50.1",
29 | "@types/node": "^22.13.5",
30 | "@types/react": "^19.0.10",
31 | "@types/react-dom": "^19.0.4",
32 | "@vitejs/plugin-react": "^4.3.4",
33 | "typescript": "^5.7.3",
34 | "vite": "^6.2.0"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/routes/app/recipients/index.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 | import { Icon } from '#src/components/icon.tsx'
3 | import { recipients } from '#src/data.ts'
4 |
5 | export function RecipientIndexRoute() {
6 | return (
7 |
8 | {recipients.length > 0 ? (
9 | <>
10 |
Select a Recipient
11 |
12 | Choose a recipient from your list to view their messages and
13 | schedule
14 |
15 | >
16 | ) : (
17 | <>
18 |
19 |
No Recipients Yet
20 |
21 | Add your first recipient to start sending messages
22 |
23 |
24 |
25 | Add Your First Recipient
26 |
27 | >
28 | )}
29 |
30 | )
31 | }
32 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/routes/app/recipients/index.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 | import { Icon } from '#src/components/icon.tsx'
3 | import { recipients } from '#src/data.ts'
4 |
5 | export function RecipientIndexRoute() {
6 | return (
7 |
8 | {recipients.length > 0 ? (
9 | <>
10 |
Select a Recipient
11 |
12 | Choose a recipient from your list to view their messages and
13 | schedule
14 |
15 | >
16 | ) : (
17 | <>
18 |
19 |
No Recipients Yet
20 |
21 | Add your first recipient to start sending messages
22 |
23 |
24 |
25 | Add Your First Recipient
26 |
27 | >
28 | )}
29 |
30 | )
31 | }
32 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/routes/app/recipients/index.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 | import { Icon } from '#src/components/icon.tsx'
3 | import { recipients } from '#src/data.ts'
4 |
5 | export function RecipientIndexRoute() {
6 | return (
7 |
8 | {recipients.length > 0 ? (
9 | <>
10 |
Select a Recipient
11 |
12 | Choose a recipient from your list to view their messages and
13 | schedule
14 |
15 | >
16 | ) : (
17 | <>
18 |
19 |
No Recipients Yet
20 |
21 | Add your first recipient to start sending messages
22 |
23 |
24 |
25 | Add Your First Recipient
26 |
27 | >
28 | )}
29 |
30 | )
31 | }
32 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/routes/app/recipients/index.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonLink } from '#src/components/button.tsx'
2 | import { Icon } from '#src/components/icon.tsx'
3 | import { recipients } from '#src/data.ts'
4 |
5 | export function RecipientIndexRoute() {
6 | return (
7 |
8 | {recipients.length > 0 ? (
9 | <>
10 |
Select a Recipient
11 |
12 | Choose a recipient from your list to view their messages and
13 | schedule
14 |
15 | >
16 | ) : (
17 | <>
18 |
19 |
No Recipients Yet
20 |
21 | Add your first recipient to start sending messages
22 |
23 |
24 |
25 | Add Your First Recipient
26 |
27 | >
28 | )}
29 |
30 | )
31 | }
32 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/routes/app/recipients/$id.edit.tsx:
--------------------------------------------------------------------------------
1 | import { useParams } from 'react-router-dom'
2 | import { ButtonLink } from '#src/components/button.tsx'
3 | import { Icon } from '#src/components/icon.tsx'
4 | import { recipients } from '#src/data.ts'
5 | import { RecipientEditor } from './recipient-editor.tsx'
6 |
7 | export function RecipientEditRoute() {
8 | const { id } = useParams()
9 | const recipient = recipients.find((r) => r.id === id)
10 |
11 | if (!recipient) throw new Error(`Recipient with ID of "${id}" not found`)
12 |
13 | return (
14 |
15 |
16 |
22 |
23 |
24 |
Edit Recipient
25 |
Edit the details of your recipient.
26 |
27 |
28 |
29 |
30 |
31 | )
32 | }
33 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/routes/app/recipients/$id.edit.tsx:
--------------------------------------------------------------------------------
1 | import { useParams } from 'react-router-dom'
2 | import { ButtonLink } from '#src/components/button.tsx'
3 | import { Icon } from '#src/components/icon.tsx'
4 | import { recipients } from '#src/data.ts'
5 | import { RecipientEditor } from './recipient-editor.tsx'
6 |
7 | export function RecipientEditRoute() {
8 | const { id } = useParams()
9 | const recipient = recipients.find((r) => r.id === id)
10 |
11 | if (!recipient) throw new Error(`Recipient with ID of "${id}" not found`)
12 |
13 | return (
14 |
15 |
16 |
22 |
23 |
24 |
Edit Recipient
25 |
Edit the details of your recipient.
26 |
27 |
28 |
29 |
30 |
31 | )
32 | }
33 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "exercises_50.upgrade-v6_01.problem.v6",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "imports": {
7 | "#src/*": "./src/*"
8 | },
9 | "scripts": {
10 | "dev": "vite",
11 | "build": "tsc -b && vite build",
12 | "preview": "vite preview",
13 | "test": "playwright test --config=./tests/playwright.config.ts"
14 | },
15 | "dependencies": {
16 | "@tailwindcss/vite": "^4.0.9",
17 | "class-variance-authority": "^0.7.1",
18 | "clsx": "^2.1.1",
19 | "cron-parser": "^5.0.4",
20 | "match-sorter": "^8.0.0",
21 | "react": "^19.0.0",
22 | "react-dom": "^19.0.0",
23 | "react-error-boundary": "^3.1.4",
24 | "react-router-dom": "6.0.0",
25 | "tailwindcss": "^4.0.9"
26 | },
27 | "devDependencies": {
28 | "@playwright/test": "^1.50.1",
29 | "@types/node": "^22.13.5",
30 | "@types/react": "^19.0.10",
31 | "@types/react-dom": "^19.0.4",
32 | "@vitejs/plugin-react": "^4.3.4",
33 | "typescript": "^5.7.3",
34 | "vite": "^6.2.0"
35 | },
36 | "resolutions": {
37 | "react-router-dom": "6.0.0",
38 | "react-router": "6.0.0"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/routes/app/recipients/$id.edit.tsx:
--------------------------------------------------------------------------------
1 | import { useParams } from 'react-router'
2 | import { ButtonLink } from '#src/components/button.tsx'
3 | import { Icon } from '#src/components/icon.tsx'
4 | import { recipients } from '#src/data.ts'
5 | import { RecipientEditor } from './recipient-editor.tsx'
6 |
7 | export function RecipientEditRoute() {
8 | const { id } = useParams()
9 | const recipient = recipients.find((r) => r.id === id)
10 |
11 | if (!recipient) throw new Error(`Recipient with ID of "${id}" not found`)
12 |
13 | return (
14 |
15 |
16 |
23 |
24 |
25 |
Edit Recipient
26 |
Edit the details of your recipient.
27 |
28 |
29 |
30 |
31 |
32 | )
33 | }
34 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/routes/app/recipients/$id.edit.tsx:
--------------------------------------------------------------------------------
1 | import { useParams } from 'react-router-dom'
2 | import { ButtonLink } from '#src/components/button.tsx'
3 | import { Icon } from '#src/components/icon.tsx'
4 | import { recipients } from '#src/data.ts'
5 | import { RecipientEditor } from './recipient-editor.tsx'
6 |
7 | export function RecipientEditRoute() {
8 | const { id } = useParams<{ id: string }>()
9 | const recipient = recipients.find((r) => r.id === id)
10 |
11 | if (!recipient) throw new Error(`Recipient with ID of "${id}" not found`)
12 |
13 | return (
14 |
15 |
16 |
22 |
23 |
24 |
Edit Recipient
25 |
Edit the details of your recipient.
26 |
27 |
28 |
29 |
30 |
31 | )
32 | }
33 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/routes/app/marketing/layout.tsx:
--------------------------------------------------------------------------------
1 | import { Link, Outlet } from 'react-router-dom'
2 |
3 | export function MarketingLayout() {
4 | return (
5 |
6 |
7 |
8 |
9 |
10 |
33 |
34 | )
35 | }
36 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/routes/app/marketing/layout.tsx:
--------------------------------------------------------------------------------
1 | import { Link, Outlet } from 'react-router-dom'
2 |
3 | export function MarketingLayout() {
4 | return (
5 |
6 |
7 |
8 |
9 |
10 |
33 |
34 | )
35 | }
36 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/routes/app/marketing/layout.tsx:
--------------------------------------------------------------------------------
1 | import { Outlet, Link } from 'react-router'
2 |
3 | export function MarketingLayout() {
4 | return (
5 |
6 |
7 |
8 |
9 |
10 |
33 |
34 | )
35 | }
36 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/routes/app/marketing/layout.tsx:
--------------------------------------------------------------------------------
1 | import { Link } from 'react-router-dom'
2 |
3 | export function MarketingLayout({ children }: { children: React.ReactNode }) {
4 | return (
5 |
6 |
7 | {children}
8 |
9 |
10 |
33 |
34 | )
35 | }
36 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "exercises_01.upgrade-v5_01.problem.v5",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "imports": {
7 | "#src/*": "./src/*"
8 | },
9 | "scripts": {
10 | "dev": "vite",
11 | "build": "tsc -b && vite build",
12 | "preview": "vite preview",
13 | "test": "playwright test --config=./tests/playwright.config.ts"
14 | },
15 | "dependencies": {
16 | "@tailwindcss/vite": "^4.0.9",
17 | "class-variance-authority": "^0.7.1",
18 | "clsx": "^2.1.1",
19 | "cron-parser": "^5.0.4",
20 | "match-sorter": "^8.0.0",
21 | "react": "^19.0.0",
22 | "react-dom": "^19.0.0",
23 | "react-error-boundary": "^3.1.4",
24 | "react-router-dom": "^5.3.4",
25 | "tailwindcss": "^4.0.9"
26 | },
27 | "devDependencies": {
28 | "@playwright/test": "^1.50.1",
29 | "@types/node": "^22.13.5",
30 | "@types/react": "^19.0.10",
31 | "@types/react-dom": "^19.0.4",
32 | "@types/react-router-dom": "^5.3.3",
33 | "@types/react-router": "^5.1.20",
34 | "@vitejs/plugin-react": "^4.3.4",
35 | "typescript": "^5.7.3",
36 | "vite": "^6.2.0"
37 | },
38 | "resolutions": {
39 | "react-router-dom": "5.3.4",
40 | "react-router": "5.3.4",
41 | "@types/react-router-dom": "5.3.3",
42 | "@types/react-router": "5.1.20"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/routes/app/marketing/about.tsx:
--------------------------------------------------------------------------------
1 | import { Link } from 'react-router-dom'
2 | import { Icon } from '#src/components/icon.tsx'
3 |
4 | export function AboutRoute() {
5 | return (
6 |
7 |
About Us
8 |
35 |
36 |
37 | Go home
38 |
39 |
40 |
41 | )
42 | }
43 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/routes/app/marketing/about.tsx:
--------------------------------------------------------------------------------
1 | import { Link } from 'react-router-dom'
2 | import { Icon } from '#src/components/icon.tsx'
3 |
4 | export function AboutRoute() {
5 | return (
6 |
7 |
About Us
8 |
35 |
36 |
37 | Go home
38 |
39 |
40 |
41 | )
42 | }
43 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/routes/app/marketing/about.tsx:
--------------------------------------------------------------------------------
1 | import { Link } from 'react-router-dom'
2 | import { Icon } from '#src/components/icon.tsx'
3 |
4 | export function AboutRoute() {
5 | return (
6 |
7 |
About Us
8 |
35 |
36 |
37 | Go home
38 |
39 |
40 |
41 | )
42 | }
43 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/routes/app/marketing/about.tsx:
--------------------------------------------------------------------------------
1 | import { Link } from 'react-router'
2 | import { Icon } from '#src/components/icon.tsx'
3 |
4 | export function AboutRoute() {
5 | return (
6 |
7 |
About Us
8 |
35 |
36 |
37 | Go home
38 |
39 |
40 |
41 | )
42 | }
43 |
--------------------------------------------------------------------------------
/exercises/01.upgrade-v5/01.problem.v5/src/styles/index.css:
--------------------------------------------------------------------------------
1 | @import 'tailwindcss';
2 |
3 | @import './fonts.css';
4 | @import './theme.css';
5 |
6 | :root {
7 | --font-poppins: 'Poppins', sans-serif;
8 | --font-source-serif-4: 'Source_Serif_4', serif;
9 | }
10 |
11 | @theme {
12 | --font-sans: var(--font-poppins);
13 | --font-serif: var(--font-source-serif-4);
14 | }
15 |
16 | @layer base {
17 | * {
18 | border-color: var(--color-border);
19 | outline-color: var(--color-ring);
20 | }
21 | body {
22 | background-color: var(--color-background);
23 | color: var(--color-foreground);
24 | }
25 |
26 | a {
27 | color: var(--color-link);
28 | text-decoration: none;
29 | }
30 |
31 | a:hover,
32 | a:focus {
33 | color: var(--color-link-hover);
34 | text-decoration: underline;
35 | }
36 |
37 | a:active {
38 | color: var(--color-link-active);
39 | }
40 |
41 | button {
42 | background-color: var(--color-button);
43 | color: var(--color-button-text);
44 | padding: 0.5rem 1.5rem;
45 | border-radius: 9999px;
46 | border: none;
47 | cursor: pointer;
48 | }
49 |
50 | button:hover,
51 | button:focus {
52 | background-color: var(--color-button-hover);
53 | }
54 |
55 | button:active {
56 | background-color: var(--color-button-active);
57 | }
58 |
59 | input,
60 | select {
61 | background-color: var(--color-input-background);
62 | color: var(--color-input-text);
63 | border-color: var(--color-input-border);
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/exercises/50.upgrade-v6/01.problem.v6/src/styles/index.css:
--------------------------------------------------------------------------------
1 | @import 'tailwindcss';
2 |
3 | @import './fonts.css';
4 | @import './theme.css';
5 |
6 | :root {
7 | --font-poppins: 'Poppins', sans-serif;
8 | --font-source-serif-4: 'Source_Serif_4', serif;
9 | }
10 |
11 | @theme {
12 | --font-sans: var(--font-poppins);
13 | --font-serif: var(--font-source-serif-4);
14 | }
15 |
16 | @layer base {
17 | * {
18 | border-color: var(--color-border);
19 | outline-color: var(--color-ring);
20 | }
21 | body {
22 | background-color: var(--color-background);
23 | color: var(--color-foreground);
24 | }
25 |
26 | a {
27 | color: var(--color-link);
28 | text-decoration: none;
29 | }
30 |
31 | a:hover,
32 | a:focus {
33 | color: var(--color-link-hover);
34 | text-decoration: underline;
35 | }
36 |
37 | a:active {
38 | color: var(--color-link-active);
39 | }
40 |
41 | button {
42 | background-color: var(--color-button);
43 | color: var(--color-button-text);
44 | padding: 0.5rem 1.5rem;
45 | border-radius: 9999px;
46 | border: none;
47 | cursor: pointer;
48 | }
49 |
50 | button:hover,
51 | button:focus {
52 | background-color: var(--color-button-hover);
53 | }
54 |
55 | button:active {
56 | background-color: var(--color-button-active);
57 | }
58 |
59 | input,
60 | select {
61 | background-color: var(--color-input-background);
62 | color: var(--color-input-text);
63 | border-color: var(--color-input-border);
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.problem.v7/src/styles/index.css:
--------------------------------------------------------------------------------
1 | @import 'tailwindcss';
2 |
3 | @import './fonts.css';
4 | @import './theme.css';
5 |
6 | :root {
7 | --font-poppins: 'Poppins', sans-serif;
8 | --font-source-serif-4: 'Source_Serif_4', serif;
9 | }
10 |
11 | @theme {
12 | --font-sans: var(--font-poppins);
13 | --font-serif: var(--font-source-serif-4);
14 | }
15 |
16 | @layer base {
17 | * {
18 | border-color: var(--color-border);
19 | outline-color: var(--color-ring);
20 | }
21 | body {
22 | background-color: var(--color-background);
23 | color: var(--color-foreground);
24 | }
25 |
26 | a {
27 | color: var(--color-link);
28 | text-decoration: none;
29 | }
30 |
31 | a:hover,
32 | a:focus {
33 | color: var(--color-link-hover);
34 | text-decoration: underline;
35 | }
36 |
37 | a:active {
38 | color: var(--color-link-active);
39 | }
40 |
41 | button {
42 | background-color: var(--color-button);
43 | color: var(--color-button-text);
44 | padding: 0.5rem 1.5rem;
45 | border-radius: 9999px;
46 | border: none;
47 | cursor: pointer;
48 | }
49 |
50 | button:hover,
51 | button:focus {
52 | background-color: var(--color-button-hover);
53 | }
54 |
55 | button:active {
56 | background-color: var(--color-button-active);
57 | }
58 |
59 | input,
60 | select {
61 | background-color: var(--color-input-background);
62 | color: var(--color-input-text);
63 | border-color: var(--color-input-border);
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/exercises/99.upgrade-v7/01.solution.v7/src/styles/index.css:
--------------------------------------------------------------------------------
1 | @import 'tailwindcss';
2 |
3 | @import './fonts.css';
4 | @import './theme.css';
5 |
6 | :root {
7 | --font-poppins: 'Poppins', sans-serif;
8 | --font-source-serif-4: 'Source_Serif_4', serif;
9 | }
10 |
11 | @theme {
12 | --font-sans: var(--font-poppins);
13 | --font-serif: var(--font-source-serif-4);
14 | }
15 |
16 | @layer base {
17 | * {
18 | border-color: var(--color-border);
19 | outline-color: var(--color-ring);
20 | }
21 | body {
22 | background-color: var(--color-background);
23 | color: var(--color-foreground);
24 | }
25 |
26 | a {
27 | color: var(--color-link);
28 | text-decoration: none;
29 | }
30 |
31 | a:hover,
32 | a:focus {
33 | color: var(--color-link-hover);
34 | text-decoration: underline;
35 | }
36 |
37 | a:active {
38 | color: var(--color-link-active);
39 | }
40 |
41 | button {
42 | background-color: var(--color-button);
43 | color: var(--color-button-text);
44 | padding: 0.5rem 1.5rem;
45 | border-radius: 9999px;
46 | border: none;
47 | cursor: pointer;
48 | }
49 |
50 | button:hover,
51 | button:focus {
52 | background-color: var(--color-button-hover);
53 | }
54 |
55 | button:active {
56 | background-color: var(--color-button-active);
57 | }
58 |
59 | input,
60 | select {
61 | background-color: var(--color-input-background);
62 | color: var(--color-input-text);
63 | border-color: var(--color-input-border);
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/.github/workflows/validate.yml:
--------------------------------------------------------------------------------
1 | name: deploy
2 |
3 | concurrency:
4 | group: ${{ github.workflow }}-${{ github.ref }}
5 | cancel-in-progress: true
6 |
7 | on:
8 | push:
9 | branches:
10 | - 'main'
11 | pull_request:
12 | branches:
13 | - 'main'
14 | jobs:
15 | setup:
16 | strategy:
17 | matrix:
18 | os: [ubuntu-latest, windows-latest, macos-latest]
19 | runs-on: ${{ matrix.os }}
20 | steps:
21 | - name: ⬇️ Checkout repo
22 | uses: actions/checkout@v4
23 |
24 | - name: ⎔ Setup node
25 | uses: actions/setup-node@v4
26 | with:
27 | node-version: 20
28 |
29 | - name: ▶️ Run setup script
30 | run: npm run setup
31 |
32 | - name: ʦ TypeScript
33 | run: npm run typecheck
34 |
35 | - name: ⬣ ESLint
36 | run: npm run lint
37 |
38 | deploy:
39 | name: 🚀 Deploy
40 | runs-on: ubuntu-latest
41 | # only deploy main branch on pushes on non-forks
42 | if:
43 | ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' &&
44 | github.repository_owner == 'epicweb-dev' }}
45 |
46 | steps:
47 | - name: ⬇️ Checkout repo
48 | uses: actions/checkout@v4
49 |
50 | - name: 🎈 Setup Fly
51 | uses: superfly/flyctl-actions/setup-flyctl@1.5
52 |
53 | - name: 🚀 Deploy
54 | run: flyctl deploy --remote-only
55 | working-directory: ./epicshop
56 | env:
57 | FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
58 |
--------------------------------------------------------------------------------