This component no longer exists. It was in neobrutal-ui’s manifest when we first indexed it and is not there now — the registry served its inventory on 2026-08-06 and this item was not on it. The install command below will fail. It is kept here because a tutorial somewhere still tells people to run it.
CMS template
neobrutal-ui/cms-templateRemovedBlock
A compact CMS for finding, editing, and publishing posts.
Install it
npx shadcn@latest add https://neobrutal-ui.andongmin.com/r/cms-template.jsonSource
1"use client";23import { Plus, Save, Search } from "lucide-react";4import * as React from "react";56import { Badge } from "@/components/ui/badge";7import { Button } from "@/components/ui/button";8import { Input } from "@/components/ui/input";9import { Switch } from "@/components/ui/switch";10import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";11import { Textarea } from "@/components/ui/textarea";1213const TEMPLATE_THEME =14 "[color-scheme:light] [--background:#e7e8ff] [--secondary-background:#fff] [--foreground:#000] [--main-foreground:#000] [--main:#7983ff] [--border:#000] [--ring:#000] [--box-shadow-x:4px] [--box-shadow-y:4px] [--reverse-box-shadow-x:-4px] [--reverse-box-shadow-y:-4px] [--shadow:4px_4px_0px_0px_var(--border)] [--border-radius:5px] [--base-font-weight:600] [--heading-font-weight:700] dark:[color-scheme:dark] dark:[--background:#2c304c] dark:[--secondary-background:#222] dark:[--foreground:#ececec] dark:[--main:#7983ff] dark:[--ring:#fff]";1516type PostStatus = "draft" | "published";17type StatusFilter = "all" | PostStatus;1819type Post = {20 dirty: boolean;21 id: string;22 status: PostStatus;23 summary: string;24 title: string;25 updatedLabel: string;26};2728type PostChanges = Partial<Pick<Post, "status" | "summary" | "title">>;2930const INITIAL_POSTS: Post[] = [31 {32 dirty: false,33 id: "post-105",34 status: "published",35 summary: "Highlights from the latest workspace release.",36 title: "July product update",37 updatedLabel: "12 min",38 },39 {40 dirty: false,41 id: "post-104",42 status: "draft",43 summary: "A practical structure for growing teams.",44 title: "Organize your first team space",45 updatedLabel: "38 min",46 },47 {48 dirty: false,49 id: "post-103",50 status: "published",51 summary: "How Verdant Studio simplified editorial review.",52 title: "A faster review process",53 updatedLabel: "2 hr",54 },55 {56 dirty: false,57 id: "post-102",58 status: "draft",59 summary: "Final ownership, access, and link checks.",60 title: "Public page checklist",61 updatedLabel: "Yesterday",62 },63 {64 dirty: false,65 id: "post-101",66 status: "published",67 summary: "Set routing rules and keep requests visible.",68 title: "Shared inbox routing",69 updatedLabel: "Jul 11",70 },71];7273const STATUS_TABS: Array<{ label: string; value: StatusFilter }> = [74 { label: "All", value: "all" },75 { label: "Draft", value: "draft" },76 { label: "Published", value: "published" },77];7879// … truncated
What it pulls in
npm packages
Other registry items
