import React, { useContext } from 'react'; import { Stack, Icon, IconButton, } from '@openedx/paragon'; import { Close } from '@openedx/paragon/icons'; import { useIntl } from '@edx/frontend-platform/i18n'; import messages from '../messages'; import { AddContentContainer, AddContentHeader } from '../add-content'; import { LibraryContext, SidebarBodyComponentId } from '../common/context'; import { LibraryInfo, LibraryInfoHeader } from '../library-info'; import { ContentLibrary } from '../data/api'; type LibrarySidebarProps = { library: ContentLibrary, }; /** * Sidebar container for library pages. * * It's designed to "squash" the page when open. * Uses `sidebarBodyComponent` of the `store` to * choose which component is rendered. * You can add more components in `bodyComponentMap`. * Use the slice actions to open and close this sidebar. */ const LibrarySidebar = ({ library }: LibrarySidebarProps) => { const intl = useIntl(); const { sidebarBodyComponent, closeLibrarySidebar } = useContext(LibraryContext); const bodyComponentMap = { [SidebarBodyComponentId.AddContent]: , [SidebarBodyComponentId.Info]: , unknown: null, }; const headerComponentMap = { 'add-content': , info: , unknown: null, }; const buildBody = () : React.ReactNode | null => bodyComponentMap[sidebarBodyComponent || 'unknown']; const buildHeader = (): React.ReactNode | null => headerComponentMap[sidebarBodyComponent || 'unknown']; return ( {buildHeader()}
{buildBody()}
); }; export default LibrarySidebar;