From 9e345ef7efbb5bc50a336bfba7cf579feeba935e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20Bl=C3=A4ttermann?= Date: Fri, 13 Feb 2026 17:14:28 +0100 Subject: [PATCH] refactor: replace carbon icons (#1454) --- app/components/AppHeader.vue | 24 +++--- app/components/BlueskyPostEmbed.client.vue | 8 +- app/components/CallToAction.vue | 8 +- app/components/Code/FileTree.vue | 2 +- app/components/Code/MobileTreeDrawer.vue | 4 +- app/components/CollapsibleSection.vue | 8 +- app/components/ColumnPicker.vue | 2 +- app/components/Compare/ComparisonGrid.vue | 4 +- app/components/Compare/FacetCard.vue | 7 +- app/components/Compare/FacetRow.vue | 7 +- app/components/Compare/FacetSelector.vue | 4 +- app/components/Compare/PackageSelector.vue | 6 +- .../Compare/ReplacementSuggestion.vue | 2 +- app/components/DependencyPathPopup.vue | 2 +- app/components/Filter/Chips.vue | 2 +- app/components/Filter/Panel.vue | 4 +- app/components/Header/AccountMenu.client.vue | 16 ++-- app/components/Header/AccountMenu.server.vue | 2 +- app/components/Header/AuthModal.client.vue | 2 +- app/components/Header/ConnectorModal.vue | 6 +- app/components/Header/MobileMenu.client.vue | 10 +-- app/components/Header/OrgsDropdown.vue | 4 +- app/components/Header/PackagesDropdown.vue | 4 +- app/components/LicenseDisplay.vue | 2 +- app/components/Link/Base.vue | 4 +- app/components/Modal.client.vue | 2 +- app/components/Org/MembersPanel.vue | 12 +-- app/components/Org/OperationsQueue.vue | 30 +++---- app/components/Org/TeamsPanel.vue | 23 +++--- app/components/Package/AccessControls.vue | 12 +-- app/components/Package/Card.vue | 4 +- app/components/Package/ClaimPackageModal.vue | 10 +-- app/components/Package/Compatibility.vue | 2 +- app/components/Package/Dependencies.vue | 6 +- app/components/Package/DeprecatedTree.vue | 4 +- app/components/Package/InstallScripts.vue | 6 +- app/components/Package/ListControls.vue | 2 +- app/components/Package/ListToolbar.vue | 4 +- app/components/Package/Maintainers.vue | 4 +- app/components/Package/ManagerSelect.vue | 4 +- app/components/Package/MetricsBadges.vue | 18 +---- app/components/Package/Playgrounds.vue | 8 +- app/components/Package/Replacement.vue | 10 +-- app/components/Package/Skeleton.vue | 16 ++-- app/components/Package/SkillsModal.vue | 16 ++-- app/components/Package/Table.vue | 24 ++++-- app/components/Package/TableRow.vue | 4 +- app/components/Package/TrendsChart.vue | 42 ++++------ .../Package/VersionDistribution.vue | 46 ++++------- app/components/Package/Versions.vue | 26 +++--- app/components/Package/VulnerabilityTree.vue | 8 +- .../Package/WeeklyDownloadStats.vue | 2 +- app/components/PackageProvenanceSection.vue | 2 +- app/components/PaginationControls.vue | 4 +- app/components/ProvenanceBadge.vue | 4 +- app/components/Readme.vue | 26 +++--- app/components/ReadmeTocDropdown.vue | 4 +- app/components/ScrollToTop.client.vue | 4 +- .../SearchProviderToggle.client.vue | 8 +- .../SearchProviderToggle.server.vue | 2 +- app/components/SearchSuggestionCard.vue | 2 +- app/components/Select/Field.vue | 2 +- app/components/Settings/AccentColorPicker.vue | 2 +- app/components/Settings/TranslationHelper.vue | 4 +- app/components/Terminal/Install.vue | 4 +- app/components/UserCombobox.vue | 2 +- app/components/VersionSelector.vue | 6 +- app/components/ViewModeToggle.vue | 4 +- app/pages/about.vue | 6 +- app/pages/accessibility.vue | 4 +- app/pages/compare.vue | 7 +- app/pages/index.vue | 2 +- app/pages/org/[org].vue | 4 +- .../v/[version]/[...filePath].vue | 10 +-- app/pages/package/[[org]]/[name].vue | 80 ++++++++----------- app/pages/privacy.vue | 10 +-- app/pages/recharging.vue | 26 +++--- app/pages/settings.vue | 6 +- app/pages/~[username]/index.vue | 4 +- app/pages/~[username]/orgs.vue | 4 +- app/utils/file-icons.ts | 6 +- .../content/1.getting-started/.navigation.yml | 2 +- .../1.getting-started/1.introduction.md | 2 +- .../1.getting-started/2.quick-start.md | 2 +- docs/content/2.guide/.navigation.yml | 2 +- docs/content/2.guide/1.features.md | 4 +- docs/content/2.guide/2.keyboard-shortcuts.md | 2 +- docs/content/2.guide/3.url-structure.md | 2 +- docs/content/3.faq/.navigation.yml | 2 +- docs/content/3.faq/1.troubleshooting.md | 2 +- docs/content/3.faq/2.comparison.md | 2 +- docs/content/index.md | 14 ++-- package.json | 1 - pnpm-lock.yaml | 10 --- scripts/generate-file-tree-sprite.ts | 4 +- server/utils/readme.ts | 4 +- test/nuxt/components/LicenseDisplay.spec.ts | 6 +- test/nuxt/components/PackageVersions.spec.ts | 2 +- test/nuxt/components/VersionSelector.spec.ts | 2 +- test/nuxt/components/compare/FacetRow.spec.ts | 8 +- .../components/compare/FacetSelector.spec.ts | 8 +- .../compare/PackageSelector.spec.ts | 6 +- uno.config.ts | 2 + 103 files changed, 385 insertions(+), 442 deletions(-) diff --git a/app/components/AppHeader.vue b/app/components/AppHeader.vue index f05dbb0..5af7c70 100644 --- a/app/components/AppHeader.vue +++ b/app/components/AppHeader.vue @@ -23,7 +23,7 @@ const desktopLinks = computed(() => [ keyshortcut: 'c', type: 'link', external: false, - iconClass: 'i-carbon:compare', + iconClass: 'i-lucide:git-compare', }, { name: 'Settings', @@ -32,7 +32,7 @@ const desktopLinks = computed(() => [ keyshortcut: ',', type: 'link', external: false, - iconClass: 'i-carbon:settings', + iconClass: 'i-lucide:settings', }, ]) @@ -55,7 +55,7 @@ const mobileLinks = computed(() => [ to: { name: 'about' }, type: 'link', external: false, - iconClass: 'i-carbon:information', + iconClass: 'i-lucide:info', }, { name: 'Privacy Policy', @@ -63,7 +63,7 @@ const mobileLinks = computed(() => [ to: { name: 'privacy' }, type: 'link', external: false, - iconClass: 'i-carbon:security', + iconClass: 'i-lucide:shield-check', }, { name: 'Accessibility', @@ -71,7 +71,7 @@ const mobileLinks = computed(() => [ to: { name: 'accessibility' }, type: 'link', external: false, - iconClass: 'i-carbon:accessibility-alt', + iconClass: 'i-custom:a11y', }, ], }, @@ -90,7 +90,7 @@ const mobileLinks = computed(() => [ target: '_blank', type: 'link', external: true, - iconClass: 'i-carbon:document', + iconClass: 'i-lucide:file-text', }, { name: 'Source', @@ -99,7 +99,7 @@ const mobileLinks = computed(() => [ target: '_blank', type: 'link', external: true, - iconClass: 'i-carbon:logo-github', + iconClass: 'i-simple-icons:github', }, { name: 'Social', @@ -108,7 +108,7 @@ const mobileLinks = computed(() => [ target: '_blank', type: 'link', external: true, - iconClass: 'i-carbon:logo-bluesky', + iconClass: 'i-simple-icons:bluesky', }, { name: 'Chat', @@ -117,14 +117,14 @@ const mobileLinks = computed(() => [ target: '_blank', type: 'link', external: true, - iconClass: 'i-carbon:chat', + iconClass: 'i-lucide:message-circle', }, ], }, ]) const showFullSearch = shallowRef(false) -const showMobileMenu = shallowRef(false) +const showMobileMenu = shallowRef(true) const { env } = useAppConfig().buildInfo // On mobile, clicking logo+search button expands search @@ -288,7 +288,7 @@ onKeyStroke( :aria-expanded="showMobileMenu" @click="expandMobileSearch" v-if="!isSearchExpanded && !isOnHomePage" - classicon="i-carbon:search" + classicon="i-lucide:search" /> @@ -298,7 +298,7 @@ onKeyStroke( :aria-label="$t('nav.open_menu')" :aria-expanded="showMobileMenu" @click="showMobileMenu = !showMobileMenu" - classicon="i-carbon:menu" + classicon="i-lucide:menu" /> diff --git a/app/components/BlueskyPostEmbed.client.vue b/app/components/BlueskyPostEmbed.client.vue index 32e3b98..ed253b8 100644 --- a/app/components/BlueskyPostEmbed.client.vue +++ b/app/components/BlueskyPostEmbed.client.vue @@ -83,7 +83,7 @@ const { data: post, status } = useAsyncData(
@{{ post.author.handle }}