admin-toolbar.pcss.css

Same filename and directory in other branches
  1. 10 core/modules/navigation/css/components/admin-toolbar.pcss.css

Admin Toolbar styles.

File

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

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

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