Skip to content

Commit cc406b8

Browse files
authored
Merge branch 'main' into ui/fix-dropdown-alignment
2 parents 1a63278 + c6e5798 commit cc406b8

Some content is hidden

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

74 files changed

+4418
-369
lines changed

.github/workflows/autofix.yml

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

35+
- name: 🎨 Check for non-RTL CSS classes
36+
run: pnpm rtl:check
37+
3538
- name: 🌐 Compare translations
3639
run: pnpm i18n:check
3740

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
22
"i18n-ally.localesPaths": ["./i18n/locales"],
3-
"i18n-ally.keystyle": "nested"
3+
"i18n-ally.keystyle": "nested",
4+
"typescript.tsdk": "node_modules/typescript/lib"
45
}

app/assets/main.css

Lines changed: 34 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@
55
box-sizing: border-box;
66
}
77

8+
:root:not([data-theme='light']),
89
:root[data-theme='dark'] {
910
/* background colors */
10-
--bg: var(--bg-color, oklch(0.145 0 0));
11-
--bg-subtle: var(--bg-subtle-color, oklch(0.178 0 0));
12-
--bg-muted: var(--bg-muted-color, oklch(0.218 0 0));
13-
--bg-elevated: var(--bg-elevated-color, oklch(0.252 0 0));
11+
--bg: var(--bg-color, oklch(0.171 0 0));
12+
--bg-subtle: var(--bg-subtle-color, oklch(0.198 0 0));
13+
--bg-muted: var(--bg-muted-color, oklch(0.236 0 0));
14+
--bg-elevated: var(--bg-elevated-color, oklch(0.266 0 0));
1415

1516
/* text colors */
16-
--fg: oklch(0.985 0 0);
17-
--fg-muted: oklch(0.709 0 0);
18-
--fg-subtle: oklch(0.633 0 0);
17+
--fg: oklch(0.982 0 0);
18+
--fg-muted: oklch(0.749 0 0);
19+
--fg-subtle: oklch(0.673 0 0);
1920

2021
/* border, separator colors */
2122
--border: oklch(0.269 0 0);
@@ -44,24 +45,24 @@
4445
}
4546

4647
:root[data-theme='dark'][data-bg-theme='slate'] {
47-
--bg: oklch(0.129 0.012 264.695);
48-
--bg-subtle: oklch(0.159 0.022 262.421);
49-
--bg-muted: oklch(0.204 0.033 261.234);
50-
--bg-elevated: oklch(0.259 0.041 260.031);
48+
--bg: oklch(0.151 0.018 264.695);
49+
--bg-subtle: oklch(0.179 0.015 262.421);
50+
--bg-muted: oklch(0.214 0.018 261.234);
51+
--bg-elevated: oklch(0.259 0.021 260.031);
5152
}
5253

5354
:root[data-theme='dark'][data-bg-theme='zinc'] {
54-
--bg: oklch(0.141 0.005 285.823);
55-
--bg-subtle: oklch(0.168 0.005 285.894);
56-
--bg-muted: oklch(0.209 0.005 285.929);
55+
--bg: oklch(0.158 0.005 285.823);
56+
--bg-subtle: oklch(0.188 0.005 285.894);
57+
--bg-muted: oklch(0.219 0.005 285.929);
5758
--bg-elevated: oklch(0.256 0.006 286.033);
5859
}
5960

6061
:root[data-theme='dark'][data-bg-theme='stone'] {
61-
--bg: oklch(0.147 0.004 49.25);
62-
--bg-subtle: oklch(0.178 0.004 49.321);
63-
--bg-muted: oklch(0.218 0.004 49.386);
64-
--bg-elevated: oklch(0.252 0.007 34.298);
62+
--bg: oklch(0.164 0.004 89.25);
63+
--bg-subtle: oklch(0.198 0.008 89.321);
64+
--bg-muted: oklch(0.228 0.015 89.386);
65+
--bg-elevated: oklch(0.252 0.018 84.298);
6566
}
6667

6768
:root[data-theme='dark'][data-bg-theme='black'] {
@@ -74,12 +75,12 @@
7475
:root[data-theme='light'] {
7576
--bg: var(--bg-color, oklch(1 0 0));
7677
--bg-subtle: var(--bg-subtle-color, oklch(0.979 0.001 286.375));
77-
--bg-muted: var(--bg-muted-color, oklch(0.955 0 0));
78-
--bg-elevated: var(--bg-elevated-color, oklch(0.94 0 0));
78+
--bg-muted: var(--bg-muted-color, oklch(0.955 0.001 286.76));
79+
--bg-elevated: var(--bg-elevated-color, oklch(0.94 0.002 287.29));
7980

80-
--fg: oklch(0.145 0 0);
81-
--fg-muted: oklch(0.439 0 0);
82-
--fg-subtle: oklch(0.52 0 0);
81+
--fg: oklch(0.146 0 0);
82+
--fg-muted: oklch(0.398 0 0);
83+
--fg-subtle: oklch(0.48 0 0);
8384

8485
--border: oklch(0.8514 0 0);
8586
--border-subtle: oklch(0.922 0 0);
@@ -105,9 +106,9 @@
105106

106107
:root[data-theme='light'][data-bg-theme='slate'] {
107108
--bg: oklch(1 0 0);
108-
--bg-subtle: oklch(0.982 0.006 264.62);
109-
--bg-muted: oklch(0.96 0.041 261.234);
110-
--bg-elevated: oklch(0.943 0.013 255.52);
109+
--bg-subtle: oklch(0.982 0.008 269.62);
110+
--bg-muted: oklch(0.96 0.008 261.234);
111+
--bg-elevated: oklch(0.943 0.012 255.52);
111112
}
112113

113114
:root[data-theme='light'][data-bg-theme='zinc'] {
@@ -119,9 +120,13 @@
119120

120121
:root[data-theme='light'][data-bg-theme='stone'] {
121122
--bg: oklch(1 0 0);
122-
--bg-subtle: oklch(0.979 0.005 48.762);
123-
--bg-muted: oklch(0.958 0.005 48.743);
124-
--bg-elevated: oklch(0.943 0.005 48.731);
123+
--bg-subtle: oklch(0.979 0.004 88.762);
124+
--bg-muted: oklch(0.958 0.005 88.743);
125+
--bg-elevated: oklch(0.943 0.005 88.731);
126+
}
127+
128+
:root[data-theme='light'][data-bg-theme='black'] {
129+
--bg-subtle: var(--bg-subtle-color, oklch(0.979 0 0));
125130
}
126131

127132
@media (prefers-contrast: more) {

app/components/AppFooter.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const isHome = computed(() => route.name === 'index')
2020
</NuxtLink>
2121
<NuxtLink
2222
:to="{ name: 'privacy' }"
23-
class="link-subtle font-mono text-xs min-h-11 flex items-center gap-1 lowercase"
23+
class="link-subtle font-mono text-xs min-h-11 flex items-center gap-1"
2424
>
2525
{{ $t('privacy_policy.title') }}
2626
</NuxtLink>

app/components/AppHeader.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,11 @@ onKeyStroke(
8585
</script>
8686

8787
<template>
88-
<header class="sticky top-0 z-50 bg-bg/80 backdrop-blur-md border-b border-border">
88+
<header class="sticky top-0 z-50 border-b border-border">
89+
<div class="absolute inset-0 bg-bg/80 backdrop-blur-md" />
8990
<nav
9091
:aria-label="$t('nav.main_navigation')"
91-
class="container min-h-14 flex items-center gap-2"
92+
class="relative container min-h-14 flex items-center gap-2 z-1"
9293
:class="isOnHomePage ? 'justify-end' : 'justify-between'"
9394
>
9495
<!-- Mobile: Logo + search button (expands search, doesn't navigate) -->

app/components/Compare/ComparisonGrid.vue

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
import type { ModuleReplacement } from 'module-replacements'
33
44
export interface ComparisonGridColumn {
5-
/** Display text (e.g. "lodash@4.17.21") */
6-
header: string
5+
name: string
6+
version?: string
77
/** Module replacement data for this package (if available) */
88
replacement?: ModuleReplacement | null
99
}
@@ -38,18 +38,14 @@ function getReplacementTooltip(col: ComparisonGridColumn): string {
3838
<div class="comparison-label" />
3939

4040
<!-- Package columns -->
41-
<div
42-
v-for="col in columns"
43-
:key="col.header"
44-
class="comparison-cell comparison-cell-header"
45-
>
41+
<div v-for="col in columns" :key="col.name" class="comparison-cell comparison-cell-header">
4642
<span class="inline-flex items-center gap-1.5 truncate">
4743
<NuxtLink
48-
:to="packageRoute(col.header)"
44+
:to="packageRoute(col.name, col.version)"
4945
class="link-subtle font-mono text-sm font-medium text-fg truncate"
50-
:title="col.header"
46+
:title="col.version ? `${col.name}@${col.version}` : col.name"
5147
>
52-
{{ col.header }}
48+
{{ col.name }}<template v-if="col.version">@{{ col.version }}</template>
5349
</NuxtLink>
5450
<TooltipApp v-if="col.replacement" :text="getReplacementTooltip(col)" position="bottom">
5551
<span

app/components/Compare/FacetCard.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,9 @@ function getShortName(header: string): string {
131131
:datetime="value.display"
132132
date-style="medium"
133133
/>
134-
<template v-else>{{ value.display }}</template>
134+
<template v-else>
135+
<span dir="auto">{{ value.display }}</span>
136+
</template>
135137
</span>
136138
</template>
137139
</span>

app/components/Compare/FacetRow.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,9 @@ function isCellLoading(index: number): boolean {
135135
>
136136
<!-- Date values use DateTime component for i18n and user settings -->
137137
<DateTime v-if="value.type === 'date'" :datetime="value.display" date-style="medium" />
138-
<template v-else>{{ value.display }}</template>
138+
<template v-else>
139+
<span dir="auto">{{ value.display }}</span>
140+
</template>
139141
</span>
140142
</TooltipApp>
141143
<span
@@ -146,7 +148,9 @@ function isCellLoading(index: number): boolean {
146148
>
147149
<!-- Date values use DateTime component for i18n and user settings -->
148150
<DateTime v-if="value.type === 'date'" :datetime="value.display" date-style="medium" />
149-
<template v-else>{{ value.display }}</template>
151+
<template v-else>
152+
<span dir="auto">{{ value.display }}</span>
153+
</template>
150154
</span>
151155
</template>
152156
</div>

app/components/Filter/Chips.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ const emit = defineEmits<{
1414
<template>
1515
<div v-if="chips.length > 0" class="flex flex-wrap items-center gap-2">
1616
<TransitionGroup name="chip">
17-
<TagStatic v-for="chip in chips" :key="chip.id" class="gap-1">
17+
<TagStatic v-for="chip in chips" :key="chip.id" class="gap-2 pe-1">
1818
<span class="text-fg-subtle text-xs">{{ chip.label }}:</span>
1919
<span class="max-w-32 truncate">{{
2020
Array.isArray(chip.value) ? chip.value.join(', ') : chip.value
2121
}}</span>
2222
<button
2323
type="button"
24-
class="flex items-center ms-0.5 hover:text-fg rounded-full p-0.5 transition-colors duration-200 focus-visible:ring-2 focus-visible:ring-fg focus-visible:ring-offset-1"
24+
class="flex items-center p-1 -m-1 hover:text-fg rounded-full transition-colors duration-200 focus-visible:ring-2 focus-visible:ring-fg focus-visible:ring-offset-1"
2525
:aria-label="$t('filters.remove_filter', { label: chip.label })"
2626
@click="emit('remove', chip)"
2727
>
@@ -33,7 +33,7 @@ const emit = defineEmits<{
3333
<button
3434
v-if="chips.length > 1"
3535
type="button"
36-
class="text-sm text-fg-subtle hover:text-fg underline transition-colors duration-200 focus-visible:ring-2 focus-visible:ring-fg focus-visible:ring-offset-2"
36+
class="text-sm p-0.5 text-fg-muted hover:text-fg underline transition-colors duration-200 focus-visible:ring-2 focus-visible:ring-fg focus-visible:ring-offset-2"
3737
@click="emit('clearAll')"
3838
>
3939
{{ $t('filters.clear_all') }}

app/components/Filter/Panel.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ const hasActiveFilters = computed(() => !!filterSummary.value)
228228
:value="filters.text"
229229
:placeholder="searchPlaceholder"
230230
autocomplete="off"
231-
class="w-full bg-bg-subtle border border-border rounded-md px-4 py-3 font-mono text-sm text-fg placeholder:text-fg-subtle transition-all duration-200 focus:(border-fg/40 outline-none ring-1 ring-fg/10)"
231+
class="w-full bg-bg-subtle border border-border rounded-md px-4 py-3 font-mono text-sm text-fg placeholder:text-fg-subtle transition-[border-color,outline-color] duration-300 hover:border-fg-subtle outline-2 outline-transparent focus:border-accent focus-visible:(outline-2 outline-accent/70)"
232232
@input="handleTextInput"
233233
/>
234234
</div>

0 commit comments

Comments
 (0)