UI in Vertical Slice uses the new system introduced with Unity 4.5. Nevertheless, this new system doesn't allow me to do all the things required, especially events are missing. This is why a widget system is coded inside Vertical Slice.
All wigets inherits from the class IWidget. Two widgets are available now : WidgetButton and WidgetImage. A prefab for the button is available in Assets/Data/Prefab/UI/Button. A widget manager is responsible of dispatching the events coming from the inputs to the widgets.
Only one widget manager has to present at any time in a scene. To do so, it is a singleton and can be accessed from everywhere. But it also needs to be updated so it also a mono behavior. As such, it needs to be in a game object.
The widget manager hold a stack of canvas. You can see a canvas as a modal window. The top canvas always has focus. It means only the widgets of the top canvas will receive the events.
The canvas as seen by the widget manager don't have to be Unity Canvas. They can be any game object containing widgets (as component or a component of children).
A widget is a control that can be showed in a canvas and handled by a widget manager. Widgets can handle event using the Connect/Send interface. Connect lets you execute a method everytime a event is received. Send is used to send an event to the widget.