react-pro-sidebar

1.1.0last stable release 1 year ago
Complexity Score
Low
Open Issues
5
Dependent Projects
10
Weekly Downloadsglobal
54,786

License

  • MIT
    • Yesattribution
    • Permissivelinking
    • Permissivedistribution
    • Permissivemodification
    • Nopatent grant
    • Yesprivate use
    • Permissivesublicensing
    • Notrademark grant

Downloads

Readme

React Pro Sidebar

React Pro Sidebar provides a set of components for creating high level and customizable side navigation

Old versions

  • v0.x

Live Preview

  • Demo

  • Storybook

Screenshot

Installation

yarn

yarn add react-pro-sidebar

npm

npm install react-pro-sidebar

Usage

import { Sidebar, Menu, MenuItem, SubMenu } from 'react-pro-sidebar';

<Sidebar>
  <Menu>
    <SubMenu label="Charts">
      <MenuItem> Pie charts </MenuItem>
      <MenuItem> Line charts </MenuItem>
    </SubMenu>
    <MenuItem> Documentation </MenuItem>
    <MenuItem> Calendar </MenuItem>
  </Menu>
</Sidebar>;

Using React Router

You can make use of the component prop to integrate React Router link

Example Usage

import { Sidebar, Menu, MenuItem } from 'react-pro-sidebar';
import { Link } from 'react-router-dom';

<Sidebar>
  <Menu
    menuItemStyles={{
      button: {
        // the active class will be added automatically by react router
        // so we can use it to style the active menu item
        [`&.active`]: {
          backgroundColor: '#13395e',
          color: '#b6c8d9',
        },
      },
    }}
  >
    <MenuItem component={<Link to="/documentation" />}> Documentation</MenuItem>
    <MenuItem component={<Link to="/calendar" />}> Calendar</MenuItem>
    <MenuItem component={<Link to="/e-commerce" />}> E-commerce</MenuItem>
  </Menu>
</Sidebar>;

Customization

We provide for each component rootStyles prop that can be used to customize the styles

its recommended using utility classes (sidebarClasses, menuClasses) for selecting target child nodes

Example usage

<Sidebar
  rootStyles={{
    [`.${sidebarClasses.container}`]: {
      backgroundColor: 'red',
    },
  }}
>
  // ...
</Sidebar>

For Menu component, in addition to rootStyles you can also use menuItemStyles prop for customizing all MenuItem & SubMenu components and their children

Type definition

interface MenuItemStyles {
  root?: ElementStyles;
  button?: ElementStyles;
  label?: ElementStyles;
  prefix?: ElementStyles;
  suffix?: ElementStyles;
  icon?: ElementStyles;
  subMenuContent?: ElementStyles;
  SubMenuExpandIcon?: ElementStyles;
}

type ElementStyles = CSSObject | ((params: MenuItemStylesParams) => CSSObject | undefined);

Example usage

<Sidebar>
  <Menu
    menuItemStyles={{
      button: ({ level, active, disabled }) => {
        // only apply styles on first level elements of the tree
        if (level === 0)
          return {
            color: disabled ? '#f5d9ff' : '#d359ff',
            backgroundColor: active ? '#eecef9' : undefined,
          };
      },
    }}
  >
    //...
  </Menu>
</Sidebar>

API

Component Prop Type Description Default Sidebar defaultCollapsed boolean Initial collapsed status false collapsed boolean Sidebar collapsed state false toggled boolean Sidebar toggled state false width number | string Width of the sidebar 270px collapsedWidth number | string Width of the sidebar on collapsed state 80px backgroundColor string Set background color for sidebar rgb(249, 249, 249, 0.7) image string Url of the image to use in the sidebar background, need to apply transparency to background color - breakPoint xs | sm | md | lg | xl | xxl | all Set when the sidebar should trigger responsiveness behavior - customBreakPoint string Set custom breakpoint value, this will override breakPoint prop - transitionDuration number Duration for the transition in milliseconds to be used in collapse and toggle behavior 300 rtl boolean RTL direction false rootStyles CSSObject Apply styles to sidebar element - onBackdropClick () => void Callback function to be called when backdrop is clicked - Menu closeOnClick boolean If true and sidebar is in collapsed state, submenu popper will automatically close on MenuItem click false menuItemStyles MenuItemStyles Apply styles to MenuItem and SubMenu components and their children - renderExpandIcon (params: { level: number; collapsed: boolean; disabled: boolean; active: boolean; open: boolean; }) => React.ReactNode Render method for customizing submenu expand icon - transitionDuration number Transition duration in milliseconds to use when sliding submenu content 300 rootStyles CSSObject Apply styles from Menu root element - MenuItem icon ReactNode Icon for the menu item - active boolean If true, the component is active false disabled boolean If true, the component is disabled - prefix ReactNode Add a prefix to the menuItem - suffix ReactNode Add a suffix to the menuItem - component string | ReactElement A component used for menu button node, can be string (ex: 'div') or a component - rootStyles CSSObject Apply styles to MenuItem element - SubMenu label string | ReactNode Label for the submenu - icon ReactNode Icon for submenu - defaultOpen boolean Set if the submenu is open by default false open boolean Set open value if you want to control the state - active boolean If true, the component is active false disabled boolean If true, the component is disabled - prefix ReactNode Add a prefix to the submenu - suffix ReactNode Add a suffix to the submenu - onOpenChange (open: boolean) => void Callback function called when submenu state changes - component string | React.ReactElement A component used for menu button node, can be string (ex: 'div') or a component - rootStyles CSSObject Apply styles to SubMenu element -

License

MIT © Mohamed Azouaoui

Dependencies

No runtime dependency information found for this package.

CVE IssuesActive
0
Scorecards Score
2.60
Test Coverage
No Data
Follows Semver
Yes
Github Stars
1,772
Dependenciestotal
0
DependenciesOutdated
0
DependenciesDeprecated
0
Threat Modelling
No
Repo Audits
No

Learn how to distribute react-pro-sidebar in your own private NPM registry

npm config set registry  https://npm.cloudsmith.com/owner/repo
Processing...
Done
npm install react-pro-sidebar
Processing...
Done

31 Releases

NPM on Cloudsmith

Getting started with NPM on Cloudsmith is fast and easy.