You are here

action-link.pcss.css in Drupal 9

Styles for action links.

Contains Action link component and the action-links layout styles.

File

core/themes/claro/css/components/action-link.pcss.css
View source
  1. /**
  2. * @file
  3. * Styles for action links.
  4. *
  5. * Contains Action link component and the action-links layout styles.
  6. */
  7. @import "../base/variables.pcss.css";
  8. /**
  9. * Action links layout.
  10. */
  11. .action-links,
  12. [dir="rtl"] .action-links {
  13. margin: var(--space-l) 0;
  14. list-style: none;
  15. }
  16. .action-links__item {
  17. display: inline-block;
  18. }
  19. .action-links__item + .action-links__item > .action-link {
  20. margin-left: var(--space-s); /* LTR */
  21. }
  22. [dir="rtl"] .action-links__item + .action-links__item > .action-link {
  23. margin-right: var(--space-s);
  24. margin-left: 0;
  25. }
  26. .action-links__item + .action-links__item > .action-link--small {
  27. margin-left: var(--space-xs); /* LTR */
  28. }
  29. [dir="rtl"] .action-links__item + .action-links__item > .action-link--small {
  30. margin-right: var(--space-xs);
  31. margin-left: 0;
  32. }
  33. /**
  34. * The action link component.
  35. */
  36. .action-link {
  37. display: inline-block;
  38. padding: calc(var(--space-m) - ((var(--space-l) - var(--space-m)) / 2)) var(--space-m);
  39. cursor: pointer;
  40. text-decoration: none;
  41. color: var(--color-davysgray);
  42. border-radius: var(--button-border-radius-size);
  43. background-color: var(--color-bg);
  44. font-size: var(--font-size-base);
  45. font-weight: 700;
  46. line-height: var(--space-l); /* Bigger line-height needed to prevent the icon from increasing the height */
  47. -webkit-font-smoothing: antialiased;
  48. }
  49. /* Small variant. */
  50. .no-touchevents .action-link--small {
  51. padding: calc(var(--space-s) - ((var(--space-l) - var(--space-s)) / 2)) var(--space-s);
  52. font-size: var(--font-size-s);
  53. }
  54. /* Extra small variant. */
  55. .no-touchevents .action-link--extrasmall {
  56. padding: 0 var(--space-xs);
  57. font-size: var(--font-size-s);
  58. }
  59. .action-link + .action-link {
  60. margin-left: var(--space-s); /* LTR */
  61. }
  62. [dir="rtl"] .action-link + .action-link {
  63. margin-right: var(--space-s);
  64. margin-left: 0;
  65. }
  66. .no-touchevents .action-link--small + .action-link--small,
  67. .no-touchevents .action-link--extrasmall + .action-link--extrasmall {
  68. margin-left: var(--space-xs); /* LTR */
  69. }
  70. [dir="rtl"] .no-touchevents .action-link--small + .action-link--small,
  71. [dir="rtl"] .no-touchevents .action-link--extrasmall + .action-link--extrasmall {
  72. margin-right: var(--space-xs);
  73. margin-left: 0;
  74. }
  75. /**
  76. * Action links inside form-actions.
  77. *
  78. * Add the same margin for action-link inside form-actions as button has.
  79. */
  80. .form-actions .action-link {
  81. margin-right: var(--space-s); /* LTR */
  82. margin-left: 0; /* LTR */
  83. }
  84. [dir="rtl"] .form-actions .action-link {
  85. margin-right: 0;
  86. margin-left: var(--space-s);
  87. }
  88. /* Action link states */
  89. .action-link:hover {
  90. text-decoration: none;
  91. color: var(--color-absolutezero-hover);
  92. background-color: var(--color-bgblue-hover);
  93. }
  94. .action-link:focus {
  95. position: relative;
  96. z-index: 1;
  97. text-decoration: none;
  98. }
  99. .action-link:active {
  100. color: var(--color-absolutezero-active);
  101. background-color: var(--color-bgblue-active);
  102. }
  103. /**
  104. * Action link variants.
  105. */
  106. /* Danger. */
  107. .action-link--danger {
  108. color: var(--color-maximumred);
  109. }
  110. .action-link--danger:hover {
  111. color: var(--color-maximumred-hover);
  112. background-color: var(--color-bgred-hover);
  113. }
  114. .action-link--danger:active {
  115. color: var(--color-maximumred-active);
  116. background-color: var(--color-bgred-active);
  117. }
  118. /**
  119. * Action link icons with states.
  120. *
  121. * We use parent-relative units here to follow the .action-link's font size.
  122. */
  123. /* Defaults for icons */
  124. .action-link::before {
  125. position: relative;
  126. top: 0.125rem; /* Set the proper vertical alignment */
  127. display: inline-block;
  128. width: 1em;
  129. height: 1em;
  130. margin-right: 0.5em; /* LTR */
  131. margin-left: calc(var(--space-s) - var(--space-m)); /* LTR */
  132. background-repeat: no-repeat;
  133. background-position: center;
  134. background-size: contain;
  135. }
  136. [dir="rtl"] .action-link::before {
  137. margin-right: calc(var(--space-s) - var(--space-m));
  138. margin-left: 0.5em;
  139. }
  140. .no-touchevents .action-link--small::before,
  141. .no-touchevents .action-link--extrasmall::before {
  142. top: 0.0625rem; /* Set the proper vertical alignment */
  143. width: var(--space-s);
  144. height: var(--space-s);
  145. }
  146. .no-touchevents .action-link--extrasmall::before {
  147. margin-right: 0.4em; /* LTR */
  148. margin-left: -0.125rem; /* LTR */
  149. }
  150. [dir="rtl"].no-touchevents .action-link--extrasmall::before {
  151. margin-right: -0.125rem;
  152. margin-left: 0.4em;
  153. }
  154. /**
  155. * Hide action link icons for IE11.
  156. *
  157. * IE 11 does not display inline svg backgrounds
  158. */
  159. @media screen and (-ms-high-contrast: active) {
  160. /* stylelint-disable-next-line selector-type-no-unknown */
  161. _:-ms-fullscreen,
  162. .action-link::before {
  163. display: none;
  164. }
  165. }
  166. /* Plus */
  167. .action-link--icon-plus::before {
  168. content: "";
  169. background-image: url(../../images/icons/545560/plus.svg);
  170. }
  171. .action-link--icon-plus:hover::before {
  172. background-image: url(../../images/icons/0036b1/plus.svg);
  173. }
  174. .action-link--icon-plus:active::before {
  175. background-image: url(../../images/icons/00309e/plus.svg);
  176. }
  177. /* Plus — danger */
  178. .action-link--icon-plus.action-link--danger::before {
  179. background-image: url(../../images/icons/d72222/plus.svg);
  180. }
  181. .action-link--icon-plus.action-link--danger:hover::before {
  182. background-image: url(../../images/icons/c11f1f/plus.svg);
  183. }
  184. .action-link--icon-plus.action-link--danger:active::before {
  185. background-image: url(../../images/icons/ab1b1b/plus.svg);
  186. }
  187. @media screen and (-ms-high-contrast: active) {
  188. .action-link--icon-plus.action-link--icon-plus.action-link--icon-plus::before {
  189. background-image: url(../../images/icons/windowText/plus.svg);
  190. }
  191. }
  192. /* Trash */
  193. .action-link--icon-trash::before {
  194. content: "";
  195. background-image: url(../../images/icons/545560/trash.svg);
  196. }
  197. .action-link--icon-trash:hover::before {
  198. background-image: url(../../images/icons/0036b1/trash.svg);
  199. }
  200. .action-link--icon-trash:active::before {
  201. background-image: url(../../images/icons/00309e/trash.svg);
  202. }
  203. /* Trash — danger */
  204. .action-link--icon-trash.action-link--danger::before {
  205. background-image: url(../../images/icons/d72222/trash.svg);
  206. }
  207. .action-link--icon-trash.action-link--danger:hover::before {
  208. background-image: url(../../images/icons/c11f1f/trash.svg);
  209. }
  210. .action-link--icon-trash.action-link--danger:active::before {
  211. background-image: url(../../images/icons/ab1b1b/trash.svg);
  212. }
  213. @media screen and (-ms-high-contrast: active) {
  214. .action-link--icon-trash.action-link--icon-trash.action-link--icon-trash::before {
  215. background-image: url(../../images/icons/windowText/trash.svg) !important;
  216. }
  217. }
  218. /* Ex */
  219. .action-link--icon-ex::before {
  220. content: "";
  221. background-image: url(../../images/icons/545560/ex.svg);
  222. }
  223. .action-link--icon-ex:hover::before {
  224. background-image: url(../../images/icons/0036b1/ex.svg);
  225. }
  226. .action-link--icon-ex:active::before {
  227. background-image: url(../../images/icons/00309e/ex.svg);
  228. }
  229. /* Ex — danger */
  230. .action-link--icon-ex.action-link--danger::before {
  231. background-image: url(../../images/icons/d72222/ex.svg);
  232. }
  233. .action-link--icon-ex.action-link--danger:hover::before {
  234. background-image: url(../../images/icons/c11f1f/ex.svg);
  235. }
  236. .action-link--icon-ex.action-link--danger:active::before {
  237. background-image: url(../../images/icons/ab1b1b/ex.svg);
  238. }
  239. @media screen and (-ms-high-contrast: active) {
  240. .action-link--icon-ex.action-link--icon-ex.action-link--icon-ex::before {
  241. background-image: url(../../images/icons/windowText/ex.svg) !important;
  242. }
  243. }
  244. /* Checkmark */
  245. .action-link--icon-checkmark::before {
  246. content: "";
  247. background-image: url(../../images/icons/545560/checkmark.svg);
  248. }
  249. .action-link--icon-checkmark:hover::before {
  250. background-image: url(../../images/icons/0036b1/checkmark.svg);
  251. }
  252. .action-link--icon-checkmark:active::before {
  253. background-image: url(../../images/icons/00309e/checkmark.svg);
  254. }
  255. /* Checkmark — danger */
  256. .action-link--icon-checkmark.action-link--danger::before {
  257. background-image: url(../../images/icons/d72222/checkmark.svg);
  258. }
  259. .action-link--icon-checkmark.action-link--danger:hover::before {
  260. background-image: url(../../images/icons/c11f1f/checkmark.svg);
  261. }
  262. .action-link--icon-checkmark.action-link--danger:active::before {
  263. background-image: url(../../images/icons/ab1b1b/checkmark.svg);
  264. }
  265. @media screen and (-ms-high-contrast: active) {
  266. .action-link--icon-checkmark.action-link--icon-checkmark.action-link--icon-checkmark::before {
  267. background-image: url(../../images/icons/windowText/checkmark.svg) !important;
  268. }
  269. }
  270. /* Cog */
  271. .action-link--icon-cog::before {
  272. content: "";
  273. background-image: url(../../images/icons/545560/cog.svg);
  274. }
  275. .action-link--icon-cog:hover::before {
  276. background-image: url(../../images/icons/0036b1/cog.svg);
  277. }
  278. .action-link--icon-cog:active::before {
  279. background-image: url(../../images/icons/00309e/cog.svg);
  280. }
  281. /* Cog — danger */
  282. .action-link--icon-cog.action-link--danger::before {
  283. background-image: url(../../images/icons/d72222/cog.svg);
  284. }
  285. .action-link--icon-cog.action-link--danger:hover::before {
  286. background-image: url(../../images/icons/c11f1f/cog.svg);
  287. }
  288. .action-link--icon-cog.action-link--danger:active::before {
  289. background-image: url(../../images/icons/ab1b1b/cog.svg);
  290. }
  291. @media screen and (-ms-high-contrast: active) {
  292. .action-link--icon-cog.action-link--icon-cog.action-link--icon-cog::before {
  293. background-image: url(../../images/icons/windowText/cog.svg) !important;
  294. }
  295. }
  296. /* Show */
  297. .action-link--icon-show::before {
  298. content: "";
  299. background-image: url(../../images/icons/545560/show.svg);
  300. }
  301. .action-link--icon-show:hover::before {
  302. background-image: url(../../images/icons/0036b1/show.svg);
  303. }
  304. .action-link--icon-show:active::before {
  305. background-image: url(../../images/icons/00309e/show.svg);
  306. }
  307. /* Show - danger */
  308. .action-link--icon-show.action-link--danger::before {
  309. background-image: url(../../images/icons/d72222/show.svg);
  310. }
  311. .action-link--icon-show.action-link--danger:hover::before {
  312. background-image: url(../../images/icons/c11f1f/show.svg);
  313. }
  314. .action-link--icon-show.action-link--danger:active::before {
  315. background-image: url(../../images/icons/ab1b1b/show.svg);
  316. }
  317. @media screen and (-ms-high-contrast: active) {
  318. .action-link--icon-show.action-link--icon-show.action-link--icon-show::before {
  319. background-image: url(../../images/icons/windowText/show.svg) !important;
  320. }
  321. }
  322. /* Hide */
  323. .action-link--icon-hide::before {
  324. content: "";
  325. background-image: url(../../images/icons/545560/hide.svg);
  326. }
  327. .action-link--icon-hide:hover::before {
  328. background-image: url(../../images/icons/0036b1/hide.svg);
  329. }
  330. .action-link--icon-hide:active::before {
  331. background-image: url(../../images/icons/00309e/hide.svg);
  332. }
  333. /* Hide - danger */
  334. .action-link--icon-hide.action-link--danger::before {
  335. background-image: url(../../images/icons/d72222/hide.svg);
  336. }
  337. .action-link--icon-hide.action-link--danger:hover::before {
  338. background-image: url(../../images/icons/c11f1f/hide.svg);
  339. }
  340. .action-link--icon-hide.action-link--danger:active::before {
  341. background-image: url(../../images/icons/ab1b1b/hide.svg);
  342. }
  343. @media screen and (-ms-high-contrast: active) {
  344. .action-link--icon-hide.action-link--icon-hide.action-link--icon-hide::before {
  345. background-image: url(../../images/icons/windowText/hide.svg);
  346. }
  347. }
  348. /* Key */
  349. .action-link--icon-key::before {
  350. content: "";
  351. background-image: url("../../images/icons/545560/key.svg");
  352. }
  353. .action-link--icon-key:hover::before {
  354. background-image: url("../../images/icons/0036b1/key.svg");
  355. }
  356. .action-link--icon-key:active::before {
  357. background-image: url("../../images/icons/00309e/key.svg");
  358. }
  359. /* Key — danger */
  360. .action-link--icon-key.action-link--danger::before {
  361. background-image: url("../../images/icons/d72222/key.svg");
  362. }
  363. .action-link--icon-key.action-link--danger:hover::before {
  364. background-image: url("../../images/icons/c11f1f/key.svg");
  365. }
  366. .action-link--icon-key.action-link--danger:active::before {
  367. background-image: url("../../images/icons/ab1b1b/key.svg");
  368. }
  369. @media screen and (-ms-high-contrast: active) {
  370. .action-link--icon-key.action-link--icon-key.action-link--icon-key::before {
  371. background-image: url("../../images/icons/windowText/key.svg") !important;
  372. }
  373. }
  374. /* Question Mark */
  375. .action-link--icon-questionmark::before {
  376. content: "";
  377. background-image: url("../../images/icons/545560/questionmark.svg");
  378. }
  379. .action-link--icon-questionmark:hover::before {
  380. background-image: url("../../images/icons/0036b1/questionmark.svg");
  381. }
  382. .action-link--icon-questionmark:active::before {
  383. background-image: url("../../images/icons/00309e/questionmark.svg");
  384. }
  385. /* Question Mark - danger */
  386. .action-link--icon-questionmark.action-link--danger::before {
  387. background-image: url("../../images/icons/d72222/questionmark.svg");
  388. }
  389. .action-link--icon-questionmark.action-link--danger:hover::before {
  390. background-image: url("../../images/icons/c11f1f/questionmark.svg");
  391. }
  392. .action-link--icon-questionmark.action-link--danger:active::before {
  393. background-image: url("../../images/icons/ab1b1b/questionmark.svg");
  394. }
  395. @media screen and (-ms-high-contrast: active) {
  396. .action-link--icon-questionmark.action-link--icon-questionmark.action-link--icon-questionmark::before {
  397. background-image: url("../../images/icons/windowText/questionmark.svg") !important;
  398. }
  399. }