ClickableAdornment

In order to provide more context as to what value an input expects to receive, sometimes it is helpful to use an adornment.

Adornments can be used as either a prefix or a suffix for the entered value. When an adornment is placed inside an input, clicking on a ClickableAdornment will focus the corresponding input.

Quick Start

Installation
npm install @adaptavant/eds-core
Import
import { ClickableAdornment } from '@adaptavant/eds-core';

Basic example

In order to make adornments as flexible as possible, we do not currently provide any default padding, leaving it up to the consumer to decide the appropriate amount.

<Field label="Facebook page" secondaryLabel="(without URL)" size="large">
  <TextInput
    adornmentStart={
      <ClickableAdornment
        className={`
          -me-1.5
          ps-2
        `}
      >
        https://facebook.com/
      </ClickableAdornment>
    }
    defaultValue="AnywhereWorks"
  />
</Field>

We may address this in the future once we have a better understanding of how adornments get used in real-world scenarios.

Screen reader support

By default, ClickableAdornment renders a <span> with aria-hidden="true". This means it is only accessible to sighted users, as spans do not receive keyboard focus unless explicitly given a tabIndex, and aria-hidden="true" opts the element out of being announced.

Ensure that ClickableAdornment contains only supplementary information. If there is critical information within the adornment that non-sighted users need to know, it's generally best to place that in a visually hidden element inside the label.

<Field
  label={
    <>
      Cost<span className="sr-only"> in US dollars</span>
    </>
  }
  size="large"
>
  <TextInput
    adornmentStart={
      <ClickableAdornment
        className={`
          -me-1.5
          ps-2
        `}
      >
        $
      </ClickableAdornment>
    }
    defaultValue="0"
  />
</Field>

Style API

Our design system components include style props that allow you to easily customize different parts of each component to match your design needs.

Please refer to the Style API documentation for more insights.