Pandas Create New Column from Time Comparsion in Datetime Column

I have a datetime column that looks like this in my dataframe.

enter image description here

I want to create a new column with the following conditions. If the time is before 1100, the value in the new column is breakfast. If the time is from 1100 to 1445, the value is lunch. If the time is after 1445 to 1730, the value is tea. After 1730, the value is dinner.

This is my code.

def meal(row):
    if (row["InvoiceDate"].dt.time < pd.to_datetime("11:00:00").time()):
        meal="breakfast"
    elif (row["InvoiceDate"].dt.time >= pd.to_datetime("11:00:00").time())&(row["InvoiceDate"].dt.time <= pd.to_datetime("14:45:00").time()):
        meal="lunch"
    elif (row["InvoiceDate"].dt.time > pd.to_datetime("14:45:00").time())&(row["InvoiceDate"].dt.time <= pd.to_datetime("17:30:00").time()):
        meal="tea"
    else:
        meal="dinner"

df["meal"]=df.apply(lambda row:meal(row),axis=1)

When I ran the function above, I have an error message that states 'Timestamp' object has no attribute 'dt'.

So I removed dt from each of row["InvoiceDate"].dt.time. Then I got another error message that states '<' not supported between instances of 'builtin_function_or_method' and 'datetime.time'.

How should I go about this? Is there a better way to code out my meal function? Thank you.