Revamp scenic playback and operator workflow

This commit is contained in:
2026-04-09 22:30:32 -07:00
parent 3e88449fcb
commit 7150c67e33
13 changed files with 4157 additions and 4743 deletions
@@ -6,9 +6,7 @@ export interface SubmissionFormState {
caption: string;
promptAnswer: string;
allowArchive: boolean;
hasRights: boolean;
allowProjection: boolean;
acknowledgePublicPerformance: boolean;
consentAccepted: boolean;
file: File | null;
}
@@ -17,9 +15,7 @@ const initialState: SubmissionFormState = {
caption: "",
promptAnswer: "",
allowArchive: false,
hasRights: false,
allowProjection: false,
acknowledgePublicPerformance: false,
consentAccepted: false,
file: null
};
@@ -46,9 +42,9 @@ export const useSubmissionForm = () => {
return;
}
if (!state.hasRights || !state.allowProjection || !state.acknowledgePublicPerformance) {
if (!state.consentAccepted) {
setStatusTone("error");
setStatus("Please review and accept the required consent items.");
setStatus("Please review and accept the consent note.");
return;
}
@@ -60,7 +56,13 @@ export const useSubmissionForm = () => {
try {
await createSubmission(
{
...state,
displayName: state.displayName,
caption: state.caption,
promptAnswer: state.promptAnswer,
allowArchive: state.allowArchive,
hasRights: true,
allowProjection: true,
acknowledgePublicPerformance: true,
file
},
(nextProgress) => setProgress(nextProgress)
+9 -23
View File
@@ -10,8 +10,7 @@ export const SubmissionRoute = () => {
<p className="submission-kicker">Good Grief</p>
<h1 className="submission-title">Offer a photo to tonight&apos;s memory field.</h1>
<p className="submission-copy">
Share one image that carries memory, witness, humor, or tenderness for you. The creative team will
review each submission. Not every image will appear, and none will be shown without moderation.
Share one image that carries memory, witness, humor, or tenderness for a loved one that has passed.
</p>
</section>
@@ -23,11 +22,11 @@ export const SubmissionRoute = () => {
<input
id="file"
type="file"
accept="image/jpeg,image/png,image/heic,image/heif"
accept="image/jpeg,image/png,image/webp,image/heic,image/heif,.jpg,.jpeg,.png,.webp,.heic,.heif"
onChange={(event) => updateField("file", event.target.files?.[0] ?? null)}
/>
<p className="submission-status">
One image only. Common phone photos work best. Unsupported files will be declined.
One image only. Common phone photos work best. Unsupported files don&apos;t work in the system.
</p>
</div>
</div>
@@ -72,26 +71,13 @@ export const SubmissionRoute = () => {
<label className="submission-checkbox">
<input
type="checkbox"
checked={state.hasRights}
onChange={(event) => updateField("hasRights", event.target.checked)}
checked={state.consentAccepted}
onChange={(event) => updateField("consentAccepted", event.target.checked)}
/>
<span>I have the right to share this photo, and I understand it may be declined.</span>
</label>
<label className="submission-checkbox">
<input
type="checkbox"
checked={state.allowProjection}
onChange={(event) => updateField("allowProjection", event.target.checked)}
/>
<span>I consent to this image being used in a live theatrical performance.</span>
</label>
<label className="submission-checkbox">
<input
type="checkbox"
checked={state.acknowledgePublicPerformance}
onChange={(event) => updateField("acknowledgePublicPerformance", event.target.checked)}
/>
<span>I understand this is a public performance setting and projection is not guaranteed.</span>
<span>
I have permission to share this photo and understand it may be used in a live public performance,
though projection is not guaranteed.
</span>
</label>
<label className="submission-checkbox">
<input