You are here

tabs.css in Drupal 10

/*
 * DO NOT EDIT THIS FILE.
 * See the following change record for more information,
 * https://www.drupal.org/node/3084859
 * @preserve
 */

/**
 * Tabs.
 */

:root {
  /**
  * Tabs.
  */
  --tabs-border-radius-size: var(--base-border-radius);
  --tabs--hover-height: 0.1875rem;
  --tabs--focus-height: 0.1875rem;
  --tabs--active-height: 0.1875rem;
  --tabs-link-height: 3rem; /* 48px */
  --tabs-secondary-link-height: 2.5rem; /* 40px */
  --tabs-base-border: 1px solid var(--color-gray-200);
  --tabs-base-shadow: 0 2px 0.25rem rgba(0, 0, 0, 0.1);
  --tabs-trigger-border: 1px solid rgba(216, 217, 224, 0.8);
  --tabs--hover-bg-color: var(--color-bgblue-active);
}

.tabs-wrapper > nav {
  width: 100%;
}

.tabs {
  display: flex;
  flex-direction: column;
  width: 100%;
  margin: 0 0 var(--space-l) 0;
  border: var(--tabs-base-border);
  border-radius: var(--tabs-border-radius-size);
  box-shadow: var(--tabs-base-shadow);
}

[dir="rtl"] .tabs {
  margin: 0 0 var(--space-l) 0;
}

.tabs__tab {
  position: relative;
  border-bottom: var(--tabs-base-border);
  background-color: var(--color-gray-025);
  font-size: var(--font-size-s);
  font-weight: bold;
}

.tabs__tab:last-child {
  border-bottom: 0;
}

.tabs__tab.is-active {
  display: flex;
  justify-content: space-between;
  background-color: var(--color-white);
  box-shadow: var(--tabs-base-shadow);
}

.tabs__link {
  position: relative;
  display: flex;
  overflow: hidden;
  flex-grow: 1;
  align-items: center;
  box-sizing: border-box;
  min-height: var(--tabs-link-height);
  padding: var(--space-s) var(--space-l);
  text-decoration: none;
  color: var(--color-gray-800);
  line-height: 1.2rem;
}

.tabs__link:focus {
  min-height: calc(var(--tabs-link-height) + var(--tabs--focus-height) - 1px);
  margin: -1px;
  padding-left: calc(var(--space-l) - var(--tabs--focus-height) + 1px); /* LTR */
  text-decoration: none;
  color: var(--color-gray-800);
  border: var(--tabs--focus-height) solid var(--color-focus);
  border-radius: var(--tabs-border-radius-size);
  outline: none;
  box-shadow: none;
}

[dir="rtl"] .tabs__link:focus {
  padding-right: calc(var(--space-l) - var(--tabs--focus-height) + 1px);
  padding-left: var(--space-l);
}

.tabs__link:hover {
  text-decoration: none;
  color: var(--color-text);
}

.tabs__link.is-active {
  z-index: 1;
  flex-grow: 1;
  color: var(--color-absolutezero);
}

.tabs__link.is-active:focus {
  margin: -1px 0;
  padding-right: var(--space-l);
  padding-left: var(--space-l);
  border-left: none; /* LTR */
  border-radius: 0;
}

.tabs__link:not(.is-active):focus {
  z-index: 3;
}

[dir="rtl"] .tabs__link.is-active:focus {
  border-right: none;
  border-left: var(--tabs--focus-height) solid var(--color-focus);
}

.tabs__link.is-active:hover {
  color: var(--color-text);
}

/* Active and hover indicator. */

.tabs__tab::before,
.tabs__link::before {
  position: absolute;
  display: block;
  content: "";
}

.tabs__tab.is-active::before {
  z-index: 2;
  top: -1px;
  left: -1px; /* LTR */
  width: var(--tabs--active-height);
  height: calc(100% + 2px);
  border-left: var(--tabs--active-height) solid var(--color-absolutezero); /* LTR */
  border-top-left-radius: var(--tabs-border-radius-size); /* LTR */
}

[dir="rtl"] .tabs__tab.is-active::before {
  right: -1px;
  left: auto;
  border-right: var(--tabs--focus-height) solid var(--color-absolutezero);
  border-left: none;
  border-radius: 0 var(--tabs-border-radius-size) 0 var(--tabs-border-radius-size);
}

.tabs.is-open .tabs__tab.is-active::before {
  border-bottom-left-radius: 0; /* LTR */
}

[dir="rtl"] .tabs.is-open .tabs__tab.is-active::before {
  border-bottom-right-radius: var(--tabs-border-radius-size);
}

.tabs__tab.is-active:focus::before {
  top: calc(var(--tabs--focus-height) * -1);
  height: calc(var(--tabs-link-height) + 2px);
}

.tabs__tab:not(.is-active) {
  display: none;
}

.tabs--secondary .tabs__tab:not(.is-active) {
  display: block;
}

.tabs.is-open > .tabs__tab {
  display: flex;
}

.tabs__trigger {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  width: var(--tabs-link-height);
  padding-right: 1px;
  text-align: center;
  border-left: var(--tabs-trigger-border); /* LTR */
}

[dir="rtl"] .tabs__trigger {
  border-right: var(--tabs-trigger-border);
  border-left: none;
}

.tabs__trigger:focus {
  padding-right: 0;
  border: var(--tabs--focus-height) solid var(--color-focus);
  border-radius: var(--tabs-border-radius-size);
  box-shadow: none;
}

@media screen and (min-width: 48em) {
  .tabs-wrapper {
    display: flex;
  }

  .tabs-wrapper--secondary {
    position: relative;
  }

  .is-horizontal .tabs {
    flex-direction: row;
    width: auto;
    margin: 0;
    border: 0;
    box-shadow: none;
  }

  .is-horizontal .tabs--secondary {
    overflow: hidden;
    margin: calc(calc(var(--tabs--focus-height) + 0.1875rem) * -1) calc(calc(var(--tabs--focus-height) + 0.1875rem) * -1) 0;
    padding: calc(var(--tabs--focus-height) + 0.1875rem) calc(var(--tabs--focus-height) + 0.1875rem) 0;
    border-radius: 0;
  }

  .is-horizontal .tabs--secondary .tabs__tab {
    font-size: var(--font-size-s);
  }

  .is-horizontal .tabs--secondary .tabs__link {
    min-height: var(--tabs-secondary-link-height);
    padding-top: var(--space-xs);
    padding-bottom: var(--space-xs);
  }

  .is-horizontal .tabs--secondary .tabs__link:focus {
    min-height: var(--tabs-secondary-link-height);
  }

  .is-horizontal .tabs--secondary::after {
    position: absolute;
    bottom: 0;
    left: 0;
    display: block;
    width: 100%;
    content: "";
    border-bottom: 1px solid var(--color-gray-200);
  }

  .is-horizontal .tabs__tab {
    border-top: none;
    border-bottom: none;
    background: none;
    font-size: var(--font-size-base);
  }

  .is-horizontal .tabs__tab.is-active {
    order: 0;
    background: none;
    box-shadow: none;
  }
  .is-horizontal .tabs__tab.is-active::before {
    content: none;
  }
  .is-horizontal .tabs__tab .tabs__link.is-active::before {
    border-radius: 0;
  }
  .is-horizontal .tabs__trigger {
    display: none;
  }
  .is-horizontal .tabs__tab {
    display: block;
  }

  .is-horizontal .tabs__link {
    padding-right: 2rem;
    padding-left: 2rem;
    border-radius: var(--tabs-border-radius-size) var(--tabs-border-radius-size) 0 0;
  }

  .is-horizontal .tabs__link:focus {
    min-height: var(--tabs-link-height);
    margin: 0;
    padding-right: 2rem;
    padding-left: 2rem;
    color: var(--color-text);
    border: none;
    border-radius: var(--tabs-border-radius-size) var(--tabs-border-radius-size) 0 0;
    outline: 2px dotted transparent;
    box-shadow: 0 0 0 2px var(--color-white), 0 0 0 calc(var(--tabs--focus-height) + 2px) var(--color-focus);
  }
  [dir="rtl"] .is-horizontal .tabs__link:focus {
    border: none;
  }
  .is-horizontal .tabs--primary .tabs__link:focus {
    box-shadow: 0 0 0 2px var(--color-gray-050), 0 0 0 calc(var(--tabs--focus-height) + 2px) var(--color-focus);
  }

  .is-horizontal .tabs__link:hover {
    color: var(--color-absolutezero-hover);
    background: var(--tabs--hover-bg-color);
  }

  .is-horizontal .tabs__link.is-active::before {
    top: auto;
    right: 0;
    bottom: 0;
    left: 0;
    width: 100%;
    height: var(--tabs--active-height);
    border-right: none;
    border-bottom: var(--tabs--active-height) solid var(--color-absolutezero);
    border-left: none;
  }
}

File

core/themes/claro/css/components/tabs.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. /**
  8. * Tabs.
  9. */
  10. :root {
  11. /**
  12. * Tabs.
  13. */
  14. --tabs-border-radius-size: var(--base-border-radius);
  15. --tabs--hover-height: 0.1875rem;
  16. --tabs--focus-height: 0.1875rem;
  17. --tabs--active-height: 0.1875rem;
  18. --tabs-link-height: 3rem; /* 48px */
  19. --tabs-secondary-link-height: 2.5rem; /* 40px */
  20. --tabs-base-border: 1px solid var(--color-gray-200);
  21. --tabs-base-shadow: 0 2px 0.25rem rgba(0, 0, 0, 0.1);
  22. --tabs-trigger-border: 1px solid rgba(216, 217, 224, 0.8);
  23. --tabs--hover-bg-color: var(--color-bgblue-active);
  24. }
  25. .tabs-wrapper > nav {
  26. width: 100%;
  27. }
  28. .tabs {
  29. display: flex;
  30. flex-direction: column;
  31. width: 100%;
  32. margin: 0 0 var(--space-l) 0;
  33. border: var(--tabs-base-border);
  34. border-radius: var(--tabs-border-radius-size);
  35. box-shadow: var(--tabs-base-shadow);
  36. }
  37. [dir="rtl"] .tabs {
  38. margin: 0 0 var(--space-l) 0;
  39. }
  40. .tabs__tab {
  41. position: relative;
  42. border-bottom: var(--tabs-base-border);
  43. background-color: var(--color-gray-025);
  44. font-size: var(--font-size-s);
  45. font-weight: bold;
  46. }
  47. .tabs__tab:last-child {
  48. border-bottom: 0;
  49. }
  50. .tabs__tab.is-active {
  51. display: flex;
  52. justify-content: space-between;
  53. background-color: var(--color-white);
  54. box-shadow: var(--tabs-base-shadow);
  55. }
  56. .tabs__link {
  57. position: relative;
  58. display: flex;
  59. overflow: hidden;
  60. flex-grow: 1;
  61. align-items: center;
  62. box-sizing: border-box;
  63. min-height: var(--tabs-link-height);
  64. padding: var(--space-s) var(--space-l);
  65. text-decoration: none;
  66. color: var(--color-gray-800);
  67. line-height: 1.2rem;
  68. }
  69. .tabs__link:focus {
  70. min-height: calc(var(--tabs-link-height) + var(--tabs--focus-height) - 1px);
  71. margin: -1px;
  72. padding-left: calc(var(--space-l) - var(--tabs--focus-height) + 1px); /* LTR */
  73. text-decoration: none;
  74. color: var(--color-gray-800);
  75. border: var(--tabs--focus-height) solid var(--color-focus);
  76. border-radius: var(--tabs-border-radius-size);
  77. outline: none;
  78. box-shadow: none;
  79. }
  80. [dir="rtl"] .tabs__link:focus {
  81. padding-right: calc(var(--space-l) - var(--tabs--focus-height) + 1px);
  82. padding-left: var(--space-l);
  83. }
  84. .tabs__link:hover {
  85. text-decoration: none;
  86. color: var(--color-text);
  87. }
  88. .tabs__link.is-active {
  89. z-index: 1;
  90. flex-grow: 1;
  91. color: var(--color-absolutezero);
  92. }
  93. .tabs__link.is-active:focus {
  94. margin: -1px 0;
  95. padding-right: var(--space-l);
  96. padding-left: var(--space-l);
  97. border-left: none; /* LTR */
  98. border-radius: 0;
  99. }
  100. .tabs__link:not(.is-active):focus {
  101. z-index: 3;
  102. }
  103. [dir="rtl"] .tabs__link.is-active:focus {
  104. border-right: none;
  105. border-left: var(--tabs--focus-height) solid var(--color-focus);
  106. }
  107. .tabs__link.is-active:hover {
  108. color: var(--color-text);
  109. }
  110. /* Active and hover indicator. */
  111. .tabs__tab::before,
  112. .tabs__link::before {
  113. position: absolute;
  114. display: block;
  115. content: "";
  116. }
  117. .tabs__tab.is-active::before {
  118. z-index: 2;
  119. top: -1px;
  120. left: -1px; /* LTR */
  121. width: var(--tabs--active-height);
  122. height: calc(100% + 2px);
  123. border-left: var(--tabs--active-height) solid var(--color-absolutezero); /* LTR */
  124. border-top-left-radius: var(--tabs-border-radius-size); /* LTR */
  125. }
  126. [dir="rtl"] .tabs__tab.is-active::before {
  127. right: -1px;
  128. left: auto;
  129. border-right: var(--tabs--focus-height) solid var(--color-absolutezero);
  130. border-left: none;
  131. border-radius: 0 var(--tabs-border-radius-size) 0 var(--tabs-border-radius-size);
  132. }
  133. .tabs.is-open .tabs__tab.is-active::before {
  134. border-bottom-left-radius: 0; /* LTR */
  135. }
  136. [dir="rtl"] .tabs.is-open .tabs__tab.is-active::before {
  137. border-bottom-right-radius: var(--tabs-border-radius-size);
  138. }
  139. .tabs__tab.is-active:focus::before {
  140. top: calc(var(--tabs--focus-height) * -1);
  141. height: calc(var(--tabs-link-height) + 2px);
  142. }
  143. .tabs__tab:not(.is-active) {
  144. display: none;
  145. }
  146. .tabs--secondary .tabs__tab:not(.is-active) {
  147. display: block;
  148. }
  149. .tabs.is-open > .tabs__tab {
  150. display: flex;
  151. }
  152. .tabs__trigger {
  153. display: flex;
  154. flex-shrink: 0;
  155. align-items: center;
  156. justify-content: center;
  157. width: var(--tabs-link-height);
  158. padding-right: 1px;
  159. text-align: center;
  160. border-left: var(--tabs-trigger-border); /* LTR */
  161. }
  162. [dir="rtl"] .tabs__trigger {
  163. border-right: var(--tabs-trigger-border);
  164. border-left: none;
  165. }
  166. .tabs__trigger:focus {
  167. padding-right: 0;
  168. border: var(--tabs--focus-height) solid var(--color-focus);
  169. border-radius: var(--tabs-border-radius-size);
  170. box-shadow: none;
  171. }
  172. @media screen and (min-width: 48em) {
  173. .tabs-wrapper {
  174. display: flex;
  175. }
  176. .tabs-wrapper--secondary {
  177. position: relative;
  178. }
  179. .is-horizontal .tabs {
  180. flex-direction: row;
  181. width: auto;
  182. margin: 0;
  183. border: 0;
  184. box-shadow: none;
  185. }
  186. .is-horizontal .tabs--secondary {
  187. overflow: hidden;
  188. margin: calc(calc(var(--tabs--focus-height) + 0.1875rem) * -1) calc(calc(var(--tabs--focus-height) + 0.1875rem) * -1) 0;
  189. padding: calc(var(--tabs--focus-height) + 0.1875rem) calc(var(--tabs--focus-height) + 0.1875rem) 0;
  190. border-radius: 0;
  191. }
  192. .is-horizontal .tabs--secondary .tabs__tab {
  193. font-size: var(--font-size-s);
  194. }
  195. .is-horizontal .tabs--secondary .tabs__link {
  196. min-height: var(--tabs-secondary-link-height);
  197. padding-top: var(--space-xs);
  198. padding-bottom: var(--space-xs);
  199. }
  200. .is-horizontal .tabs--secondary .tabs__link:focus {
  201. min-height: var(--tabs-secondary-link-height);
  202. }
  203. .is-horizontal .tabs--secondary::after {
  204. position: absolute;
  205. bottom: 0;
  206. left: 0;
  207. display: block;
  208. width: 100%;
  209. content: "";
  210. border-bottom: 1px solid var(--color-gray-200);
  211. }
  212. .is-horizontal .tabs__tab {
  213. border-top: none;
  214. border-bottom: none;
  215. background: none;
  216. font-size: var(--font-size-base);
  217. }
  218. .is-horizontal .tabs__tab.is-active {
  219. order: 0;
  220. background: none;
  221. box-shadow: none;
  222. }
  223. .is-horizontal .tabs__tab.is-active::before {
  224. content: none;
  225. }
  226. .is-horizontal .tabs__tab .tabs__link.is-active::before {
  227. border-radius: 0;
  228. }
  229. .is-horizontal .tabs__trigger {
  230. display: none;
  231. }
  232. .is-horizontal .tabs__tab {
  233. display: block;
  234. }
  235. .is-horizontal .tabs__link {
  236. padding-right: 2rem;
  237. padding-left: 2rem;
  238. border-radius: var(--tabs-border-radius-size) var(--tabs-border-radius-size) 0 0;
  239. }
  240. .is-horizontal .tabs__link:focus {
  241. min-height: var(--tabs-link-height);
  242. margin: 0;
  243. padding-right: 2rem;
  244. padding-left: 2rem;
  245. color: var(--color-text);
  246. border: none;
  247. border-radius: var(--tabs-border-radius-size) var(--tabs-border-radius-size) 0 0;
  248. outline: 2px dotted transparent;
  249. box-shadow: 0 0 0 2px var(--color-white), 0 0 0 calc(var(--tabs--focus-height) + 2px) var(--color-focus);
  250. }
  251. [dir="rtl"] .is-horizontal .tabs__link:focus {
  252. border: none;
  253. }
  254. .is-horizontal .tabs--primary .tabs__link:focus {
  255. box-shadow: 0 0 0 2px var(--color-gray-050), 0 0 0 calc(var(--tabs--focus-height) + 2px) var(--color-focus);
  256. }
  257. .is-horizontal .tabs__link:hover {
  258. color: var(--color-absolutezero-hover);
  259. background: var(--tabs--hover-bg-color);
  260. }
  261. .is-horizontal .tabs__link.is-active::before {
  262. top: auto;
  263. right: 0;
  264. bottom: 0;
  265. left: 0;
  266. width: 100%;
  267. height: var(--tabs--active-height);
  268. border-right: none;
  269. border-bottom: var(--tabs--active-height) solid var(--color-absolutezero);
  270. border-left: none;
  271. }
  272. }