import { ReactNode, useEffect } from 'react';
import classNames from 'classnames';
import { Composite, useCompositeState } from 'reakit/Composite';
import { Dialog, DialogBackdrop, useDialogState } from 'reakit/Dialog';
import { SidenavCompositeContext } from './context';
import { SidenavItem } from './item';
import { SidenavList } from './list';
import { SidenavListContainer } from './listcontainer';
import { SidenavTitle } from './title';
import { SidenavSub } from './sub';
import { SidenavSubItem } from './subitem';
import { SidenavSubList } from './sublist';
import { SidenavSubToggler } from './subtoggler';
interface SidenavInterface {
open?: boolean;
handleClose?: () => void;
children?: ReactNode;
className?: string;
}
export function Sidenav({
open = true,
handleClose,
children,
className,
}: SidenavInterface) {
const dialog = useDialogState({
animated: true,
visible: open,
modal: false,
});
const composite = useCompositeState({ orientation: 'vertical' });
useEffect(() => {
dialog.setVisible(open);
}, [dialog, open]);
return (
<>
handleClose?.()}
/>
>
);
}
Sidenav.defaultProps = {
open: true,
handleClose: () => {},
children: null,
className: '',
};
Sidenav.Item = SidenavItem;
Sidenav.List = SidenavList;
Sidenav.ListContainer = SidenavListContainer;
Sidenav.Sub = SidenavSub;
Sidenav.SubItem = SidenavSubItem;
Sidenav.SubList = SidenavSubList;
Sidenav.SubToggler = SidenavSubToggler;
Sidenav.Title = SidenavTitle;