Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Infiniflow Ragflow FileUpload Component

From Leeroopedia
Knowledge Sources
Domains Frontend, UI_Components, File_Management
Last Updated 2026-02-12 06:00 GMT

Overview

Concrete headless file upload component system with drag-drop, validation, and progress tracking built on Radix UI primitives for the RAGFlow frontend.

Description

The FileUpload compound component provides a composable file upload system: FileUpload.Root (state container), FileUpload.Dropzone (drag-drop area), FileUpload.Trigger (click trigger), FileUpload.List (file list), FileUpload.Item (individual file), FileUpload.ItemProgress (progress with linear/circular/fill variants), and FileUpload.Clear (clear all). Uses Zustand-like internal store via useFileUpload hook.

Usage

Import this component system for building document upload interfaces in the knowledge base, file manager, or data pipeline features.

Code Reference

Source Location

Signature

export const FileUpload = {
  Root: FileUploadRoot,
  Dropzone: FileUploadDropzone,
  Trigger: FileUploadTrigger,
  List: FileUploadList,
  Item: FileUploadItem,
  ItemPreview: FileUploadItemPreview,
  ItemProgress: FileUploadItemProgress,
  ItemDelete: FileUploadItemDelete,
  Clear: FileUploadClear,
};

export function useFileUpload<T>(selector: (state: StoreState) => T): T;

Import

import { FileUpload, useFileUpload } from '@/components/file-upload';

I/O Contract

Inputs

Name Type Required Description
accept string No Accepted MIME types
maxFiles number No Maximum number of files
maxSize number No Maximum file size in bytes
onUpload function No Upload handler receiving File[]
onFileReject function No Rejection callback

Outputs

Name Type Description
useFileUpload() StoreState Current upload state (files, progress, status)

Usage Examples

import { FileUpload } from '@/components/file-upload';

function DocumentUploader() {
  return (
    <FileUpload.Root maxFiles={10} accept="application/pdf,.docx">
      <FileUpload.Dropzone>
        <FileUpload.Trigger>Click or drag files here</FileUpload.Trigger>
      </FileUpload.Dropzone>
      <FileUpload.List>
        {(files) => files.map(file => (
          <FileUpload.Item key={file.id} file={file}>
            <FileUpload.ItemPreview />
            <FileUpload.ItemProgress variant="linear" />
            <FileUpload.ItemDelete />
          </FileUpload.Item>
        ))}
      </FileUpload.List>
    </FileUpload.Root>
  );
}

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment