Component Design: From Primitive to Product

How to design components that compose cleanly - slots, compound components, and the line between flexibility and chaos.