A component "grade" is a form of type definition: a name for a particular collection of default configuration options. When defining the functionality of a component, sometimes a grade is appropriate, sometimes a subcomponent is appropriate.

When should you use grades, and when should you use subcomponents?

The question "When to use grades, when to use subcomponents?" is similar to "When to use inheritance, when composition?" and can be answered by the same 'has a'/'is a' comparison: