This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
VITE_TOKEN_NAME = 'admin_token'
|
VITE_TOKEN_NAME = 'admin_token'
|
||||||
VITE_REFRESH_TOKEN_NAME = 'admin_refresh_token'
|
VITE_REFRESH_TOKEN_NAME = 'admin_refresh_token'
|
||||||
VITE_BASE_URL = 'https://api.danakcorp.com'
|
# VITE_BASE_URL = 'https://api.danakcorp.com'
|
||||||
# VITE_BASE_URL = 'http://10.73.49.88:3500'
|
VITE_BASE_URL = 'http://192.168.99.131:3500'
|
||||||
@@ -81,6 +81,7 @@ export const Pages = {
|
|||||||
detail: "/users/detail/",
|
detail: "/users/detail/",
|
||||||
roleList: "/users/roles-all",
|
roleList: "/users/roles-all",
|
||||||
roleCreate: "/users/roles-add",
|
roleCreate: "/users/roles-add",
|
||||||
|
roleUpdate: "/users/roles-edit/",
|
||||||
groupAdd: "/users/group-add",
|
groupAdd: "/users/group-add",
|
||||||
groupList: "/users/groups",
|
groupList: "/users/groups",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -696,6 +696,7 @@
|
|||||||
"image": "تصویر حساب کاربری",
|
"image": "تصویر حساب کاربری",
|
||||||
"roles_list": "لیست نقش ها",
|
"roles_list": "لیست نقش ها",
|
||||||
"add_role": "افزودن نقش",
|
"add_role": "افزودن نقش",
|
||||||
|
"update_role": "ویرایش نقش",
|
||||||
"role_search": "جستجو در نقش ها",
|
"role_search": "جستجو در نقش ها",
|
||||||
"title": "عنوان",
|
"title": "عنوان",
|
||||||
"user": "کاربر",
|
"user": "کاربر",
|
||||||
|
|||||||
@@ -0,0 +1,141 @@
|
|||||||
|
import { FC, useEffect, useState } from 'react'
|
||||||
|
import { useTranslation } from 'react-i18next'
|
||||||
|
import Button from '../../components/Button'
|
||||||
|
import { TickCircle } from 'iconsax-react'
|
||||||
|
import Input from '../../components/Input'
|
||||||
|
import CheckBoxComponent from '../../components/CheckBoxComponent'
|
||||||
|
import { useGetPermissions, useGetRoleDetail, useUpdateRole } from './hooks/useUserData'
|
||||||
|
import PageLoading from '../../components/PageLoading'
|
||||||
|
import { useFormik } from 'formik'
|
||||||
|
import { CreateRoleType, RolePermissionType } from './types/UserTypes'
|
||||||
|
import * as Yup from 'yup'
|
||||||
|
import { useNavigate, useParams } from 'react-router-dom'
|
||||||
|
import { Pages } from '../../config/Pages'
|
||||||
|
import { ErrorType } from '../../helpers/types'
|
||||||
|
import { toast } from 'react-toastify'
|
||||||
|
|
||||||
|
const RoleUpdate: FC = () => {
|
||||||
|
|
||||||
|
const { id } = useParams()
|
||||||
|
const { t } = useTranslation('global')
|
||||||
|
const navigate = useNavigate()
|
||||||
|
const [permissions, setPermissions] = useState<string[]>([])
|
||||||
|
const getPermissions = useGetPermissions()
|
||||||
|
const { data: roleDetail, isPending: isRoleDetailPending } = useGetRoleDetail(id || '')
|
||||||
|
const updateRole = useUpdateRole()
|
||||||
|
|
||||||
|
const handleAdd = (permissionId: string) => {
|
||||||
|
if (permissions.includes(permissionId)) {
|
||||||
|
setPermissions(permissions.filter(permission => permission !== permissionId))
|
||||||
|
} else {
|
||||||
|
setPermissions([...permissions, permissionId])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const formik = useFormik<CreateRoleType>({
|
||||||
|
initialValues: {
|
||||||
|
name: '',
|
||||||
|
permissions: [],
|
||||||
|
},
|
||||||
|
validationSchema: Yup.object({
|
||||||
|
name: Yup.string()
|
||||||
|
.required(t('errors.required'))
|
||||||
|
}),
|
||||||
|
onSubmit: (values) => {
|
||||||
|
if (permissions.length > 0) {
|
||||||
|
values.permissions = permissions
|
||||||
|
updateRole.mutate({ id: id || '', params: values }, {
|
||||||
|
onSuccess: () => {
|
||||||
|
toast.success(t('success'))
|
||||||
|
navigate(Pages.users.roleList)
|
||||||
|
},
|
||||||
|
onError: (error: ErrorType) => {
|
||||||
|
toast.error(error.response?.data?.error?.message[0])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
toast.error(t('user.error_count_permission'))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const role = roleDetail?.data?.role
|
||||||
|
if (role) {
|
||||||
|
formik.setFieldValue('name', role.name)
|
||||||
|
const permissionIds = role.permissions?.map((permission: string | RolePermissionType) =>
|
||||||
|
typeof permission === 'string' ? permission : permission.id
|
||||||
|
) || []
|
||||||
|
setPermissions(permissionIds)
|
||||||
|
}
|
||||||
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
}, [roleDetail])
|
||||||
|
|
||||||
|
if (getPermissions.isPending || isRoleDetailPending) {
|
||||||
|
return <PageLoading />
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className='mt-4'>
|
||||||
|
<div className='flex justify-between items-center'>
|
||||||
|
<div>
|
||||||
|
{t('user.update_role')}
|
||||||
|
</div>
|
||||||
|
<Button
|
||||||
|
className='w-fit px-8'
|
||||||
|
onClick={() => formik.handleSubmit()}
|
||||||
|
isLoading={updateRole.isPending}
|
||||||
|
>
|
||||||
|
<div className='flex gap-2'>
|
||||||
|
<TickCircle
|
||||||
|
className='size-5'
|
||||||
|
color='white'
|
||||||
|
/>
|
||||||
|
<div className='text-sm'>
|
||||||
|
{t('user.submit_role')}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='flex gap-6 mt-9'>
|
||||||
|
<div className='flex-1 bg-white py-10 xl:px-10 px-5 rounded-3xl'>
|
||||||
|
|
||||||
|
<Input
|
||||||
|
label={t('user.title_role')}
|
||||||
|
{...formik.getFieldProps('name')}
|
||||||
|
error_text={formik.touched.name && formik.errors.name ? formik.errors.name : ''}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div className='mt-8'>
|
||||||
|
<div className='text-sm'>
|
||||||
|
{t('user.permissions')}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='mt-5 text-sm flex flex-wrap gap-5'>
|
||||||
|
{
|
||||||
|
getPermissions.data?.data?.permissions?.map((item: { id: string, name: string }) => {
|
||||||
|
return (
|
||||||
|
<div key={item.id} className='flex flex-1 min-w-[23%] items-center'>
|
||||||
|
<CheckBoxComponent
|
||||||
|
checked={permissions.includes(item.id)}
|
||||||
|
onChange={() => handleAdd(item.id)}
|
||||||
|
/>
|
||||||
|
<div>{item.name}</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
<div className='flex flex-1 min-w-[23%] items-center'></div>
|
||||||
|
<div className='flex flex-1 min-w-[23%] items-center'></div>
|
||||||
|
<div className='flex flex-1 min-w-[23%] items-center'></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default RoleUpdate
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
import { FC, useState } from 'react'
|
import { FC, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import Button from '../../components/Button'
|
import Button from '../../components/Button'
|
||||||
import { Add } from 'iconsax-react'
|
import { Add, Eye } from 'iconsax-react'
|
||||||
import Input from '../../components/Input'
|
import Input from '../../components/Input'
|
||||||
import Td from '../../components/Td'
|
import Td from '../../components/Td'
|
||||||
import { useNavigate } from 'react-router-dom'
|
import { Link, useNavigate } from 'react-router-dom'
|
||||||
import { Pages } from '../../config/Pages'
|
import { Pages } from '../../config/Pages'
|
||||||
import { useGetRoles } from './hooks/useUserData'
|
import { useGetRoles } from './hooks/useUserData'
|
||||||
import { RoleItemType } from './types/UserTypes'
|
import { RoleItemType } from './types/UserTypes'
|
||||||
@@ -57,6 +57,7 @@ const RolesList: FC = () => {
|
|||||||
<Td text={t('user.title')} />
|
<Td text={t('user.title')} />
|
||||||
<Td text={t('user.user')} />
|
<Td text={t('user.user')} />
|
||||||
<Td text={t('user.is_admin')} />
|
<Td text={t('user.is_admin')} />
|
||||||
|
<Td text={''} />
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -67,11 +68,11 @@ const RolesList: FC = () => {
|
|||||||
<Td text={item.name} />
|
<Td text={item.name} />
|
||||||
<Td text={item.userCount + ''} />
|
<Td text={item.userCount + ''} />
|
||||||
<Td text={item.isAdmin ? t('yes') : t('no')} />
|
<Td text={item.isAdmin ? t('yes') : t('no')} />
|
||||||
{/* <Td text={''}>
|
<Td text={''}>
|
||||||
<Link to={Pages.ticket.detail + '1'}>
|
<Link to={Pages.users.roleUpdate + item.id}>
|
||||||
<Eye size={20} color='#8C90A3' />
|
<Eye size={20} color='#8C90A3' />
|
||||||
</Link>
|
</Link>
|
||||||
</Td> */}
|
</Td>
|
||||||
</tr>
|
</tr>
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -26,6 +26,21 @@ export const useGetRoles = (search: string) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const useGetRoleDetail = (id: string) => {
|
||||||
|
return useQuery({
|
||||||
|
queryKey: ["role-detail", id],
|
||||||
|
queryFn: () => api.getRoleDetail(id),
|
||||||
|
enabled: !!id,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const useUpdateRole = () => {
|
||||||
|
return useMutation({
|
||||||
|
mutationFn: ({ id, params }: { id: string; params: CreateRoleType }) =>
|
||||||
|
api.updateRole(id, params),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
export const useCreateUser = () => {
|
export const useCreateUser = () => {
|
||||||
return useMutation({
|
return useMutation({
|
||||||
mutationFn: (variables: CreateUserType) => api.createUser(variables),
|
mutationFn: (variables: CreateUserType) => api.createUser(variables),
|
||||||
|
|||||||
@@ -20,6 +20,16 @@ export const getRoles = async (search: string) => {
|
|||||||
return data;
|
return data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getRoleDetail = async (id: string) => {
|
||||||
|
const { data } = await axios.get(`/users/roles/${id}`);
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const updateRole = async (id: string, params: CreateRoleType) => {
|
||||||
|
const { data } = await axios.patch(`/users/roles/${id}`, params);
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
export const createUser = async (params: CreateUserType) => {
|
export const createUser = async (params: CreateUserType) => {
|
||||||
const { data } = await axios.post(`/users/admins`, params);
|
const { data } = await axios.post(`/users/admins`, params);
|
||||||
return data;
|
return data;
|
||||||
|
|||||||
@@ -12,6 +12,18 @@ export type RoleItemType = {
|
|||||||
userCount: number;
|
userCount: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type RolePermissionType = {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type RoleDetailType = {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
isAdmin: boolean;
|
||||||
|
permissions: (string | RolePermissionType)[];
|
||||||
|
};
|
||||||
|
|
||||||
export type CreateUserType = {
|
export type CreateUserType = {
|
||||||
phone: string;
|
phone: string;
|
||||||
firstName: string;
|
firstName: string;
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ import GroupCreate from "../pages/users/GroupCreate";
|
|||||||
import GroupList from "../pages/users/GroupList";
|
import GroupList from "../pages/users/GroupList";
|
||||||
import UsersList from "../pages/users/List";
|
import UsersList from "../pages/users/List";
|
||||||
import RoleCreate from "../pages/users/RoleCreate";
|
import RoleCreate from "../pages/users/RoleCreate";
|
||||||
|
import RoleUpdate from "../pages/users/RoleUpdate";
|
||||||
import RolesList from "../pages/users/RolesList";
|
import RolesList from "../pages/users/RolesList";
|
||||||
import UpdateUser from "../pages/users/Update";
|
import UpdateUser from "../pages/users/Update";
|
||||||
import Wallet from "../pages/wallet/Wallet";
|
import Wallet from "../pages/wallet/Wallet";
|
||||||
@@ -167,6 +168,7 @@ const MainRouter: FC = () => {
|
|||||||
<Route path={Pages.users.detail + ":id"} element={<UpdateUser />} />
|
<Route path={Pages.users.detail + ":id"} element={<UpdateUser />} />
|
||||||
<Route path={Pages.users.roleList} element={<RolesList />} />
|
<Route path={Pages.users.roleList} element={<RolesList />} />
|
||||||
<Route path={Pages.users.roleCreate} element={<RoleCreate />} />
|
<Route path={Pages.users.roleCreate} element={<RoleCreate />} />
|
||||||
|
<Route path={Pages.users.roleUpdate + ":id"} element={<RoleUpdate />} />
|
||||||
<Route path={Pages.users.groupAdd} element={<GroupCreate />} />
|
<Route path={Pages.users.groupAdd} element={<GroupCreate />} />
|
||||||
<Route path={Pages.users.groupList} element={<GroupList />} />
|
<Route path={Pages.users.groupList} element={<GroupList />} />
|
||||||
<Route path={Pages.cardBank.create} element={<CreateBankCard />} />
|
<Route path={Pages.cardBank.create} element={<CreateBankCard />} />
|
||||||
|
|||||||
+355
-60
@@ -96,7 +96,12 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{openSidebar && <div className="fixed top-0 left-0 right-0 bottom-0 bg-black bg-opacity-50 z-10" onClick={() => setOpenSidebar(false)} />}
|
{openSidebar && (
|
||||||
|
<div
|
||||||
|
className="fixed top-0 left-0 right-0 bottom-0 bg-black bg-opacity-50 z-10"
|
||||||
|
onClick={() => setOpenSidebar(false)}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
<div
|
<div
|
||||||
className={clx(
|
className={clx(
|
||||||
"fixed xl:flex translate-x-[400px] xl:translate-x-0 transition-all ease-in-out opacity-0 invisible xl:visible xl:opacity-100 xl:right-4 right-0 xl:top-4 top-0 xl:bottom-4 bottom-0 xl:rounded-[32px] w-[250px] bg-white flex-col py-12",
|
"fixed xl:flex translate-x-[400px] xl:translate-x-0 transition-all ease-in-out opacity-0 invisible xl:visible xl:opacity-100 xl:right-4 right-0 xl:top-4 top-0 xl:bottom-4 bottom-0 xl:rounded-[32px] w-[250px] bg-white flex-col py-12",
|
||||||
@@ -104,7 +109,19 @@ const SideBar: FC = () => {
|
|||||||
hasSubMenu && "w-24 !rounded-tl-none !rounded-bl-none",
|
hasSubMenu && "w-24 !rounded-tl-none !rounded-bl-none",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<div className="flex justify-center">{!hasSubMenu ? <img src={LogoImage} className="w-[140px]" /> : <img src={LogoSmall} className="w-7" />}</div>
|
<div className="flex justify-center">
|
||||||
|
{!hasSubMenu ? (
|
||||||
|
<img
|
||||||
|
src={LogoImage}
|
||||||
|
className="w-[140px]"
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<img
|
||||||
|
src={LogoSmall}
|
||||||
|
className="w-7"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className="flex-1 flex flex-col h-full overflow-y-auto no-scrollbar">
|
<div className="flex-1 flex flex-col h-full overflow-y-auto no-scrollbar">
|
||||||
<div
|
<div
|
||||||
@@ -114,20 +131,35 @@ const SideBar: FC = () => {
|
|||||||
{t("sidebar.menu")}
|
{t("sidebar.menu")}
|
||||||
|
|
||||||
<div className={clx("transition-all", !openMenu.includes("menu") && "rotate-180", hasSubMenu && "hidden")}>
|
<div className={clx("transition-all", !openMenu.includes("menu") && "rotate-180", hasSubMenu && "hidden")}>
|
||||||
<ArrowDown2 size={18} color="#c3c7dd" />
|
<ArrowDown2
|
||||||
|
size={18}
|
||||||
|
color="#c3c7dd"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={clx("text-xs text-[#8C90A3]", !openMenu.includes("menu") && "hidden")}>
|
<div className={clx("text-xs text-[#8C90A3]", !openMenu.includes("menu") && "hidden")}>
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Home2 variant={isActive("dashboard") ? "Bold" : "Outline"} color={isActive("dashboard") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Home2
|
||||||
|
variant={isActive("dashboard") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("dashboard") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.mainpage")}
|
title={t("sidebar.mainpage")}
|
||||||
isActive={isActive("dashboard")}
|
isActive={isActive("dashboard")}
|
||||||
link={Pages.dashboard}
|
link={Pages.dashboard}
|
||||||
activeName=""
|
activeName=""
|
||||||
/>
|
/>
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Element3 variant={isActive("services") ? "Bold" : "Outline"} color={isActive("services") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Element3
|
||||||
|
variant={isActive("services") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("services") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.services")}
|
title={t("sidebar.services")}
|
||||||
isActive={isActive("services")}
|
isActive={isActive("services")}
|
||||||
link={Pages.services.list}
|
link={Pages.services.list}
|
||||||
@@ -136,7 +168,13 @@ const SideBar: FC = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Headphone variant={isActive("support") ? "Bold" : "Outline"} color={isActive("support") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Headphone
|
||||||
|
variant={isActive("support") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("support") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.support")}
|
title={t("sidebar.support")}
|
||||||
isActive={isActive("support")}
|
isActive={isActive("support")}
|
||||||
link={Pages.support.list}
|
link={Pages.support.list}
|
||||||
@@ -144,21 +182,39 @@ const SideBar: FC = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<People variant={isActive("customers") ? "Bold" : "Outline"} color={isActive("customers") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<People
|
||||||
|
variant={isActive("customers") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("customers") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.customers")}
|
title={t("sidebar.customers")}
|
||||||
isActive={isActive("customers")}
|
isActive={isActive("customers")}
|
||||||
link={Pages.customers.list}
|
link={Pages.customers.list}
|
||||||
activeName="customers"
|
activeName="customers"
|
||||||
/>
|
/>
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<UserSquare variant={isActive("representatives") ? "Bold" : "Outline"} color={isActive("representatives") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<UserSquare
|
||||||
|
variant={isActive("representatives") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("representatives") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.representatives")}
|
title={t("sidebar.representatives")}
|
||||||
isActive={isActive("representatives")}
|
isActive={isActive("representatives")}
|
||||||
link={Pages.representative.list}
|
link={Pages.representative.list}
|
||||||
activeName="agents"
|
activeName="agents"
|
||||||
/>
|
/>
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<CodeCircle variant={isActive("developers") ? "Bold" : "Outline"} color={isActive("developers") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<CodeCircle
|
||||||
|
variant={isActive("developers") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("developers") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.developers")}
|
title={t("sidebar.developers")}
|
||||||
isActive={isActive("developers")}
|
isActive={isActive("developers")}
|
||||||
link={Pages.developers.list}
|
link={Pages.developers.list}
|
||||||
@@ -166,7 +222,13 @@ const SideBar: FC = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Money3 variant={isActive("payments") ? "Bold" : "Outline"} color={isActive("payments") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Money3
|
||||||
|
variant={isActive("payments") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("payments") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.payments")}
|
title={t("sidebar.payments")}
|
||||||
isActive={isActive("payments")}
|
isActive={isActive("payments")}
|
||||||
link={Pages.payment.list}
|
link={Pages.payment.list}
|
||||||
@@ -174,26 +236,46 @@ const SideBar: FC = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Code variant={isActive("referral-code") ? "Bold" : "Outline"} color={isActive("referral-code") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Code
|
||||||
|
variant={isActive("referral-code") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("referral-code") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.code_referral")}
|
title={t("sidebar.code_referral")}
|
||||||
isActive={isActive("referral-code")}
|
isActive={isActive("referral-code")}
|
||||||
link={Pages.referralCode.list}
|
link={Pages.referralCode.list}
|
||||||
activeName="referralCode"
|
activeName="referralCode"
|
||||||
/>
|
/>
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Profile variant={isActive("users") ? "Bold" : "Outline"} color={isActive("users") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Profile
|
||||||
|
variant={isActive("users") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("users") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.users")}
|
title={t("sidebar.users")}
|
||||||
isActive={isActive("users")}
|
isActive={isActive("users")}
|
||||||
link={Pages.users.list}
|
link={Pages.users.list}
|
||||||
activeName="admins"
|
activeName="admins"
|
||||||
/>
|
/>
|
||||||
<SideBarItem
|
{profile?.data?.user?.roles?.some((role: { name: string }) => role.name === "super_admin") && (
|
||||||
icon={<Gallery variant={isActive("sliders") ? "Bold" : "Outline"} color={isActive("sliders") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
<SideBarItem
|
||||||
title={t("sidebar.sliders")}
|
icon={
|
||||||
isActive={isActive("sliders")}
|
<Gallery
|
||||||
link={Pages.sliders.list}
|
variant={isActive("sliders") ? "Bold" : "Outline"}
|
||||||
activeName="blogs"
|
color={isActive("sliders") ? "black" : "#8C90A3"}
|
||||||
/>
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
title={t("sidebar.sliders")}
|
||||||
|
isActive={isActive("sliders")}
|
||||||
|
link={Pages.sliders.list}
|
||||||
|
activeName="blogs"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -204,13 +286,22 @@ const SideBar: FC = () => {
|
|||||||
{t("sidebar.financial")}
|
{t("sidebar.financial")}
|
||||||
|
|
||||||
<div className={clx("transition-all", !openMenu.includes("financial") && "rotate-180", hasSubMenu && "hidden")}>
|
<div className={clx("transition-all", !openMenu.includes("financial") && "rotate-180", hasSubMenu && "hidden")}>
|
||||||
<ArrowDown2 size={18} color="#c3c7dd" />
|
<ArrowDown2
|
||||||
|
size={18}
|
||||||
|
color="#c3c7dd"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
<div className={clx("text-xs text-[#8C90A3]", !openMenu.includes("financial") && "hidden")}>
|
<div className={clx("text-xs text-[#8C90A3]", !openMenu.includes("financial") && "hidden")}>
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<BagTick variant={isActive("subscriptions") ? "Bold" : "Outline"} color={isActive("subscriptions") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<BagTick
|
||||||
|
variant={isActive("subscriptions") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("subscriptions") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.subscriptions")}
|
title={t("sidebar.subscriptions")}
|
||||||
isActive={isActive("subscriptions")}
|
isActive={isActive("subscriptions")}
|
||||||
link={Pages.subscriptions.list}
|
link={Pages.subscriptions.list}
|
||||||
@@ -218,7 +309,13 @@ const SideBar: FC = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Receipt21 variant={isActive("receipts") ? "Bold" : "Outline"} color={isActive("receipts") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Receipt21
|
||||||
|
variant={isActive("receipts") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("receipts") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.receipt_list")}
|
title={t("sidebar.receipt_list")}
|
||||||
isActive={isActive("receipts")}
|
isActive={isActive("receipts")}
|
||||||
link={Pages.receipts.index}
|
link={Pages.receipts.index}
|
||||||
@@ -226,7 +323,13 @@ const SideBar: FC = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Card variant={isActive("transactions") ? "Bold" : "Outline"} color={isActive("transactions") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Card
|
||||||
|
variant={isActive("transactions") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("transactions") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.transactions")}
|
title={t("sidebar.transactions")}
|
||||||
isActive={isActive("transactions")}
|
isActive={isActive("transactions")}
|
||||||
link={Pages.transactions}
|
link={Pages.transactions}
|
||||||
@@ -234,7 +337,13 @@ const SideBar: FC = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<TicketDiscount variant={isActive("discounts") ? "Bold" : "Outline"} color={isActive("discounts") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<TicketDiscount
|
||||||
|
variant={isActive("discounts") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("discounts") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.discounts")}
|
title={t("sidebar.discounts")}
|
||||||
isActive={isActive("discounts")}
|
isActive={isActive("discounts")}
|
||||||
link={Pages.discount.list}
|
link={Pages.discount.list}
|
||||||
@@ -242,7 +351,13 @@ const SideBar: FC = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Card variant={isActive("card") ? "Bold" : "Outline"} color={isActive("card") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Card
|
||||||
|
variant={isActive("card") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("card") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.card")}
|
title={t("sidebar.card")}
|
||||||
isActive={isActive("card")}
|
isActive={isActive("card")}
|
||||||
link={Pages.cardBank.list}
|
link={Pages.cardBank.list}
|
||||||
@@ -258,14 +373,23 @@ const SideBar: FC = () => {
|
|||||||
{t("sidebar.other")}
|
{t("sidebar.other")}
|
||||||
|
|
||||||
<div className={clx("transition-all", !openMenu.includes("other") && "rotate-180", hasSubMenu && "hidden")}>
|
<div className={clx("transition-all", !openMenu.includes("other") && "rotate-180", hasSubMenu && "hidden")}>
|
||||||
<ArrowDown2 size={18} color="#c3c7dd" />
|
<ArrowDown2
|
||||||
|
size={18}
|
||||||
|
color="#c3c7dd"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div className={clx("text-xs text-[#8C90A3]", !openMenu.includes("other") && "hidden")}>
|
<div className={clx("text-xs text-[#8C90A3]", !openMenu.includes("other") && "hidden")}>
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Messages3 variant={isActive("tickets") ? "Bold" : "Outline"} color={isActive("tickets") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Messages3
|
||||||
|
variant={isActive("tickets") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("tickets") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.ticket")}
|
title={t("sidebar.ticket")}
|
||||||
isActive={isActive("tickets")}
|
isActive={isActive("tickets")}
|
||||||
link={Pages.ticket.list}
|
link={Pages.ticket.list}
|
||||||
@@ -273,7 +397,13 @@ const SideBar: FC = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Chart21 variant={isActive("feedback") ? "Bold" : "Outline"} color={isActive("feedback") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Chart21
|
||||||
|
variant={isActive("feedback") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("feedback") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.feedback")}
|
title={t("sidebar.feedback")}
|
||||||
isActive={isActive("feedback")}
|
isActive={isActive("feedback")}
|
||||||
link={Pages.feedback.list}
|
link={Pages.feedback.list}
|
||||||
@@ -282,7 +412,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Activity variant={isActive("access-logs") ? "Bold" : "Outline"} color={isActive("access-logs") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Activity
|
||||||
|
variant={isActive("access-logs") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("access-logs") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.accessLogs")}
|
title={t("sidebar.accessLogs")}
|
||||||
isActive={isActive("access-logs")}
|
isActive={isActive("access-logs")}
|
||||||
link={Pages.accessLogs.list}
|
link={Pages.accessLogs.list}
|
||||||
@@ -293,7 +429,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<DocumentText variant={isActive("criticisms") ? "Bold" : "Outline"} color={isActive("criticisms") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<DocumentText
|
||||||
|
variant={isActive("criticisms") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("criticisms") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.criticisms")}
|
title={t("sidebar.criticisms")}
|
||||||
isActive={isActive("criticisms")}
|
isActive={isActive("criticisms")}
|
||||||
link={Pages.criticisms.list}
|
link={Pages.criticisms.list}
|
||||||
@@ -310,13 +452,22 @@ const SideBar: FC = () => {
|
|||||||
{t("sidebar.taskmanager")}
|
{t("sidebar.taskmanager")}
|
||||||
|
|
||||||
<div className={clx("transition-all", !openMenu.includes("taskmanager") && "rotate-180", hasSubMenu && "hidden")}>
|
<div className={clx("transition-all", !openMenu.includes("taskmanager") && "rotate-180", hasSubMenu && "hidden")}>
|
||||||
<ArrowDown2 size={18} color="#c3c7dd" />
|
<ArrowDown2
|
||||||
|
size={18}
|
||||||
|
color="#c3c7dd"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
<div className={clx("text-xs text-[#8C90A3]")}>
|
<div className={clx("text-xs text-[#8C90A3]")}>
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Task variant={isActive("taskmanager") ? "Bold" : "Outline"} color={isActive("taskmanager") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Task
|
||||||
|
variant={isActive("taskmanager") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("taskmanager") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.taskmanager")}
|
title={t("sidebar.taskmanager")}
|
||||||
isActive={isActive("taskmanager")}
|
isActive={isActive("taskmanager")}
|
||||||
link={Pages.taskmanager.workspace + "dpage"}
|
link={Pages.taskmanager.workspace + "dpage"}
|
||||||
@@ -332,7 +483,10 @@ const SideBar: FC = () => {
|
|||||||
{t("sidebar.mnage_content")}
|
{t("sidebar.mnage_content")}
|
||||||
|
|
||||||
<div className={clx("transition-all", !openMenu.includes("content") && "rotate-180", hasSubMenu && "hidden")}>
|
<div className={clx("transition-all", !openMenu.includes("content") && "rotate-180", hasSubMenu && "hidden")}>
|
||||||
<ArrowDown2 size={18} color="#c3c7dd" />
|
<ArrowDown2
|
||||||
|
size={18}
|
||||||
|
color="#c3c7dd"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@@ -346,13 +500,22 @@ const SideBar: FC = () => {
|
|||||||
{t("sidebar.reseller")}
|
{t("sidebar.reseller")}
|
||||||
|
|
||||||
<div className={clx("transition-all", !openMenu.includes("reseller") && "rotate-180", hasSubMenu && "hidden")}>
|
<div className={clx("transition-all", !openMenu.includes("reseller") && "rotate-180", hasSubMenu && "hidden")}>
|
||||||
<ArrowDown2 size={18} color="#c3c7dd" />
|
<ArrowDown2
|
||||||
|
size={18}
|
||||||
|
color="#c3c7dd"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className={clx("flex-1 flex flex-col justify-end", !openMenu.includes("reseller") && "hidden")}>
|
<div className={clx("flex-1 flex flex-col justify-end", !openMenu.includes("reseller") && "hidden")}>
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<UserTick variant={isActive("reseller/list") ? "Bold" : "Outline"} color={isActive("reseller/list") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<UserTick
|
||||||
|
variant={isActive("reseller/list") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("reseller/list") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.resellers")}
|
title={t("sidebar.resellers")}
|
||||||
isActive={isActive("reseller/list")}
|
isActive={isActive("reseller/list")}
|
||||||
link={Pages.reseller.list}
|
link={Pages.reseller.list}
|
||||||
@@ -362,7 +525,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Money variant={isActive("reseller/withdraw") ? "Bold" : "Outline"} color={isActive("reseller/withdraw") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Money
|
||||||
|
variant={isActive("reseller/withdraw") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("reseller/withdraw") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.withdraw")}
|
title={t("sidebar.withdraw")}
|
||||||
isActive={isActive("reseller/withdraw")}
|
isActive={isActive("reseller/withdraw")}
|
||||||
link={Pages.reseller.withdraw}
|
link={Pages.reseller.withdraw}
|
||||||
@@ -373,10 +542,16 @@ const SideBar: FC = () => {
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div className={clx(!openMenu.includes("content") && "hidden")}>
|
<div>
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<DocumentLike variant={isActive("ads") ? "Bold" : "Outline"} color={isActive("ads") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<DocumentLike
|
||||||
|
variant={isActive("ads") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("ads") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.ads")}
|
title={t("sidebar.ads")}
|
||||||
isActive={isActive("ads")}
|
isActive={isActive("ads")}
|
||||||
link={Pages.ads.list}
|
link={Pages.ads.list}
|
||||||
@@ -386,7 +561,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<NotificationStatus variant={isActive("announcement") ? "Bold" : "Outline"} color={isActive("announcement") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<NotificationStatus
|
||||||
|
variant={isActive("announcement") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("announcement") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.announcement")}
|
title={t("sidebar.announcement")}
|
||||||
isActive={isActive("announcement")}
|
isActive={isActive("announcement")}
|
||||||
link={Pages.announcement.list}
|
link={Pages.announcement.list}
|
||||||
@@ -396,7 +577,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<DocumentText variant={isActive("blog") ? "Bold" : "Outline"} color={isActive("blog") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<DocumentText
|
||||||
|
variant={isActive("blog") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("blog") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.blog")}
|
title={t("sidebar.blog")}
|
||||||
isActive={isActive("blog")}
|
isActive={isActive("blog")}
|
||||||
link={Pages.blog.list}
|
link={Pages.blog.list}
|
||||||
@@ -406,7 +593,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Teacher variant={isActive("learning") ? "Bold" : "Outline"} color={isActive("learning") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Teacher
|
||||||
|
variant={isActive("learning") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("learning") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.learning")}
|
title={t("sidebar.learning")}
|
||||||
isActive={isActive("learning")}
|
isActive={isActive("learning")}
|
||||||
link={Pages.learning.list}
|
link={Pages.learning.list}
|
||||||
@@ -416,7 +609,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<SmsTracking variant={isActive("messages") ? "Bold" : "Outline"} color={isActive("messages") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<SmsTracking
|
||||||
|
variant={isActive("messages") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("messages") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.messages")}
|
title={t("sidebar.messages")}
|
||||||
isActive={isActive("messages")}
|
isActive={isActive("messages")}
|
||||||
link={Pages.messages.list}
|
link={Pages.messages.list}
|
||||||
@@ -434,13 +633,22 @@ const SideBar: FC = () => {
|
|||||||
{t("sidebar.dmenu")}
|
{t("sidebar.dmenu")}
|
||||||
|
|
||||||
<div className={clx("transition-all", !openMenu.includes("dmenu") && "rotate-180", hasSubMenu && "hidden")}>
|
<div className={clx("transition-all", !openMenu.includes("dmenu") && "rotate-180", hasSubMenu && "hidden")}>
|
||||||
<ArrowDown2 size={18} color="#c3c7dd" />
|
<ArrowDown2
|
||||||
|
size={18}
|
||||||
|
color="#c3c7dd"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className={clx("flex-1 flex flex-col justify-end", !openMenu.includes("dmenu") && "hidden")}>
|
<div className={clx("flex-1 flex flex-col justify-end", !openMenu.includes("dmenu") && "hidden")}>
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Icon variant={isActive("dmenu/icons/list") ? "Bold" : "Outline"} color={isActive("dmenu/icons/list") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Icon
|
||||||
|
variant={isActive("dmenu/icons/list") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("dmenu/icons/list") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.icons")}
|
title={t("sidebar.icons")}
|
||||||
isActive={isActive("dmenu/icons/list")}
|
isActive={isActive("dmenu/icons/list")}
|
||||||
link={Pages.dmenu.icons.list}
|
link={Pages.dmenu.icons.list}
|
||||||
@@ -450,7 +658,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Category variant={isActive("dmenu/icons/group/list") ? "Bold" : "Outline"} color={isActive("dmenu/icons/group/list") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Category
|
||||||
|
variant={isActive("dmenu/icons/group/list") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("dmenu/icons/group/list") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.groups_icon")}
|
title={t("sidebar.groups_icon")}
|
||||||
isActive={isActive("dmenu/icons/group/list")}
|
isActive={isActive("dmenu/icons/group/list")}
|
||||||
link={Pages.dmenu.icons.groupList}
|
link={Pages.dmenu.icons.groupList}
|
||||||
@@ -460,7 +674,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Warning2 variant={isActive("dmenu/reports") ? "Bold" : "Outline"} color={isActive("dmenu/reports") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Warning2
|
||||||
|
variant={isActive("dmenu/reports") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("dmenu/reports") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.reports")}
|
title={t("sidebar.reports")}
|
||||||
isActive={isActive("dmenu/reports")}
|
isActive={isActive("dmenu/reports")}
|
||||||
link={Pages.dmenu.warnings.list}
|
link={Pages.dmenu.warnings.list}
|
||||||
@@ -470,7 +690,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Building variant={isActive("restaurants") ? "Bold" : "Outline"} color={isActive("restaurants") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Building
|
||||||
|
variant={isActive("restaurants") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("restaurants") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.restaurants")}
|
title={t("sidebar.restaurants")}
|
||||||
isActive={isActive("restaurants")}
|
isActive={isActive("restaurants")}
|
||||||
link={Pages.dmenu.restaurants.list}
|
link={Pages.dmenu.restaurants.list}
|
||||||
@@ -480,7 +706,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Sms variant={isActive("sms-count") ? "Bold" : "Outline"} color={isActive("sms-count") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Sms
|
||||||
|
variant={isActive("sms-count") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("sms-count") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.sms_count")}
|
title={t("sidebar.sms_count")}
|
||||||
isActive={isActive("sms-count")}
|
isActive={isActive("sms-count")}
|
||||||
link={Pages.dmenu.restaurants.smsCountList}
|
link={Pages.dmenu.restaurants.smsCountList}
|
||||||
@@ -500,13 +732,22 @@ const SideBar: FC = () => {
|
|||||||
{t("sidebar.dkala")}
|
{t("sidebar.dkala")}
|
||||||
|
|
||||||
<div className={clx("transition-all", !openMenu.includes("dkala") && "rotate-180", hasSubMenu && "hidden")}>
|
<div className={clx("transition-all", !openMenu.includes("dkala") && "rotate-180", hasSubMenu && "hidden")}>
|
||||||
<ArrowDown2 size={18} color="#c3c7dd" />
|
<ArrowDown2
|
||||||
|
size={18}
|
||||||
|
color="#c3c7dd"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className={clx("flex-1 flex flex-col justify-end", !openMenu.includes("dkala") && "hidden")}>
|
<div className={clx("flex-1 flex flex-col justify-end", !openMenu.includes("dkala") && "hidden")}>
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Icon variant={isActive("dkala/icons/list") ? "Bold" : "Outline"} color={isActive("dkala/icons/list") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Icon
|
||||||
|
variant={isActive("dkala/icons/list") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("dkala/icons/list") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.icons")}
|
title={t("sidebar.icons")}
|
||||||
isActive={isActive("dkala/icons/list")}
|
isActive={isActive("dkala/icons/list")}
|
||||||
link={Pages.dkala.icons.list}
|
link={Pages.dkala.icons.list}
|
||||||
@@ -516,7 +757,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Category variant={isActive("dkala/icons/group") ? "Bold" : "Outline"} color={isActive("dkala/icons/group") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Category
|
||||||
|
variant={isActive("dkala/icons/group") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("dkala/icons/group") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.groups_icon")}
|
title={t("sidebar.groups_icon")}
|
||||||
isActive={isActive("dkala/icons/group")}
|
isActive={isActive("dkala/icons/group")}
|
||||||
link={Pages.dkala.icons.groupList}
|
link={Pages.dkala.icons.groupList}
|
||||||
@@ -526,7 +773,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Warning2 variant={isActive("dkala/reports") ? "Bold" : "Outline"} color={isActive("dkala/reports") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Warning2
|
||||||
|
variant={isActive("dkala/reports") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("dkala/reports") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.reports")}
|
title={t("sidebar.reports")}
|
||||||
isActive={isActive("dkala/reports")}
|
isActive={isActive("dkala/reports")}
|
||||||
link={Pages.dkala.warnings.list}
|
link={Pages.dkala.warnings.list}
|
||||||
@@ -536,7 +789,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Building variant={isActive("dkala/shops") ? "Bold" : "Outline"} color={isActive("dkala/shops") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Building
|
||||||
|
variant={isActive("dkala/shops") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("dkala/shops") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.shops")}
|
title={t("sidebar.shops")}
|
||||||
isActive={isActive("dkala/shops")}
|
isActive={isActive("dkala/shops")}
|
||||||
link={Pages.dkala.shops.list}
|
link={Pages.dkala.shops.list}
|
||||||
@@ -546,7 +805,13 @@ const SideBar: FC = () => {
|
|||||||
|
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Sms variant={isActive("dkala/sms-count") ? "Bold" : "Outline"} color={isActive("dkala/sms-count") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Sms
|
||||||
|
variant={isActive("dkala/sms-count") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("dkala/sms-count") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.sms_count")}
|
title={t("sidebar.sms_count")}
|
||||||
isActive={isActive("dkala/sms-count")}
|
isActive={isActive("dkala/sms-count")}
|
||||||
link={Pages.dkala.shops.smsCountList}
|
link={Pages.dkala.shops.smsCountList}
|
||||||
@@ -565,13 +830,22 @@ const SideBar: FC = () => {
|
|||||||
{t("sidebar.dpage")}
|
{t("sidebar.dpage")}
|
||||||
|
|
||||||
<div className={clx("transition-all", !openMenu.includes("dpage") && "rotate-180", hasSubMenu && "hidden")}>
|
<div className={clx("transition-all", !openMenu.includes("dpage") && "rotate-180", hasSubMenu && "hidden")}>
|
||||||
<ArrowDown2 size={18} color="#c3c7dd" />
|
<ArrowDown2
|
||||||
|
size={18}
|
||||||
|
color="#c3c7dd"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className={clx("flex-1 flex flex-col justify-end", !openMenu.includes("dpage") && "hidden")}>
|
<div className={clx("flex-1 flex flex-col justify-end", !openMenu.includes("dpage") && "hidden")}>
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Icon variant={isActive("dpage/stickers/list") ? "Bold" : "Outline"} color={isActive("dpage/stickers/list") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Icon
|
||||||
|
variant={isActive("dpage/stickers/list") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("dpage/stickers/list") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.sticker")}
|
title={t("sidebar.sticker")}
|
||||||
isActive={isActive("dpage/stickers/list")}
|
isActive={isActive("dpage/stickers/list")}
|
||||||
link={Pages.dpage.stickers.list}
|
link={Pages.dpage.stickers.list}
|
||||||
@@ -591,13 +865,22 @@ const SideBar: FC = () => {
|
|||||||
{t("sidebar.dmail")}
|
{t("sidebar.dmail")}
|
||||||
|
|
||||||
<div className={clx("transition-all", !openMenu.includes("dmail") && "rotate-180", hasSubMenu && "hidden")}>
|
<div className={clx("transition-all", !openMenu.includes("dmail") && "rotate-180", hasSubMenu && "hidden")}>
|
||||||
<ArrowDown2 size={18} color="#c3c7dd" />
|
<ArrowDown2
|
||||||
|
size={18}
|
||||||
|
color="#c3c7dd"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className={clx("flex-1 flex flex-col justify-end", !openMenu.includes("dmail") && "hidden")}>
|
<div className={clx("flex-1 flex flex-col justify-end", !openMenu.includes("dmail") && "hidden")}>
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Global variant={isActive("dmail/domain/list") ? "Bold" : "Outline"} color={isActive("dmail/domain/list") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Global
|
||||||
|
variant={isActive("dmail/domain/list") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("dmail/domain/list") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.domain")}
|
title={t("sidebar.domain")}
|
||||||
isActive={isActive("dmail/domain/list")}
|
isActive={isActive("dmail/domain/list")}
|
||||||
link={Pages.dmail.list}
|
link={Pages.dmail.list}
|
||||||
@@ -612,7 +895,13 @@ const SideBar: FC = () => {
|
|||||||
<div className="text-xs text-[#8C90A3]"></div>
|
<div className="text-xs text-[#8C90A3]"></div>
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Setting2 variant={isActive("setting") ? "Bold" : "Outline"} color={isActive("setting") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Setting2
|
||||||
|
variant={isActive("setting") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("setting") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.setting")}
|
title={t("sidebar.setting")}
|
||||||
isActive={isActive("setting")}
|
isActive={isActive("setting")}
|
||||||
link={Pages.setting}
|
link={Pages.setting}
|
||||||
@@ -621,7 +910,13 @@ const SideBar: FC = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="text-xs text-[#8C90A3]">
|
<div className="text-xs text-[#8C90A3]">
|
||||||
<SideBarItem
|
<SideBarItem
|
||||||
icon={<Logout variant={isActive("logout") ? "Bold" : "Outline"} color={isActive("logout") ? "black" : "#8C90A3"} size={iconSizeSideBar} />}
|
icon={
|
||||||
|
<Logout
|
||||||
|
variant={isActive("logout") ? "Bold" : "Outline"}
|
||||||
|
color={isActive("logout") ? "black" : "#8C90A3"}
|
||||||
|
size={iconSizeSideBar}
|
||||||
|
/>
|
||||||
|
}
|
||||||
title={t("sidebar.logout")}
|
title={t("sidebar.logout")}
|
||||||
isActive={isActive("logout")}
|
isActive={isActive("logout")}
|
||||||
link={`#`}
|
link={`#`}
|
||||||
|
|||||||
Reference in New Issue
Block a user