factored out partial for card grid