component/markdown: add markdown support