Stax, 2023 bytes
ÿ(,╥-║)♂^:Mxä²çα₧<v▬⌡G'5h!M╩EV[Ez ▼>≈<S⌡⌡0`
Run and debug itRun and debug it
Unpacked, ungolfed, and commented, it looks like this.
" vibgyor" string literal
,8*7/^ input * 8 / 7 + 1
:m increment input, then repeat literal to that length
|] get all prefixes
Mr rectangularize, transpose array of arrays, then reverse
this is the same as rotating counter-clockwise
m map over each row with the rest of the program, then implicitly output
the stack starts with just the row itself
_h push the first character of the row
_r push the reversed row
L wrap the entire stack in a single array