Skip to content

[Design] Add governed minimap visibility control to ERD toolbar #928

Description

@seonghobae

Buyer-visible problem

Large ERD canvases benefit from temporarily hiding the React Flow minimap. The original code-only donor PR #860 is now closed and must not be revived from its stale App.tsx tree. The remaining work is to land the behavior through the reusable toolbar/design-system contract after the current toolbar writer is stable.

Current protected/design authority — 2026-08-20

Fresh protected source truth is main@af235d5824a3a1ea42575af3d6f080ed4f7cc5ad.

The authoritative Figma file is csnpEEJfmqFWB0vNUoTkWA:

  • ERDEditor: 37:114;
  • CanvasToolbar instance: 37:131;
  • Editor Controls: 35:2;
  • ToolbarButton: 35:30;
  • CanvasToolbar: 35:125.

Fresh Figma metadata now proves the design-first prerequisite is complete:

  • ToolbarButton has Neutral/Primary Default, Hover, Focus, Pressed, and Disabled variants;
  • CanvasToolbar has Density=Compact|Labeled, State=Ready|SomeDisabled, and Minimap=Shown|Hidden variant axes;
  • the toolbar uses the existing --pg-* semantic tokens, including --pg-color-action-primary-default, --pg-color-border-default, --pg-color-text-disabled, spacing and radius tokens;
  • Minimap=Shown / Minimap=Hidden are therefore the reviewed visual-state vocabulary and must be preserved by code and Storybook rather than recreated as a one-off control.

Current repository search on protected main still finds no Storybook configuration or stories. Figma Code Connect component inventory cannot currently be read with the connected account because Figma requires a Dev or Full seat on an Organization/Enterprise plan; this limitation must be recorded rather than replaced with a fabricated mapping.

Active-writer boundary

Draft PR #858 is still open and owns the overlapping canvas-toolbar App.tsx/styles interaction surface. Its current head is 904252a27dedbf7812b729b2f1a4a27dc2c2c00a, and its own body requires reconstruction before merge. Do not mutate or copy that lane from this issue while it is active.

Dependabot/other package-manifest work also exists in this repository, so introducing Storybook dependencies must happen only after refetching the exact package manifests and confirming no active writer owns the same files.

Required bounded vertical slice

  1. After a11y(frontend): keep unavailable toolbar actions discoverable #858 is stable/integrated or explicitly superseded, reconstruct from then-current protected main; do not reuse ✨ feat: 미니맵(MiniMap) 토글 기능 추가 #860's stale tree.
  2. Implement the minimap command through the reusable toolbar-action/component contract rather than adding another one-off App.tsx button.
  3. Preserve session-local preference only; do not invent persisted or cross-device settings authority.
  4. Preserve a stable action/state accessible name (미니맵 숨기기 / 미니맵 표시 or localized equivalent), aria-pressed semantics, visible keyboard focus, and non-color-only state cues; do not rely on the map glyph or title alone.
  5. Add Storybook inventory for Minimap=Shown|Hidden in compact/labeled and relevant ready/unavailable states, including keyboard focus, 200% zoom/narrow viewport, forced colors, reduced motion where applicable, and dark-mode state if the production token contract supports it.
  6. Map Storybook story/state names explicitly to Figma ToolbarButton / CanvasToolbar variants and the shared --pg-* runtime tokens. If Code Connect remains unavailable, document the seat limitation and keep the mapping machine-readable in repository doctoring/tests instead of claiming a live Code Connect record.
  7. Add exact-current-head interaction regressions proving the minimap is present by default, toggles without changing graph data/selection authority, and remains keyboard discoverable.
  8. Update doctoring/CHANGELOG only after executable behavior, Storybook, and Figma agree.

Non-goals

  • no graph-data mutation;
  • no backend/database/API change;
  • no new persistence or user-preference service;
  • no unrelated search/polling/export-toolbar rewrite;
  • no direct restoration or merge of ✨ feat: 미니맵(MiniMap) 토글 기능 추가 #860;
  • no weakening of current branch protection, review, or exact-head checks.

Acceptance

  • Figma owns explicit Minimap=Shown|Hidden toolbar states.
  • Figma owns token-backed keyboard-focus variants for the reusable toolbar button.
  • a11y(frontend): keep unavailable toolbar actions discoverable #858 overlapping writer is stable/integrated or explicitly superseded before code migration begins.
  • Storybook exposes the same minimap state vocabulary and required accessibility/responsive states.
  • Production implementation is reconstructed from then-current protected main through the reusable toolbar contract.
  • Exact-current-head interaction/coverage/build/security checks are terminal-success.
  • Zero valid unresolved review findings/threads remain.
  • Qualifying independent approval and every live protected-main requirement pass without bypass.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: authAuthentication, authorization, identity, or tenant isolationarea: ci-cdCI, GitHub Actions, checks, release, or supply chainarea: dependenciesDependency or lockfile maintenancearea: securitySecurity boundary, hardening, or vulnerability preventionpriority: mediumNormal-priority or P2 workstatus: triagedOpen issue has an organization taxonomy assignmenttype: featureNew or expanded product capability

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions