Skip to content

Commit 75f9c00

Browse files
committed
conflict & update cr
1 parent 5cc1b0a commit 75f9c00

File tree

242 files changed

+16080
-2871
lines changed

Some content is hidden

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

242 files changed

+16080
-2871
lines changed

.github/workflows/autofix.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ jobs:
3232
- name: 📦 Install dependencies
3333
run: pnpm install
3434

35-
- name: 🎨 Check for non-RTL CSS classes
36-
run: pnpm rtl:check
35+
- name: 🎨 Check for non-RTL/non-a11y CSS classes
36+
run: pnpm lint:css
3737

3838
- name: 🌐 Compare translations
3939
run: pnpm i18n:check

.github/workflows/ci.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ jobs:
8484
run: pnpm install
8585

8686
- name: 🧪 Unit tests
87-
run: pnpm test:unit run --coverage --reporter=junit --outputFile=test-report.junit.xml
87+
run: pnpm test:unit run --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml
8888

8989
- name: ⬆︎ Upload test results to Codecov
9090
if: ${{ !cancelled() }}
@@ -115,7 +115,7 @@ jobs:
115115
run: pnpm playwright install chromium-headless-shell
116116

117117
- name: 🧪 Component tests
118-
run: pnpm test:nuxt run --coverage --reporter=junit --outputFile=test-report.junit.xml
118+
run: pnpm test:nuxt run --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml
119119

120120
- name: ⬆︎ Upload coverage reports to Codecov
121121
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5
@@ -235,3 +235,8 @@ jobs:
235235

236236
- name: 🌐 Check for missing or dynamic i18n keys
237237
run: pnpm i18n:report
238+
239+
- name: 🌐 Check i18n schema is up to date
240+
run: |
241+
pnpm i18n:schema
242+
git diff --exit-code i18n/schema.json
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: mirror
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
tags:
8+
- '*'
9+
10+
permissions:
11+
contents: read
12+
13+
jobs:
14+
mirror:
15+
name: 🕸️ Mirror to Tangled
16+
runs-on: ubuntu-24.04-arm
17+
18+
steps:
19+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
20+
with:
21+
fetch-depth: 0
22+
23+
- name: 🔑 Configure SSH
24+
env:
25+
TANGLED_SSH_KEY: ${{ secrets.TANGLED_SSH_KEY }}
26+
run: |
27+
mkdir -p ~/.ssh
28+
echo "$TANGLED_SSH_KEY" > ~/.ssh/id_ed25519
29+
chmod 600 ~/.ssh/id_ed25519
30+
ssh-keyscan -t ed25519 tangled.org >> ~/.ssh/known_hosts 2>/dev/null
31+
32+
- name: ⬆︎ Push to Tangled
33+
run: |
34+
git remote add tangled git@tangled.org:npmx.dev/npmx.dev
35+
git push tangled main --force
36+
git push tangled --tags --force

app/assets/main.css

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,32 @@
171171
}
172172
}
173173

174+
/*
175+
* Forced Colors Mode (WHCM) Override for Icons
176+
*
177+
* By default, `forced-color-adjust: preserve-parent-color` (from UnoConfig) works fine
178+
* for most icons as they inherit the correct text color.
179+
*
180+
* However, if icons disappear in specific contexts (e.g., inside buttons with
181+
* complex backgrounds or transparent states), uncomment the following block
182+
* to enforce visibility using `CanvasText`.
183+
*/
184+
/*
185+
@media (forced-colors: active) {
186+
[class^='i-'],
187+
[class*=' i-'] {
188+
forced-color-adjust: none !important;
189+
color: CanvasText !important;
190+
}
191+
}
192+
*/
193+
174194
html {
195+
@apply scroll-pt-20;
175196
-webkit-font-smoothing: antialiased;
176197
-moz-osx-font-smoothing: grayscale;
177198
text-rendering: optimizeLegibility;
178199
/* Offset for fixed header - otherwise anchor headers are cutted */
179-
scroll-padding-top: 5rem;
180200
scrollbar-gutter: stable;
181201
}
182202

@@ -216,11 +236,6 @@ dd {
216236
margin: 0;
217237
}
218238

219-
/* Reset button styles */
220-
button {
221-
cursor: pointer;
222-
}
223-
224239
/* Selection */
225240
::selection {
226241
background-color: var(--fg-muted);

app/components/AppFooter.vue

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
<script setup lang="ts">
22
const route = useRoute()
33
const isHome = computed(() => route.name === 'index')
4+
5+
const modalRef = useTemplateRef('modalRef')
6+
const showModal = () => modalRef.value?.showModal?.()
47
</script>
58

69
<template>
@@ -11,7 +14,6 @@ const isHome = computed(() => route.name === 'index')
1114
>
1215
<div>
1316
<p class="font-mono text-balance m-0 hidden sm:block">{{ $t('tagline') }}</p>
14-
<BuildEnvironment v-if="!isHome" footer />
1517
</div>
1618
<!-- Desktop: Show all links. Mobile: Links are in MobileMenu -->
1719
<div class="hidden sm:flex items-center gap-6 min-h-11 text-xs">
@@ -21,6 +23,72 @@ const isHome = computed(() => route.name === 'index')
2123
<LinkBase :to="{ name: 'privacy' }">
2224
{{ $t('privacy_policy.title') }}
2325
</LinkBase>
26+
<button
27+
type="button"
28+
class="cursor-pointer group inline-flex gap-x-1 items-center justify-center underline-offset-[0.2rem] underline decoration-1 decoration-fg/30 font-mono text-fg hover:(decoration-accent text-accent) focus-visible:(decoration-accent text-accent) transition-colors duration-200"
29+
@click.prevent="showModal"
30+
aria-haspopup="dialog"
31+
>
32+
{{ $t('footer.keyboard_shortcuts') }}
33+
</button>
34+
35+
<Modal
36+
ref="modalRef"
37+
:modalTitle="$t('footer.keyboard_shortcuts')"
38+
class="w-auto max-w-lg"
39+
>
40+
<p class="mb-2 font-mono text-fg-subtle">
41+
{{ $t('shortcuts.section.global') }}
42+
</p>
43+
<ul class="mb-6 flex flex-col gap-2">
44+
<li class="flex gap-2 items-center">
45+
<kbd class="kbd">/</kbd>
46+
<span>{{ $t('shortcuts.focus_search') }}</span>
47+
</li>
48+
<li class="flex gap-2 items-center">
49+
<kbd class="kbd">?</kbd>
50+
<span>{{ $t('shortcuts.show_kbd_hints') }}</span>
51+
</li>
52+
<li class="flex gap-2 items-center">
53+
<kbd class="kbd">,</kbd>
54+
<span>{{ $t('shortcuts.settings') }}</span>
55+
</li>
56+
<li class="flex gap-2 items-center">
57+
<kbd class="kbd">c</kbd>
58+
<span>{{ $t('shortcuts.compare') }}</span>
59+
</li>
60+
</ul>
61+
<p class="mb-2 font-mono text-fg-subtle">
62+
{{ $t('shortcuts.section.search') }}
63+
</p>
64+
<ul class="mb-6 flex flex-col gap-2">
65+
<li class="flex gap-2 items-center">
66+
<kbd class="kbd">↑</kbd>/<kbd class="kbd">↓</kbd>
67+
<span>{{ $t('shortcuts.navigate_results') }}</span>
68+
</li>
69+
<li class="flex gap-2 items-center">
70+
<kbd class="kbd">Enter</kbd>
71+
<span>{{ $t('shortcuts.go_to_result') }}</span>
72+
</li>
73+
</ul>
74+
<p class="mb-2 font-mono text-fg-subtle">
75+
{{ $t('shortcuts.section.package') }}
76+
</p>
77+
<ul class="mb-6 flex flex-col gap-2">
78+
<li class="flex gap-2 items-center">
79+
<kbd class="kbd">.</kbd>
80+
<span>{{ $t('shortcuts.open_code_view') }}</span>
81+
</li>
82+
<li class="flex gap-2 items-center">
83+
<kbd class="kbd">d</kbd>
84+
<span>{{ $t('shortcuts.open_docs') }}</span>
85+
</li>
86+
<li class="flex gap-2 items-center">
87+
<kbd class="kbd">c</kbd>
88+
<span>{{ $t('shortcuts.compare_from_package') }}</span>
89+
</li>
90+
</ul>
91+
</Modal>
2492
<LinkBase to="https://docs.npmx.dev">
2593
{{ $t('footer.docs') }}
2694
</LinkBase>
@@ -35,10 +103,17 @@ const isHome = computed(() => route.name === 'index')
35103
</LinkBase>
36104
</div>
37105
</div>
106+
<BuildEnvironment v-if="!isHome" footer />
38107
<p class="text-xs text-fg-muted text-center sm:text-start m-0">
39108
<span class="sm:hidden">{{ $t('non_affiliation_disclaimer') }}</span>
40109
<span class="hidden sm:inline">{{ $t('trademark_disclaimer') }}</span>
41110
</p>
42111
</div>
43112
</footer>
44113
</template>
114+
115+
<style scoped>
116+
.kbd {
117+
@apply items-center justify-center text-sm text-fg bg-bg-muted border border-border rounded px-2;
118+
}
119+
</style>

0 commit comments

Comments
 (0)