```python
from typing import List

def oxford_join(names: List[str]) -> str:
    """
    Join a list of names into one phrase.
    Two names are joined by the word "and".
    Three or more names take a comma between every pair but the last, which takes the word "and".
    One name stands alone and no names at all give empty text.
    """
    if not names:
        return ""
    
    if len(names) == 1:
        return names[0]
    
    if len(names) == 2:
        return " and ".join(names)
    
    return ", ".join(names[:-1]) + " and " + names[-1]
```