Per-chart export: copy/download spec and PNG/SVG from the preview header

This commit is contained in:
2026-06-10 18:30:31 +03:00
parent cad19445b0
commit 1791ee9f8d
15 changed files with 921 additions and 33 deletions
+7 -4
View File
@@ -194,10 +194,13 @@ ephemeral request state, not durable data:
- **`useConfirmStore`** — the blocking confirm dialog (the `window.confirm` replacement).
- **`useNotificationStore`** — non-blocking toasts (failed saves, etc.).
- **`useSettingsPopoverStore`** — which per-pane settings disclosure is open (one
at a time); its imperative `openSettingsPopover(id)` lets the Cmd/Ctrl+, shortcut
open the editor cluster. The disclosure widget contract (gear + non-modal popover,
not an ARIA menu; Esc/focus rules) is [10 · Interaction & Feedback](10-interaction-and-feedback.md) §5.
- **`useSettingsPopoverStore`** — the single-open registry for **all** pane-header
disclosures (the per-pane settings clusters and the per-chart Export control), keyed
by id so at most one is open at once; its imperative `openSettingsPopover(id)` lets the
Cmd/Ctrl+, shortcut open the editor cluster. Header disclosures share this registry rather
than each carrying their own open-state. The disclosure widget contract (trigger +
non-modal popover, not an ARIA menu; Esc/focus rules) is
[10 · Interaction & Feedback](10-interaction-and-feedback.md) §5.
Each pairs its store with a thin **imperative trigger** exported alongside the hook —
`confirm(opts): Promise<boolean>` and `notify(opts): string` — so orchestration/services can