tabs.css

Same filename in this branch
  1. 11.x core/profiles/demo_umami/themes/umami/css/components/navigation/tabs/tabs.css
  2. 11.x core/profiles/demo_umami/themes/umami/css/components/regions/tabs/tabs.css
  3. 11.x core/themes/olivero/css/components/tabs.css
  4. 11.x core/themes/claro/css/components/tabs.css
  5. 11.x core/themes/starterkit_theme/css/components/tabs.css
  6. 11.x core/themes/admin/migration/css/components/tabs.css
  7. 11.x core/themes/admin/css/components/tabs.css
  8. 11.x core/themes/default_admin/migration/css/components/tabs.css
Same filename and directory in other branches
  1. 8.9.x core/assets/vendor/jquery.ui/themes/base/tabs.css
  2. 10 core/profiles/demo_umami/themes/umami/css/components/navigation/tabs/tabs.css
  3. 10 core/profiles/demo_umami/themes/umami/css/components/regions/tabs/tabs.css
  4. 10 core/themes/olivero/css/components/tabs.css
  5. 10 core/themes/claro/css/components/tabs.css
  6. 10 core/themes/starterkit_theme/css/components/tabs.css
  7. 9 core/profiles/demo_umami/themes/umami/css/components/navigation/tabs/tabs.css
  8. 9 core/profiles/demo_umami/themes/umami/css/components/regions/tabs/tabs.css
  9. 9 core/profiles/demo_umami/themes/umami/css/classy/components/tabs.css
  10. 9 core/themes/olivero/css/components/tabs.css
  11. 9 core/themes/seven/css/components/tabs.css
  12. 9 core/themes/seven/css/classy/components/tabs.css
  13. 9 core/themes/claro/css/components/tabs.css
  14. 9 core/themes/bartik/css/components/tabs.css
  15. 9 core/themes/bartik/css/classy/components/tabs.css
  16. 9 core/themes/starterkit_theme/css/components/tabs.css
  17. 9 core/themes/classy/css/components/tabs.css
  18. 8.9.x core/profiles/demo_umami/themes/umami/css/components/navigation/tabs/tabs.css
  19. 8.9.x core/profiles/demo_umami/themes/umami/css/classy/components/tabs.css
  20. 8.9.x core/themes/seven/css/components/tabs.css
  21. 8.9.x core/themes/seven/css/classy/components/tabs.css
  22. 8.9.x core/themes/claro/css/components/tabs.css
  23. 8.9.x core/themes/bartik/css/components/tabs.css
  24. 8.9.x core/themes/bartik/css/classy/components/tabs.css
  25. 8.9.x core/themes/classy/css/components/tabs.css
  26. main core/profiles/demo_umami/themes/umami/css/components/navigation/tabs/tabs.css
  27. main core/profiles/demo_umami/themes/umami/css/components/regions/tabs/tabs.css
  28. main core/themes/olivero/css/components/tabs.css
  29. main core/themes/claro/css/components/tabs.css
  30. main core/themes/starterkit_theme/css/components/tabs.css
  31. main core/themes/admin/migration/css/components/tabs.css
  32. main core/themes/admin/css/components/tabs.css
  33. main core/themes/default_admin/migration/css/components/tabs.css
  34. main core/themes/default_admin/css/components/tabs.css
/*
 * 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(--admin-radius-2xs);
  --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(--admin-color-border);
  --tabs-trigger-border: 1px solid rgb(216, 217, 224, 0.8);
}
.tabs-wrapper {
  box-sizing: border-box;
  padding: 0 var(--admin-space-xs);
  margin-inline: calc(var(--admin-space-xs) * -1);

  *,
  *::before,
  *::after {
    box-sizing: border-box;
  }

  @media (min-width: 48rem) {
    display: flex;
    padding: 0;
  }
}
.tabs {
  display: flex;
  flex-direction: column;
  margin: 0 0 var(--admin-space-l);
  list-style: none;
  border: var(--tabs-base-border);
  border-radius: var(--tabs-border-radius-size);
  inline-size: 100%;

  &.is-open {
    .tabs__tab.is-active::before {
      border-end-start-radius: 0;
    }
  }

  .is-horizontal & {
    @media (min-width: 48rem) {
      flex-direction: row;
      align-items: flex-end;
      width: 100%;
      margin: 0;
      border: 0;
      padding-block: 0;
      padding-inline: var(--admin-space-xs);
    }
  }

  .gin--dark-mode & {
    border-color: var(--admin-color-border);

    .tabs-wrapper:not(.is-horizontal) & {
      border-color: #8e929c;
    }
  }
}
.tabs--primary {
  @media (min-width: 48rem) {
    margin-block-end: 0;

    .gin--high-contrast-mode .is-horizontal &::after {
      border-block-end: 1px solid;
    }
  }
}
.tabs--secondary {
  .is-horizontal & {
    @media (min-width: 48rem) {
      position: relative; /* Anchor ::after */
      overflow: hidden;
      margin-inline: calc(calc(var(--tabs--focus-height) + 0.1875rem) * -1);
      padding-block: calc(var(--tabs--focus-height) + 0.1875rem) 0;
      padding-inline: calc(var(--tabs--focus-height) + 0.1875rem);
      border-radius: 0;

      &::before {
        width: 100%;
      }

      &::after {
        position: absolute;
        display: block;
        width: 100%;
        max-width: calc(100% - var(--admin-space-m));
        content: "";
        pointer-events: none;
        border-block-end: 1px solid var(--admin-color-border);
        inset-block-end: 0;
        inset-inline-start: 0;
      }

      .tabs__tab {
        font-size: var(--admin-font-size-s);
      }

      .tabs__link {
        min-block-size: var(--tabs-secondary-link-height);
        padding-block: var(--admin-space-xs);

        &:focus {
          min-block-size: var(--tabs-secondary-link-height);
        }
      }
    }
  }
}
.tabs__tab {
  position: relative;
  border-block-end: var(--tabs-base-border);
  background-color: var(--admin-color-bg-surface-nested);
  font-size: var(--admin-font-size-s);
  font-weight: var(--admin-font-weight-semibold);

  &:last-child {
    border-block-end: 0;
  }

  &.is-active {
    display: flex;
    justify-content: space-between;

    /* Vertical line that indicates active state. */
    &::before {
      z-index: 2;
      inset-block-start: -1px;
      inset-inline-start: -1px;
      inline-size: var(--tabs--active-height);
      block-size: calc(100% + 2px);
      border-inline-start: var(--tabs--active-height) solid var(--admin-color-primary);
      border-start-start-radius: var(--tabs-border-radius-size);
    }
  }

  .is-horizontal .tabs--primary & {
    border-block-end: 1px solid var(--admin-color-border);
    background-color: var(--admin-color-bg-surface);

    &:not(:is(.is-active, .tabs.is-open > *)) {
      display: none;

      @media (min-width: 48rem) {
        display: flex;
      }
    }

    /* Remove the bottom border from the first tab only if the tabs group is closed. */
    &[data-original-order="0"]:not(.tabs.is-open *) {
      border-block-end: none;
    }

    @media (min-width: 48rem) {
      border-block-end: none;
      background-color: unset;
    }
  }

  .is-horizontal & {
    @media (min-width: 48rem) {
      display: block;
      border-block: none;
      background: none;
      font-size: var(--admin-font-size-m);

      &.is-active {
        order: 0;

        &::before {
          content: none;
        }
      }
    }
  }

  .gin--dark-mode & {
    &,
    &.is-active {
      border-color: var(--admin-color-border);
      background-color: transparent;
    }

    .tabs-wrapper:not(.is-horizontal) & {
      border-color: #8e929c;
      background-color: var(--admin-color-bg-item-hover);
    }
  }
}
.tabs__link {
  display: flex;
  flex-grow: 1;
  align-items: center;
  -webkit-text-decoration: none;
  text-decoration: none;
  color: var(--admin-color-text);
  /* font-weight: var(--admin-font-weight-semibold); */
  background-color: var(--admin-color-bg-surface);
  line-height: 1.2rem;
  padding-block: var(--admin-space-s);
  padding-inline: var(--admin-space-l);

  &:hover {
    -webkit-text-decoration: none;
    text-decoration: none;
    color: var(--admin-color-text);
  }

  &.is-active {
    position: relative;

    &:hover {
      color: var(--admin-color-text);
    }

    &::before {
      position: absolute;
      z-index: 2;
      top: -1px;
      width: var(--tabs--active-height);
      height: calc(100% + 2px);
      content: "";
      border-inline-start: 0.1875rem solid var(--admin-color-link);
      inset-inline-start: -1px;
      border-start-start-radius: var(--tabs-border-radius-size);
    }

    @media (min-width: 48rem) {
      &::before {
        content: none;
      }
    }
  }

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

  .is-horizontal .tabs--primary & {
    height: 100%;
    min-height: 2rem;
    margin-inline-end: 0.25em;
    font-size: var(--admin-font-size-m);
    padding-block: calc(var(--admin-space-l) - var(--admin-space-2xs));
    padding-inline: var(--admin-space-l);

    &.is-active {
      color: var(--admin-color-primary-active);
    }

    @media (min-width: 48rem) {
      min-height: 2rem;
      margin-inline-end: 0.25em;
      border-radius: 2rem;
      font-size: var(--admin-font-size-m);
      padding-block: calc(var(--admin-space-xs) - 2px);
      padding-inline: var(--admin-space-s);

      &.is-active {
        border: solid 1px transparent; /* Forced-colors mode. */
        background: var(--admin-color-primary-soft);
      }
    }
  }

  .is-horizontal .tabs--secondary & {
    @media (min-width: 48rem) {
      padding: var(--admin-space-m);
      border-radius: var(--admin-radius-m) var(--admin-radius-m) 0 0;

      &.is-active {
        color: var(--admin-color-primary);

        &::before {
          all: revert;
          position: absolute;
          content: "";
          inset: auto 0 0;
          border-block-end: var(--tabs--active-height) solid var(--admin-color-primary);
        }
      }
    }
  }

  .is-horizontal &:is(:hover, :focus) {
    color: var(--admin-color-primary);
    background: var(--admin-color-bg-item-hover);
  }

  @media (min-width: 48rem) {
    text-align: center;
    text-wrap: balance;
    background: unset;
  }
}
.tabs__trigger {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0;
  padding-inline-end: 1px;
  cursor: pointer;
  text-align: center;
  border: 0;
  border-inline-start: var(--tabs-trigger-border);
  background-color: var(--admin-color-bg-surface);
  line-height: inherit;
  appearance: none;
  inline-size: var(--tabs-link-height);

  &:focus {
    z-index: 1;
  }

  path {
    fill: currentColor;
    stroke: currentColor;
  }

  .is-horizontal & {
    @media (min-width: 48rem) {
      display: none;
    }
  }

  @media (forced-colors: active) {
    svg path {
      fill: currentColor;
    }
  }
}

File

core/themes/default_admin/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(--admin-radius-2xs);
  15. --tabs--focus-height: 0.1875rem;
  16. --tabs--active-height: 0.1875rem;
  17. --tabs-link-height: 3rem; /* 48px */
  18. --tabs-secondary-link-height: 2.5rem; /* 40px */
  19. --tabs-base-border: 1px solid var(--admin-color-border);
  20. --tabs-trigger-border: 1px solid rgb(216, 217, 224, 0.8);
  21. }
  22. .tabs-wrapper {
  23. box-sizing: border-box;
  24. padding: 0 var(--admin-space-xs);
  25. margin-inline: calc(var(--admin-space-xs) * -1);
  26. *,
  27. *::before,
  28. *::after {
  29. box-sizing: border-box;
  30. }
  31. @media (min-width: 48rem) {
  32. display: flex;
  33. padding: 0;
  34. }
  35. }
  36. .tabs {
  37. display: flex;
  38. flex-direction: column;
  39. margin: 0 0 var(--admin-space-l);
  40. list-style: none;
  41. border: var(--tabs-base-border);
  42. border-radius: var(--tabs-border-radius-size);
  43. inline-size: 100%;
  44. &.is-open {
  45. .tabs__tab.is-active::before {
  46. border-end-start-radius: 0;
  47. }
  48. }
  49. .is-horizontal
  50. }
  51. .gin--dark-mode
  52. }
  53. }
  54. .tabs--primary {
  55. @media (min-width: 48rem) {
  56. margin-block-end: 0;
  57. .gin--high-contrast-mode .is-horizontal &::after {
  58. border-block-end: 1px solid;
  59. }
  60. }
  61. }
  62. .tabs--secondary {
  63. .is-horizontal
  64. &::after {
  65. position: absolute;
  66. display: block;
  67. width: 100%;
  68. max-width: calc(100% - var(--admin-space-m));
  69. content: "";
  70. pointer-events: none;
  71. border-block-end: 1px solid var(--admin-color-border);
  72. inset-block-end: 0;
  73. inset-inline-start: 0;
  74. }
  75. .tabs__tab {
  76. font-size: var(--admin-font-size-s);
  77. }
  78. .tabs__link {
  79. min-block-size: var(--tabs-secondary-link-height);
  80. padding-block: var(--admin-space-xs);
  81. &:focus {
  82. min-block-size: var(--tabs-secondary-link-height);
  83. }
  84. }
  85. }
  86. }
  87. }
  88. .tabs__tab {
  89. position: relative;
  90. border-block-end: var(--tabs-base-border);
  91. background-color: var(--admin-color-bg-surface-nested);
  92. font-size: var(--admin-font-size-s);
  93. font-weight: var(--admin-font-weight-semibold);
  94. &:last-child {
  95. border-block-end: 0;
  96. }
  97. &.is-active {
  98. display: flex;
  99. justify-content: space-between;
  100. /* Vertical line that indicates active state. */
  101. &::before {
  102. z-index: 2;
  103. inset-block-start: -1px;
  104. inset-inline-start: -1px;
  105. inline-size: var(--tabs--active-height);
  106. block-size: calc(100% + 2px);
  107. border-inline-start: var(--tabs--active-height) solid var(--admin-color-primary);
  108. border-start-start-radius: var(--tabs-border-radius-size);
  109. }
  110. }
  111. .is-horizontal .tabs--primary
  112. }
  113. /* Remove the bottom border from the first tab only if the tabs group is closed. */
  114. &[data-original-order="0"]:not(.tabs.is-open *) {
  115. border-block-end: none;
  116. }
  117. @media (min-width: 48rem) {
  118. border-block-end: none;
  119. background-color: unset;
  120. }
  121. }
  122. .is-horizontal
  123. }
  124. }
  125. }
  126. .gin--dark-mode
  127. .tabs-wrapper:not(.is-horizontal)
  128. }
  129. }
  130. .tabs__link {
  131. display: flex;
  132. flex-grow: 1;
  133. align-items: center;
  134. -webkit-text-decoration: none;
  135. text-decoration: none;
  136. color: var(--admin-color-text);
  137. /* font-weight: var(--admin-font-weight-semibold); */
  138. background-color: var(--admin-color-bg-surface);
  139. line-height: 1.2rem;
  140. padding-block: var(--admin-space-s);
  141. padding-inline: var(--admin-space-l);
  142. &:hover {
  143. -webkit-text-decoration: none;
  144. text-decoration: none;
  145. color: var(--admin-color-text);
  146. }
  147. &.is-active {
  148. position: relative;
  149. &:hover {
  150. color: var(--admin-color-text);
  151. }
  152. &::before {
  153. position: absolute;
  154. z-index: 2;
  155. top: -1px;
  156. width: var(--tabs--active-height);
  157. height: calc(100% + 2px);
  158. content: "";
  159. border-inline-start: 0.1875rem solid var(--admin-color-link);
  160. inset-inline-start: -1px;
  161. border-start-start-radius: var(--tabs-border-radius-size);
  162. }
  163. @media (min-width: 48rem) {
  164. &::before {
  165. content: none;
  166. }
  167. }
  168. }
  169. &:not(.is-active):focus {
  170. z-index: 3;
  171. }
  172. .is-horizontal .tabs--primary
  173. @media (min-width: 48rem) {
  174. min-height: 2rem;
  175. margin-inline-end: 0.25em;
  176. border-radius: 2rem;
  177. font-size: var(--admin-font-size-m);
  178. padding-block: calc(var(--admin-space-xs) - 2px);
  179. padding-inline: var(--admin-space-s);
  180. &.is-active {
  181. border: solid 1px transparent; /* Forced-colors mode. */
  182. background: var(--admin-color-primary-soft);
  183. }
  184. }
  185. }
  186. .is-horizontal .tabs--secondary
  187. }
  188. }
  189. }
  190. .is-horizontal &:is(:hover, :focus) {
  191. color: var(--admin-color-primary);
  192. background: var(--admin-color-bg-item-hover);
  193. }
  194. @media (min-width: 48rem) {
  195. text-align: center;
  196. text-wrap: balance;
  197. background: unset;
  198. }
  199. }
  200. .tabs__trigger {
  201. display: flex;
  202. flex-shrink: 0;
  203. align-items: center;
  204. justify-content: center;
  205. margin: 0;
  206. padding: 0;
  207. padding-inline-end: 1px;
  208. cursor: pointer;
  209. text-align: center;
  210. border: 0;
  211. border-inline-start: var(--tabs-trigger-border);
  212. background-color: var(--admin-color-bg-surface);
  213. line-height: inherit;
  214. appearance: none;
  215. inline-size: var(--tabs-link-height);
  216. &:focus {
  217. z-index: 1;
  218. }
  219. path {
  220. fill: currentColor;
  221. stroke: currentColor;
  222. }
  223. .is-horizontal
  224. }
  225. @media (forced-colors: active) {
  226. svg path {
  227. fill: currentColor;
  228. }
  229. }
  230. }

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