Truncar o final de uma string em R após um caractere que pode estar presente zero ou mais vezes

Eu tenho os seguintes dados:

temp<-c("AIR BAGS:FRONTAL" ,"SERVICE BRAKES HYDRAULIC:ANTILOCK",
    "PARKING BRAKE:CONVENTIONAL",
    "SEATS:FRONT ASSEMBLY:POWER ADJUST",
    "POWER TRAIN:AUTOMATIC TRANSMISSION",
    "SUSPENSION",
    "ENGINE AND ENGINE COOLING:ENGINE",
    "SERVICE BRAKES HYDRAULIC:ANTILOCK",
    "SUSPENSION:FRONT",
    "ENGINE AND ENGINE COOLING:ENGINE",
    "VISIBILITY:WINDSHIELD WIPER/WASHER:LINKAGES")

Gostaria de criar um novo vetor que retenha apenas o texto antes do primeiro ":" nos casos em que um ":" esteja presente e a palavra inteira quando ":" não esteja presente.

Eu tentei usar:

temp=data.frame(matrix(unlist(str_split(temp,pattern=":",n=2)), 
+                        ncol=2, byrow=TRUE))

mas não funciona nos casos em que não há ":"

Eu sei que esta pergunta é muito semelhante a:Truncar string de um determinado caractere em Rque usou:

sub("^[^.]*", "", x)

Mas eu não estou muito familiarizado com expressões regulares e tenho lutado para reverter esse exemplo para manter apenas o começo da string.

questionAnswers(5)

yourAnswerToTheQuestion