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