← back to IWasCute

src/app/licensor/page.tsx

96 lines

'use client'

import { useState } from 'react'
import Stepper from '@/components/licensor/Stepper'
import PhotoUpload from '@/components/licensor/PhotoUpload'
import CopyrightInfo from '@/components/licensor/CopyrightInfo'
import LikenessRelease from '@/components/licensor/LikenessRelease'
import ReviewSubmit from '@/components/licensor/ReviewSubmit'
import type { PhotoFile } from '@/components/licensor/PhotoUpload'
import type { CopyrightData } from '@/components/licensor/CopyrightInfo'
import type { LikenessData } from '@/components/licensor/LikenessRelease'

const TOTAL_STEPS = 4

function todayISOString() {
  const d = new Date()
  return d.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })
}

export default function LicensorPage() {
  const [step, setStep] = useState(0)

  // Step 1 — Photos
  const [photos, setPhotos] = useState<PhotoFile[]>([])

  // Step 2 — Copyright
  const [copyrightInfo, setCopyrightInfo] = useState<CopyrightData>({
    photographer: '',
    relationship: '',
    year: '',
    hasPermission: '',
    estateRights: false,
    applyToAll: true,
  })

  // Step 3 — Likeness
  const [likenessRelease, setLikenessRelease] = useState<LikenessData>({
    isSubject: false,
    isAdult: false,
    editorial: false,
    commercial: false,
    aiTraining: false,
    signature: '',
    date: todayISOString(),
  })

  const next = () => setStep((s) => Math.min(s + 1, TOTAL_STEPS - 1))
  const back = () => setStep((s) => Math.max(s - 1, 0))

  return (
    <div className="px-4 py-8 md:px-8 md:py-12 max-w-2xl mx-auto">
      {/* Stepper */}
      <Stepper currentStep={step} />

      {/* Step content */}
      <div className="mt-8">
        {step === 0 && (
          <PhotoUpload
            photos={photos}
            onPhotosChange={setPhotos}
            onNext={next}
          />
        )}

        {step === 1 && (
          <CopyrightInfo
            photos={photos}
            copyrightInfo={copyrightInfo}
            onCopyrightChange={setCopyrightInfo}
            onNext={next}
            onBack={back}
          />
        )}

        {step === 2 && (
          <LikenessRelease
            likenessRelease={likenessRelease}
            onLikenessChange={setLikenessRelease}
            onNext={next}
            onBack={back}
          />
        )}

        {step === 3 && (
          <ReviewSubmit
            photos={photos}
            copyrightInfo={copyrightInfo}
            likenessRelease={likenessRelease}
            onBack={back}
          />
        )}
      </div>
    </div>
  )
}