admin-toolbar.css

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

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