Hi @santoshbs ,
This is a difficult question that will come down to your data, what your application needs at the end of it, and how easily you can use rules to adjust between different annotation policies.
A good principle to keep in mind when thinking about language annotations is compositionality. The phrase "green onions" actually means a bit more than the sum of its parts. It doesn't just mean onions that are coloured green, like the phrase "green apples" does. Rather, green onions are what are also known as scallions or spring onions: https://www.google.com/search?q=green+onions&rlz=1C5CHFA_enAU930AU930&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiW3K7kgvbuAhWjyjgGHQWkADgQ_AUoAXoECBIQAw&biw=1444&bih=710
If you have modifiers that behave entirely compositionally, you probably want to leave those out of an entity annotation. One reason is that you can generally swap in a whole constituent instead of just a word if you're doing normal syntactic composition. For instance, consider the phrase "very light yellow, almost translucent". This can be swapped in most places you could use an adjective, so you can have "very light yellow, almost translucent onions".
If your policy had been to annotate colours as part of the entity, suddenly you're stuck annotating this huge phrase as an entity. But non-compositional phrases won't work like this, generally. They tend to be fixed phrases, because otherwise nobody would be able to learn what they mean. You can call scallions "green onions", but you can't call them "light jade onions", even though "light jade" means roughly "green".