UNPKG

@vertisanpro/flowbite-react

Version:

Non-Official React components built for Flowbite and Tailwind CSS

28 lines (27 loc) 1.44 kB
'use client'; import { twMerge } from '@vertisanpro/tailwind-merge'; import React from 'react'; import { mergeDeep } from '../../helpers/merge-deep'; import { getTheme } from '../../theme-store'; import { SidebarCTA } from './SidebarCTA'; import { SidebarCollapse } from './SidebarCollapse'; import { SidebarContext } from './SidebarContext'; import { SidebarItem } from './SidebarItem'; import { SidebarItemGroup } from './SidebarItemGroup'; import { SidebarItems } from './SidebarItems'; import { SidebarLogo } from './SidebarLogo'; const SidebarComponent = ({ children, as: Component = 'nav', collapseBehavior = 'collapse', collapsed: isCollapsed = false, theme: customTheme = {}, className, ...props }) => { const theme = mergeDeep(getTheme().sidebar, customTheme); return (React.createElement(SidebarContext.Provider, { value: { theme, isCollapsed } }, React.createElement(Component, { "aria-label": "Sidebar", hidden: isCollapsed && collapseBehavior === 'hide', className: twMerge(theme.root.base, theme.root.collapsed[isCollapsed ? 'on' : 'off'], className), ...props }, React.createElement("div", { className: theme.root.inner }, children)))); }; SidebarComponent.displayName = 'Sidebar'; export const Sidebar = Object.assign(SidebarComponent, { Collapse: SidebarCollapse, CTA: SidebarCTA, Item: SidebarItem, Items: SidebarItems, ItemGroup: SidebarItemGroup, Logo: SidebarLogo, });