Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

toolbar-button.pcss.css

Toolbar button styles.

File

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

View source
  1. /* cspell:ignore csvg cpath wght */
  2. /**
  3. * @file
  4. * Toolbar button styles.
  5. */
  6. @import "../../css/base/media-queries.pcss.css";
  7. :root {
  8. --toolbar-button-outline-offset: 0;
  9. }
  10. .toolbar-button {
  11. z-index: 1;
  12. align-items: center;
  13. padding-inline: var(--admin-toolbar-space-16);
  14. padding-block: var(--admin-toolbar-space-10);
  15. min-height: var(--admin-toolbar-space-40);
  16. cursor: pointer;
  17. text-align: start;
  18. text-decoration: none;
  19. word-break: break-word;
  20. color: var(--admin-toolbar-color-gray-800);
  21. border: 0;
  22. border-radius: var(--admin-toolbar-space-8);
  23. background-color: transparent;
  24. font-size: var(--admin-toolbar-font-size-info-sm);
  25. font-variation-settings: "wght" 700;
  26. line-height: var(--admin-toolbar-line-height-info-sm);
  27. gap: calc(0.5 * var(--admin-toolbar-rem));
  28. &:has(+ .toolbar-popover__wrapper .is-active) {
  29. color: var(--admin-toolbar-color-gray-950);
  30. background-color: var(--admin-toolbar-color-gray-050);
  31. }
  32. &:hover {
  33. z-index: 20;
  34. color: var(--admin-toolbar-color-gray-990);
  35. outline: 2px solid var(--admin-toolbar-color-blue-200);
  36. outline-offset: var(--toolbar-button-outline-offset);
  37. background-color: var(--admin-toolbar-color-gray-050);
  38. }
  39. &:focus {
  40. z-index: 10;
  41. color: var(--admin-toolbar-color-blue-700);
  42. outline: 2px solid var(--admin-toolbar-color-focus);
  43. outline-offset: var(--toolbar-button-outline-offset);
  44. }
  45. &.current {
  46. color: var(--admin-toolbar-color-blue-700);
  47. background-color: var(--admin-toolbar-color-gray-050);
  48. }
  49. }
  50. /* Dark color modifier for submenus title */
  51. .toolbar-button--dark {
  52. color: var(--admin-toolbar-color-gray-990);
  53. }
  54. .toolbar-button--large {
  55. padding: var(--admin-toolbar-space-8) var(--admin-toolbar-space-16);
  56. font-size: var(--admin-toolbar-font-size-info-lg);
  57. line-height: var(--admin-toolbar-line-height-info-lg);
  58. }
  59. .toolbar-button--non-interactive {
  60. &:hover,
  61. &:focus,
  62. &:hover:focus {
  63. z-index: 1;
  64. cursor: auto;
  65. color: var(--admin-toolbar-color-gray-800);
  66. outline: 0;
  67. background-color: transparent;
  68. }
  69. }
  70. .toolbar-button--small-offset {
  71. --toolbar-button-outline-offset: calc(-1 * var(--admin-toolbar-space-4));
  72. }
  73. /* Class starts with `toolbar-button--icon` */
  74. [class*="toolbar-button--icon"] {
  75. padding-inline: var(--admin-toolbar-space-10);
  76. &::before {
  77. display: flex;
  78. flex-shrink: 0;
  79. align-items: center;
  80. justify-content: center;
  81. content: attr(data-icon-text);
  82. color: currentColor;
  83. background-image: linear-gradient(currentColor, currentColor 50%, transparent 50%);
  84. background-position-y: calc(100% - (100% * var(--icon, 0)));
  85. background-size: 100% 200%;
  86. font-size: calc(0.75 * var(--admin-toolbar-rem));
  87. inline-size: var(--admin-toolbar-space-20);
  88. block-size: var(--admin-toolbar-space-20);
  89. mask-repeat: no-repeat;
  90. mask-position: center center;
  91. mask-size: 100% auto;
  92. -webkit-mask-image: var(--icon);
  93. mask-image: var(--icon);
  94. }
  95. &:hover::before {
  96. background-color: linear-gradient(var(--admin-toolbar-color-blue-600), var(--admin-toolbar-color-blue-600) 50%, transparent 50%);
  97. }
  98. @media (--forced-colors) {
  99. &::before,
  100. &:hover::before {
  101. background: canvastext;
  102. }
  103. &a {
  104. &::before,
  105. &:hover::before {
  106. background: linktext;
  107. }
  108. }
  109. }
  110. }
  111. .toolbar-button--weight--400 {
  112. font-variation-settings: "wght" 400;
  113. }
  114. /* Set 0 specificity */
  115. :where(.toolbar-button) {
  116. display: flex;
  117. flex-grow: 1;
  118. }
  119. [class*="toolbar-button--expand"] {
  120. &::after {
  121. flex-shrink: 0;
  122. margin-inline-start: auto;
  123. content: "";
  124. transition: transform var(--admin-toolbar-transition);
  125. background-color: currentColor;
  126. block-size: var(--admin-toolbar-space-16);
  127. inline-size: var(--admin-toolbar-space-16);
  128. mask-size: var(--admin-toolbar-space-16);
  129. mask-repeat: no-repeat;
  130. mask-position: center center;
  131. mask-image: url(./assets/chevron.svg);
  132. :where([dir="rtl"])
  133. @media (--forced-colors) {
  134. background: canvastext;
  135. }
  136. }
  137. }
  138. .toolbar-button--expand--down {
  139. &::after {
  140. transform: rotate(90deg);
  141. @media (--forced-colors) {
  142. background: canvastext;
  143. }
  144. }
  145. &[aria-expanded="true"] {
  146. &::after {
  147. transform: rotate(-90deg);
  148. }
  149. &:focus,
  150. &:hover {
  151. border-bottom-right-radius: 0;
  152. border-bottom-left-radius: 0;
  153. }
  154. }
  155. }
  156. .toolbar-button--icon--announcements-feed-announcement {
  157. --icon: url(./assets/announcement.svg);
  158. &::before {
  159. transform: scaleX(-1);
  160. }
  161. [dir="rtl"]
  162. }
  163. }
  164. .toolbar-button--icon--back {
  165. --icon: url(./assets/arrow-left.svg);
  166. }
  167. .toolbar-button--icon--burger {
  168. --icon: url(./assets/burger.svg);
  169. }
  170. .toolbar-button--icon--cross {
  171. --icon: url(./assets/cross.svg);
  172. }
  173. .toolbar-button--icon--entity-user-collection {
  174. --icon: url(./assets/people.svg);
  175. }
  176. .toolbar-button--icon--help {
  177. --icon: url(./assets/help.svg);
  178. }
  179. .toolbar-button--icon--navigation-blocks {
  180. --icon: url(./assets/blocks.svg);
  181. }
  182. .toolbar-button--icon--navigation-content {
  183. --icon: url(./assets/content.svg);
  184. }
  185. .toolbar-button--icon--navigation-create {
  186. --icon: url(./assets/create.svg);
  187. }
  188. .toolbar-button--icon--navigation-files {
  189. --icon: url(./assets/files.svg);
  190. }
  191. .toolbar-button--icon--navigation-media {
  192. --icon: url(./assets/media.svg);
  193. }
  194. .toolbar-button--icon--pencil {
  195. --icon: url(./assets/pencil.svg);
  196. }
  197. .toolbar-button--icon--preview {
  198. --icon: url(./assets/eye.svg);
  199. }
  200. .toolbar-button--icon--shortcuts {
  201. --icon: url(./assets/shortcuts.svg);
  202. }
  203. .toolbar-button--icon--system-admin-config {
  204. --icon: url(./assets/config.svg);
  205. }
  206. .toolbar-button--icon--system-admin-reports {
  207. --icon: url(./assets/reports.svg);
  208. }
  209. .toolbar-button--icon--system-admin-structure {
  210. --icon: url(./assets/structure.svg);
  211. }
  212. .toolbar-button--icon--system-modules-list {
  213. --icon: url(./assets/extend.svg);
  214. }
  215. .toolbar-button--icon--system-themes-page {
  216. --icon: url(./assets/appearance.svg);
  217. }
  218. .toolbar-button--icon--user {
  219. --icon: url(./assets/user.svg);
  220. }
  221. .toolbar-button--collapsible {
  222. &::after {
  223. display: none;
  224. }
  225. & .toolbar-button__label {
  226. position: absolute;
  227. overflow: hidden;
  228. clip: rect(0 0 0 0);
  229. width: 1px;
  230. height: 1px;
  231. white-space: nowrap;
  232. clip-path: inset(50%);
  233. opacity: 0;
  234. }
  235. [data-admin-toolbar="expanded"]
  236. & .toolbar-button__label {
  237. position: relative;
  238. clip: revert;
  239. width: auto;
  240. height: auto;
  241. white-space: wrap;
  242. clip-path: none;
  243. opacity: 1;
  244. }
  245. }
  246. [data-admin-toolbar-animating]
  247. }
  248. }

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal