Radarist project

Radarist / Design system

Documentation v0.1 · Product in progress

Design system contents

Components

Fields, selects, and text areas

Keep labels, hints, values, and focus treatment consistent while preserving native input behavior.

On this page

Purpose and usage

Keep labels, hints, values, and focus treatment consistent while preserving native input behavior.

Use settings fields for preferences/profile and modal fields for project resource editors.

Anatomy

Anatomy
PartContract
LabelSettingsField wraps label and control so the association is native.
HintOptional short contextual text beside the label.
ControlSurface background, line border, ink value and ink-faint placeholder.
Select affordanceDecorative unfold_more icon does not replace the native select.

Variants and configuration

Variants and configuration
ConfigurationBehavior
Settings inputShared settingsInputClasses; 48px / 52px height.
SelectControlForwards native select attributes and options.
AutoResizeTextareaUse the existing auto-height implementation for descriptions.
Project modal fieldsSeparate source constants; do not assume identical sizing to settings.

State coverage

State coverage
StateImplemented behavior
ValueInk text on surface.
PlaceholderInk-faint; not a substitute for a label.
FocusAccent border and soft focus ring in settings controls.
Read onlyNative readOnly can be passed; semantics must remain explicit.
ValidationDefined by each form, not a shared field error abstraction.

Interaction and responsive behavior

  • Use appropriate input types and required attributes.
  • Avoid multiple interactive inputs inside the same label wrapper.
  • Check long labels, helper text, validation messages, and textarea growth on a phone.

Accessibility contract

  • Keep visible labels and native association.
  • Connect errors to their controls where the current form offers error IDs.
  • A source screenshot of a valid form does not prove that invalid-field feedback is accessible.

Known gaps and readiness

No unified field error API or async validation state exists. Light-theme muted placeholder contrast is a documented issue for uses that require normal-text contrast.

Composition example

<SettingsField label="Email address" hint="Work address">
  <input className={settingsInputClasses}
    type="email" name="email" required />
</SettingsField>

Source references

Source references
FileResponsibility
app/components/settings-form-controls.tsxSettingsField, SelectControl, input classes
app/components/project-item-modal.tsxProjectModalField and modal input classes
app/components/auto-resize-textarea.tsxContent-driven textarea height

Examples from the app

Actual Radarist components with fictional data. Captured at 2× resolution or higher. Select an image to inspect it full size.

Fields · Component detail · Light · Desktop · 1864 × 472 px

Source audit: 2026-10-07 · Revision 0103e2549959 · Documentation v0.1