```python
from typing import List

def crate_fill(items: int, crates: int) -> List[int]:
    if items < 0:
        raise ValueError("Number of items must be non-negative")
    if crates <= 0:
        return []

    # Calculate the base size for each crate and any leftover items
    base_size = items // crates
    leftover_items = items % crates

    # Create a list to hold the sizes of each crate
    sizes = [base_size] * crates

    # Distribute the leftover items to the leading crates
    for i in range(leftover_items):
        sizes[i] += 1

    return sizes

def crate_total(sizes: List[int]) -> int:
    return sum(sizes)
```