SaasAble Documentation
Admin - V1.2.0
Admin - V1.2.0
  • Getting started
    • Prerequisites
    • Setup
    • Deployment
  • Development
    • Guards
      • Auth Guard
      • Guest Guard
      • Role Guard
    • Folder Structure
    • Routing
    • Menu
    • Env Variables
    • API Calls
    • Dependencies
    • Auth
      • Supabase
      • AWS
    • How to
      • Change Logo
      • Skip Login
  • Theming
    • Color
    • Typography
    • Icons
  • Global
    • Config
    • Styles
    • Component Overrides
Powered by GitBook
On this page
  • Adding or Removing Menu Items
  • Changing Icons
  • Managing Roles
  • Translation Keys
  1. Development

Menu

This guide provides an overview of how to use, manage, and customize the menu configuration in your project.

The menu is configured at src/menu/index.tsx

Each menu item supports properties like id, title, icon, url, type, and roles for fine-grained control.

Adding or Removing Menu Items

  • Adding a New Menu Group 1. Create a new file (e.g., newGroup.tsx) in the same folder as manage.tsx and other.tsx. 2. Define the menu group structure as a NavItemType object:

    src/menu/newGroup.tsx
    import { FormattedMessage } from 'react-intl';
    
    const newGroup: NavItemType = {
      id: 'group-new',
      title: <FormattedMessage id="newGroup" />,
      icon: 'IconNew',
      type: 'group',
      children: [
        {
          id: 'new-item',
          title: <FormattedMessage id="newItem" />,
          type: 'item',
          url: '/new-item',
          icon: 'IconLink'
        }
      ]
    };
    
    export default newGroup;

    3. Import and add the new group in index.tsx:

    src/menu/index.tsx
    import newGroup from './newGroup';
    
    const menuItems: { items: NavItemType[] } = {
      items: [manage, other, newGroup]
    };
    
    export default menuItems;

  • Removing an Existing Menu Group 1. Open index.tsx. 2. Remove the corresponding group from the items array:

    src/menu/index.tsx
    const menuItems: { items: NavItemType[] } = {
      items: [manage] // Removed "other" menu group
    };

  • Adding a New Menu Item 1. Open the desired group file (e.g., manage.tsx). 2. Add a new item to the children array:

    {
      id: 'reports',
      title: <FormattedMessage id="reports" />,
      type: 'item',
      url: '/reports',
      icon: 'IconReport'
    }

  • Removing a Menu Item 1. Open the desired group file. 2. Remove the specific item from the children array.

Changing Icons

To change an icon for a menu item: 1. Identify the icon property of the menu item. 2. Replace it with the desired icon name:

icon: 'IconNewIcon'

Ensure the new icon exists in your icon library.

Managing Roles

  • Adding Roles 1. Open the file where the menu item is defined. 2. Add the desired roles to the roles array:

    roles: [AuthRole.ADMIN, AuthRole.USER]

  • Removing Roles 1. Remove the role from the roles array

    roles: [AuthRole.ADMIN] // Removed AuthRole.USER

  • Making a Menu Item Public To make a menu item accessible to all users, remove the roles property:

    {
      id: 'dashboard',
      title: <FormattedMessage id="dashboard" />,
      type: 'item',
      url: '/dashboard/analytics',
      icon: 'IconLayoutGrid'
      // No roles property here
    }

Translation Keys

Menu titles use the FormattedMessage component for internationalization. Internationalization is set up in the src/utils/locales folder, which currently contains JSON files for four languages. 1. en.json English 2. fr.json French 3. ro.json Romanian 4. zh.json Chinese (Simplified)

  • Adding a New Translation Key 1. Add the key to your translation files:

    {
      "newGroup": "New Group",
      "newItem": "New Item"
    }

    2. Use the key in the menu definition:

    title: <FormattedMessage id="newGroup" />
PreviousRoutingNextEnv Variables

The roles property controls which user roles can access specific menu items. for more details refer .

documentation of role guard