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.
 
 

147 lines
3.1 KiB

  1. import * as React from 'react'
  2. import styled from 'styled-components';
  3. import LeftSidebarLayout from '../../organisms/layouts/LeftSidebar';
  4. import DummyContent from '../../molecules/DummyContent';
  5. const SidebarMenuGroup = styled('div')({
  6. width: '100%',
  7. })
  8. const SidebarMenuItem = styled('a')({
  9. height: 'var(--size-menu, 4rem)',
  10. display: 'flex',
  11. alignItems: 'center',
  12. textDecoration: 'none',
  13. })
  14. const SidebarMenuItemIcon = styled('span')({
  15. width: 'var(--size-menu, 4rem)',
  16. height: 'var(--size-menu, 4rem)',
  17. display: 'grid',
  18. placeContent: 'center',
  19. })
  20. const SidebarMenu = styled('div')({
  21. top: 0,
  22. marginLeft: 'auto',
  23. position: 'absolute',
  24. height: '100%',
  25. width: '100%',
  26. paddingTop: 'inherit',
  27. display: 'flex',
  28. flexDirection: 'column',
  29. justifyContent: 'space-between',
  30. alignItems: 'flex-end',
  31. boxSizing: 'border-box',
  32. overflow: 'auto',
  33. scrollbarWidth: 'none',
  34. '::-webkit-scrollbar': {
  35. display: 'none',
  36. },
  37. })
  38. const SidebarMenuContainer = styled('span')({
  39. width: 'var(--width-base, 360px)',
  40. marginLeft: 'auto',
  41. paddingRight: '1rem',
  42. boxSizing: 'border-box',
  43. display: 'flex',
  44. alignItems: 'center',
  45. })
  46. const SidebarMain = styled('div')({
  47. width: 'calc(var(--width-base, 360px) - var(--size-menu, 4rem))',
  48. marginLeft: 'auto',
  49. height: '100%',
  50. padding: '0 1rem',
  51. paddingTop: 'inherit',
  52. boxSizing: 'border-box',
  53. overflow: 'auto',
  54. position: 'absolute',
  55. top: 0,
  56. right: 0,
  57. scrollbarWidth: 'none',
  58. backgroundColor: 'var(--color-bg, white)',
  59. '@media (prefers-color-scheme: dark)': {
  60. backgroundColor: 'var(--color-bg, black)',
  61. },
  62. '::-webkit-scrollbar': {
  63. display: 'none',
  64. },
  65. })
  66. const Container = styled('div')({
  67. padding: '0 1rem',
  68. boxSizing: 'border-box',
  69. width: '100%',
  70. maxWidth: 'calc(var(--width-base, 360px) * 2)',
  71. marginRight: 'auto',
  72. marginLeft: 'auto',
  73. '@media (min-width: 1080px)': {
  74. marginLeft: 0,
  75. },
  76. })
  77. const LeftSidebarLayoutTemplate = ({
  78. query,
  79. }) => {
  80. return (
  81. <LeftSidebarLayout
  82. query={query}
  83. sidebar={
  84. <>
  85. <SidebarMenu>
  86. <SidebarMenuGroup>
  87. <SidebarMenuItem>
  88. <SidebarMenuContainer>
  89. <SidebarMenuItemIcon>
  90. A
  91. </SidebarMenuItemIcon>
  92. Hello
  93. </SidebarMenuContainer>
  94. </SidebarMenuItem>
  95. <SidebarMenuItem>
  96. <SidebarMenuContainer>
  97. <SidebarMenuItemIcon>
  98. B
  99. </SidebarMenuItemIcon>
  100. Hello
  101. </SidebarMenuContainer>
  102. </SidebarMenuItem>
  103. <SidebarMenuItem>
  104. <SidebarMenuContainer>
  105. <SidebarMenuItemIcon>
  106. C
  107. </SidebarMenuItemIcon>
  108. Hello
  109. </SidebarMenuContainer>
  110. </SidebarMenuItem>
  111. </SidebarMenuGroup>
  112. <SidebarMenuGroup>
  113. <SidebarMenuItem>
  114. <SidebarMenuContainer>
  115. <SidebarMenuItemIcon>
  116. D
  117. </SidebarMenuItemIcon>
  118. World
  119. </SidebarMenuContainer>
  120. </SidebarMenuItem>
  121. </SidebarMenuGroup>
  122. </SidebarMenu>
  123. <SidebarMain>
  124. <DummyContent />
  125. </SidebarMain>
  126. </>
  127. }
  128. >
  129. <Container>
  130. <DummyContent />
  131. </Container>
  132. </LeftSidebarLayout>
  133. )
  134. }
  135. export default LeftSidebarLayoutTemplate