React Sidebar Component
Other frameworks
CoreUI components are available as native Angular, Bootstrap (Vanilla JS), and Vue components. To learn more please visit the following pages.
Supported content#
Sidebar come with built-in support for a handful of sub-components. Choose from the following as needed:
<CSidebarHeader>
for optional header.<CSidebarBrand>
for your company, product, or project name.<CSidebarNav>
for a full-height and lightweight navigation (including support for dropdowns).<CSidebarFooter>
for optional footer.<CSidebarToggler>
for use with our minimizer plugin.
Examples#
<CSidebar> <CSidebarBrand>Sidebar Brand</CSidebarBrand> <CSidebarNav> <CNavTitle>Nav Title</CNavTitle> <CNavItem href="#"> <CIcon customClassName="nav-icon" icon={cilSpeedometer} /> Nav item </CNavItem> <CNavItem href="#"> <CIcon customClassName="nav-icon" icon={cilSpeedometer} /> With badge <CBadge color="primary ms-auto">NEW</CBadge> </CNavItem> <CNavGroup toggler="Nav dropdown"> <CNavItem href="#"> <CIcon customClassName="nav-icon" icon={cilPuzzle} /> Nav dropdown item </CNavItem> <CNavItem href="#"> <CIcon customClassName="nav-icon" icon={cilPuzzle} /> Nav dropdown item </CNavItem> </CNavGroup> </CSidebarNav> <CSidebarToggler /></CSidebar>
Customizing#
CSS variables#
React sidebars use local CSS variables on .sidebar
and .sidebar-backdrop
for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.
--cui-sidebar-width: #{$sidebar-width};--cui-sidebar-bg: #{$sidebar-bg};--cui-sidebar-padding-x: #{$sidebar-padding-x};--cui-sidebar-padding-y: #{$sidebar-padding-y};--cui-sidebar-color: #{$sidebar-color};--cui-sidebar-border-width: #{$sidebar-border-width};--cui-sidebar-border-color: #{$sidebar-border-color};--cui-sidebar-brand-color: #{$sidebar-brand-color};--cui-sidebar-brand-height: #{$sidebar-brand-height};--cui-sidebar-brand-bg: #{$sidebar-brand-bg};--cui-sidebar-close-button-width: #{$sidebar-close-button-width};--cui-sidebar-close-button-height: #{$sidebar-close-button-height};--cui-sidebar-header-height: #{$sidebar-header-height};--cui-sidebar-header-bg: #{$sidebar-header-bg};--cui-sidebar-header-padding-x: #{$sidebar-header-padding-x};--cui-sidebar-header-padding-y: #{$sidebar-header-padding-y};--cui-sidebar-footer-bg: #{$sidebar-footer-bg};--cui-sidebar-footer-height: #{$sidebar-footer-height};--cui-sidebar-footer-padding-x: #{$sidebar-footer-padding-x};--cui-sidebar-footer-padding-y: #{$sidebar-footer-padding-y};--cui-sidebar-toggler-bg: #{$sidebar-toggler-bg};--cui-sidebar-toggler-height: #{$sidebar-toggler-height};--cui-sidebar-toggler-indicator: #{escape-svg($sidebar-toggler-indicator-icon)};--cui-sidebar-toggler-indicator-width: #{$sidebar-toggler-indicator-width};--cui-sidebar-toggler-indicator-height: #{$sidebar-toggler-indicator-height};--cui-sidebar-toggler-hover-bg: #{$sidebar-toggler-hover-bg};--cui-sidebar-toggler-indicator-hover: #{escape-svg($sidebar-toggler-indicator-hover-icon)};
--cui-sidebar-narrow-width: #{$sidebar-narrow-width};
--cui-sidebar-nav-title-padding-x: #{$sidebar-nav-title-padding-x};--cui-sidebar-nav-title-padding-y: #{$sidebar-nav-title-padding-y};--cui-sidebar-nav-title-margin-top: #{$sidebar-nav-title-margin-top};--cui-sidebar-nav-title-color: #{$sidebar-nav-title-color};--cui-sidebar-nav-link-padding-x: #{$sidebar-nav-link-padding-x};--cui-sidebar-nav-link-padding-y: #{$sidebar-nav-link-padding-y};--cui-sidebar-nav-link-color: #{$sidebar-nav-link-color};--cui-sidebar-nav-link-bg: #{$sidebar-nav-link-bg};--cui-sidebar-nav-link-border-color: #{$sidebar-nav-link-border-color};--cui-sidebar-nav-link-border: #{$sidebar-nav-link-border-width} solid var(--cui-sidebar-nav-link-border-color);--cui-sidebar-nav-link-border-radius: #{$sidebar-nav-link-border-radius};--cui-sidebar-nav-link-active-color: #{$sidebar-nav-link-active-color};--cui-sidebar-nav-link-active-bg: #{$sidebar-nav-link-active-bg};--cui-sidebar-nav-link-active-icon-color: #{$sidebar-nav-link-active-icon-color};--cui-sidebar-nav-link-disabled-color: #{$sidebar-nav-link-disabled-color};--cui-sidebar-nav-link-disabled-icon-color: #{$sidebar-nav-link-disabled-icon-color};--cui-sidebar-nav-link-hover-color: #{$sidebar-nav-link-hover-color};--cui-sidebar-nav-link-hover-bg: #{$sidebar-nav-link-hover-bg};--cui-sidebar-nav-link-hover-icon-color: #{$sidebar-nav-link-hover-icon-color};--cui-sidebar-nav-icon-width: #{$sidebar-nav-icon-width};--cui-sidebar-nav-icon-height: #{$sidebar-nav-icon-height};--cui-sidebar-nav-icon-font-size: #{$sidebar-nav-icon-font-size};--cui-sidebar-nav-link-icon-color: #{$sidebar-nav-link-icon-color};--cui-sidebar-nav-group-bg: #{$sidebar-nav-group-bg};--cui-sidebar-nav-group-items-padding-y: #{$sidebar-nav-group-items-padding-y};--cui-sidebar-nav-group-items-padding-x: #{$sidebar-nav-group-items-padding-x};--cui-sidebar-nav-group-indicator: #{escape-svg($sidebar-nav-group-indicator-icon)};--cui-sidebar-nav-group-indicator-hover: #{escape-svg($sidebar-nav-group-indicator-hover-icon)};--cui-sidebar-nav-group-toggle-show-color: #{$sidebar-nav-group-toggle-show-color};
--cui-backdrop-zindex: #{$zindex-sidebar-backdrop};--cui-backdrop-bg: #{$sidebar-backdrop-bg};--cui-backdrop-opacity: #{$sidebar-backdrop-opacity};
How to use CSS variables#
const vars = { '--my-css-var': 10, '--my-another-css-var': "red" }return <CSidebar style={vars}>...</CSidebar>
SASS variables#
$sidebar-width: 16rem !default;$sidebar-widths: ( sm: 12rem, lg: 20rem, xl: 24rem) !default;$sidebar-padding-y: 0 !default;$sidebar-padding-x: 0 !default;$sidebar-color: $high-emphasis-inverse !default;$sidebar-bg: $gray-base !default;$sidebar-border-width: 0 !default;$sidebar-border-color: transparent !default;$sidebar-transition: margin-left .15s, margin-right .15s, box-shadow .075s, transform .15s, width .15s, z-index 0s ease .15s !default;
$sidebar-close-button-width: 2rem !default;$sidebar-close-button-height: 4rem !default;
$sidebar-brand-height: 4rem !default;$sidebar-brand-color: $high-emphasis-inverse !default;$sidebar-brand-bg: rgba($black, .2) !default;
$sidebar-header-height: 4rem !default;$sidebar-header-padding-y: .75rem !default;$sidebar-header-padding-x: 1rem !default;$sidebar-header-bg: rgba($black, .2) !default;$sidebar-header-height-transition: height .15s, padding .15s !default;
$sidebar-narrow-width: 4rem !default;
$sidebar-backdrop-bg: $black !default;$sidebar-backdrop-opacity: .5 !default;
$sidebar-nav-title-padding-y: .75rem !default;$sidebar-nav-title-padding-x: 1rem !default;$sidebar-nav-title-margin-top: 1rem !default;$sidebar-nav-title-color: $medium-emphasis-inverse !default;$sidebar-nav-title-transition: height .15s, margin .15s !default;
$sidebar-nav-link-padding-y: .8445rem !default;$sidebar-nav-link-padding-x: 1rem !default;$sidebar-nav-link-color: $medium-emphasis-inverse !default;$sidebar-nav-link-bg: transparent !default;$sidebar-nav-link-border-width: 0 !default;$sidebar-nav-link-border-color: transparent !default;$sidebar-nav-link-border-radius: 0 !default;$sidebar-nav-link-transition: background .15s ease, color .15s ease !default;$sidebar-nav-link-icon-color: $medium-emphasis-inverse !default;
$sidebar-nav-link-hover-color: $high-emphasis-inverse !default;$sidebar-nav-link-hover-bg: rgba($white, .05) !default;$sidebar-nav-link-hover-icon-color: $high-emphasis-inverse !default;
$sidebar-nav-link-active-color: $high-emphasis-inverse !default;$sidebar-nav-link-active-bg: rgba($white, .05) !default;$sidebar-nav-link-active-icon-color: $high-emphasis-inverse !default;
$sidebar-nav-link-disabled-color: $disabled-inverse !default;$sidebar-nav-link-disabled-icon-color: $sidebar-nav-link-icon-color !default;
$sidebar-nav-icon-width: 4rem !default;$sidebar-nav-icon-height: 1.25rem !default;$sidebar-nav-icon-font-size: $sidebar-nav-icon-height !default;
$sidebar-nav-group-bg: rgba(0, 0, 0, .2) !default;$sidebar-nav-group-transition: background .15s ease-in-out !default;$sidebar-nav-group-toggle-show-color: $sidebar-nav-link-color !default;
$sidebar-nav-group-items-padding-y: 0 !default;$sidebar-nav-group-items-padding-x: 0 !default;$sidebar-nav-group-items-transition: height .15s ease !default;
$sidebar-nav-group-indicator-color: $medium-emphasis-inverse !default;$sidebar-nav-group-indicator-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$sidebar-nav-group-indicator-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;$sidebar-nav-group-indicator-hover-color: $sidebar-nav-link-hover-color !default;$sidebar-nav-group-indicator-hover-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$sidebar-nav-group-indicator-hover-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;$sidebar-nav-group-indicator-transition: transform .15s !default;
$sidebar-footer-height: auto !default;$sidebar-footer-padding-y: .75rem !default;$sidebar-footer-padding-x: 1rem !default;$sidebar-footer-bg: rgba($black, .2) !default;$sidebar-footer-height-transition: height .15s, padding .15s !default;
$sidebar-toggler-height: 3rem !default;$sidebar-toggler-bg: rgba($black, .2) !default;$sidebar-toggler-transition: transform .15s !default;
$sidebar-toggler-indicator-width: 4rem !default;$sidebar-toggler-indicator-height: 3rem !default;$sidebar-toggler-indicator-color: $disabled-inverse !default;$sidebar-toggler-indicator-icon: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-toggler-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E") !default;$sidebar-toggler-hover-bg: rgba(0, 0, 0, .3) !default;
$sidebar-toggler-indicator-hover-color: $sidebar-nav-link-hover-color !default;$sidebar-toggler-indicator-hover-icon: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-toggler-indicator-hover-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E") !default;
$sidebar-light-color: $body-color !default;$sidebar-light-bg: $white !default;$sidebar-light-border-width: 0 !default;$sidebar-light-border-color: transparent !default;
$sidebar-light-brand-color: $white !default;$sidebar-light-brand-bg: $primary !default;
$sidebar-light-header-bg: rgba($black, .2) !default;
$sidebar-light-nav-title-color: $medium-emphasis !default;
$sidebar-light-nav-link-color: $medium-emphasis !default;$sidebar-light-nav-link-bg: transparent !default;$sidebar-light-nav-link-icon-color: $medium-emphasis !default;
$sidebar-light-nav-link-hover-color: $high-emphasis !default;$sidebar-light-nav-link-hover-bg: theme-color("primary") !default;$sidebar-light-nav-link-hover-icon-color: $high-emphasis !default;
$sidebar-light-nav-link-active-color: $high-emphasis !default;$sidebar-light-nav-link-active-bg: rgba($white, .05) !default;$sidebar-light-nav-link-active-icon-color: $high-emphasis !default;
$sidebar-light-nav-link-disabled-color: $disabled !default;$sidebar-light-nav-link-disabled-icon-color: $sidebar-light-nav-link-icon-color !default;
$sidebar-light-nav-group-bg: rgba(0, 0, 0, .05) !default;$sidebar-light-nav-group-toggle-show-color: $sidebar-light-nav-link-color !default;
$sidebar-light-nav-group-indicator-color: $medium-emphasis !default;$sidebar-light-nav-group-indicator-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$sidebar-light-nav-group-indicator-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;$sidebar-light-nav-group-indicator-hover-color: $sidebar-light-nav-link-hover-color !default;$sidebar-light-nav-group-indicator-hover-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$sidebar-light-nav-group-indicator-hover-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
$sidebar-light-footer-bg: rgba($black, .1) !default;
$sidebar-light-toggler-bg: rgba($black, .1) !default;$sidebar-light-toggler-hover-bg: rgba(0, 0, 0, .2) !default;$sidebar-light-toggler-indicator-color: $medium-emphasis !default;$sidebar-light-toggler-indicator-icon: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-light-toggler-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E") !default;$sidebar-light-toggler-indicator-hover-color: $sidebar-light-nav-link-hover-color !default;$sidebar-light-toggler-indicator-hover-icon: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-light-toggler-indicator-hover-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E") !default;
API#
CSidebar#
import { CSidebar } from '@coreui/react'// orimport CSidebar from '@coreui/react/src/components/sidebar/CSidebar'
Property | Description | Type | Default |
---|---|---|---|
className | A string of all className you want applied to the component. | string | - |
colorScheme | Sets if the color of text should be colored for a light or dark dark background. | 'dark' | 'light' | - |
narrow | Make sidebar narrow. | boolean | - |
onHide | Callback fired when the component requests to be hidden. | () => void | - |
onShow | Callback fired when the component requests to be shown. | () => void | - |
onVisibleChange | Event emitted after visibility of component changed. | (visible: boolean) => void | - |
overlaid | Set sidebar to overlaid variant. | boolean | - |
placement | Components placement, there’s no default placement. | 'start' | 'end' | - |
position | Place sidebar in non-static positions. | 'fixed' | 'sticky' | - |
size | Size the component small, large, or extra large. | 'sm' | 'lg' | 'xl' | - |
unfoldable | Expand narrowed sidebar on hover. | boolean | - |
visible | Toggle the visibility of sidebar component. | boolean | - |
CSidebarBrand#
import { CSidebarBrand } from '@coreui/react'// orimport CSidebarBrand from '@coreui/react/src/components/sidebar/CSidebarBrand'
Property | Description | Type | Default |
---|---|---|---|
className | A string of all className you want applied to the component. | string | - |
CSidebarFooter#
import { CSidebarFooter } from '@coreui/react'// orimport CSidebarFooter from '@coreui/react/src/components/sidebar/CSidebarFooter'
Property | Description | Type | Default |
---|---|---|---|
className | A string of all className you want applied to the component. | string | - |
CSidebarHeader#
import { CSidebarHeader } from '@coreui/react'// orimport CSidebarHeader from '@coreui/react/src/components/sidebar/CSidebarHeader'
Property | Description | Type | Default |
---|---|---|---|
className | A string of all className you want applied to the component. | string | - |
CSidebarNav#
import { CSidebarNav } from '@coreui/react'// orimport CSidebarNav from '@coreui/react/src/components/sidebar/CSidebarNav'
Property | Description | Type | Default |
---|---|---|---|
className | A string of all className you want applied to the component. | string | - |
CSidebarToggler#
import { CSidebarToggler } from '@coreui/react'// orimport CSidebarToggler from '@coreui/react/src/components/sidebar/CSidebarToggler'
Property | Description | Type | Default |
---|---|---|---|
className | A string of all className you want applied to the component. | string | - |
On this page