From ddb8128df1f41e998df4e8eb47cb4f62971045c7 Mon Sep 17 00:00:00 2001 From: mehditorabiv Date: Thu, 11 Jul 2024 10:59:45 +0300 Subject: [PATCH 1/2] add sidebar --- .eslintrc.cjs | 3 +- src/components/layouts/SidebarApp.tsx | 56 ++++++++++++++++++++++----- src/interfaces/index.ts | 8 ++++ src/libs/constants.ts | 25 +++++++++++- src/pages/Identifiers/Identifiers.tsx | 3 ++ src/pages/Identifiers/index.ts | 3 ++ src/pages/Permissions/Permissions.tsx | 3 ++ src/pages/Permissions/index.ts | 3 ++ src/router/index.tsx | 12 ++++++ 9 files changed, 104 insertions(+), 12 deletions(-) create mode 100644 src/interfaces/index.ts create mode 100644 src/pages/Identifiers/Identifiers.tsx create mode 100644 src/pages/Identifiers/index.ts create mode 100644 src/pages/Permissions/Permissions.tsx create mode 100644 src/pages/Permissions/index.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 8393e3a..f53e91f 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -26,6 +26,7 @@ module.exports = { 'import/prefer-default-export': 'warn', "import/prefer-default-export": "off", "import/order": 'warn', - "import/extensions": 'warn' + "import/extensions": 'warn', + '@typescript-eslint/no-exp': 'off', }, }; \ No newline at end of file diff --git a/src/components/layouts/SidebarApp.tsx b/src/components/layouts/SidebarApp.tsx index 0e6f918..32c2a97 100644 --- a/src/components/layouts/SidebarApp.tsx +++ b/src/components/layouts/SidebarApp.tsx @@ -1,9 +1,23 @@ -import { Drawer, List, ListItem, ListItemText } from '@mui/material'; -import { DRAWER_WIDTH } from '../../libs/constants'; +import { + Drawer, + List, + ListItemButton, + ListItemIcon, + ListItemText, + Box, + Toolbar, + Divider, + Typography, +} from '@mui/material'; +import { useLocation, useNavigate } from 'react-router-dom'; +import { DRAWER_WIDTH, SIDEBAR_MENU } from '../../libs/constants'; function SidebarApp() { + const navigate = useNavigate(); + const { pathname } = useLocation(); + return ( -
+ + + + + LOGO + + + + - - - - - - + {SIDEBAR_MENU.map((item) => ( + navigate(item.path)} + > + + + + {item.title} + + ))} -
+ ); } diff --git a/src/interfaces/index.ts b/src/interfaces/index.ts new file mode 100644 index 0000000..f77275a --- /dev/null +++ b/src/interfaces/index.ts @@ -0,0 +1,8 @@ +import { ReactNode } from 'react'; + +export interface MenuItem { + title: string; + path: string; + icon?: ReactNode | JSX.Element; + children?: MenuItem[]; +} diff --git a/src/libs/constants.ts b/src/libs/constants.ts index d2e9b81..7947cbf 100644 --- a/src/libs/constants.ts +++ b/src/libs/constants.ts @@ -1 +1,24 @@ -export const DRAWER_WIDTH = 280; +import SpaceDashboardIcon from '@mui/icons-material/SpaceDashboard'; +import FingerprintIcon from '@mui/icons-material/Fingerprint'; +import BlockIcon from '@mui/icons-material/Block'; +import { MenuItem } from '../interfaces'; + +export const DRAWER_WIDTH = 240; + +export const SIDEBAR_MENU: MenuItem[] = [ + { + title: 'Dashboard', + path: '/', + icon: SpaceDashboardIcon, + }, + { + title: 'Identifiers', + path: '/idenifiers', + icon: FingerprintIcon, + }, + { + title: 'Permissions', + path: '/permissions', + icon: BlockIcon, + }, +]; diff --git a/src/pages/Identifiers/Identifiers.tsx b/src/pages/Identifiers/Identifiers.tsx new file mode 100644 index 0000000..7a92dcb --- /dev/null +++ b/src/pages/Identifiers/Identifiers.tsx @@ -0,0 +1,3 @@ +export function Identifiers() { + return
Identifiers
; +} diff --git a/src/pages/Identifiers/index.ts b/src/pages/Identifiers/index.ts new file mode 100644 index 0000000..f7c14b8 --- /dev/null +++ b/src/pages/Identifiers/index.ts @@ -0,0 +1,3 @@ +import { Identifiers } from './Identifiers'; + +export default Identifiers; diff --git a/src/pages/Permissions/Permissions.tsx b/src/pages/Permissions/Permissions.tsx new file mode 100644 index 0000000..9f37449 --- /dev/null +++ b/src/pages/Permissions/Permissions.tsx @@ -0,0 +1,3 @@ +export function Permissions() { + return
Permissions
; +} diff --git a/src/pages/Permissions/index.ts b/src/pages/Permissions/index.ts new file mode 100644 index 0000000..4f8492e --- /dev/null +++ b/src/pages/Permissions/index.ts @@ -0,0 +1,3 @@ +import { Permissions } from './Permissions'; + +export default Permissions; diff --git a/src/router/index.tsx b/src/router/index.tsx index 32c116e..fa24c86 100644 --- a/src/router/index.tsx +++ b/src/router/index.tsx @@ -1,5 +1,9 @@ import { createBrowserRouter } from 'react-router-dom'; + import Dashboard from '../pages/Dashboard'; +import Identifiers from '../pages/Identifiers'; +import Permissions from '../pages/Permissions'; + import DefaultLayout from '../layouts/DefaultLayout'; export const router = createBrowserRouter([ @@ -12,6 +16,14 @@ export const router = createBrowserRouter([ element: , index: true, }, + { + path: '/idenifiers', + element: , + }, + { + path: '/permissions', + element: , + }, ], }, { From 2c9013fd25e688dd1d6088634922c32bde375713 Mon Sep 17 00:00:00 2001 From: mehditorabiv Date: Thu, 11 Jul 2024 11:02:40 +0300 Subject: [PATCH 2/2] update interface --- src/interfaces/index.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/interfaces/index.ts b/src/interfaces/index.ts index f77275a..47f0f0f 100644 --- a/src/interfaces/index.ts +++ b/src/interfaces/index.ts @@ -1,8 +1,11 @@ -import { ReactNode } from 'react'; +import { SvgIconTypeMap } from '@mui/material'; +import { OverridableComponent } from '@mui/material/OverridableComponent'; export interface MenuItem { title: string; path: string; - icon?: ReactNode | JSX.Element; + icon: OverridableComponent, 'svg'>> & { + muiName: string; + }; children?: MenuItem[]; }