react-pro-sidebar
v2.0.0-alpha.0
Published
high level and customizable side navigation
Maintainers
Readme
React Pro Sidebar
The ultimate sidebar component for React applications. Highly customizable, fully responsive, and effortless to integrate into any dashboard.
Documentation
Full documentation, guides and live examples are available at react-pro-sidebar.netlify.app.
Old versions
Live Preview
Screenshot

Installation
yarn
yarn add react-pro-sidebarnpm
npm install react-pro-sidebarRequirements: React >= 18 (React 19 supported).
reactandreact-domare peer dependencies.
Migrating from v1
v2 removes the legacy hook API (useProSidebar, ProSidebarProvider), the
defaultCollapsed prop and the breakPoint="always" value, and requires
React 18+. See the migration guide for upgrade steps.
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 { NavLink } from 'react-router-dom';
<Sidebar>
<Menu
menuItemStyles={{
button: {
// NavLink adds the active class automatically,
// so we can use it to style the active menu item
[`&.active`]: {
backgroundColor: '#13395e',
color: '#b6c8d9',
},
},
}}
>
<MenuItem component={<NavLink to="/documentation" />}> Documentation</MenuItem>
<MenuItem component={<NavLink to="/calendar" />}> Calendar</MenuItem>
<MenuItem component={<NavLink 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
License
MIT © Mohamed Azouaoui
