Field New

Mixins

root-container

@mixin root-container() { ... }@mixin root-container() { 
  display: flex;
  flex-direction: column;
  margin-bottom: spacing.get('s2');
 }
Description

Root container

Parameters

None.

Requires

root-container-disabled

@mixin root-container-disabled() { ... }@mixin root-container-disabled() { 
  opacity: 0.5;

  @media (forced-colors: active) {
    opacity: 1;
  }
 }
Description

Root container when control is disabled

Parameters

None.

label

@mixin label() { ... }@mixin label() { 
  @include typography.style-as('form-label');

  order: 1;
  color: settings.$label-text-color;
 }
Description

Field label

Parameters

None.

Requires

label-disabled

@mixin label-disabled() { ... }@mixin label-disabled() { 
  pointer-events: none;
 }
Description

Disabled field label

Parameters

None.

label-hidden

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

Hidden label

Parameters

None.

label-required

@mixin label-required() { ... }@mixin label-required() { 
  color: color.get('text', 'error');
 }
Description

Required label

Parameters

None.

Requires

field

@mixin field() { ... }@mixin field() { 
  position: relative;

  /* margin: Box shadow is used to mimic input field border to prevent layout shift.
  Need that width at bottom to prevent box shadow overlapping the error/help msg */
  margin: calc(settings.$control-border-width + spacing.get('s1')) settings.$control-border-width
    settings.$control-border-width-large;
  order: 3;
  color: var(--kib-field-control-text-color, #{settings.$control-text-color});
 }
Description

Wrapper around control and icon

Parameters

None.

Requires

control

@mixin control() { ... }@mixin control() { 
  @include typography.style-as(settings.$field-control-typography);

  position: relative;
  padding: settings.$control-padding;
  width: 100%;
  appearance: none;
  background-color: var(
    --kib-field-control-background-color,
    #{settings.$control-background-color}
  );
  border: 0;
  border-radius: settings.$control-border-radius;
  box-shadow: 0 0 0 var(--kib-field-control-border-width, #{settings.$control-border-width})
      var(--kib-field-control-border-color, #{settings.$control-border-color}),
    0 0 0 var(--kib-field-control-outline-width, 0)
      var(--kib-field-control-outline-color, #{settings.$control-outline-color}),
    0 0 0 var(--kib-field-control-autofill-inset, 0) settings.$control-background-color-autofill
      inset;
  outline: settings.$control-border-width solid transparent; // high contrast mode only
  color: settings.$control-text-color;
  transition: box-shadow settings.$control-transition-duration ease-out;
  overflow: hidden;
  text-overflow: ellipsis;

  @media screen and (prefers-reduced-motion: reduce) {
    transition: none;
  }
 }
Description

Field control

Parameters

None.

control-on-hover

@mixin control-on-hover() { ... }@mixin control-on-hover() { 
  --kib-field-control-border-width: #{settings.$control-border-width-large};

  // high contrast mode only
  &:not(:focus) {
    outline-width: settings.$control-border-width-large;
  }
 }
Description

Control when hovered

Parameters

None.

Requires
Used by

control-on-focus

@mixin control-on-focus() { ... }@mixin control-on-focus() { 
  --kib-field-control-border-color: #{settings.$control-border-color-focus};
  --kib-field-control-border-width: #{settings.$control-border-width-large};
  --kib-field-control-outline-width: #{settings.$control-outline-width};

  // high contrast mode only
  outline-width: settings.$control-outline-width;
 }
Description

Control when focused

Parameters

None.

Used by

control-on-invalid

@mixin control-on-invalid() { ... }@mixin control-on-invalid() { 
  --kib-field-control-border-color: #{settings.$control-border-color-error};
  --kib-field-control-border-width: #{settings.$control-border-width-large};

  @media (forced-colors: active) {
    outline-style: dashed;
  }
 }
Description

Invalid control

Parameters

None.

control-disabled

@mixin control-disabled() { ... }@mixin control-disabled() { 
  pointer-events: none;
 }
Description

Disabled control

Parameters

None.

control-read-only

@mixin control-read-only() { ... }@mixin control-read-only() { 
  --kib-field-control-text-color: #{settings.$control-read-only-text-color};
  --kib-field-control-background-color: #{settings.$control-background-color-read-only};
 }
Description

Read only control

Parameters

None.

control-placeholder

@mixin control-placeholder() { ... }@mixin control-placeholder() { 
  color: settings.$placeholder-text-color;
 }
Description

Control's placeholder text

Parameters

None.

Requires

control-autofill

@mixin control-autofill() { ... }@mixin control-autofill() { 
  --kib-field-control-autofill-inset: #{unit.rem(1000px)};

  -webkit-text-fill-color: settings.$control-text-color;
 }
Description

Control's autofill state

Parameters

None.

Requires

clear-control-with-icon

@mixin clear-control-with-icon() { ... }@mixin clear-control-with-icon() { 
  --kib-field-clear-offset: calc(#{settings.$icon-size} + #{settings.$clear-icon-offset});
 }
Description

Control styles when it contains an icon

Parameters

None.

Requires

help

@mixin help() { ... }@mixin help() { 
  @include typography.style-as('form-helper');

  order: 2;
  color: settings.$help-text-color;
 }
Description

Helper text

Parameters

None.

Requires

help-bottom

@mixin help-bottom() { ... }@mixin help-bottom() { 
  order: 4;
 }
Description

Helper text when on bottom position

Parameters

None.

clear-icon

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

Clear icon

Parameters

None.

Requires

clear-control-hidden

@mixin clear-control-hidden() { ... }@mixin clear-control-hidden() { 
  display: none;
 }
Description

Hidden clear control

Parameters

None.

icon

@mixin icon() { ... }@mixin icon() { 
  display: block;
  position: absolute;
  width: settings.$icon-size;
  height: settings.$icon-size;
  top: 50%;
  right: settings.$control-padding;
  z-index: 1;
  transform: translateY(-50%);
  transition: color settings.$control-transition-duration ease-out;
  pointer-events: none;
 }
Description

Field icon

Parameters

None.

Requires

icon-on-focus

@mixin icon-on-focus() { ... }@mixin icon-on-focus() { 
  color: settings.$control-border-color-focus;
 }
Description

Field icon when control is focused

Parameters

None.

Requires

icon-with-action

@mixin icon-with-action() { ... }@mixin icon-with-action() { 
  &::after {
    content: '';
    border-left: 1px solid settings.$icon-with-action-color;
    right: spacing.get('s2');
    position: absolute;
    width: settings.$icon-size;
    height: settings.$icon-size;
    pointer-events: none;
  }
 }
Description

Field icon with action behavior

Parameters

None.

Requires
Used by

icon-with-action-on-focus

@mixin icon-with-action-on-focus() { ... }@mixin icon-with-action-on-focus() { 
  & svg {
    color: settings.$icon-with-action-focus-color;
  }

  &::after {
    border-color: settings.$icon-with-action-focus-color;
  }
 }
Description

Field icon with action behavior is focused

Parameters

None.

Requires

loading-spinner

@mixin loading-spinner() { ... }@mixin loading-spinner() { 
  width: settings.$icon-size;
  height: settings.$icon-size;
  vertical-align: inherit;
 }
Description

Generates the styles for the loading spinner

Parameters

None.

Requires

action-wrapper

@mixin action-wrapper() { ... }@mixin action-wrapper() { 
  @include icon;
  @include icon-with-action;

  display: flex;
  justify-content: center;
  align-items: center;

  &::after {
    top: 50%;
    transform: translateY(-50%);
  }

  // should apply styles to the first button within
  // the action wrapper
  & button:first-child {
    @include action;
  }

  &:hover {
    &::after {
      border-color: color.get('field', '04');
    }
  }
 }
Description

styles applied to action wrapper

Parameters

None.

Requires

action

@mixin action() { ... }@mixin action() { 
  @include kib-button-new.generate-styles('utility', 'secondary', 'medium', true);

  pointer-events: initial;
  box-shadow: none;
  border-radius: 0 border.get('br02') border.get('br02') 0;
  opacity: inherit;
  width: settings.$action-height;
  height: settings.$action-height;
  min-height: settings.$action-height;
  min-width: settings.$action-height;

  & svg {
    width: settings.$icon-size;
    height: settings.$icon-size;
    color: settings.$icon-with-action-color;

    @media (forced-colors: active) {
      color: inherit;
    }
  }

  &:focus {
    background-color: color.get('action', 'utility', 'alternate', '03');
  }

  &:active {
    background-color: color.get('action', 'utility', 'alternate', '02');
  }

  &::after {
    border: none;
  }

  &:disabled {
    opacity: 0.5;
    pointer-events: none;
    @media (forced-colors: active) {
      opacity: 1;
    }
  }

  &:hover {
    background-color: color.get('field', '08');

    & svg {
      color: color.get('field', '04');
    }

    &::after {
      border-color: color.get('field', '04');
    }
  }
 }
Description

styles for the content within action

Parameters

None.

Requires

error

@mixin error() { ... }@mixin error() { 
  order: 5;
 }
Description

Error wrapper

Parameters

None.

error-message

@mixin error-message() { ... }@mixin error-message() { 
  @include typography.style-as(settings.$error-message-token-size);

  display: flex;
  margin-top: spacing.get('s1');
  color: settings.$control-error-text-color;
 }
Description

Error message

Parameters

None.

Requires

error-icon

@mixin error-icon() { ... }@mixin error-icon() { 
  margin-right: spacing.get('s1');
  width: settings.$error-icon-size;
  height: settings.$error-icon-size;
  color: currentColor;
 }
Description

Error icon

Parameters

None.

Requires

Variables

control-background-color

$control-background-color: color.get('field', 'primary') !default;
Description

Control background color

Type

Color

Used by

control-background-color-read-only

$control-background-color-read-only: color.get('field', '02') !default;
Description

Control background readonly color

Type

Color

Used by

control-background-color-autofill

$control-background-color-autofill: color.get('field', '03');
Description

Control field autofill text color

Type

Color

Used by

control-text-color

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

Control text color

Type

Color

Used by

control-border-color

$control-border-color: color.get('field', '07') !default;
Description

Control border color

Type

Color

Used by

control-border-color-focus

$control-border-color-focus: color.get('field', '04') !default;
Description

Control border color on focus

Type

Color

control-border-color-error

$control-border-color-error: color.get('field', '06') !default;
Description

Control border color when invalid

Type

Color

Used by

control-border-radius

$control-border-radius: border.get('br02') !default;
Description

Control border radius

Type

Number

Used by

control-border-width

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

Control border default width

Type

Number

Used by

control-border-width-large

$control-border-width-large: unit.rem(2px) !default;
Description

Control border large width

Type

Number

control-outline-color

$control-outline-color: color.get('field', '08') !default;
Description

Control outline color

Type

Color

Used by

control-outline-width

$control-outline-width: unit.rem(6px) !default;
Description

Control outline width

Type

Number

Used by

control-transition-duration

$control-transition-duration: 0.2s !default;
Description

Control transitions duration

Type

Number

Used by

control-padding

$control-padding: spacing.get('s3') !default;
Description

Control padding

Type

Number

Used by

field-control-typography

$field-control-typography: 'form-text' !default;
Description

Form text typography token name

Type

String

Used by

label-text-color

$label-text-color: color.get('text', 'fields') !default;
Description

Label text color

Type

Color

help-text-color

$help-text-color: color.get('text', 'secondary') !default;
Description

Label text color

Type

Color

clear-control-size

$clear-control-size: unit.rem(14px) !default;
Description

Cleara control size

Type

Number

clear-control-background-color

$clear-control-background-color: color.get('text', 'tertiary') !default;
Description

Clear control background color

Type

Color

clear-control-hover-color

$clear-control-hover-color: color.get('action', 'utility', 'primary', '03') !default;
Description

Clear control hover color

Type

Color

clear-icon-size

$clear-icon-size: unit.rem(12px) !default;
Description

Clear icon size

Type

Number

Used by

icon-size

$icon-size: $input-field-line-height;
Description

icon size

Type

Number

action-height

$action-height: calc($input-field-line-height + spacing.get('s3') * 2) !default;
Description

Action size

Type

Number

Used by

clear-icon-offset

$clear-icon-offset: calc(#{$control-padding} + #{spacing.get('s2')}) !default;
Description

Clear icon position offset

Type

Number

clear-icon-color

$clear-icon-color: color.get('field', 'primary') !default;
Description

Clear icon color

Type

Color

Used by

icon-with-action-color

$icon-with-action-color: color.get('text', 'primary') !default;
Description

Icon with action color

Type

Color

Used by

icon-with-action-focus-color

$icon-with-action-focus-color: color.get('field', '04') !default;
Description

Icon with action focus color

Type

Color

placeholder-text-color

$placeholder-text-color: color.get('text', 'tertiary') !default;
Description

Placeholder text color

Type

Color

Used by

control-with-icon-padding

$control-with-icon-padding: calc(
  #{$icon-size} + #{$clear-icon-offset} + #{spacing.get('s2')}
) !default;
Description

Control with icon padding

Type

Number

control-error-text-color

$control-error-text-color: color.get('text', 'error') !default;
Description

Control text color in error state

Type

Color

Used by

control-read-only-text-color

$control-read-only-text-color: color.get('text', 'secondary') !default;
Description

Control text color in readonly

Type

Color

Used by

error-message-token-size

$error-message-token-size: 'form-error' !default;
Description

Form error token size

Type

String

action-right-spacing

$action-right-spacing: unit.rem(10px) !default;
Description

position the action button to the right length

Type

Number

icon-size

$icon-size: $input-field-line-height;
Description

icon size

Type

Number