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.

157 lines
2.9 KiB

  1. import * as React from 'react'
  2. import styled from 'styled-components'
  3. import Basic, { Container } from '../../organisms/layouts/Basic'
  4. import Link from '../../molecules/Link';
  5. import {UrlObject} from 'url';
  6. const LinkContainer = styled('nav')({
  7. margin: '1rem 0',
  8. display: 'grid',
  9. gap: '1rem',
  10. '@media (min-width: 720px)': {
  11. gridTemplateColumns: 'repeat(2, 1fr)',
  12. },
  13. })
  14. const PreviewWrapper = styled('div')({
  15. overflow: 'hidden',
  16. width: '100%',
  17. paddingBottom: '150%',
  18. position: 'relative',
  19. marginTop: '0.25rem',
  20. '::after': {
  21. content: "''",
  22. position: 'absolute',
  23. top: 0,
  24. left: 0,
  25. width: '100%',
  26. height: '100%',
  27. border: '0.125rem solid',
  28. boxSizing: 'border-box',
  29. },
  30. '@media (min-width: 720px)': {
  31. paddingBottom: '75%',
  32. },
  33. })
  34. const Preview = styled('iframe')({
  35. position: 'absolute',
  36. top: 0,
  37. left: 0,
  38. border: 0,
  39. display: 'block',
  40. transformOrigin: 'top left',
  41. width: '200%',
  42. height: '200%',
  43. transform: 'scale(0.5)',
  44. '@media (min-width: 720px)': {
  45. width: '400%',
  46. height: '400%',
  47. transform: 'scale(0.25)',
  48. },
  49. })
  50. const StyledLink = styled(Link)({
  51. display: 'block',
  52. textDecoration: 'none',
  53. // borderRadius: '0.25rem',
  54. // padding: '1rem',
  55. boxSizing: 'border-box',
  56. // border: '0.125rem solid',
  57. })
  58. type Props = {
  59. query: string,
  60. linkComponent: React.ElementType,
  61. menuLink: UrlObject,
  62. userLink: UrlObject,
  63. menuLinkLabel: string,
  64. userLinkLabel: string,
  65. }
  66. const IndexTemplate: React.FC<Props> = ({
  67. query,
  68. linkComponent,
  69. menuLinkLabel,
  70. menuLink,
  71. userLink,
  72. userLinkLabel,
  73. }) => {
  74. return (
  75. <Basic
  76. brand="Brand"
  77. query={query}
  78. linkComponent={linkComponent}
  79. menuLink={menuLink}
  80. menuLinkLabel={menuLinkLabel}
  81. userLink={userLink}
  82. userLinkLabel={userLinkLabel}
  83. >
  84. <Container>
  85. <h1>
  86. Welcome
  87. </h1>
  88. <p>
  89. Select a template to preview:
  90. </p>
  91. <LinkContainer>
  92. <StyledLink
  93. href={{
  94. pathname: '/layouts/basic'
  95. }}
  96. >
  97. Basic Layout
  98. <PreviewWrapper>
  99. <Preview
  100. src="/layouts/basic"
  101. scrolling="no"
  102. />
  103. </PreviewWrapper>
  104. </StyledLink>
  105. <StyledLink
  106. href={{
  107. pathname: '/layouts/right-sidebar'
  108. }}
  109. >
  110. Right Sidebar
  111. <PreviewWrapper>
  112. <Preview
  113. src="/layouts/right-sidebar"
  114. scrolling="no"
  115. />
  116. </PreviewWrapper>
  117. </StyledLink>
  118. <StyledLink
  119. href={{
  120. pathname: '/layouts/left-sidebar'
  121. }}
  122. >
  123. Left Sidebar
  124. <PreviewWrapper>
  125. <Preview
  126. src="/layouts/left-sidebar"
  127. scrolling="no"
  128. />
  129. </PreviewWrapper>
  130. </StyledLink>
  131. <StyledLink
  132. href={{
  133. pathname: '/layouts/left-sidebar/with-menu'
  134. }}
  135. >
  136. Left Sidebar (w/ menu)
  137. <PreviewWrapper>
  138. <Preview
  139. src="/layouts/left-sidebar/with-menu"
  140. scrolling="no"
  141. />
  142. </PreviewWrapper>
  143. </StyledLink>
  144. </LinkContainer>
  145. </Container>
  146. </Basic>
  147. )
  148. }
  149. export default IndexTemplate