@mdn/fred 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/components/content-section/server.css +1 -1
  3. package/components/curriculum/layout.css +2 -77
  4. package/components/curriculum/sidebar.css +0 -4
  5. package/components/curriculum/toc.css +1 -3
  6. package/components/curriculum-about/server.js +15 -6
  7. package/components/curriculum-default/server.js +15 -6
  8. package/components/curriculum-module/server.js +15 -6
  9. package/components/curriculum-overview/server.js +15 -36
  10. package/components/generic-layout/server.css +4 -60
  11. package/components/generic-layout/server.js +9 -4
  12. package/components/generic-sidebar/server.css +1 -3
  13. package/components/generic-toc/server.css +0 -3
  14. package/components/homepage-contributor-spotlight/server.css +5 -1
  15. package/components/html/global.css +2 -1
  16. package/components/layout/2-sidebars.css +141 -0
  17. package/components/layout/README.md +52 -10
  18. package/components/layout/global.css +5 -6
  19. package/components/left-sidebar/server.css +2 -12
  20. package/components/page-layout/server.css +1 -1
  21. package/components/play-console/element.css +15 -0
  22. package/components/print/global.css +2 -2
  23. package/components/reference-layout/server.css +2 -80
  24. package/components/reference-layout/server.js +6 -6
  25. package/out/service-worker.js +1 -1
  26. package/out/service-worker.js.map +1 -1
  27. package/out/static/client/{198.edf1fdf142c21fb8.css → 198.f743d603d3fa74b7.css} +2 -2
  28. package/out/static/client/{198.edf1fdf142c21fb8.css.map → 198.f743d603d3fa74b7.css.map} +1 -1
  29. package/out/static/client/270.66bae6059a1c23f9.css +2 -0
  30. package/out/static/client/270.66bae6059a1c23f9.css.map +1 -0
  31. package/out/static/client/5408.a0622390fa1726dc.css +2 -0
  32. package/out/static/client/5408.a0622390fa1726dc.css.map +1 -0
  33. package/out/static/client/6216.91b6560dce4c40eb.js +2 -0
  34. package/out/static/client/6216.91b6560dce4c40eb.js.map +1 -0
  35. package/out/static/client/6760.d97440f1ca6690c6.js +6 -0
  36. package/out/static/client/6760.d97440f1ca6690c6.js.map +1 -0
  37. package/out/static/client/{749.f46b8d04d93e42db.js → 749.15180d605dd9d7e9.js} +2 -2
  38. package/out/static/client/749.15180d605dd9d7e9.js.map +1 -0
  39. package/out/static/client/{index.a66b5a087a738e61.js → index.a845f20de1913b16.js} +3 -3
  40. package/out/static/client/{index.a66b5a087a738e61.js.map → index.a845f20de1913b16.js.map} +1 -1
  41. package/out/static/client/{runtime.149f3caaca6b394a.js → runtime.b11a359ec0a4abb0.js} +2 -2
  42. package/out/static/client/{runtime.149f3caaca6b394a.js.map → runtime.b11a359ec0a4abb0.js.map} +1 -1
  43. package/out/static/client/stats.json +740 -686
  44. package/out/static/client/styles-a11y-menu.7b49a1a7289a65dd.js +1 -0
  45. package/out/static/client/styles-advertising.ee901de4f53dfcfb.js +1 -0
  46. package/out/static/client/styles-article-footer.e9f7514e3e96e55e.js +1 -0
  47. package/out/static/client/styles-banner.d39b1822c276b7a1.js +1 -0
  48. package/out/static/client/styles-baseline-indicator.b0124633d8959185.js +1 -0
  49. package/out/static/client/styles-blog-index.a6463d0111bfa84b.js +1 -0
  50. package/out/static/client/styles-blog-post.226761d5090b01f6.js +1 -0
  51. package/out/static/client/{styles-blog-post.23b8b3e8e0ec1e69.css → styles-blog-post.c03ec8a22f8d4ff6.css} +2 -2
  52. package/out/static/client/{styles-blog-post.23b8b3e8e0ec1e69.css.map → styles-blog-post.c03ec8a22f8d4ff6.css.map} +1 -1
  53. package/out/static/client/styles-breadcrumbs-bar.9539fa2e37251d88.js +1 -0
  54. package/out/static/client/{styles-breadcrumbs-bar.02910e49bb8b2372.css → styles-breadcrumbs-bar.9a51a3c76a6231d0.css} +2 -2
  55. package/out/static/client/{styles-breadcrumbs-bar.02910e49bb8b2372.css.map → styles-breadcrumbs-bar.9a51a3c76a6231d0.css.map} +1 -1
  56. package/out/static/client/styles-breadcrumbs.73650619944b4ea9.js +1 -0
  57. package/out/static/client/styles-button.63c03050fb25b8ce.js +1 -0
  58. package/out/static/client/{styles-content-section.302cd1e445138b77.css → styles-content-section.01ee04d014688a05.css} +2 -2
  59. package/out/static/client/{styles-content-section.302cd1e445138b77.css.map → styles-content-section.01ee04d014688a05.css.map} +1 -1
  60. package/out/static/client/styles-content-section.4ebcf9edf977159a.js +1 -0
  61. package/out/static/client/styles-contributor-spotlight.f585c3be560baa36.js +1 -0
  62. package/out/static/client/styles-curriculum-about.df2a58fdc99668aa.js +1 -0
  63. package/out/static/client/styles-curriculum-default.87a662ae2e005fdc.js +1 -0
  64. package/out/static/client/styles-curriculum-landing.9af582d4a3e0692e.js +1 -0
  65. package/out/static/client/styles-curriculum-module.f87720da3b256bba.js +1 -0
  66. package/out/static/client/styles-curriculum-overview.16cdc5cb80128597.js +1 -0
  67. package/out/static/client/styles-featured-articles.950585abbd167c3f.js +1 -0
  68. package/out/static/client/styles-footer.f49c80542ef1fffb.js +1 -0
  69. package/out/static/client/styles-generic-about.b208cb4d9b62f6c5.js +1 -0
  70. package/out/static/client/styles-generic-community.264a7b11b708e2ae.js +1 -0
  71. package/out/static/client/styles-generic-content.bd4990121f075489.js +1 -0
  72. package/out/static/client/styles-generic-layout.1bc69c25775219ab.css +2 -0
  73. package/out/static/client/styles-generic-layout.1bc69c25775219ab.css.map +1 -0
  74. package/out/static/client/styles-generic-layout.518d8e7529d6d1e8.js +1 -0
  75. package/out/static/client/styles-generic-sidebar.a304a0ae4ff5d9d0.css +2 -0
  76. package/out/static/client/styles-generic-sidebar.a304a0ae4ff5d9d0.css.map +1 -0
  77. package/out/static/client/styles-generic-sidebar.a6ddb6ad375b6dea.js +1 -0
  78. package/out/static/client/styles-generic-toc.25a47b5903329e13.js +1 -0
  79. package/out/static/client/styles-generic-toc.b6981465a649e2b6.css +2 -0
  80. package/out/static/client/styles-generic-toc.b6981465a649e2b6.css.map +1 -0
  81. package/out/static/client/styles-global.b5c1c00652883917.js +1 -0
  82. package/out/static/client/{styles-global.2db431c11b66274e.css → styles-global.d24cf1d2734970c9.css} +2 -2
  83. package/out/static/client/{styles-global.2db431c11b66274e.css.map → styles-global.d24cf1d2734970c9.css.map} +1 -1
  84. package/out/static/client/styles-heading-anchor.a68e3e0eb0044a98.js +1 -0
  85. package/out/static/client/styles-homepage-body.04efe05e01579005.js +1 -0
  86. package/out/static/client/styles-homepage-contributor-spotlight.2bcbb1476c70410c.css +2 -0
  87. package/out/static/client/styles-homepage-contributor-spotlight.2bcbb1476c70410c.css.map +1 -0
  88. package/out/static/client/styles-homepage-contributor-spotlight.2da6fde81ab2e03a.js +1 -0
  89. package/out/static/client/styles-homepage-footer.d85ee198521b0417.js +1 -0
  90. package/out/static/client/styles-homepage-header.5c911fca0afedc7b.js +1 -0
  91. package/out/static/client/styles-homepage-hero.84542c123063331a.js +1 -0
  92. package/out/static/client/styles-homepage.6e3908e268226cfc.js +1 -0
  93. package/out/static/client/styles-latest-news.44b2cf830a3df3ba.js +1 -0
  94. package/out/static/client/styles-left-sidebar.81864a1b1af13cdc.css +2 -0
  95. package/out/static/client/styles-left-sidebar.81864a1b1af13cdc.css.map +1 -0
  96. package/out/static/client/styles-left-sidebar.c2ccc5982e4f4ec0.js +1 -0
  97. package/out/static/client/styles-logo.0e5223b5ca6c5c86.js +1 -0
  98. package/out/static/client/styles-mandala.5c6c0f84ff4bc09b.js +1 -0
  99. package/out/static/client/styles-menu.649d9e554d19dacb.js +1 -0
  100. package/out/static/client/styles-navigation.1bb818a8993b53bb.js +1 -0
  101. package/out/static/client/styles-not-found.5548da6ee760df5e.js +1 -0
  102. package/out/static/client/{styles-observatory-landing.7b47ee0004877825.css → styles-observatory-landing.55565f28f568d9fe.css} +2 -2
  103. package/out/static/client/{styles-observatory-landing.7b47ee0004877825.css.map → styles-observatory-landing.55565f28f568d9fe.css.map} +1 -1
  104. package/out/static/client/styles-observatory-landing.7b756d84bfd1f4a5.js +1 -0
  105. package/out/static/client/{styles-observatory-results.d8a2bea1fbfd4b2b.css → styles-observatory-results.8a6dcd7f335b94cc.css} +2 -2
  106. package/out/static/client/{styles-observatory-results.d8a2bea1fbfd4b2b.css.map → styles-observatory-results.8a6dcd7f335b94cc.css.map} +1 -1
  107. package/out/static/client/styles-observatory-results.a50f31e31fe5ce13.js +1 -0
  108. package/out/static/client/{styles-page-layout.e9b295138adbd4bc.css → styles-page-layout.5a4354f33e894319.css} +2 -2
  109. package/out/static/client/{styles-page-layout.e9b295138adbd4bc.css.map → styles-page-layout.5a4354f33e894319.css.map} +1 -1
  110. package/out/static/client/styles-page-layout.9a6bdcc133e4e481.js +1 -0
  111. package/out/static/client/styles-pagination.5b25c72cc0556f24.js +1 -0
  112. package/out/static/client/styles-playground.090bda8c12a63ec0.js +1 -0
  113. package/out/static/client/styles-recent-contributions.e713ba28ab0b7bc3.js +1 -0
  114. package/out/static/client/styles-reference-layout.e853d0ede90ff6ff.js +1 -0
  115. package/out/static/client/styles-reference-layout.f17861486ef2423f.css +2 -0
  116. package/out/static/client/styles-reference-layout.f17861486ef2423f.css.map +1 -0
  117. package/out/static/client/styles-reference-toc.dcf148c129d92975.js +1 -0
  118. package/out/static/client/styles-sandbox.dcb6dce1120b594d.js +1 -0
  119. package/out/static/client/{styles-site-search.ec3b6780533a8750.css → styles-site-search.3177bb12b1f83bf7.css} +2 -2
  120. package/out/static/client/{styles-site-search.ec3b6780533a8750.css.map → styles-site-search.3177bb12b1f83bf7.css.map} +1 -1
  121. package/out/static/client/styles-site-search.acc899abcd2a7645.js +1 -0
  122. package/out/static/client/styles-social-image.65fa265c06411ba3.js +1 -0
  123. package/out/static/client/styles-translation-banner.261e19907fee981b.js +1 -0
  124. package/out/static/client/styles-writer-toolbar.16afb45c733053cc.js +1 -0
  125. package/out/static/client/styles.298615289719f0aa.js +2 -0
  126. package/out/static/client/styles.298615289719f0aa.js.map +1 -0
  127. package/out/static/legacy/{2569.9f096bac448374bd.js → 2569.39ecdf7fe2d20c17.js} +2 -2
  128. package/out/static/legacy/{2569.9f096bac448374bd.js.map → 2569.39ecdf7fe2d20c17.js.map} +1 -1
  129. package/out/static/legacy/6753.9fefb8415a5a449e.js +27 -0
  130. package/out/static/legacy/6753.9fefb8415a5a449e.js.map +1 -0
  131. package/out/static/legacy/asset-manifest.json +8 -8
  132. package/out/static/legacy/{index.7ddac90f21db9f4e.html → index.5b77e00ea8d6df0b.html} +1 -1
  133. package/out/static/legacy/{index.6c7371784b8345e6.js → index.def60ac10a95218f.js} +3 -3
  134. package/out/static/legacy/{index.6c7371784b8345e6.js.map → index.def60ac10a95218f.js.map} +1 -1
  135. package/out/static/legacy/stats.json +13 -13
  136. package/out/static/legacy/{yari.74e397a2236facc5.js → yari.c9b6c25e48cbb380.js} +4 -4
  137. package/out/static/legacy/yari.c9b6c25e48cbb380.js.map +1 -0
  138. package/out/static/ssr/index.js +78 -37
  139. package/out/static/ssr/index.js.map +1 -1
  140. package/out/static/ssr/stats.json +4 -4
  141. package/package.json +18 -18
  142. package/out/static/client/5408.4bc756c440135b62.css +0 -2
  143. package/out/static/client/5408.4bc756c440135b62.css.map +0 -1
  144. package/out/static/client/6216.1bfd3cf0b0a6c7df.js +0 -2
  145. package/out/static/client/6216.1bfd3cf0b0a6c7df.js.map +0 -1
  146. package/out/static/client/6760.6ac3b2b3affbbe00.js +0 -6
  147. package/out/static/client/6760.6ac3b2b3affbbe00.js.map +0 -1
  148. package/out/static/client/749.f46b8d04d93e42db.js.map +0 -1
  149. package/out/static/client/styles-a11y-menu.b09c6038ee60691b.js +0 -1
  150. package/out/static/client/styles-advertising.8a72634ac33967b3.js +0 -1
  151. package/out/static/client/styles-article-footer.2008e05e900132bf.js +0 -1
  152. package/out/static/client/styles-banner.1588da63ad451f94.js +0 -1
  153. package/out/static/client/styles-baseline-indicator.045ce266c0388ff2.js +0 -1
  154. package/out/static/client/styles-blog-index.af7e5efac0463be9.js +0 -1
  155. package/out/static/client/styles-blog-post.21543a25c5d0c820.js +0 -1
  156. package/out/static/client/styles-breadcrumbs-bar.4e50455c81d9f236.js +0 -1
  157. package/out/static/client/styles-breadcrumbs.3272f39f147fdb26.js +0 -1
  158. package/out/static/client/styles-button.93e42cbce83fe9f8.js +0 -1
  159. package/out/static/client/styles-content-section.b38423c0dca8e3e4.js +0 -1
  160. package/out/static/client/styles-contributor-spotlight.efe854e18205bd6c.js +0 -1
  161. package/out/static/client/styles-curriculum-about.eb719efa09eab2e3.js +0 -1
  162. package/out/static/client/styles-curriculum-default.648a02845551d4a6.js +0 -1
  163. package/out/static/client/styles-curriculum-landing.f3af2ff9b3815ed8.js +0 -1
  164. package/out/static/client/styles-curriculum-module.284687a631bdb6c0.js +0 -1
  165. package/out/static/client/styles-curriculum-overview.81d25abdbb43b369.js +0 -1
  166. package/out/static/client/styles-featured-articles.1390540e6554e233.js +0 -1
  167. package/out/static/client/styles-footer.15153a4030e38f8f.js +0 -1
  168. package/out/static/client/styles-generic-about.f0afaa2db7066430.js +0 -1
  169. package/out/static/client/styles-generic-community.ff945b87102835f8.js +0 -1
  170. package/out/static/client/styles-generic-content.d0e560a0506475b1.js +0 -1
  171. package/out/static/client/styles-generic-layout.42a5e62407bd0066.css +0 -2
  172. package/out/static/client/styles-generic-layout.42a5e62407bd0066.css.map +0 -1
  173. package/out/static/client/styles-generic-layout.ca2cef837e24e7df.js +0 -1
  174. package/out/static/client/styles-generic-sidebar.b2b48d0d08f8bae7.js +0 -1
  175. package/out/static/client/styles-generic-sidebar.db43d8c5c4748aca.css +0 -2
  176. package/out/static/client/styles-generic-sidebar.db43d8c5c4748aca.css.map +0 -1
  177. package/out/static/client/styles-generic-toc.109e07ffeb20bc67.css +0 -2
  178. package/out/static/client/styles-generic-toc.109e07ffeb20bc67.css.map +0 -1
  179. package/out/static/client/styles-generic-toc.e8887bbe84a31d72.js +0 -1
  180. package/out/static/client/styles-global.efc5040b727dfca4.js +0 -1
  181. package/out/static/client/styles-heading-anchor.d7e14184517a1d3e.js +0 -1
  182. package/out/static/client/styles-homepage-body.1196a061fab22906.js +0 -1
  183. package/out/static/client/styles-homepage-contributor-spotlight.09a6993f73166d63.js +0 -1
  184. package/out/static/client/styles-homepage-contributor-spotlight.edc39a3f01eb964e.css +0 -2
  185. package/out/static/client/styles-homepage-contributor-spotlight.edc39a3f01eb964e.css.map +0 -1
  186. package/out/static/client/styles-homepage-footer.472132358e452a8b.js +0 -1
  187. package/out/static/client/styles-homepage-header.e6423ccb0a814f99.js +0 -1
  188. package/out/static/client/styles-homepage-hero.1c106d7a3adb970a.js +0 -1
  189. package/out/static/client/styles-homepage.843ab43d3f720fb6.js +0 -1
  190. package/out/static/client/styles-latest-news.986caae0711fbfe3.js +0 -1
  191. package/out/static/client/styles-left-sidebar.4d5208e5cb72af05.css +0 -2
  192. package/out/static/client/styles-left-sidebar.4d5208e5cb72af05.css.map +0 -1
  193. package/out/static/client/styles-left-sidebar.5a4d56fc21aab182.js +0 -1
  194. package/out/static/client/styles-logo.9cf3aa133bae8020.js +0 -1
  195. package/out/static/client/styles-mandala.b9822fc945abee39.js +0 -1
  196. package/out/static/client/styles-menu.97e048a6ffc666ce.js +0 -1
  197. package/out/static/client/styles-navigation.58a2a0a1f8d4487b.js +0 -1
  198. package/out/static/client/styles-not-found.a5c00a725a178969.js +0 -1
  199. package/out/static/client/styles-observatory-landing.c729a3523c37df23.js +0 -1
  200. package/out/static/client/styles-observatory-results.d4d142541bf683e1.js +0 -1
  201. package/out/static/client/styles-page-layout.baa1dac2402744c9.js +0 -1
  202. package/out/static/client/styles-pagination.04e3a505f4e789a6.js +0 -1
  203. package/out/static/client/styles-playground.7de5e497e2ebfa83.js +0 -1
  204. package/out/static/client/styles-recent-contributions.f1ab270b54c7e8de.js +0 -1
  205. package/out/static/client/styles-reference-layout.2c2d031dc83d605a.css +0 -2
  206. package/out/static/client/styles-reference-layout.2c2d031dc83d605a.css.map +0 -1
  207. package/out/static/client/styles-reference-layout.5c4b832bc9420f51.js +0 -1
  208. package/out/static/client/styles-reference-toc.afd507fb6d5ef895.js +0 -1
  209. package/out/static/client/styles-sandbox.3de7bd2afac30c66.js +0 -1
  210. package/out/static/client/styles-site-search.05f228cb7ac309b2.js +0 -1
  211. package/out/static/client/styles-social-image.dbdccf6b8d9258f2.js +0 -1
  212. package/out/static/client/styles-translation-banner.7698ddb14a70d0e5.js +0 -1
  213. package/out/static/client/styles-writer-toolbar.f161f8bd86e23a2a.js +0 -1
  214. package/out/static/client/styles.a182af71488aad03.js +0 -2
  215. package/out/static/client/styles.a182af71488aad03.js.map +0 -1
  216. package/out/static/legacy/6753.c44647828e8b4816.js +0 -27
  217. package/out/static/legacy/6753.c44647828e8b4816.js.map +0 -1
  218. package/out/static/legacy/yari.74e397a2236facc5.js.map +0 -1
  219. /package/out/static/client/{index.a66b5a087a738e61.js.LICENSE.txt → index.a845f20de1913b16.js.LICENSE.txt} +0 -0
  220. /package/out/static/legacy/{6753.c44647828e8b4816.js.LICENSE.txt → 6753.9fefb8415a5a449e.js.LICENSE.txt} +0 -0
  221. /package/out/static/legacy/{index.6c7371784b8345e6.js.LICENSE.txt → index.def60ac10a95218f.js.LICENSE.txt} +0 -0
  222. /package/out/static/legacy/{yari.74e397a2236facc5.js.LICENSE.txt → yari.c9b6c25e48cbb380.js.LICENSE.txt} +0 -0
@@ -0,0 +1,141 @@
1
+ .layout__2-sidebars,
2
+ .layout__2-sidebars-inline {
3
+ display: grid;
4
+
5
+ grid-template-columns: var(--layout-2-sidebars);
6
+
7
+ justify-content: space-between;
8
+
9
+ padding-inline: var(--layout-side-padding);
10
+
11
+ .layout__left-sidebar {
12
+ grid-area: left-sidebar;
13
+ }
14
+
15
+ .layout__right-sidebar {
16
+ grid-area: right-sidebar;
17
+ }
18
+
19
+ .layout__left-sidebar,
20
+ .layout__right-sidebar {
21
+ position: sticky;
22
+ top: var(--sticky-header-height);
23
+
24
+ max-height: calc(100vh - var(--sticky-header-height));
25
+
26
+ overflow-y: auto;
27
+
28
+ outline-offset: -2px;
29
+ }
30
+
31
+ @media (--screen-layout-2-sidebars) {
32
+ .layout__left-sidebar {
33
+ padding-right: var(--layout-sidebar-padding);
34
+ padding-left: var(--layout-side-padding-min);
35
+ margin-left: calc(-1 * var(--layout-side-padding-min));
36
+ }
37
+
38
+ .layout__right-sidebar {
39
+ padding-right: var(--layout-side-padding-min);
40
+ padding-left: var(--layout-sidebar-padding);
41
+ margin-right: calc(-1 * var(--layout-side-padding-min));
42
+ }
43
+ }
44
+
45
+ @media (--screen-layout-1-sidebar-or-less) {
46
+ grid-template-columns: var(--layout-1-sidebar-left);
47
+
48
+ .layout__left-sidebar {
49
+ z-index: 1;
50
+ display: none;
51
+ background: var(--color-background-page);
52
+ }
53
+
54
+ .layout__left-sidebar,
55
+ .layout__right-sidebar {
56
+ grid-area: sidebar;
57
+
58
+ padding-right: var(--layout-sidebar-padding);
59
+ padding-left: var(--layout-side-padding-min);
60
+ margin-left: calc(-1 * var(--layout-side-padding-min));
61
+ }
62
+ }
63
+
64
+ @media (--screen-layout-no-sidebar) {
65
+ display: block;
66
+
67
+ .layout__left-sidebar,
68
+ .layout__right-sidebar {
69
+ padding-right: unset;
70
+ padding-left: unset;
71
+ margin-left: unset;
72
+ }
73
+
74
+ .layout__left-sidebar {
75
+ position: fixed;
76
+ inset: 0;
77
+ top: var(--sticky-header-height);
78
+ z-index: var(--z-index-sidebar-mobile);
79
+
80
+ padding: 0 var(--layout-side-padding-min);
81
+ }
82
+
83
+ .layout__right-sidebar {
84
+ position: unset;
85
+ top: unset;
86
+
87
+ max-height: unset;
88
+
89
+ overflow-y: unset;
90
+ }
91
+ }
92
+ }
93
+
94
+ .layout__2-sidebars {
95
+ .layout__content {
96
+ grid-area: content;
97
+ }
98
+
99
+ @media (--screen-layout-no-sidebar) {
100
+ .layout__right-sidebar {
101
+ display: none;
102
+ }
103
+ }
104
+ }
105
+
106
+ .layout__2-sidebars-inline {
107
+ grid-template-areas:
108
+ "left-sidebar . header . right-sidebar"
109
+ "left-sidebar . body . right-sidebar";
110
+ grid-template-rows: min-content 1fr;
111
+
112
+ .layout__content {
113
+ display: contents;
114
+ }
115
+
116
+ .layout__header {
117
+ grid-area: header;
118
+ }
119
+
120
+ .layout__body {
121
+ grid-area: body;
122
+ }
123
+
124
+ @media (--screen-layout-1-sidebar-or-less) {
125
+ grid-template-areas:
126
+ "sidebar . header"
127
+ "sidebar . body";
128
+ grid-template-columns: var(--layout-1-sidebar-left);
129
+ }
130
+
131
+ @media (--screen-layout-no-sidebar) {
132
+ .layout__right-sidebar {
133
+ position: unset;
134
+ top: unset;
135
+
136
+ max-height: unset;
137
+
138
+ overflow-y: unset;
139
+ }
140
+ }
141
+ }
@@ -1,8 +1,50 @@
1
1
  # Layout
2
2
 
3
- This component provides some global utility variables for consistent layout.
3
+ This component provides some global utility variables and some importable stylesheets for consistent layout.
4
4
 
5
- ## Side padding
5
+ If you need to do something very custom, you can use the variables directly, otherwise we recommend using one of the importable stylesheets and applying the classes to your component.
6
+
7
+ ## Class based layouts
8
+
9
+ ### `.layout__2-sidebars`
10
+
11
+ Import from `./2-sidebars.css`
12
+
13
+ Classes should be used with this hierarchy:
14
+
15
+ - `layout__2-sidebars`
16
+ - `layout__left-sidebar`
17
+ - `layout__content`
18
+ - `layout__right-sidebar`
19
+
20
+ When there's space for 2 sidebars then both sidebars will show, left on the left and right on the right.
21
+
22
+ When there's only space for 1 sidebar then the right sidebar will show on the left and the left sidebar will become toggleable with `<mdn-toggle-sidebar>`.
23
+
24
+ When there's no space for sidebars then the right sidebar will be hidden and the left sidebar still toggleable.
25
+
26
+ ### `.layout__2-sidebars-inline`
27
+
28
+ Import from `./2-sidebars.css`
29
+
30
+ Classes should be used with this hierarchy:
31
+
32
+ - `layout__2-sidebars-inline`
33
+ - `layout__left-sidebar`
34
+ - `layout__content`
35
+ - `layout__header`
36
+ - `layout__right-sidebar`
37
+ - `layout__body`
38
+
39
+ When there's space for 2 sidebars then both sidebars will show, left on the left and right on the right, with header and body shown in the central content area.
40
+
41
+ When there's only space for 1 sidebar then the right sidebar will show on the left and the left sidebar will become toggleable with `<mdn-toggle-sidebar>`.
42
+
43
+ When there's no space for sidebars then the right sidebar will be displayed inline within the content and the left sidebar still toggleable.
44
+
45
+ ## Global utility variables
46
+
47
+ ### Side padding
6
48
 
7
49
  In the simplest case, you may just need the `--layout-side-padding` variable. This keeps full width content in line with the padding in the navigation and footer, which provides a small padding on small screens, and centers content on very large screens:
8
50
 
@@ -12,7 +54,7 @@ In the simplest case, you may just need the `--layout-side-padding` variable. Th
12
54
  }
13
55
  ```
14
56
 
15
- ## Content and sidebar layouts
57
+ ### Content and sidebar layouts
16
58
 
17
59
  If the page has "content" - some kind of prose - and optionally sidebars, you'll likely want one of the following layouts.
18
60
  The columns are sized to ensure that the content column doesn't become too wide (and have unreadably long lines of text), and that the sidebar columns don't become too narrow.
@@ -57,7 +99,7 @@ If you're using sidebars, you'll probably want to use the [custom media queries]
57
99
  }
58
100
  ```
59
101
 
60
- ### 2 sidebars: `--layout-2-sidebars`
102
+ #### 2 sidebars: `--layout-2-sidebars`
61
103
 
62
104
  A column for content, two columns for sidebars, and two columns for a gap between the content and sidebars. The columns are named as follows:
63
105
 
@@ -69,13 +111,13 @@ A column for content, two columns for sidebars, and two columns for a gap betwee
69
111
 
70
112
  Use the `--screen-layout-1-sidebar-or-less` custom media query to change to a different layout when the viewport becomes too narrow.
71
113
 
72
- ### 1 sidebar
114
+ #### 1 sidebar
73
115
 
74
116
  Two variants, which are identical apart from one having a left sidebar and the other a right sidebar. They have a column for content, a column for the sidebar, and a column for a gap between the content and sidebar.
75
117
 
76
118
  Use the `--screen-layout-no-sidebar` custom media query to change to a different layout when the viewport becomes too narrow.
77
119
 
78
- #### Left sidebar `--layout-1-sidebar-left`
120
+ ##### Left sidebar `--layout-1-sidebar-left`
79
121
 
80
122
  The columns are named as follows:
81
123
 
@@ -86,7 +128,7 @@ The columns are named as follows:
86
128
  | left-sidebar | | |
87
129
  | sidebar | | |
88
130
 
89
- #### Right sidebar `--layout-1-sidebar-right`
131
+ ##### Right sidebar `--layout-1-sidebar-right`
90
132
 
91
133
  The columns are named as follows:
92
134
 
@@ -97,11 +139,11 @@ The columns are named as follows:
97
139
  | | | right-sidebar |
98
140
  | | | sidebar |
99
141
 
100
- ### No sidebar
142
+ #### No sidebar
101
143
 
102
144
  Two variants, one if you're using `--layout-side-padding`, the other if you'd like to place things within that padding (e.g. a full width banner):
103
145
 
104
- #### Using padding: `--layout-no-sidebar`
146
+ ##### Using padding: `--layout-no-sidebar`
105
147
 
106
148
  The columns are named as follows:
107
149
 
@@ -122,7 +164,7 @@ The columns are named as follows:
122
164
  }
123
165
  ```
124
166
 
125
- #### Not using padding: `--layout-no-sidebar-extended`
167
+ ##### Not using padding: `--layout-no-sidebar-extended`
126
168
 
127
169
  The columns are named as follows:
128
170
 
@@ -1,9 +1,9 @@
1
1
  /* --layout-side-padding-min * 2 + (--layout-sidebar-min + --layout-sidebar-gap) * 2 + --layout-content-min */
2
- @custom-media --screen-layout-2-sidebars (width >= calc(1rem * 2 + (14rem + 2rem) * 2 + 31rem));
3
- @custom-media --screen-layout-1-sidebar-or-less (width < calc(1rem * 2 + (14rem + 2rem) * 2 + 31rem));
2
+ @custom-media --screen-layout-2-sidebars (width >= calc(1rem * 2 + (15rem + 2rem) * 2 + 31rem));
3
+ @custom-media --screen-layout-1-sidebar-or-less (width < calc(1rem * 2 + (15rem + 2rem) * 2 + 31rem));
4
4
 
5
5
  /* --layout-side-padding-min * 2 + --layout-sidebar-min + --layout-sidebar-gap + --layout-content-min */
6
- @custom-media --screen-layout-no-sidebar (width < calc(1rem * 2 + 14rem + 2rem + 31rem));
6
+ @custom-media --screen-layout-no-sidebar (width < calc(1rem * 2 + 15rem + 2rem + 31rem));
7
7
 
8
8
  :root {
9
9
  --layout-side-padding-min: 1rem;
@@ -13,13 +13,12 @@
13
13
  );
14
14
  --layout-full-width: calc(100vw - 2 * var(--layout-side-padding));
15
15
 
16
- --layout-sidebar-min: 14rem;
16
+ --layout-sidebar-min: 15rem;
17
17
  --layout-sidebar-gap: 2rem;
18
+ --layout-sidebar-padding: 1rem;
18
19
  --layout-content-min: 31rem;
19
20
  --layout-content-max: 48rem;
20
21
 
21
- /* WARNING: TODO: left/center/right cols widths will change */
22
-
23
22
  /* prettier-ignore */
24
23
  --layout-2-sidebars:
25
24
  [full-start left-sidebar-start]
@@ -1,9 +1,5 @@
1
1
  .left-sidebar {
2
- position: sticky;
3
- top: var(--sticky-header-height);
4
-
5
2
  padding-bottom: 3rem;
6
-
7
3
  overflow-wrap: anywhere;
8
4
 
9
5
  h4 {
@@ -87,7 +83,7 @@
87
83
 
88
84
  a,
89
85
  span:not(.highlight-container) {
90
- display: inline-flex;
86
+ display: inline-block;
91
87
  padding-block: 0.25rem;
92
88
  vertical-align: middle;
93
89
  }
@@ -107,6 +103,7 @@
107
103
  code {
108
104
  font-family: var(--font-family-code);
109
105
  font-size: var(--font-size-normal);
106
+ line-height: 1;
110
107
  }
111
108
 
112
109
  em {
@@ -131,12 +128,6 @@
131
128
  }
132
129
  }
133
130
 
134
- .left-sidebar__content {
135
- > ol {
136
- padding-left: 2px;
137
- }
138
- }
139
-
140
131
  .left-sidebar__header {
141
132
  position: sticky;
142
133
  top: 0;
@@ -145,7 +136,6 @@
145
136
  padding-top: 0.5rem;
146
137
  padding-right: 0.5rem;
147
138
  padding-bottom: 2rem;
148
- padding-left: 2px;
149
139
 
150
140
  background: linear-gradient(
151
141
  to bottom,
@@ -29,7 +29,7 @@
29
29
  color-scheme: dark;
30
30
  }
31
31
 
32
- @media (--screen-small-and-narrower) {
32
+ @media (--screen-small-and-narrower) or (--screen-layout-no-sidebar) {
33
33
  display: none;
34
34
  }
35
35
  }
@@ -23,13 +23,28 @@ ul {
23
23
 
24
24
  li {
25
25
  padding: 0 0.5em;
26
+ white-space: nowrap;
26
27
 
27
28
  &::before {
29
+ display: inline-block;
30
+
31
+ width: 0.75rem;
32
+
33
+ vertical-align: top;
34
+
28
35
  content: "> ";
29
36
  }
30
37
  }
31
38
 
32
39
  code {
40
+ display: inline-block;
41
+
42
+ width: calc(100% - 0.75rem);
43
+
44
+ margin: 0;
45
+
33
46
  font-family: var(--font-family-code);
47
+
34
48
  tab-size: 4;
49
+ white-space: pre-wrap;
35
50
  }
@@ -42,8 +42,8 @@
42
42
  }
43
43
 
44
44
  .page-layout__banner,
45
- .reference-layout__toc,
46
- .reference-layout__sidebar,
45
+ .layout__left-sidebar,
46
+ .layout__right-sidebar,
47
47
  .footer__socials,
48
48
  .footer__links,
49
49
  .footer__mozilla,
@@ -1,25 +1,9 @@
1
+ @import url("../layout/2-sidebars.css");
2
+
1
3
  /* Reference Layout */
2
4
 
3
5
  .reference-layout {
4
- display: grid;
5
-
6
- grid-template-areas:
7
- "sidebar . header . toc"
8
- "sidebar . body . toc";
9
- grid-template-rows: min-content 1fr;
10
- grid-template-columns: var(--layout-2-sidebars);
11
-
12
- justify-content: space-between;
13
-
14
- padding-inline: var(--layout-side-padding);
15
-
16
- .reference-layout__content {
17
- display: contents;
18
- }
19
-
20
6
  .reference-layout__header {
21
- grid-area: header;
22
-
23
7
  h1 {
24
8
  margin: 1rem 0;
25
9
 
@@ -31,84 +15,22 @@
31
15
  }
32
16
 
33
17
  .reference-layout__body {
34
- grid-area: body;
35
18
  padding-bottom: 3rem;
36
19
  }
37
20
 
38
- .reference-layout__sidebar {
39
- grid-area: sidebar;
40
-
41
- @media (--screen-layout-2-sidebars) {
42
- .left-sidebar {
43
- padding-right: calc(var(--layout-sidebar-gap) / 2);
44
- margin-right: calc(var(--layout-sidebar-gap) / -2);
45
- }
46
- }
47
- }
48
-
49
21
  .reference-layout__toc {
50
22
  display: flex;
51
23
 
52
24
  flex-wrap: wrap;
53
25
 
54
- grid-area: toc;
55
-
56
26
  gap: 0.5rem;
57
27
  align-content: start;
58
28
  align-items: start;
59
29
  justify-content: space-between;
60
30
  }
61
31
 
62
- .reference-layout__sidebar .left-sidebar,
63
- .reference-layout__toc {
64
- position: sticky;
65
- top: var(--sticky-header-height);
66
-
67
- max-height: calc(100vh - var(--sticky-header-height));
68
-
69
- padding-left: 2px;
70
-
71
- overflow-y: auto;
72
- }
73
-
74
- @media (--screen-layout-1-sidebar-or-less) {
75
- grid-template-areas:
76
- "toc . header"
77
- "toc . body";
78
- grid-template-columns: var(--layout-1-sidebar-left);
79
-
80
- .reference-layout__sidebar {
81
- z-index: 1;
82
-
83
- display: none;
84
-
85
- grid-area: toc;
86
-
87
- background: var(--color-background-page);
88
- }
89
- }
90
-
91
32
  @media (--screen-layout-no-sidebar) {
92
- display: block;
93
-
94
- .reference-layout__sidebar {
95
- position: fixed;
96
- inset: 0;
97
- top: var(--sticky-header-height);
98
- z-index: var(--z-index-sidebar-mobile);
99
-
100
- .left-sidebar {
101
- padding: 0 1rem;
102
- }
103
- }
104
-
105
33
  .reference-layout__toc {
106
- position: unset;
107
- top: unset;
108
-
109
- max-height: unset;
110
-
111
- overflow-y: unset;
112
34
  --toc-header-font-size: var(--font-size-larger);
113
35
  }
114
36
  }
@@ -21,24 +21,24 @@ export class ReferenceLayout extends ServerComponent {
21
21
  doc.body?.map((section) => ContentSection.render(context, section)) || [];
22
22
 
23
23
  return html`
24
- <div class="reference-layout">
25
- <main id="content" class="reference-layout__content">
26
- <div class="reference-layout__header">
24
+ <div class="layout__2-sidebars-inline reference-layout">
25
+ <main id="content" class="layout__content">
26
+ <div class="layout__header reference-layout__header">
27
27
  ${WRITER_MODE ? WriterToolbar.render(context) : nothing}
28
28
  ${TranslationBanner.render(context)}
29
29
  <mdn-survey></mdn-survey>
30
30
  <h1>${doc.title}</h1>
31
31
  ${BaselineIndicator.render(context)} ${description}
32
32
  </div>
33
- <aside class="reference-layout__toc">
33
+ <aside class="layout__right-sidebar reference-layout__toc">
34
34
  ${ReferenceToc.render(context)}
35
35
  <mdn-placement-sidebar></mdn-placement-sidebar>
36
36
  </aside>
37
- <div class="reference-layout__body">
37
+ <div class="layout__body reference-layout__body">
38
38
  ${sections} ${ArticleFooter.render(context)}
39
39
  </div>
40
40
  </main>
41
- <aside class="reference-layout__sidebar" id="main-sidebar">
41
+ <aside class="layout__left-sidebar" id="main-sidebar">
42
42
  ${LeftSidebar.render(context)}
43
43
  </aside>
44
44
  </div>