vertical-tabs.pcss.css

Same filename in this branch
  1. 11.x core/themes/olivero/css/components/vertical-tabs.pcss.css
  2. 11.x core/themes/claro/css/components/vertical-tabs.pcss.css
  3. 11.x core/themes/admin/css/components/vertical-tabs.pcss.css
Same filename and directory in other branches
  1. 10 core/themes/olivero/css/components/vertical-tabs.pcss.css
  2. 10 core/themes/claro/css/components/vertical-tabs.pcss.css
  3. 9 core/themes/olivero/css/components/vertical-tabs.pcss.css
  4. 9 core/themes/claro/css/components/vertical-tabs.pcss.css
  5. 8.9.x core/themes/claro/css/components/vertical-tabs.pcss.css
  6. main core/themes/olivero/css/components/vertical-tabs.pcss.css
  7. main core/themes/claro/css/components/vertical-tabs.pcss.css
  8. main core/themes/admin/css/components/vertical-tabs.pcss.css
  9. main core/themes/default_admin/css/components/vertical-tabs.pcss.css

Vertical tabs module.

Replaces /core/misc/vertical-tabs.css.

File

core/themes/default_admin/css/components/vertical-tabs.pcss.css

View source
  1. /**
  2. * @file
  3. * Vertical tabs module.
  4. *
  5. * Replaces /core/misc/vertical-tabs.css.
  6. */
  7. @import "../base/media-queries.pcss.css";
  8. /**
  9. * Main wrapper of vertical tabs.
  10. * This wrapper div is added by JavaScript.
  11. */
  12. .vertical-tabs {
  13. box-sizing: border-box;
  14. margin-block: var(--vertical-tabs-margin-vertical);
  15. border-block-start: 1px solid transparent; /* Hide the pane wrapper clearfix's height. */
  16. *,
  17. *::before,
  18. *::after {
  19. box-sizing: border-box;
  20. }
  21. }
  22. /**
  23. * Vertical tabs menu.
  24. */
  25. .vertical-tabs__menu {
  26. position: relative;
  27. display: block;
  28. float: inline-start;
  29. inline-size: var(--vertical-tabs-menu-width);
  30. margin: 0;
  31. padding-block-start: var(--vertical-tabs-menu-item-shadow-extraspace);
  32. list-style: none;
  33. color: var(--admin-color-text);
  34. }
  35. /**
  36. * Vertical tabs menu item.
  37. */
  38. .vertical-tabs__menu-item {
  39. overflow: hidden; /* Necessary to cut off the end of the focus state. */
  40. margin-block: var(--vertical-tabs-menu-item--top-margin);
  41. padding-block: var(--vertical-tabs-menu-item-shadow-extraspace);
  42. /**
  43. * The (gray) lines that visually separate the vertical tab menu items.
  44. */
  45. &::before,
  46. &::after {
  47. position: absolute;
  48. z-index: 1; /* Keep above the link hover background so the line stays visible. */
  49. display: block;
  50. inline-size: 100%;
  51. margin-block-start: calc(var(--vertical-tabs-menu-separator-size) * -1);
  52. border-block-start: var(--vertical-tabs-menu-separator-size) solid var(--admin-color-border);
  53. }
  54. /**
  55. * Masking line that hides the gray separator below the active item — without
  56. * it the active item shows a lightgray line at its bottom-start corner.
  57. */
  58. &::after {
  59. z-index: 2;
  60. /* Must match the active item's background so the separator is hidden: that
  61. item is --admin-color-bg-surface in light but blends into the canvas in
  62. dark (see the .is-selected dark override below), so mirror it here. */
  63. border-color: var(--admin-color-bg-surface);
  64. .gin--dark-mode
  65. }
  66. /* Only show a separator after an unhidden menu item. */
  67. &:not(.vertical-tab--hidden) ~ &::before {
  68. content: "";
  69. }
  70. &:focus {
  71. outline: 0;
  72. box-shadow: none;
  73. }
  74. &.is-selected {
  75. width: calc(100% + 1px); /* Cover up the border of the vertical tabs pane. */
  76. }
  77. &.is-selected::before,
  78. &:not(.vertical-tab--hidden) ~ &.is-selected::before {
  79. content: normal;
  80. }
  81. /* Show the white masking line for the selected menu item. */
  82. &.is-selected::after {
  83. content: "";
  84. }
  85. }
  86. /**
  87. * Anchor link inside the vertical tabs menu item.
  88. */
  89. .vertical-tabs__menu-link {
  90. position: relative;
  91. display: block;
  92. margin-block-start: calc(var(--vertical-tabs-border-size) * -1);
  93. padding-block: var(--admin-space-s);
  94. padding-inline: calc(var(--admin-space-l) - var(--vertical-tabs-menu-link--active-border-size)) var(--admin-space-s);
  95. text-decoration: none;
  96. color: var(--admin-color-text);
  97. border: var(--vertical-tabs-border-size) solid transparent;
  98. border-block-width: var(--vertical-tabs-border-size);
  99. border-inline-width: var(--vertical-tabs-menu-link--active-border-size) 0;
  100. border-start-start-radius: var(--vertical-tabs-border-radius);
  101. border-start-end-radius: 0;
  102. border-end-end-radius: 0;
  103. border-end-start-radius: var(--vertical-tabs-border-radius);
  104. &:focus {
  105. outline-offset: calc(-1 * var(--outline-size, 0px));
  106. }
  107. &:hover {
  108. text-decoration: none;
  109. color: var(--admin-color-primary);
  110. &::before {
  111. background: var(--admin-color-bg-item-hover);
  112. }
  113. }
  114. &::before {
  115. position: absolute;
  116. z-index: 0; /* Below the menu-item separator lines. */
  117. inset-block: calc(var(--vertical-tabs-border-size) * -1);
  118. inset-inline: calc(var(--vertical-tabs-menu-link--active-border-size) * -1) 0;
  119. content: "";
  120. pointer-events: none;
  121. background-clip: padding-box;
  122. }
  123. .gin--dark-mode
  124. .vertical-tabs__menu-item.is-selected
  125. }
  126. &::before {
  127. z-index: 1; /* Blue active-tab indicator above the green focus border. */
  128. border-color: var(--admin-color-primary);
  129. border-inline-start: var(--vertical-tabs-menu-link--active-border-size) solid var(--vertical-tabs-menu-link--active-border-color);
  130. border-start-start-radius: var(--admin-radius-2xs);
  131. border-start-end-radius: 0;
  132. border-end-end-radius: 0;
  133. border-end-start-radius: var(--admin-radius-2xs);
  134. &:hover {
  135. border-color: var(--admin-color-primary-hover);
  136. }
  137. &:active {
  138. border-color: var(--admin-color-primary-active);
  139. }
  140. @media (forced-colors: active) {
  141. border-inline-start: var(--vertical-tabs-menu-link--active-border-size) solid canvastext;
  142. }
  143. }
  144. &:hover::before {
  145. background: none;
  146. }
  147. .gin--dark-mode
  148. }
  149. @media (forced-colors: active) {
  150. &:not(.is-selected *) {
  151. margin-inline-start: var(--vertical-tabs-menu-link--active-border-size);
  152. border-width: 0;
  153. }
  154. }
  155. }
  156. .vertical-tabs__menu-link-content {
  157. position: relative;
  158. z-index: 1; /* Keep text above the pseudo element that paints the hover background. */
  159. }
  160. /**
  161. * Details summary in vertical tabs menu link and in the summary of the details.
  162. */
  163. .vertical-tabs__menu-link-summary {
  164. display: block;
  165. color: var(--admin-color-text-soft);
  166. font-size: var(--admin-font-size-s);
  167. font-weight: normal;
  168. .gin--dark-mode
  169. }
  170. /**
  171. * Wrapper of vertical tabs panes.
  172. */
  173. .vertical-tabs__items {
  174. box-sizing: border-box;
  175. margin-block: var(--vertical-tabs-margin-vertical);
  176. color: var(--admin-color-text);
  177. border: var(--vertical-tabs-border);
  178. border-radius: var(--admin-radius-m);
  179. background-color: var(--admin-color-bg-surface);
  180. box-shadow: var(--vertical-tabs-shadow);
  181. .gin--dark-mode
  182. @media (--admin-large) {
  183. border-start-start-radius: 0;
  184. }
  185. }
  186. /* This modifier is added by JavaScript (this is inherited from Drupal core). */
  187. .vertical-tabs__panes {
  188. position: relative;
  189. z-index: 1; /* Above the vertical tabs menu. */
  190. inset-block-start: -1px;
  191. margin-block: 0;
  192. &::after {
  193. display: block; /* Clearfix so the pane wrapper is at least as tall as the menu. */
  194. clear: both;
  195. content: "";
  196. }
  197. .vertical-tabs
  198. }
  199. }
  200. /**
  201. * The actual vertical tabs pane.
  202. *
  203. * This is a gin-details element which in this case is also vertical-tabs__item.
  204. */
  205. .vertical-tabs__item {
  206. /* Render on top of the border of vertical-tabs__items. */
  207. margin-block: calc(var(--vertical-tabs-border-size) * -1) 0;
  208. margin-inline: calc(var(--vertical-tabs-border-size) * -1);
  209. border-radius: 0;
  210. &.first {
  211. border-start-start-radius: var(--details-accordion-border-size-radius);
  212. border-start-end-radius: var(--details-accordion-border-size-radius);
  213. }
  214. &.last {
  215. margin-block-end: calc(var(--vertical-tabs-border-size) * -1);
  216. border-end-start-radius: var(--details-accordion-border-size-radius);
  217. border-end-end-radius: var(--details-accordion-border-size-radius);
  218. }
  219. .js .vertical-tabs
  220. > summary {
  221. display: none;
  222. }
  223. }
  224. .gin--dark-mode
  225. @media (--admin-wider) {
  226. border-start-end-radius: var(--admin-radius-m);
  227. border-end-end-radius: var(--admin-radius-m);
  228. border-end-start-radius: var(--admin-radius-m);
  229. & ~ .vertical-tabs__item {
  230. border-start-start-radius: var(--admin-radius-m);
  231. }
  232. }
  233. @media (--admin-large) {
  234. .gin-details__summary {
  235. padding-inline-start: var(--admin-space-2xl);
  236. &::before {
  237. inset-inline-start: var(--admin-space-m);
  238. }
  239. }
  240. }
  241. }
  242. .vertical-tabs__menu-item-title {
  243. font-weight: var(--admin-font-weight-bold);
  244. }
  245. [open] > .gin-details__summary--vertical-tabs-item:not(:focus, :active)::after {
  246. border-inline-start-width: 5px;
  247. }

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.