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="relative w-[280px]" :style="backdropPreview.size ? { aspectRatio: `${backdropPreview.size.w} / ${backdropPreview.size.h}` } : undefined">
817
- <img
818
- v-show="backdropPreview.src && !backdropPreview.error"
819
- :src="backdropPreview.src"
820
- alt="Backdrop preview"
821
- class="rounded border w-full"
822
- @load="(e: Event) => onPreviewLoad(backdropPreview, e)"
823
- @error="backdropPreview.loading = false; backdropPreview.error = true"
824
- />
825
- <p v-if="backdropPreview.error && !backdropPreview.loading" class="text-sm text-muted-foreground py-4">Failed</p>
826
- <div v-if="backdropPreview.loading" class="absolute inset-0 flex items-center justify-center rounded">
827
- <Loader2 class="size-5 animate-spin text-white drop-shadow-md" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 -->