The library
93 components the model already knows.
Every one is a real, registered web component — the raw vocabulary your agents compose with, and the same elements a human would hand-write.
cre8-buttoncre8-cardcre8-badgecre8-alertcre8-modalcre8-tablecre8-tabscre8-accordioncre8-selectcre8-date-pickercre8-multi-selectcre8-progress-metercre8-progress-stepscre8-gridcre8-herocre8-featurecre8-headercre8-footercre8-primary-navcre8-breadcrumbscre8-paginationcre8-tooltipcre8-popovercre8-dropdowncre8-checkbox-fieldcre8-radio-fieldcre8-tag-listcre8-skeleton-loadercre8-loading-spinnercre8-split-button+ 63 more
Live, not a screenshot
Rendered from the published package
The card below is real @tmorrow/cre8-react running in your browser — the same components an agent emits, rendering the same way they will in your app.
Loading live components…
Usage
Both renderers, same component
Web Components run anywhere. React wrappers exist for 72 of them when you want typed props and JSX.
<cre8-card> <cre8-badge text="Accessible" variant="success"></cre8-badge> <cre8-button text="Primary action" variant="primary"></cre8-button> </cre8-card>
import { Cre8Badge, Cre8Button, Cre8Card } from '@tmorrow/cre8-react' <Cre8Card> <Cre8Badge text="Accessible" variant="success" /> <Cre8Button text="Primary action" variant="primary" /> </Cre8Card>
Rendering these server-side? The React wrappers build on @lit/react, and importing one reaches customElements at module scope — so they run in the browser only. In Next.js, load them from a client component with dynamic(..., { ssr: false }). This very page does exactly that.