Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
react-pro-sidebar
Advanced tools
React Pro Sidebar provides a set of components for creating high level and customizable side navigation
yarn add react-pro-sidebar
npm install react-pro-sidebar
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>;
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>;
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>
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 | - |
MIT © Mohamed Azouaoui
FAQs
high level and customizable side navigation
The npm package react-pro-sidebar receives a total of 41,514 weekly downloads. As such, react-pro-sidebar popularity was classified as popular.
We found that react-pro-sidebar demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.