mirror of
https://github.com/olehomelchenko/astrolabe.git
synced 2026-08-08 02:02:33 +00:00
Per-chart export: copy/download spec and PNG/SVG from the preview header
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user