|
1 | 1 | <script setup lang="ts"> |
2 | 2 | import type { CompareResponse, FileChange } from '#shared/types' |
| 3 | +import type { SlimPackument } from '#shared/types' |
3 | 4 |
|
4 | 5 | const props = defineProps<{ |
5 | 6 | compare: CompareResponse |
6 | 7 | groupedDeps: Map<string, CompareResponse['dependencyChanges']> |
7 | 8 | allChanges: FileChange[] |
| 9 | + pkg?: Pick<SlimPackument, 'versions' | 'dist-tags'> | null |
| 10 | + packageName: string |
| 11 | + toVersion: string |
| 12 | + toVersionUrlPattern: string |
8 | 13 | }>() |
9 | 14 |
|
10 | 15 | const selectedFile = defineModel<FileChange | null>('selectedFile', { default: null }) |
@@ -53,30 +58,43 @@ watch(open, value => { |
53 | 58 | v-if="open" |
54 | 59 | class="md:hidden fixed inset-y-0 inset-is-0 z-50 w-72 max-w-[85vw] bg-bg-subtle border-ie border-border overflow-y-auto flex flex-col" |
55 | 60 | > |
56 | | - <div |
57 | | - class="sticky top-0 bg-bg-subtle border-b border-border px-4 py-3 flex items-center justify-between gap-2" |
58 | | - > |
59 | | - <div class="text-xs font-mono text-fg-muted flex items-center gap-2"> |
60 | | - <span class="flex items-center gap-1"> |
61 | | - <span class="text-green-500">+{{ props.compare.stats.filesAdded }}</span> |
62 | | - <span class="text-fg-subtle">/</span> |
63 | | - <span class="text-red-500">-{{ props.compare.stats.filesRemoved }}</span> |
64 | | - <span class="text-fg-subtle">/</span> |
65 | | - <span class="text-yellow-500">~{{ props.compare.stats.filesModified }}</span> |
66 | | - </span> |
67 | | - <span class="text-fg-subtle">•</span> |
68 | | - <span>{{ |
69 | | - $t('compare.files_count', { count: props.allChanges.length }, props.allChanges.length) |
70 | | - }}</span> |
| 61 | + <div class="sticky top-0 bg-bg-subtle border-b border-border z-50"> |
| 62 | + <div class="flex items-center justify-between gap-2 py-2 px-4"> |
| 63 | + <div class="text-xs font-mono text-fg-muted flex items-center gap-2"> |
| 64 | + <span class="flex items-center gap-1"> |
| 65 | + <span class="text-green-500">+{{ props.compare.stats.filesAdded }}</span> |
| 66 | + <span class="text-fg-subtle">/</span> |
| 67 | + <span class="text-red-500">-{{ props.compare.stats.filesRemoved }}</span> |
| 68 | + <span class="text-fg-subtle">/</span> |
| 69 | + <span class="text-yellow-500">~{{ props.compare.stats.filesModified }}</span> |
| 70 | + </span> |
| 71 | + <span class="text-fg-subtle">•</span> |
| 72 | + <span>{{ |
| 73 | + $t('compare.files_count', { count: props.allChanges.length }, props.allChanges.length) |
| 74 | + }}</span> |
| 75 | + </div> |
| 76 | + <button |
| 77 | + type="button" |
| 78 | + class="text-fg-muted hover:text-fg transition-colors" |
| 79 | + :aria-label="$t('compare.close_files_panel')" |
| 80 | + @click="open = false" |
| 81 | + > |
| 82 | + <span class="i-lucide:x w-5 h-5" /> |
| 83 | + </button> |
| 84 | + </div> |
| 85 | + <div v-if="pkg?.versions && pkg?.['dist-tags']" class="py-2 border-t border-border px-4"> |
| 86 | + <p class="text-xs font-medium text-fg mb-1 flex items-center gap-1.5"> |
| 87 | + <span class="block i-lucide-git-compare-arrows w-3.5 h-3.5" /> |
| 88 | + {{ $t('compare.version_selector_title') }} |
| 89 | + </p> |
| 90 | + <VersionSelector |
| 91 | + :package-name="packageName" |
| 92 | + :current-version="toVersion" |
| 93 | + :versions="pkg.versions" |
| 94 | + :dist-tags="pkg['dist-tags']" |
| 95 | + :url-pattern="toVersionUrlPattern" |
| 96 | + /> |
71 | 97 | </div> |
72 | | - <button |
73 | | - type="button" |
74 | | - class="text-fg-muted hover:text-fg transition-colors" |
75 | | - :aria-label="$t('compare.close_files_panel')" |
76 | | - @click="open = false" |
77 | | - > |
78 | | - <span class="i-lucide:x w-5 h-5" /> |
79 | | - </button> |
80 | 98 | </div> |
81 | 99 |
|
82 | 100 | <DiffSidebarPanel |
|
0 commit comments