Implement creator studio and upload updates

This commit is contained in:
2026-04-04 10:12:02 +02:00
parent 1da7d3bf88
commit 0b216b7ecd
15107 changed files with 31206 additions and 626514 deletions

View File

@@ -1,4 +1,5 @@
import React, { useCallback } from 'react'
import ArchiveScreenshotPicker from './ArchiveScreenshotPicker'
import ReadinessChecklist from './ReadinessChecklist'
import SchedulePublishPicker from './SchedulePublishPicker'
import Checkbox from '../../Components/ui/Checkbox'
@@ -36,6 +37,8 @@ export default function PublishPanel({
primaryPreviewUrl = null,
isArchive = false,
screenshots = [],
selectedScreenshotIndex = 0,
onSelectedScreenshotChange,
// Metadata
metadata = {},
// Readiness
@@ -64,8 +67,6 @@ export default function PublishPanel({
}) {
const pill = STATUS_PILL[machineState] ?? null
const hasPreview = Boolean(primaryPreviewUrl && !isArchive)
const hasAnyPreview = hasPreview || (isArchive && screenshots.length > 0)
const previewSrc = hasPreview ? primaryPreviewUrl : (screenshots[0]?.preview ?? screenshots[0] ?? null)
const title = String(metadata.title || '').trim()
const hasTitle = Boolean(title)
@@ -126,9 +127,9 @@ export default function PublishPanel({
<div className="flex items-start gap-3">
{/* Thumbnail */}
<div className="shrink-0 h-[72px] w-[72px] overflow-hidden rounded-xl ring-1 ring-white/10 bg-black/30 flex items-center justify-center">
{previewSrc ? (
{hasPreview ? (
<img
src={previewSrc}
src={primaryPreviewUrl}
alt="Artwork preview"
className="max-h-full max-w-full object-contain"
loading="lazy"
@@ -162,6 +163,19 @@ export default function PublishPanel({
</div>
</div>
{isArchive && screenshots.length > 0 && (
<div className="rounded-2xl border border-white/8 bg-white/[0.03] p-3">
<ArchiveScreenshotPicker
screenshots={screenshots}
selectedIndex={selectedScreenshotIndex}
onSelect={onSelectedScreenshotChange}
compact
title="Preview screenshot"
description="Choose which screenshot should represent this archive in the publish panel."
/>
</div>
)}
{/* Divider */}
<div className="border-t border-white/8" />