├── 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 |
8 |
9 | 13 | gratitext 14 | 15 | 18 |
19 |
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 |
8 |
9 | 13 | gratitext 14 | 15 | 18 |
19 |
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 |
8 |
9 | 13 | gratitext 14 | 15 | 18 |
19 |
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 |
8 |
9 | 13 | gratitext 14 | 15 | 18 |
19 |
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 | Woman smiling 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 | Woman smiling 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 | Woman smiling 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 | Woman smiling 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 |
11 |
12 |
13 | 17 | gratitext 18 | 19 | 23 |
24 |
25 |
All Rights Reserved
26 |
27 | Terms and Conditions 28 | Privacy Policy 29 |
30 |
31 |
32 |
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 |
11 |
12 |
13 | 17 | gratitext 18 | 19 | 23 |
24 |
25 |
All Rights Reserved
26 |
27 | Terms and Conditions 28 | Privacy Policy 29 |
30 |
31 |
32 |
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 |
11 |
12 |
13 | 17 | gratitext 18 | 19 | 23 |
24 |
25 |
All Rights Reserved
26 |
27 | Terms and Conditions 28 | Privacy Policy 29 |
30 |
31 |
32 |
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 |
11 |
12 |
13 | 17 | gratitext 18 | 19 | 23 |
24 |
25 |
All Rights Reserved
26 |
27 | Terms and Conditions 28 | Privacy Policy 29 |
30 |
31 |
32 |
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 |
9 |

10 | Gratitext is a platform that allows you to send text messages to your 11 | friends and family. 12 |

13 |

14 | Gratitext is actually a real product by{' '} 15 | 16 | Kent C. Dodds 17 | {' '} 18 | which you can find and use at{' '} 19 | 20 | gratitext.app 21 | 22 | , but the version you're looking at now is for workshop purposes only. 23 |

24 |

25 | You can find the source code for this workshop at{' '} 26 | 30 | github.com/epicweb-dev/get-started-with-react-router 31 | 32 |

33 |

Have a lovely day!

34 |
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 |
9 |

10 | Gratitext is a platform that allows you to send text messages to your 11 | friends and family. 12 |

13 |

14 | Gratitext is actually a real product by{' '} 15 | 16 | Kent C. Dodds 17 | {' '} 18 | which you can find and use at{' '} 19 | 20 | gratitext.app 21 | 22 | , but the version you're looking at now is for workshop purposes only. 23 |

24 |

25 | You can find the source code for this workshop at{' '} 26 | 30 | github.com/epicweb-dev/get-started-with-react-router 31 | 32 |

33 |

Have a lovely day!

34 |
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 |
9 |

10 | Gratitext is a platform that allows you to send text messages to your 11 | friends and family. 12 |

13 |

14 | Gratitext is actually a real product by{' '} 15 | 16 | Kent C. Dodds 17 | {' '} 18 | which you can find and use at{' '} 19 | 20 | gratitext.app 21 | 22 | , but the version you're looking at now is for workshop purposes only. 23 |

24 |

25 | You can find the source code for this workshop at{' '} 26 | 30 | github.com/epicweb-dev/get-started-with-react-router 31 | 32 |

33 |

Have a lovely day!

34 |
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 |
9 |

10 | Gratitext is a platform that allows you to send text messages to your 11 | friends and family. 12 |

13 |

14 | Gratitext is actually a real product by{' '} 15 | 16 | Kent C. Dodds 17 | {' '} 18 | which you can find and use at{' '} 19 | 20 | gratitext.app 21 | 22 | , but the version you're looking at now is for workshop purposes only. 23 |

24 |

25 | You can find the source code for this workshop at{' '} 26 | 30 | github.com/epicweb-dev/get-started-with-react-router 31 | 32 |

33 |

Have a lovely day!

34 |
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 | --------------------------------------------------------------------------------