From f30bb1566908fbad09adcdc9e77958f8328f1dfd Mon Sep 17 00:00:00 2001 From: Nisarg Date: Tue, 24 Sep 2024 11:27:51 -0700 Subject: [PATCH 01/12] feat: add 404 svg --- frontend/src/assets/img/SPAR_404_error.svg | 88 ++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 frontend/src/assets/img/SPAR_404_error.svg diff --git a/frontend/src/assets/img/SPAR_404_error.svg b/frontend/src/assets/img/SPAR_404_error.svg new file mode 100644 index 000000000..f8ad551c7 --- /dev/null +++ b/frontend/src/assets/img/SPAR_404_error.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From f1a8a26a73378301059e9369008b7ff796bb589f Mon Sep 17 00:00:00 2001 From: Nisarg Date: Tue, 8 Oct 2024 14:46:46 -0700 Subject: [PATCH 02/12] feat: add 404 route --- frontend/src/App.tsx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 733a6f864..1bee70760 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -90,6 +90,11 @@ const App: React.FC = () => { const getBrowserRouter = () => { const selectedRoutes = selectBrowserRoutes(); selectedRoutes.push(...sharedRoutes); + // Add a wildcard route to catch undefined routes and show the 404 page + selectedRoutes.push({ + path: '*', // This wildcard matches any undefined route + element: // Render the 404 component + }); return createBrowserRouter(selectedRoutes); }; @@ -99,6 +104,11 @@ const App: React.FC = () => { browserRouter.navigate('/403'); }; + // Programmatic redirection to 404 + const handleRedirectTo404 = () => { + browserRouter.navigate('/404'); + }; + return ( From 640cd716dacdf283ad9e150cc169c7b0174b5ee2 Mon Sep 17 00:00:00 2001 From: Nisarg Date: Tue, 8 Oct 2024 14:47:03 -0700 Subject: [PATCH 03/12] feat: add text for 404 page --- frontend/src/views/ErrorViews/FourOhFour/constants.ts | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 frontend/src/views/ErrorViews/FourOhFour/constants.ts diff --git a/frontend/src/views/ErrorViews/FourOhFour/constants.ts b/frontend/src/views/ErrorViews/FourOhFour/constants.ts new file mode 100644 index 000000000..8b0eeaabb --- /dev/null +++ b/frontend/src/views/ErrorViews/FourOhFour/constants.ts @@ -0,0 +1,7 @@ +export const fourOhFourTexts = { + title: 'Page not found', + supportText1: 'Oops! It looks like this page got lost in the forest.', + supportText2: 'This page doesn\'t exist or was removed.', + buttonLabel: 'Back to home', + altText: 'Cone confused while reading a map in forest' +}; From 987c5b3adfe1e7095730fef740f74dd16b7efe0b Mon Sep 17 00:00:00 2001 From: Nisarg Date: Tue, 8 Oct 2024 14:48:01 -0700 Subject: [PATCH 04/12] feat: add 404 file --- .../src/views/ErrorViews/FourOhFour/index.tsx | 85 ++++++++++--------- 1 file changed, 47 insertions(+), 38 deletions(-) diff --git a/frontend/src/views/ErrorViews/FourOhFour/index.tsx b/frontend/src/views/ErrorViews/FourOhFour/index.tsx index e97e74a97..241101901 100644 --- a/frontend/src/views/ErrorViews/FourOhFour/index.tsx +++ b/frontend/src/views/ErrorViews/FourOhFour/index.tsx @@ -1,51 +1,60 @@ import React from 'react'; -import { Link } from 'react-router-dom'; +import { useNavigate } from 'react-router-dom'; +import { + FlexGrid, Row, Column, + Button +} from '@carbon/react'; +import { Home } from '@carbon/icons-react'; +import Error404 from '../../../assets/img/SPAR_404_error.svg'; import ROUTES from '../../../routes/constants'; - -import mysteryImg from '../../../assets/img/404-mystery.png'; +import useWindowSize from '../../../hooks/UseWindowSize'; +import { fourOhFourTexts } from './constants'; +import { MEDIUM_SCREEN_WIDTH } from '../../../shared-constants/shared-constants'; import './styles.scss'; const FourOhFour = () => { - type linkType = { - href: string, - text: string - } + const navigate = useNavigate(); + const windowSize = useWindowSize(); - const links: linkType[] = [ - { - href: ROUTES.DASHBOARD, - text: 'Dashboard' - }, - { - href: ROUTES.SEEDLOTS, - text: 'Seedlots' - } - ]; return ( -
-
404
- -
-

- Sorry, we can't find the page you are looking for. -

-

- Maybe some of these most visited links will help you? -

-
+ + + + {fourOhFourTexts.altText} + + +

+ {fourOhFourTexts.title} +

{ - links.map(({ href, text }) => ( -
  • - -

    {text}

    - -
  • - )) + windowSize.innerWidth > MEDIUM_SCREEN_WIDTH + ? ( +

    + {fourOhFourTexts.supportText1} +

    + ) + : null } -
    -
    -
    +

    + {fourOhFourTexts.supportText2} +

    + + + + ); }; From 2a02ff03cdbe7299817ebbc271344356ca0b6f5f Mon Sep 17 00:00:00 2001 From: Nisarg Date: Tue, 8 Oct 2024 14:48:18 -0700 Subject: [PATCH 05/12] feat: add 404 page style --- .../views/ErrorViews/FourOhFour/styles.scss | 77 ++++++++----------- 1 file changed, 32 insertions(+), 45 deletions(-) diff --git a/frontend/src/views/ErrorViews/FourOhFour/styles.scss b/frontend/src/views/ErrorViews/FourOhFour/styles.scss index 394270b72..ce11cb57b 100644 --- a/frontend/src/views/ErrorViews/FourOhFour/styles.scss +++ b/frontend/src/views/ErrorViews/FourOhFour/styles.scss @@ -1,61 +1,48 @@ @use '@bcgov-nr/nr-theme/design-tokens/variables.scss' as vars; @use '@carbon/type'; -.fof-container { - margin: 0; - max-width: 100%; - min-height: 100vh; - padding: 1rem; - background-color: rgb(131, 217, 200); - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - +.four-oh-four-page { img { - width: 25%; - min-width: 21.875rem; + height: 100%; + width: 100%; + object-fit: contain; } - .list { - li { - list-style-type: none; - } + h1 { + @include type.type-style('fluid-heading-05', true); + color: var(--#{vars.$bcgov-prefix}-text-primary); + margin-bottom: 2.5rem; + } + p { + @include type.type-style('fluid-paragraph-01', true); + color: var(--#{vars.$bcgov-prefix}-text-secondary); + margin-bottom: 0.25rem; + } + + button { margin-top: 2rem; + margin-bottom: 3rem; + inline-size: 16rem; } - .link { - margin-bottom: 0.5rem; - position: relative; - display: inline-block; - transition: color var(--#{vars.$bcgov-prefix}-transition-base); - color: var(--#{vars.$bcgov-prefix}-text-01); - text-decoration: none; - margin-left: 1rem; + .four-oh-four-row { + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + } - &:before { - content: '\21B3'; //"↳" - position: absolute; - left: -1rem; - color: var(--#{vars.$bcgov-prefix}-text-01); - cursor: pointer; + @media only screen and (max-width: 1055px) { + margin-top: 0; + margin-left: 0; + img { + height: 50vh; + width: 90vw; } } - .fof-text { - text-align: center; - font-family: cursive; - font-weight: 700; - font-size: 13rem; - transform: translate(0, -20%); - letter-spacing: 0.02em; - color: #F9f1cc; - text-shadow: 5px 5px 0px #FFB650, - 10px 10px 0px #FFD662, - 15px 15px 0px #FF80BF, - 20px 20px 0px #EF5097, - 25px 25px 0px #6868AC, - 30px 30px 0px #90B1E0; + @media only screen and (max-width: 672px) { + margin-top: 0; } } From af8e2fb81d54d924898f586f92a7289a589e5840 Mon Sep 17 00:00:00 2001 From: Nisarg Date: Tue, 8 Oct 2024 15:02:53 -0700 Subject: [PATCH 06/12] fix: update style for extra large screen --- frontend/src/views/ErrorViews/FourOhFour/styles.scss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/frontend/src/views/ErrorViews/FourOhFour/styles.scss b/frontend/src/views/ErrorViews/FourOhFour/styles.scss index ce11cb57b..26f541d8e 100644 --- a/frontend/src/views/ErrorViews/FourOhFour/styles.scss +++ b/frontend/src/views/ErrorViews/FourOhFour/styles.scss @@ -33,6 +33,13 @@ height: 100vh; } + @media only screen and (min-width: 1920px) { + img { + height: 80%; + width: 80%; + } + } + @media only screen and (max-width: 1055px) { margin-top: 0; margin-left: 0; From 5082b42a8bef168b52c850b3b2f4adbb553c15a6 Mon Sep 17 00:00:00 2001 From: Nisarg Date: Tue, 8 Oct 2024 15:21:26 -0700 Subject: [PATCH 07/12] fix: lint problem --- frontend/src/App.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 1bee70760..bcac43d08 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -92,9 +92,9 @@ const App: React.FC = () => { selectedRoutes.push(...sharedRoutes); // Add a wildcard route to catch undefined routes and show the 404 page selectedRoutes.push({ - path: '*', // This wildcard matches any undefined route - element: // Render the 404 component - }); + path: '*', + element: + }); return createBrowserRouter(selectedRoutes); }; @@ -105,9 +105,9 @@ const App: React.FC = () => { }; // Programmatic redirection to 404 - const handleRedirectTo404 = () => { - browserRouter.navigate('/404'); - }; + // const handleRedirectTo404 = () => { + // browserRouter.navigate('/404'); + // }; return ( From 1501d3a5e2cbb3414027cafbe058396b5e526ba7 Mon Sep 17 00:00:00 2001 From: Nisarg Date: Wed, 9 Oct 2024 10:02:53 -0700 Subject: [PATCH 08/12] feat: remove previous 404 image --- frontend/src/assets/img/404-mystery.png | Bin 51787 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 frontend/src/assets/img/404-mystery.png diff --git a/frontend/src/assets/img/404-mystery.png b/frontend/src/assets/img/404-mystery.png deleted file mode 100644 index 317cb946c0ceebc59f243d994dc8e150d7f3988d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51787 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 WdME4S2%(5b(<_Rq3Wahe{{IE(BBR*= From fb54860e267ff5f15132156eadb0bc59c92d64a9 Mon Sep 17 00:00:00 2001 From: Nisarg Date: Fri, 18 Oct 2024 15:29:55 -0700 Subject: [PATCH 09/12] feat: add 404 URL --- frontend/src/views/ErrorViews/FourOhFour/index.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/ErrorViews/FourOhFour/index.tsx b/frontend/src/views/ErrorViews/FourOhFour/index.tsx index 241101901..9b591e47b 100644 --- a/frontend/src/views/ErrorViews/FourOhFour/index.tsx +++ b/frontend/src/views/ErrorViews/FourOhFour/index.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { FlexGrid, Row, Column, @@ -17,6 +17,11 @@ const FourOhFour = () => { const navigate = useNavigate(); const windowSize = useWindowSize(); + // Redirect to the /404 URL + useEffect(() => { + navigate(ROUTES.FOUR_OH_FOUR, { replace: true }); + }, [navigate]); + return ( From 58b4202bcaa9010b696f0fdda1b12ecd2d68d268 Mon Sep 17 00:00:00 2001 From: Nisarg Date: Fri, 18 Oct 2024 15:30:07 -0700 Subject: [PATCH 10/12] feat: update --- frontend/src/App.tsx | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index bcac43d08..6ca4a48b9 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -57,6 +57,10 @@ const App: React.FC = () => { } ] }, + { + path: ROUTES.FOUR_OH_FOUR, + element: + }, { path: ROUTES.ALL_ROUTES, element: @@ -90,11 +94,7 @@ const App: React.FC = () => { const getBrowserRouter = () => { const selectedRoutes = selectBrowserRoutes(); selectedRoutes.push(...sharedRoutes); - // Add a wildcard route to catch undefined routes and show the 404 page - selectedRoutes.push({ - path: '*', - element: - }); + return createBrowserRouter(selectedRoutes); }; @@ -104,11 +104,6 @@ const App: React.FC = () => { browserRouter.navigate('/403'); }; - // Programmatic redirection to 404 - // const handleRedirectTo404 = () => { - // browserRouter.navigate('/404'); - // }; - return ( From 03002a1228fe267d5d9bc65788b4db264ad43bf4 Mon Sep 17 00:00:00 2001 From: Nisarg Date: Tue, 22 Oct 2024 13:30:51 -0700 Subject: [PATCH 11/12] feat: add BCHeader --- .../src/views/ErrorViews/FourOhFour/index.tsx | 76 ++++++++++--------- 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/frontend/src/views/ErrorViews/FourOhFour/index.tsx b/frontend/src/views/ErrorViews/FourOhFour/index.tsx index 9b591e47b..214b11392 100644 --- a/frontend/src/views/ErrorViews/FourOhFour/index.tsx +++ b/frontend/src/views/ErrorViews/FourOhFour/index.tsx @@ -12,6 +12,7 @@ import { fourOhFourTexts } from './constants'; import { MEDIUM_SCREEN_WIDTH } from '../../../shared-constants/shared-constants'; import './styles.scss'; +import BCHeader from '../../../components/BCHeader'; const FourOhFour = () => { const navigate = useNavigate(); @@ -23,43 +24,46 @@ const FourOhFour = () => { }, [navigate]); return ( - - - - {fourOhFourTexts.altText} - - -

    - {fourOhFourTexts.title} -

    - { - windowSize.innerWidth > MEDIUM_SCREEN_WIDTH - ? ( -

    - {fourOhFourTexts.supportText1} -

    - ) - : null - } -

    - {fourOhFourTexts.supportText2} -

    - - - - +

    + {fourOhFourTexts.supportText2} +

    + + + + + ); }; From a66d2ebcbb290419e041ed0faa691366547466a4 Mon Sep 17 00:00:00 2001 From: Nisarg Date: Tue, 22 Oct 2024 13:31:21 -0700 Subject: [PATCH 12/12] feat: remove side nav for 404 page --- frontend/src/components/BCHeader/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/BCHeader/index.tsx b/frontend/src/components/BCHeader/index.tsx index cd8ce945f..295e3a6c0 100644 --- a/frontend/src/components/BCHeader/index.tsx +++ b/frontend/src/components/BCHeader/index.tsx @@ -91,7 +91,7 @@ const BCHeader = () => { > { - !location.pathname.endsWith('/403') + !(location.pathname.endsWith('/403') || location.pathname.endsWith('/404')) ? ( { : null } { - !location.pathname.endsWith('/403') + !(location.pathname.endsWith('/403') || location.pathname.endsWith('/404')) ? (