mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-09 09:46:44 +08:00
fix: 统一媒体详情玻璃控件样式
This commit is contained in:
@@ -107,6 +107,26 @@ describe('glass overlay material styles', () => {
|
|||||||
expect(styles).not.toMatch(/\.v-chip--variant-(?:outlined|text|plain)\s*\{/)
|
expect(styles).not.toMatch(/\.v-chip--variant-(?:outlined|text|plain)\s*\{/)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('keeps media source links and episode group cards on glass material tokens', () => {
|
||||||
|
const mediaDetail = readFileSync(resolve(cwd(), 'src/views/discover/MediaDetailView.vue'), 'utf8')
|
||||||
|
const mediaSourceRule = mediaDetail.match(
|
||||||
|
/\.media-detail-glass \.media-source-link-chip\s*\{(?<declarations>[\s\S]*?)\n\}/u,
|
||||||
|
)?.groups?.declarations
|
||||||
|
const episodeGroupRule = mediaDetail.match(
|
||||||
|
/\.media-detail-glass \.episode-group-option\s*\{(?<declarations>[\s\S]*?)\n\}/u,
|
||||||
|
)?.groups?.declarations
|
||||||
|
|
||||||
|
expect(mediaDetail.match(/media-source-link-chip/g)).toHaveLength(8)
|
||||||
|
expect(mediaSourceRule).toContain('var(--glass-chip-backdrop-filter)')
|
||||||
|
expect(mediaSourceRule).toContain('var(--glass-button-surface)')
|
||||||
|
expect(mediaSourceRule).toContain('var(--glass-chip-sheen)')
|
||||||
|
expect(mediaSourceRule).toContain('var(--glass-control-shadow)')
|
||||||
|
expect(episodeGroupRule).toContain('var(--glass-surface-backdrop-filter)')
|
||||||
|
expect(episodeGroupRule).toContain('var(--glass-surface)')
|
||||||
|
expect(episodeGroupRule).toContain('var(--glass-sheen)')
|
||||||
|
expect(episodeGroupRule).toContain('var(--glass-control-shadow)')
|
||||||
|
})
|
||||||
|
|
||||||
it('keeps workflow share gradients as colored glass in every appearance', () => {
|
it('keeps workflow share gradients as colored glass in every appearance', () => {
|
||||||
const styles = readFileSync(resolve(cwd(), 'src/styles/themes/glass.scss'), 'utf8')
|
const styles = readFileSync(resolve(cwd(), 'src/styles/themes/glass.scss'), 'utf8')
|
||||||
const card = readFileSync(resolve(cwd(), 'src/components/cards/WorkflowShareCard.vue'), 'utf8')
|
const card = readFileSync(resolve(cwd(), 'src/components/cards/WorkflowShareCard.vue'), 'utf8')
|
||||||
|
|||||||
@@ -942,7 +942,7 @@ onUnmounted(() => {
|
|||||||
target="_blank"
|
target="_blank"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
class="media-source-link-chip inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
||||||
>
|
>
|
||||||
<VIcon icon="mdi-link" />
|
<VIcon icon="mdi-link" />
|
||||||
<span class="ms-1">TheMovieDb</span>
|
<span class="ms-1">TheMovieDb</span>
|
||||||
@@ -950,7 +950,7 @@ onUnmounted(() => {
|
|||||||
</a>
|
</a>
|
||||||
<div v-if="mediaDetail.douban_id" class="mb-2 mr-2 inline-flex last:mr-0" @click="handleDoubanClick">
|
<div v-if="mediaDetail.douban_id" class="mb-2 mr-2 inline-flex last:mr-0" @click="handleDoubanClick">
|
||||||
<div
|
<div
|
||||||
class="inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
class="media-source-link-chip inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
||||||
>
|
>
|
||||||
<VIcon icon="mdi-link" />
|
<VIcon icon="mdi-link" />
|
||||||
<span class="ms-1">豆瓣</span>
|
<span class="ms-1">豆瓣</span>
|
||||||
@@ -958,7 +958,7 @@ onUnmounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
<a v-if="mediaDetail.imdb_id" class="mb-2 mr-2 inline-flex last:mr-0" :href="getImdbLink()" target="_blank">
|
<a v-if="mediaDetail.imdb_id" class="mb-2 mr-2 inline-flex last:mr-0" :href="getImdbLink()" target="_blank">
|
||||||
<div
|
<div
|
||||||
class="inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
class="media-source-link-chip inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
||||||
>
|
>
|
||||||
<VIcon icon="mdi-link" />
|
<VIcon icon="mdi-link" />
|
||||||
<span class="ms-1">IMDb</span>
|
<span class="ms-1">IMDb</span>
|
||||||
@@ -966,7 +966,7 @@ onUnmounted(() => {
|
|||||||
</a>
|
</a>
|
||||||
<a v-if="mediaDetail.tvdb_id" class="mb-2 mr-2 inline-flex last:mr-0" :href="getTvdbLink()" target="_blank">
|
<a v-if="mediaDetail.tvdb_id" class="mb-2 mr-2 inline-flex last:mr-0" :href="getTvdbLink()" target="_blank">
|
||||||
<div
|
<div
|
||||||
class="inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
class="media-source-link-chip inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
||||||
>
|
>
|
||||||
<VIcon icon="mdi-link" />
|
<VIcon icon="mdi-link" />
|
||||||
<span class="ms-1">TheTvDb</span>
|
<span class="ms-1">TheTvDb</span>
|
||||||
@@ -979,7 +979,7 @@ onUnmounted(() => {
|
|||||||
target="_blank"
|
target="_blank"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
class="media-source-link-chip inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
||||||
>
|
>
|
||||||
<VIcon icon="mdi-link" />
|
<VIcon icon="mdi-link" />
|
||||||
<span class="ms-1">Bangumi</span>
|
<span class="ms-1">Bangumi</span>
|
||||||
@@ -992,7 +992,7 @@ onUnmounted(() => {
|
|||||||
target="_blank"
|
target="_blank"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
class="media-source-link-chip inline-flex cursor-pointer items-center rounded-full bg-gray-600 px-2 py-1 text-sm text-gray-200 ring-1 ring-gray-500 transition hover:bg-gray-700"
|
||||||
>
|
>
|
||||||
<VIcon icon="mdi-link" />
|
<VIcon icon="mdi-link" />
|
||||||
<span class="ms-1">AniList</span>
|
<span class="ms-1">AniList</span>
|
||||||
@@ -1570,6 +1570,22 @@ a.crew-name {
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.media-detail-glass .media-source-link-chip {
|
||||||
|
border: 1px solid var(--glass-border);
|
||||||
|
-webkit-backdrop-filter: var(--glass-chip-backdrop-filter);
|
||||||
|
backdrop-filter: var(--glass-chip-backdrop-filter);
|
||||||
|
background-color: var(--glass-button-surface);
|
||||||
|
background-image: var(--glass-chip-sheen);
|
||||||
|
box-shadow: var(--glass-control-shadow);
|
||||||
|
color: rgb(var(--v-theme-on-surface));
|
||||||
|
}
|
||||||
|
|
||||||
|
.media-detail-glass .media-source-link-chip:hover {
|
||||||
|
border-color: var(--glass-border-hover);
|
||||||
|
background-color: var(--glass-button-surface-hover);
|
||||||
|
box-shadow: var(--glass-control-shadow-hover);
|
||||||
|
}
|
||||||
|
|
||||||
.media-status {
|
.media-status {
|
||||||
margin-block-end: 0.5rem;
|
margin-block-end: 0.5rem;
|
||||||
}
|
}
|
||||||
@@ -1838,6 +1854,30 @@ a.crew-name {
|
|||||||
background: rgba(var(--v-theme-surface), var(--transparent-opacity-heavy, 0.5));
|
background: rgba(var(--v-theme-surface), var(--transparent-opacity-heavy, 0.5));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.media-detail-glass .episode-group-option {
|
||||||
|
-webkit-backdrop-filter: var(--glass-surface-backdrop-filter);
|
||||||
|
backdrop-filter: var(--glass-surface-backdrop-filter);
|
||||||
|
border-color: var(--glass-border);
|
||||||
|
background-color: var(--glass-surface);
|
||||||
|
background-image: var(--glass-sheen);
|
||||||
|
box-shadow: var(--glass-control-shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.media-detail-glass .episode-group-option:hover {
|
||||||
|
border-color: var(--glass-border-hover);
|
||||||
|
background-color: var(--glass-surface-soft);
|
||||||
|
box-shadow: var(--glass-control-shadow-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.media-detail-glass .episode-group-option--active {
|
||||||
|
border-color: rgba(var(--v-theme-primary), 0.7);
|
||||||
|
background-color: rgba(var(--v-theme-primary), 0.22);
|
||||||
|
}
|
||||||
|
|
||||||
|
.media-detail-glass .episode-group-option--active:hover {
|
||||||
|
background-color: rgba(var(--v-theme-primary), 0.28);
|
||||||
|
}
|
||||||
|
|
||||||
@media (width <= 640px) {
|
@media (width <= 640px) {
|
||||||
.episode-group-option {
|
.episode-group-option {
|
||||||
flex-basis: 9.75rem;
|
flex-basis: 9.75rem;
|
||||||
|
|||||||
Reference in New Issue
Block a user