
Product
Introducing Socket Firewall: Free, Proactive Protection for Your Software Supply Chain
Socket Firewall is a free tool that blocks malicious packages at install time, giving developers proactive protection against rising supply chain attacks.
@prokodo/ui
Advanced tools
UI components for production-grade Next.js + Headless CMS (Strapi, Contentful, Headless WordPress) websites by prokodo – built for Core Web Vitals & SEO.
Modern, customizable UI components built with React and TypeScript — developed by prokodo for high-performance web interfaces.
🇺🇸 Need help shipping a production Next.js + Headless CMS in 4–6 weeks?
prokodo — Next.js CMS agency → click here🇩🇪 Sie suchen eine Next.js Agentur (Strapi/Contentful/WP)?
prokodo — Next.js CMS Agentur → hier klicken
Adaptive Island Components (AIC) are fully modular and optimized for modern frameworks (Next.js, Remix, etc.).
Each component is built for lazy loading, works seamlessly with React Server Components (RSC), and can be tree-shaken out when unused.
Total bundle (all components): ~195 kB gzipped
This makes @prokodo/ui
ideal for modern SSR apps using Next.js or Remix, with excellent Time-to-Interactive (TTI) and Core Web Vitals.
⚠️ ESM-only: This package does not support CommonJS (
require()
).
pnpm add @prokodo/ui
# or
npm install @prokodo/ui
import { Button, type ButtonProps } from "@prokodo/ui/button";
export default function Layout() {
// Renders to HTML on the server with zero‐JS.
// On the client, it will hydrate when scrolled into view or the user interacts.
return <Button title="Click me"/>;
}
import { Button, type ButtonProps } from "@prokodo/ui/button";
export default function Layout() {
// Renders to HTML on the server with zero‐JS.
// On the client, it will hydrate when scrolled into view or the user interacts.
return <Button title="Click me"/>;
}
import { Button, type ButtonProps } from "@prokodo/ui/button";
export default function AboveTheFoldHero() {
// Because this lives above the fold, we want it to hydrate right away:
return <Button priority title="Welcome to prokodo"/>;
}
"use client";
import { Button, type ButtonProps } from "@prokodo/ui/button";
import { type FC, memo } from "react";
// In a pure‐client file, you can wrap the AIC export.
// The `priority` prop here ensures hydration runs immediately when mounted.
export const HeadlineClient: FC<ButtonProps> = memo((props) => {
return <Button {...props} priority />;
});
import { Headline, type ButtonProps } from "@prokodo/ui/button";
export default function GalleryPage() {
return (
<div style={{ height: "200vh" }}>
<p>Keep scrolling…</p>
<div style={{ marginTop: "100vh" }}>
{/* This will render as HTML on the server;
on the client, it only hydrates when this element scrolls into view. */}
<Button title="I hydrate when you see me"/>
</div>
</div>
);
}
Component | ✅ AIC (RSC + optional client) | ✅ SSR-Compatible ("use client" ) |
---|---|---|
Accordion | ✅ | ✅ |
Animated | ✅ | ✅ |
AnimatedText | ✅ | ✅ |
Avatar | ✅ | ✅ |
BaseLink | ✅ | ✅ |
Button | ✅ | ✅ |
Calendly | ✅ | ✅ |
Card | ✅ | ✅ |
Carousel | ✅ | ✅ |
Chip | ✅ | ✅ |
DatePicker | ✅ | ✅ |
Dialog | ✅ | ✅ |
Drawer | ✅ | ✅ |
DynamicList | ✅ | ✅ |
Form | ✅ | ✅ |
FormResponse | ✅ | – |
Grid/GridRow | ✅ | – |
Headline | ✅ | - |
Icon | ✅ | – |
Image | ✅ | – |
ImageText | ✅ | - |
Input | ✅ | ✅ |
Label | ✅ | – |
Link | ✅ | ✅ |
List | ✅ | – |
Loading | ✅ | – |
Lottie | ❌ | ✅ |
Map | ❌ | ✅ |
PostItem | ❌ (Experimental - Coming soon) | – |
PostTeaser | ❌ (Experimental - Coming soon) | – |
PostWidget | ❌ (Experimental - Coming soon) | – |
PostWidgetCarousel | ❌ (Experimental - Coming soon) | - |
ProgressBar | ✅ | ✅ |
Quote | ✅ | – |
RichText | ✅ | ✅ |
Select | ✅ | ✅ |
SideNav | ✅ | ✅ |
Skeleton | ✅ | – |
Slider | ✅ | ✅ |
Snackbar & Provider | ✅ | ✅ |
Stepper | ✅ | ✅ |
Switch | ✅ | ✅ |
Table | ✅ | – |
Teaser | ✅ | - |
Island architecture lets you render components on the server and hydrate them on the client only when needed.
import { createIsland } from '@prokodo/ui/createIsland';
import { NavbarServer } from './Navbar.server';
import type { NavbarProps } from './Navbar.model';
export const Navbar = createIsland<NavbarProps>({
name: 'Navbar',
Server: NavbarServer,
loadLazy: () => import('./Navbar.lazy'),
// Optional: Force client-side hydration as soon as someone uses an action
// We are automatically recognizing onChange, onKeyDown, ... events. Only needed for custom attributes.
isInteractive: (p: NavbarProps) => p.customEvent === true,
});
'use client'
import { createLazyWrapper } from '@prokodo/ui/createLazyWrapper';
import { NavbarClient } from './Navbar.client';
import { NavbarServer } from './Navbar.server';
import type { NavbarProps } from './Navbar.model';
export default createLazyWrapper<NavbarProps>({
name: 'Navbar',
Client: NavbarClient,
Server: NavbarServer,
// Optional: Defer hydration until the component becomes visible in the viewport (Default: true)
// Can be controlled by priority attribute.
hydrateOnVisible: false,
// Optional: Force client-side hydration as soon as someone uses an action.
// We are automatically recognizing onChange, onKeyDown, ... events. Only needed for custom attributes.
isInteractive: (p: NavbarProps) => p.customEvent === true,
});
Compare CMS options → Strapi vs Contentful vs Headless WP
Explore all components and examples in the official Storybook:
pnpm i
pnpm dev # Start Vite dev server
pnpm storybook # Start Storybook locally
To build:
pnpm run build
pnpm run storybook:build
This library is published under the Business Source License 1.1 (BUSL-1.1).
© 2025 prokodo — All rights reserved. Visit us at prokodo.com.
0.0.49
FAQs
UI components for production-grade Next.js + Headless CMS (Strapi, Contentful, Headless WordPress) websites by prokodo – built for Core Web Vitals & SEO.
The npm package @prokodo/ui receives a total of 44 weekly downloads. As such, @prokodo/ui popularity was classified as not popular.
We found that @prokodo/ui demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket Firewall is a free tool that blocks malicious packages at install time, giving developers proactive protection against rising supply chain attacks.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.