Let's design a comment thread component hierarchy.
Top level:
CommentSection
├── CommentList
│ └── CommentItem (recursive for replies)
│ ├── Avatar
│ ├── CommentContent
│ └── CommentActions
├── CommentInput
└── LoadMoreButton
Key decisions:
- CommentItem handles its own replies (recursive)
- Avatar is reusable across the app
- CommentActions handles like/reply callbacks
- CommentInput is controlled by parent
This hierarchy shows clear boundaries and single responsibilities.