Skip to content

FileInput

File input component with support for multiple files, file type filtering, and various styles.

import { FileInput } from 'asterui'

Basic FileInput

Simple file input.

import { FileInput } from 'asterui'

function App() {
  return (
      <FileInput />
    )
}

export default App

Accept Types

File input that accepts only specific file types.

import { FileInput, Space } from 'asterui'

function App() {
  return (
      <Space direction="vertical" size="md">
        <div>
          <label className="block text-sm font-medium mb-2">Images only</label>
          <FileInput accept="image/*" />
        </div>
        <div>
          <label className="block text-sm font-medium mb-2">PDF files only</label>
          <FileInput accept=".pdf" />
        </div>
        <div>
          <label className="block text-sm font-medium mb-2">Images and PDFs</label>
          <FileInput accept="image/*,.pdf" />
        </div>
      </Space>
    )
}

export default App

Multiple Files

Allow selecting multiple files.

import { FileInput } from 'asterui'

function App() {
  return (
      <FileInput multiple />
    )
}

export default App

Sizes

Different file input sizes.

import { FileInput, Space } from 'asterui'

function App() {
  return (
      <Space direction="vertical" size="md">
        <FileInput size="xs" />
        <FileInput size="sm" />
        <FileInput size="md" />
        <FileInput size="lg" />
      </Space>
    )
}

export default App

Colors

Different color variants.

import { FileInput, Space } from 'asterui'

function App() {
  return (
      <Space direction="vertical" size="md">
        <FileInput color="primary" />
        <FileInput color="secondary" />
        <FileInput color="accent" />
        <FileInput color="success" />
        <FileInput color="warning" />
        <FileInput color="error" />
      </Space>
    )
}

export default App

Styles

Bordered and ghost styles.

import { FileInput, Space } from 'asterui'

function App() {
  return (
      <Space direction="vertical" size="md">
        <FileInput bordered color="primary" />
        <FileInput ghost color="secondary" />
      </Space>
    )
}

export default App
PropertyDescriptionTypeDefault
acceptFile types to acceptstring-
multipleAllow multiple file selectionbooleanfalse
onChangeChange handler(e: ChangeEvent) => void-
disabledDisable the inputbooleanfalse
sizeInput size'xs' | 'sm' | 'md' | 'lg''md'
colorInput color'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'-
borderedShow borderbooleanfalse
ghostGhost stylebooleanfalse
classNameAdditional CSS classesstring-
data-testidTest ID for testingstring-
  • Uses native <input type="file"> for full keyboard support
  • Always pair with a descriptive <label> for accessibility
  • The accept attribute helps users select appropriate files