BasicLayout.tsx 3.7 KB

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