Core philosophy: Compose First
"More lines now, less pain later."
🧱 Composition comes first
- Build headless and composable components.
- Work with
Root, Trigger, Content, Control, etc.
- Give devs the power to build what they need, how they need it.
Composition is the natural path to maintain freedom, control, and scalability. Developers have the autonomy to build simple or complex structures with clarity.
📦 Wrappers are shortcuts, not crutches
Create wrappers only when they truly make sense. A wrapper should:
- Be a shortcut for something that repeats frequently;
- Avoid duplicated boilerplate or logic;
- Be built on top of the composable version, never replacing it;
"If you copy and paste the same combo 3 times, it's time to give it a name."
Checklist before creating a wrapper:
- ✅ Has this pattern been repeated 3 times or more?
- ✅ Is the structure stable (not changing every week)?
- ✅ Is the internal logic always the same?
- ✅ Can the composable version still be used?