You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
3.0 KiB
131 lines
3.0 KiB
/** |
|
* @file |
|
* Button that expands second level nav when clicked. |
|
*/ |
|
|
|
@import "../../base/media-queries.pcss.css"; |
|
|
|
.primary-nav__button-toggle { |
|
position: relative; |
|
overflow: hidden; |
|
width: var(--sp2); |
|
height: var(--sp2); |
|
margin-block-start: var(--sp0-5); /* Visually align button with menu link text. */ |
|
padding-block: 0; |
|
padding-inline-start: 0; |
|
padding-inline-end: 0; |
|
cursor: pointer; |
|
text-indent: -999px; |
|
border: 0; |
|
background: transparent; |
|
-webkit-appearance: none; |
|
|
|
&:focus { |
|
outline: auto 2px var(--color--primary-50); |
|
outline-offset: 2px; |
|
} |
|
|
|
& .icon--menu-toggle { |
|
position: absolute; |
|
/* stylelint-disable csstools/use-logical */ |
|
top: 50%; |
|
left: 50%; |
|
/* stylelint-enable csstools/use-logical */ |
|
width: 16px; |
|
height: 16px; |
|
transition: background-color 0.2s; |
|
transform: translate(-50%, -50%); |
|
border-radius: 2px; |
|
|
|
&::before, |
|
&::after { |
|
position: absolute; |
|
/* stylelint-disable csstools/use-logical */ |
|
top: 50%; |
|
left: 50%; |
|
/* stylelint-enable csstools/use-logical */ |
|
width: var(--sp); |
|
height: 0; |
|
content: ""; |
|
transform: translate(-50%, -50%); |
|
/* Intentionally not using CSS logical properties. */ |
|
border-top: solid 3px var(--color--primary-50); |
|
} |
|
|
|
&::after { |
|
transition: opacity 0.2s; |
|
transform: translate(-50%, -50%) rotate(90deg); |
|
} |
|
} |
|
|
|
&[aria-expanded="true"] .icon--menu-toggle::after { |
|
opacity: 0; |
|
} |
|
|
|
/* aria-hidden attribute is removed by JS. Button is non-functional |
|
until JS is enabled. |
|
*/ |
|
&[aria-hidden="true"] { |
|
pointer-events: none; |
|
} |
|
} |
|
|
|
body:not(.is-always-mobile-nav) { |
|
@media (--nav) { |
|
& .primary-nav__button-toggle { |
|
flex-shrink: 0; |
|
align-self: stretch; |
|
width: calc(var(--sp2) + 8px); |
|
height: auto; |
|
margin-block-start: 0; |
|
margin-inline-end: calc(-1 * var(--sp2)); |
|
|
|
&:focus { |
|
border: 0; |
|
outline: 0; |
|
|
|
& .icon--menu-toggle { |
|
border: solid 2px var(--color--primary-40); |
|
} |
|
} |
|
|
|
&:active { |
|
/* Necessary for Safari. */ |
|
color: currentColor; |
|
} |
|
|
|
&[aria-expanded="true"] .icon--menu-toggle::after { |
|
opacity: 0.8; |
|
} |
|
|
|
& .icon--menu-toggle { |
|
inset-inline-start: 3px; |
|
width: 18px; |
|
transform: translateY(-50%); |
|
border-radius: 4px; |
|
background-color: var(--color--white); |
|
|
|
&::before { |
|
content: none; |
|
} |
|
|
|
&::after { |
|
/* stylelint-disable csstools/use-logical */ |
|
top: calc(50% - 2px); |
|
left: 3px; |
|
/* stylelint-enable csstools/use-logical */ |
|
width: 8px; |
|
height: 8px; |
|
content: ""; |
|
transform: translateY(-50%) rotate(45deg); |
|
opacity: 0.8; |
|
/* Intentionally not using CSS logical properties. */ |
|
border-top: none; |
|
border-right: solid 2px currentColor; |
|
border-bottom: solid 2px currentColor; |
|
background: transparent; |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|