Refactored widgets to use separate custom elements.