ContentTypeStep: fix role/aria conflict and replace emoji with Lucide icons

Open Beginner friendly
#25 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
1/5
Estimated time
1-3 hours
Newbie friendliness
94/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active

Research direction

Start in frontend/src/components/onboarding/ContentTypeStep.tsx, reading the icon definitions and card button rendering, then review .claude/skills/frontend-conventions. Run npx next lint and npm run build, and verify the onboarding cards in light and dark mode with no remaining emoji or role-supports-aria-props warning.

Written by the indexing model from the issue text.

Description

accessibility good first issue ui
Context

The onboarding content-type cards declare role="checkbox" and aria-checked but also set aria-pressed. aria-pressed is not valid on a checkbox, and jsx-a11y/role-supports-aria-props flags it. The cards also use emoji as icons, which goes against the house rule "Lucide icons only, no emoji in UI" (CLAUDE.md → Brand).

Where
  • frontend/src/components/onboarding/ContentTypeStep.tsx:81-96: <button … aria-pressed={isSelected} role="checkbox" aria-checked={isSelected}>
  • ContentTypeStep.tsx:10, 16, 22, 28, 34, 40: icon: '📱' | '🎬' | '✍️' | '🔀' | '📊' | '🎓'
  • the icon is rendered inside a <span role="img" aria-hidden> further down the same file
What to do
  1. Remove aria-pressed from the button and keep role="checkbox" + aria-checked.
  2. Change the icon field to a Lucide component (for example Smartphone, Clapperboard, PenLine, Shuffle, BarChart3, GraduationCap) and render it with aria-hidden="true". Drop the role="img" span.
  3. See the frontend-conventions skill in .claude/skills/ for the icon and colour conventions.
Acceptance criteria
  • npx next lint reports no role-supports-aria-props warning for this file
  • No emoji code points remain in ContentTypeStep.tsx
  • Screenshot of the onboarding step in light and dark mode attached
  • npm run build passes
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.