@graupl/core 1.0.0-beta.22 → 1.0.0-beta.24

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 (273) hide show
  1. package/dist/css/base/button.css +2 -2
  2. package/dist/css/base/button.css.map +1 -1
  3. package/dist/css/base/form.css +2 -2
  4. package/dist/css/base/form.css.map +1 -1
  5. package/dist/css/base/link.css +2 -2
  6. package/dist/css/base/link.css.map +1 -1
  7. package/dist/css/base/table.css +2 -2
  8. package/dist/css/base/table.css.map +1 -1
  9. package/dist/css/base.css +2 -2
  10. package/dist/css/base.css.map +1 -1
  11. package/dist/css/component/accordion.css +2 -5
  12. package/dist/css/component/accordion.css.map +1 -1
  13. package/dist/css/component/alert.css +2 -2
  14. package/dist/css/component/alert.css.map +1 -1
  15. package/dist/css/component/badge.css +2 -2
  16. package/dist/css/component/badge.css.map +1 -1
  17. package/dist/css/component/card.css +2 -2
  18. package/dist/css/component/card.css.map +1 -1
  19. package/dist/css/component/carousel.css +2 -2
  20. package/dist/css/component/carousel.css.map +1 -1
  21. package/dist/css/component/disclosure.css +2 -2
  22. package/dist/css/component/disclosure.css.map +1 -1
  23. package/dist/css/component/input-group.css +2 -2
  24. package/dist/css/component/input-group.css.map +1 -1
  25. package/dist/css/component/list.css +2 -2
  26. package/dist/css/component/list.css.map +1 -1
  27. package/dist/css/component/menu.css +2 -2
  28. package/dist/css/component/menu.css.map +1 -1
  29. package/dist/css/component/navigation.css +2 -2
  30. package/dist/css/component/navigation.css.map +1 -1
  31. package/dist/css/component.css +2 -5
  32. package/dist/css/component.css.map +1 -1
  33. package/dist/css/graupl.css +2 -5
  34. package/dist/css/graupl.css.map +1 -1
  35. package/dist/css/init.css +2 -2
  36. package/dist/css/init.css.map +1 -1
  37. package/dist/css/layout/columns.css +2 -2
  38. package/dist/css/layout/columns.css.map +1 -1
  39. package/dist/css/layout/container.css +2 -2
  40. package/dist/css/layout/container.css.map +1 -1
  41. package/dist/css/layout/flex-columns.css +2 -2
  42. package/dist/css/layout/flex-columns.css.map +1 -1
  43. package/dist/css/layout.css +2 -5
  44. package/dist/css/layout.css.map +1 -1
  45. package/dist/css/normalize.css +2 -2
  46. package/dist/css/normalize.css.map +1 -1
  47. package/dist/css/state/focus.css +2 -2
  48. package/dist/css/state/focus.css.map +1 -1
  49. package/dist/css/state.css +2 -2
  50. package/dist/css/state.css.map +1 -1
  51. package/dist/css/theme/color.css +2 -2
  52. package/dist/css/theme/color.css.map +1 -1
  53. package/dist/css/theme/typography.css +2 -2
  54. package/dist/css/theme/typography.css.map +1 -1
  55. package/dist/css/theme.css +2 -2
  56. package/dist/css/theme.css.map +1 -1
  57. package/dist/css/utilities/alignment.css +1 -1
  58. package/dist/css/utilities/alignment.css.map +1 -1
  59. package/dist/css/utilities/background.css +2 -2
  60. package/dist/css/utilities/background.css.map +1 -1
  61. package/dist/css/utilities/border.css +2 -2
  62. package/dist/css/utilities/border.css.map +1 -1
  63. package/dist/css/utilities/color.css +2 -2
  64. package/dist/css/utilities/color.css.map +1 -1
  65. package/dist/css/utilities/container.css +1 -1
  66. package/dist/css/utilities/container.css.map +1 -1
  67. package/dist/css/utilities/display.css +2 -2
  68. package/dist/css/utilities/display.css.map +1 -1
  69. package/dist/css/utilities/flex.css +2 -2
  70. package/dist/css/utilities/flex.css.map +1 -1
  71. package/dist/css/utilities/gradient.css +2 -2
  72. package/dist/css/utilities/gradient.css.map +1 -1
  73. package/dist/css/utilities/height.css +2 -2
  74. package/dist/css/utilities/height.css.map +1 -1
  75. package/dist/css/utilities/inset.css +2 -2
  76. package/dist/css/utilities/inset.css.map +1 -1
  77. package/dist/css/utilities/justification.css +1 -1
  78. package/dist/css/utilities/justification.css.map +1 -1
  79. package/dist/css/utilities/list.css +1 -1
  80. package/dist/css/utilities/list.css.map +1 -1
  81. package/dist/css/utilities/order.css +2 -2
  82. package/dist/css/utilities/order.css.map +1 -1
  83. package/dist/css/utilities/position.css +2 -2
  84. package/dist/css/utilities/position.css.map +1 -1
  85. package/dist/css/utilities/ratio.css +2 -2
  86. package/dist/css/utilities/ratio.css.map +1 -1
  87. package/dist/css/utilities/spacing.css +2 -2
  88. package/dist/css/utilities/spacing.css.map +1 -1
  89. package/dist/css/utilities/typography.css +2 -2
  90. package/dist/css/utilities/typography.css.map +1 -1
  91. package/dist/css/utilities/visibility.css +2 -2
  92. package/dist/css/utilities/visibility.css.map +1 -1
  93. package/dist/css/utilities/visually-hidden.css +2 -2
  94. package/dist/css/utilities/visually-hidden.css.map +1 -1
  95. package/dist/css/utilities/width.css +2 -2
  96. package/dist/css/utilities/width.css.map +1 -1
  97. package/dist/css/utilities/z-index.css +1 -1
  98. package/dist/css/utilities/z-index.css.map +1 -1
  99. package/dist/css/utilities.css +2 -2
  100. package/dist/css/utilities.css.map +1 -1
  101. package/dist/js/accordion.js.map +1 -1
  102. package/dist/js/alert.js.map +1 -1
  103. package/dist/js/carousel.js.map +1 -1
  104. package/dist/js/component/accordion.cjs.js.map +1 -1
  105. package/dist/js/component/accordion.es.js.map +1 -1
  106. package/dist/js/component/accordion.iife.js.map +1 -1
  107. package/dist/js/component/alert.cjs.js.map +1 -1
  108. package/dist/js/component/alert.es.js.map +1 -1
  109. package/dist/js/component/alert.iife.js.map +1 -1
  110. package/dist/js/component/carousel.cjs.js.map +1 -1
  111. package/dist/js/component/carousel.es.js.map +1 -1
  112. package/dist/js/component/carousel.iife.js.map +1 -1
  113. package/dist/js/component/disclosure.cjs.js +2 -2
  114. package/dist/js/component/disclosure.cjs.js.map +1 -1
  115. package/dist/js/component/disclosure.es.js +2 -2
  116. package/dist/js/component/disclosure.es.js.map +1 -1
  117. package/dist/js/component/disclosure.iife.js +2 -2
  118. package/dist/js/component/disclosure.iife.js.map +1 -1
  119. package/dist/js/component/tabs.cjs.js +5 -0
  120. package/dist/js/component/tabs.cjs.js.map +1 -0
  121. package/dist/js/component/tabs.es.js +5 -0
  122. package/dist/js/component/tabs.es.js.map +1 -0
  123. package/dist/js/component/tabs.iife.js +5 -0
  124. package/dist/js/component/tabs.iife.js.map +1 -0
  125. package/dist/js/disclosure.js +2 -2
  126. package/dist/js/disclosure.js.map +1 -1
  127. package/dist/js/generator/accordion.cjs.js.map +1 -1
  128. package/dist/js/generator/accordion.es.js.map +1 -1
  129. package/dist/js/generator/accordion.iife.js.map +1 -1
  130. package/dist/js/generator/alert.cjs.js.map +1 -1
  131. package/dist/js/generator/alert.es.js.map +1 -1
  132. package/dist/js/generator/alert.iife.js.map +1 -1
  133. package/dist/js/generator/carousel.cjs.js.map +1 -1
  134. package/dist/js/generator/carousel.es.js.map +1 -1
  135. package/dist/js/generator/carousel.iife.js.map +1 -1
  136. package/dist/js/generator/disclosure.cjs.js +2 -2
  137. package/dist/js/generator/disclosure.cjs.js.map +1 -1
  138. package/dist/js/generator/disclosure.es.js +2 -2
  139. package/dist/js/generator/disclosure.es.js.map +1 -1
  140. package/dist/js/generator/disclosure.iife.js +2 -2
  141. package/dist/js/generator/disclosure.iife.js.map +1 -1
  142. package/dist/js/generator/navigation.cjs.js.map +1 -1
  143. package/dist/js/generator/navigation.es.js.map +1 -1
  144. package/dist/js/generator/navigation.iife.js.map +1 -1
  145. package/dist/js/generator/tabs.cjs.js +5 -0
  146. package/dist/js/generator/tabs.cjs.js.map +1 -0
  147. package/dist/js/generator/tabs.es.js +5 -0
  148. package/dist/js/generator/tabs.es.js.map +1 -0
  149. package/dist/js/generator/tabs.iife.js +5 -0
  150. package/dist/js/generator/tabs.iife.js.map +1 -0
  151. package/dist/js/graupl.js +5 -5
  152. package/dist/js/graupl.js.map +1 -1
  153. package/dist/js/navigation.js.map +1 -1
  154. package/dist/js/tabs.js +5 -0
  155. package/dist/js/tabs.js.map +1 -0
  156. package/package.json +4 -3
  157. package/src/js/disclosure/Disclosure.js +25 -45
  158. package/src/js/domHelpers.js +39 -22
  159. package/src/js/tabs/TabToggle.js +378 -0
  160. package/src/js/tabs/Tabs.js +1091 -0
  161. package/src/js/tabs/generator.js +32 -0
  162. package/src/js/tabs/index.js +5 -0
  163. package/src/scss/_defaults.scss +21 -88
  164. package/src/scss/_variables.scss +70 -0
  165. package/src/scss/base/button/_defaults.scss +2 -24
  166. package/src/scss/base/button/_index.scss +53 -52
  167. package/src/scss/base/button/_mixins.scss +24 -58
  168. package/src/scss/base/button/_variables.scss +139 -0
  169. package/src/scss/base/form/_defaults.scss +72 -2
  170. package/src/scss/base/form/_index.scss +196 -70
  171. package/src/scss/base/form/_variables.scss +166 -0
  172. package/src/scss/base/link/_defaults.scss +31 -0
  173. package/src/scss/base/link/_index.scss +177 -172
  174. package/src/scss/base/link/_variables.scss +215 -0
  175. package/src/scss/base/table/_defaults.scss +1 -11
  176. package/src/scss/base/table/_index.scss +126 -117
  177. package/src/scss/base/table/_variables.scss +214 -3
  178. package/src/scss/component/_index.scss +1 -0
  179. package/src/scss/component/accordion/_defaults.scss +73 -22
  180. package/src/scss/component/accordion/_index.scss +437 -62
  181. package/src/scss/component/accordion/_variables.scss +527 -101
  182. package/src/scss/component/alert/_defaults.scss +23 -32
  183. package/src/scss/component/alert/_index.scss +236 -30
  184. package/src/scss/component/alert/_variables.scss +155 -6
  185. package/src/scss/component/badge/_defaults.scss +1 -0
  186. package/src/scss/component/badge/_index.scss +25 -28
  187. package/src/scss/component/badge/_variables.scss +66 -2
  188. package/src/scss/component/card/_defaults.scss +64 -13
  189. package/src/scss/component/card/_index.scss +276 -30
  190. package/src/scss/component/card/_variables.scss +132 -0
  191. package/src/scss/component/carousel/_defaults.scss +73 -15
  192. package/src/scss/component/carousel/_index.scss +357 -41
  193. package/src/scss/component/carousel/_variables.scss +391 -0
  194. package/src/scss/component/disclosure/_index.scss +4 -4
  195. package/src/scss/component/disclosure/_variables.scss +127 -2
  196. package/src/scss/component/input-group/_defaults.scss +10 -3
  197. package/src/scss/component/input-group/_index.scss +72 -4
  198. package/src/scss/component/input-group/_variables.scss +37 -0
  199. package/src/scss/component/list/_defaults.scss +35 -2
  200. package/src/scss/component/list/_index.scss +159 -5
  201. package/src/scss/component/list/_variables.scss +152 -0
  202. package/src/scss/component/menu/_defaults.scss +49 -7
  203. package/src/scss/component/menu/_index.scss +325 -99
  204. package/src/scss/component/menu/_variables.scss +484 -1
  205. package/src/scss/component/navigation/_defaults.scss +45 -3
  206. package/src/scss/component/navigation/_index.scss +249 -98
  207. package/src/scss/component/navigation/_variables.scss +334 -5
  208. package/src/scss/component/tabs/_defaults.scss +82 -0
  209. package/src/scss/component/tabs/_index.scss +497 -0
  210. package/src/scss/component/tabs/_variables.scss +974 -0
  211. package/src/scss/layout/columns/_defaults.scss +5 -3
  212. package/src/scss/layout/columns/_index.scss +27 -21
  213. package/src/scss/layout/columns/_variables.scss +13 -0
  214. package/src/scss/layout/container/_defaults.scss +28 -11
  215. package/src/scss/layout/container/_index.scss +305 -161
  216. package/src/scss/layout/container/_variables.scss +148 -15
  217. package/src/scss/layout/flex-columns/_defaults.scss +5 -3
  218. package/src/scss/layout/flex-columns/_index.scss +28 -20
  219. package/src/scss/layout/flex-columns/_variables.scss +9 -0
  220. package/src/scss/mixins/_state.scss +37 -0
  221. package/src/scss/mixins/_theme.scss +36 -1
  222. package/src/scss/state/focus/_index.scss +17 -12
  223. package/src/scss/state/focus/_variables.scss +30 -4
  224. package/src/scss/theme/color/_defaults.scss +6 -35
  225. package/src/scss/theme/color/_index.scss +167 -1
  226. package/src/scss/theme/color/_variables.scss +155 -0
  227. package/src/scss/theme/typography/_defaults.scss +26 -19
  228. package/src/scss/theme/typography/_index.scss +176 -20
  229. package/src/scss/theme/typography/_variables.scss +186 -0
  230. package/src/scss/utilities/_template/_index.scss +0 -1
  231. package/src/scss/utilities/alignment/_defaults.scss +0 -33
  232. package/src/scss/utilities/alignment/_index.scss +24 -25
  233. package/src/scss/utilities/background/_defaults.scss +0 -77
  234. package/src/scss/utilities/background/_index.scss +32 -37
  235. package/src/scss/utilities/border/_defaults.scss +0 -33
  236. package/src/scss/utilities/border/_index.scss +25 -26
  237. package/src/scss/utilities/color/_defaults.scss +0 -19
  238. package/src/scss/utilities/color/_index.scss +22 -22
  239. package/src/scss/utilities/container/_defaults.scss +0 -11
  240. package/src/scss/utilities/container/_index.scss +20 -19
  241. package/src/scss/utilities/display/_defaults.scss +0 -11
  242. package/src/scss/utilities/display/_index.scss +20 -19
  243. package/src/scss/utilities/flex/_defaults.scss +0 -55
  244. package/src/scss/utilities/flex/_index.scss +28 -31
  245. package/src/scss/utilities/gradient/_defaults.scss +0 -28
  246. package/src/scss/utilities/gradient/_index.scss +27 -28
  247. package/src/scss/utilities/gradient/_variables.scss +15 -0
  248. package/src/scss/utilities/height/_defaults.scss +0 -8
  249. package/src/scss/utilities/height/_index.scss +22 -21
  250. package/src/scss/utilities/inset/_defaults.scss +0 -16
  251. package/src/scss/utilities/inset/_index.scss +20 -20
  252. package/src/scss/utilities/justification/_defaults.scss +0 -33
  253. package/src/scss/utilities/justification/_index.scss +24 -25
  254. package/src/scss/utilities/list/_defaults.scss +0 -22
  255. package/src/scss/utilities/list/_index.scss +22 -22
  256. package/src/scss/utilities/order/_defaults.scss +0 -8
  257. package/src/scss/utilities/order/_index.scss +20 -19
  258. package/src/scss/utilities/position/_defaults.scss +0 -11
  259. package/src/scss/utilities/position/_index.scss +20 -19
  260. package/src/scss/utilities/ratio/_defaults.scss +0 -8
  261. package/src/scss/utilities/ratio/_index.scss +22 -21
  262. package/src/scss/utilities/ratio/_variables.scss +6 -0
  263. package/src/scss/utilities/spacing/_defaults.scss +0 -11
  264. package/src/scss/utilities/spacing/_index.scss +18 -17
  265. package/src/scss/utilities/typography/_defaults.scss +0 -22
  266. package/src/scss/utilities/typography/_index.scss +27 -26
  267. package/src/scss/utilities/visibility/_defaults.scss +0 -11
  268. package/src/scss/utilities/visibility/_index.scss +19 -18
  269. package/src/scss/utilities/visually-hidden/_index.scss +19 -17
  270. package/src/scss/utilities/width/_defaults.scss +0 -8
  271. package/src/scss/utilities/width/_index.scss +21 -20
  272. package/src/scss/utilities/z-index/_defaults.scss +0 -11
  273. package/src/scss/utilities/z-index/_index.scss +19 -18
@@ -28,58 +28,120 @@
28
28
  // - `.feature`: A feature container component.
29
29
  // - `.breakout`: A breakout container component.
30
30
  // - `.contain`: A utility class to contain child elements to the content section of the container grid.
31
- // - `.sidebars`: A utility class to enable sidebars in the container.
32
- // - `.sidebar-left`: A left sidebar container component.
33
- // - `.sidebar-right`: A right sidebar container component.
34
- // - `.content-left`: A left content container component.
35
- // - `.content-right`: A right content container component.
36
- // - `.inner-content`: A utility class to contain child elements to the inner content section of the container grid.
31
+ // - `.sidebars`: A utility class to enable two sidebars in the container.
32
+ // - `.sidebars-left`: A utility class to enable a left sidebar in the container.
33
+ // - `.sidebars-right`: A utility class to enable a right sidebar in the container.
34
+ // - `.sidebar-left`: A left sidebar container component used directly inside of a container with sidebars.
35
+ // - `.sidebar-right`: A right sidebar container component used directly inside of a container with sidebars.
36
+ // - `.sidebar`: A sidebar container component used directly inside of a container with sidebars.
37
+ // - `.content`: A content container component used directly inside of a container with sidebars.
37
38
  //
38
- // The following custom properties control the generated classes:
39
- // - `--graupl-container-gap`: The gap between the container sections.
40
- // - `--graupl-container-content-max-width`: The maximum width of the content section.
41
- // - `--graupl-container-sidebar-width`: The width of the sidebar sections.
42
- // - `--graupl-container-breakout-max-width`: The maximum width of the breakout section.
43
- // - `--graupl-container-feature-max-width`: The maximum width of the feature section.
44
- // - `--graupl-container-full-width-section-min-width`: The minimum width of one side of the full-width section.
45
- // - `--graupl-container-full-width-section-max-width`: The maximum width of one side of the full-width section.
46
- // - `--graupl-container-feature-section-min-width`: The minimum width of one side of the feature section.
47
- // - `--graupl-container-feature-section-max-width`: The maximum width of one side of the feature section.
48
- // - `--graupl-container-breakout-section-min-width`: The minimum width of one side of the breakout section.
49
- // - `--graupl-container-breakout-section-max-width`: The maximum width of one side of the breakout section.
50
- // - `--graupl-container-content-section-min-width`: The minimum width of the content section.
51
- // - `--graupl-container-content-section-max-width`: The maximum width of the content section.
52
- // - `--graupl-container-full-width-section-width`: The calculated minmax width of the full-width section.
53
- // - `--graupl-container-feature-section-width`: The calculated minmax width of the feature section.
54
- // - `--graupl-container-breakout-section-width`: The calculated minmax width of the breakout section.
55
- // - `--graupl-container-content-section-width`: The calculated minmax width of the content section.
56
- // - `--graupl-container-sidebar-left-section-width`: The width of the left sidebar section.
57
- // - `--graupl-container-sidebar-right-section-width`: The width of the right sidebar section.
58
- // - `--graupl-container-inner-content-section-width`: The calculated minmax width of the inner content section.
39
+ // The following custom properties can be used to customize the container component:
40
+ // | Property | Description | Default Value |
41
+ // | --- | --- | --- |
42
+ // | `--graupl-container-sidebar-width` | The width of the sidebar sections. | `26ch` |
43
+ // | `--graupl-container-breakout-width` | The width that the breakout section will extend beyond the content. | `4ch` |
44
+ // | `--graupl-container-feature-width` | The width that the feature section will extend beyond the breakout. | `10ch` |
45
+ // | `--graupl-container-content-max-width` | The maximum width of the content section. | `var(--graupl-content-max-width)` |
46
+ // | `--graupl-container-breakout-max-width` | The maximum width of the breakout section. | `calc(var(--graupl-container-content-max-width) + var(--graupl-container-breakout-width))` |
47
+ // | `--graupl-container-feature-max-width` | The maximum width of the feature section. | `calc(var(--graupl-container-breakout-max-width) + var(--graupl-container-feature-width))` |
48
+ // | `--graupl-container-full-width-section-min-width` | The minimum width of one side of the full-width section. | `var(--graupl-spacer-5)` |
49
+ // | `--graupl-container-full-width-section-max-width` | The maximum width of one side of the full-width section. | `1fr` |
50
+ // | `--graupl-container-feature-section-min-width` | The minimum width of one side of the feature section. | `0rem` |
51
+ // | `--graupl-container-feature-section-max-width` | The maximum width of one side of the feature section. | `calc((var(--graupl-container-feature-max-width) - var(--graupl-container-breakout-max-width)) / 2)` |
52
+ // | `--graupl-container-breakout-section-min-width` | The minimum width of one side of the breakout section. | `0rem` |
53
+ // | `--graupl-container-breakout-section-max-width` | The maximum width of one side of the breakout section. | `calc((var(--graupl-container-breakout-max-width) - var(--graupl-container-content-max-width)) / 2)` |
54
+ // | `--graupl-container-content-section-min-width` | The minimum width of the content section. | `calc(100% - (var(--graupl-container-full-width-section-min-width) * 2) - (var(--graupl-container-feature-section-min-width) * 2) - (var(--graupl-container-breakout-section-min-width) * 2))` |
55
+ // | `--graupl-container-content-section-max-width` | The maximum width of the content section. | `var(--graupl-container-content-max-width)` |
56
+ // | `--graupl-container-full-width-section-width` | The calculated minmax width of the full-width section. | `minmax(var(--graupl-container-full-width-section-min-width), var(--graupl-container-full-width-section-max-width))` |
57
+ // | `--graupl-container-feature-section-width` | The calculated minmax width of the feature section. | `minmax(var(--graupl-container-feature-section-min-width), var(--graupl-container-feature-section-max-width))` |
58
+ // | `--graupl-container-breakout-section-width` | The calculated minmax width of the breakout section. | `minmax(var(--graupl-container-breakout-section-min-width), var(--graupl-container-breakout-section-max-width))` |
59
+ // | `--graupl-container-content-section-width` | The calculated width of the content section. | `min(var(--graupl-container-content-section-min-width), var(--graupl-container-content-section-max-width))` |
60
+ // | `--graupl-container-sidebar-left-section-width` | The width of the left sidebar section. | `max(var(--graupl-container-sidebar-width), var(--graupl-container-feature-section-max-width))` |
61
+ // | `--graupl-container-sidebar-right-section-width` | The width of the right sidebar section. | `max(var(--graupl-container-sidebar-width), var(--graupl-container-feature-section-max-width))` |
62
+ // | `--graupl-container-sidebars-breakout-section-width` | The breakout width when both sidebars are enabled. | `var(--graupl-container-breakout-section-max-width)` |
63
+ // | `--graupl-container-sidebars-content-section-min-width` | The minimum width of the content section when both sidebars are enabled. | `calc(100% - (var(--graupl-container-full-width-section-min-width) * 2) - (var(--graupl-container-feature-section-min-width) * 2) - (var(--graupl-container-sidebars-breakout-section-width) * 2) - var(--graupl-container-sidebar-left-section-width) - var(--graupl-container-sidebar-right-section-width))` |
64
+ // | `--graupl-container-sidebars-content-section-max-width` | The maximum width of the content section when both sidebars are enabled. | `calc(var(--graupl-container-content-section-max-width) - var(--graupl-container-sidebar-left-section-width) - var(--graupl-container-sidebar-right-section-width) + min(var(--graupl-container-sidebar-width), var(--graupl-container-feature-section-max-width)) + min(var(--graupl-container-sidebar-width), var(--graupl-container-feature-section-max-width)))` |
65
+ // | `--graupl-container-sidebars-content-section-width` | The calculated width of the content section when both sidebars are enabled. | `min(var(--graupl-container-sidebars-content-section-min-width), var(--graupl-container-sidebars-content-section-max-width))` |
66
+ // | `--graupl-container-sidebars-right-content-section-min-width` | The minimum width of the content section when only the right sidebar is enabled. | `calc(100% - (var(--graupl-container-full-width-section-min-width) * 2) - (var(--graupl-container-feature-section-min-width) * 2) - var(--graupl-container-breakout-section-min-width) - var(--graupl-container-sidebars-breakout-section-width) - var(--graupl-container-sidebar-right-section-width))` |
67
+ // | `--graupl-container-sidebars-right-content-section-max-width` | The maximum width of the content section when only the right sidebar is enabled. | `calc(var(--graupl-container-content-section-max-width) - var(--graupl-container-sidebar-right-section-width) + min(var(--graupl-container-sidebar-width), var(--graupl-container-feature-section-max-width)))` |
68
+ // | `--graupl-container-sidebars-right-content-section-width` | The calculated width of the content section when only the right sidebar is enabled. | `min(var(--graupl-container-sidebars-right-content-section-min-width), var(--graupl-container-sidebars-right-content-section-max-width))` |
69
+ // | `--graupl-container-sidebars-left-content-section-min-width` | The minimum width of the content section when only the left sidebar is enabled. | `calc(100% - (var(--graupl-container-full-width-section-min-width) * 2) - (var(--graupl-container-feature-section-min-width) * 2) - var(--graupl-container-breakout-section-min-width) - var(--graupl-container-sidebars-breakout-section-width) - var(--graupl-container-sidebar-left-section-width))` |
70
+ // | `--graupl-container-sidebars-left-content-section-max-width` | The maximum width of the content section when only the left sidebar is enabled. | `calc(var(--graupl-container-content-section-max-width) - var(--graupl-container-sidebar-left-section-width) + min(var(--graupl-container-sidebar-width), var(--graupl-container-feature-section-max-width)))` |
71
+ // | `--graupl-container-sidebars-left-content-section-width` | The calculated width of the content section when only the left sidebar is enabled. | `min(var(--graupl-container-sidebars-left-content-section-min-width), var(--graupl-container-sidebars-left-content-section-max-width))` |
59
72
  //
60
- // The following variables control the generated classes:
61
- // - `$container-selector-base`: The base selector for the container component.
62
- // - `$container-selector`: The selector for the container component.
63
- // - `$container-breakout-selector-base`: The base selector for the breakout container component.
64
- // - `$container-breakout-selector`: The selector for the breakout container component.
65
- // - `$container-feature-selector-base`: The base selector for the feature container component.
66
- // - `$container-feature-selector`: The selector for the feature container component.
67
- // - `$container-full-width-selector-base`: The base selector for the full-width container component.
68
- // - `$container-full-width-selector`: The selector for the full-width container component.
69
- // - `$container-contain-selector-base`: The base selector for the contain utility class.
70
- // - `$container-contain-selector`: The selector for the contain utility class.
71
- // - `$container-sidebars-selector-base`: The base selector for the sidebars utility class.
72
- // - `$container-sidebars-selector`: The selector for the sidebars utility class.
73
- // - `$container-content-selector-base`: The base selector for the content container component.
74
- // - `$container-content-selector`: The selector for the content container component.
75
- // - `$container-sidebar-selector-base`: The base selector for the sidebar container component.
76
- // - `$container-sidebar-selector`: The selector for the sidebar container component.
77
- // - `$container-left-selector-suffix`: The suffix for the left sidebar selector.
78
- // - `$container-right-selector-suffix`: The suffix for the right sidebar selector.
79
- // - `$container-inner-selector-prefix`: The prefix for the inner content selector.
80
- // - `$container-breakout-width`: The width of the breakout section will extend from the content section.
81
- // - `$container-feature-width`: The width of the feature section will extend from the breakout section.
82
- // - `$container-sidebar-width`: The width of the sidebar sections.
73
+ // The following sass variables can be used to customize the generation of the container component:
74
+ // | Variable | Description | Default Value |
75
+ // | --- | --- | --- |
76
+ // | `$selector-base` | The selector base for the component. | `.` |
77
+ // | `$modifier-selector-base` | The selector base for component modifiers. | `.` |
78
+ // | `$force-container-chaining` | A flag to force container chaining in all containers. | `false` |
79
+ // | `$generate-forced-container-selectors | A flag to generate a set of default selectors for forced container chaining. | `true` |
80
+ // | `$show-warnings` | A flag to show any built-in warnings that may be output during compiling. | `true` |
81
+ // | `$container-selector-base` | The base selector for the container component. | `$selector-base` |
82
+ // | `$container-selector` | The selector for the container component. | `container` |
83
+ // | `$container-breakout-selector-base` | The base selector for the breakout container component. | `$selector-base` |
84
+ // | `$container-breakout-selector` | The selector for the breakout container component. | `breakout` |
85
+ // | `$container-feature-selector-base` | The base selector for the feature container component. | `$selector-base` |
86
+ // | `$container-feature-selector` | The selector for the feature container component. | `feature` |
87
+ // | `$container-full-width-selector-base` | The base selector for the full-width container component. | `$selector-base` |
88
+ // | `$container-full-width-selector` | The selector for the full-width container component. | `full-width` |
89
+ // | `$container-contain-selector-base` | The base selector for the contain utility class. | `$modifier-selector-base` |
90
+ // | `$container-contain-selector` | The selector for the contain utility class. | `contain` |
91
+ // | `$container-sidebars-selector-base` | The base selector for the sidebars utility class. | `$modifier-selector-base` |
92
+ // | `$container-sidebars-selector` | The selector for the sidebars utility class. | `sidebars` |
93
+ // | `$container-content-selector-base` | The base selector for the content container component. | `$selector-base` |
94
+ // | `$container-content-selector` | The selector for the content container component. | `content` |
95
+ // | `$container-sidebar-selector-base` | The base selector for the sidebar container component. | `$selector-base` |
96
+ // | `$container-sidebar-selector` | The selector for the sidebar container component. | `sidebar` |
97
+ // | `$container-left-selector-suffix` | The suffix for the left sidebar selector. | `-left` |
98
+ // | `$container-right-selector-suffix` | The suffix for the right sidebar selector. | `-right` |
99
+ // | `$container-inner-selector-prefix` | The prefix for the inner content selector. | `inner-` |
100
+ // | `$container-breakout-width` | The width of the breakout section will extend from the content section. | `4ch` |
101
+ // | `$container-feature-width` | The width of the feature section will extend from the breakout section. | `10ch` |
102
+ // | `$container-sidebar-width` | The width of the sidebar sections. | `26ch` |
103
+ //
104
+ // ## What is container chaining?
105
+ //
106
+ // Container chaining is a structural setup in the DOM in which you make sure that if you have nested containers or container-level elements (breakouts, features, etc.), you never allow them to be contained in anything other than a container.
107
+ //
108
+ // What do I mean by this?
109
+ //
110
+ // If you have to following setup in your DOM:
111
+ //
112
+ // ```
113
+ // <div class="container">
114
+ // <p>Some content here...</p>
115
+ // <section>
116
+ // <p>Some content here...</p>
117
+ // <div class="breakout">
118
+ // <p>Some content here that I would like to breakout...</p>
119
+ // </div>
120
+ // <p>Some content here...</p>
121
+ // </section>
122
+ // </div>
123
+ // ```
124
+ //
125
+ // To achieve a breakout of the content inside of the <section>, you need to make sure the section is also a container, otherwise the breakout class will have no effect.
126
+ //
127
+ // ```
128
+ // <div class="container">
129
+ // <p>Some content here...</p>
130
+ // <section class="container">
131
+ // <p>Some content here...</p>
132
+ // <div class="breakout">
133
+ // <p>Some content here that I would like to breakout...</p>
134
+ // </div>
135
+ // <p>Some content here...</p>
136
+ // </section>
137
+ // </div>
138
+ // ```
139
+ //
140
+ // There _is_ a feature flag (`$force-container-chaining`) which automatically set up container chaining for you.
141
+ //
142
+ // This works by selecting all elements between a parent and child container and making them inherit the parent's layout.
143
+ //
144
+ // Because you have control over how this is limited, it can result in using an unrestricted :has() selector, which can be slow.
83
145
  //
84
146
  // @example
85
147
  // <div class="container">
@@ -104,21 +166,21 @@
104
166
  // </div>
105
167
  //
106
168
  // @example
107
- // <div class="container sidebars">
108
- // <div class="sidebar-left">
169
+ // <div class="container sidebars-left">
170
+ // <div class="sidebar">
109
171
  // Left sidebar content
110
172
  // </div>
111
- // <div class="content-right">
173
+ // <div class="content">
112
174
  // Content right content
113
175
  // </div>
114
176
  // </div>
115
177
  //
116
178
  // @example
117
- // <div class="container sidebars">
118
- // <div class="content-left">
179
+ // <div class="container sidebars-right">
180
+ // <div class="content">
119
181
  // Content left content
120
182
  // </div>
121
- // <div class="sidebar-right">
183
+ // <div class="sidebar">
122
184
  // Right sidebar content
123
185
  // </div>
124
186
  // </div>
@@ -128,7 +190,7 @@
128
190
  // <div class="sidebar-left">
129
191
  // Left sidebar content
130
192
  // </div>
131
- // <div class="inner-content">
193
+ // <div class="content">
132
194
  // Inner content content
133
195
  // </div>
134
196
  // <div class="sidebar-right">
@@ -136,8 +198,9 @@
136
198
  // </div>
137
199
  // </div>
138
200
 
139
- @use "../../mixins/screen";
201
+ @use "../../defaults" as root-defaults;
140
202
  @use "../../mixins/layer" as *;
203
+ @use "../../mixins/screen";
141
204
  @use "defaults";
142
205
  @use "variables" as *;
143
206
 
@@ -155,6 +218,7 @@
155
218
  $container-feature-section-width [feature-end]
156
219
  $container-full-width-section-width [full-width-end];
157
220
  container-type: inline-size;
221
+ overflow-wrap: break-word;
158
222
 
159
223
  // Container components should span the full width of their parent container
160
224
  // and inherit the grid columns.
@@ -179,6 +243,45 @@
179
243
  grid-column: content;
180
244
  }
181
245
 
246
+ // Handle force chaining.
247
+ //
248
+ // This works by selecting all elements between a parent and child container
249
+ // and making them inherit the parent's layout.
250
+ //
251
+ // Because you have control over how this is limited, it can result in using
252
+ // an unrestricted :has() selector, which can be slow.
253
+ @if defaults.$force-container-chaining {
254
+ @if defaults.$show-warnings and root-defaults.$show-warnings {
255
+ @warn ("You have enabled automatic container chaining. This can result in an unrestricted :has() selector if you customize $forced-container-selectors to be too broad, which can be slow. Make sure you know what you're doing with this.");
256
+ }
257
+
258
+ // .container :is(article,aside,div,section):not(.container):has(&)
259
+ #{defaults.$container-selector-base}#{defaults.$container-selector}
260
+ :is(#{defaults.$forced-container-selectors}):not(
261
+ #{defaults.$container-selector-base}#{defaults.$container-selector}
262
+ ):has(&) {
263
+ display: grid;
264
+ grid-column: 1/-1;
265
+ grid-template-columns: subgrid;
266
+ container-type: normal;
267
+
268
+ // .container
269
+ #{defaults.$container-selector-base}#{defaults.$container-selector} {
270
+ grid-column: 1/-1;
271
+ container-type: normal;
272
+
273
+ // &:not(.sidebars, .sidebars-left, .sidebars-right)
274
+ &:not(
275
+ #{defaults.$container-sidebars-selector-base}#{defaults.$container-sidebars-selector},
276
+ #{defaults.$container-sidebars-selector-base}#{defaults.$container-sidebars-selector}#{defaults.$container-left-selector-suffix},
277
+ #{defaults.$container-sidebars-selector-base}#{defaults.$container-sidebars-selector}#{defaults.$container-right-selector-suffix}
278
+ ) {
279
+ grid-template-columns: subgrid;
280
+ }
281
+ }
282
+ }
283
+ }
284
+
182
285
  // Contain components should inherit the container's grid columns and
183
286
  // force all children to be in the content section.
184
287
  //
@@ -222,6 +325,7 @@
222
325
  display: grid;
223
326
  grid-column: 1 / -1;
224
327
  grid-template-columns: subgrid;
328
+ align-content: flex-start;
225
329
 
226
330
  // > :not(.container, .breakout, .feature, .full-width, .sidebar-left)
227
331
  > :not(
@@ -240,6 +344,7 @@
240
344
  display: grid;
241
345
  grid-column: 1 / -1;
242
346
  grid-template-columns: subgrid;
347
+ align-content: flex-start;
243
348
 
244
349
  // > :not(.container, .breakout, .feature, .full-width, .sidebar-right)
245
350
  > :not(
@@ -253,18 +358,20 @@
253
358
  }
254
359
  }
255
360
 
256
- // .content-right
257
- #{defaults.$container-content-selector-base}#{defaults.$container-content-selector}#{defaults.$container-right-selector-suffix} {
361
+ // .content
362
+ #{defaults.$container-content-selector-base}#{defaults.$container-content-selector} {
258
363
  display: grid;
259
364
  grid-column: 1 / -1;
260
365
  grid-template-columns: subgrid;
366
+ align-content: flex-start;
261
367
 
262
- // > :not(.container, .breakout, .feature, .full-width, .sidebar-right)
368
+ // > :not(.container, .breakout, .feature, .full-width, .sidebar-left, .sidebar-right)
263
369
  > :not(
264
370
  #{defaults.$container-selector-base}#{defaults.$container-selector},
265
371
  #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
266
372
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
267
373
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector},
374
+ #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-left-selector-suffix},
268
375
  #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-right-selector-suffix}
269
376
  ) {
270
377
  grid-column: content;
@@ -273,35 +380,58 @@
273
380
  // Contain components should inherit the container's grid columns and
274
381
  // force all children to be in the content section.
275
382
  //
276
- // > .contain
383
+ // .contain
277
384
  #{defaults.$container-contain-selector-base}#{defaults.$container-contain-selector} {
278
- // > :not(.container, .breakout, .feature, .full-width)
385
+ // > :not(.container, .breakout, .feature, .full-width, .sidebar-left, .sidebar-right)
279
386
  > :not(
280
387
  #{defaults.$container-selector-base}#{defaults.$container-selector},
281
388
  #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
282
389
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
283
390
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector},
391
+ #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-left-selector-suffix},
284
392
  #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-right-selector-suffix}
285
393
  ) {
286
394
  grid-column: content;
287
395
  }
288
396
  }
289
397
  }
398
+ }
290
399
 
291
- // .content-left
292
- #{defaults.$container-content-selector-base}#{defaults.$container-content-selector}#{defaults.$container-left-selector-suffix} {
400
+ // &.sidebars-left
401
+ &#{defaults.$container-sidebars-selector-base}#{defaults.$container-sidebars-selector}#{defaults.$container-left-selector-suffix} {
402
+ // .sidebar
403
+ #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector} {
293
404
  display: grid;
294
405
  grid-column: 1 / -1;
295
406
  grid-template-columns: subgrid;
407
+ align-content: flex-start;
296
408
 
297
- // > :not(.container, .breakout, .feature, .full-width, .sidebar-left, .sidebar-right)
409
+ // > :not(.container, .breakout, .feature, .full-width, .sidebar)
298
410
  > :not(
299
411
  #{defaults.$container-selector-base}#{defaults.$container-selector},
300
412
  #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
301
413
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
302
414
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector},
303
- #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-left-selector-suffix},
304
- #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-right-selector-suffix}
415
+ #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}
416
+ ) {
417
+ grid-column: content;
418
+ }
419
+ }
420
+
421
+ // .content
422
+ #{defaults.$container-content-selector-base}#{defaults.$container-content-selector} {
423
+ display: grid;
424
+ grid-column: 1 / -1;
425
+ grid-template-columns: subgrid;
426
+ align-content: flex-start;
427
+
428
+ // > :not(.container, .breakout, .feature, .full-width, .sidebar)
429
+ > :not(
430
+ #{defaults.$container-selector-base}#{defaults.$container-selector},
431
+ #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
432
+ #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
433
+ #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector},
434
+ #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}
305
435
  ) {
306
436
  grid-column: content;
307
437
  }
@@ -309,36 +439,57 @@
309
439
  // Contain components should inherit the container's grid columns and
310
440
  // force all children to be in the content section.
311
441
  //
312
- // > .contain
442
+ // .contain
313
443
  #{defaults.$container-contain-selector-base}#{defaults.$container-contain-selector} {
314
- // > :not(.container, .breakout, .feature, .full-width, .sidebar-left, .sidebar-right)
444
+ // > :not(.container, .breakout, .feature, .full-width, .sidebar)
315
445
  > :not(
316
446
  #{defaults.$container-selector-base}#{defaults.$container-selector},
317
447
  #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
318
448
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
319
449
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector},
320
- #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-left-selector-suffix},
321
- #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-right-selector-suffix}
450
+ #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}
322
451
  ) {
323
452
  grid-column: content;
324
453
  }
325
454
  }
326
455
  }
456
+ }
327
457
 
328
- // .inner-content
329
- #{defaults.$container-content-selector-base}#{defaults.$container-inner-selector-prefix}#{defaults.$container-content-selector} {
458
+ // &.sidebars-right
459
+ &#{defaults.$container-sidebars-selector-base}#{defaults.$container-sidebars-selector}#{defaults.$container-right-selector-suffix} {
460
+ // .sidebar
461
+ #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector} {
330
462
  display: grid;
331
463
  grid-column: 1 / -1;
332
464
  grid-template-columns: subgrid;
465
+ align-content: flex-start;
333
466
 
334
- // > :not(.container, .breakout, .feature, .full-width, .sidebar-left, .sidebar-right)
467
+ // > :not(.container, .breakout, .feature, .full-width, .sidebar)
335
468
  > :not(
336
469
  #{defaults.$container-selector-base}#{defaults.$container-selector},
337
470
  #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
338
471
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
339
472
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector},
340
- #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-left-selector-suffix},
341
- #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-right-selector-suffix}
473
+ #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}
474
+ ) {
475
+ grid-column: content;
476
+ }
477
+ }
478
+
479
+ // .content
480
+ #{defaults.$container-content-selector-base}#{defaults.$container-content-selector} {
481
+ display: grid;
482
+ grid-column: 1 / -1;
483
+ grid-template-columns: subgrid;
484
+ align-content: flex-start;
485
+
486
+ // > :not(.container, .breakout, .feature, .full-width, .sidebar)
487
+ > :not(
488
+ #{defaults.$container-selector-base}#{defaults.$container-selector},
489
+ #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
490
+ #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
491
+ #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector},
492
+ #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}
342
493
  ) {
343
494
  grid-column: content;
344
495
  }
@@ -346,16 +497,15 @@
346
497
  // Contain components should inherit the container's grid columns and
347
498
  // force all children to be in the content section.
348
499
  //
349
- // > .contain
500
+ // .contain
350
501
  #{defaults.$container-contain-selector-base}#{defaults.$container-contain-selector} {
351
- // > :not(.container, .breakout, .feature, .full-width, .sidebar-left, .sidebar-right)
502
+ // > :not(.container, .breakout, .feature, .full-width, .sidebar)
352
503
  > :not(
353
504
  #{defaults.$container-selector-base}#{defaults.$container-selector},
354
505
  #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
355
506
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
356
507
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector},
357
- #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-left-selector-suffix},
358
- #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-right-selector-suffix}
508
+ #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}
359
509
  ) {
360
510
  grid-column: content;
361
511
  }
@@ -368,19 +518,18 @@
368
518
  &#{defaults.$container-sidebars-selector-base}#{defaults.$container-sidebars-selector} {
369
519
  grid-template-columns:
370
520
  [full-width-start] $container-full-width-section-width
371
- [feature-start] $container-feature-section-width
372
- [breakout-start] $container-breakout-section-width
373
- [content-start sidebar-left-start content-left-start] $container-sidebar-left-section-width
374
- [sidebar-left-end inner-content-start content-right-start] $container-inner-content-section-width
375
- [content-left-end inner-content-end sidebar-right-start] $container-sidebar-right-section-width
376
- [content-right-end sidebar-right-end content-end]
377
- $container-breakout-section-width [breakout-end]
378
- $container-feature-section-width [feature-end]
379
- $container-full-width-section-width [full-width-end];
380
-
381
- // .sidebar-left
382
- #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-left-selector-suffix} {
383
- grid-row: 1;
521
+ [sidebar-left-start feature-start] $container-sidebar-left-section-width
522
+ [sidebar-left-end breakout-start] $container-sidebars-breakout-section-width
523
+ [content-start] $container-sidebars-content-section-width
524
+ [content-end] $container-sidebars-breakout-section-width
525
+ [breakout-end sidebar-right-start] $container-sidebar-right-section-width
526
+ [feature-end sidebar-right-end] $container-full-width-section-width
527
+ [full-width-end];
528
+
529
+ // > .sidebar-left
530
+ > #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-left-selector-suffix} {
531
+ grid-row: 1 / -1;
532
+ grid-template: subgrid;
384
533
 
385
534
  // Make sure other container classes do not break the layout inside of the sidebar.
386
535
  //
@@ -394,7 +543,7 @@
394
543
  #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
395
544
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
396
545
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector} {
397
- grid-column-end: sidebar-left-end;
546
+ grid-column-end: content-start;
398
547
  }
399
548
  }
400
549
 
@@ -427,9 +576,10 @@
427
576
  }
428
577
  }
429
578
 
430
- // .sidebar-right
431
- #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-right-selector-suffix} {
432
- grid-row: 1;
579
+ // > .sidebar-right
580
+ > #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector}#{defaults.$container-right-selector-suffix} {
581
+ grid-row: 1 / -1;
582
+ grid-template: subgrid;
433
583
 
434
584
  // Make sure other container classes do not break the layout inside of the sidebar.
435
585
  //
@@ -443,7 +593,7 @@
443
593
  #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
444
594
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
445
595
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector} {
446
- grid-column-start: sidebar-right-start;
596
+ grid-column-start: content-end;
447
597
  }
448
598
  }
449
599
 
@@ -476,11 +626,30 @@
476
626
  }
477
627
  }
478
628
 
479
- // .content-right
480
- #{defaults.$container-content-selector-base}#{defaults.$container-content-selector}#{defaults.$container-right-selector-suffix} {
629
+ > .content
630
+ > #{defaults.$container-content-selector-base}#{defaults.$container-content-selector} {
481
631
  grid-row: 1;
632
+ }
633
+ }
482
634
 
483
- // Make sure other container classes do not break the layout inside of the content.
635
+ // &.sidebars-left
636
+ &#{defaults.$container-sidebars-selector-base}#{defaults.$container-sidebars-selector}#{defaults.$container-left-selector-suffix} {
637
+ grid-template-columns:
638
+ [full-width-start] $container-full-width-section-width
639
+ [sidebar-start feature-start] $container-sidebar-left-section-width
640
+ [sidebar-end breakout-start] $container-sidebars-breakout-section-width
641
+ [content-start] $container-sidebars-left-content-section-width
642
+ [content-end] $container-breakout-section-width
643
+ [breakout-end] $container-feature-section-width
644
+ [feature-end] $container-full-width-section-width
645
+ [full-width-end];
646
+
647
+ // > .sidebar
648
+ > #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector} {
649
+ grid-row: 1 / -1;
650
+ grid-template: subgrid;
651
+
652
+ // Make sure other container classes do not break the layout inside of the sidebar.
484
653
  //
485
654
  // &:not(.container)
486
655
  &:not(
@@ -492,11 +661,11 @@
492
661
  #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
493
662
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
494
663
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector} {
495
- grid-column-start: content-right-start;
664
+ grid-column-end: content-start;
496
665
  }
497
666
  }
498
667
 
499
- // Lock content to the content-right section.
668
+ // Lock content to the sidebar section.
500
669
  //
501
670
  // > :not(.container, .breakout, .feature, .full-width)
502
671
  > :not(
@@ -505,11 +674,11 @@
505
674
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
506
675
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector}
507
676
  ) {
508
- grid-column: content-right;
677
+ grid-column: sidebar;
509
678
  }
510
679
 
511
680
  // Contain components should inherit the container's grid columns and
512
- // force all children to be in the content-right section.
681
+ // force all children to be in the sidebar section.
513
682
  //
514
683
  // > .contain
515
684
  #{defaults.$container-contain-selector-base}#{defaults.$container-contain-selector} {
@@ -520,16 +689,35 @@
520
689
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
521
690
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector}
522
691
  ) {
523
- grid-column: content-right;
692
+ grid-column: sidebar;
524
693
  }
525
694
  }
526
695
  }
527
696
 
528
- // .content-left
529
- #{defaults.$container-content-selector-base}#{defaults.$container-content-selector}#{defaults.$container-left-selector-suffix} {
697
+ // > .content
698
+ > #{defaults.$container-content-selector-base}#{defaults.$container-content-selector} {
530
699
  grid-row: 1;
700
+ }
701
+ }
531
702
 
532
- // Make sure other container classes do not break the layout inside of the content.
703
+ // &.sidebars-right
704
+ &#{defaults.$container-sidebars-selector-base}#{defaults.$container-sidebars-selector}#{defaults.$container-right-selector-suffix} {
705
+ grid-template-columns:
706
+ [full-width-start] $container-full-width-section-width
707
+ [feature-start] $container-feature-section-width
708
+ [breakout-start] $container-breakout-section-width
709
+ [content-start] $container-sidebars-right-content-section-width
710
+ [content-end] $container-sidebars-breakout-section-width
711
+ [breakout-end sidebar-start] $container-sidebar-right-section-width
712
+ [feature-end sidebar-end] $container-full-width-section-width
713
+ [full-width-end];
714
+
715
+ // > .sidebar
716
+ > #{defaults.$container-sidebar-selector-base}#{defaults.$container-sidebar-selector} {
717
+ grid-row: 1 / -1;
718
+ grid-template: subgrid;
719
+
720
+ // Make sure other container classes do not break the layout inside of the sidebar.
533
721
  //
534
722
  // &:not(.container)
535
723
  &:not(
@@ -541,11 +729,11 @@
541
729
  #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
542
730
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
543
731
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector} {
544
- grid-column-end: content-left-end;
732
+ grid-column-start: content-end;
545
733
  }
546
734
  }
547
735
 
548
- // Lock content to the content-left section.
736
+ // Lock content to the sidebar section.
549
737
  //
550
738
  // > :not(.container, .breakout, .feature, .full-width)
551
739
  > :not(
@@ -554,11 +742,11 @@
554
742
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
555
743
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector}
556
744
  ) {
557
- grid-column: content-left;
745
+ grid-column: sidebar;
558
746
  }
559
747
 
560
748
  // Contain components should inherit the container's grid columns and
561
- // force all children to be in the content-left section.
749
+ // force all children to be in the sidebar section.
562
750
  //
563
751
  // > .contain
564
752
  #{defaults.$container-contain-selector-base}#{defaults.$container-contain-selector} {
@@ -569,58 +757,14 @@
569
757
  #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
570
758
  #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector}
571
759
  ) {
572
- grid-column: content-left;
760
+ grid-column: sidebar;
573
761
  }
574
762
  }
575
763
  }
576
764
 
577
- // .inner-content
578
- #{defaults.$container-content-selector-base}#{defaults.$container-inner-selector-prefix}#{defaults.$container-content-selector} {
765
+ // > .content
766
+ > #{defaults.$container-content-selector-base}#{defaults.$container-content-selector} {
579
767
  grid-row: 1;
580
-
581
- // Make sure other container classes do not break the layout inside of the content.
582
- //
583
- // &:not(.container)
584
- &:not(
585
- #{defaults.$container-selector-base}#{defaults.$container-selector}
586
- ) {
587
- // &, .container, .breakout, .feature, .full-width
588
- &,
589
- #{defaults.$container-selector-base}#{defaults.$container-selector},
590
- #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
591
- #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
592
- #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector} {
593
- grid-column: inner-content;
594
- }
595
- }
596
-
597
- // Lock content to the inner-content section.
598
- //
599
- // > :not(.container, .breakout, .feature, .full-width)
600
- > :not(
601
- #{defaults.$container-selector-base}#{defaults.$container-selector},
602
- #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
603
- #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
604
- #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector}
605
- ) {
606
- grid-column: inner-content;
607
- }
608
-
609
- // Contain components should inherit the container's grid columns and
610
- // force all children to be in the inner-content section.
611
- //
612
- // > .contain
613
- #{defaults.$container-contain-selector-base}#{defaults.$container-contain-selector} {
614
- // > :not(.container, .breakout, .feature, .full-width)
615
- > :not(
616
- #{defaults.$container-selector-base}#{defaults.$container-selector},
617
- #{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
618
- #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
619
- #{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector}
620
- ) {
621
- grid-column: inner-content;
622
- }
623
- }
624
768
  }
625
769
  }
626
770
  }