toolbar-button.pcss.css

Same filename and directory in other branches
  1. 10 core/modules/navigation/components/toolbar-button/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. [data-drupal-admin-styles] {
  8. --toolbar-button-outline-offset: 0;
  9. --toolbar-button-bg: transparent;
  10. --toolbar-button-color: var(--admin-toolbar-color-gray-800);
  11. /* Hover styles. */
  12. --toolbar-button-hover-bg: var(--admin-toolbar-color-gray-050);
  13. --toolbar-button-hover-color: var(--admin-toolbar-color-gray-990);
  14. /* Focus variables. */
  15. --toolbar-button-focus-color: var(--admin-toolbar-color-blue-700);
  16. /* Current variables */
  17. --toolbar-button-current-bg: var(--admin-toolbar-color-gray-050);
  18. --toolbar-button-current-color: var(--admin-toolbar-color-blue-700);
  19. /* Active child variables. */
  20. --toolbar-button-has-active-child-bg: var(--admin-toolbar-color-gray-050);
  21. --toolbar-button-has-active-child-color: var(--admin-toolbar-color-gray-950);
  22. /* Icon */
  23. --toolbar-button-icon-size: var(--admin-toolbar-space-20);
  24. }
  25. :is(#extra-specificity-hack, [data-drupal-admin-styles]) {
  26. .toolbar-button {
  27. z-index: 1;
  28. flex-grow: 0;
  29. align-items: center;
  30. min-height: var(--admin-toolbar-space-40);
  31. cursor: pointer;
  32. text-align: start;
  33. text-decoration: none;
  34. overflow-wrap: break-word;
  35. color: var(--toolbar-button-color);
  36. border: 0;
  37. border-radius: var(--admin-toolbar-space-8);
  38. background-color: var(--toolbar-button-bg);
  39. font-size: var(--admin-toolbar-font-size-info-sm);
  40. line-height: var(--admin-toolbar-line-height-info-sm);
  41. padding-inline: var(--admin-toolbar-space-16);
  42. padding-block: var(--admin-toolbar-space-10);
  43. font-variation-settings: "wght" 700;
  44. gap: calc(0.5 * var(--admin-toolbar-rem));
  45. &:has(+ .toolbar-popover__wrapper .is-active) {
  46. color: var(--toolbar-button-has-active-child-color);
  47. background-color: var(--toolbar-button-has-active-child-bg);
  48. @media (forced-colors: active) {
  49. position: relative;
  50. &::before {
  51. position: absolute;
  52. inset-block-start: 0;
  53. inset-inline-end: calc(100% + 5px);
  54. width: 0;
  55. height: 100%;
  56. content: "";
  57. border-inline-start: solid 4px canvasText;
  58. }
  59. }
  60. }
  61. .top-bar__actions
  62. &[class*="toolbar-button--icon"]:has(+ .ajax-progress--throbber),
  63. &[class*="toolbar-button--icon"]:has(+ .ajax-progress-throbber) {
  64. .toolbar-button__icon {
  65. fill: transparent;
  66. background-image: url(../../assets/icons/throbber.svg);
  67. }
  68. & + .ajax-progress--throbber,
  69. & + .ajax-progress-throbber {
  70. display: none;
  71. }
  72. }
  73. &:hover {
  74. z-index: 20;
  75. color: var(--toolbar-button-hover-color);
  76. outline: 2px solid var(--admin-toolbar-color-blue-200);
  77. outline-offset: var(--toolbar-button-outline-offset);
  78. background-color: var(--toolbar-button-hover-bg);
  79. }
  80. &:focus {
  81. z-index: 10;
  82. color: var(--toolbar-button-focus-color);
  83. outline: 2px solid var(--admin-toolbar-color-focus);
  84. outline-offset: var(--toolbar-button-outline-offset);
  85. }
  86. &.current {
  87. color: var(--toolbar-button-current-color);
  88. background-color: var(--toolbar-button-current-bg);
  89. @media (forced-colors: active) {
  90. position: relative;
  91. &::before {
  92. position: absolute;
  93. inset-block-start: 0;
  94. inset-inline-end: calc(100% + 5px);
  95. width: 0;
  96. height: 100%;
  97. content: "";
  98. border-inline-start: solid 4px canvasText;
  99. }
  100. }
  101. }
  102. }
  103. /* Dark color modifier for submenus title */
  104. .toolbar-button--dark {
  105. color: var(--admin-toolbar-color-gray-990);
  106. }
  107. .toolbar-button--large {
  108. padding: var(--admin-toolbar-space-8) var(--admin-toolbar-space-16);
  109. font-size: var(--admin-toolbar-font-size-info-lg);
  110. line-height: var(--admin-toolbar-line-height-info-lg);
  111. }
  112. .toolbar-button--non-interactive {
  113. &:hover,
  114. &:focus,
  115. &:hover:focus {
  116. z-index: 1;
  117. cursor: auto;
  118. color: var(--toolbar-button-color);
  119. outline: 0;
  120. background-color: var(--toolbar-button-bg);
  121. }
  122. }
  123. .toolbar-button--small-offset {
  124. --toolbar-button-outline-offset: calc(-1 * var(--admin-toolbar-space-4));
  125. }
  126. /* Class starts with `toolbar-button--icon` */
  127. [class*="toolbar-button--icon"] {
  128. padding-inline: var(--admin-toolbar-space-10);
  129. }
  130. [class*="toolbar-button--icon"]:not(:has(.toolbar-button__icon)) {
  131. &::before {
  132. flex-shrink: 0;
  133. content: attr(data-icon-text) / "";
  134. text-align: center;
  135. color: currentColor;
  136. font-size: calc(0.75 * var(--admin-toolbar-rem));
  137. inline-size: var(--toolbar-button-icon-size);
  138. }
  139. }
  140. .toolbar-button--primary {
  141. --toolbar-button-color: var(--admin-toolbar-color-white);
  142. --toolbar-button-bg: var(--admin-toolbar-color-blue-450);
  143. --toolbar-button-hover-color: var(--admin-toolbar-color-white);
  144. --toolbar-button-hover-bg: var(--admin-toolbar-color-blue-600);
  145. --toolbar-button-focus-color: var(--admin-toolbar-color-white);
  146. }
  147. .toolbar-button--weight--400 {
  148. font-variation-settings: "wght" 400;
  149. }
  150. /* Set 0 specificity */
  151. :where(.toolbar-button) {
  152. display: flex;
  153. flex-grow: 1;
  154. }
  155. .toolbar-button--expand--down {
  156. &[aria-expanded="true"] {
  157. &:focus,
  158. &:hover {
  159. border-bottom-right-radius: 0;
  160. border-bottom-left-radius: 0;
  161. }
  162. }
  163. }
  164. [dir="ltr"] & .toolbar-button--icon--announcements-feed-announcement .toolbar-button__icon {
  165. scale: -1 1;
  166. }
  167. .toolbar-button--collapsible {
  168. & .toolbar-button__chevron {
  169. display: none;
  170. }
  171. & .toolbar-button__label {
  172. position: absolute;
  173. overflow: hidden;
  174. clip: rect(0 0 0 0);
  175. width: 1px;
  176. height: 1px;
  177. white-space: nowrap;
  178. clip-path: inset(50%);
  179. opacity: 0;
  180. }
  181. [data-admin-toolbar="expanded"]
  182. & .toolbar-button__label {
  183. position: relative;
  184. clip: revert;
  185. width: auto;
  186. height: auto;
  187. white-space: wrap;
  188. clip-path: none;
  189. opacity: 1;
  190. }
  191. }
  192. [data-admin-toolbar-animating]
  193. }
  194. }
  195. .toolbar-button__chevron {
  196. flex-shrink: 0;
  197. margin-inline-start: auto;
  198. transition: rotate var(--admin-toolbar-transition);
  199. fill: currentColor;
  200. block-size: var(--admin-toolbar-space-16);
  201. inline-size: var(--admin-toolbar-space-16);
  202. :where([dir="rtl"])
  203. .toolbar-button--expand--down
  204. .toolbar-button--expand--down[aria-expanded="true"]
  205. }
  206. .toolbar-button__icon {
  207. --icon-color: currentColor;
  208. fill: var(--icon-color);
  209. flex-shrink: 0;
  210. inline-size: var(--toolbar-button-icon-size);
  211. block-size: var(--toolbar-button-icon-size);
  212. @media (forced-colors: active) {
  213. --icon-color: canvasText;
  214. &,
  215. path {
  216. &[fill]:not([fill="none"]) {
  217. fill: var(--icon-color);
  218. }
  219. &[stroke]:not([stroke="none"]) {
  220. stroke: var(--icon-color);
  221. }
  222. }
  223. }
  224. }
  225. button.toolbar-button .toolbar-button__icon {
  226. @media (forced-colors: active) {
  227. --icon-color: buttonText;
  228. }
  229. }
  230. a.toolbar-button .toolbar-button__icon {
  231. @media (forced-colors: active) {
  232. --icon-color: linkText;
  233. }
  234. }
  235. }

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