feat(widget): create widget