AdminLayout.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import React, { ReactNode } from 'react';
  2. import dynamic from 'next/dynamic';
  3. import { AdminNavigation } from '../Admin/Common/AdminNavigation';
  4. import { GrowiNavbar } from '../Navbar/GrowiNavbar';
  5. import { RawLayout } from './RawLayout';
  6. import styles from './Admin.module.scss';
  7. const PageCreateModal = dynamic(() => import('../PageCreateModal'), { ssr: false });
  8. const SystemVersion = dynamic(() => import('../SystemVersion'), { ssr: false });
  9. const HotkeysManager = dynamic(() => import('../Hotkeys/HotkeysManager'), { ssr: false });
  10. type Props = {
  11. componentTitle?: string
  12. children?: ReactNode
  13. }
  14. const AdminLayout = ({
  15. children, componentTitle,
  16. }: Props): JSX.Element => {
  17. return (
  18. <RawLayout>
  19. <div className={`admin-page ${styles['admin-page']}`}>
  20. <GrowiNavbar isGlobalSearchHidden={true} />
  21. <header className="py-0 container-fluid">
  22. <h1 className="title px-3">{componentTitle}</h1>
  23. </header>
  24. <div id="main" className="main">
  25. <div className="container-fluid">
  26. <div className="row">
  27. <div className="col-lg-3">
  28. <AdminNavigation />
  29. </div>
  30. <div className="col-lg-9">
  31. {children}
  32. </div>
  33. </div>
  34. </div>
  35. </div>
  36. <PageCreateModal />
  37. <SystemVersion />
  38. </div>
  39. <HotkeysManager />
  40. </RawLayout>
  41. );
  42. };
  43. export default AdminLayout;