Skip to content

PMM-15180 Replace local custom SVG icons with peak-ui and MUI components - #5731

Open
pmcf-percona wants to merge 3 commits into
mainfrom
PMM-15180-replace-local-icons
Open

PMM-15180 Replace local custom SVG icons with peak-ui and MUI components#5731
pmcf-percona wants to merge 3 commits into
mainfrom
PMM-15180-replace-local-icons

Conversation

@pmcf-percona

@pmcf-percona pmcf-percona commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Ticket number: PMM-15180

Feature build: Pending...

Summary

PMM kept its own copies of ~50 brand and UI icons as local SVGs in src/icons/, wired through a local Icon component and DYNAMIC_ICON_IMPORT_MAP. Most duplicated icons the design system or Material already provide. This PR sources them properly instead.

The design system was renamed from @percona/percona-ui to @percona/peak-ui, so this also adopts @percona/peak-ui@1.0.25 (the first release carrying the custom Peak Design icon suite) and repoints every existing import.

Also in this PR:

  • 7 brand icons move to @percona/peak-ui components (PerconaIcon, HaproxyIcon, ProxyIcon, PerconaMyIcon/MoIcon/PoIcon/VaIcon), and the RTA empty state uses RealTimeDatabaseOffIllustration from the design system in place of a local 192px SVG.
  • 24 standard glyphs move to @mui/icons-material across the sidebar, theme toggle, app bar, release notes and RTA controls.
  • 14 custom glyphs move to new Peak Design components.
  • Removes three unreferenced icons (collapse-content, expand-content, bottom-panel-open) and the dead node map alias.
  • The release-notes percona marker is now a theme-aware monochrome icon instead of a fixed orange–gold gradient, matching the other markers.

How to test

In both light and dark themes, scan the left sidebar (MySQL/MongoDB/PostgreSQL/Valkey, OS, HAProxy/ProxySQL, Dashboards, Explore, Alerts, Advisors, Inventory, Backups, Configuration, Users and access, Account, Help, theme toggle) plus the app-bar logo and support icon. Then check the Help Center "PMM docs" card, the Updates → release-notes icons, and Real-Time Analysis (overview play/pause/refresh/export, the auto-refresh bolt, the details-pane collapse button, and the empty-state illustration).

No API changes.

Related work:

  • percona/percona-ui#50 — adds the 14 custom Peak Design icons this PR consumes; shipped in @percona/peak-ui@1.0.25.

Testing screenshots:

iconsdarkfull

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

This PR migrates the PMM app from the @percona/percona-ui package to @percona/peak-ui, version 1.0.25. It updates import statements across theme, dialog, form, table, and navigation components. It also replaces custom string-based Icon usages with direct MUI and Peak UI icon components, and reduces the local icon registry to PMM logos and status icons.

Changes

Peak UI Migration

Layer / File(s) Summary
Package dependency update
ui/apps/pmm/package.json
The dependency changes from @percona/percona-ui@1.0.22 to @percona/peak-ui@1.0.25.
Core theme, dialog, and form component imports
ui/apps/pmm/src/App.tsx, ui/apps/pmm/src/hooks/theme.ts, ui/apps/pmm/src/utils/testWrapper.tsx, ui/apps/pmm/src/components/sidebar/nav-item/SidebarNavItem.tsx, ui/apps/pmm/src/components/syntax-highlighter/SyntaxHighlighter.utils.ts, ui/apps/pmm/src/pages/rta/sessions/sessions-table/modal-*/..., ui/apps/pmm/src/pages/settings/components/*/..., ui/apps/pmm/src/pages/update-clients/UpdateClients.tsx, ui/apps/pmm/src/pages/rta/overview/table/OverviewTable.tsx
Theme provider, dialog, form input, table, and syntax-highlighter imports are switched from @percona/percona-ui to @percona/peak-ui, with no behavior changes.
Icon registry reduction
ui/apps/pmm/src/components/icon/Icon.constants.ts
DYNAMIC_ICON_IMPORT_MAP and VIEWBOX_MAP are reduced to PMM logo variants and status icons only, removing previously registered general and product icons.
App bar and navigation constants icon updates
ui/apps/pmm/src/components/app-bar/AppBar.tsx, ui/apps/pmm/src/contexts/navigation/navigation.constants.ts, ui/apps/pmm/src/contexts/navigation/navigation.utils.tsx
The app bar Help link and all navigation entries (dashboards, alerts, users, backups, high availability, theme toggle, etc.) switch from string icon identifiers to imported MUI and Peak UI icon components.
Page-level icon replacements
ui/apps/pmm/src/pages/help-center/help-center-card/HelpCenterCard.tsx, ui/apps/pmm/src/pages/updates/change-log/release-notes/ReleaseNotes.constants.tsx, ui/apps/pmm/src/pages/rta/overview/RealtimeOverview.tsx, ui/apps/pmm/src/pages/rta/overview/auto-refresh-select/AutoRefreshSelect.tsx, ui/apps/pmm/src/pages/rta/selection/empty-state/RealtimeSelectionViewerEmptyState.tsx
Generic Icon component usages are replaced with direct MUI and Peak UI icon/illustration components in help center, release notes, and RTA pages.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

  • percona/pmm#5728: This PR upgrades the Percona UI library dependency in the package configuration, and this PR completes the code-level migration to the renamed package.

Suggested reviewers: ademidoff, mattiasimonato, fabio-silva, matejkubinec

Poem

A rabbit hops through code anew,
percona-ui bids adieu.
peak-ui icons shine so bright,
Help and bolt icons take flight.
🐇✨ Navigation trimmed with care,
Clean imports now everywhere!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly describes replacing local custom SVG icons with Peak UI and MUI components.
Description check ✅ Passed The description includes the ticket, feature build status, summary, testing steps, API-change status, and related work.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
⚔️ Resolve merge conflicts 💡
  • Resolve merge conflict in branch PMM-15180-replace-local-icons
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch PMM-15180-replace-local-icons

Comment @coderabbitai help to get the list of available commands.

@pmcf-percona pmcf-percona changed the title Replace custom SVG icons with Material-UI and Peak UI components PMM-15180 Replace local custom SVG icons with peak-ui and MUI components Aug 4, 2026
@pmcf-percona
pmcf-percona marked this pull request as ready for review August 4, 2026 15:07
@pmcf-percona
pmcf-percona requested a review from a team as a code owner August 4, 2026 15:07
@pmcf-percona
pmcf-percona requested review from fabio-silva and mattiasimonato and removed request for a team August 4, 2026 15:07
Replace PMM's bundled SVG icons with design-system and Material
components and adopt the @percona/percona-ui -> @percona/peak-ui rename
(@percona/peak-ui@1.0.25).

- 7 brand icons + 14 custom glyphs -> @percona/peak-ui components
- 24 standard glyphs -> @mui/icons-material
- RTA empty state -> RealTimeDatabaseOffIllustration
- remove 3 unreferenced icons + the dead `node` map alias
- src/icons/ trimmed to the status icons and PMM logos, kept by design

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GvaaWAnYeGgjBFDcrFv9Jx
@pmcf-percona
pmcf-percona force-pushed the PMM-15180-replace-local-icons branch from 3904830 to ee4420a Compare August 4, 2026 15:25
@coderabbitai coderabbitai Bot mentioned this pull request Aug 4, 2026
Signed-off-by: Claude <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants