BasicLayout.tsx 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import type { ReactNode } from 'react';
  2. import React from 'react';
  3. import dynamic from 'next/dynamic';
  4. import { RawLayout } from './RawLayout';
  5. import styles from './BasicLayout.module.scss';
  6. const AiAssistantSidebar = dynamic(
  7. () => import('~/features/openai/client/components/AiAssistant/AiAssistantSidebar/AiAssistantSidebar')
  8. .then(mod => mod.AiAssistantSidebar), { ssr: false },
  9. );
  10. const moduleClass = styles['grw-basic-layout'] ?? '';
  11. const Sidebar = dynamic(() => import('~/client/components/Sidebar').then(mod => mod.Sidebar), { ssr: false });
  12. const AlertSiteUrlUndefined = dynamic(() => import('~/client/components/AlertSiteUrlUndefined').then(mod => mod.AlertSiteUrlUndefined), { ssr: false });
  13. const DeleteAttachmentModal = dynamic(
  14. () => import('~/client/components/PageAttachment/DeleteAttachmentModal').then(mod => mod.DeleteAttachmentModal), { ssr: false },
  15. );
  16. const HotkeysManager = dynamic(() => import('~/client/components/Hotkeys/HotkeysManager'), { ssr: false });
  17. const GrowiNavbarBottom = dynamic(() => import('~/client/components/Navbar/GrowiNavbarBottom').then(mod => mod.GrowiNavbarBottom), { ssr: false });
  18. const ShortcutsModal = dynamic(() => import('~/client/components/ShortcutsModal'), { ssr: false });
  19. const SystemVersion = dynamic(() => import('~/client/components/SystemVersion'), { ssr: false });
  20. const PutbackPageModal = dynamic(() => import('~/client/components/PutbackPageModal'), { ssr: false });
  21. // Page modals
  22. const PageCreateModal = dynamic(() => import('~/client/components/PageCreateModal'), { ssr: false });
  23. const PageDuplicateModal = dynamic(() => import('~/client/components/PageDuplicateModal'), { ssr: false });
  24. const PageDeleteModal = dynamic(() => import('~/client/components/PageDeleteModal'), { ssr: false });
  25. const PageRenameModal = dynamic(() => import('~/client/components/PageRenameModal'), { ssr: false });
  26. const PagePresentationModal = dynamic(() => import('~/client/components/PagePresentationModal'), { ssr: false });
  27. const PageAccessoriesModal = dynamic(() => import('~/client/components/PageAccessoriesModal').then(mod => mod.PageAccessoriesModal), { ssr: false });
  28. const GrantedGroupsInheritanceSelectModal = dynamic(() => import('~/client/components/GrantedGroupsInheritanceSelectModal'), { ssr: false });
  29. const DeleteBookmarkFolderModal = dynamic(
  30. () => import('~/client/components/DeleteBookmarkFolderModal').then(mod => mod.DeleteBookmarkFolderModal), { ssr: false },
  31. );
  32. const SearchModal = dynamic(() => import('../../features/search/client/components/SearchModal'), { ssr: false });
  33. const AiAssistantManagementModal = dynamic(
  34. () => import('~/features/openai/client/components/AiAssistant/AiAssistantManagementModal/AiAssistantManagementModal')
  35. .then(mod => mod.AiAssistantManagementModal), { ssr: false },
  36. );
  37. const PageSelectModal = dynamic(() => import('~/client/components/PageSelectModal/PageSelectModal').then(mod => mod.PageSelectModal), { ssr: false });
  38. type Props = {
  39. children?: ReactNode
  40. className?: string
  41. }
  42. export const BasicLayout = ({ children, className }: Props): JSX.Element => {
  43. return (
  44. <RawLayout className={`${moduleClass} ${className ?? ''}`}>
  45. <div className="page-wrapper flex-row">
  46. <div className="z-2 d-print-none">
  47. <Sidebar />
  48. </div>
  49. <div className="d-flex flex-grow-1 flex-column mw-0 z-1">{/* neccessary for nested {children} make expanded */}
  50. <AlertSiteUrlUndefined />
  51. {children}
  52. </div>
  53. <AiAssistantSidebar />
  54. </div>
  55. <GrowiNavbarBottom />
  56. <PageCreateModal />
  57. <PageDuplicateModal />
  58. <PageDeleteModal />
  59. <PageRenameModal />
  60. <PageAccessoriesModal />
  61. <DeleteAttachmentModal />
  62. <DeleteBookmarkFolderModal />
  63. <PutbackPageModal />
  64. <PageSelectModal />
  65. <SearchModal />
  66. <AiAssistantManagementModal />
  67. <PagePresentationModal />
  68. <HotkeysManager />
  69. <ShortcutsModal />
  70. <GrantedGroupsInheritanceSelectModal />
  71. <SystemVersion showShortcutsButton />
  72. </RawLayout>
  73. );
  74. };