admin-toolbar.css

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

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