Layout scaffolding for Web apps.
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

371 wiersze
7.0 KiB

  1. import { css } from '@tesseract-design/goofy-goober';
  2. import {LayoutArgs} from '../common';
  3. export const ContentBase = () => css.cx(
  4. css`
  5. box-sizing: border-box;
  6. padding-bottom: var(--size-menu, 4rem);
  7. `,
  8. css.media('(min-width: 1080px)')(
  9. css`
  10. padding-left: calc(50% - var(--base-width) * 0.5);
  11. padding-bottom: 0;
  12. `,
  13. ),
  14. )
  15. export const SidebarBase = () => css.cx(
  16. css`
  17. box-sizing: border-box;
  18. overflow: hidden;
  19. display: contents;
  20. left: calc(var(--base-width) * -1);
  21. `,
  22. css.media('(min-width: 1080px)')(
  23. css`
  24. position: fixed;
  25. top: 0;
  26. left: 0;
  27. width: calc(50% - var(--base-width) * 0.5);
  28. height: 100%;
  29. display: block;
  30. `,
  31. ),
  32. )
  33. export const SidebarMain = ({
  34. mainSidebarOpen,
  35. }: LayoutArgs) => css.cx(
  36. css`
  37. box-sizing: border-box;
  38. position: fixed;
  39. top: 0;
  40. width: 100%;
  41. height: 100%;
  42. padding-top: inherit;
  43. padding-bottom: var(--size-menu, 4rem);
  44. z-index: 2;
  45. background-color: var(--color-background, white);
  46. > * {
  47. display: block;
  48. width: 100%;
  49. height: 100%;
  50. background-color: var(--color-background, white);
  51. }
  52. `,
  53. css.dynamic({
  54. right: mainSidebarOpen ? 0 : '100%',
  55. }),
  56. css.media('(min-width: 1080px)')(
  57. css`
  58. position: absolute;
  59. right: 0;
  60. width: calc(var(--base-width) - var(--size-menu, 4rem));
  61. margin-left: 0;
  62. padding-bottom: 0;
  63. `,
  64. ),
  65. )
  66. export const SidebarMainOverflow = () => css.cx(
  67. css`
  68. width: 100%;
  69. height: 100%;
  70. overflow: auto; /* overflow: overlay */
  71. scrollbar-width: none;
  72. position: relative;
  73. z-index: 1;
  74. ::-webkit-scrollbar {
  75. display: none;
  76. }
  77. `
  78. )
  79. export const SidebarMenu = () => css.cx(
  80. css`
  81. box-sizing: border-box;
  82. overflow: auto; /* overflow: overlay */
  83. scrollbar-width: none;
  84. ::-webkit-scrollbar {
  85. display: none;
  86. }
  87. position: fixed;
  88. bottom: 0;
  89. left: 0;
  90. width: 100%;
  91. height: var(--size-menu, 4rem);
  92. z-index: 1;
  93. background-color: var(--color-background, white);
  94. > * {
  95. display: block;
  96. width: 100%;
  97. height: 100%;
  98. background-color: var(--color-background, white);
  99. }
  100. `,
  101. css.media('(min-width: 1080px)')(
  102. css`
  103. top: 0;
  104. margin-left: auto;
  105. position: absolute;
  106. height: 100%;
  107. padding-top: inherit;
  108. overflow: auto;
  109. z-index: auto;
  110. `,
  111. ),
  112. );
  113. export const SidebarMenuSize = () => css.cx(
  114. css`
  115. display: flex;
  116. width: 100%;
  117. height: 100%;
  118. max-width: calc(var(--base-width) * 2);
  119. margin: 0 auto;
  120. position: relative;
  121. z-index: 1;
  122. `,
  123. css.media('(min-width: 1080px)')(
  124. css`
  125. max-width: none;
  126. margin-right: 0;
  127. flex-direction: column;
  128. justify-content: space-between;
  129. align-items: flex-end;
  130. `,
  131. ),
  132. );
  133. export const SidebarMenuGroup = () => css.cx(
  134. css`
  135. display: contents;
  136. `,
  137. css.media('(min-width: 1080px)')(
  138. css`
  139. width: 100%;
  140. display: block;
  141. `,
  142. ),
  143. );
  144. export const MoreItems = ({
  145. mainSidebarOpen,
  146. }: LayoutArgs) => css.cx(
  147. css`
  148. position: fixed;
  149. top: 0;
  150. width: 100%;
  151. height: 100%;
  152. padding-top: var(--height-topbar, 4rem);
  153. padding-bottom: var(--size-menu, 4rem);
  154. z-index: -1;
  155. box-sizing: border-box;
  156. `,
  157. css.dynamic({
  158. left: mainSidebarOpen ? 0 : '-100%',
  159. }),
  160. css.media('(min-width: 1080px)')(
  161. css`
  162. display: contents;
  163. `,
  164. ),
  165. );
  166. export const MoreItemsScroll = () => css.cx(
  167. css`
  168. width: 100%;
  169. height: 100%;
  170. overflow: auto;
  171. background-color: var(--color-background, white);
  172. `,
  173. css.media('(min-width: 1080px)')(
  174. css`
  175. display: contents;
  176. `,
  177. ),
  178. );
  179. export const MorePrimarySidebarMenuGroup = () => css.cx(
  180. css.media('(min-width: 1080px)')(
  181. css`
  182. flex: auto;
  183. `,
  184. ),
  185. );
  186. export const MoreSecondarySidebarMenuGroup = () => css.cx(
  187. css.media('(min-width: 1080px)')(
  188. css`
  189. order: 4;
  190. `,
  191. ),
  192. );
  193. export const SidebarMenuItem = () => css.cx(
  194. css`
  195. width: 0;
  196. flex: auto;
  197. height: var(--size-menu, 4rem);
  198. > * {
  199. height: 100%;
  200. display: flex;
  201. align-items: center;
  202. text-decoration: none;
  203. width: 100%;
  204. }
  205. `,
  206. css.media('(min-width: 1080px)')(
  207. css`
  208. width: auto !important;
  209. flex: 0 1 auto;
  210. > * {
  211. height: auto;
  212. }
  213. `
  214. ),
  215. );
  216. export const MoreSidebarMenuItem = () => css.cx(
  217. css`
  218. height: var(--size-menu, 4rem);
  219. display: block;
  220. > * {
  221. height: 100%;
  222. display: flex;
  223. align-items: center;
  224. text-decoration: none;
  225. width: 100%;
  226. }
  227. `,
  228. css.media('(min-width: 1080px)')(
  229. css`
  230. width: auto !important;
  231. flex: 0 1 auto;
  232. `,
  233. ),
  234. );
  235. export const MoreToggleSidebarMenuItem = () => css.cx(
  236. css`
  237. width: 0;
  238. flex: auto;
  239. height: var(--size-menu, 4rem);
  240. > * {
  241. height: 100%;
  242. display: flex;
  243. align-items: center;
  244. text-decoration: none;
  245. width: 100%;
  246. }
  247. `,
  248. css.media('(min-width: 1080px)')(
  249. css`
  250. display: none;
  251. `,
  252. ),
  253. );
  254. export const SidebarMenuItemIcon = () => css.cx(
  255. css`
  256. display: block;
  257. `,
  258. css.media('(min-width: 1080px)')(
  259. css`
  260. width: var(--size-menu, 4rem);
  261. height: var(--size-menu, 4rem);
  262. display: grid;
  263. place-content: center;
  264. `,
  265. ),
  266. );
  267. export const MoreSidebarMenuItemIcon = () => css.cx(
  268. css`
  269. margin-right: 1rem;
  270. display: block;
  271. `,
  272. css.media('(min-width: 1080px)')(
  273. css`
  274. width: var(--size-menu, 4rem);
  275. height: var(--size-menu, 4rem);
  276. display: grid;
  277. place-content: center;
  278. margin-right: 0;
  279. `,
  280. ),
  281. );
  282. export const SidebarMenuContainer = () => css.cx(
  283. css`
  284. box-sizing: border-box;
  285. display: grid;
  286. place-content: center;
  287. width: 100%;
  288. text-align: center;
  289. `,
  290. css.media('(min-width: 1080px)')(
  291. css`
  292. display: flex;
  293. justify-content: flex-start;
  294. align-items: center;
  295. margin-left: auto;
  296. padding-right: 1rem;
  297. text-align: left;
  298. box-sizing: border-box;
  299. width: var(--base-width);
  300. `,
  301. ),
  302. )
  303. export const MoreSidebarMenuContainer = () => css.cx(
  304. css`
  305. display: flex;
  306. justify-content: flex-start;
  307. align-items: center;
  308. width: calc(var(--base-width) * 2);
  309. margin: 0 auto;
  310. padding: 0 1rem;
  311. text-align: left;
  312. box-sizing: border-box;
  313. `,
  314. css.media('(min-width: 1080px)')(
  315. css`
  316. margin-right: 0;
  317. width: var(--base-width);
  318. padding-left: 0;
  319. `,
  320. ),
  321. );
  322. export const ContentContainer = () => css.cx(
  323. css`
  324. padding: 0 1rem;
  325. box-sizing: border-box;
  326. width: 100%;
  327. max-width: calc(var(--base-width) * 2);
  328. margin-right: auto;
  329. margin-left: auto;
  330. `,
  331. css.media('(min-width: 1080px)')(
  332. css`
  333. margin-left: 0;
  334. `,
  335. ),
  336. );
  337. export const SidebarMainContainer = () => css.cx(
  338. css`
  339. padding: 0 1rem;
  340. box-sizing: border-box;
  341. width: 100%;
  342. max-width: calc(var(--base-width) * 2);
  343. margin: 0 auto;
  344. `,
  345. css.media('(min-width: 1080px)')(
  346. css`
  347. max-width: none;
  348. `,
  349. ),
  350. );