Compare commits

...

8 Commits

Author SHA1 Message Date
victorAnumudu 979330478c made aside bar to close on mobile view whenever a link is clicked 2024-03-18 01:32:52 +01:00
ameye bf87780204 Merge branch 'dashboard-home-page' of DigiFi/digifi-www into master 2024-03-16 18:36:09 +00:00
victorAnumudu 81b2f439ce added some component to dashboard home page 2024-03-16 17:47:17 +01:00
ameye 9d86fc51c8 Merge branch 'dashboard-variables' of DigiFi/digifi-www into master 2024-03-16 13:04:12 +00:00
victorAnumudu 435bc08f2f removed unused variables 2024-03-16 14:01:02 +01:00
ameye 197d5f32ed Merge branch 'dashboard-component' of DigiFi/digifi-www into master 2024-03-16 10:09:36 +00:00
victorAnumudu eaf959ab84 merged branch 2024-03-16 03:09:41 +01:00
victorAnumudu 7cbfae619b added dashboard layout 2024-03-16 02:53:40 +01:00
25 changed files with 439 additions and 9 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

+42
View File
@@ -0,0 +1,42 @@
import { Icons } from "../"
type Props = {
title?: string,
descText?: string,
iconName?: string,
iconColor?: string,
cardClass?: string,
titleClass?: string,
descTextClass?: string,
onClick?: ()=>any
}
export default function DefaultCard({
title,
descText,
iconName,
iconColor,
cardClass,
titleClass,
descTextClass,
onClick
}:Props) {
return (
<button
className={`h-full w-full rounded-lg p-5 shadow-lg hover:shadow-none bg-no-repeat bg-[90%] flex justify-between gap-4 items-center transition-all duration-300 ${cardClass && cardClass}`}
onClick={onClick}
>
<div className='w-3/4'>
<h1 className={`mb-1 text-[#FFF] text-lg text-left font-bold ${titleClass && titleClass}`}>{title}</h1>
<p className={`text-sm text-left ${descTextClass && descTextClass}`}>{descText}</p>
</div>
{iconName && // DISPLAYS ICON IF THERE IS ICON NAME PRESENT
<div className='group-hover:-translate-x-2 transition-all duration-300'>
<Icons name={iconName} fillColor={`${iconColor ? iconColor : '#FFF'}`} />
</div>
}
</button>
)
}
+3
View File
@@ -0,0 +1,3 @@
import DefaultCard from "./DefaultCard";
export { DefaultCard };
@@ -0,0 +1,58 @@
import { DefaultCard } from "../"
export default function DashboardHome() {
return (
<div className='w-full'>
<div className='group w-full xxs:w-96 h-32'>
<DefaultCard
descText='You currently do not have any open application. Click on apply for a loan to get started.'
iconName='arrow'
iconColor='#FBB700'
cardClass={`p-4 bg-[#FFFAFA] border border-[#EE4040]`}
descTextClass='text-[#423131] leading-5'
onClick={()=>{console.log('working')}}
/>
</div>
<div className='w-full mt-20 flex gap-16 flex-wrap'>
{/* cards display */}
<div className='group h-40 w-full xxs:w-80'>
<DefaultCard
title='Apply for a loan'
descText='You currently do not have any open application. Click on apply for a loan to get started.'
iconName='greater-than'
iconColor='#FFF'
cardClass={`bg-[#5C2684] bg-[url('../../../src/assets/images/dashboard/card_bg.png')]`}
titleClass='text-[#FFF]'
descTextClass='text-[#EFEFEF] leading-5'
onClick={()=>{console.log('working')}}
/>
</div>
<div className='group h-40 w-full xxs:w-80'>
<DefaultCard
title='Loan history'
descText='You currently do not have any open application. Click on apply for a loan to get started.'
iconName='greater-than'
iconColor='#FFF'
cardClass={`bg-[#635D4D] bg-[url('../../../src/assets/images/dashboard/card_bg.png')]`}
titleClass='text-[#FFF]'
descTextClass='text-[#EFEFEF] leading-5'
onClick={()=>{console.log('working')}}
/>
</div>
<div className='group h-40 w-full xxs:w-80'>
<DefaultCard
title='How it works?'
descText='Steps to follow to complete your loan application successfully.'
iconName='greater-than'
iconColor='#FFF'
cardClass={`bg-[#635D4D] bg-[url('../../../src/assets/images/dashboard/card_bg.png')]`}
titleClass='text-[#FFF]'
descTextClass='text-[#EFEFEF] leading-5'
onClick={()=>{console.log('working')}}
/>
</div>
</div>
</div>
)
}
+3
View File
@@ -0,0 +1,3 @@
import DashboardHome from './DashboardHome'
export { DashboardHome };
+116
View File
@@ -0,0 +1,116 @@
import {useState} from 'react'
import { Link, useLocation, useNavigate } from "react-router-dom";
import { Icons } from "../index";
type Props = {
asideDisplay?: () => void
}
export default function Aside({asideDisplay}:Props) {
const {pathname} = useLocation()
const navigate = useNavigate()
const [openNestedLink, setOpenNestedLink] = useState<{name:string|null}>({name: ''})
const handleOpenNestedLink = (e:any) => {
if(!e || !e.target){
return setOpenNestedLink({name: ''})
}
if(openNestedLink.name && openNestedLink.name == e.target.name){
setOpenNestedLink({name: ''})
}else{
setOpenNestedLink({name: e.target.name})
}
}
return (
<div className="py-5 px-10 flex flex-col h-full bg-inherit">
<div className="flex justify-center items-center text-sm">
<p className="w-14 h-14 rounded-full bg-[#5C2684]/50 flex items-center justify-center">
AC
</p>
</div>
<div className="mt-10 h-full overflow-y-auto bg-inherit">
{asideLinks.map((link, index) => {
if(link.nestedLink?.length){
let allNestedLinks = link.nestedLink.map(item => item.link)
return (
<div key={index} className='w-full relative bg-inherit overflow-hidden'>
<button
name={link.name}
onClick={(e)=>handleOpenNestedLink(e)}
className={`py-2 pl-2 text-left relative w-full overflow-hidden rounded-lg border-2 flex justify-between items-center z-10 bg-inherit ${allNestedLinks.includes(pathname) ? 'border-[#5C2684] text-[#5C2684]' : 'border-transparent text-[#585858]'}`}
>
{link.name}
<div className={`mr-2 ${openNestedLink.name == link.name ? '-rotate-90' : 'rotate-90'} transition-all duration-300`}>
<Icons
name='greater-than'
fillColor={`${openNestedLink.name == link.name ? '#5C2684' : '#585858'}`}
/>
</div>
</button>
<div className={`transition-all duration-300 w-full z-1 ${openNestedLink.name == link.name ? 'relative top-0' : 'absolute -top-[500px]'}`}>
{link.nestedLink.map((nextLink, index) => (
<Link
onClick={()=>{asideDisplay && asideDisplay()}}
key={index}
to={nextLink.link ? nextLink.link : '#'}
className={`w-full my-1 flex items-center gap-2 py-2 pl-5 text-base font-medium border-l-2 ${pathname == nextLink.link ? 'border-[#5C2684] text-[#5C2684]' : 'border-transparent text-[#585858]'}`}
>
<Icons name={nextLink.icon} fillColor={`${pathname == nextLink.link ? '#5C2684' : '#585858'}`} />
{nextLink.name}
</Link>
))}
</div>
</div>
)
}else{
return(
<Link
onClick={()=>{asideDisplay && asideDisplay()}}
key={index}
to={link.link ? link.link : '#'}
className={`w-full my-4 flex items-center gap-2 py-2 pl-5 rounded-lg text-base font-medium border-2 ${pathname == link.link ? 'border-[#5C2684] text-[#5C2684]' : 'border-transparent text-[#585858]'}`}
>
<Icons name={link.icon} fillColor={`${pathname == link.link ? '#5C2684' : '#585858'}`} />
{link.name}
</Link>
)
}
})}
</div>
<div className="w-full flex justify-center items-center">
<button className="py-3 px-6 bg-red-100 text-red-500 font-medium rounded-md" onClick={()=>navigate('/login', {replace:true})}>
Log out
</button>
</div>
</div>
);
}
type AsideLinksType = {
name: string,
link?: string,
icon: string,
nestedLink:{
name: string,
link: string,
icon: string,
}[]
}[]
const asideLinks:AsideLinksType = [
{name: 'Home', link: '/dashboard/home', icon: 'home', nestedLink:[]},
{name: 'My Profile', link: '/dashboard/profile', icon: 'profile', nestedLink:[]},
{name: 'Verification', link: '/dashboard/verification', icon: 'verification', nestedLink:[]},
{name: 'Payments', link: '/dashboard/payments', icon: 'payments', nestedLink:[]},
{name: 'Legals', link: '/dashboard/legals', icon: 'legals', nestedLink:[]},
{name: 'Nested Link', icon: 'home', nestedLink:[
{name: 'Link 2', link: '/dashboard/not-found', icon: 'legals'},
{name: 'Link 1', link: '/dashboard/not-found', icon: 'home'}
]
},
]
@@ -0,0 +1,10 @@
import DashboardLayout from "./DashboardLayout";
import { Outlet } from "react-router-dom";
export default function DashboardAuth() {
return (
<DashboardLayout>
<Outlet />
</DashboardLayout>
)
}
@@ -0,0 +1,92 @@
import { ReactNode, useState, useEffect } from 'react'
import Aside from './Aside'
export default function DashboardLayout({children}:{children: ReactNode}) {
const [showAside, setShowAside] = useState<boolean>(false)
const asideDisplay = ():void => {
setShowAside(prev => !prev)
}
useEffect(() => {
const handleResize = () => {
return setShowAside(false)
// setWidthSize(window.innerWidth)
}
window.addEventListener('resize', handleResize)
// return () => {
// window.removeEventListener('resize', screenResized)
// }
}, [])
return (
<div className='w-full max-w-[2000px] mx-auto h-screen flex bg-[#020202] text-black'>
<aside className='w-[300px] bg-white hidden md:block border-r-2 border-[#E6E6E6]'>
<Aside />
</aside>
<aside className={`w-[300px] md:hidden bg-white border-r-2 border-[#E6E6E6] fixed top-0 bottom-0 z-50 transition-all duration-500 ${showAside ? 'left-0' : '-left-[200%]'}`}>
<Aside asideDisplay={asideDisplay}/>
</aside>
<main className={`dash-bg-image bg-[#F9F9F9] relative w-full overflow-y-auto overflow-x-hidden`}>
<header className={`p-5 sticky z-10 top-0 w-full bg-[#F9F9F9] border-b-2 border-[#E6E6E6] bg-[url('../../../src/assets/images/dashboard/bg_ellipse1.png')] bg-no-repeat bg-[top_right]`}>
<div className='h-14 w-full flex justify-end items-center gap-5'>
{/* <div className=''>
<button className='px-4 py-2 rounded-lg shadow-lg bg-white/50'>DarkMode</button>
</div> */}
{/* MENU HAND BURGER */}
<div className='w-full'>Welcome Austin Catherine</div>
<div
className="relative md:hidden w-5 h-[20px] flex flex-col items-center justify-between"
onClick={asideDisplay}
>
<div
className={`absolute left-0 w-5 h-1 bg-black/80 dark:bg-white transition-all duration-500 ${
showAside ? "top-1/2 -translate-y-1/2 rotate-45" : "top-0"
}`}
></div>
<div
className={`absolute left-0 w-5 h-1 bg-black/80 dark:bg-white transition-all duration-300 ${
showAside
? "top-1/2 -translate-y-1/2 rotate-[2000deg] opacity-0"
: "top-1/2 -translate-y-1/2"
}`}
></div>
<div
className={`absolute left-0 w-5 h-1 bg-black/80 dark:bg-white transition-all duration-500 ${
showAside
? "top-1/2 -translate-y-1/2 -rotate-45"
: "bottom-0"
}`}
></div>
</div>
</div>
</header>
<div className='flex p-5 relative'>
<div className='w-full p-5'>
{children}
</div>
{/* <div className={`pl-5 w-[300px] min-w-[300px] hidden lg:block`}>
<div className='sticky top-16'>
<div className='w-full min-h-72 bg-white/50 shadow-lg rounded-lg p-5'>
<p className='text-base font-semibold tracking-wide pb-2' title='Answered question is marked green'>Answered Question</p>
<div className='grid grid-cols-8 gap-2'>
{Array.from({length: 50}, (_, i) => i + 1).map((item, index) => (
<span key={index} className={`w-6 h-6 text-sm rounded-full flex justify-center items-center shadow-lg cursor-pointer ${index%2 == 0 ? 'bg-emerald-600' : ''}`}>{item}</span>
))}
</div>
</div>
</div>
</div> */}
</div>
</main>
</div>
)
}
+3
View File
@@ -0,0 +1,3 @@
import DashboardAuth from "./DashboardAuth";
export { DashboardAuth };
+45
View File
@@ -0,0 +1,45 @@
type Props = {
name:string,
fillColor?:string
}
export default function Icons({name, fillColor}:Props) {
return (
<>
{name == 'home' ?
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.1667 14.9875V19.9875H17.5C18.8807 19.9875 20 18.8682 20 17.4875V9.88673C20.0002 9.4538 19.832 9.03778 19.5308 8.72673L12.4492 1.07087C11.1996 -0.281086 9.09074 -0.364094 7.73879 0.885437C7.67457 0.944812 7.6127 1.00665 7.55336 1.07087L0.48418 8.72423C0.173945 9.03657 -0.000117128 9.45899 5.9134e-08 9.89923V17.4875C5.9134e-08 18.8682 1.1193 19.9875 2.5 19.9875H5.83332V14.9875C5.84891 12.7152 7.68355 10.8596 9.89867 10.8061C12.1879 10.7509 14.1492 12.6381 14.1667 14.9875Z" fill={fillColor ? fillColor : '#5C2684'}/>
<path d="M10 12.4875C8.6193 12.4875 7.5 13.6068 7.5 14.9875V19.9875H12.5V14.9875C12.5 13.6068 11.3807 12.4875 10 12.4875Z" fill={fillColor ? fillColor : '#5C2684'}/>
</svg>
:name == 'profile'?
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 10C12.7614 10 15 7.76142 15 5C15 2.23858 12.7614 0 10 0C7.23858 0 5 2.23858 5 5C5 7.76142 7.23858 10 10 10Z" fill={fillColor ? fillColor : '#5C2684'}/>
<path d="M10 11.6667C5.85977 11.6713 2.50461 15.0265 2.5 19.1667C2.5 19.6269 2.87309 20 3.33332 20H16.6666C17.1269 20 17.5 19.6269 17.5 19.1667C17.4954 15.0265 14.1402 11.6713 10 11.6667Z" fill={fillColor ? fillColor : '#5C2684'}/>
</svg>
:name == 'verification'?
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.728 6.8281L18.1812 5.28145C17.814 4.91432 17.2203 4.91432 16.857 5.28145L7.50177 14.6356L3.15031 10.2807C2.78313 9.91359 2.1894 9.91359 1.82613 10.2807L0.275384 11.8313C-0.0917946 12.1984 -0.0917946 12.7921 0.275384 13.1592L6.83772 19.7246C7.2049 20.0918 7.79864 20.0918 8.16191 19.7246L19.7241 8.15603C20.0913 7.78499 20.0913 7.19133 19.728 6.8281ZM7.06037 10.9681C7.30256 11.2142 7.70098 11.2142 7.94316 10.9681L16.068 2.8365C16.3101 2.59044 16.3101 2.19597 16.068 1.95382L14.3024 0.184543C14.0602 -0.0615144 13.6618 -0.0615144 13.4196 0.184543L7.50177 6.10164L5.33776 3.93399C5.09558 3.68794 4.69715 3.68794 4.45497 3.93399L2.68548 5.70327C2.4433 5.94932 2.4433 6.3438 2.68548 6.58595L7.06037 10.9681Z" fill={fillColor ? fillColor : '#5C2684'}/>
</svg>
:name == 'payments'?
<svg width="20" height="16" viewBox="0 0 20 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 14.2857C0 15.2321 0.746528 16 1.66667 16H18.3333C19.2535 16 20 15.2321 20 14.2857V8H0V14.2857ZM6.66667 11.8571C6.66667 11.6214 6.85417 11.4286 7.08333 11.4286H11.8056C12.0347 11.4286 12.2222 11.6214 12.2222 11.8571V13.2857C12.2222 13.5214 12.0347 13.7143 11.8056 13.7143H7.08333C6.85417 13.7143 6.66667 13.5214 6.66667 13.2857V11.8571ZM2.22222 11.8571C2.22222 11.6214 2.40972 11.4286 2.63889 11.4286H5.13889C5.36806 11.4286 5.55556 11.6214 5.55556 11.8571V13.2857C5.55556 13.5214 5.36806 13.7143 5.13889 13.7143H2.63889C2.40972 13.7143 2.22222 13.5214 2.22222 13.2857V11.8571ZM20 1.71429V3.42857H0V1.71429C0 0.767857 0.746528 0 1.66667 0H18.3333C19.2535 0 20 0.767857 20 1.71429Z" fill={fillColor ? fillColor : '#5C2684'}/>
</svg>
:name == 'legals'?
<svg width="20" height="16" viewBox="0 0 20 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8 10.5H7.99937C7.99937 9.99438 8.04125 10.2272 5.34156 4.82781C4.79 3.725 3.21062 3.72281 2.65812 4.82781C-0.0643752 10.2734 0.000625 10.0103 0.000625 10.5H0C0 11.8806 1.79094 13 4 13C6.20906 13 8 11.8806 8 10.5ZM4 5.5L6.25 10H1.75L4 5.5ZM19.9994 10.5C19.9994 9.99438 20.0413 10.2272 17.3416 4.82781C16.79 3.725 15.2106 3.72281 14.6581 4.82781C11.9356 10.2734 12.0006 10.0103 12.0006 10.5H12C12 11.8806 13.7909 13 16 13C18.2091 13 20 11.8806 20 10.5H19.9994ZM13.75 10L16 5.5L18.25 10H13.75ZM16.5 14H11V4.78906C11.7347 4.4675 12.2863 3.80531 12.4497 3H16.5C16.7763 3 17 2.77625 17 2.5V1.5C17 1.22375 16.7763 1 16.5 1H11.9888C11.5325 0.39625 10.8153 0 10 0C9.18469 0 8.4675 0.39625 8.01125 1H3.5C3.22375 1 3 1.22375 3 1.5V2.5C3 2.77625 3.22375 3 3.5 3H7.55031C7.71375 3.805 8.265 4.4675 9 4.78906V14H3.5C3.22375 14 3 14.2238 3 14.5V15.5C3 15.7762 3.22375 16 3.5 16H16.5C16.7763 16 17 15.7762 17 15.5V14.5C17 14.2238 16.7763 14 16.5 14Z" fill={fillColor ? fillColor : '#5C2684'}/>
</svg>
:name == 'arrow'?
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.3072 1.05822L7.03885 0.34847C7.34865 0.0479466 7.8496 0.0479466 8.15611 0.34847L14.563 6.56035C14.8728 6.86087 14.8728 7.34682 14.563 7.64415L8.15611 13.8592C7.84631 14.1597 7.34536 14.1597 7.03885 13.8592L6.3072 13.1495C5.9941 12.8458 6.00069 12.3502 6.32038 12.0529L10.2917 8.38267H0.819787C0.381453 8.38267 0.0288086 8.04058 0.0288086 7.61538V6.59232C0.0288086 6.16711 0.381453 5.82503 0.819787 5.82503H10.2917L6.32038 2.15481C5.9974 1.85748 5.99081 1.36194 6.3072 1.05822Z" fill={fillColor ? fillColor : '#FBB700'}/>
</svg>
:name == 'greater-than'?
<svg width="11" height="16" viewBox="0 0 11 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.74365 8.64502L3.10303 15.2856C2.64404 15.7446 1.90186 15.7446 1.44775 15.2856L0.344238 14.1821C-0.114746 13.7231 -0.114746 12.981 0.344238 12.5269L5.05127 7.81982L0.344238 3.11279C-0.114746 2.65381 -0.114746 1.91162 0.344238 1.45752L1.44287 0.344238C1.90186 -0.114746 2.64404 -0.114746 3.09814 0.344238L9.73877 6.98486C10.2026 7.44385 10.2026 8.18604 9.74365 8.64502Z" fill={fillColor ? fillColor : '#FFF'}/>
</svg>
:
null
}
</>
)
}
+3
View File
@@ -0,0 +1,3 @@
import Icons from "./Icons";
export { Icons };
+1 -1
View File
@@ -18,7 +18,7 @@ export default function Login() {
password: ''
})
const handleFormChange = ({target:{name, value}}:{target:HandleChange}):void => {
const handleFormChange = ({target:{name, value}}:{target:HandleChange}):any => {
setFormDetails(prev => ({...prev, [name]:value}))
}
+9 -5
View File
@@ -1,5 +1,9 @@
export * from "./Header"
export * from "./Home"
export * from "./GetStarted"
export * from "./shared"
export * from "./Footer"
export * from "./Header";
export * from "./Home";
export * from "./GetStarted";
export * from "./shared";
export * from "./Footer";
export * from "./DashboardLayout";
export * from "./Icons";
export * from './Dashboard'
export * from './Cards'
+1 -1
View File
@@ -7,7 +7,7 @@ type Props = {
labelName?:string,
inputClass?:string,
value:string,
onChange:()=>void
onChange:(event?: any)=>any
}
export default function FloatLabelInput({
+3
View File
@@ -16,4 +16,7 @@ body {
.containerMode {
@apply container mx-auto px-5 xxs:max-w-full sm:max-w-[98%] lg:max-w-[1100px];
}
.dash-bg-image{
background: url('../src/assets/images/dashboard/bg_ellipse1.png') right top no-repeat, url('../src/assets/images/dashboard/bg_ellipse2.png') -8% bottom no-repeat;;
}
}
+9
View File
@@ -0,0 +1,9 @@
import { DashboardHome } from "../components"
export default function DashboardHomePage() {
return (
<div className=''>
<DashboardHome />
</div>
)
}
+5
View File
@@ -0,0 +1,5 @@
export default function DashboardLegalsPage() {
return (
<div>DashboardLegals</div>
)
}
+5
View File
@@ -0,0 +1,5 @@
export default function DashboardpaymentsPage() {
return (
<div>Dashboardpayments</div>
)
}
+5
View File
@@ -0,0 +1,5 @@
export default function DashboardProfilePage() {
return (
<div>DashboardProfile</div>
)
}
+5
View File
@@ -0,0 +1,5 @@
export default function DashboardVerificationPage() {
return (
<div>DashboardVerification</div>
)
}
+6 -1
View File
@@ -1,5 +1,10 @@
import HomePage from "./HomePage";
import LoginPage from "./LoginPage";
import GetStartedPage from "./GetStartedPage";
import DashboardHomePage from "./DashboardHomePage";
import DashboardLegalsPage from "./DashboardLegalsPage";
import DashboardProfilePage from "./DashboardProfilePage";
import DashboardVerificationPage from "./DashboardVerificationPage";
import DashboardpaymentsPage from "./DashboardPaymentsPage";
export {HomePage, LoginPage, GetStartedPage}
export {HomePage, LoginPage, GetStartedPage, DashboardHomePage, DashboardLegalsPage, DashboardProfilePage, DashboardVerificationPage, DashboardpaymentsPage}
+10 -1
View File
@@ -1,6 +1,7 @@
import { Route, Routes } from "react-router-dom";
import { RouteHandler } from "./routes";
import { GetStartedPage, HomePage, LoginPage } from "../pages";
import { GetStartedPage, HomePage, LoginPage, DashboardHomePage, DashboardLegalsPage, DashboardProfilePage, DashboardVerificationPage, DashboardpaymentsPage } from "../pages";
import { DashboardAuth } from "../components";
const Routers = () => {
return (
@@ -8,6 +9,14 @@ const Routers = () => {
<Route path={RouteHandler.homepage} element={<HomePage />} />
<Route path={RouteHandler.loginpage} element={<LoginPage />} />
<Route path={RouteHandler.getStarted} element={<GetStartedPage />} />
<Route element={<DashboardAuth />}>
<Route path={RouteHandler.dashboardHome} element={<DashboardHomePage />} />
<Route path={RouteHandler.dashboardProfile} element={<DashboardProfilePage />} />
<Route path={RouteHandler.dashboardVerification} element={<DashboardVerificationPage />} />
<Route path={RouteHandler.dashboardPayments} element={<DashboardpaymentsPage />} />
<Route path={RouteHandler.dashboardLegals} element={<DashboardLegalsPage />} />
</Route>
<Route path='*'element={<>Error Page</>} />
</Routes>
);
};
+5
View File
@@ -2,4 +2,9 @@ export class RouteHandler {
static homepage = "/"
static loginpage = '/login'
static getStarted = "/get-started"
static dashboardHome = '/dashboard/home'
static dashboardProfile = '/dashboard/profile'
static dashboardVerification = '/dashboard/verification'
static dashboardPayments = '/dashboard/payments'
static dashboardLegals = '/dashboard/legals'
}