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;