UNPKG

@veecode-platform/backstage-plugin-tenant-explorer

Version:

138 lines (115 loc) 3.95 kB
# Tenant Explorer Plugin The Tenant plugin has two approaches: ⚠️ It is important to note that the `Tenant` is a **Kind** customized by the **VeeCode Platform** and therefore it requires the installation of the `veecode-platform-common` plugin in order to work. To install the `veecode-platform-common` plugin click [here](https://github.com/veecode-platform/platform-backstage-plugins/tree/master/plugins/veecode-platform-common). Okay, given that you already have a properly configured environment, let's start our installation. ## Get Started ```bash cd packages/app yarn add @veecode-platform/plugin-tenant-explorer ``` Now, in the file `packages > app > src > App.tsx`: ```diff ... + import { TenantExplorerPage } from '@veecode-platform/plugin-tenant-explorer'; ... const routes = ( <FlatRoutes> + <Route path="/tenant-explorer" element={<tenantExplorerPage/>}/> </FlatRoutes> ) ... ``` To add a menu to your sidebar, just follow these steps: `packages > app > src > components > Root > Root.tsx ` In the example, we've added an external icon, using the lib `react-icons`. ```bash cd packages/app yarn add react-icons ``` ```diff ... + import { Imcluster } from "react-icons/im"; ... export const Root = ({ children }: PropsWithChildren<{}>) => ( <SidebarPage> <Sidebar> <SidebarLogo /> <SidebarGroup label="Search" icon={<SearchIcon />} to="/search"> <SidebarSearchModal /> </SidebarGroup> <SidebarDivider /> <SidebarGroup label="Menu" icon={<MenuIcon />}> <SidebarItem icon={HomeIcon} to="catalog" text="Home" /> <SidebarItem icon={ExtensionIcon} to="api-docs" text="APIs" /> <SidebarItem icon={LibraryBooks} to="docs" text="Docs" /> + <SidebarItem icon={Imcluster} to="tenant-explorer" text="Tenants" /> <SidebarItem icon={CreateComponentIcon} to="create" text="Create..." /> <SidebarDivider /> <SidebarScrollWrapper> <SidebarItem icon={MapIcon} to="tech-radar" text="Tech Radar" /> </SidebarScrollWrapper> </SidebarGroup> <SidebarSpace /> <SidebarDivider /> <SidebarGroup label="Settings" icon={<UserSettingsSignInAvatar />} to="/settings" > <SidebarSettings /> </SidebarGroup> </Sidebar> {children} </SidebarPage> ); ``` Or you can create a "Instances" menu and add "Tenants" as a submenu: ```diff ... + import BusinessIcon from '@material-ui/icons/Business'; + import { Imcluster } from "react-icons/im"; ... export const Root = ({ children }: PropsWithChildren<{}>) => ( <SidebarPage> <Sidebar> <SidebarLogo /> <SidebarGroup label="Search" icon={<SearchIcon />} to="/search"> <SidebarSearchModal /> </SidebarGroup> <SidebarDivider /> <SidebarGroup label="Menu" icon={<MenuIcon />}> <SidebarItem icon={HomeIcon} to="catalog" text="Home" /> <SidebarItem icon={ExtensionIcon} to="api-docs" text="APIs" /> <SidebarItem icon={LibraryBooks} to="docs" text="Docs" /> + <SidebarItem icon={BusinessIcon} text="Instances"> + <SidebarSubmenu title=""> + <SidebarDivider /> + <SidebarSubmenuItem + title="Tenants" + to="tenant-explorer" + icon={Imcluster} + /> + + </SidebarSubmenu> + </SidebarItem> <SidebarItem icon={CreateComponentIcon} to="create" text="Create..." /> <SidebarDivider /> <SidebarScrollWrapper> <SidebarItem icon={MapIcon} to="tech-radar" text="Tech Radar" /> </SidebarScrollWrapper> </SidebarGroup> <SidebarSpace /> <SidebarDivider /> <SidebarGroup label="Settings" icon={<UserSettingsSignInAvatar />} to="/settings" > <SidebarSettings /> </SidebarGroup> </Sidebar> {children} </SidebarPage> ); ```