feat(theming): add theming

closes #442, thanks @skeemer