Coursework hand-in, like a learning platform: attach work, turn it in, unsubmit to make changes. Shows the deadline and flags late work.
"use client"
import * as React from "react"
import { toast } from "sonner"
import { AssignmentSubmission } from "@/components/assignment-submission"
export default function AssignmentSubmissionExample() {
// Due in two days, fixed at mount so it doesn't change on re-render.
const [due] = React.useState(() => new Date(Date.now() + 2 * 86_400_000))
return (
<div className="w-full max-w-md">
<AssignmentSubmission
due={due}
onSubmit={async (files) => {
await new Promise((resolve) => setTimeout(resolve, 600))
toast.success(`Turned in ${files.length} files`)
}}
/>
</div>
)
}
Installation
npx shadcn@latest add @uploadcn/assignment-submissionUsage
import { AssignmentSubmission } from "@/components/assignment-submission"<AssignmentSubmission
title="Essay: The Industrial Revolution"
due={new Date("2026-11-01T23:59:00")}
onSubmit={(files) => turnIn(files)}
/>The countdown renders on the client only, so server and client HTML always match.
Props
Prop
Type