INDEX / 06
Maturity
One view of where all 73 components stand. Nothing on this page is maintained here: the phases come from the registry, the migration columns from.altitude/migration.json with their vocabulary read from.altitude/migration.schema.json, and the accessibility column from the same axe report each component's own checks panel reads.
A — is not a no. It means the row has no answer, and every row with one is listed at the foot of the page with the reason.
LIFECYCLE — 3 PHASESDECLARED BY EACH COMPONENT'S OWN STORY
V2 MIGRATION64 OF 73 TRACKED
STATEMEANSCOUNT
legacyun-migrated (CI rejects feature work)0
dualsupports old + new APIs, requires `expiry`0
scoped-completefully on the new model64
react19True once the React wrapper passes the contract tests on React 19.64 / 64
headlessTrue if the behavior has been extracted into a reactive controller (P5).0 / 64
ssrTrue if Declarative Shadow DOM + Lit SSR is wired and the SSR fixture renders + hydrates without FOUC.1 / 64
The compat budget in .altitude/migration.json allows the legacy aliases — v1 token names and tag suffixes — to be removed in 3.0.0. Until then both spellings resolve; after it, only the v2 one does.
ACCESSIBILITY72 MEASURED · 55 CLEAN · 17 OPEN
Measured means axe ran against this component; clean means it ran and found nothing. Neither is a certification — the screen-reader and keyboard rows on each component's page need a human, and a row nobody has recorded is counted as unrecorded here rather than as a pass.
THE MATRIX — 73 COMPONENTS● YES · ○ NO · — NO ANSWER
COMPONENTTIERLIFECYCLEMIGRATIONreact19headlessssrA11Y
Alertal-alertatomsundeclaredscoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Avataral-avataratomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Badgeal-badgeatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Banneral-bannermoleculesbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Buttonal-buttonatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Calendaral-calendaratomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Cardal-cardmoleculesbeta——react19: no answer—headless: no answer—ssr: no answernot measured Chipal-chipatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded CTA Bandal-cta-bandorganismsbeta——react19: no answer—headless: no answer—ssr: no answerclean · 2 unrecorded Dialogal-dialogmoleculesbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Divideral-divideratomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Draweral-drawermoleculesbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Footeral-footerorganismsbeta——react19: no answer—headless: no answer—ssr: no answerclean · 2 unrecorded Headeral-headerorganismsbeta——react19: no answer—headless: no answer—ssr: no answer1 open Headingal-headingatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Heroal-heroorganismsbeta——react19: no answer—headless: no answer—ssr: no answerclean · 2 unrecorded Iconal-iconatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Inputal-inputatomsbetascoped-complete●react19: yes○headless: no○ssr: no1 open Layoutal-layoutorganismsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Linkal-linkatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Listal-listmoleculesbetascoped-complete●react19: yes○headless: no○ssr: no1 open Logoal-logoatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Logo Wallal-logo-wallorganismsbeta——react19: no answer—headless: no answer—ssr: no answerclean · 2 unrecorded Marqueeal-marqueeorganismsbeta——react19: no answer—headless: no answer—ssr: no answerclean · 2 unrecorded Menual-menumoleculesbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Page Heroal-page-heroorganismsbeta——react19: no answer—headless: no answer—ssr: no answerclean · 2 unrecorded Popoveral-popovermoleculesbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Progressal-progressatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Radioal-radioatomsbetascoped-complete●react19: yes○headless: no○ssr: no1 open Rangeal-rangeatomsbetascoped-complete●react19: yes○headless: no○ssr: no1 open Searchal-searchmoleculesbetascoped-complete●react19: yes○headless: no○ssr: no1 open Selectal-selectatomsbetascoped-complete●react19: yes○headless: no○ssr: no1 open Skeletonal-skeletonatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Spinneral-spinneratomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Statal-statmoleculesbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Stepperal-steppermoleculesbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Tabal-tabatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Tableal-tablemoleculesbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Tabsal-tabsmoleculesbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Themeal-themeorganismsstablescoped-complete●react19: yes○headless: no●ssr: yesclean · 2 unrecorded Toastal-toastatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Toggleal-toggleatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded Tooltipal-tooltipatomsbetascoped-complete●react19: yes○headless: no○ssr: noclean · 2 unrecorded ROWS WITH NO MIGRATION ANSWER — 9WHY, RATHER THAN A BLANK
COMPONENTWHY
al-cardShips in @southleft/sl-web-components, a brand layer built on the v2 library — the v1→v2 migration does not apply to it.
al-cta-bandShips in @southleft/sl-web-components, a brand layer built on the v2 library — the v1→v2 migration does not apply to it.
al-footerShips in @southleft/sl-web-components, a brand layer built on the v2 library — the v1→v2 migration does not apply to it.
al-headerShips in @southleft/sl-web-components, a brand layer built on the v2 library — the v1→v2 migration does not apply to it.
al-heroShips in @southleft/sl-web-components, a brand layer built on the v2 library — the v1→v2 migration does not apply to it.
al-logo-wallShips in @southleft/sl-web-components, a brand layer built on the v2 library — the v1→v2 migration does not apply to it.
al-marqueeShips in @southleft/sl-web-components, a brand layer built on the v2 library — the v1→v2 migration does not apply to it.
al-page-heroShips in @southleft/sl-web-components, a brand layer built on the v2 library — the v1→v2 migration does not apply to it.
al-section-headerShips in @southleft/sl-web-components, a brand layer built on the v2 library — the v1→v2 migration does not apply to it.
.altitude/migration.json also tracks 3 components this design system does not document. It documents a declared subset of the shared library, so that is the normal case rather than a gap.