Command Palette

Search for a command to run...

Docs
Button File Upload

Button File Upload

A file upload trigger button with customizable accept types.

Installation

Usage

import ButtonFileUpload from "@/components/ruixen/button-file-upload";
 
export default function MyComponent() {
  const handleFileSelect = (files: FileList | null) => {
    if (files) {
      console.log(
        "Selected files:",
        Array.from(files).map((f) => f.name),
      );
    }
  };
 
  return (
    <div className="flex gap-4">
      <ButtonFileUpload onFileSelect={handleFileSelect}>
        Upload File
      </ButtonFileUpload>
      <ButtonFileUpload accept="image/*" onFileSelect={handleFileSelect}>
        Upload Image
      </ButtonFileUpload>
      <ButtonFileUpload multiple onFileSelect={handleFileSelect}>
        Upload Multiple
      </ButtonFileUpload>
    </div>
  );
}

Props

PropTypeDefaultDescription
onFileSelect(files: FileList | null) => void-Callback with selected files
acceptstring-Accepted file types
multiplebooleanfalseAllow multiple files
variant"default" | "outline" | "secondary""default"Button style variant
classNamestring-Additional CSS classes

Features

  • Hidden file input with styled button
  • Accept attribute for file type filtering
  • Single or multiple file selection
  • Upload icon indicator
  • Light and dark mode support