import React from 'react' import { usePage } from '@inertiajs/react' import DocsCallout from '../../components/docs/DocsCallout' import DocsComparisonTable from '../../components/docs/DocsComparisonTable' import DocsFaqAccordion from '../../components/docs/DocsFaqAccordion' import DocsSection from '../../components/docs/DocsSection' import DocsSidebarNav from '../../components/docs/DocsSidebarNav' import DocsStepList from '../../components/docs/DocsStepList' import QuickstartNextSteps from '../../components/docs/QuickstartNextSteps' import SeoHead from '../../components/seo/SeoHead' import { BEST_PRACTICES, COMMON_MISTAKES, CREDIT_BULLETS, CREDIT_EXAMPLE, DRAFT_FLOW_ITEMS, FAQ_ITEMS, FILE_METADATA_ITEMS, HERO_METRICS, PREP_ITEMS, PUBLISH_FLOW_ITEMS, RELATED_HELP_ITEMS, SECTION_ITEMS, TROUBLESHOOTING_ITEMS, UPLOAD_COMPARISON_COLUMNS, UPLOAD_COMPARISON_ROWS, WORKFLOW_STEPS, } from './uploadHelpContent' function HeroMetric({ label, value, note }) { return (
{label}
{value}

{note}

) } function BulletGrid({ items, tone = 'sky' }) { const dotColor = tone === 'amber' ? 'bg-amber-300' : tone === 'emerald' ? 'bg-emerald-300' : 'bg-sky-300' return (
{items.map((item) => (
{item}
))}
) } function TroubleCard({ item, links }) { return (

{item.title}

{item.body}

{item.linkLabel}
) } export default function UploadHelpPage() { const { props } = usePage() const links = props.links || {} const jsonLd = [ { '@context': 'https://schema.org', '@type': 'Article', headline: 'Upload Help', description: props.description, url: props.seo?.canonical, author: { '@type': 'Organization', name: 'Skinbase', }, about: ['Upload workflow', 'Drafts', 'Publishing', 'Contributor credit', 'Group uploads'], }, { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: FAQ_ITEMS.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer, }, })), }, ] const relatedHelpItems = RELATED_HELP_ITEMS.map((item) => ({ ...item, href: links[item.linkKey], })) return (

Upload help

Uploading on Skinbase is a guided workflow, not just a raw file submission.

This page explains how uploads move from file submission to draft, review, and final publish. It is designed to help you upload confidently, prepare the right details in advance, avoid common context mistakes, and understand what to do when something feels stuck.

{HERO_METRICS.map((metric) => ( ))}
Drafts reduce rushed submissions. They give you a chance to review context, metadata, previews, and contributor credit before the upload becomes public.
The wrong context can turn a correct upload into the wrong public record. Check whether the work belongs to you or to a Group before the final step. If the upload involves shared ownership, contributor credit, or review queues, the Groups guide is the next best place to clarify how the upload should behave.
If something still feels unclear, stop and review it before publishing. A short pause now is cheaper than cleaning up a public mistake later.

Simple example

{CREDIT_EXAMPLE.map((entry) => (
{entry.label}
{entry.value}
))}
{TROUBLESHOOTING_ITEMS.map((item) => ( ))}
) }