In this practice let's build a Navbar with Context by applying the concepts we have learned till now.
https://mknavcontext.ccbp.tech/
Click to view
- Extra Small (Size < 576px) and Small (Size >= 576px) - Home Light Theme
- Extra Small (Size < 576px) and Small (Size >= 576px) - Home Dark Theme
- Extra Small (Size < 576px) and Small (Size >= 576px) - About Light Theme
- Extra Small (Size < 576px) and Small (Size >= 576px) - About Dark Theme
- Extra Small (Size < 576px) and Small (Size >= 576px) - Not Found Light Theme
- Extra Small (Size < 576px) and Small (Size >= 576px) - Not Found Dark Theme
- Medium (Size >= 768px), Large (Size >= 992px) and Extra Large (Size >= 1200px) - Home Light Theme
- Medium (Size >= 768px), Large (Size >= 992px) and Extra Large (Size >= 1200px) - Home Dark Theme
- Medium (Size >= 768px), Large (Size >= 992px) and Extra Large (Size >= 1200px) - About Light Theme
- Medium (Size >= 768px), Large (Size >= 992px) and Extra Large (Size >= 1200px) - About Dark Theme
- Medium (Size >= 768px), Large (Size >= 992px) and Extra Large (Size >= 1200px) - Not Found Light Theme
- Medium (Size >= 768px), Large (Size >= 992px) and Extra Large (Size >= 1200px) - Not Found Dark Theme
Click to view
- Download dependencies by running
npm install
- Start up the app using
npm start
Functionality to be added
The app must have the following functionalities
- Initially, the app consists of light theme.
- when the dark theme image is clicked in the Respective route
- The dark theme image should be changed to light theme image.
- The app should be changed to dark mode.
- when the light theme image is clicked in the Respective route
- The light theme image should be changed to dark theme image.
- The app should be changed to light mode.
- The following are the keys used in the context object
isDarkTheme
- this variable is used to change the themetoggleTheme
- this function is used to update the value of theisDarkTheme
- When an undefined path is provided in the URL then the page should navigate to the
NotFoundRoute
Implementation Files
Use these files to complete the implementation:
-
src/App.js
-
src/components/Home/index.js
-
src/components/Home/index.css
-
src/components/About/index.js
-
src/components/About/index.css
-
src/components/Navbar/index.js
-
src/components/Navbar/index.css
-
src/components/NotFound/index.css
-
src/components/NotFound/index.js
Click to view Important Note Points
The following HTML attributes are required for the HTML for the tests to pass
- The Home image for light theme and dark theme should have the alt attribute value as
home
- The About image for light theme and dark theme should have the alt attribute value as
about
- The Website Logo image for light theme and dark theme should have the alt attribute value as
website logo
- The Theme image for light theme and dark theme should have the alt attribute value as
theme
- The Theme button should have the testid as
theme
Image URLs
-
https://assets.ccbp.in/frontend/react-js/about-light-img.png
-
https://assets.ccbp.in/frontend/react-js/website-logo-light-theme-img.png
-
https://assets.ccbp.in/frontend/react-js/website-logo-dark-theme-img.png
-
https://assets.ccbp.in/frontend/react-js/light-theme-img.png
-
https://assets.ccbp.in/frontend/react-js/not-found-img.png alt should be not found
Colors
Font-families
- Roboto
- All components you implement should go in the
src/components
directory.- Don't change the component folder names as those are the files being imported into the tests.
- Do not remove the pre-filled code
- Want to quickly review some of the concepts you’ve been learning? Take a look at the Cheat Sheets.