The upload suite now wraps the vendored CIBG file-upload classes instead of hand-rolling from tokens: - file-input becomes a .file-picker-drop-area with drag-and-drop + a real .btn-upload button and a visually-hidden, focusable <input>; renders an always-visible instruction (allowed types + max size) linked to the input via aria-describedby (pattern requirement). - The file list is a semantic ul.file-list; single-upload is an li[app-single-upload] .file-container (native <li> child) with .actions (retry/.icon-remove) + progress; document-chip renders the .file block (status glyph, .file-name link, .file-meta size/status). - Category validation moves ABOVE the block as .upload-validation > .feedback. - Instruction text uses the default (not subtle) foreground for WCAG AA contrast on the grey drop-area. DocumentUpload's public inputs/outputs are unchanged — both wizards keep working. GREEN: lint, tokens, 181 tests, build, 137 axe stories. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.9 MiB
4.9 MiB