Bricks
Bricks are official UI building blocks copied into app code with bento add <brick>.
Responsibility
- Render reusable terminal UI components.
- Accept
WithTheme(t)and runtimeSetTheme(t)updates. - Remain copy-and-own so teams can adapt behavior safely.
Installable bricks (bento add)
surface- full-terminal paint surface with UV cell buffercard- content container (raised default or flat withFlat())bar- header/footer row with keybind cardsdialog- modal manager + confirm/custom/theme picker/command palettefilepicker- file and directory picker wrapperlist- scrollable list wrappertable- data table wrappertext- static text labelinput- single-line text fieldbadge- inline status labelkbd- command/label shortcut pairwordmark- themed heading blockselect- single-choice pickercheckbox- boolean toggleprogress- horizontal progress barpackage-manager- sequential install flow with spinner + progresstabs- tab row with keyboard inputtoast- stacked notificationsseparator- horizontal/vertical divider
v0.5.4 behavior notes
- Command palette action ordering is deterministic.
- Dialog lifecycle handling now uses explicit
dialog.OpenMsganddialog.CloseMsgflow events. app-shelltheme propagation updates footer, center deck, and dialog manager consistently.
Contract
- Bricks paint UI; they do not decide app-level orchestration or room geometry.
- Bricks do not import other bricks (guardrail-enforced).
- Brick APIs keep backward-compatible defaults where possible.