Skip to content

_mixins.scss

abstracts/_mixins.scss
@use "colors" as *;
@use "sizes" as *;
@use "tokens" as *;
@use "typography" as *;
// layout
@mixin wrapper-inside {
--padding: #{$wrapper-min-margin-inline} * 2;
--max-width: #{$wrapper-max-width};
width: min(100% - var(--padding), var(--max-width));
margin-inline-start: auto;
margin-inline-end: auto;
}
@mixin button {
display: var(--button-display, $button-display);
justify-content: var(--button-justify-content, $button-justify-content);
align-items: var(--button-align-items, $button-align-items);
gap: var(--button-gap, $button-gap);
padding: var(--button-padding, $button-padding);
background-color: var(--button-bg, $button-bg);
border-color: var(--button-border-color, $button-border-color);
border-radius: var(--button-border-radius, $button-border-radius);
border-style: var(--button-border-style, $button-border-style);
border-width: var(--button-border-width, $button-border-width);
box-shadow: var(--button-box-shadow, $button-box-shadow);
font-family: var(--button-font-family, $button-font-family);
font-weight: var(--button-font-weight, $button-font-weight);
font-size: var(--button-font-size, $button-font-size);
color: var(--button-color, $button-color);
text-decoration: $button-text-decoration;
text-transform: var(--button-text-transform, $button-text-transform);
letter-spacing: var(--button-letter-spacing, $button-letter-spacing);
line-height: var(--button-line-height, $button-line-height);
cursor: $button-cursor;
}
// a11y
// https://www.tpgi.com/the-anatomy-of-visually-hidden/
@mixin visually-hidden {
position: absolute;
width: 1px;
height: 1px;
clip-path: inset(50%);
overflow: hidden;
white-space: nowrap;
}
@mixin visually-hidden-reset {
position: relative;
width: inherit;
height: auto;
clip-path: inherit;
overflow: inherit;
white-space: inherit;
z-index: 1;
}
// focus styles
@mixin focus {
&:focus {
outline: 5px solid lime;
}
&:focus:not(:focus-visible) {
outline: unset;
}
&:focus-visible {
outline: 3px solid black;
//outline-offset: 3px;
box-shadow: 0 0 0 9px white;
border-radius: 0.125rem;
}
}
@mixin focus-within {
outline: 3px solid black;
outline-offset: 3px;
box-shadow: 0 0 0 9px white;
border-radius: 0.125rem;
}