BasicLayout.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import React, { ReactNode } from 'react';
  2. import dynamic from 'next/dynamic';
  3. import { GrowiNavbar } from '../Navbar/GrowiNavbar';
  4. import Sidebar from '../Sidebar';
  5. import { RawLayout } from './RawLayout';
  6. // const HotkeysManager = dynamic(() => import('../client/js/components/Hotkeys/HotkeysManager'), { ssr: false });
  7. // const PageCreateModal = dynamic(() => import('../client/js/components/PageCreateModal'), { ssr: false });
  8. const GrowiNavbarBottom = dynamic(() => import('../Navbar/GrowiNavbarBottom').then(mod => mod.GrowiNavbarBottom), { ssr: false });
  9. const ShortcutsModal = dynamic(() => import('../ShortcutsModal'), { ssr: false });
  10. const SystemVersion = dynamic(() => import('../SystemVersion'), { ssr: false });
  11. // Page modals
  12. const PageCreateModal = dynamic(() => import('../PageCreateModal'), { ssr: false });
  13. const PageDuplicateModal = dynamic(() => import('../PageDuplicateModal'), { ssr: false });
  14. const PageDeleteModal = dynamic(() => import('../PageDeleteModal'), { ssr: false });
  15. const PageRenameModal = dynamic(() => import('../PageRenameModal'), { ssr: false });
  16. const PagePresentationModal = dynamic(() => import('../PagePresentationModal'), { ssr: false });
  17. type Props = {
  18. title: string
  19. className?: string,
  20. expandContainer?: boolean,
  21. children?: ReactNode
  22. }
  23. export const BasicLayout = ({
  24. children, title, className, expandContainer,
  25. }: Props): JSX.Element => {
  26. const myClassName = `${className ?? ''} ${expandContainer ? 'growi-layout-fluid' : ''}`;
  27. return (
  28. <RawLayout title={title} className={myClassName}>
  29. <GrowiNavbar />
  30. <div className="page-wrapper d-flex d-print-block">
  31. <div className="grw-sidebar-wrapper">
  32. <Sidebar />
  33. </div>
  34. <div className="flex-fill mw-0">
  35. {children}
  36. </div>
  37. </div>
  38. <GrowiNavbarBottom />
  39. <PageCreateModal />
  40. <PageDuplicateModal />
  41. <PageDeleteModal />
  42. <PageRenameModal />
  43. <PagePresentationModal />
  44. {/* <HotkeysManager /> */}
  45. <ShortcutsModal />
  46. <SystemVersion showShortcutsButton />
  47. </RawLayout>
  48. );
  49. };