A widgets framework for AngularJS