feat: adaptive web components