composer require sugarcraft/candy-kitPHP port of charmbracelet/fang β opinionated CLI presentation helpers that turn ordinary command- line output into something that matches the rest of the SugarCraft stack. CandyKit is library-only β drop it into any Composer project, no Symfony Console requirement.
use SugarCraft\Kit\StatusLine;
use SugarCraft\Kit\Banner;
use SugarCraft\Kit\Theme;
echo Banner::title('CandyApp', 'v0.1.0'), "\n\n";
echo StatusLine::info('connecting to https://example.com'), "\n";
echo StatusLine::success('done in 0.4s'), "\n";
echo StatusLine::warn('disk almost full'), "\n";
echo StatusLine::error('connection refused'), "\n";Themeβ palette ofSprinkles\Styleobjects keyed by status level (success / error / warn / info / prompt / accent / muted).Theme::ansi()ships a sensible default; bring your own theme by passing styles to the constructor.StatusLineβsuccess/error/warn/infostatic helpers returning a glyph + message string styled per the active theme.Bannerβ render a bordered title block with optional subtitle, rounded by default. Useful for app intros /--versionoutput.Logoβ ASCII-art logo renderer withLogo::sugarcraft()built-in preset andLogo::fromAscii($art)for custom art. Chain->withColor($hex)to apply foreground color.Sectionβ styled section with title and body content, themeable.Stageβ multi-section presentation container.HelpTextβ formatted help output.Frameβ full-screen application chrome: a double-line box that fills the terminal exactly (Frame::new()->withTitle($bar) ->withStatus($bar)->render($body, $cols, $rows)), with a centred title bar, dividers, and a status bar. Normalises the body to a constant line count and pads ANSI-width-aware so it never overflows the terminal β safe for a TEA program whose frame-diff renderer owns the screen.
cd candy-kit && composer install && vendor/bin/phpunitPresenter output is pinned via candy-testing's assertGoldenAnsi golden-file
snapshots. Any change to the ANSI slide output must be intentional β re-record the
fixture with --update-golden to accept a new canonical render.



