feat: add adaptive web components