---
fragment_id: oscar.map.export-menu.002
domain: MAP
rule: Export menu with six formats and per-format options
source: app/src/map/ExportMenu.tsx
bound_to_modules:
  - oscar.map
status: SHIPPED
version: .002
---

# Export menu (per codex.md §C8 + C6 user sim 19 + rules.md §11)

The export menu is accessible from two locations:

1. The side panel, when a layer is selected — pre-filtered to that single layer
2. A global toolbar button (alongside the layer filter row) — opens the menu with no pre-filter, defaulting to "all visible layers"

## Format picker

Six formats:

- **PDF** — court-grade, see rules.md §11 and the PDF report-type picker (oscar.map.report-types.002)
- **PNG** — rasterised map screenshot, current view, 2x DPI
- **SVG** — vector screenshot, scales cleanly
- **GeoJSON** — court-grade GIS-canonical, machine-readable, see rules.md §11
- **KML** — opens in Google Earth for client demos
- **Print Layout** — opens the browser print preview with @media print styles active

## Options form

The options form is the same for all formats, with PDF having the most fields:

- **Which layers?** `Selected only` (default when opened from side panel) | `All visible on map` (default when opened from global toolbar, post-filter) | `All in project`
- **Map extent?** `Auto-fit to selected` | `Keep current view` | `Custom bounds` (lat/lng corners)
- **Title block** — fields vary by report type. For PDF, the title block is mandatory and selected per report type. For non-PDF formats, a simplified title block is included if "Include title" is checked.

## Court-grade requirements (PDF + GeoJSON)

Per rules.md §11, PDF and GeoJSON must be court-grade:

- PDF must include a title block, legend, scale bar, north arrow, layer table (one row per included layer with name, kind, vertex count, created date, version), and the page footer with generation timestamp and document hash.
- GeoJSON must be RFC 7946 compliant, include layer properties (id, name, kind, version) on each Feature, and include a top-level `metadata` block with generation timestamp, document id, layer versions map, and operator profile (when cloud-sync lands).

## Export action

Selecting a format + clicking Export generates the file client-side. The file is downloaded to the operator's device AND a `Document` record is written to the `documents` IDB store (see oscar.map.documents-view.002 + rules.md §11).

Export is disabled (button greyed) when zero layers match the selection.