add a list component that dynamically generates its items from data