@vertisanpro/flowbite-react
Version:
Non-Official React components built for Flowbite and Tailwind CSS
28 lines (27 loc) • 1.44 kB
JavaScript
'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,
});