AdminLayout.tsx 1.4 KB

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