Gloss UIv4.4
Architecture
Style Guide
Primitives
Input
TextNumberTextareaSelectCheckboxRadioToggle
Output7
Actions4
Forms2
Dashboard10
Composites
Compositions
Planning
Applications

Prototypes

Gloss UIv4.4
Architecture
Style Guide
Primitives
Input
TextNumberTextareaSelectCheckboxRadioToggle
Output7
Actions4
Forms2
Dashboard10
Composites
Compositions
Planning
Applications

Prototypes

Inputs

Recessed fields with strict state management. The halo is reserved exclusively for the focused (active) state.

Input States
Default
Success
Error
Disabled
Default
Hover

Hover over the inputs above to see border color changes

Focus

Click an input to see the focus halo and lift animation

Physics: Inputs use concave shadows (inset shadows) creating a recessed feel. The border changes instantly on interaction, while the focus halo (outer glow) appears with a subtle lift (-1px). This choreographed timing emphasizes the "pressed into surface" metaphor.

Helper text
Current State: default
Default
Resting state with concave inner shadow creating recessed feel
Hover
Border darkens instantly (no halo), maintaining concave depth
Focus
Blue halo appears with subtle lift (-1px) while maintaining inner shadow

Best Practices

Do

We'll never share your email
Always provide clear labels and helpful context
Must include numbers and symbols
Use placeholder for format hints, helper for requirements
Show real-time validation feedback with status

Don't

Don't omit labels—they're essential for accessibility
Don't show error state without explanation message
Don't use placeholder as primary instruction—use labels

Examples

We'll never share your email
Great choice!
Please enter a valid email
Click X to clear the input
Click the copy icon to copy to clipboard
0/140
Character count shown when maxLength is set
$USD

Props Reference

PropTypeDefaultDescription
status'default' | 'success' | 'error' | 'pending''default'Validation/interaction status
leftIconReactNode-Icon or element on left side
rightIconReactNode-Icon or element on right side
clearablebooleanfalseShow clear button when input has value
onClear() => void-Callback when clear button is clicked
copyablebooleanfalseShow copy button to copy input value
onCopy(value: string) => void-Callback after successful copy
showCounterbooleanfalseShow character counter (requires maxLength)
renderCounter(current, max) => ReactNode-Custom counter renderer
iconAlign'top' | 'center''center'Vertical alignment of icons
labelstring-Label text for the input