Files
pokemon-inventory/apps/web/src/pages/AdminImagePage.vue
T
fragginwagon 8e5ce80196
Quality / test (push) Canceled after 0s
feat: complete inventory image and sales workflows
Commit the working vertical slices for inventory image processing and the Sale workflow, including Sale history, audited voiding, multi-item persistence, admin UI, migrations, documentation, and tests.
2026-09-09 00:35:57 -04:00

35 lines
1.3 KiB
Vue

<script setup>
import { onMounted } from 'vue';
import { RouterLink, useRoute } from 'vue-router';
import AdminImageManager from '@/components/organisms/AdminImageManager.vue';
import { useAdminImages } from '@/composables/useAdminImages.js';
const route = useRoute();
const inventoryItemId = route.params.id;
const { images, isLoading, isSaving, error, load, upload, reorder, setPrimary, updateAltText, retry, remove } = useAdminImages(inventoryItemId);
onMounted(load);
</script>
<template>
<main class="detail-page">
<RouterLink class="detail-back" :to="{ name: 'catalog' }">Back to catalog</RouterLink>
<p class="catalog-kicker">Admin inventory</p>
<h1>Manage images</h1>
<p v-if="isLoading" class="catalog-state" role="status">Loading images...</p>
<p v-else-if="error" class="catalog-state catalog-state--error" role="alert">{{ error.message }}</p>
<AdminImageManager
v-else
:images="images"
:processing-status="isSaving ? 'PROCESSING' : (images[0]?.processingStatus ?? 'COMPLETED')"
@upload="upload"
@reorder="reorder($event.id, $event.sortOrder)"
@primary="setPrimary"
@alt-text="updateAltText(images[0]?.id, $event)"
@retry="retry(images[0]?.id)"
@delete="remove"
/>
</main>
</template>