admin-toolbar.css

Admin Toolbar styles.

File

core/modules/navigation/css/components/admin-toolbar.css

View source
  1. /*
  2. * DO NOT EDIT THIS FILE.
  3. * See the following change record for more information,
  4. * https://www.drupal.org/node/3084859
  5. * @preserve
  6. */
  7. /* cspell:ignore csvg cpath */
  8. /**
  9. * @file
  10. * Admin Toolbar styles.
  11. */
  12. /**
  13. * Sidebar width is attached to the element because it's used as a
  14. * fallback value to the margin-inline-start property of the layout container.
  15. */
  16. body {
  17. --admin-toolbar-sidebar-width: calc(4.5 * var(--admin-toolbar-rem));
  18. --admin-toolbar-sidebar-header: calc(3.5 * var(--admin-toolbar-rem));
  19. [data-admin-toolbar="expanded"]
  20. }
  21. }
  22. /* We apply transitions after page load to avoid shifts. */
  23. [data-admin-toolbar-transitions] {
  24. .admin-toolbar {
  25. transition: transform var(--admin-toolbar-transition);
  26. @media (min-width: 64rem) {
  27. transition: width var(--admin-toolbar-transition);
  28. ~ .dialog-off-canvas-main-canvas {
  29. transition: margin-inline-start var(--admin-toolbar-transition);
  30. }
  31. }
  32. }
  33. }
  34. /**
  35. * This zero height div has the [data-offset-left] attribute for
  36. * Drupal.displace() to measure. It purposefully does not have any transitions
  37. * because we want Drupal.displace() to measure the width immediately
  38. */
  39. .admin-toolbar__displace-placeholder {
  40. position: absolute;
  41. inset-block-start: 0;
  42. inset-inline-start: 0;
  43. @media (min-width: 64rem) {
  44. width: var(--admin-toolbar-sidebar-width);
  45. }
  46. }
  47. /**
  48. * The Admin toolbar component.
  49. */
  50. .admin-toolbar {
  51. position: fixed;
  52. inset-block-start: 0;
  53. inset-inline-start: 0;
  54. z-index: var(--admin-toolbar-z-index);
  55. display: flex;
  56. flex-direction: column;
  57. block-size: 100vh;
  58. transform: translateX(-100%);
  59. background-color: var(--admin-toolbar-color-white);
  60. font-family: var(--admin-toolbar-font-family);
  61. inline-size: calc(var(--admin-toolbar-sidebar-width) + 1px);
  62. [dir="rtl"]
  63. }
  64. & ~ .dialog-off-canvas-main-canvas {
  65. @media (min-width: 64rem) {
  66. margin-inline-start: var(--drupal-displace-offset-left, var(--admin-toolbar-sidebar-width));
  67. [dir="rtl"]
  68. }
  69. }
  70. [data-admin-toolbar="expanded"]
  71. @media (min-width: 64rem) {
  72. block-size: calc(100vh - var(--drupal-displace-offset-top, 0px));
  73. transform: none;
  74. inset-block-start: 0;
  75. }
  76. @media only screen and (max-height: 18.75rem) {
  77. min-height: 20rem;
  78. }
  79. }
  80. .admin-toolbar__back-button {
  81. display: none;
  82. flex-grow: 0;
  83. }
  84. .admin-toolbar:has([data-toolbar-popover-control][aria-expanded="true"]) {
  85. .admin-toolbar__back-button {
  86. display: flex;
  87. @media (min-width: 64rem) {
  88. display: none;
  89. }
  90. }
  91. .admin-toolbar__logo {
  92. display: none;
  93. @media (min-width: 64rem) {
  94. display: inline-flex;
  95. }
  96. }
  97. }
  98. .admin-toolbar__close-button {
  99. flex-grow: 0;
  100. justify-self: end;
  101. margin-inline-start: auto;
  102. @media (min-width: 64rem) {
  103. display: none;
  104. }
  105. }
  106. .admin-toolbar__expand-button {
  107. display: none;
  108. align-items: center;
  109. justify-content: center;
  110. width: calc(2.25 * var(--admin-toolbar-rem));
  111. height: calc(2.25 * var(--admin-toolbar-rem));
  112. margin-inline-start: calc(0.125 * var(--admin-toolbar-rem));
  113. cursor: pointer;
  114. color: var(--admin-toolbar-color-gray-800);
  115. border: 1px solid var(--admin-toolbar-color-gray-300);
  116. border-radius: 50%;
  117. background-color: transparent;
  118. &:hover {
  119. color: var(--admin-toolbar-color-gray-990);
  120. }
  121. @media (min-width: 64rem) {
  122. display: flex;
  123. }
  124. }
  125. .admin-toolbar__expand-button-chevron {
  126. flex-shrink: 0;
  127. fill: currentColor;
  128. width: calc(1 * var(--admin-toolbar-rem));
  129. height: calc(1 * var(--admin-toolbar-rem));
  130. transition:
  131. opacity var(--admin-toolbar-transition),
  132. rotate var(--admin-toolbar-transition);
  133. opacity: 0;
  134. [data-admin-toolbar-transitions]
  135. [dir="rtl"]
  136. .admin-toolbar__expand-button[aria-expanded="true"]
  137. }
  138. }
  139. .admin-toolbar__header {
  140. position: sticky;
  141. z-index: var(--admin-toolbar-z-index-header);
  142. inset-block-start: 0;
  143. display: flex;
  144. align-items: center;
  145. justify-content: space-between;
  146. margin-block-start: calc(var(--admin-toolbar-sidebar-header) * -1);
  147. padding-block-start: var(--admin-toolbar-space-16);
  148. background-color: var(--admin-toolbar-color-white);
  149. & + .toolbar-block {
  150. margin-block-start: calc(var(--admin-toolbar-space-10) * -1);
  151. @media (min-width: 64rem) {
  152. margin-block-start: 0;
  153. }
  154. }
  155. &:not(:has(.admin-toolbar__logo)) {
  156. @media (min-width: 64rem) {
  157. display: none;
  158. }
  159. }
  160. @media (min-width: 64rem) {
  161. position: static;
  162. align-items: start;
  163. margin-block-start: revert;
  164. padding-block-start: revert;
  165. padding-block-end: 0;
  166. }
  167. }
  168. .admin-toolbar__logo {
  169. display: inline-flex;
  170. overflow: hidden;
  171. border-radius: var(--admin-toolbar-space-8);
  172. &:hover {
  173. background-color: transparent;
  174. }
  175. & img {
  176. display: block;
  177. max-width: var(--admin-toolbar-space-40);
  178. }
  179. }
  180. /**
  181. * Scroll wrapper for Mobile.
  182. */
  183. .admin-toolbar__scroll-wrapper {
  184. display: flex;
  185. overflow-y: auto;
  186. flex-direction: column;
  187. height: 100%;
  188. background: linear-gradient(var(--admin-toolbar-color-white) 30%, var(--admin-toolbar-color-white)), radial-gradient(farthest-side at 50% 0, var(--admin-toolbar-color-shadow-15), var(--admin-toolbar-color-shadow-0));
  189. background-color: var(--admin-toolbar-color-white);
  190. background-repeat: no-repeat;
  191. background-attachment: local, scroll;
  192. background-position-y: 3rem;
  193. background-size:
  194. 100% 2.5rem,
  195. 100% 1rem;
  196. @media (min-width: 64rem) {
  197. display: contents;
  198. overflow-y: unset;
  199. background: none;
  200. }
  201. }
  202. /**
  203. * Content region.
  204. * Region where most of the content will be printed.
  205. */
  206. .admin-toolbar__content {
  207. display: grid;
  208. gap: var(--admin-toolbar-space-12);
  209. padding-block: var(--admin-toolbar-sidebar-header) var(--admin-toolbar-space-16);
  210. padding-inline: var(--admin-toolbar-space-16);
  211. border-inline-end: 1px solid var(--admin-toolbar-color-gray-100);
  212. @media (min-width: 64rem) {
  213. display: flex;
  214. overflow-x: hidden;
  215. overflow-y: auto;
  216. flex-direction: column;
  217. flex-grow: 1;
  218. padding-block-start: var(--admin-toolbar-space-16);
  219. background:
  220. linear-gradient(var(--admin-toolbar-color-white) 30%, var(--admin-toolbar-color-white)),
  221. linear-gradient(var(--admin-toolbar-color-white), var(--admin-toolbar-color-white) 80%) 0 100%,
  222. radial-gradient(farthest-side at 50% 0, var(--admin-toolbar-color-shadow-15), var(--admin-toolbar-color-shadow-0)),
  223. radial-gradient(farthest-side at 50% 100%, var(--admin-toolbar-color-shadow-15), var(--admin-toolbar-color-shadow-0)) 0 100%;
  224. background-color: var(--admin-toolbar-color-white);
  225. background-repeat: no-repeat;
  226. background-attachment: local, local, scroll, scroll;
  227. background-size:
  228. 100% 2.5rem,
  229. 100% 2.5rem,
  230. 100% 1rem,
  231. 100% 1rem;
  232. }
  233. }
  234. /**
  235. * Sticky bottom region.
  236. * Region with less used items and button for collapse.
  237. */
  238. .admin-toolbar__footer {
  239. z-index: var(--admin-toolbar-z-index-footer);
  240. display: grid;
  241. gap: var(--admin-toolbar-space-4);
  242. margin-block-start: auto;
  243. padding: var(--admin-toolbar-space-16);
  244. border-block-start: 1px solid var(--admin-toolbar-color-gray-200);
  245. border-inline-end: 1px solid var(--admin-toolbar-color-gray-100);
  246. & > .toolbar-block {
  247. &:last-of-type {
  248. margin-block-end: var(--admin-toolbar-space-12);
  249. }
  250. }
  251. @media (min-width: 64rem) {
  252. --admin-toolbar-z-index-footer: -1;
  253. position: sticky;
  254. bottom: 0;
  255. background-color: var(--admin-toolbar-color-white);
  256. }
  257. }
  258. /**
  259. * Sidebar toggle.
  260. */
  261. .admin-toolbar__toggle {
  262. display: none;
  263. @media (min-width: 64rem) {
  264. display: flex;
  265. }
  266. }
  267. [data-drupal-tooltip]:hover + .admin-toolbar__tooltip,
  268. [data-drupal-tooltip]:focus + .admin-toolbar__tooltip {
  269. [data-admin-toolbar="expanded"]
  270. }
  271. /**
  272. * Element is used to overlay the content when Toolbar is expanded in smaller devices.
  273. * It is created in the template templates/navigation.html.twig.
  274. */
  275. .admin-toolbar-overlay {
  276. position: fixed;
  277. z-index: var(--admin-toolbar-z-index-overlay);
  278. inset-block-start: 0;
  279. inset-inline-start: 0;
  280. display: none;
  281. width: 100vw;
  282. height: 100vh;
  283. background-color: rgb(0, 0, 0, 0.14);
  284. :where([data-admin-toolbar="expanded"])
  285. @media (min-width: 64rem) {
  286. display: none;
  287. }
  288. }

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