You are here

nav-primary.pcss.css in Drupal 9

Same filename and directory in other branches
  1. 10 core/themes/olivero/css/components/navigation/nav-primary.pcss.css

Nav Primary.

File

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