1---2name: desktop-ui-export-import3description: Use whenever designing or reviewing export dialogs, import flows, drag-and-drop import zones, or format/destination pickers in a desktop app. Depends on desktop-ui-foundations, desktop-ui-surfaces-overlays, and desktop-ui-feedback-messaging. Trigger on "export dialog," "import flow," "file format picker," or "drag and drop import."4---56# Export & Import Panels (Desktop)78## Export910- **Surface it as a modal or dedicated panel, not a silent one-click action**, whenever there's a real decision to make (format, quality, destination) — but if there's genuinely only one sensible format and destination, don't manufacture a dialog just to have one; a direct "Export" action with a system save-location picker is fine.11- **Group the decisions in a sensible order**: format first (it often determines which other options are even relevant), then quality/settings specific to that format, then destination last.12- **Show a live estimate where feasible** (estimated file size, estimated duration for a render/export) — this is the kind of detail that makes an export dialog feel considered rather than a bare form.13- **Progress**: a real, measured progress bar (see `desktop-ui-feedback-messaging`) with an estimated time remaining once it's calculable, and a working Cancel action — never lock the user out of cancelling a long export.14- **On completion**: a clear success state with a direct way to act on the result (Show in folder / Open / Copy path), not just a toast that vanishes and leaves the user to go hunt for the file themselves.15- **Remember the user's last-used settings** (format, quality, destination folder) as the new defaults for next time — repeat exporters shouldn't have to reconfigure the same choices every session.1617## Import1819- **Support drag-and-drop as a first-class path**, not just a "browse files" button — the drop zone should give clear visual feedback the moment a drag enters the window (a highlighted border/overlay), not just on successful drop.20- **Validate before committing**, and show what was found (file count, format, a quick preview/thumbnail where feasible) before the import actually runs — this catches "wrong file" mistakes before they cost the user an undo.21- **Handle partial failure gracefully**: if importing 20 files and 2 fail, don't fail the whole batch silently or block the 18 that succeeded — import what's valid, and clearly report which ones failed and why (see the error-message guidance in `desktop-ui-feedback-messaging`).22- **Show progress for anything non-instant**, exactly like export — an import that appears to hang with no feedback reads as a crash, not a wait.2324## Format and destination pickers2526- If there's more than one export/import format, present them as a clear, labeled choice (radio group or select, per `desktop-ui-text-inputs`/`desktop-ui-buttons-controls`) with a one-line description of what each format is good for if the difference isn't obvious from the name alone (a novice user often can't distinguish two audio codec names without help).27- Destination pickers should default to the last-used location or a sensible platform default (Documents, Downloads, or the app's own project folder) — never default to a deeply nested or unpredictable path.2829## Accessibility & internationalization3031- Prefer the OS's native file picker over a custom-built file browser wherever possible — the native one inherits keyboard access, screen reader support, and localization for free; a custom one has to reimplement all three.32- Drag-and-drop import always needs a real keyboard/menu-driven fallback (a File > Import menu item, a button) — drag-and-drop alone excludes keyboard-only and many screen reader users entirely.33- Leave headroom in format/destination labels for translated text (see `desktop-ui-accessibility-i18n`).3435## Review format3637| Before | After | Why |38|---|---|---|39| Export completes with only a toast that disappears in 4s | Success state with a persistent "Show in folder" / "Open" action | Gives the user a direct way to act on the result instead of hunting for the file |40| Importing 10 files fails entirely because 1 file was an unsupported format | The 9 valid files import successfully; the 1 failure is reported specifically | Partial success should not be discarded because of one bad input |41| Export dialog re-asks for format/quality/destination from scratch every time | Last-used settings are remembered as the new defaults | Repeat exporters shouldn't reconfigure identical choices every session |