Design System · DS-007

LagoFormElements

Internal QA/reference page for the canonical LAGO form element system. Every example uses the real production DS-007 components. Not linked from any product navigation.

01

Overview

DS-007 LagoFormElements — the foundational form component system for Lago management workflows.

Identity

ID
DS-007
Name
LagoFormElements
Area
Shared / Management Platform
Status
Approved

Purpose

Standardize data entry and selection patterns across Lago management workflows.

No page-specific input styling. All forms consume LagoFormElements and shared semantic tokens.

Component inventory

Inputs

  • Text
  • Email
  • Number
  • Password
  • Search
  • Textarea

Selection

  • Select
  • Checkbox
  • Radio
  • Switch

Supporting

  • Label
  • Required indicator
  • Help text
  • Validation message
  • Character count

Design-system rules

  • Labels remain visible — not replaced by placeholder-only instructions.
  • Required status must not rely on colour alone (asterisk + native required).
  • Error messages identify the field and explain what needs correction.
  • Disabled controls remain visually distinct and inaccessible to interaction.
  • Search fields use the same geometry and focus treatment as text inputs.

Dependencies

DS-001 Button (submit actions) · DS-002 Iconography (Lucide) · LAGO semantic colour/typography/spacing tokens.

Note:This preview uses the real production DS-007 components. No production files were modified to create this preview.
02

Text Inputs

LagoInput shared by Text, Email, Number, and Password. 40px height, 12px radius, 1px semantic border, visible teal focus ring.

Text — states

Default

Filled

Focus (autoFocus)

Disabled

Error

Success

Text — with label, help, and validation

Enter the public-facing name.

Name is required.

Name looks good.

Required for publication.

Email

Default

Filled

Disabled

Error

Success

Number

Default

Filled

Disabled

Error

Success

Password

Password type exposes an optional visibility toggle using DS-002 Lucide iconography.

Default

Filled

Disabled

Error

Success

Large size (48px)

Text lg

Email lg

Password lg

03

Search

Search uses the same LagoInput geometry and focus treatment as text inputs, with a leading Lucide search icon.

States

Default

Populated

Focus (autoFocus)

Disabled

Error

With label and help

Search by title, region, or category.

Large size

Note:Search maintains the same 40px height, 12px radius, 1px border, and teal focus ring as the standard text input — only the leading icon differs.
04

Textarea

Same visual language as LagoInput (12px radius, 1px border, teal focus ring) with a larger content area. min-h-96px.

States

Default

Populated

Focus (autoFocus)

Disabled

Error

Success

With label, help, and character count

42 / 500

Tell customers what makes this experience special.

Description must be at least 20 characters.

Description looks great.

Minimum 20 characters.

Wrapping and containment

Textarea wraps by default. Vertical resize is enabled by the browser. Verify no horizontal overflow on narrow viewports.

05

Select

Radix-based select. Same control geometry as LagoInput — 40px height, 12px radius, 1px border, teal focus ring. Lucide chevron + check icons.

States

Default (placeholder)

Selected

Disabled

Error

Success

Open state

Click any select to see the dropdown content, item focus, and check indicator. The dropdown uses shadow-elevation-md and rounded-lg.

Note:The open/active state is interactive — click a select trigger to view the dropdown panel, item highlighting, and selected-item check mark.

With label, help, and validation

Choose the primary category.

Please select a category.

Category saved.

Required for publication.

Large size

06

Checkbox

16px (h-4 w-4), 6px radius, Lucide check mark. Clear checked/unchecked/disabled/focus via border + fill — never colour alone.

States

Unchecked

Checked

Disabled unchecked

Disabled checked

With label and required indicator

Required to create an account.

With validation error

You must accept the terms before submitting.

07

Radio

20px (h-5 w-5) circle, Lucide filled circle indicator. Native grouped semantics via Radix.

States

Unselected

Selected

Disabled unselected

Disabled selected

Grouped options

With label, help, and validation

Choose how bookings are confirmed.

Please select a confirmation mode.

08

Switch

h-6 w-11 (44px) track, 20px thumb. Clear on/off via track colour + thumb position — never colour alone.

States

Off

On

Disabled off

Disabled on

With label and supporting text

Receive booking alerts by email.

Receive booking alerts by text message.

Skip manual review for instant bookings.

09

Labels & Supporting Text

Approved treatments for labels, required indicators, help text, validation messages, success messages, and character counts.

Standard label

Montserrat 14/20/600, LAGO text-primary.

Required indicator

Asterisk is a visual cue only — the actual required state is exposed natively via the `required` attribute on the control. Never colour alone.

Help text

Montserrat 14/22/400, LAGO text-secondary. Sits directly below its control.

Enter the public-facing name customers will see.

Validation / error message

Montserrat 12/18/600, LAGO error token, paired with a Lucide AlertCircle icon — never colour alone.

Name is required. Please enter a value.

Success message

Montserrat 12/18/600, LAGO success token, paired with a Lucide CheckCircle2 icon. Only used where confirmation is meaningful.

Name saved successfully.

Character count

Montserrat 12/18/600, LAGO tertiary text. Deliberately subordinate to the label and validation message.

42 / 500
010

Validation

A realistic composed form showing required, invalid, valid, and disabled fields. Validation meaning is never communicated through colour alone — icons and text accompany every state.

Composed validation form

Name is required.

Please enter a valid email address.

Capacity saved.

Optional — leave blank if unsure.

Description must be at least 20 characters.

Note:Each error state is accompanied by: (1) a red border on the control, (2) an AlertCircle icon + text message below the field, and (3) aria-invalid on the control. Required fields show an asterisk in the label. Colour is never the sole indicator.
011

Disabled States

All relevant production form controls shown disabled. Verify: visually distinct, text remains legible, interaction is actually disabled, no misleading focus state, semantics preserved.

Inputs

Text

Email

Search

Password

Textarea

Select

Checkbox, Radio, Switch

Checkbox unchecked

Checkbox checked

Switch off

Switch on

Note:All disabled controls use: muted background (surface-secondary), muted text (text-disabled), cursor-not-allowed, and are genuinely non-interactive. No focus ring appears on disabled controls.
012

Form Composition

One realistic LAGO form using actual DS-007 production components. Verifies that individual controls work as a coherent form rather than isolated specimens.

Create experience — composed form

Your full name.

We will send confirmation here.

0 / 500

Tell customers what makes this special.

When is this experience available?

Get alerted when a new booking is made.

013

Responsive

Production components at 7 viewport widths. Check: label wrapping, input containment, textarea containment, select containment, validation-message wrapping, help-text wrapping, required indicators, control width, no horizontal overflow, touch usability, vertical rhythm.

1534px — Desktop

Enter the public-facing name.

Find by title or region.

8 / 500

Description must be at least 20 characters.

Notifications

1024px — Desktop / Tablet boundary

Enter the public-facing name.

Find by title or region.

8 / 500

Description must be at least 20 characters.

Notifications

768px — Tablet

Enter the public-facing name.

Find by title or region.

8 / 500

Description must be at least 20 characters.

Notifications

430px — Mobile

Enter the public-facing name.

Find by title or region.

8 / 500

Description must be at least 20 characters.

Notifications

390px — Mobile

Enter the public-facing name.

Find by title or region.

8 / 500

Description must be at least 20 characters.

Notifications

375px — Mobile

Enter the public-facing name.

Find by title or region.

8 / 500

Description must be at least 20 characters.

Notifications

320px — Mobile

Enter the public-facing name.

Find by title or region.

8 / 500

Description must be at least 20 characters.

Notifications
014

Accessibility

Verify the accessibility behaviour built into the production DS-007 components.

Labels associated with controls

LagoFormField wires label htmlFor to control id, and aria-describedby to help/error ids.

Enter the public-facing name.

Required semantics

The asterisk is visual only. The actual required state is exposed via the native required attribute on the control, wired by LagoFormField.

Error semantics

On error: control gets aria-invalid=true, and the error message is wired via aria-describedby. The AlertCircle icon reinforces the state beyond colour.

Please enter a valid email.

Grouped radio semantics

LagoRadioGroup uses Radix RadioGroup.Root with native grouped semantics. Each item is keyboard-navigable with Arrow keys.

Switch semantics

LagoSwitch uses Radix Switch.Root with native switch role, keyboard toggle (Space), and aria-checked.

Disabled semantics

Disabled controls use the native disabled attribute — they are genuinely non-interactive and excluded from the tab order.

This field is locked.

Keyboard focus

All controls show a visible 2px teal focus ring (ring-lago-border-focus). Tab through the form above to verify.

Note:Tab through the specimens on this page — every focusable control shows a visible teal focus ring. Disabled controls are skipped. Radio groups use arrow-key navigation within the group.

No colour-only communication

Required: asterisk + native required. Error: red border + AlertCircle icon + text message + aria-invalid. Success: green border + CheckCircle2 icon + text message. Switch: track colour + thumb position. Checkbox: border + fill + check mark. None rely on colour alone.

015

Design-System Reference

Approved DS-007 principles and component inventory. No new design decisions are made here.

Principles

  • Labels remain visible — not replaced by placeholder-only instructions.
  • Required status must not rely on colour alone (asterisk + native required).
  • Error messages identify the field and explain what needs correction.
  • Disabled controls remain visually distinct and inaccessible to interaction.
  • Search fields use the same geometry and focus treatment as text inputs.
  • Every control has an accessible name.
  • Labels are programmatically associated with controls.
  • Focus is visible.
  • Touch targets remain practical on responsive layouts.

Visual foundations

Typography
Montserrat via font-body / font-heading tokens
Colour
LAGO semantic tokens only — no arbitrary HEX
Geometry
40px / 48px height, 12px radius, 1px border
Iconography
DS-002 Lucide only

Component inventory

Production files

  • LagoInput.jsx
  • LagoTextarea.jsx
  • LagoSelect.jsx
  • LagoCheckbox.jsx
  • LagoRadioGroup.jsx
  • LagoSwitch.jsx
  • LagoLabel.jsx
  • LagoFieldHelp.jsx
  • LagoFieldError.jsx
  • LagoFieldSuccess.jsx
  • LagoCharacterCount.jsx
  • LagoFormField.jsx

States

  • Default
  • Hover
  • Focus
  • Filled
  • Error
  • Disabled
  • Success (where applicable)

Approved use cases

  • Operator onboarding
  • Experience Builder
  • Availability
  • Pricing
  • Fleet & Resources
  • Team management
  • Add-ons
  • Settings
  • Admin workflows
Note:DS-007 is approved by product owner. This preview is for visual validation only — no production styling has been modified. Do not mark DS-007 complete based on this preview alone.

DS-007 LagoFormElements preview · Production components unmodified · Awaiting visual review. Not marked complete.