Composition
Build interfaces from explicit component anatomy and application-owned layout without private coupling.
Compose outward from stable public parts
Brick owns finished components. Layout arranges them. Your application connects those surfaces to real product behavior.
Brick owns finished visual recipes.
Your app owns routes, data, and workflows.
Blocks begin only after a pattern repeats.
Compose through public parts
Compound components expose the regions that carry real semantic or visual responsibility. Use those parts directly rather than reaching into private markup.
The Grid owns page arrangement. Each Card owns its internal anatomy. Your application supplies the real project data and destination behavior.
Let each layer keep its job
Brick owns finished controls and visual composition. Blocks may later own reusable page assemblies. Your application owns routes, data, permissions, persistence, analytics, and domain workflows.
Prefer natural layout
Use Stack, Grid, Container, Surface, and ordinary CSS for page composition. Avoid wrapping every region in a Card merely to create separation; hierarchy should begin with content, typography, and spacing.
A useful rule is to choose the lightest owner that can express the requirement:
- use a Brick component for a finished interface element;
- use layout primitives or CSS to arrange a page;
- keep business state and effects in application code; and
- extract a larger assembly only after its contract repeats.
Extract after repetition
A complete header or settings section becomes a block candidate only after more than one product proves its content, responsive behavior, accessibility, customization, and framework boundary.