When components receive typed data through a clear boundary, the content source can move from a local repository to an API without leaking those details into presentation.
One interface, replaceable sources
The contract keeps components unaware of whether data comes from a fixture, CMS, or independent service. That lowers the cost of the next phase and keeps the system testable.
UI → View Model → Content Repository → Data Source