@diagramers/admin
Version:
Diagramers Admin Template - React starter for admin dashboards.
497 lines (493 loc) • 25.3 kB
JavaScript
/* eslint-disable */
import { lazy } from 'react';
import { USER_ROLE } from 'constants.js';
import { DEFAULT_PATHS } from 'config.js';
const dashboards = {
index: lazy(() => import('views/dashboards/Dashboards')),
default: lazy(() => import('views/dashboards/DashboardsDefault')),
visual: lazy(() => import('views/dashboards/DashboardsVisual')),
analytic: lazy(() => import('views/dashboards/DashboardsAnalytic')),
};
const apps = {
index: lazy(() => import('views/apps/Apps')),
calendar: lazy(() => import('views/apps/calendar/Calendar')),
chat: lazy(() => import('views/apps/chat/Chat')),
contacts: lazy(() => import('views/apps/contacts/Contacts')),
mailbox: lazy(() => import('views/apps/mailbox/Mailbox')),
tasks: lazy(() => import('views/apps/tasks/Tasks')),
};
const pages = {
index: lazy(() => import('views/pages/Pages')),
setup: lazy(() => import('views/pages/setup/Setup')),
projectSettings: lazy(() => import('views/pages/setup/ProjectSettings')),
authentication: {
index: lazy(() => import('views/pages/authentication/Authentication')),
login: lazy(() => import('views/pages/authentication/Login')),
register: lazy(() => import('views/pages/authentication/Register')),
forgotPassword: lazy(() => import('views/pages/authentication/ForgotPassword')),
resetPassword: lazy(() => import('views/pages/authentication/ResetPassword')),
},
blog: {
index: lazy(() => import('views/pages/blog/Blog')),
home: lazy(() => import('views/pages/blog/BlogHome')),
grid: lazy(() => import('views/pages/blog/BlogGrid')),
list: lazy(() => import('views/pages/blog/BlogList')),
detail: lazy(() => import('views/pages/blog/BlogDetail')),
},
miscellaneous: {
index: lazy(() => import('views/pages/miscellaneous/Miscellaneous')),
faq: lazy(() => import('views/pages/miscellaneous/Faq')),
knowledgeBase: lazy(() => import('views/pages/miscellaneous/KnowledgeBase')),
error: lazy(() => import('views/pages/miscellaneous/Error')),
comingSoon: lazy(() => import('views/pages/miscellaneous/ComingSoon')),
pricing: lazy(() => import('views/pages/miscellaneous/Pricing')),
search: lazy(() => import('views/pages/miscellaneous/Search')),
mailing: lazy(() => import('views/pages/miscellaneous/Mailing')),
empty: lazy(() => import('views/pages/miscellaneous/Empty')),
},
portfolio: {
index: lazy(() => import('views/pages/portfolio/Portfolio')),
home: lazy(() => import('views/pages/portfolio/PortfolioHome')),
detail: lazy(() => import('views/pages/portfolio/PortfolioDetail')),
},
profile: {
index: lazy(() => import('views/pages/profile/Profile')),
standard: lazy(() => import('views/pages/profile/ProfileStandard')),
settings: lazy(() => import('views/pages/profile/ProfileSettings')),
},
};
const blocks = {
index: lazy(() => import('views/blocks/Blocks')),
cta: lazy(() => import('views/blocks/cta/Cta')),
details: lazy(() => import('views/blocks/details/Details')),
gallery: lazy(() => import('views/blocks/gallery/Gallery')),
images: lazy(() => import('views/blocks/images/Images')),
list: lazy(() => import('views/blocks/list/List')),
stats: lazy(() => import('views/blocks/stats/Stats')),
steps: lazy(() => import('views/blocks/steps/Steps')),
tabularData: lazy(() => import('views/blocks/tabulardata/TabularData')),
thumbnails: lazy(() => import('views/blocks/thumbnails/Thumbnails')),
};
const interfaces = {
index: lazy(() => import('views/interface/Interface')),
components: {
index: lazy(() => import('views/interface/components/Components')),
accordion: lazy(() => import('views/interface/components/Accordion')),
alerts: lazy(() => import('views/interface/components/Alerts')),
badge: lazy(() => import('views/interface/components/Badge')),
breadcrumb: lazy(() => import('views/interface/components/Breadcrumb')),
buttons: lazy(() => import('views/interface/components/Buttons')),
buttonGroup: lazy(() => import('views/interface/components/ButtonGroup')),
card: lazy(() => import('views/interface/components/Card')),
closeButton: lazy(() => import('views/interface/components/CloseButton')),
collapse: lazy(() => import('views/interface/components/Collapse')),
dropdowns: lazy(() => import('views/interface/components/Dropdowns')),
listGroup: lazy(() => import('views/interface/components/ListGroup')),
modal: lazy(() => import('views/interface/components/Modal')),
navs: lazy(() => import('views/interface/components/Navs')),
offcanvas: lazy(() => import('views/interface/components/Offcanvas')),
pagination: lazy(() => import('views/interface/components/Pagination')),
popovers: lazy(() => import('views/interface/components/Popovers')),
progress: lazy(() => import('views/interface/components/Progress')),
spinners: lazy(() => import('views/interface/components/Spinners')),
toasts: lazy(() => import('views/interface/components/Toasts')),
tooltips: lazy(() => import('views/interface/components/Tooltips')),
},
forms: {
index: lazy(() => import('views/interface/forms/Forms')),
layouts: lazy(() => import('views/interface/forms/layouts/Layouts')),
validation: lazy(() => import('views/interface/forms/validation/Validation')),
wizard: lazy(() => import('views/interface/forms/wizard/Wizard')),
inputGroup: lazy(() => import('views/interface/forms/input-group/InputGroup')),
inputMask: lazy(() => import('views/interface/forms/input-mask/InputMask')),
genericForms: lazy(() => import('views/interface/forms/generic-forms/GenericForms')),
controls: {
index: lazy(() => import('views/interface/forms/controls/Controls')),
autocomplete: lazy(() => import('views/interface/forms/controls/autocomplete/Autocomplete')),
checkboxRadio: lazy(() => import('views/interface/forms/controls/checkbox-radio/CheckboxRadio')),
datePicker: lazy(() => import('views/interface/forms/controls/datepicker/Datepicker')),
dropzone: lazy(() => import('views/interface/forms/controls/dropzone/Dropzone')),
editor: lazy(() => import('views/interface/forms/controls/editor/Editor')),
inputSpinner: lazy(() => import('views/interface/forms/controls/input-spinner/InputSpinner')),
rating: lazy(() => import('views/interface/forms/controls/rating/Rating')),
select: lazy(() => import('views/interface/forms/controls/select/Select')),
slider: lazy(() => import('views/interface/forms/controls/slider/Slider')),
tags: lazy(() => import('views/interface/forms/controls/tags/Tags')),
},
},
plugins: {
index: lazy(() => import('views/interface/plugins/Plugins')),
carousel: lazy(() => import('views/interface/plugins/carousel/Carousel')),
charts: lazy(() => import('views/interface/plugins/chart/Chart')),
clamp: lazy(() => import('views/interface/plugins/clamp/Clamp')),
contextMenu: lazy(() => import('views/interface/plugins/context-menu/ContextMenu')),
datatables: {
index: lazy(() => import('views/interface/plugins/datatables/Datatables')),
editableRows: lazy(() => import('views/interface/plugins/datatables/EditableRows/EditableRows')),
editableBoxed: lazy(() => import('views/interface/plugins/datatables/EditableBoxed/EditableBoxed')),
serverSide: lazy(() => import('views/interface/plugins/datatables/ServerSide/ServerSide')),
boxedVariations: lazy(() => import('views/interface/plugins/datatables/BoxedVariations/BoxedVariations')),
},
lightbox: lazy(() => import('views/interface/plugins/lightbox/Lightbox')),
maps: lazy(() => import('views/interface/plugins/maps/Maps')),
notification: lazy(() => import('views/interface/plugins/notification/Notification')),
players: lazy(() => import('views/interface/plugins/player/Player')),
progress: lazy(() => import('views/interface/plugins/progress/Progress')),
scrollbar: lazy(() => import('views/interface/plugins/scrollbar/Scrollbar')),
shortcuts: lazy(() => import('views/interface/plugins/shortcut/Shortcut')),
sortable: lazy(() => import('views/interface/plugins/sortable/Sortable')),
},
content: {
index: lazy(() => import('views/interface/content/Content')),
icons: {
index: lazy(() => import('views/interface/content/icons/Icons')),
csLineIcons: lazy(() => import('views/interface/content/icons/CsLineIcons')),
csInterfaceIcons: lazy(() => import('views/interface/content/icons/CsInterfaceIcons')),
bootstrapIcons: lazy(() => import('views/interface/content/icons/BootstrapIcons')),
},
images: lazy(() => import('views/interface/content/Images')),
tables: lazy(() => import('views/interface/content/Tables')),
typography: lazy(() => import('views/interface/content/Typography')),
menu: {
index: lazy(() => import('views/interface/content/menu/Menu')),
horizontal: lazy(() => import('views/interface/content/menu/Horizontal')),
vertical: lazy(() => import('views/interface/content/menu/Vertical')),
verticalHidden: lazy(() => import('views/interface/content/menu/VerticalHidden')),
verticalNoHidden: lazy(() => import('views/interface/content/menu/VerticalNoHidden')),
mobileOnly: lazy(() => import('views/interface/content/menu/MobileOnly')),
sidebar: lazy(() => import('views/interface/content/menu/Sidebar')),
},
},
};
const appRoot = DEFAULT_PATHS.APP.endsWith('/') ? DEFAULT_PATHS.APP.slice(1, DEFAULT_PATHS.APP.length) : DEFAULT_PATHS.APP;
const routesAndMenuItems = {
mainMenuItems: [
{
path: DEFAULT_PATHS.APP,
exact: true,
redirect: true,
to: `${appRoot}/dashboards/default`,
},
{
path: `${appRoot}/dashboards`,
component: dashboards.index,
label: 'menu.dashboards',
icon: 'home',
subs: [
{ path: '/default', label: 'menu.default', component: dashboards.default },
{ path: '/visual', label: 'menu.visual', component: dashboards.visual },
{ path: '/analytic', label: 'menu.analytic', component: dashboards.analytic },
],
},
{
path: `${appRoot}/apps`,
label: 'menu.apps',
icon: 'screen',
component: apps.index,
subs: [
{ path: '/calendar', label: 'menu.calendar', component: apps.calendar },
{ path: '/chat', label: 'menu.chat', component: apps.chat },
{ path: '/contacts', label: 'menu.contacts', component: apps.contacts },
{ path: '/mailbox', label: 'menu.mailbox', component: apps.mailbox },
{ path: '/tasks', label: 'menu.tasks', component: apps.tasks },
],
},
{
path: `${appRoot}/pages`,
label: 'menu.pages',
icon: 'notebook-1',
component: pages.index,
subs: [
{
path: '/authentication',
label: 'menu.authentication',
component: pages.authentication.index,
subs: [
{ path: '/login', label: 'menu.login', component: pages.authentication.login, noLayout: true },
{ path: '/register', label: 'menu.register', component: pages.authentication.register, noLayout: true },
{ path: '/forgot-password', label: 'menu.forgot-password', component: pages.authentication.forgotPassword, noLayout: true },
{ path: '/reset-password', label: 'menu.reset-password', component: pages.authentication.resetPassword, noLayout: true },
],
},
{
path: '/blog',
label: 'menu.blog',
component: pages.blog.index,
subs: [
{ path: '/home', label: 'menu.home', component: pages.blog.home },
{ path: '/grid', label: 'menu.grid', component: pages.blog.grid },
{ path: '/list', label: 'menu.list', component: pages.blog.list },
{ path: '/detail', label: 'menu.detail', component: pages.blog.detail },
],
},
{
path: '/miscellaneous',
label: 'menu.miscellaneous',
component: pages.miscellaneous.index,
subs: [
{ path: '/faq', label: 'menu.faq', component: pages.miscellaneous.faq },
{ path: '/knowledge-base', label: 'menu.knowledge-base', component: pages.miscellaneous.knowledgeBase },
{ path: '/error', label: 'menu.error', component: pages.miscellaneous.error, noLayout: true },
{ path: '/coming-soon', label: 'menu.coming-soon', component: pages.miscellaneous.comingSoon, noLayout: true },
{ path: '/pricing', label: 'menu.pricing', component: pages.miscellaneous.pricing },
{ path: '/search', label: 'menu.search', component: pages.miscellaneous.search },
{ path: '/mailing', label: 'menu.mailing', component: pages.miscellaneous.mailing },
{ path: '/empty', label: 'menu.empty', component: pages.miscellaneous.empty },
],
},
{
path: '/portfolio',
label: 'menu.portfolio',
component: pages.portfolio.index,
subs: [
{ path: '/home', label: 'menu.home', component: pages.portfolio.home },
{ path: '/detail', label: 'menu.detail', component: pages.portfolio.detail },
],
},
{
path: '/profile',
label: 'menu.profile',
component: pages.profile.index,
subs: [
{ path: '/standard', label: 'menu.standard', component: pages.profile.standard },
{ path: '/settings', label: 'menu.settings', component: pages.profile.settings },
],
},
],
},
{
path: `${appRoot}/blocks`,
label: 'menu.blocks',
icon: 'grid-5',
component: blocks.index,
subs: [
{ path: '/cta', label: 'menu.cta', component: blocks.cta },
{ path: '/details', label: 'menu.details', component: blocks.details },
{ path: '/gallery', label: 'menu.gallery', component: blocks.gallery },
{ path: '/images', label: 'menu.images', component: blocks.images },
{ path: '/list', label: 'menu.list', component: blocks.list },
{ path: '/stats', label: 'menu.stats', component: blocks.stats },
{ path: '/steps', label: 'menu.steps', component: blocks.steps },
{ path: '/tabular-data', label: 'menu.tabular-data', component: blocks.tabularData },
{ path: '/thumbnails', label: 'menu.thumbnails', component: blocks.thumbnails },
],
},
{
path: `${appRoot}/interface`,
label: 'menu.interface',
icon: 'pocket-knife',
component: interfaces.index,
roles: [USER_ROLE.Admin, USER_ROLE.Editor],
mega: true,
subs: [
{
path: '/components',
label: 'menu.components',
component: interfaces.components.index,
subs: [
{ path: '/accordion', label: 'menu.accordion', component: interfaces.components.accordion },
{ path: '/alerts', label: 'menu.alerts', component: interfaces.components.alerts },
{ path: '/badge', label: 'menu.badge', component: interfaces.components.badge },
{ path: '/breadcrumb', label: 'menu.breadcrumb', component: interfaces.components.breadcrumb },
{ path: '/buttons', label: 'menu.buttons', component: interfaces.components.buttons },
{ path: '/button-group', label: 'menu.button-group', component: interfaces.components.buttonGroup },
{ path: '/card', label: 'menu.card', component: interfaces.components.card },
{ path: '/close-button', label: 'menu.close-button', component: interfaces.components.closeButton },
{ path: '/collapse', label: 'menu.collapse', component: interfaces.components.collapse },
{ path: '/dropdowns', label: 'menu.dropdowns', component: interfaces.components.dropdowns },
{ path: '/list-group', label: 'menu.list-group', component: interfaces.components.listGroup },
{ path: '/modal', label: 'menu.modal', component: interfaces.components.modal },
{ path: '/navs', label: 'menu.navs', component: interfaces.components.navs },
{ path: '/offcanvas', label: 'menu.offcanvas', component: interfaces.components.offcanvas },
{ path: '/pagination', label: 'menu.pagination', component: interfaces.components.pagination },
{ path: '/popovers', label: 'menu.popovers', component: interfaces.components.popovers },
{ path: '/progress', label: 'menu.progress', component: interfaces.components.progress },
{ path: '/spinners', label: 'menu.spinners', component: interfaces.components.spinners },
{ path: '/toasts', label: 'menu.toasts', component: interfaces.components.toasts },
{ path: '/tooltips', label: 'menu.tooltips', component: interfaces.components.tooltips },
],
},
{
path: '/forms',
label: 'menu.forms',
component: interfaces.forms.index,
subs: [
{ path: '/layouts', label: 'menu.layouts', component: interfaces.forms.layouts },
{ path: '/validation', label: 'menu.validation', component: interfaces.forms.validation },
{ path: '/wizard', label: 'menu.wizard', component: interfaces.forms.wizard },
{ path: '/input-group', label: 'menu.input-group', component: interfaces.forms.inputGroup },
{ path: '/input-mask', label: 'menu.input-mask', component: interfaces.forms.inputMask },
{ path: '/generic-forms', label: 'menu.generic-forms', component: interfaces.forms.genericForms },
{
path: '/controls',
label: 'menu.controls',
component: interfaces.forms.controls.index,
subs: [
{
path: '/autocomplete',
label: 'menu.autocomplete',
component: interfaces.forms.controls.autocomplete,
},
{
path: '/checkbox-radio',
label: 'menu.checkbox-radio',
component: interfaces.forms.controls.checkboxRadio,
},
{ path: '/date-picker', label: 'menu.date-picker', component: interfaces.forms.controls.datePicker },
{ path: '/dropzone', label: 'menu.dropzone', component: interfaces.forms.controls.dropzone },
{ path: '/editor', label: 'menu.editor', component: interfaces.forms.controls.editor },
{
path: '/input-spinner',
label: 'menu.input-spinner',
component: interfaces.forms.controls.inputSpinner,
},
{ path: '/rating', label: 'menu.rating', component: interfaces.forms.controls.rating },
{ path: '/select', label: 'menu.select', component: interfaces.forms.controls.select },
{ path: '/slider', label: 'menu.slider', component: interfaces.forms.controls.slider },
{ path: '/tags', label: 'menu.tags', component: interfaces.forms.controls.tags },
],
},
],
},
{
path: '/plugins',
label: 'menu.plugins',
component: interfaces.plugins.index,
subs: [
{ path: '/carousel', label: 'menu.carousel', component: interfaces.plugins.carousel },
{ path: '/charts', label: 'menu.charts', component: interfaces.plugins.charts },
{ path: '/clamp', label: 'menu.clamp', component: interfaces.plugins.clamp },
{ path: '/context-menu', label: 'menu.context-menu', component: interfaces.plugins.contextMenu },
{
path: '/datatables',
label: 'menu.datatables',
component: interfaces.plugins.datatables.index,
subs: [
{
path: '/editable-rows',
label: 'menu.editable-rows',
component: interfaces.plugins.datatables.editableRows,
},
{
path: '/editable-boxed',
label: 'menu.editable-boxed',
component: interfaces.plugins.datatables.editableBoxed,
},
{
path: '/server-side',
label: 'menu.server-side',
component: interfaces.plugins.datatables.serverSide,
},
{
path: '/boxed-variations',
label: 'menu.boxed-variations',
component: interfaces.plugins.datatables.boxedVariations,
},
],
},
{ path: '/lightbox', label: 'menu.lightbox', component: interfaces.plugins.lightbox },
{ path: '/maps', label: 'menu.maps', component: interfaces.plugins.maps },
{ path: '/notification', label: 'menu.notification', component: interfaces.plugins.notification },
{ path: '/players', label: 'menu.players', component: interfaces.plugins.players },
{ path: '/progress', label: 'menu.progress', component: interfaces.plugins.progress },
{ path: '/scrollbar', label: 'menu.scrollbar', component: interfaces.plugins.scrollbar },
{ path: '/shortcuts', label: 'menu.shortcuts', component: interfaces.plugins.shortcuts },
{ path: '/sortable', label: 'menu.sortable', component: interfaces.plugins.sortable },
],
},
{
path: '/content',
label: 'menu.content',
component: interfaces.content.index,
roles: [USER_ROLE.Admin, USER_ROLE.Editor],
subs: [
{
path: '/icons',
label: 'menu.icons',
component: interfaces.content.icons.index,
subs: [
{
path: '/cs-line-icons',
label: 'menu.cs-line-icons',
component: interfaces.content.icons.csLineIcons,
},
{
path: '/cs-interface-icons',
label: 'menu.cs-interface-icons',
component: interfaces.content.icons.csInterfaceIcons,
},
{
path: '/bootstrap-icons',
label: 'menu.bootstrap-icons',
component: interfaces.content.icons.bootstrapIcons,
},
],
},
{ path: '/images', label: 'menu.images', component: interfaces.content.images },
{ path: '/tables', label: 'menu.tables', component: interfaces.content.tables },
{ path: '/typography', label: 'menu.typography', component: interfaces.content.typography },
{
path: '/menu',
label: 'menu.menu',
component: interfaces.content.menu.index,
subs: [
{ path: '/horizontal', label: 'menu.horizontal', component: interfaces.content.menu.horizontal },
{ path: '/vertical', label: 'menu.vertical', component: interfaces.content.menu.vertical },
{
path: '/vertical-hidden',
label: 'menu.vertical-hidden',
component: interfaces.content.menu.verticalHidden,
},
{
path: '/vertical-no-hidden',
label: 'menu.vertical-no-hidden',
component: interfaces.content.menu.verticalNoHidden,
},
{ path: '/mobile-only', label: 'menu.mobile-only', component: interfaces.content.menu.mobileOnly },
{ path: '/sidebar', label: 'menu.sidebar', component: interfaces.content.menu.sidebar },
],
},
],
},
],
},
],
sidebarItems: [
{ path: '#connections', label: 'menu.connections', icon: 'diagram-1', hideInRoute: true },
{ path: '#bookmarks', label: 'menu.bookmarks', icon: 'bookmark', hideInRoute: true },
{ path: '#requests', label: 'menu.requests', icon: 'diagram-2', hideInRoute: true },
{
path: '#account',
label: 'menu.account',
icon: 'user',
hideInRoute: true,
subs: [
{ path: '/settings', label: 'menu.settings', icon: 'gear', hideInRoute: true },
{ path: '/password', label: 'menu.password', icon: 'lock-off', hideInRoute: true },
{ path: '/devices', label: 'menu.devices', icon: 'mobile', hideInRoute: true },
],
},
{
path: '#notifications',
label: 'menu.notifications',
icon: 'notification',
hideInRoute: true,
subs: [
{ path: '/email', label: 'menu.email', icon: 'email', hideInRoute: true },
{ path: '/sms', label: 'menu.sms', icon: 'message', hideInRoute: true },
],
},
{
path: '#downloads',
label: 'menu.downloads',
icon: 'download',
hideInRoute: true,
subs: [
{ path: '/documents', label: 'menu.documents', icon: 'file-text', hideInRoute: true },
{ path: '/images', label: 'menu.images', icon: 'file-image', hideInRoute: true },
{ path: '/videos', label: 'menu.videos', icon: 'file-video', hideInRoute: true },
],
},
],
};
export default routesAndMenuItems;