Installation
کامپوننتهای React نئوبروتالیستی را با یک دستور shadcn CLI نصب کنید — بدون بسته، بدون پیکربندی. بههمراه فونتها و توکنهای Tailwind v4 که ظاهر متمایز را میسازند.
Neobrutalism.com این یک رجیستری برای shadcn CLI است. هیچ بستهای برای نصب وجود ندارد و هیچ ارائهدهندهای برای پیچاندن اپلیکیشن شما در آن نیست — CLI هر مؤلفه را از neobrutalism.com در پروژه شما کپی میکند و از آن نقطه، این کد شماست.
راهاندازی در سه مرحله و حدود پنج دقیقه طول میکشد:
- نصب یک کامپوننت — یک دستور، بدون پیکربندی.
- فونتها را اضافه کنید —
Archivo Blackبرای عناوین،Space Groteskبرای متن اصلی. - توکنهای تم را اضافه کنید — حاشیهها، سایهها و پالت رنگی که آن را نئوبروتالیسم میسازند.
نصب یک کامپوننت#
هر مؤلفه در دو نسخه عرضه میشود: Base UI و Radix UI. URL نصب تعیین میکند که کدام نسخه را دریافت میکنید:
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
این تمام داستان نصب است. button را با هر مؤلفهای جایگزین کنید — الگو همیشه https://neobrutalism.com/r/<base|radix>/<component>.json است و هر صفحهٔ مؤلفه دستور دقیق برای هر دو گزینه را نشان میدهد.
فونتها را اضافه کنید#
سربرگها با فونت Archivo Black و متن اصلی با فونت Space Grotesk تنظیم شدهاند. با Next.js، آنها را از 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>
)
}موضوع را اضافه کنید#
این توکنها را در globals.css خود قرار دهید. سایههای آفست سخت و --radius: 0 بخش عمده کار را انجام میدهند — بقیه مربوط به پالت است و همهاش تمگذاری ساده Tailwind v4 است که بعداً میتوانید آن را تغییر دهید:
@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;
}آیا پروژهٔ جدیدی را شروع میکنید؟#
راهنمای چارچوب همه چیز را از اولین دستورالعمل توضیح میدهد:
- Next.js —
create-next-app، init، فونتها، تم، اولین کامپوننت. - Vite — Tailwind، نامهای مسیر، init، اولین کامپوننت.
قبل از نصب پیشنمایش کنید#
منبع هر کامپوننت را از ترمینال بررسی کنید:
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
فضاهای نام رجیستری (اختیاری)#
آدرسهای کامل همهچیز هستند که همیشه به آنها نیاز دارید. اما اگر در حال راهاندازی سرور MCP هستید — که اجزا را از طریق رجیستریهای نامگذاریشده حل میکند — یا میخواهید دستورات search و list در CLI را داشته باشید، رجیستری را در components.json خود مستعار کنید:
{
"registries": {
"@neobrutalism": "https://neobrutalism.com/r/radix/{name}.json",
"@neobrutalism-base": "https://neobrutalism.com/r/base/{name}.json"
}
}با قرار گرفتن نام مستعار، CLI میتواند کل رجیستری را کاوش کند:
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
مونورپو#
CLI را به فضای کاری مناسب با -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
کمک میخواهید؟#
در کاری گیر کردهاید؟ دیسکورد فعال است — بیایید و سلام کنید.