Introduction
Kinetic UI is a set of motion-first, accessible React components for Next.js and Tailwind CSS v4. Every component ships two ways from the same source:
npm packages
Install once, import anywhere, get fixes with npm update.
Copy with the CLI
The source lands in your repo. Edit every line — it’s yours.
Installation
Start with a Next.js app that uses Tailwind CSS v4 (npx create-next-app@latest sets this up).
Option A — Kinetic CLI (copy the code)
This adds the design tokens to your global CSS and creates kinetic.json. Then add components:
Files are written to components/kinetic/ and any npm dependencies are installed for you.
Option B — npm packages
Add the tokens and tell Tailwind to scan the packages, in your global CSS:
@import "tailwindcss";
@import "@kineticui/core/styles.css";
@source "../node_modules/@kineticui";Then import and use:
import { Button } from "@kineticui/ui";
import { SpotlightCard } from "@kineticui/motion";
import { BoltIcon } from "@kineticui/icons";
export default function Page() {
return (
<SpotlightCard>
<BoltIcon />
<Button>Get started</Button>
</SpotlightCard>
);
}npx shadcn add https://your-site/r/dock.json.Theming
Dark is the default. Wrap your app in ThemeProvider to switch modes and brand colours at runtime — every component reads from the same CSS variables.
// app/providers.tsx
"use client";
import { ThemeProvider } from "@kineticui/core/theme";
import { Toaster } from "@kineticui/ui";
export function Providers({ children }) {
return (
<ThemeProvider defaultMode="dark" defaultAccent="lime">
{children}
<Toaster />
</ThemeProvider>
);
}Or override any token directly in CSS:
:root {
--kn-accent: #ff5a1f;
--kn-accent-foreground: #ffffff;
}Presets: lime, blue, orange, rose, mint — try them from the colour dot in the header.
Full themes change every surface, not just the accent: midnight, sunset, paper, mono, forest and ocean. Set defaultTheme on the provider or data-theme on any element, or build your own in the theme editor.
<ThemeProvider defaultTheme="midnight">…</ThemeProvider>
// or scope a theme to one section
<section data-theme="paper">…</section>
// or generate one in code
import { createTheme, themeToCss } from "@kineticui/core";
const css = themeToCss(createTheme({ mode: "dark", background: "#0b1020", foreground: "#e6ebff", accent: "#ff5a1f" }));Motion & accessibility
Animations use spring physics and respect prefers-reduced-motion. Interactive pieces are built on Radix primitives, so keyboard navigation, focus management and ARIA come for free.
Next: browse all components →