Phase 4 — UI: composites slot migration + tests + a11y (0.0.11-alpha01)
Summary
Lands Phase 4 of the yalla-sdk v1.0 launch initiative. Core delivery is the ADR-017 string→slot migration across 8 composites. Plus AddressCard removal, test coverage for 7 previously-untested UI surfaces, and TopBar / LargeTopBar accessibility labels.
Version bump: 0.0.10-alpha01 → 0.0.11-alpha01.
ADRs
-
ADR-017: 8 composites migrated from
Stringparams to@Composable () -> Unitslots. Supersedes ADR-005's migration-plan note.
Breaking changes
-
ListItem,IconItem,NavigableItem,SelectableItem,PricingItem,AddressItem(both overloads),Navigable(drawer),EmptyState: alltitle/subtitle/description/text/name/price/placeholderString params now take@Composable () -> Unitslots.Navigable'stitleStyle+descriptionStyleparams removed — style is applied viaProvideTextStylewith callers overriding inside their slot. -
EmptyStateStatedata class deleted —EmptyStatetakes three separate slots. -
AddressCard+AddressCardColors+AddressCardDimens+AddressCardDefaultsremoved. No call sites in SDK or YallaClient.
Additive
- Structural-equality tests for 5 composites (Snackbar, SnackbarHost, Navigable, EmptyState, SectionBackground) + 2 primitives (TopBar, LargeTopBar).
-
navigationIconContentDescription: String? = nullon TopBar + LargeTopBar (screen-reader label for nav icon).
Lockstep
YallaClient PR for the Phase 4 migration is being prepared at chore/sdk-phase4-ui → dev (stacks on PR #305 for Phase 3). Link added once opened.
Deferred from this PR (→ follow-ups)
- Roborazzi scaffold: Phase 6 or dedicated follow-up; orthogonal to the ADR-017 breaking work.
- Full visual-regression goldens (hundreds of snapshots): separate capture phase.
- Full accessibility sweep beyond TopBar labels: post-1.0 quality pass.
Pre-1.0 mode
Full-risk: no @Deprecated, no @RequiresOptIn. Direct break.