Spaces:
Paused
Paused
FTA7700 commited on
Commit ·
db7fcf6
1
Parent(s): 5989843
Restructure Backdrop fields into two flex columns aligned with preview box
Browse files
web/src/components/RenderSettingsForm.vue
CHANGED
|
@@ -813,18 +813,146 @@ function toggleExclude(key: string, checked: boolean) {
|
|
| 813 |
<div v-if="fetchBackdropPreview" class="rounded-md border p-4 space-y-3">
|
| 814 |
<p class="text-sm font-semibold">Backdrop (series/movie)</p>
|
| 815 |
<div class="flex gap-4 flex-wrap">
|
| 816 |
-
<div class="
|
| 817 |
-
<
|
| 818 |
-
|
| 819 |
-
|
| 820 |
-
|
| 821 |
-
|
| 822 |
-
|
| 823 |
-
|
| 824 |
-
|
| 825 |
-
|
| 826 |
-
|
| 827 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 828 |
</div>
|
| 829 |
</div>
|
| 830 |
<div class="space-y-3 min-w-[180px]">
|
|
@@ -881,132 +1009,6 @@ function toggleExclude(key: string, checked: boolean) {
|
|
| 881 |
</div>
|
| 882 |
</div>
|
| 883 |
</div>
|
| 884 |
-
<div class="flex gap-4 flex-wrap">
|
| 885 |
-
<div class="w-[280px] space-y-3">
|
| 886 |
-
<div class="space-y-2">
|
| 887 |
-
<Label :for="inputId('backdrop-label-style')">Label style</Label>
|
| 888 |
-
<Select
|
| 889 |
-
:model-value="editBackdropLabelStyle"
|
| 890 |
-
@update:model-value="editBackdropLabelStyle = $event as string"
|
| 891 |
-
>
|
| 892 |
-
<SelectTrigger :id="inputId('backdrop-label-style')" class="max-w-xs" data-testid="backdrop-label-style-select">
|
| 893 |
-
<SelectValue placeholder="Select style" />
|
| 894 |
-
</SelectTrigger>
|
| 895 |
-
<SelectContent>
|
| 896 |
-
<SelectItem value="t">Text</SelectItem>
|
| 897 |
-
<SelectItem value="i">Icon</SelectItem>
|
| 898 |
-
<SelectItem value="o">Official</SelectItem>
|
| 899 |
-
</SelectContent>
|
| 900 |
-
</Select>
|
| 901 |
-
</div>
|
| 902 |
-
<div class="space-y-2">
|
| 903 |
-
<Label :for="inputId('backdrop-badge-shape')">Badge shape</Label>
|
| 904 |
-
<Select
|
| 905 |
-
:model-value="editBackdropBadgeShape"
|
| 906 |
-
@update:model-value="editBackdropBadgeShape = $event as string"
|
| 907 |
-
>
|
| 908 |
-
<SelectTrigger :id="inputId('backdrop-badge-shape')" class="max-w-xs" data-testid="backdrop-badge-shape-select">
|
| 909 |
-
<SelectValue placeholder="Select shape" />
|
| 910 |
-
</SelectTrigger>
|
| 911 |
-
<SelectContent>
|
| 912 |
-
<SelectItem value="r">Rounded</SelectItem>
|
| 913 |
-
<SelectItem value="p">Pill</SelectItem>
|
| 914 |
-
</SelectContent>
|
| 915 |
-
</Select>
|
| 916 |
-
</div>
|
| 917 |
-
<div class="space-y-2">
|
| 918 |
-
<Label :for="inputId('backdrop-position')">Position</Label>
|
| 919 |
-
<Select
|
| 920 |
-
:model-value="editBackdropPosition"
|
| 921 |
-
@update:model-value="editBackdropPosition = $event as string"
|
| 922 |
-
>
|
| 923 |
-
<SelectTrigger :id="inputId('backdrop-position')" class="max-w-xs" data-testid="backdrop-position-select">
|
| 924 |
-
<SelectValue placeholder="Select position" />
|
| 925 |
-
</SelectTrigger>
|
| 926 |
-
<SelectContent>
|
| 927 |
-
<SelectItem value="tl">Top Left</SelectItem>
|
| 928 |
-
<SelectItem value="tc">Top Center</SelectItem>
|
| 929 |
-
<SelectItem value="tr">Top Right</SelectItem>
|
| 930 |
-
<SelectItem value="bl">Bottom Left</SelectItem>
|
| 931 |
-
<SelectItem value="bc">Bottom Center</SelectItem>
|
| 932 |
-
<SelectItem value="br">Bottom Right</SelectItem>
|
| 933 |
-
<SelectItem value="l">Left</SelectItem>
|
| 934 |
-
<SelectItem value="r">Right</SelectItem>
|
| 935 |
-
</SelectContent>
|
| 936 |
-
</Select>
|
| 937 |
-
</div>
|
| 938 |
-
<div class="space-y-2">
|
| 939 |
-
<Label :for="inputId('backdrop-badge-direction')">Badge direction</Label>
|
| 940 |
-
<Select
|
| 941 |
-
:model-value="editBackdropBadgeDirection"
|
| 942 |
-
@update:model-value="editBackdropBadgeDirection = $event as string"
|
| 943 |
-
>
|
| 944 |
-
<SelectTrigger :id="inputId('backdrop-badge-direction')" class="max-w-xs" data-testid="backdrop-badge-direction-select">
|
| 945 |
-
<SelectValue placeholder="Select direction" />
|
| 946 |
-
</SelectTrigger>
|
| 947 |
-
<SelectContent>
|
| 948 |
-
<SelectItem value="d">Default</SelectItem>
|
| 949 |
-
<SelectItem value="h">Horizontal</SelectItem>
|
| 950 |
-
<SelectItem value="v">Vertical</SelectItem>
|
| 951 |
-
</SelectContent>
|
| 952 |
-
</Select>
|
| 953 |
-
</div>
|
| 954 |
-
</div>
|
| 955 |
-
<div class="flex-1 min-w-[180px] space-y-3">
|
| 956 |
-
<div class="space-y-2">
|
| 957 |
-
<Label :for="inputId('backdrop-badge-size')">Badge size</Label>
|
| 958 |
-
<Select
|
| 959 |
-
:model-value="editBackdropBadgeSize"
|
| 960 |
-
@update:model-value="editBackdropBadgeSize = $event as string"
|
| 961 |
-
>
|
| 962 |
-
<SelectTrigger :id="inputId('backdrop-badge-size')" class="max-w-xs" data-testid="backdrop-badge-size-select">
|
| 963 |
-
<SelectValue placeholder="Select size" />
|
| 964 |
-
</SelectTrigger>
|
| 965 |
-
<SelectContent>
|
| 966 |
-
<SelectItem value="xs">Extra Small</SelectItem>
|
| 967 |
-
<SelectItem value="s">Small</SelectItem>
|
| 968 |
-
<SelectItem value="m">Medium</SelectItem>
|
| 969 |
-
<SelectItem value="l">Large</SelectItem>
|
| 970 |
-
<SelectItem value="xl">Extra Large</SelectItem>
|
| 971 |
-
</SelectContent>
|
| 972 |
-
</Select>
|
| 973 |
-
</div>
|
| 974 |
-
<div class="space-y-2">
|
| 975 |
-
<Label :for="inputId('backdrop-badge-background')">Badge background</Label>
|
| 976 |
-
<Select
|
| 977 |
-
:model-value="editBackdropBadgeBackground"
|
| 978 |
-
@update:model-value="editBackdropBadgeBackground = $event as string"
|
| 979 |
-
>
|
| 980 |
-
<SelectTrigger :id="inputId('backdrop-badge-background')" class="max-w-xs" data-testid="backdrop-badge-background-select">
|
| 981 |
-
<SelectValue placeholder="Select background" />
|
| 982 |
-
</SelectTrigger>
|
| 983 |
-
<SelectContent>
|
| 984 |
-
<SelectItem value="d">Default</SelectItem>
|
| 985 |
-
<SelectItem value="k">Dark</SelectItem>
|
| 986 |
-
<SelectItem value="t">Transparent</SelectItem>
|
| 987 |
-
<SelectItem value="n">None</SelectItem>
|
| 988 |
-
</SelectContent>
|
| 989 |
-
</Select>
|
| 990 |
-
</div>
|
| 991 |
-
<div class="space-y-2">
|
| 992 |
-
<Label :for="inputId('backdrop-badge-style')">Badge style</Label>
|
| 993 |
-
<Select
|
| 994 |
-
:model-value="editBackdropBadgeStyle"
|
| 995 |
-
:disabled="editBackdropBadgeShape === 'p'"
|
| 996 |
-
@update:model-value="editBackdropBadgeStyle = $event as string"
|
| 997 |
-
>
|
| 998 |
-
<SelectTrigger :id="inputId('backdrop-badge-style')" class="max-w-xs" data-testid="backdrop-badge-style-select">
|
| 999 |
-
<SelectValue placeholder="Select style" />
|
| 1000 |
-
</SelectTrigger>
|
| 1001 |
-
<SelectContent>
|
| 1002 |
-
<SelectItem value="h">Horizontal</SelectItem>
|
| 1003 |
-
<SelectItem value="v">Vertical</SelectItem>
|
| 1004 |
-
</SelectContent>
|
| 1005 |
-
</Select>
|
| 1006 |
-
<p v-if="editBackdropBadgeShape === 'p'" class="text-xs text-muted-foreground">Pills always render horizontally.</p>
|
| 1007 |
-
</div>
|
| 1008 |
-
</div>
|
| 1009 |
-
</div>
|
| 1010 |
</div>
|
| 1011 |
|
| 1012 |
<!-- Section 4: Logo -->
|
|
|
|
| 813 |
<div v-if="fetchBackdropPreview" class="rounded-md border p-4 space-y-3">
|
| 814 |
<p class="text-sm font-semibold">Backdrop (series/movie)</p>
|
| 815 |
<div class="flex gap-4 flex-wrap">
|
| 816 |
+
<div class="w-[280px] space-y-3">
|
| 817 |
+
<div class="relative w-[280px]" :style="backdropPreview.size ? { aspectRatio: `${backdropPreview.size.w} / ${backdropPreview.size.h}` } : undefined">
|
| 818 |
+
<img
|
| 819 |
+
v-show="backdropPreview.src && !backdropPreview.error"
|
| 820 |
+
:src="backdropPreview.src"
|
| 821 |
+
alt="Backdrop preview"
|
| 822 |
+
class="rounded border w-full"
|
| 823 |
+
@load="(e: Event) => onPreviewLoad(backdropPreview, e)"
|
| 824 |
+
@error="backdropPreview.loading = false; backdropPreview.error = true"
|
| 825 |
+
/>
|
| 826 |
+
<p v-if="backdropPreview.error && !backdropPreview.loading" class="text-sm text-muted-foreground py-4">Failed</p>
|
| 827 |
+
<div v-if="backdropPreview.loading" class="absolute inset-0 flex items-center justify-center rounded">
|
| 828 |
+
<Loader2 class="size-5 animate-spin text-white drop-shadow-md" />
|
| 829 |
+
</div>
|
| 830 |
+
</div>
|
| 831 |
+
<div class="grid grid-cols-2 gap-3">
|
| 832 |
+
<div class="space-y-3">
|
| 833 |
+
<div class="space-y-2">
|
| 834 |
+
<Label :for="inputId('backdrop-label-style')">Label style</Label>
|
| 835 |
+
<Select
|
| 836 |
+
:model-value="editBackdropLabelStyle"
|
| 837 |
+
@update:model-value="editBackdropLabelStyle = $event as string"
|
| 838 |
+
>
|
| 839 |
+
<SelectTrigger :id="inputId('backdrop-label-style')" class="max-w-xs" data-testid="backdrop-label-style-select">
|
| 840 |
+
<SelectValue placeholder="Select style" />
|
| 841 |
+
</SelectTrigger>
|
| 842 |
+
<SelectContent>
|
| 843 |
+
<SelectItem value="t">Text</SelectItem>
|
| 844 |
+
<SelectItem value="i">Icon</SelectItem>
|
| 845 |
+
<SelectItem value="o">Official</SelectItem>
|
| 846 |
+
</SelectContent>
|
| 847 |
+
</Select>
|
| 848 |
+
</div>
|
| 849 |
+
<div class="space-y-2">
|
| 850 |
+
<Label :for="inputId('backdrop-badge-shape')">Badge shape</Label>
|
| 851 |
+
<Select
|
| 852 |
+
:model-value="editBackdropBadgeShape"
|
| 853 |
+
@update:model-value="editBackdropBadgeShape = $event as string"
|
| 854 |
+
>
|
| 855 |
+
<SelectTrigger :id="inputId('backdrop-badge-shape')" class="max-w-xs" data-testid="backdrop-badge-shape-select">
|
| 856 |
+
<SelectValue placeholder="Select shape" />
|
| 857 |
+
</SelectTrigger>
|
| 858 |
+
<SelectContent>
|
| 859 |
+
<SelectItem value="r">Rounded</SelectItem>
|
| 860 |
+
<SelectItem value="p">Pill</SelectItem>
|
| 861 |
+
</SelectContent>
|
| 862 |
+
</Select>
|
| 863 |
+
</div>
|
| 864 |
+
<div class="space-y-2">
|
| 865 |
+
<Label :for="inputId('backdrop-position')">Position</Label>
|
| 866 |
+
<Select
|
| 867 |
+
:model-value="editBackdropPosition"
|
| 868 |
+
@update:model-value="editBackdropPosition = $event as string"
|
| 869 |
+
>
|
| 870 |
+
<SelectTrigger :id="inputId('backdrop-position')" class="max-w-xs" data-testid="backdrop-position-select">
|
| 871 |
+
<SelectValue placeholder="Select position" />
|
| 872 |
+
</SelectTrigger>
|
| 873 |
+
<SelectContent>
|
| 874 |
+
<SelectItem value="tl">Top Left</SelectItem>
|
| 875 |
+
<SelectItem value="tc">Top Center</SelectItem>
|
| 876 |
+
<SelectItem value="tr">Top Right</SelectItem>
|
| 877 |
+
<SelectItem value="bl">Bottom Left</SelectItem>
|
| 878 |
+
<SelectItem value="bc">Bottom Center</SelectItem>
|
| 879 |
+
<SelectItem value="br">Bottom Right</SelectItem>
|
| 880 |
+
<SelectItem value="l">Left</SelectItem>
|
| 881 |
+
<SelectItem value="r">Right</SelectItem>
|
| 882 |
+
</SelectContent>
|
| 883 |
+
</Select>
|
| 884 |
+
</div>
|
| 885 |
+
<div class="space-y-2">
|
| 886 |
+
<Label :for="inputId('backdrop-badge-direction')">Badge direction</Label>
|
| 887 |
+
<Select
|
| 888 |
+
:model-value="editBackdropBadgeDirection"
|
| 889 |
+
@update:model-value="editBackdropBadgeDirection = $event as string"
|
| 890 |
+
>
|
| 891 |
+
<SelectTrigger :id="inputId('backdrop-badge-direction')" class="max-w-xs" data-testid="backdrop-badge-direction-select">
|
| 892 |
+
<SelectValue placeholder="Select direction" />
|
| 893 |
+
</SelectTrigger>
|
| 894 |
+
<SelectContent>
|
| 895 |
+
<SelectItem value="d">Default</SelectItem>
|
| 896 |
+
<SelectItem value="h">Horizontal</SelectItem>
|
| 897 |
+
<SelectItem value="v">Vertical</SelectItem>
|
| 898 |
+
</SelectContent>
|
| 899 |
+
</Select>
|
| 900 |
+
</div>
|
| 901 |
+
</div>
|
| 902 |
+
<div class="space-y-3">
|
| 903 |
+
<div class="space-y-2">
|
| 904 |
+
<Label :for="inputId('backdrop-badge-size')">Badge size</Label>
|
| 905 |
+
<Select
|
| 906 |
+
:model-value="editBackdropBadgeSize"
|
| 907 |
+
@update:model-value="editBackdropBadgeSize = $event as string"
|
| 908 |
+
>
|
| 909 |
+
<SelectTrigger :id="inputId('backdrop-badge-size')" class="max-w-xs" data-testid="backdrop-badge-size-select">
|
| 910 |
+
<SelectValue placeholder="Select size" />
|
| 911 |
+
</SelectTrigger>
|
| 912 |
+
<SelectContent>
|
| 913 |
+
<SelectItem value="xs">Extra Small</SelectItem>
|
| 914 |
+
<SelectItem value="s">Small</SelectItem>
|
| 915 |
+
<SelectItem value="m">Medium</SelectItem>
|
| 916 |
+
<SelectItem value="l">Large</SelectItem>
|
| 917 |
+
<SelectItem value="xl">Extra Large</SelectItem>
|
| 918 |
+
</SelectContent>
|
| 919 |
+
</Select>
|
| 920 |
+
</div>
|
| 921 |
+
<div class="space-y-2">
|
| 922 |
+
<Label :for="inputId('backdrop-badge-background')">Badge background</Label>
|
| 923 |
+
<Select
|
| 924 |
+
:model-value="editBackdropBadgeBackground"
|
| 925 |
+
@update:model-value="editBackdropBadgeBackground = $event as string"
|
| 926 |
+
>
|
| 927 |
+
<SelectTrigger :id="inputId('backdrop-badge-background')" class="max-w-xs" data-testid="backdrop-badge-background-select">
|
| 928 |
+
<SelectValue placeholder="Select background" />
|
| 929 |
+
</SelectTrigger>
|
| 930 |
+
<SelectContent>
|
| 931 |
+
<SelectItem value="d">Default</SelectItem>
|
| 932 |
+
<SelectItem value="k">Dark</SelectItem>
|
| 933 |
+
<SelectItem value="t">Transparent</SelectItem>
|
| 934 |
+
<SelectItem value="n">None</SelectItem>
|
| 935 |
+
</SelectContent>
|
| 936 |
+
</Select>
|
| 937 |
+
</div>
|
| 938 |
+
<div class="space-y-2">
|
| 939 |
+
<Label :for="inputId('backdrop-badge-style')">Badge style</Label>
|
| 940 |
+
<Select
|
| 941 |
+
:model-value="editBackdropBadgeStyle"
|
| 942 |
+
:disabled="editBackdropBadgeShape === 'p'"
|
| 943 |
+
@update:model-value="editBackdropBadgeStyle = $event as string"
|
| 944 |
+
>
|
| 945 |
+
<SelectTrigger :id="inputId('backdrop-badge-style')" class="max-w-xs" data-testid="backdrop-badge-style-select">
|
| 946 |
+
<SelectValue placeholder="Select style" />
|
| 947 |
+
</SelectTrigger>
|
| 948 |
+
<SelectContent>
|
| 949 |
+
<SelectItem value="h">Horizontal</SelectItem>
|
| 950 |
+
<SelectItem value="v">Vertical</SelectItem>
|
| 951 |
+
</SelectContent>
|
| 952 |
+
</Select>
|
| 953 |
+
<p v-if="editBackdropBadgeShape === 'p'" class="text-xs text-muted-foreground">Pills always render horizontally.</p>
|
| 954 |
+
</div>
|
| 955 |
+
</div>
|
| 956 |
</div>
|
| 957 |
</div>
|
| 958 |
<div class="space-y-3 min-w-[180px]">
|
|
|
|
| 1009 |
</div>
|
| 1010 |
</div>
|
| 1011 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1012 |
</div>
|
| 1013 |
|
| 1014 |
<!-- Section 4: Logo -->
|