Create accessibility migration analysis docs for 2nd-gen component migration. Use when on the "analyze accessibility" step for one or more components.
Create comprehensive accessibility documentation for the analyze accessibility step of 2nd-gen component migration. One markdown file per component, following a fixed structure (ARIA context, recommendations, testing, checklist, references).
CONTRIBUTOR-DOCS/03_project-planning/03_components/[component-name]/accessibility-migration-analysis.md./rendering-and-styling-migration-analysis.md from Overview → Also read## / ### headings, run node update-nav.js from CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs. Register the doc in 03_components/README.md when introducing a new component folder.Use these existing docs when matching structure, headings, tables, and phrasing:
CONTRIBUTOR-DOCS/03_project-planning/03_components/badge/accessibility-migration-analysis.mdCONTRIBUTOR-DOCS/03_project-planning/03_components/divider/accessibility-migration-analysis.mdCONTRIBUTOR-DOCS/03_project-planning/03_components/progress-circle/accessibility-migration-analysis.mdCONTRIBUTOR-DOCS/03_project-planning/03_components/status-light/accessibility-migration-analysis.mdUse this H2 order. Do not skip sections that apply; omit only what truly does not apply (and say so briefly if it helps readers).
## Overview## ARIA and WCAG context## Recommendations: \<swc-component-name>``## Testing with ### Automated tests## Summary checklist## ReferencesUnder ## Recommendations, use these ### subsections in order:
### ARIA roles, states, and properties### Shadow DOM and cross-root ARIA Issues### Accessibility tree expectations### Assistive technology, live regions — place after accessibility tree expectations and before keyboard and focus. For motion (WCAG 2.2.2, reduced motion, Spectrum tokens), add rows to Guidelines that apply and the Recommendations table instead of a separate ### Motion section — see progress-circle/accessibility-migration-analysis.md.### Keyboard and focusSeparate major sections with a horizontal rule (---) where existing docs use it (after Overview, after ARIA and WCAG context, after Recommendations block before Testing).
swc-* name, and WCAG 2.2 Level AA as the target.### subheadings for structured bits — do not use bold-only labels like **Also read:** as section titles.Typical subheadings (include what fits the component):
| Subheading | Use when |
|---|---|
### Also read | Always — point at the component's rendering-and-styling-migration-analysis.md (and optional related a11y docs). |
### What it is or ### What a <noun> is | Always — one clear definition. |
### When to use something else | When authors often confuse this with another component — link to other migration or a11y docs with relative paths. |
### What it is not | When a common mistaken identity exists (e.g. progress ring vs in-field spinner). |
### Related | Optional — related components (e.g. progress bar vs progress circle). |
### Pattern in the APG — bullets: how APG (or lack of a named pattern) relates to this widget; link to APG patterns when relevant.### Guidelines that apply — a table with columns Idea and Plain meaning (WCAG / WAI-ARIA links in the first column as needed).### Guidelines that apply (not "Guidelines that still apply") for consistency across components.**Bottom line:** … before ---.Use a table (Topic | What to do).
Single semantic role policy (always address):
separator, progressbar): State that the role is prescribed and fixed, must not be author-overridable in implementation or docs, and that swc-* maps to one semantic role only. If another role is needed, authors must use different markup or a different component — not a role override on this element.role (e.g. button, progressbar) to fake another widget — use the appropriate button / link / tag / other component instead.Then add rows for name, states, properties, visual-only props, docs expectations, etc., verified against the real implementation.
### Shadow DOM and cross-root ARIA Issues (word Issues capitalized).aria-labelledby / aria-describedby pointing at shadow-only IDs) and it is not a form-associated control, the entire body of the subsection should be a single word: None (no extra sentences).ElementInternals, aria-* delegation, proposed ID strategies).When the component or its docs touch live regions or frequent status updates:
aria-live="assertive" for loading or routine progress.aria-live="polite" as rare: polite regions still queue speech, and several components or regions updating together becomes noisy (bursts, backlog). Prefer native role semantics (e.g. progressbar) and one primary message for related loaders when possible.See progress-circle/accessibility-migration-analysis.md for a full example.
If the component is not focusable in its default, supported use: the subsection must contain only this sentence:
**Not focusable.** Keyboard navigation should skip this component and move to the next focusable element.
If the component is focusable or has a keyboard pattern: replace with accurate, component-specific guidance (Tab order, keys, roving tabindex, focus trap, etc.).
- [ ]) of concrete, verifiable items (stories, docs, tree, focus, tooling).update-nav.js after heading or structure changes.rendering-and-styling-migration-analysis.md, not this file.