feat(fc3a): SubscriptionsView + ArtistSection + SourceRow + router

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-20 12:57:13 -04:00
parent ded5e5f642
commit 79d6d74637
4 changed files with 250 additions and 1 deletions
@@ -0,0 +1,43 @@
<template>
<div class="fc-source-row">
<v-chip size="x-small" variant="tonal" class="fc-source-row__platform">
{{ source.platform }}
</v-chip>
<a :href="source.url" target="_blank" rel="noopener" class="fc-source-row__url">
{{ source.url }}
</a>
<v-switch
:model-value="source.enabled"
density="compact" hide-details color="accent"
@update:model-value="onToggleEnabled"
/>
<v-btn icon="mdi-pencil" size="x-small" variant="text" @click="$emit('edit', source)" />
<v-btn icon="mdi-close" size="x-small" variant="text" @click="$emit('remove', source)" />
</div>
</template>
<script setup>
const props = defineProps({ source: { type: Object, required: true } })
const emit = defineEmits(['edit', 'remove', 'toggle'])
function onToggleEnabled(value) {
emit('toggle', { source: props.source, enabled: value })
}
</script>
<style scoped>
.fc-source-row {
display: grid;
grid-template-columns: 96px 1fr auto auto auto;
gap: 0.75rem;
align-items: center;
padding: 0.4rem 0;
}
.fc-source-row__url {
color: rgb(var(--v-theme-on-surface-variant));
text-decoration: none;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.fc-source-row__url:hover { color: rgb(var(--v-theme-accent)); }
</style>