Files
ComfyUI_frontend/src/components/templatePublishing/steps/preview/PreviewSection.vue
John Haugeland 8361122586 feat: developer profile dashboard, preview asset uploads, and publishing refinements
Add developer profile dialog with editable handle lookup, download
history chart (Chart.js with weekly/monthly downsampling), star ratings,
review cards, and template list. The handle input allows browsing other
developers' profiles via debounced stub service dispatch.

Add preview asset upload system for template publishing step 4:
thumbnail, before/after comparison, workflow graph, optional video, and
gallery of up to 6 images. Uploads are cached in-memory as blob URLs
via a module-level singleton composable (useTemplatePreviewAssets).

Add reusable TemplateAssetUploadZone component, PreviewField/
PreviewSection sub-components, and templateScreenshotRenderer for
generating workflow graph previews from LGraph instances.

Internationalize command labels, add workflow actions menu entry for
template publishing, and extend marketplace types with CachedAsset,
DownloadHistoryEntry, and developer profile models.

Bump version to 1.45.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:44:48 -08:00

39 lines
940 B
Vue

<!--
A collapsible section in the preview step, showing a heading with an
"Edit" button that navigates back to the originating step.
-->
<template>
<section class="flex flex-col gap-3">
<div
class="flex items-center justify-between border-b border-border-default pb-1"
>
<h3 class="text-sm font-semibold text-muted">{{ label }}</h3>
<button
type="button"
class="flex items-center gap-1 text-xs text-muted-foreground hover:text-base-foreground"
@click="emit('edit')"
>
<i class="icon-[lucide--pencil] h-3 w-3" />
{{ t('templatePublishing.steps.preview.editStep') }}
</button>
</div>
<div class="flex flex-col gap-3 pl-1">
<slot />
</div>
</section>
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
defineProps<{
label: string
}>()
const emit = defineEmits<{
edit: []
}>()
const { t } = useI18n()
</script>