import React from 'react'; import { SxProps, Theme } from '@mui/material'; import { StraussLabels } from '../labels'; import { StraussConfig, StraussFileConstraints, StraussNotifyProps, StraussValidationError } from '../../types'; /** Modalità del picker: carica subito, oppure delega la selezione al consumer. */ export type StraussFilePickerMode = 'upload' | 'select'; export interface StraussFilePickerProps extends StraussConfig, StraussNotifyProps { /** Directory di destinazione (usata solo in modalità `upload`). */ path?: string; /** * `upload` (default): carica subito e invalida la lista. * `select`: non carica, emette `onSelect` con i file validi. */ mode?: StraussFilePickerMode; /** Selezione multipla. Default: `true`. */ multiple?: boolean; /** Vincoli sui file. Non valorizzati = nessun vincolo. */ constraints?: StraussFileConstraints; /** File già presenti, per i vincoli `maxFiles` / `maxTotalSizeMB`. */ existingCount?: number; /** Dimensione in byte dei file già presenti. */ existingSizeBytes?: number; /** Aspetto: bottone con testo o solo icona. Default: `button`. */ variant?: 'button' | 'icon'; /** Testo del bottone. Default: dai `labels`/traduzioni. */ label?: string; labels?: StraussLabels; icon?: React.ReactNode; disabled?: boolean; size?: 'small' | 'medium' | 'large'; sx?: SxProps; /** Invocata in modalità `select` con i soli file che passano la validazione. */ onSelect?: (files: File[]) => void; /** Invocata sempre quando la selezione viola dei vincoli. */ onValidationError?: (errors: StraussValidationError[]) => void; } /** * Bottone (o icona) di selezione file, con input nascosto e validazione. * * In modalità `upload` carica i file validi e invalida la directory; in * modalità `select` li restituisce al consumer, che li tiene in stato locale. */ export declare const StraussFilePicker: React.FC; export default StraussFilePicker; //# sourceMappingURL=StraussFilePicker.d.ts.map