Walks imported from the Ramblers Walks Manager feed leave
fields.contactDetails.displayName empty, because Ramblers withholds
the leader name when has_email is true and exposes a contact-form URL
instead. hasWalkLeader was returning false in that case, hiding the
whole
hasWalkLeader now also returns true when groupEvent.walk_leader (or event_organiser for group events) has a Ramblers contact channel (has_email or email_form). The existing fallbackLabel="Contact Via Ramblers" then drives the link text on both the walk detail page and the card view.
Also surfaces the group on the collapsed card view (walk-card-view) by reusing EventGroupComponent in compact mode. To keep the row from wrapping at small widths, EventGroupComponent now omits the parenthesised group code when compact is true; the expanded view still shows "Name (CODE)".