Associate visible labels with their fields in SceneCard and CartoonScriptStep

Open
#24 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
78/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
html, react, typescript

Research direction

Start with frontend/src/components/video/SceneCard.tsx, frontend/src/components/cartoon/CartoonScriptStep.tsx, and frontend/src/components/video/ScriptStep.tsx to map each visible label to its field and identify controls that need aria-label. Use React useId() to generate unique IDs while preserving existing styling, then verify label clicks focus the intended controls. Run e2e/wizard-script-parse.spec.ts, npm run lint, and npm run build; completion means every listed control is associated and named accessibly without breaking existing placeholder-based selection.

Written by the indexing model from the issue text.

Description

accessibility good first issue ui
Context

The video and cartoon wizards show visible <label> text, but none of these labels has an htmlFor, and the fields have no id. Clicking a label does not focus its field, and assistive tech does not get the field's name. These are the most-used fields in the app.

Where
  • frontend/src/components/video/SceneCard.tsx:106 (Narration label) → :109 textarea; :123 (Visual Prompt label) → :127 textarea; :177 Ken Burns <select>, which has no label at all
  • frontend/src/components/cartoon/CartoonScriptStep.tsx:150 → :153 (Topic); :164/:174/:184 → :165/:175/:185 (Tone / Length / Platform selects); :124 title input and :249 per-scene narration textarea have only a placeholder
  • frontend/src/components/video/ScriptStep.tsx:111: title input with only a placeholder
What to do
  1. Use React useId() (SceneCard renders once per scene, so ids must be unique) and connect each label to its field with htmlFor/id.
  2. For fields that have no visible label, add an aria-label ("Ken Burns motion", "Cartoon title", "Scene N narration", "Video title").
  3. Keep the existing styling.
Acceptance criteria
  • Clicking each visible label focuses its field
  • e2e/wizard-script-parse.spec.ts still passes (it selects fields by placeholder)
  • npm run lint and npm run build pass
Getting started

Read CONTRIBUTING.md for dev setup and the quality bar (no facades, evidence before done). Comment here to claim the issue.

Dominant language
TypeScript
Stars
0
Forks
3
Avg merge
1d 4h
Merged PRs (30d)
5

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from BeyondITL/contentine-create

All issues in BeyondITL/contentine-create

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.