Concrete is the Rubric Labs design system for AI-native product surfaces, editorial research, generative UI, and educational mockups.
This repo is a Bun monorepo:
packages/concrete- public React package@rubriclab/concreteapps/docs- Next app for foundations, primitives, components, and render routes
bun install
bun run dev
bun run check
bun run buildnpm install @rubriclab/concreteimport '@rubriclab/concrete/styles.css'
import { Button, Card, Badge } from '@rubriclab/concrete'
import { Composer } from '@rubriclab/concrete/components'
import { Button as PrimitiveButton } from '@rubriclab/concrete/primitives'The root export is the ergonomic default. Subpath exports are available when an app wants explicit primitive, component, registry, icon, or schema boundaries.
Concrete ships built ESM, declaration files, CSS, and SVG assets. It is intentionally ESM-only and keeps package subpaths small so application bundlers can tree-shake unused surfaces.
Pressure modes are creative direction and registry metadata. They are not universal primitive props.
CI runs on pull requests and pushes to main:
bun install --frozen-lockfile
bun run check
bun run build
bun run --cwd packages/concrete verify:publishPushing to main also runs the release workflow. The workflow compares packages/concrete/package.json with the published npm version, bumps to the next patch version when needed, updates packages/concrete/CHANGELOG.md and bun.lock, commits the release bump back to main, then dispatches the publish job.
The publish job verifies the package again and publishes packages/concrete with npm provenance:
npm publish --provenance --access publicPublishing expects npm trusted publishing to be configured for RubricLab/concrete and the Release Package GitHub Actions workflow.