# 20. Create File Picker UI for Import
meta:
id: podcast-tui-app-20
feature: podcast-tui-app
priority: P1
depends_on: [19]
tags: [file-picker, input, ui, solidjs, opentui]
objective:
- Create file picker component for selecting import files
- Implement file format detection
- Display file information
- Handle file selection and validation
deliverables:
- `src/components/FilePicker.tsx` with file picker UI
- `src/components/FileInfo.tsx` with file details
- `src/utils/file-detector.ts` with format detection
steps:
- Create `src/utils/file-detector.ts`:
- `detectFormat(file: File): 'json' | 'xml' | 'unknown'`
- Read file header
- Check file extension
- Validate format
- Create `src/components/FilePicker.tsx`:
- File input using `` component
- Accept JSON and XML files
- File selection handler
- Clear button
- Create `src/components/FileInfo.tsx`:
- Display file name
- Display file size
- Display file format
- Display last modified date
- Add file picker to import dialog
tests:
- Unit: Test format detection
- Unit: Test file picker selection
- Integration: Test file validation
acceptance_criteria:
- File picker allows selecting files
- Format detection works correctly
- File information is displayed
- Invalid files are rejected
validation:
- Run application and test file picker
- Select valid files
- Select invalid files
- Verify format detection
notes:
- Use OpenTUI `` component for file picker
- Accept `.json` and `.xml` extensions
- Check file size limit (e.g., 10MB)
- Add file type validation
- Handle file selection errors