// ============================================================================= // Mixins // ============================================================================= // Please note that the mixins partial shouldn't include any classes. This is so // it can be included in any file without accidentally producing output // Turns on font-smoothing when used. Use sparingly. @mixin font-smoothing { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @mixin clearfix() { &:before, &:after { content: ' '; display: table; } &:after { clear: both; } } @mixin unlist() { margin-top: 0; margin-bottom: 0; padding-inline-start: 0; list-style-type: none; font-style: normal; li { list-style-type: none; font-style: normal; } } // remove list styles, but only for the immediate element - // allow nested lists inside it to keep the default style @mixin unlistimmediate() { margin-top: 0; margin-bottom: 0; padding-inline-start: 0; list-style-type: none; font-style: normal; > li { list-style-type: none; font-style: normal; } } @mixin transition($transition...) { body.ready & { transition: $transition; } } @mixin svg-icon($size: 1em, $position: text-top) { width: $size; height: $size; vertical-align: $position; } // Applies given rules on hover, for devices that support hover. @mixin hover { @media (hover: hover) { a:hover { @content; } } } // Where included, show the focus outline within focusable items instead of around them. // This is useful when focusable items are tightly packed and there is no space in-between. @mixin show-focus-outline-inside { outline-offset: -1 * $focus-outline-width; } /** * Apply styles for the dark theme only. */ @mixin dark-theme() { .w-theme-dark & { @content; } @media (prefers-color-scheme: dark) { .w-theme-system & { @content; } } } /** * Apply styles for the light theme only. */ @mixin light-theme() { .w-theme-light & { @content; } @media (prefers-color-scheme: light) { .w-theme-system & { @content; } } }