Skip to Content

FileInput

Capture file input from user.

Import

import { FileInput } from '@tidbcloud/uikit'

Usage

import { FileInput } from '@tidbcloud/uikit' function Demo() { return <FileInput label="Upload files" placeholder="Upload files" /> }

Multiple files

Set multiple prop to allow picking multiple files:

import { FileInput } from '@tidbcloud/uikit' function Demo() { return <FileInput label="Upload files" placeholder="Upload files" multiple /> }

Accept

Use accept prop to restrict file types:

import { FileInput } from '@tidbcloud/uikit' function Demo() { return <FileInput accept="image/png,image/jpeg" label="Upload images" placeholder="Upload images" /> }

Clearable

Set clearable prop to show clear button:

import { FileInput } from '@tidbcloud/uikit' function Demo() { return <FileInput clearable label="Upload files" placeholder="Upload files" /> }

Custom value component

Use valueComponent to customize how selected files are displayed:

import { FileInput, FileInputProps, Pill } from '@tidbcloud/uikit' const ValueComponent: FileInputProps['valueComponent'] = ({ value }) => { if (value === null) { return null } if (Array.isArray(value)) { return ( <Pill.Group> {value.map((file, index) => ( <Pill key={index}>{file.name}</Pill> ))} </Pill.Group> ) } return <Pill>{value.name}</Pill> } function Demo() { return <FileInput label="Upload files" placeholder="Upload files" multiple valueComponent={ValueComponent} /> }

Left and right sections

import { FileInput, rem } from '@tidbcloud/uikit' import { IconFileCv } from '@tabler/icons-react' function Demo() { const icon = <IconFileCv style={{ width: rem(18), height: rem(18) }} stroke={1.5} /> return ( <> <FileInput leftSection={icon} label="With left section" placeholder="With left section" /> <FileInput rightSection={icon} label="With right section" placeholder="With right section" mt="md" /> </> ) }

Error state

import { FileInput } from '@tidbcloud/uikit' function Demo() { return ( <> <FileInput label="Boolean error" placeholder="Boolean error" error /> <FileInput mt="md" label="With error message" placeholder="With error message" error="Invalid file" /> </> ) }

Disabled state

import { FileInput } from '@tidbcloud/uikit' function Demo() { return <FileInput disabled label="Disabled" placeholder="Disabled" /> }

Props

PropTypeDefaultDescription
valueFile | File[] | null-Controlled value
defaultValueFile | File[] | null-Default value
onChange(value: File | File[] | null) => void-Change callback
acceptstring-Accepted file types
multiplebooleanfalseAllow multiple files
clearablebooleanfalseShow clear button
valueComponentComponentType-Custom value display
leftSectionReactNode-Left section content
rightSectionReactNode-Right section content
labelReactNode-Input label
descriptionReactNode-Input description
errorReactNode-Error message
placeholderstring-Placeholder text
disabledbooleanfalseDisable input
requiredbooleanfalseRequired field
radiusMantineRadius-Border radius
sizeMantineSize’sm’Input size
variant’default’ | ‘filled’ | ‘unstyled''default’Input variant
Last updated on