Design library

This extracts the reusable widgets from the application app out to a shared directive, and adds a pattern library to demonstrate their usage.