View Toggle

Mixins

base

@mixin base() { ... }@mixin base() { 
  --right-margin: #{spacing.get('s1')};
  --background-color: #{settings.$view-toggle-container-background-color};
  --item-background-color: #{settings.$view-toggle-item-default-background-color};

  gap: settings.$view-toggle-container-gap;
  border: solid settings.$view-toggle-container-border-width
    settings.$view-toggle-container-border-color;
  border-radius: settings.$view-toggle-container-border-radius;
  background-color: settings.$view-toggle-container-background-color;
  padding: settings.$view-toggle-container-padding;
  display: inline-flex;
  box-sizing: content-box;
  width: max-content;
 }

item-base

@mixin item-base() { ... }@mixin item-base() { 
  @include typography.style-as('button-medium');

  --item-text-color: #{settings.$view-toggle-text-color};
  --item-focus-ring-border-color: transparent;

  display: flex;
  position: relative;
  gap: settings.$view-toggle-item-gap;
  align-items: center;

  &:hover {
    --item-background-color: #{settings.$view-toggle-item-hover-background-color};
  }

  &:active {
    --item-background-color: #{settings.$view-toggle-item-pressed-background-color};
  }

  @media (forced-colors: active) {
    &[aria-current='true'] {
      color: LinkText !important;
    }
  }

  &:focus {
    --item-focus-ring-border-color: #{settings.$view-toggle-item-focus-ring-border-color};

    z-index: 1;
  }

  &:focus-visible {
    outline: none;
  }

  :first-of-type {
    margin-left: spacing.get('s1');
  }

  :last-of-type {
    margin-right: spacing.get('s1');
  }

  ::after {
    content: '';
    position: absolute;
    top: settings.$view-toggle-item-focus-ring-border-distance;
    right: settings.$view-toggle-item-focus-ring-border-distance;
    bottom: settings.$view-toggle-item-focus-ring-border-distance;
    left: settings.$view-toggle-item-focus-ring-border-distance;
    border-radius: settings.$view-toggle-container-border-radius;
    border: solid settings.$view-toggle-item-focus-ring-border-width
      var(--item-focus-ring-border-color);
    display: flex;
    color: inherit;
    z-index: -1;
  }

  border: settings.$view-toggle-item-selected-border-width solid
    settings.$view-toggle-item-default-background-color;
  background-color: var(--item-background-color);
  padding: spacing.get('s1');
  padding-right: spacing.get('s1');
  border-radius: settings.$view-toggle-item-border-radius;
  flex-wrap: nowrap;
  flex-shrink: 0;
  cursor: pointer;
 }

label

@mixin label() { ... }@mixin label() { 
  display: inline-flex;
  vertical-align: middle;
  text-align: left;
 }
Description

item base content styles

Parameters

None.

icon

@mixin icon() { ... }@mixin icon() { 
  flex-shrink: 0;
  display: inline-block;
  vertical-align: middle;
  width: settings.$view-toggle-item-icon-size;
  height: settings.$view-toggle-item-icon-size;

  > svg {
    fill: currentColor;
  }

  > :only-child {
    display: block;
    width: inherit;
    height: inherit;
  }
 }
Description

icon styles

Parameters

None.

Requires

hide-label

@mixin hide-label() { ... }@mixin hide-label() { 
  --right-margin: 0;

  padding: unit.rem(4px);
  border-radius: settings.$view-toggle-item-border-radius;

  &::after {
    border-radius: inherit;
  }
 }
Description

icon only styles

Parameters

None.

Requires

icon-no-labels

@mixin icon-no-labels() { ... }@mixin icon-no-labels() { 
  margin: 0;

  > svg {
    margin: 0;
  }
 }
Description

icon without label styles

Parameters

None.

visually-hidden

@mixin visually-hidden() { ... }@mixin visually-hidden() { 
  @include a11y.visually-hidden;
 }
Description

visually hide button text styles

Parameters

None.

selected

@mixin selected() { ... }@mixin selected() { 
  --item-background-color: #{settings.$view-toggle-item-on-background-color};

  cursor: default;
  border: settings.$view-toggle-item-selected-border-width solid
    settings.$view-toggle-item-selected-border-color;

  &:hover {
    --item-background-color: #{settings.$view-toggle-item-on-background-color};
  }

  &:active {
    --item-background-color: #{settings.$view-toggle-item-on-background-color};
  }
 }
Description

active styles

Parameters

None.

Variables

view-toggle-typography

$view-toggle-typography: 'button-medium' !default;
Description

typography token name

Type

String

view-toggle-container-border-color

$view-toggle-container-border-color: color.get(
  'action',
  'view-toggle',
  'container',
  'border'
) !default;
Description

container border color

Type

Color

Used by

view-toggle-container-gap

$view-toggle-container-gap: unit.rem(2px) !default;
Description

gap width

Type

Number

Used by

view-toggle-item-gap

$view-toggle-item-gap: spacing.get('s2') !default;
Description

gap width

Type

Number

Used by

view-toggle-container-border-width

$view-toggle-container-border-width: unit.rem(1px) !default;
Description

container border width

Type

Number

Used by

view-toggle-container-border-radius

$view-toggle-container-border-radius: border.get('br03') !default;
Description

container border radius

Type

Number

Used by

view-toggle-container-padding

$view-toggle-container-padding: unit.rem(3px) !default;
Description

container padding

Type

Number

Used by

view-toggle-container-background-color

$view-toggle-container-background-color: color.get(
  'action',
  'view-toggle',
  'off',
  'default-bg'
) !default;
Description

container background color

Type

Color

Used by

view-toggle-item-icon-size

$view-toggle-item-icon-size: $view-toggle-line-height;
Description

icon size

Type

Number

Used by

view-toggle-item-border-radius

$view-toggle-item-border-radius: border.get('br03') !default;
Description

item border radius

Type

Number

Used by

view-toggle-item-default-background-color

$view-toggle-item-default-background-color: color.get(
  'action',
  'view-toggle',
  'off',
  'default-bg'
) !default;
Description

item off background color

Type

Color

Used by

view-toggle-item-hover-background-color

$view-toggle-item-hover-background-color: color.get(
  'action',
  'view-toggle',
  'off',
  'hover-bg'
) !default;
Description

item off hover background color

Type

Color

Used by

view-toggle-item-pressed-background-color

$view-toggle-item-pressed-background-color: color.get(
  'action',
  'view-toggle',
  'off',
  'pressed-bg'
) !default;
Description

item off pressed background color

Type

Color

Used by

view-toggle-item-on-background-color

$view-toggle-item-on-background-color: color.get(
  'action',
  'view-toggle',
  'on',
  'default-bg'
) !default;
Description

item on background color

Type

Color

Used by

view-toggle-item-selected-border-color

$view-toggle-item-selected-border-color: color.get(
  'action',
  'view-toggle',
  'container',
  'border'
) !default;
Description

item selected border color

Type

Color

Used by

view-toggle-item-selected-border-width

$view-toggle-item-selected-border-width: unit.rem(1px) !default;
Description

item selected border width

Type

Number

Used by

view-toggle-item-focus-ring-border-color

$view-toggle-item-focus-ring-border-color: color.get('text', 'primary') !default;
Description

focus ring border color

Type

Color

Used by

view-toggle-item-focus-ring-border-width

$view-toggle-item-focus-ring-border-width: unit.rem(2px) !default;
Description

focus ring border width

Type

Number

Used by

view-toggle-item-focus-ring-border-distance

$view-toggle-item-focus-ring-border-distance: unit.rem(-5px) !default;
Description

focus ring border distance

Type

Number

Used by

view-toggle-text-color

$view-toggle-text-color: color.get('text', 'primary') !default;
Description

text/foreground color

Type

Color

Used by

view-toggle-text-selected-color

$view-toggle-text-selected-color: color.get('text', 'inverse') !default;
Description

text/foreground selected color

Type

Color