@llamaindex/ui
Version:
A comprehensive UI component library built with React, TypeScript, and Tailwind CSS for LlamaIndex applications
78 lines (75 loc) • 2.48 kB
text/typescript
import { ReactNode } from 'react';
import { F as FileType } from './file-utils-CUHxYCcA.mjs';
interface BaseFileUploadProps {
allowedFileTypes?: FileType[];
maxFileSizeBytes?: number;
}
interface FileDropzoneProps extends BaseFileUploadProps {
multiple?: boolean;
selectedFiles?: File[];
onFilesSelected: (files: File[]) => void;
onRemoveFile?: (file: File) => void;
className?: string;
emptyTitle?: string;
emptyDescription?: string;
listFooter?: ReactNode;
footer?: ReactNode;
showRemoveButton?: boolean;
disabled?: boolean;
}
interface FileUploadData {
file: File;
fileId: string;
url?: string;
}
interface UploadResult {
success: boolean;
data: FileUploadData | null;
error: Error | null;
}
interface UseFileUploadOptions {
onProgress?: (file: File, progress: number) => void;
onUploadStart?: (file: File) => void;
onUploadComplete?: (file: File) => void;
onUploadError?: (file: File, error: string) => void;
}
interface UploadFromUrlOptions {
name?: string;
proxyUrl?: string;
requestHeaders?: Record<string, string>;
}
interface UseFileUploadReturn {
isUploading: boolean;
uploadFile: (file: File) => Promise<UploadResult>;
uploadFromUrl: (url: string, options?: UploadFromUrlOptions) => Promise<UploadResult>;
uploadAndReturn: (file: File) => Promise<UploadResult>;
}
interface InputField {
key: string;
label: string;
placeholder?: string;
required?: boolean;
validation?: (value: string) => string | null;
}
interface FileUploadProps extends BaseFileUploadProps {
className?: string;
heading: string;
content: File | string | null;
onContentChange: (content: File | string | null) => void;
allowFileRemoval?: boolean;
showHeader?: boolean;
uploadDescription?: string;
fileUrlPlaceholder?: string;
disableWhenHasSelection?: boolean;
footer?: ReactNode;
}
interface FileUploaderProps extends BaseFileUploadProps {
title?: string;
description?: string;
inputFields?: InputField[];
multiple?: boolean;
onSuccess: (data: FileUploadData[], fieldValues: Record<string, string>) => Promise<void>;
trigger?: ReactNode;
isProcessing?: boolean;
}
export type { FileDropzoneProps as F, InputField as I, UploadResult as U, FileUploadData as a, UseFileUploadOptions as b, UploadFromUrlOptions as c, UseFileUploadReturn as d, FileUploadProps as e, FileUploaderProps as f };