Skip to content

Commit 9c36c60

Browse files
committed
Merge branch 'main' into feat/changelog-1
2 parents 55d45f3 + 7d69561 commit 9c36c60

File tree

211 files changed

+7054
-1774
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

211 files changed

+7054
-1774
lines changed

.github/workflows/autofix.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
with:
2525
node-version: lts/*
2626

27-
- uses: pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
27+
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
2828
name: 🟧 Install pnpm
2929
with:
3030
cache: true

.github/workflows/ci.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
with:
3232
node-version: lts/*
3333

34-
- uses: pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
34+
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
3535
name: 🟧 Install pnpm
3636
with:
3737
cache: true
@@ -53,7 +53,7 @@ jobs:
5353
with:
5454
node-version: lts/*
5555

56-
- uses: pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
56+
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
5757
name: 🟧 Install pnpm
5858
with:
5959
cache: true
@@ -75,7 +75,7 @@ jobs:
7575
with:
7676
node-version: lts/*
7777

78-
- uses: pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
78+
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
7979
name: 🟧 Install pnpm
8080
with:
8181
cache: true
@@ -103,7 +103,7 @@ jobs:
103103
with:
104104
node-version: lts/*
105105

106-
- uses: pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
106+
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
107107
name: 🟧 Install pnpm
108108
with:
109109
cache: true
@@ -142,7 +142,7 @@ jobs:
142142
with:
143143
node-version: lts/*
144144

145-
- uses: pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
145+
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
146146
name: 🟧 Install pnpm
147147
with:
148148
cache: true
@@ -172,7 +172,7 @@ jobs:
172172
with:
173173
node-version: lts/*
174174

175-
- uses: pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
175+
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
176176
name: 🟧 Install pnpm
177177
with:
178178
cache: true
@@ -200,7 +200,7 @@ jobs:
200200
with:
201201
node-version: lts/*
202202

203-
- uses: pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
203+
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
204204
name: 🟧 Install pnpm
205205
with:
206206
cache: true
@@ -225,7 +225,7 @@ jobs:
225225
with:
226226
node-version: lts/*
227227

228-
- uses: pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
228+
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
229229
name: 🟧 Install pnpm
230230
with:
231231
cache: true

.github/workflows/lunaria.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
with:
3333
node-version: lts/*
3434

35-
- uses: pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
35+
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
3636
name: 🟧 Install pnpm
3737
with:
3838
cache: true

.github/workflows/welcome.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
name: 🎉 Welcome new contributor
1717
steps:
1818
- name: 🎉 Welcome new contributor
19-
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
19+
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
2020
with:
2121
script: |
2222
const pr = context.payload.pull_request;

CONTRIBUTING.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ This focus helps guide our project decisions as a community and what we choose t
4141
- [Naming conventions](#naming-conventions)
4242
- [Vue components](#vue-components)
4343
- [Internal linking](#internal-linking)
44+
- [Cursor and navigation](#cursor-and-navigation)
4445
- [RTL Support](#rtl-support)
4546
- [Localization (i18n)](#localization-i18n)
4647
- [Approach](#approach)
@@ -392,6 +393,18 @@ For package links, use the auto-imported `packageRoute()` utility from `app/util
392393
| `~username` | `/~:username` | `username` |
393394
| `~username-orgs` | `/~:username/orgs` | `username` |
394395

396+
### Cursor and navigation
397+
398+
**npmx** uses `cursor: pointer` only for links to match users’ everyday experience. For all other interactive elements, including buttons, use the default cursor (_or another appropriate cursor to indicate state_).
399+
400+
> [!NOTE]
401+
> A link is any element that leads to another content (_go to another page, authorize_)
402+
> A button is any element that operates an action (_show tooltip, open menu, "like" package, open dropdown_)
403+
> If you're unsure which element to use - feel free to ask question in the issue or on discord
404+
405+
> [!IMPORTANT]
406+
> Always Prefer implementing navigation as real links whenever possible. This ensures they can be opened in a new tab, shared or reloaded, and so the same content is available at a stable URL
407+
395408
## RTL Support
396409

397410
We support `right-to-left` languages, we need to make sure that the UI is working correctly in both directions.

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ We welcome contributions – please do feel free to explore the project and
155155
- [npm-userscript](https://github.com/bluwy/npm-userscript) – Browser userscript with various improvements and fixes for npmjs.com
156156
- [npm-alt](https://npm.willow.sh/) – An alternative npm package browser
157157
- [npkg.lorypelli.dev](https://npkg.lorypelli.dev/) – An alternative frontend to npm made with as little client-side JavaScript as possible
158-
- [vscode-npmx](https://github.com/npmx-dev/vscode-npmx) – VSCode extension for npmx
158+
- [vscode-npmx](https://github.com/npmx-dev/vscode-npmx) – Official VSCode extension for npmx
159+
- [vscode-open-in-npmx](https://github.com/sybers/vscode-open-in-npmx) – VSCode shortcut to open packages on npmx
159160
- [nxjt](https://nxjt.netlify.app) – npmx Jump To: Quickly navigate to npmx common webpages.
160161
- [npmx-weekly](https://npmx-weekly.trueberryless.org/) – A weekly newsletter for the npmx ecosystem. Add your own content via suggestions in the weekly PR on [GitHub](https://github.com/trueberryless-org/npmx-weekly/pulls?q=is%3Aopen+is%3Apr+label%3A%22%F0%9F%95%94+weekly+post%22).
161162
- [npmx-digest](https://npmx-digest.trueberryless.org/) – An automated news aggregation website that summarizes npmx activity from GitHub and Bluesky every 8 hours.

app/app.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ if (import.meta.client) {
121121
<template>
122122
<div class="min-h-screen flex flex-col bg-bg text-fg">
123123
<NuxtPwaAssets />
124-
<LinkBase to="#main-content" variant="button-primary" class="skip-link">{{
124+
<LinkBase to="#main-content" external variant="button-primary" class="skip-link">{{
125125
$t('common.skip_link')
126126
}}</LinkBase>
127127

app/components/AppFooter.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
<script setup lang="ts">
2+
import { NPMX_DOCS_SITE } from '#shared/utils/constants'
3+
24
const route = useRoute()
35
const isHome = computed(() => route.name === 'index')
46
@@ -13,7 +15,9 @@ const showModal = () => modalRef.value?.showModal?.()
1315
class="flex flex-col sm:flex-row sm:flex-wrap items-center sm:items-baseline justify-between gap-2 sm:gap-4"
1416
>
1517
<div>
16-
<p class="font-mono text-balance m-0 hidden sm:block">{{ $t('tagline') }}</p>
18+
<p class="font-mono text-balance m-0 hidden sm:block">
19+
{{ $t('tagline') }}
20+
</p>
1721
</div>
1822
<!-- Desktop: Show all links. Mobile: Links are in MobileMenu -->
1923
<div class="hidden sm:flex items-center gap-6 min-h-11 text-xs">
@@ -92,7 +96,7 @@ const showModal = () => modalRef.value?.showModal?.()
9296
</li>
9397
</ul>
9498
</Modal>
95-
<LinkBase to="https://docs.npmx.dev">
99+
<LinkBase :to="NPMX_DOCS_SITE">
96100
{{ $t('footer.docs') }}
97101
</LinkBase>
98102
<LinkBase to="https://repo.npmx.dev">

app/components/AppHeader.vue

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import { LinkBase } from '#components'
33
import type { NavigationConfig, NavigationConfigWithGroups } from '~/types'
44
import { isEditableElement } from '~/utils/input'
5+
import { NPMX_DOCS_SITE } from '#shared/utils/constants'
56
67
withDefaults(
78
defineProps<{
@@ -22,7 +23,7 @@ const desktopLinks = computed<NavigationConfig>(() => [
2223
keyshortcut: 'c',
2324
type: 'link',
2425
external: false,
25-
iconClass: 'i-carbon:compare',
26+
iconClass: 'i-lucide:git-compare',
2627
},
2728
{
2829
name: 'Settings',
@@ -31,7 +32,7 @@ const desktopLinks = computed<NavigationConfig>(() => [
3132
keyshortcut: ',',
3233
type: 'link',
3334
external: false,
34-
iconClass: 'i-carbon:settings',
35+
iconClass: 'i-lucide:settings',
3536
},
3637
])
3738
@@ -54,23 +55,23 @@ const mobileLinks = computed<NavigationConfigWithGroups>(() => [
5455
to: { name: 'about' },
5556
type: 'link',
5657
external: false,
57-
iconClass: 'i-carbon:information',
58+
iconClass: 'i-lucide:info',
5859
},
5960
{
6061
name: 'Privacy Policy',
6162
label: $t('privacy_policy.title'),
6263
to: { name: 'privacy' },
6364
type: 'link',
6465
external: false,
65-
iconClass: 'i-carbon:security',
66+
iconClass: 'i-lucide:shield-check',
6667
},
6768
{
6869
name: 'Accessibility',
6970
label: $t('a11y.title'),
7071
to: { name: 'accessibility' },
7172
type: 'link',
7273
external: false,
73-
iconClass: 'i-carbon:accessibility-alt',
74+
iconClass: 'i-custom:a11y',
7475
},
7576
],
7677
},
@@ -85,11 +86,11 @@ const mobileLinks = computed<NavigationConfigWithGroups>(() => [
8586
{
8687
name: 'Docs',
8788
label: $t('footer.docs'),
88-
href: 'https://docs.npmx.dev',
89+
href: NPMX_DOCS_SITE,
8990
target: '_blank',
9091
type: 'link',
9192
external: true,
92-
iconClass: 'i-carbon:document',
93+
iconClass: 'i-lucide:file-text',
9394
},
9495
{
9596
name: 'Source',
@@ -98,7 +99,7 @@ const mobileLinks = computed<NavigationConfigWithGroups>(() => [
9899
target: '_blank',
99100
type: 'link',
100101
external: true,
101-
iconClass: 'i-carbon:logo-github',
102+
iconClass: 'i-simple-icons:github',
102103
},
103104
{
104105
name: 'Social',
@@ -116,14 +117,15 @@ const mobileLinks = computed<NavigationConfigWithGroups>(() => [
116117
target: '_blank',
117118
type: 'link',
118119
external: true,
119-
iconClass: 'i-carbon:chat',
120+
iconClass: 'i-lucide:message-circle',
120121
},
121122
],
122123
},
123124
])
124125
125126
const showFullSearch = shallowRef(false)
126127
const showMobileMenu = shallowRef(false)
128+
const { env } = useAppConfig().buildInfo
127129
128130
// On mobile, clicking logo+search button expands search
129131
const route = useRoute()
@@ -212,10 +214,16 @@ onKeyStroke(
212214
:to="{ name: 'index' }"
213215
:aria-label="$t('header.home')"
214216
dir="ltr"
215-
class="inline-flex items-center gap-1 header-logo font-mono text-lg font-medium text-fg hover:text-fg/90 transition-colors duration-200 rounded"
217+
class="relative inline-flex items-center gap-1 header-logo font-mono text-lg font-medium text-fg hover:text-fg/90 transition-colors duration-200 rounded"
216218
>
217-
<AppLogo class="w-8 h-8 rounded-lg" />
218-
<span>npmx</span>
219+
<AppLogo class="w-7 h-7 rounded-lg" />
220+
<span class="pb-0.5">npmx</span>
221+
<span
222+
aria-hidden="true"
223+
class="scale-35 transform-origin-br font-mono tracking-wide text-accent absolute bottom-0.5 -inset-ie-1"
224+
>
225+
{{ env === 'release' ? 'alpha' : env }}
226+
</span>
219227
</NuxtLink>
220228
</div>
221229
<!-- Spacer when logo is hidden on desktop -->
@@ -280,7 +288,7 @@ onKeyStroke(
280288
:aria-expanded="showMobileMenu"
281289
@click="expandMobileSearch"
282290
v-if="!isSearchExpanded && !isOnHomePage"
283-
classicon="i-carbon:search"
291+
classicon="i-lucide:search"
284292
/>
285293

286294
<!-- Mobile: Menu button (always visible, click to open menu) -->
@@ -290,7 +298,7 @@ onKeyStroke(
290298
:aria-label="$t('nav.open_menu')"
291299
:aria-expanded="showMobileMenu"
292300
@click="showMobileMenu = !showMobileMenu"
293-
classicon="i-carbon:menu"
301+
classicon="i-lucide:menu"
294302
/>
295303
</nav>
296304

app/components/BlueskyPostEmbed.client.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ const { data: post, status } = useAsyncData(
8383
<div class="text-sm text-fg-subtle truncate">@{{ post.author.handle }}</div>
8484
</div>
8585
<span
86-
class="i-carbon:logo-bluesky w-5 h-5 text-fg-subtle ms-auto shrink-0"
86+
class="i-simple-icons:bluesky w-5 h-5 text-fg-subtle ms-auto shrink-0"
8787
aria-hidden="true"
8888
/>
8989
</div>
@@ -112,15 +112,15 @@ const { data: post, status } = useAsyncData(
112112
<div class="flex items-center gap-4 text-sm text-fg-subtle">
113113
<DateTime :datetime="post.record.createdAt" date-style="medium" />
114114
<span v-if="post.likeCount" class="flex items-center gap-1">
115-
<span class="i-carbon:favorite w-3.5 h-3.5" aria-hidden="true" />
115+
<span class="i-lucide:heart w-3.5 h-3.5" aria-hidden="true" />
116116
{{ post.likeCount }}
117117
</span>
118118
<span v-if="post.repostCount" class="flex items-center gap-1">
119-
<span class="i-carbon:repeat w-3.5 h-3.5" aria-hidden="true" />
119+
<span class="i-lucide:repeat w-3.5 h-3.5" aria-hidden="true" />
120120
{{ post.repostCount }}
121121
</span>
122122
<span v-if="post.replyCount" class="flex items-center gap-1">
123-
<span class="i-carbon:chat w-3.5 h-3.5" aria-hidden="true" />
123+
<span class="i-lucide:message-circle w-3.5 h-3.5" aria-hidden="true" />
124124
{{ post.replyCount }}
125125
</span>
126126
</div>

0 commit comments

Comments
 (0)