feat(creator): introduce Album component and refactor AboutCreator to use it
This commit is contained in:
@@ -94,8 +94,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Photos Section using CreatorAlbum component -->
|
<!-- Photos Section using Album component -->
|
||||||
<CreatorAlbum
|
<Album
|
||||||
v-if="hasImages || isEditMode"
|
v-if="hasImages || isEditMode"
|
||||||
:is-edit-mode="isEditMode"
|
:is-edit-mode="isEditMode"
|
||||||
:images="imageUrls"
|
:images="imageUrls"
|
||||||
@@ -130,7 +130,7 @@ import {useClient} from "@/plugins/api.js";
|
|||||||
import {useBrandingStore} from "@/stores/brandingStore.js";
|
import {useBrandingStore} from "@/stores/brandingStore.js";
|
||||||
import {useCreatorProfileStore} from "@/stores/creatorProfileStore.js";
|
import {useCreatorProfileStore} from "@/stores/creatorProfileStore.js";
|
||||||
import {useI18n} from 'vue-i18n';
|
import {useI18n} from 'vue-i18n';
|
||||||
import CreatorAlbum from './CreatorAlbum.vue';
|
import Album from './Album.vue';
|
||||||
import {buildEmbedUrl, isValidYouTubeUrlOrId, extractVideoId} from '@/utils/youtube';
|
import {buildEmbedUrl, isValidYouTubeUrlOrId, extractVideoId} from '@/utils/youtube';
|
||||||
|
|
||||||
const {t} = useI18n();
|
const {t} = useI18n();
|
||||||
@@ -244,7 +244,7 @@ onMounted(async () => {
|
|||||||
await fetchAlbumData();
|
await fetchAlbumData();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Update images from CreatorAlbum component
|
// Update images from Album component
|
||||||
function updateImages(newImages) {
|
function updateImages(newImages) {
|
||||||
imageUrls.value = newImages;
|
imageUrls.value = newImages;
|
||||||
}
|
}
|
||||||
@@ -401,11 +401,12 @@ function cancelEdit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.contact-info {
|
.contact-info {
|
||||||
|
@apply text-lg text-justify whitespace-pre-line;
|
||||||
@apply flex flex-col items-center;
|
@apply flex flex-col items-center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-item {
|
.contact-item {
|
||||||
@apply text-lg text-center mb-2 font-semibold;
|
@apply text-lg text-center mb-2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Formatting styles for description */
|
/* Formatting styles for description */
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="album-editor">
|
<div class="album-editor">
|
||||||
<h2 class="text-xl font-semibold mb-4">{{ t('creator.sections.album.title') }}</h2>
|
|
||||||
|
<h2 class="text-xl font-semibold mb-4">
|
||||||
|
{{ t('creator.sections.album.title') }}
|
||||||
|
</h2>
|
||||||
|
|
||||||
<!-- Drop zone with photos -->
|
<!-- Drop zone with photos -->
|
||||||
<div class="drop-zone"
|
<div class="drop-zone"
|
||||||
@dragover.prevent
|
@dragover.prevent
|
||||||
@drop.prevent="handleDrop"
|
@drop.prevent="handleDrop"
|
||||||
@click="triggerFileInput">
|
@click="triggerFileInput">
|
||||||
|
|
||||||
<!-- Upload prompt -->
|
<!-- Upload prompt -->
|
||||||
<div class="drop-zone-content">
|
<div class="drop-zone-content">
|
||||||
<v-icon size="large">mdi-plus</v-icon>
|
<v-icon size="large">mdi-plus</v-icon>
|
||||||
@@ -68,6 +72,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</draggable>
|
</draggable>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -80,15 +80,12 @@ const gridColumns = computed(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.image-grid {
|
.image-grid {
|
||||||
display: grid;
|
@apply w-full grid;
|
||||||
width: 100%;
|
|
||||||
grid-template-columns: v-bind(gridColumns);
|
grid-template-columns: v-bind(gridColumns);
|
||||||
}
|
}
|
||||||
|
|
||||||
.image-wrapper {
|
.image-wrapper {
|
||||||
position: relative;
|
@apply relative w-full aspect-square;
|
||||||
width: 100%;
|
|
||||||
aspect-ratio: 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.image {
|
.image {
|
||||||
|
|||||||
Reference in New Issue
Block a user