# rn-file-attachment-panel URL: /docs/native/docyrus/file-attachment-panel Record attachments panel with pick-and-upload from files, photos or the camera, per-file progress with retry, list and grid views, and delete confirmation. ## Installation ```bash pnpm dlx @docyrus/cli add @docyrus/rn-file-attachment-panel ``` **Dependencies:** - [expo-document-picker](https://www.npmjs.com/package/expo-document-picker) - [expo-image-picker](https://www.npmjs.com/package/expo-image-picker) Both pickers are **optional peers** loaded lazily. The **Add** sheet offers only the sources that are installed: | Source | Package | Sheet item | |--------|---------|------------| | `document` | `expo-document-picker` | Browse files (multi-select, filtered by the MIME part of `accept`) | | `library` | `expo-image-picker` | Photo library (images + videos, multi-select) | | `camera` | `expo-image-picker` | Take photo | With a single installed source the Add button opens that picker directly; with none (and no `onPickFiles`) the Add button is hidden. ## Usage ```tsx import { FileAttachmentPanel, type DocyrusFile, type NativeFile } from '@/components/docyrus-native/file-attachment-panel'; async function uploadFile(file: NativeFile, options?: { onProgress: (progress: number) => void }): Promise