interface DropdownProps<TOption> {
  options: ReadonlyArray<TOption>;
  onSelection: (option: TOption) => void;
}

function Dropdown<TOption> ({ options, onSelection }: DropdownProps<TOption>) {

  return (
    // implementation skipped for article clarity
  )
}