Template for starting apps, powered by Next.js
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

69 lines
1.2 KiB

  1. import * as React from 'react'
  2. import styled from 'styled-components';
  3. import TopBar from '../../widgets/TopBar';
  4. import {UrlObject} from 'url';
  5. const Main = styled('main')({
  6. boxSizing: 'border-box',
  7. })
  8. export const Container = styled('div')({
  9. padding: '0 1rem',
  10. boxSizing: 'border-box',
  11. margin: '0 auto',
  12. maxWidth: 'calc(var(--width-base, 360px) * 2)',
  13. width: '100%',
  14. })
  15. type Props = {
  16. query?: string,
  17. brand?: React.ReactNode,
  18. onSearch?: React.FormEventHandler,
  19. searchLabel?: string,
  20. searchName?: string,
  21. searchHint?: string,
  22. linkComponent?: React.ElementType,
  23. menuLink?: UrlObject,
  24. userLink?: UrlObject,
  25. menuLinkLabel?: string,
  26. userLinkLabel?: string,
  27. }
  28. const BasicLayout: React.FC<Props> = ({
  29. query,
  30. children,
  31. brand,
  32. onSearch,
  33. searchLabel,
  34. searchName,
  35. searchHint,
  36. linkComponent,
  37. menuLinkLabel,
  38. menuLink,
  39. userLink,
  40. userLinkLabel,
  41. }) => {
  42. return (
  43. <>
  44. <TopBar
  45. query={query}
  46. brand={brand}
  47. onSearch={onSearch}
  48. searchHint={searchHint}
  49. searchLabel={searchLabel}
  50. searchName={searchName}
  51. linkComponent={linkComponent}
  52. menuLink={menuLink}
  53. menuLinkLabel={menuLinkLabel}
  54. userLink={userLink}
  55. userLinkLabel={userLinkLabel}
  56. />
  57. <Main>
  58. {children}
  59. </Main>
  60. </>
  61. )
  62. }
  63. export default BasicLayout