PageViewLayout.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import type { ReactNode } from 'react';
  2. import styles from './PageViewLayout.module.scss';
  3. type Props = {
  4. children?: ReactNode,
  5. headerContents?: ReactNode,
  6. sideContents?: ReactNode,
  7. footerContents?: ReactNode,
  8. }
  9. export const PageViewLayout = (props: Props): JSX.Element => {
  10. const {
  11. children, headerContents, sideContents, footerContents,
  12. } = props;
  13. return (
  14. <>
  15. <div id="main" className={`main ${styles['page-view-layout']}`}>
  16. <div id="content-main" className="content-main container-lg grw-container-convertible">
  17. { headerContents != null && headerContents }
  18. { sideContents != null
  19. ? (
  20. <div className="d-flex gap-3">
  21. <div className="flex-grow-1 flex-basis-0 mw-0">
  22. {children}
  23. </div>
  24. <div className="grw-side-contents-container col-lg-3 d-edit-none d-print-none" data-vrt-blackout-side-contents>
  25. <div className="grw-side-contents-sticky-container">
  26. {sideContents}
  27. </div>
  28. </div>
  29. </div>
  30. )
  31. : (
  32. <>{children}</>
  33. )
  34. }
  35. </div>
  36. </div>
  37. { footerContents != null && (
  38. <footer className="footer d-edit-none">
  39. {footerContents}
  40. </footer>
  41. ) }
  42. </>
  43. );
  44. };