feat(dialog): add dialog functionality