Mosaic is a collection of component interfaces which allow the end user complete control over which components to use and which implementations.
This in turn provides great flexibility and reduces coupling between the application and libraries.
By using Mosaic, a project can enjoy clear, user focused components that will always maintain compatibility with the surrounding ecosystem, without choosing a full-stack solution that could limit the application's options