Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
a02d0e4
refactor: unify syntax for carbon icons
essenmitsosse Feb 13, 2026
5424389
refactor: unify syntax for lucide icons
essenmitsosse Feb 13, 2026
89c3c30
refactor: replace chevron icons
essenmitsosse Feb 13, 2026
d9afb50
refactor: replace close icon
essenmitsosse Feb 13, 2026
af1b420
refactor: replace folder icon
essenmitsosse Feb 13, 2026
fc467cd
refactor: replace idea icon
essenmitsosse Feb 13, 2026
d46c161
refactor: replace info icon
essenmitsosse Feb 13, 2026
4da7e8d
refactor: replace spinner
essenmitsosse Feb 13, 2026
663009f
refactor: replace checkmark icon
essenmitsosse Feb 13, 2026
407080d
refactor: replace plus icon
essenmitsosse Feb 13, 2026
aeda26e
refactor: replace no dependency icon
essenmitsosse Feb 13, 2026
425c841
refactor: replace filter icon
essenmitsosse Feb 13, 2026
b77ef14
refactor: replace terminal icon
essenmitsosse Feb 13, 2026
3901968
refactor: replace atmosphere icon
essenmitsosse Feb 13, 2026
8d6ea45
refactor: replace bluesky icon
essenmitsosse Feb 13, 2026
ac362e0
refactor: replace copy icon
essenmitsosse Feb 13, 2026
c8fff5c
refactor: replace external link icon
essenmitsosse Feb 13, 2026
86cee18
refactor: replace arrow icon
essenmitsosse Feb 13, 2026
c4b29e0
refactor: replace users icon
essenmitsosse Feb 13, 2026
75cc72e
replace refresh icon
essenmitsosse Feb 13, 2026
e02750c
replace search icon
essenmitsosse Feb 13, 2026
63734bc
refactor: replace spinners
essenmitsosse Feb 13, 2026
65a555c
replace clock icon
essenmitsosse Feb 13, 2026
b36e569
replace question mark icon
essenmitsosse Feb 13, 2026
31ade04
replace lock icon
essenmitsosse Feb 13, 2026
57def91
replace user group icon
essenmitsosse Feb 13, 2026
1e6a9da
replace trash icon
essenmitsosse Feb 13, 2026
b24379f
replace chart line icon
essenmitsosse Feb 13, 2026
a730933
replace warning icon
essenmitsosse Feb 13, 2026
28413dc
replace code icon
essenmitsosse Feb 13, 2026
c509d56
replace security icon
essenmitsosse Feb 13, 2026
40a1562
replace sort arrows icon
essenmitsosse Feb 13, 2026
4ba4a99
replace play icon
essenmitsosse Feb 13, 2026
953d65e
replace code file icon
essenmitsosse Feb 13, 2026
5a3d9c4
replace text file icon
essenmitsosse Feb 13, 2026
f4795d7
replace image icon
essenmitsosse Feb 13, 2026
80aea09
replace caret icon
essenmitsosse Feb 13, 2026
f64c75d
replace calendar icon
essenmitsosse Feb 13, 2026
6ddd4f0
replace reset icon
essenmitsosse Feb 13, 2026
c94d599
replace overflow vertical icon
essenmitsosse Feb 13, 2026
a655a85
replace file format icons with text
essenmitsosse Feb 13, 2026
4037353
replace palette icon
essenmitsosse Feb 13, 2026
fef1d08
replace undo icon
essenmitsosse Feb 13, 2026
13a8119
replace redo icon
essenmitsosse Feb 13, 2026
1556b48
replace edit off icon
essenmitsosse Feb 13, 2026
1b7f0e4
replace data icon
essenmitsosse Feb 13, 2026
c341546
replace versions icon
essenmitsosse Feb 13, 2026
852f032
replace chart icon
essenmitsosse Feb 13, 2026
45fee3a
replace error icon
essenmitsosse Feb 13, 2026
7b61c99
replace compare icon
essenmitsosse Feb 13, 2026
8e0e09b
replace settings icon
essenmitsosse Feb 13, 2026
13a80d1
replace accessibility icon
essenmitsosse Feb 13, 2026
6b890c3
replace github icon
essenmitsosse Feb 13, 2026
dea05c4
replace bluesky icon
essenmitsosse Feb 13, 2026
5972e16
replace menu icon
essenmitsosse Feb 13, 2026
2a58558
replace favorite icon
essenmitsosse Feb 13, 2026
fbff66b
replace repeat icon
essenmitsosse Feb 13, 2026
0d8af0e
replace column picker icon
essenmitsosse Feb 13, 2026
1cba4f8
replace dependency icon
essenmitsosse Feb 13, 2026
086146c
replace scale icon
essenmitsosse Feb 13, 2026
228cba2
replace list icon
essenmitsosse Feb 13, 2026
3aca8b0
replace npm icon
essenmitsosse Feb 13, 2026
19c20f7
replace algolia icon
essenmitsosse Feb 13, 2026
4c45260
replace view mode icon
essenmitsosse Feb 13, 2026
f6bd070
replace org icon
essenmitsosse Feb 13, 2026
22991da
replace radicle icon
essenmitsosse Feb 13, 2026
c47c2b4
replace star icon
essenmitsosse Feb 13, 2026
8942093
replace fork icon
essenmitsosse Feb 13, 2026
7717933
replace preview icon
essenmitsosse Feb 13, 2026
f6ea8e4
refactor: replace recharging icons
essenmitsosse Feb 13, 2026
4aa3494
chore: remove carbon icons
essenmitsosse Feb 13, 2026
35ae330
chore: update comment
essenmitsosse Feb 13, 2026
4919ddf
chore: update setup
essenmitsosse Feb 13, 2026
ffb7bd9
test: update tests
essenmitsosse Feb 13, 2026
4d42429
fix: icon class name
essenmitsosse Feb 13, 2026
246dfbf
fix: icon class name
essenmitsosse Feb 13, 2026
111e108
fix: icon class name
essenmitsosse Feb 13, 2026
e7739b7
fix: icon class name
essenmitsosse Feb 13, 2026
4277b19
fix: tests
essenmitsosse Feb 13, 2026
1f90644
chore: remove redundant animation class
essenmitsosse Feb 13, 2026
cfe2c85
style: use different close icon
essenmitsosse Feb 13, 2026
6f93fab
style: improve a11y icon
essenmitsosse Feb 13, 2026
4201606
fix: folder icons
essenmitsosse Feb 13, 2026
4330079
test: update tests
essenmitsosse Feb 13, 2026
db27889
style: add custom a11y icon
essenmitsosse Feb 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions app/components/AppHeader.vue
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const desktopLinks = computed<NavigationConfig>(() => [
keyshortcut: 'c',
type: 'link',
external: false,
iconClass: 'i-carbon:compare',
iconClass: 'i-lucide:git-compare',
},
{
name: 'Settings',
Expand All @@ -31,7 +31,7 @@ const desktopLinks = computed<NavigationConfig>(() => [
keyshortcut: ',',
type: 'link',
external: false,
iconClass: 'i-carbon:settings',
iconClass: 'i-lucide:settings',
},
])

Expand All @@ -54,23 +54,23 @@ const mobileLinks = computed<NavigationConfigWithGroups>(() => [
to: { name: 'about' },
type: 'link',
external: false,
iconClass: 'i-carbon:information',
iconClass: 'i-lucide:info',
},
{
name: 'Privacy Policy',
label: $t('privacy_policy.title'),
to: { name: 'privacy' },
type: 'link',
external: false,
iconClass: 'i-carbon:security',
iconClass: 'i-lucide:shield-check',
},
{
name: 'Accessibility',
label: $t('a11y.title'),
to: { name: 'accessibility' },
type: 'link',
external: false,
iconClass: 'i-carbon:accessibility-alt',
iconClass: 'i-custom:a11y',
},
],
},
Expand All @@ -89,7 +89,7 @@ const mobileLinks = computed<NavigationConfigWithGroups>(() => [
target: '_blank',
type: 'link',
external: true,
iconClass: 'i-carbon:document',
iconClass: 'i-lucide:file-text',
},
{
name: 'Source',
Expand All @@ -98,7 +98,7 @@ const mobileLinks = computed<NavigationConfigWithGroups>(() => [
target: '_blank',
type: 'link',
external: true,
iconClass: 'i-carbon:logo-github',
iconClass: 'i-simple-icons:github',
},
{
name: 'Social',
Expand All @@ -107,7 +107,7 @@ const mobileLinks = computed<NavigationConfigWithGroups>(() => [
target: '_blank',
type: 'link',
external: true,
iconClass: 'i-carbon:logo-bluesky',
iconClass: 'i-simple-icons:bluesky',
},
{
name: 'Chat',
Expand All @@ -116,14 +116,14 @@ const mobileLinks = computed<NavigationConfigWithGroups>(() => [
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
Expand Down Expand Up @@ -287,7 +287,7 @@ onKeyStroke(
:aria-expanded="showMobileMenu"
@click="expandMobileSearch"
v-if="!isSearchExpanded && !isOnHomePage"
classicon="i-carbon:search"
classicon="i-lucide:search"
/>

<!-- Mobile: Menu button (always visible, click to open menu) -->
Expand All @@ -297,7 +297,7 @@ onKeyStroke(
:aria-label="$t('nav.open_menu')"
:aria-expanded="showMobileMenu"
@click="showMobileMenu = !showMobileMenu"
classicon="i-carbon:menu"
classicon="i-lucide:menu"
/>
</nav>

Expand Down
8 changes: 4 additions & 4 deletions app/components/BlueskyPostEmbed.client.vue
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ const { data: post, status } = useAsyncData(
<div class="text-sm text-fg-subtle truncate">@{{ post.author.handle }}</div>
</div>
<span
class="i-carbon:logo-bluesky w-5 h-5 text-fg-subtle ms-auto shrink-0"
class="i-simple-icons:bluesky w-5 h-5 text-fg-subtle ms-auto shrink-0"
aria-hidden="true"
/>
</div>
Expand Down Expand Up @@ -112,15 +112,15 @@ const { data: post, status } = useAsyncData(
<div class="flex items-center gap-4 text-sm text-fg-subtle">
<DateTime :datetime="post.record.createdAt" date-style="medium" />
<span v-if="post.likeCount" class="flex items-center gap-1">
<span class="i-carbon:favorite w-3.5 h-3.5" aria-hidden="true" />
<span class="i-lucide:heart w-3.5 h-3.5" aria-hidden="true" />
{{ post.likeCount }}
</span>
<span v-if="post.repostCount" class="flex items-center gap-1">
<span class="i-carbon:repeat w-3.5 h-3.5" aria-hidden="true" />
<span class="i-lucide:repeat w-3.5 h-3.5" aria-hidden="true" />
{{ post.repostCount }}
</span>
<span v-if="post.replyCount" class="flex items-center gap-1">
<span class="i-carbon:chat w-3.5 h-3.5" aria-hidden="true" />
<span class="i-lucide:message-circle w-3.5 h-3.5" aria-hidden="true" />
{{ post.replyCount }}
</span>
</div>
Expand Down
8 changes: 4 additions & 4 deletions app/components/CallToAction.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@ const socialLinks = computed(() => [
{
id: 'github',
href: 'https://repo.npmx.dev',
icon: 'i-carbon:logo-github',
icon: 'i-simple-icons:github',
titleKey: $t('about.get_involved.contribute.title'),
descriptionKey: $t('about.get_involved.contribute.description'),
ctaKey: $t('about.get_involved.contribute.cta'),
},
{
id: 'discord',
href: 'https://chat.npmx.dev',
icon: 'i-carbon:chat',
icon: 'i-lucide:message-circle',
titleKey: $t('about.get_involved.community.title'),
descriptionKey: $t('about.get_involved.community.description'),
ctaKey: $t('about.get_involved.community.cta'),
},
{
id: 'bluesky',
href: 'https://social.npmx.dev',
icon: 'i-carbon:logo-bluesky',
icon: 'i-simple-icons:bluesky',
titleKey: $t('about.get_involved.follow.title'),
descriptionKey: $t('about.get_involved.follow.description'),
ctaKey: $t('about.get_involved.follow.cta'),
Expand Down Expand Up @@ -55,7 +55,7 @@ const socialLinks = computed(() => [
class="text-sm text-fg-muted group-hover:text-fg inline-flex items-center gap-1 mt-auto focus-visible:outline-none"
>
{{ link.ctaKey }}
<span class="i-carbon:arrow-right rtl-flip w-3 h-3" aria-hidden="true" />
<span class="i-lucide:arrow-right rtl-flip w-3 h-3" aria-hidden="true" />
<span class="absolute z-0 inset-0" aria-hidden="true" />
</a>
</div>
Expand Down
2 changes: 1 addition & 1 deletion app/components/Code/FileTree.vue
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ watch(
:aria-pressed="isNodeActive(node)"
:style="{ paddingLeft: `${depth * 12 + 12}px` }"
@click="toggleDir(node.path)"
:classicon="isExpanded(node.path) ? 'i-carbon:chevron-down' : 'i-carbon:chevron-right'"
:classicon="isExpanded(node.path) ? 'i-lucide:chevron-down' : 'i-lucide:chevron-right'"
>
<svg
class="size-[1em] me-1 shrink-0"
Expand Down
4 changes: 2 additions & 2 deletions app/components/Code/MobileTreeDrawer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ watch(isOpen, open => (isLocked.value = open))
class="md:hidden fixed bottom-4 inset-ie-4 z-45"
:aria-label="$t('code.toggle_tree')"
@click="isOpen = !isOpen"
:classicon="isOpen ? 'i-carbon:close' : 'i-carbon:folder'"
:classicon="isOpen ? 'i-lucide:x' : 'i-lucide:folder'"
/>

<!-- Backdrop -->
Expand Down Expand Up @@ -68,7 +68,7 @@ watch(isOpen, open => (isLocked.value = open))
<ButtonBase
:aria-label="$t('code.close_tree')"
@click="isOpen = false"
classicon="i-carbon-close"
classicon="i-lucide:x"
/>
</div>
<CodeFileTree
Expand Down
8 changes: 2 additions & 6 deletions app/components/CollapsibleSection.vue
Original file line number Diff line number Diff line change
Expand Up @@ -92,15 +92,11 @@ useHead({
:aria-label="ariaLabel"
@click="toggle"
>
<span
v-if="isLoading"
class="i-carbon:rotate-180 w-3 h-3 motion-safe:animate-spin"
aria-hidden="true"
/>
<span v-if="isLoading" class="i-svg-spinners:ring-resize w-3 h-3" aria-hidden="true" />
<span
v-else
class="w-3 h-3 transition-transform duration-200"
:class="isOpen ? 'i-carbon:chevron-down' : 'i-carbon:chevron-right'"
:class="isOpen ? 'i-lucide:chevron-down' : 'i-lucide:chevron-right'"
aria-hidden="true"
/>
</button>
Expand Down
2 changes: 1 addition & 1 deletion app/components/ColumnPicker.vue
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ function handleReset() {
aria-haspopup="true"
:aria-controls="menuId"
@click.stop="isOpen = !isOpen"
classicon="i-carbon-column"
classicon="i-lucide:columns-3-cog"
>
{{ $t('filters.columns.title') }}
</ButtonBase>
Expand Down
4 changes: 2 additions & 2 deletions app/components/Compare/ComparisonGrid.vue
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ function getReplacementTooltip(col: ComparisonGridColumn): string {
</LinkBase>
<TooltipApp v-if="col.replacement" :text="getReplacementTooltip(col)" position="bottom">
<span
class="i-carbon:idea w-3.5 h-3.5 text-amber-500 shrink-0 cursor-help"
class="i-lucide:lightbulb w-3.5 h-3.5 text-amber-500 shrink-0 cursor-help"
role="img"
:aria-label="$t('package.replacement.title')"
/>
Expand All @@ -69,7 +69,7 @@ function getReplacementTooltip(col: ComparisonGridColumn): string {
{{ $t('compare.no_dependency.label') }}
<TooltipApp interactive position="bottom">
<span
class="i-carbon:idea w-3.5 h-3.5 text-amber-500 shrink-0 cursor-help"
class="i-lucide:lightbulb w-3.5 h-3.5 text-amber-500 shrink-0 cursor-help"
role="img"
:aria-label="$t('compare.no_dependency.tooltip_title')"
/>
Expand Down
7 changes: 2 additions & 5 deletions app/components/Compare/FacetCard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ function getShortName(header: string): string {
<span class="text-xs text-fg-muted uppercase tracking-wider font-medium">{{ label }}</span>
<TooltipApp v-if="description" :text="description" position="top">
<span
class="i-carbon:information w-3 h-3 text-fg-subtle"
class="i-lucide:info w-3 h-3 text-fg-subtle"
:title="description"
aria-hidden="true"
/>
Expand Down Expand Up @@ -111,10 +111,7 @@ function getShortName(header: string): string {
<span class="relative min-w-0 text-end">
<!-- Loading state -->
<template v-if="isCellLoading(index)">
<span
class="i-carbon:circle-dash w-4 h-4 text-fg-subtle motion-safe:animate-spin"
aria-hidden="true"
/>
<span class="i-svg-spinners:ring-resize w-4 h-4 text-fg-subtle" aria-hidden="true" />
</template>

<!-- No data -->
Expand Down
7 changes: 2 additions & 5 deletions app/components/Compare/FacetRow.vue
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ function isCellLoading(index: number): boolean {
<div class="comparison-label flex items-center gap-1.5 px-4 py-3 border-b border-border">
<span class="text-xs text-fg-muted uppercase tracking-wider">{{ label }}</span>
<TooltipApp v-if="description" :text="description" position="top">
<span class="i-carbon:information w-3 h-3 text-fg-subtle cursor-help" aria-hidden="true" />
<span class="i-lucide:info w-3 h-3 text-fg-subtle cursor-help" aria-hidden="true" />
</TooltipApp>
</div>

Expand All @@ -114,10 +114,7 @@ function isCellLoading(index: number): boolean {

<!-- Loading state -->
<template v-if="isCellLoading(index)">
<span
class="i-carbon:circle-dash w-4 h-4 text-fg-subtle motion-safe:animate-spin"
aria-hidden="true"
/>
<span class="i-svg-spinners:ring-resize w-4 h-4 text-fg-subtle" aria-hidden="true" />
</template>

<!-- No data -->
Expand Down
4 changes: 2 additions & 2 deletions app/components/Compare/FacetSelector.vue
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ function isCategoryNoneSelected(category: string): boolean {
facet.comingSoon
? undefined
: isFacetSelected(facet.id)
? 'i-carbon:checkmark'
: 'i-carbon:add'
? 'i-lucide:check'
: 'i-lucide:plus'
"
>
{{ facet.label }}
Expand Down
6 changes: 3 additions & 3 deletions app/components/Compare/PackageSelector.vue
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ function handleFocus() {
<!-- No dependency display -->
<template v-if="pkg === NO_DEPENDENCY_ID">
<span class="text-sm text-accent italic flex items-center gap-1.5">
<span class="i-carbon:clean w-3.5 h-3.5" aria-hidden="true" />
<span class="i-lucide:leaf w-3.5 h-3.5" aria-hidden="true" />
{{ $t('compare.no_dependency.label') }}
</span>
</template>
Expand All @@ -214,7 +214,7 @@ function handleFocus() {
})
"
@click="removePackage(pkg)"
classicon="i-carbon:close"
classicon="i-lucide:x"
/>
</TagStatic>
</div>
Expand Down Expand Up @@ -273,7 +273,7 @@ function handleFocus() {
@click="addPackage(NO_DEPENDENCY_ID)"
>
<span class="text-sm text-accent italic flex items-center gap-2">
<span class="i-carbon:clean w-4 h-4" aria-hidden="true" />
<span class="i-lucide:leaf w-4 h-4" aria-hidden="true" />
{{ $t('compare.no_dependency.typeahead_title') }}
</span>
<span class="text-xs text-fg-muted truncate mt-0.5">
Expand Down
2 changes: 1 addition & 1 deletion app/components/Compare/ReplacementSuggestion.vue
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const docUrl = computed(() => {
>
<span
class="w-4 h-4 flex-shrink-0 mt-0.5"
:class="variant === 'nodep' ? 'i-carbon:idea' : 'i-carbon:information'"
:class="variant === 'nodep' ? 'i-lucide:lightbulb' : 'i-lucide:info'"
/>
<div class="min-w-0 flex-1">
<p class="font-medium">{{ packageName }}: {{ $t('package.replacement.title') }}</p>
Expand Down
2 changes: 1 addition & 1 deletion app/components/DependencyPathPopup.vue
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ function parsePackageString(pkg: string): { name: string; version: string } {
:aria-expanded="isOpen"
@click.stop="togglePopup"
>
<span class="i-carbon:tree-view w-3 h-3" aria-hidden="true" />
<span class="i-lucide:network w-3 h-3" aria-hidden="true" />
<span>{{ $t('package.vulnerabilities.path') }}</span>
</button>

Expand Down
2 changes: 1 addition & 1 deletion app/components/Filter/Chips.vue
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const emit = defineEmits<{
:aria-label="$t('filters.remove_filter', { label: chip.label })"
@click="emit('remove', chip)"
>
<span class="i-carbon-close w-3 h-3" aria-hidden="true" />
<span class="i-lucide:x w-3 h-3" aria-hidden="true" />
</button>
</TagStatic>
</TransitionGroup>
Expand Down
4 changes: 2 additions & 2 deletions app/components/Filter/Panel.vue
Original file line number Diff line number Diff line change
Expand Up @@ -193,14 +193,14 @@ const hasActiveFilters = computed(() => !!filterSummary.value)
@click="isExpanded = !isExpanded"
>
<span class="flex items-center gap-2 text-sm font-mono text-fg shrink-0">
<span class="i-carbon-filter w-4 h-4" aria-hidden="true" />
<span class="i-lucide:funnel w-4 h-4" aria-hidden="true" />
{{ $t('filters.title') }}
</span>
<span v-if="!isExpanded && hasActiveFilters" class="text-xs font-mono text-fg-muted truncate">
{{ filterSummary }}
</span>
<span
class="i-carbon-chevron-down w-4 h-4 text-fg-subtle transition-transform duration-200 shrink-0 ms-auto"
class="i-lucide:chevron-down w-4 h-4 text-fg-subtle transition-transform duration-200 shrink-0 ms-auto"
:class="{ 'rotate-180': isExpanded }"
aria-hidden="true"
/>
Expand Down
Loading
Loading