Web declarative component framework