nav-primary.css

Same filename and directory in other branches
  1. 10 core/themes/olivero/css/components/navigation/nav-primary.css
  2. 11.x core/themes/olivero/css/components/navigation/nav-primary.css
  3. 9 core/themes/olivero/css/components/navigation/nav-primary.css

Nav Primary.

File

core/themes/olivero/css/components/navigation/nav-primary.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. * @file
  9. * Nav Primary.
  10. */
  11. .primary-nav__menu {
  12. flex-wrap: wrap;
  13. list-style: none;
  14. }
  15. .primary-nav__menu-item {
  16. margin-block-end: var(--sp0-5);
  17. &:last-child {
  18. margin-block-end: 0;
  19. }
  20. &.primary-nav__menu-item--has-children {
  21. display: flex;
  22. flex-wrap: wrap;
  23. justify-content: space-between;
  24. & .primary-nav__menu-link--link,
  25. & .primary-nav__menu-link--nolink {
  26. /* Ensure that long text doesn't make the mobile expand button wrap. */
  27. flex-basis: calc(100% - var(--sp3));
  28. }
  29. }
  30. }
  31. .primary-nav__menu-link {
  32. flex-grow: 1;
  33. -webkit-text-decoration: none;
  34. text-decoration: none;
  35. color: var(--color-text-neutral-loud);
  36. font-size: 1.75rem;
  37. font-weight: bold;
  38. line-height: var(--sp2);
  39. &:hover {
  40. color: inherit;
  41. }
  42. &:focus {
  43. outline: auto 2px var(--color--primary-50);
  44. outline-offset: 2px;
  45. }
  46. }
  47. .primary-nav__menu-link--nolink {
  48. padding-block: var(--sp0-5);
  49. padding-inline-start: 0;
  50. padding-inline-end: 0;
  51. color: var(--color-text-neutral-soft);
  52. font-weight: normal;
  53. }
  54. .primary-nav__menu-link--button {
  55. position: relative;
  56. padding-block: 0;
  57. padding-inline-start: 0;
  58. padding-inline-end: 0;
  59. cursor: pointer;
  60. text-align: start;
  61. border: 0;
  62. background: transparent;
  63. /* Plus icon for mobile navigation. */
  64. &.primary-nav__menu-link--has-children {
  65. padding-inline-end: var(--sp3); /* Ensure text does not overlap icon. */
  66. &::before,
  67. &::after {
  68. position: absolute;
  69. inset-inline-end: 0.5625rem;
  70. inset-block-start: calc(var(--sp0-5) + 1.0625rem); /* Visually align button with menu link text. */
  71. width: 1.125rem;
  72. height: 0;
  73. content: "";
  74. /* Intentionally not using CSS logical properties. */
  75. border-top: solid 3px var(--color--primary-50);
  76. }
  77. &::after {
  78. transition: opacity 0.2s;
  79. transform: rotate(90deg);
  80. }
  81. &[aria-expanded="true"]::after {
  82. opacity: 0;
  83. }
  84. }
  85. }
  86. .primary-nav__menu-link-inner {
  87. position: relative;
  88. display: inline-flex;
  89. align-items: center;
  90. padding-block: var(--sp0-5);
  91. padding-inline-start: 0;
  92. padding-inline-end: 0;
  93. &::after {
  94. position: absolute;
  95. inset-block-end: 0;
  96. inset-inline-start: 0;
  97. width: 100%;
  98. height: 0;
  99. content: "";
  100. transition: transform 0.2s;
  101. transform: scaleX(0);
  102. transform-origin: left;
  103. /* Intentionally not using CSS logical properties. */
  104. border-top: solid 5px var(--color--primary-50);
  105. }
  106. &::after {
  107. .primary-nav__menu-link:hover
  108. }
  109. }
  110. /*
  111. Top level specific styles.
  112. */
  113. .primary-nav__menu--level-1 {
  114. margin-block: 0;
  115. margin-inline-start: 0;
  116. margin-inline-end: 0;
  117. padding-block: 0;
  118. padding-inline-start: 0;
  119. padding-inline-end: 0;
  120. }
  121. .primary-nav__menu-link--level-1 {
  122. position: relative;
  123. display: flex;
  124. letter-spacing: -1px;
  125. }
  126. /*
  127. Secondary menu specific styles.
  128. */
  129. .primary-nav__menu--level-2 {
  130. visibility: hidden;
  131. overflow: hidden;
  132. flex-basis: 100%;
  133. max-height: 0;
  134. margin-block: 0;
  135. margin-inline-start: calc(-1 * var(--sp));
  136. padding-inline-start: var(--sp2-5);
  137. transition:
  138. opacity 0.2s,
  139. visibility 0.2s,
  140. max-height 0.2s;
  141. opacity: 0;
  142. border-inline-start: solid var(--sp) var(--color--primary-50);
  143. &.is-active-menu-parent {
  144. visibility: visible;
  145. max-height: none;
  146. margin-block-start: var(--sp1-5);
  147. opacity: 1;
  148. }
  149. & .primary-nav__menu-item--level-2 {
  150. &:first-child {
  151. padding-block-start: var(--sp0-25);
  152. }
  153. &:last-child {
  154. padding-block-end: var(--sp0-25);
  155. }
  156. }
  157. @media (min-width: 43.75rem) {
  158. margin-inline-start: calc(-1 * var(--sp3));
  159. padding-inline-start: var(--sp3);
  160. }
  161. }
  162. /*
  163. * Olivero doesn't officially support nested tertiary submenus, but this
  164. * ensures that it doesn't break all the way.
  165. *
  166. * @see https://www.drupal.org/project/drupal/issues/3221399
  167. */
  168. .primary-nav__menu--level-2 .primary-nav__menu-item--has-children {
  169. display: block;
  170. }
  171. .primary-nav__menu-link--level-2 {
  172. font-size: 1rem;
  173. font-weight: normal;
  174. line-height: var(--sp);
  175. }
  176. html:not(.js) {
  177. & .primary-nav__menu--level-2 {
  178. visibility: visible;
  179. max-height: none;
  180. opacity: 1;
  181. }
  182. }
  183. [dir="rtl"] {
  184. & .primary-nav__menu-link-inner {
  185. &::after {
  186. transform-origin: right;
  187. }
  188. }
  189. }

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