File input (UI SDK): Controlled
Pass value and onValueChange. A controller from createFileInputController() opens the picker from any button, and clears or adds files.
No files
This adds the example as components/examples/ui-sdk-file-input/controlled.tsx, together with the File input component and the HextaUI theme tokens it needs.
pnpm dlx shadcn@latest add https://hextaui.com/r/ui-sdk-file-input-controlled.jsonTo add only the component, follow the File input installation.
Props in this example
The File input props this example sets, from the API reference.
| Prop | Type | Default |
|---|---|---|
value | File[] | – |
onValueChangedetails has the reason and the added, removed and rejected files. | (value: File[], details) => void | – |
multiple | boolean | false |
controllerFrom createFileInputController(). | FileInputController | – |
Every prop is in the File input API reference.
- Accepted types and limits
- Image previews
- Upload button
- Prompt attachments
- Page-wide drop
- Folders
- Form
- Invalid
- Disabled
- Right to left
See them all, with keyboard support and accessibility notes, on the File input page.
- ButtonButtons in every variant and size, with a built-in loading, success and error flow that skips the spinner for fast requests.
- CalendarA date grid for single, range and multiple selection, with sliding months, range previews and touch-sized days.
- CheckboxA checkbox whose check draws in, with indeterminate parents, groups and labels that share its hover.
- ComboboxA filterable select with chips, groups and async results, in a popup that resizes as you type.
- Date pickerA button that opens a calendar in a popover, or a bottom sheet on phones, for single dates and ranges.
- FieldLabels, descriptions and errors wired to their control, with validation states and layouts for forms.