Installation
Installeer neobrutalistische React-componenten met één shadcn-CLI-commando — geen pakket, geen configuratie. Inclusief de lettertypen en Tailwind v4-tokens achter de kenmerkende look.
Neobrutalism.com is een register voor de shadcn CLI. Je hoeft geen pakket te installeren en je app hoeft niet in een provider te worden ingepakt — de CLI kopieert de broncode van elke component van neobrutalism.com naar je project, en vanaf dat moment is het jouw code.
De installatie bestaat uit drie stappen en duurt ongeveer vijf minuten:
- Een component installeren — één commando, geen configuratie nodig.
- Voeg de lettertypen toe —
Archivo Blackvoor koppen,Space Groteskvoor de hoofdtekst. - Voeg de thema-elementen toe — de randen, schaduwen en het kleurenpalet die ervoor zorgen dat het neobrutalisme is.
Een onderdeel installeren#
Elk onderdeel wordt in twee varianten geleverd: Base UI en Radix UI. De installatie-URL bepaalt welke je krijgt:
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/button.jsonnpx shadcn@latest add https://neobrutalism.com/r/base/button.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/base/button.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/base/button.json
pnpm dlx shadcn@latest add https://neobrutalism.com/r/radix/button.jsonnpx shadcn@latest add https://neobrutalism.com/r/radix/button.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/radix/button.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/radix/button.json
Dat is het hele installatieverhaal. Vervang button door een willekeurig onderdeel — het patroon is altijd https://neobrutalism.com/r/<base|radix>/<component>.json, en op elke onderdeelpagina staat het exacte commando voor beide varianten vermeld.
Voeg de lettertypen toe#
Kopteksten staan in Archivo Black, de hoofdtekst in Space Grotesk. Met Next.js laad je ze op vanuit next/font/google:
import { Archivo_Black, Space_Grotesk } from "next/font/google"
const archivoBlack = Archivo_Black({
subsets: ["latin"],
weight: "400",
variable: "--font-head",
display: "swap",
})
const spaceGrotesk = Space_Grotesk({
subsets: ["latin"],
variable: "--font-sans",
display: "swap",
})
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en">
<body className={`${archivoBlack.variable} ${spaceGrotesk.variable}`}>
{children}
</body>
</html>
)
}Voeg het thema toe#
Zet deze tokens in je globals.css. De scherp afgetekende schaduwen en --radius: 0 doen het meeste werk — de rest zit in het kleurenpalet, en het is allemaal standaard Tailwind v4-thematisering die je later nog kunt aanpassen:
@import "tailwindcss";
@theme inline {
--font-head: var(--font-head);
--font-sans: var(--font-sans);
--radius: var(--radius);
--shadow-xs: 1px 1px 0 0 var(--border);
--shadow-sm: 2px 2px 0 0 var(--border);
--shadow: 3px 3px 0 0 var(--border);
--shadow-md: 4px 4px 0 0 var(--border);
--shadow-lg: 6px 6px 0 0 var(--border);
--shadow-xl: 10px 10px 0 1px var(--border);
--shadow-2xl: 16px 16px 0 1px var(--border);
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-primary-hover: var(--primary-hover);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-destructive-foreground: var(--destructive-foreground);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
}
:root {
--radius: 0;
--background: #fff7e8;
--foreground: #000;
--card: #fff;
--card-foreground: #000;
--primary: #ffdc58;
--primary-hover: #ffd12e;
--primary-foreground: #000;
--secondary: #000;
--secondary-foreground: #fff;
--muted: #efe7d6;
--muted-foreground: #6b6355;
--accent: #ffe7a3;
--accent-foreground: #000;
--destructive: #e63946;
--destructive-foreground: #fff;
--border: #000;
--input: #fff;
--ring: #000;
}
.dark {
--background: #1a1815;
--foreground: #f5f0e6;
--card: #262320;
--card-foreground: #f5f0e6;
--primary: #ffdc58;
--primary-hover: #ffd12e;
--primary-foreground: #000;
--secondary: #3a352f;
--secondary-foreground: #f5f0e6;
--muted: #2e2a24;
--muted-foreground: #b3ac9e;
--accent: #38342b;
--accent-foreground: #f5f0e6;
--destructive: #ff6b6b;
--destructive-foreground: #1a1815;
--border: #000;
--input: #262320;
--ring: #ffdc58;
}Begin je aan een nieuw project?#
De handleidingen van het framework lopen alles met je door, vanaf het allereerste commando:
- Next.js —
create-next-app, init, lettertypen, thema, eerste component. - Vite — Tailwind, padaliassen, init, eerste component.
Bekijk een voorbeeld voordat je het installeert#
Bekijk de broncode van elk onderdeel via de terminal:
pnpm dlx shadcn@latest view https://neobrutalism.com/r/base/button.jsonnpx shadcn@latest view https://neobrutalism.com/r/base/button.jsonyarn dlx shadcn@latest view https://neobrutalism.com/r/base/button.jsonbunx --bun shadcn@latest view https://neobrutalism.com/r/base/button.json
Registry-naamruimten (optioneel)#
Volledige URL’s zijn alles wat je ooit nodig hebt. Maar als je de MCP-server instelt — die componenten via benoemde registers omzet — of als je de search- en list-commando’s van de CLI wilt gebruiken, maak dan een alias voor het register in je components.json:
{
"registries": {
"@neobrutalism": "https://neobrutalism.com/r/radix/{name}.json",
"@neobrutalism-base": "https://neobrutalism.com/r/base/{name}.json"
}
}Nu de alias is ingesteld, kan de CLI het hele register doorzoeken:
pnpm dlx shadcn@latest search @neobrutalismnpx shadcn@latest search @neobrutalismyarn dlx shadcn@latest search @neobrutalismbunx --bun shadcn@latest search @neobrutalism
pnpm dlx shadcn@latest list @neobrutalismnpx shadcn@latest list @neobrutalismyarn dlx shadcn@latest list @neobrutalismbunx --bun shadcn@latest list @neobrutalism
Monorepos#
Stel de CLI in op de juiste werkruimte via -c / --cwd:
pnpm dlx shadcn@latest init -c ./apps/webnpx shadcn@latest init -c ./apps/webyarn dlx shadcn@latest init -c ./apps/webbunx --bun shadcn@latest init -c ./apps/web
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/button.json -c ./apps/webnpx shadcn@latest add https://neobrutalism.com/r/base/button.json -c ./apps/webyarn dlx shadcn@latest add https://neobrutalism.com/r/base/button.json -c ./apps/webbunx --bun shadcn@latest add https://neobrutalism.com/r/base/button.json -c ./apps/web
Heb je hulp nodig?#
Loop je ergens tegenaan? De Discord is actief — kom even hallo zeggen.