Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. import React from 'react'
  2. import styled, { injectGlobal, css } from 'styled-components'
  3. import Grid from './Grid'
  4.  
  5. injectGlobal`
  6. * {
  7. box-sizing: border-box;
  8. margin: 0;
  9. padding: 0;
  10. }
  11. html, body, #app {
  12. height: 100vh;
  13. font-family: Arial, sans-serif;
  14. }
  15. `
  16.  
  17. const Header = (props) => <div {...props}>Header</div>
  18. Header.displayName = 'Header'
  19. const Aside = (props) => <div {...props}>Aside</div>
  20. Aside.displayName = 'Aside'
  21. const Main = (props) => <div {...props}>Main</div>
  22. Main.displayName = 'Main'
  23. const Footer = (props) => <div {...props}>Footer</div>
  24. Footer.displayName = 'Footer'
  25.  
  26. const styles = css`
  27. height: 100vh;
  28. & > * {
  29. font-size: 2em;
  30. background-color: mediumturquoise;
  31. display: flex;
  32. align-items: center;
  33. justify-content: center;
  34. text-align: center;
  35. }
  36. `
  37.  
  38. // use area on children
  39. const AppArea = styled(({ className }) => (
  40. <Grid
  41. {...{ className }}
  42. gap="10px"
  43. template={`
  44. 150px 1fr
  45. header header 50px
  46. aside main 1fr
  47. footer footer 100px
  48. `}
  49. >
  50. <div area="header">Header</div>
  51. <div area="aside">Aside</div>
  52. <div area="main">Main</div>
  53. <div area="footer">Footer</div>
  54. </Grid>
  55. ))`${styles}`
  56.  
  57. // use displayName from children component
  58. const AppDisplayName = styled(({ className }) => (
  59. <Grid
  60. {...{ className }}
  61. gap="10px"
  62. template={`
  63. 150px 1fr
  64. Header Header 50px
  65. Aside Main 1fr
  66. Footer Footer 100px
  67. `}
  68. >
  69. <Header/>
  70. <Aside/>
  71. <Main/>
  72. <Footer/>
  73. </Grid>
  74. ))`${styles}`
  75.  
  76. // use both !
  77. const AppBoth = styled(({ className }) => (
  78. <Grid
  79. {...{ className }}
  80. gap="10px"
  81. template={`
  82. 150px 1fr
  83. Header Header 50px
  84. Aside main 1fr
  85. Footer Footer 50px
  86. `}
  87. >
  88. <Header/>
  89. <Aside/>
  90. <main area="main">Main</main>
  91. <Footer/>
  92. </Grid>
  93. ))`${styles}`
  94.  
  95. // export default AppArea
  96. // export default AppDisplayName
  97. export default AppBoth
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement