Input
Reusable React exports, live props, and complete source.
'use client';
import { useState } from 'react';
import { Input } from '@helios-ui/react';
import '@helios-ui/react/styles.css';
export default function Example() {
const [value, setValue] = useState("");
return (
<Input label={"Email address"} size="md" value={value} onChange={event => setValue(event.target.value)} placeholder="name@example.com" hint="Your email stays in this local example." />
);
}
Customize this example
Use in your React app
Download the local package, install its React peers, then import the export and stylesheet. This package is not published to npm.
npm install react@^19 react-dom@^19 ./helios-ui-react-0.1.0.tgzDownload React package ↓Download all source (JSON) ↓The Code tab renders the same exports used in this preview. Source files include typed props, behavior, styles, and dependency details.
Sizes
Labeled fields with consistent hint spacing in each Helios size.
'use client';
import {useState} from 'react';
import {Input} from '@helios-ui/react';
import '@helios-ui/react/styles.css';
export default function Example(){
return (<div>{(['sm','md','lg'] as const).map(size=><Input key={size} label={'Email '+size} size={size} type="email" placeholder="you@example.com" hint="Your email stays in this local example."/>)}</div>);
}
States
Empty, populated, disabled and invalid fields expose their state through native semantics.
'use client';
import {useState} from 'react';
import {Input} from '@helios-ui/react';
import '@helios-ui/react/styles.css';
export default function Example(){
return (<div><Input label="Empty email" type="email" placeholder="you@example.com" hint="Use your work email."/><Input label="Populated email" type="email" defaultValue="hello@example.com"/><Input label="Disabled email" type="email" disabled placeholder="you@example.com"/><Input label="Invalid email" type="email" defaultValue="not-an-email" error="Enter a valid email address." required/></div>);
}
Phone number
A country picker and telephone field compose a local input. The country code changes without submitting data.
'use client';
import {useState} from 'react';
import {Input,Select} from '@helios-ui/react';
import '@helios-ui/react/styles.css';
export default function Example(){
const [country,setCountry]=useState('IN'),[phone,setPhone]=useState('');
return (<><Select label="Country calling code" value={country} onChange={event=>setCountry(event.target.value)} options={[{value:'IN',label:'India +91'},{value:'US',label:'United States +1'},{value:'GB',label:'United Kingdom +44'}]}/><Input label="Phone number" type="tel" autoComplete="tel-national" value={phone} onChange={event=>setPhone(event.target.value)} placeholder={country==='IN'?'98765 43210':'Phone number'}/></>);
}
Props
Generated from the TypeScript export Input. Configure this example with the preview controls above.
| Prop | Type / behavior |
|---|---|
disabled | boolean | undefined |
value | string | number | readonly string[] | undefined |
onChange | ChangeEventHandler<HTMLInputElement, HTMLInputElement> | undefined |
required | boolean | undefined |
label | string |
size | "sm" | "md" | "lg" | undefined |
hint | string | undefined |
error | string | undefined |
leadingIcon | ReactNode |
suffix | ReactNode |
Explore composed examples
Built from the same components
Forms, tables, charts and composers share Button, Input, Select, Checkbox, Tabs and Dialog.
Team members
Fictional records · client-side sorting, selection and export
| Action | |||||
|---|---|---|---|---|---|
Aarav Shahaarav@example.com | Designer | ₹1,250 | |||
Diya Raodiya@example.com | Developer | ₹2,500 | |||
Ishaan Patelishaan@example.com | Admin | ₹3,750 | |||
Kavya Nairkavya@example.com | Designer | ₹5,000 | |||
Rohan Mehtarohan@example.com | Developer | ₹6,250 |
Revenue overview
Illustrative INR data · totals match the visible period
Jan: ₹4,200
Accessible data table
| Month | Revenue |
|---|---|
| Jan | ₹4,200 |
| Feb | ₹5,100 |
| Mar | ₹4,600 |
| Apr | ₹6,800 |
| May | ₹5,900 |
| Jun | ₹7,200 |
Team conversation
Local composer example · Enter sends, Shift+Enter adds a line
No messages yet. Start a conversation below.
Keyboard and motion
Tab reaches controls; Space and Enter activate buttons. Native Select supports keyboard selection and mobile pickers. Tabs use arrows, Home and End. Dialog contains focus, closes with Escape, and restores focus. Data tables expose sort and selection state. Reduced motion removes spinners and chart transitions.
Primary labels adapt to the chosen accent for contrast. This accessibility adjustment differs from Figma’s white-on-cyan example. The Select example uses a React Aria popover with rich option content and keyboard typeahead. Native Select remains available for simple platform-picker integrations.