ShareLinkLayout.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React, { ReactNode } from 'react';
  2. import dynamic from 'next/dynamic';
  3. import { GrowiNavbar } from '../Navbar/GrowiNavbar';
  4. import { RawLayout } from './RawLayout';
  5. const PageCreateModal = dynamic(() => import('../PageCreateModal'), { ssr: false });
  6. const GrowiNavbarBottom = dynamic(() => import('../Navbar/GrowiNavbarBottom').then(mod => mod.GrowiNavbarBottom), { ssr: false });
  7. const ShortcutsModal = dynamic(() => import('../ShortcutsModal'), { ssr: false });
  8. const SystemVersion = dynamic(() => import('../SystemVersion'), { ssr: false });
  9. // Fab
  10. const Fab = dynamic(() => import('../Fab').then(mod => mod.Fab), { ssr: false });
  11. type Props = {
  12. title: string
  13. className?: string,
  14. expandContainer?: boolean,
  15. children?: ReactNode
  16. }
  17. export const ShareLinkLayout = ({
  18. children, title, className, expandContainer,
  19. }: Props): JSX.Element => {
  20. const myClassName = `${className ?? ''} ${expandContainer ? 'growi-layout-fluid' : ''}`;
  21. return (
  22. <RawLayout title={title} className={myClassName}>
  23. <GrowiNavbar />
  24. <div className="page-wrapper d-flex d-print-block">
  25. <div className="flex-fill mw-0" style={{ position: 'relative' }}>
  26. {children}
  27. </div>
  28. </div>
  29. <GrowiNavbarBottom />
  30. <Fab />
  31. <ShortcutsModal />
  32. <PageCreateModal />
  33. <SystemVersion showShortcutsButton />
  34. </RawLayout>
  35. );
  36. };