--- /dev/null
+@charset "UTF-8";
+
+/// Hides an element visually while still allowing the content to be accessible
+/// to assistive technology, e.g. screen readers. Passing `unhide` will reverse
+/// the affects of the hiding, which is handy for showing the element on focus,
+/// for example.
+///
+/// @link https://goo.gl/Vf1TGn
+///
+/// @argument {string} $toggle [hide]
+/// Accepts `hide` or `unhide`. `unhide` reverses the affects of `hide`.
+///
+/// @example scss
+/// .element {
+/// @include hide-visually;
+///
+/// &:active,
+/// &:focus {
+/// @include hide-visually("unhide");
+/// }
+/// }
+///
+/// // CSS Output
+/// .element {
+/// border: 0;
+/// clip: rect(1px, 1px, 1px, 1px);
+/// clip-path: inset(100%);
+/// height: 1px;
+/// overflow: hidden;
+/// padding: 0;
+/// position: absolute;
+/// width: 1px;
+/// }
+///
+/// .hide-visually:active,
+/// .hide-visually:focus {
+/// clip: auto;
+/// clip-path: none;
+/// height: auto;
+/// overflow: visible;
+/// position: static;
+/// width: auto;
+/// }
+///
+/// @since 5.0.0
+
+@mixin hide-visually($toggle: "hide") {
+ @if not index("hide" "unhide", $toggle) {
+ @error "`#{$toggle}` is not a valid value for the `$toggle` argument in " +
+ "the `hide-visually` mixin. Must be either `hide` or `unhide`.";
+ } @else if $toggle == "hide" {
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ clip-path: inset(100%);
+ height: 1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ white-space: nowrap;
+ width: 1px;
+ } @else if $toggle == "unhide" {
+ clip: auto;
+ clip-path: none;
+ height: auto;
+ overflow: visible;
+ position: static;
+ white-space: inherit;
+ width: auto;
+ }
+}