| 1 |
4205669 |
Mardin |
2y ago |
import { create } from 'zustand'; |
| 2 |
4205669 |
Mardin |
2y ago |
import { subscribeWithSelector } from 'zustand/middleware'; |
| 3 |
5825ea4 |
Mardin |
2y ago |
import { PageType, Pages } from 'types'; |
| 4 |
5825ea4 |
Mardin |
2y ago |
import { chakra } from '@chakra-ui/react'; |
| 5 |
5825ea4 |
Mardin |
2y ago |
import { CubeIcon, HomeIcon, ServerIcon, ServerStackIcon, UsersIcon } from '@heroicons/react/24/outline'; |
| 6 |
5825ea4 |
Mardin |
2y ago |
import { IconBaseStyle } from 'constants/IconBaseStyle'; |
| 7 |
4205669 |
Mardin |
2y ago |
|
| 8 |
5825ea4 |
Mardin |
2y ago |
const UsersSidebarItemIcon = chakra(UsersIcon, IconBaseStyle); |
| 9 |
5825ea4 |
Mardin |
2y ago |
const ServicesSidebarItemIcon = chakra(ServerStackIcon, IconBaseStyle); |
| 10 |
5825ea4 |
Mardin |
2y ago |
const NodesSidebarItemIcon = chakra(CubeIcon, IconBaseStyle); |
| 11 |
5825ea4 |
Mardin |
2y ago |
const HostSidebarItemIcon = chakra(ServerIcon, IconBaseStyle); |
| 12 |
5825ea4 |
Mardin |
2y ago |
const HomeSidebarItemIcon = chakra(HomeIcon, IconBaseStyle); |
| 13 |
5825ea4 |
Mardin |
2y ago |
|
| 14 |
5825ea4 |
Mardin |
2y ago |
|
| 15 |
5825ea4 |
Mardin |
2y ago |
export const pages: Pages = { |
| 16 |
5825ea4 |
Mardin |
2y ago |
home: { |
| 17 |
5825ea4 |
Mardin |
2y ago |
name: 'home', |
| 18 |
5825ea4 |
Mardin |
2y ago |
path: '/', |
| 19 |
5825ea4 |
Mardin |
2y ago |
itemIcon: HomeSidebarItemIcon, |
| 20 |
5825ea4 |
Mardin |
2y ago |
}, |
| 21 |
5825ea4 |
Mardin |
2y ago |
users: { |
| 22 |
5825ea4 |
Mardin |
2y ago |
name: 'users', |
| 23 |
5825ea4 |
Mardin |
2y ago |
path: '/users', |
| 24 |
5825ea4 |
Mardin |
2y ago |
itemIcon: UsersSidebarItemIcon, |
| 25 |
5825ea4 |
Mardin |
2y ago |
}, |
| 26 |
5825ea4 |
Mardin |
2y ago |
services: { |
| 27 |
5825ea4 |
Mardin |
2y ago |
name: 'services', |
| 28 |
5825ea4 |
Mardin |
2y ago |
path: '/services', |
| 29 |
5825ea4 |
Mardin |
2y ago |
itemIcon: ServicesSidebarItemIcon, |
| 30 |
5825ea4 |
Mardin |
2y ago |
}, |
| 31 |
5825ea4 |
Mardin |
2y ago |
nodes: { |
| 32 |
5825ea4 |
Mardin |
2y ago |
name: 'nodes', |
| 33 |
5825ea4 |
Mardin |
2y ago |
path: '/nodes', |
| 34 |
5825ea4 |
Mardin |
2y ago |
itemIcon: NodesSidebarItemIcon, |
| 35 |
5825ea4 |
Mardin |
2y ago |
}, |
| 36 |
5825ea4 |
Mardin |
2y ago |
hosts: { |
| 37 |
5825ea4 |
Mardin |
2y ago |
name: 'hosts', |
| 38 |
5825ea4 |
Mardin |
2y ago |
path: '/hosts', |
| 39 |
5825ea4 |
Mardin |
2y ago |
itemIcon: HostSidebarItemIcon, |
| 40 |
5825ea4 |
Mardin |
2y ago |
}, |
| 41 |
5825ea4 |
Mardin |
2y ago |
}; |
| 42 |
4205669 |
Mardin |
2y ago |
|
| 43 |
4205669 |
Mardin |
2y ago |
type DashboardStateType = { |
| 44 |
4205669 |
Mardin |
2y ago |
version: string | null; |
| 45 |
4205669 |
Mardin |
2y ago |
loading: boolean; |
| 46 |
5825ea4 |
Mardin |
2y ago |
activePage: PageType; |
| 47 |
bedeeff |
Mardin |
2y ago |
isCollapsed: boolean; |
| 48 |
bedeeff |
Mardin |
2y ago |
collapseSidebar: () => void; |
| 49 |
bedeeff |
Mardin |
2y ago |
expandSidebar: () => void; |
| 50 |
5825ea4 |
Mardin |
2y ago |
activatePage: (pageId: PageType) => void; |
| 51 |
4205669 |
Mardin |
2y ago |
}; |
| 52 |
4205669 |
Mardin |
2y ago |
|
| 53 |
4205669 |
Mardin |
2y ago |
export const useDashboard = create( |
| 54 |
4205669 |
Mardin |
2y ago |
subscribeWithSelector<DashboardStateType>((set,) => ({ |
| 55 |
4205669 |
Mardin |
2y ago |
version: null, |
| 56 |
4205669 |
Mardin |
2y ago |
loading: true, |
| 57 |
5825ea4 |
Mardin |
2y ago |
activePage: pages.home, |
| 58 |
bedeeff |
Mardin |
2y ago |
isCollapsed: false, |
| 59 |
bedeeff |
Mardin |
2y ago |
expandSidebar: () => { |
| 60 |
bedeeff |
Mardin |
2y ago |
set({ isCollapsed: false }) |
| 61 |
bedeeff |
Mardin |
2y ago |
}, |
| 62 |
bedeeff |
Mardin |
2y ago |
collapseSidebar: () => { |
| 63 |
bedeeff |
Mardin |
2y ago |
set({ isCollapsed: true }) |
| 64 |
bedeeff |
Mardin |
2y ago |
}, |
| 65 |
5825ea4 |
Mardin |
2y ago |
activatePage: (page) => { |
| 66 |
5825ea4 |
Mardin |
2y ago |
set({ activePage: page }); |
| 67 |
4205669 |
Mardin |
2y ago |
}, |
| 68 |
4205669 |
Mardin |
2y ago |
})) |
| 69 |
4205669 |
Mardin |
2y ago |
); |