Merge pull request 'Ship: UI framework batch 4 — Vuetify 4 + vue-router 5 + pinia 3 (#1449)' (#224) from dev into main
Build images / sign-extension (push) Successful in 3s
CI / lint (push) Successful in 3s
Build images / build-ml (push) Successful in 8s
Build images / build-agent (push) Successful in 8s
Build images / build-web (push) Successful in 28s
CI / frontend-build (push) Successful in 34s
CI / backend-lint-and-test (push) Successful in 53s
CI / integration (push) Successful in 3m46s
Build images / sign-extension (push) Successful in 3s
CI / lint (push) Successful in 3s
Build images / build-ml (push) Successful in 8s
Build images / build-agent (push) Successful in 8s
Build images / build-web (push) Successful in 28s
CI / frontend-build (push) Successful in 34s
CI / backend-lint-and-test (push) Successful in 53s
CI / integration (push) Successful in 3m46s
This commit was merged in pull request #224.
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=22"
|
"node": ">=24"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@@ -13,16 +13,16 @@
|
|||||||
"test:unit": "vitest run"
|
"test:unit": "vitest run"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"vue": "^3.4.0",
|
"vue": "^3.5.0",
|
||||||
"vue-router": "^4.3.0",
|
"vue-router": "^5.0.0",
|
||||||
"pinia": "^2.1.0",
|
"pinia": "^3.0.0",
|
||||||
"vuetify": "^3.5.0",
|
"vuetify": "^4.0.0",
|
||||||
"@mdi/font": "^7.4.0"
|
"@mdi/font": "^7.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vitejs/plugin-vue": "^6.0.0",
|
"@vitejs/plugin-vue": "^6.0.0",
|
||||||
"vite": "^8.0.0",
|
"vite": "^8.0.0",
|
||||||
"vite-plugin-vuetify": "^2.0.0",
|
"vite-plugin-vuetify": "^2.1.0",
|
||||||
"sass": "^1.71.0",
|
"sass": "^1.71.0",
|
||||||
"vitest": "^4.0.0",
|
"vitest": "^4.0.0",
|
||||||
"@vue/test-utils": "^2.4.0",
|
"@vue/test-utils": "^2.4.0",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-snackbar
|
<v-snackbar
|
||||||
v-model="show" :color="color" location="bottom right" timeout="4000"
|
v-model="show" :color="color" location="bottom right" timeout="4000"
|
||||||
multi-line elevation="4"
|
min-height="68" elevation="4"
|
||||||
>
|
>
|
||||||
{{ message }}
|
{{ message }}
|
||||||
<template #actions>
|
<template #actions>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
filter, applied retroactively to the existing library.
|
filter, applied retroactively to the existing library.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<v-row dense>
|
<v-row density="compact">
|
||||||
<v-col cols="6">
|
<v-col cols="6">
|
||||||
<v-text-field
|
<v-text-field
|
||||||
v-model.number="minW" label="Min width (px)" type="number"
|
v-model.number="minW" label="Min width (px)" type="number"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
cadence as the transparency audit.
|
cadence as the transparency audit.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<v-row dense>
|
<v-row density="compact">
|
||||||
<v-col cols="6">
|
<v-col cols="6">
|
||||||
<v-text-field
|
<v-text-field
|
||||||
v-model.number="threshold" label="Threshold (0–1)"
|
v-model.number="threshold" label="Threshold (0–1)"
|
||||||
|
|||||||
@@ -14,10 +14,10 @@
|
|||||||
@update:search="onSearch"
|
@update:search="onSearch"
|
||||||
@update:model-value="onPick"
|
@update:model-value="onPick"
|
||||||
>
|
>
|
||||||
<template #item="{ props: itemProps, item }">
|
<template #item="{ props: itemProps, internalItem }">
|
||||||
<v-list-item v-bind="itemProps" :title="item.raw.name">
|
<v-list-item v-bind="itemProps" :title="internalItem.raw.name">
|
||||||
<template #subtitle>
|
<template #subtitle>
|
||||||
{{ item.raw.fandom_name ? `character · ${item.raw.fandom_name}` : item.raw.kind }}
|
{{ internalItem.raw.fandom_name ? `character · ${internalItem.raw.fandom_name}` : internalItem.raw.kind }}
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -13,14 +13,14 @@
|
|||||||
@update:search="onSearch"
|
@update:search="onSearch"
|
||||||
@update:model-value="onPick"
|
@update:model-value="onPick"
|
||||||
>
|
>
|
||||||
<template #item="{ props: itemProps, item }">
|
<template #item="{ props: itemProps, internalItem }">
|
||||||
<v-list-item v-bind="itemProps" :title="item.raw.name">
|
<v-list-item v-bind="itemProps" :title="internalItem.raw.name">
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<v-icon size="small">{{ iconFor(item.raw) }}</v-icon>
|
<v-icon size="small">{{ iconFor(internalItem.raw) }}</v-icon>
|
||||||
</template>
|
</template>
|
||||||
<template #subtitle>
|
<template #subtitle>
|
||||||
{{ item.raw.kind === 'artist' ? 'artist'
|
{{ internalItem.raw.kind === 'artist' ? 'artist'
|
||||||
: (item.raw.fandom_name ? `character · ${item.raw.fandom_name}` : item.raw.kind) }}
|
: (internalItem.raw.fandom_name ? `character · ${internalItem.raw.fandom_name}` : internalItem.raw.kind) }}
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
being dropped as duplicates;</strong> raise it to collapse more
|
being dropped as duplicates;</strong> raise it to collapse more
|
||||||
look-alikes. Applies to new imports.
|
look-alikes. Applies to new imports.
|
||||||
</div>
|
</div>
|
||||||
<v-row align="center" no-gutters>
|
<v-row no-gutters class="align-center">
|
||||||
<v-col cols="12" sm="9">
|
<v-col cols="12" sm="9">
|
||||||
<v-slider
|
<v-slider
|
||||||
v-model="local.phash_threshold"
|
v-model="local.phash_threshold"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-row dense>
|
<v-row density="compact">
|
||||||
<v-col v-for="card in cards" :key="card.label" cols="12" sm="6" md="4" lg="3" xl="2">
|
<v-col v-for="card in cards" :key="card.label" cols="12" sm="6" md="4" lg="3" xl="2">
|
||||||
<v-card class="fc-stat">
|
<v-card class="fc-stat">
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
|
|||||||
@@ -39,3 +39,13 @@
|
|||||||
deliberately not used here. `.fc-muted` is a custom class Vuetify never
|
deliberately not used here. `.fc-muted` is a custom class Vuetify never
|
||||||
emits, so no specificity/reorder fight — no !important needed. */
|
emits, so no specificity/reorder fight — no !important needed. */
|
||||||
.fc-muted { color: rgb(var(--v-theme-on-surface-variant)); }
|
.fc-muted { color: rgb(var(--v-theme-on-surface-variant)); }
|
||||||
|
|
||||||
|
/* Vuetify 4 dropped its global CSS reset (normalisation moved into each
|
||||||
|
component). FC's layouts assumed the reset zeroed margins on text elements, so
|
||||||
|
restore just that — the "minimal reset" from the v4 upgrade guide — inside
|
||||||
|
Vuetify's own reset layer, which is low precedence so component + app styles
|
||||||
|
still win over it. Batch-4 Vuetify 3→4 (#1449). */
|
||||||
|
@layer vuetify-core.reset {
|
||||||
|
ul, ol, figure, details, summary { padding: 0; margin: 0; }
|
||||||
|
h1, h2, h3, h4, h5, h6, p { margin: 0; }
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user