123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- $header-icon-size: theme('spacing.4');
- $header-button-size-mobile: $mobile-nice-padding;
- $header-button-size: theme('spacing.8');
- .w-panel {
- margin-bottom: theme('spacing.10');
- }
- .w-panel__header {
- display: flex;
- align-items: center;
- margin-bottom: theme('spacing.3');
- margin-inline-start: -1 * $mobile-nice-padding;
- @include media-breakpoint-up(sm) {
- $gap: theme('spacing.1');
- gap: $gap;
- margin-inline-start: calc(-1 * 2 * ($header-button-size + $gap));
- }
- }
- .w-panel__heading {
- @apply w-h3;
- display: inline-block;
- margin: 0;
- cursor: pointer;
- padding-inline-end: theme('spacing.2');
- @include media-breakpoint-up(sm) {
- padding-inline-end: theme('spacing.5');
- }
- }
- .w-panel__heading--label {
- @apply w-label-1;
- }
- .w-panel__anchor,
- .w-panel__toggle,
- .w-panel__controls .button.button--icon,
- .w-panel__controls-cue {
- @include show-focus-outline-inside();
- display: inline-grid;
- justify-content: center;
- align-content: center;
- color: theme('colors.primary.DEFAULT');
- border-radius: theme('borderRadius.full');
- padding: 0;
- width: $header-button-size-mobile;
- height: $header-button-size-mobile;
- &:focus-visible,
- &:hover {
- background-color: $color-grey-5;
- @media (forced-colors: active) {
- border: 1px solid currentColor;
- }
- }
- &[disabled] {
- color: $color-grey-3;
- cursor: not-allowed;
- // Counter hover styles.
- background-color: transparent;
- @media (forced-colors: active) {
- color: GrayText;
- }
- }
- @include media-breakpoint-up(sm) {
- width: $header-button-size;
- height: $header-button-size;
- }
- }
- .w-panel__anchor {
- // Only hide anchors for devices that support hover interactions.
- @media (hover: hover) {
- .w-panel__header:not(:hover, :focus-within) & {
- opacity: 0;
- }
- }
- }
- // The suffix anchor is intended for small viewports only.
- .w-panel__anchor--suffix {
- @include media-breakpoint-up(sm) {
- display: none;
- }
- }
- // The prefix anchor can be used when there is enough space in the margin of the page.
- .w-panel__anchor--prefix {
- display: none;
- @include media-breakpoint-up(sm) {
- display: inline-grid;
- }
- }
- .w-panel__toggle {
- appearance: none;
- background: transparent;
- }
- .w-panel__icon {
- width: $header-icon-size;
- height: $header-icon-size;
- // Only rotate the default caret icon, not custom ones.
- [aria-expanded='false'] &.icon-arrow-down-big {
- transform: rotate(-90deg);
- }
- &.icon-link {
- width: theme('spacing.[3.5]');
- height: theme('spacing.[3.5]');
- }
- }
- .w-panel__divider {
- flex: 1;
- }
- .w-panel__controls {
- // Add additional invisible padding for a more forgiving hover area.
- padding: theme('spacing.4');
- margin: calc(-1 * theme('spacing.4'));
- margin-inline-end: calc(-1 * theme('spacing.8'));
- margin-inline-start: 0;
- @include media-breakpoint-up(sm) {
- margin: calc(-1 * theme('spacing.4'));
- margin-inline-start: 0;
- }
- // The cue is meant to be displayed on top of a real button.
- > .w-panel__controls-cue {
- position: absolute;
- visibility: hidden;
- }
- @media (hover: hover) {
- // Hiding with opacity only, so the elements can still be focused.
- > * {
- opacity: 0;
- }
- > .w-panel__controls-cue {
- opacity: 1;
- visibility: visible;
- }
- .w-panel__header:is(:hover, :focus-within) & > * {
- opacity: 1;
- // The cue should be fully hidden, not just transparent.
- &.w-panel__controls-cue {
- visibility: hidden;
- }
- }
- }
- }
- .w-panel__wrapper {
- @include max-form-width();
- }
|