Render Mode 3
Individual Components
Every ComposeKit plugin is also a standalone React component. Import only what you need — no renderer, no widget ID, no CDN. You own the layout; ComposeKit provides the components. This mode is fully tree-shakeable.
Most components are built on top of Radix UI primitives and shadcn/ui, styled with Tailwind CSS v4. The Chart component is powered by Recharts. Additional components will be added in future releases.
Available components
| Component | Import path | Category | Since |
|---|---|---|---|
ComposeKitButton | @brainpiper/composekit/button | Actions | 0.0.1-beta.1 |
ComposeKitButtonGroup | @brainpiper/composekit/button-group | Actions | 0.0.1-beta.1 |
ComposeKitOverlay | @brainpiper/composekit/overlay | Actions | 0.0.1-beta.1 |
ComposeKitInput | @brainpiper/composekit/input | Form | 0.0.1-beta.1 |
ComposeKitTextarea | @brainpiper/composekit/textarea | Form | 0.0.1-beta.1 |
ComposeKitSelect | @brainpiper/composekit/select | Form | 0.0.1-beta.1 |
ComposeKitRadioGroup | @brainpiper/composekit/radio-group | Form | 0.0.1-beta.1 |
ComposeKitToggle | @brainpiper/composekit/toggle | Form | 0.0.1-beta.1 |
ComposeKitHeading | @brainpiper/composekit/heading | Display | 0.0.1-beta.1 |
ComposeKitParagraph | @brainpiper/composekit/paragraph | Display | 0.0.1-beta.1 |
ComposeKitBadge | @brainpiper/composekit/badge | Display | 0.0.1-beta.1 |
ComposeKitAlert | @brainpiper/composekit/alert | Display | 0.0.1-beta.1 |
ComposeKitAvatar | @brainpiper/composekit/avatar | Display | 0.0.1-beta.1 |
ComposeKitImage | @brainpiper/composekit/image | Display | 0.0.1-beta.1 |
ComposeKitSeparator | @brainpiper/composekit/separator | Display | 0.0.1-beta.1 |
ComposeKitCard | @brainpiper/composekit/card | Structure | 0.0.1-beta.1 |
ComposeKitSection | @brainpiper/composekit/section | Structure | 0.0.1-beta.1 |
ComposeKitAccordion | @brainpiper/composekit/accordion | Structure | 0.0.1-beta.1 |
ComposeKitTabs | @brainpiper/composekit/tabs | Structure | 0.0.1-beta.6 |
ComposeKitStepper | @brainpiper/composekit/stepper | Structure | 0.0.1-beta.6 |
ComposeKitToast | @brainpiper/composekit/toast | Actions | 0.0.1-beta.6 |
ComposeKitList | @brainpiper/composekit/list | Structure | 0.0.1-beta.1 |
ComposeKitCarousel | @brainpiper/composekit/carousel | Structure | 0.0.1-beta.1 |
ComposeKitGrid | @brainpiper/composekit/grid | Structure | 0.0.1-beta.1 |
ComposeKitSpinner | @brainpiper/composekit/spinner | Feedback | 0.0.1-beta.6 |
ComposeKitTree | @brainpiper/composekit/tree | Structure | 0.0.1-beta.7 |
ComposeKitChart | @brainpiper/composekit/chart | Charts | 0.0.1-beta.2 |
ComposeKitPagination | @brainpiper/composekit/pagination | Structure | 0.0.1-beta.10NEW |
ComposeKitNavigationMenu | @brainpiper/composekit/navigation-menu | Structure | 0.0.1-beta.10NEW |
ComposeKitSidebar | @brainpiper/composekit/sidebar | Structure | 1.0.8 |
Import
MyPage.tsx
// Import only what you need — fully tree-shakeable
import { ComposeKitButton } from '@brainpiper/composekit/button';
import { ComposeKitInput } from '@brainpiper/composekit/input';
import { ComposeKitSelect } from '@brainpiper/composekit/select';
import { ComposeKitToggle } from '@brainpiper/composekit/toggle';
import { ComposeKitChart } from '@brainpiper/composekit/chart';
import { ComposeKitTabs } from '@brainpiper/composekit/tabs';
import { ComposeKitStepper } from '@brainpiper/composekit/stepper';
import { ComposeKitToast } from '@brainpiper/composekit/toast';
import { ComposeKitSpinner } from '@brainpiper/composekit/spinner';
import { ComposeKitTree } from '@brainpiper/composekit/tree';
// ... any of the available componentsNo init required
ProfileForm.tsx
// No ComposeKitClient.init() needed.
// No widgetId, no CDN fetch, no layout descriptor.
import { ComposeKitButton } from '@brainpiper/composekit/button';
import { ComposeKitInput } from '@brainpiper/composekit/input';
function ProfileForm() {
return (
<form>
<ComposeKitInput label="Name" dataPath="profile.name" />
<ComposeKitInput label="Email" type="email" dataPath="profile.email" />
<ComposeKitButton label="Save" variant="default" />
</form>
);
}Live demos
Edit the code on the left — the preview updates live on the right.