# LivaFileBox
Package: @dataliva/livalib
Description: @dataliva/livalib dosya yükleme bileşeni.

Sürükle-bırak destekli dosya seçme ve listeleme bileşeni. Seçilen dosyalar
yerel olarak tutulur; yükleme akışını `onChange` ve benzeri geri çağrılarla
siz yönetirsiniz.

```tsx
import { LivaFileBox } from "@dataliva/livalib";
```

## Tek dosya seçimi

`multiple={false}` ile yalnızca tek dosya seçilir. Seçim her değiştiğinde
`onChange` güncel `UploadedFile` dizisini verir.

**Örnek — Tek dosya seçimi:**

```tsx
<LivaFileBox
  label="Sözleşme"
  multiple={false}
  onChange={(files) => setFileName(files[0]?.name ?? null)}
/>
{fileName && <p>Seçilen dosya: {fileName}</p>}
```

## Çoklu dosya ve maxFiles

`multiple` açıkken `maxFiles` toplam dosya sayısını sınırlar.

**Örnek — Çoklu dosya ve maxFiles:**

```tsx
<LivaFileBox
  label="Ekler"
  multiple
  maxFiles={3}
  onChange={(files) => setNames(files.map((f) => f.name))}
/>
<ul>
  {names.map((n) => (
    <li key={n}>{n}</li>
  ))}
</ul>
```

## Dosya türü kısıtı

`accept` klasik HTML accept sözdizimini kullanır (ör. `image/*`, `.pdf`);
daha sıkı denetim için `allowedMimeTypes` dizisi de verilebilir.

**Örnek — Dosya türü kısıtı (accept):**

```tsx
<LivaFileBox
  label="Görsel yükle"
  accept="image/*"
  hint="Yalnızca görsel dosyaları (PNG, JPG, ...)"
  maxFiles={2}
/>
```

## Prop'lar

| Prop | Tip | Varsayılan |
|------|------|---------|
| `label` | `string` | — |
| `hint` | `string` | — |
| `accept` | `string` | — |
| `allowedMimeTypes` | `string[]` | — |
| `multiple` | `boolean` | `true` |
| `maxFiles` | `number` | — |
| `maxFileSize` | `number` | — |
| `disabled` | `boolean` | `false` |
| `value` | `UploadedFile[]` | — |
| `onChange` | `(files: UploadedFile[]) => void` | — |
| `onDelete` | `(deleted: UploadedFile, all: UploadedFile[]) => void` | — |
| `onError` | `(message: string, file?: File) => void` | — |
| `showPreview` | `boolean` | — |
| `displayMode` | `'grid' \| 'list'` | — |
| `height` | `number \| string` | — |

Seçilen her dosya `UploadedFile` nesnesi olarak döner (`id`, `name`, `type`,
`size`, `date`, `file`, `url` alanları).
