From 4205007dc2c58f5c84700c0ffaf463b225034df1 Mon Sep 17 00:00:00 2001
From: Forgotten
Date: Mon, 23 Feb 2026 16:08:31 -0600
Subject: [PATCH] feat(ui): expand design guide with new component sections
Add Select, Dropdown Menu, Popover, Collapsible, Sheet, Scroll Area,
Command (CMDK), and Breadcrumb sections. Update status badge list and
keyboard shortcuts reference.
Co-Authored-By: Claude Opus 4.6
---
ui/src/pages/DesignGuide.tsx | 315 ++++++++++++++++++++++++++++++++++-
1 file changed, 310 insertions(+), 5 deletions(-)
diff --git a/ui/src/pages/DesignGuide.tsx b/ui/src/pages/DesignGuide.tsx
index 4659963c..2df81b96 100644
--- a/ui/src/pages/DesignGuide.tsx
+++ b/ui/src/pages/DesignGuide.tsx
@@ -1,7 +1,11 @@
import { useState } from "react";
import {
+ BookOpen,
Bot,
+ Check,
+ ChevronDown,
CircleDot,
+ Command as CommandIcon,
DollarSign,
Hexagon,
History,
@@ -49,6 +53,54 @@ import {
TooltipTrigger,
TooltipContent,
} from "@/components/ui/tooltip";
+import {
+ Select,
+ SelectTrigger,
+ SelectValue,
+ SelectContent,
+ SelectItem,
+} from "@/components/ui/select";
+import {
+ DropdownMenu,
+ DropdownMenuTrigger,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuSeparator,
+ DropdownMenuCheckboxItem,
+ DropdownMenuShortcut,
+} from "@/components/ui/dropdown-menu";
+import {
+ Sheet,
+ SheetTrigger,
+ SheetContent,
+ SheetHeader,
+ SheetTitle,
+ SheetDescription,
+ SheetFooter,
+} from "@/components/ui/sheet";
+import {
+ Collapsible,
+ CollapsibleTrigger,
+ CollapsibleContent,
+} from "@/components/ui/collapsible";
+import { ScrollArea } from "@/components/ui/scroll-area";
+import {
+ Command,
+ CommandInput,
+ CommandList,
+ CommandGroup,
+ CommandItem,
+ CommandEmpty,
+ CommandSeparator,
+} from "@/components/ui/command";
+import {
+ Breadcrumb,
+ BreadcrumbItem,
+ BreadcrumbLink,
+ BreadcrumbList,
+ BreadcrumbPage,
+ BreadcrumbSeparator,
+} from "@/components/ui/breadcrumb";
import {
Avatar,
AvatarFallback,
@@ -117,6 +169,9 @@ function Swatch({ name, cssVar }: { name: string; cssVar: string }) {
export function DesignGuide() {
const [status, setStatus] = useState("todo");
const [priority, setPriority] = useState("medium");
+ const [selectValue, setSelectValue] = useState("in_progress");
+ const [menuChecked, setMenuChecked] = useState(true);
+ const [collapsibleOpen, setCollapsibleOpen] = useState(false);
const [inlineText, setInlineText] = useState("Click to edit this text");
const [inlineTitle, setInlineTitle] = useState("Editable Title");
const [inlineDesc, setInlineDesc] = useState(
@@ -137,6 +192,43 @@ export function DesignGuide() {
+ {/* ============================================================ */}
+ {/* COVERAGE */}
+ {/* ============================================================ */}
+
+
+ This page should be updated when new UI primitives or app-level patterns ship.
+
+
+
+
+ {[
+ "avatar", "badge", "breadcrumb", "button", "card", "checkbox", "collapsible",
+ "command", "dialog", "dropdown-menu", "input", "label", "popover", "scroll-area",
+ "select", "separator", "sheet", "skeleton", "tabs", "textarea", "tooltip",
+ ].map((name) => (
+
+ {name}
+
+ ))}
+
+
+
+
+ {[
+ "StatusBadge", "StatusIcon", "PriorityIcon", "EntityRow", "EmptyState", "MetricCard",
+ "FilterBar", "InlineEditor", "PageSkeleton", "Identity", "CommentThread", "MarkdownEditor",
+ "PropertiesPanel", "Sidebar", "CommandPalette",
+ ].map((name) => (
+
+ {name}
+
+ ))}
+
+
+
+
+
{/* ============================================================ */}
{/* COLORS */}
{/* ============================================================ */}
@@ -299,9 +391,10 @@ export function DesignGuide() {
{[
"active", "running", "paused", "idle", "archived", "planned",
- "achieved", "completed", "failed", "succeeded", "error", "backlog",
- "todo", "in_progress", "in_review", "blocked", "done",
- "cancelled", "pending", "approved", "rejected",
+ "achieved", "completed", "failed", "timed_out", "succeeded", "error",
+ "pending_approval", "backlog", "todo", "in_progress", "in_review", "blocked",
+ "done", "terminated", "cancelled", "pending", "revision_requested",
+ "approved", "rejected",
].map((s) => (
))}
@@ -365,7 +458,7 @@ export function DesignGuide() {
["timer", "bg-blue-900/50 text-blue-300"],
["assignment", "bg-violet-900/50 text-violet-300"],
["on_demand", "bg-cyan-900/50 text-cyan-300"],
- ["webhook", "bg-neutral-800 text-neutral-400"],
+ ["automation", "bg-neutral-800 text-neutral-400"],
].map(([label, cls]) => (
{label}
@@ -442,6 +535,217 @@ export function DesignGuide() {
+ {/* ============================================================ */}
+ {/* SELECT */}
+ {/* ============================================================ */}
+
+
+
+
+ Current value: {selectValue}
+
+
+
+
+
+
+
+ {/* ============================================================ */}
+ {/* DROPDOWN MENU */}
+ {/* ============================================================ */}
+
+
+
+
+
+
+
+
+ Mark as done
+ ⌘D
+
+
+
+ Open docs
+
+
+ setMenuChecked(value === true)}
+ >
+ Watch issue
+
+
+
+ Delete issue
+
+
+
+
+
+ {/* ============================================================ */}
+ {/* POPOVER */}
+ {/* ============================================================ */}
+
+
+
+
+
+
+ Agent heartbeat
+
+ Last run succeeded 24s ago. Next timer run in 9m.
+
+
+
+
+
+
+ {/* ============================================================ */}
+ {/* COLLAPSIBLE */}
+ {/* ============================================================ */}
+
+
+ {/* ============================================================ */}
+ {/* SHEET */}
+ {/* ============================================================ */}
+
+
+
+
+
+
+
+ Issue Properties
+ Edit metadata without leaving the current page.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* ============================================================ */}
+ {/* SCROLL AREA */}
+ {/* ============================================================ */}
+
+
+
+ {Array.from({ length: 12 }).map((_, i) => (
+
+ Heartbeat run #{i + 1}: completed successfully
+
+ ))}
+
+
+
+
+ {/* ============================================================ */}
+ {/* COMMAND */}
+ {/* ============================================================ */}
+
+
+
+
+
+ No results found.
+
+
+
+ Dashboard
+
+
+
+ Issues
+
+
+
+
+
+
+ Open command palette
+
+
+
+ Create new issue
+
+
+
+
+
+
+
+ {/* ============================================================ */}
+ {/* BREADCRUMB */}
+ {/* ============================================================ */}
+
+
+
+
+ Projects
+
+
+
+ Paperclip App
+
+
+
+ Issue List
+
+
+
+
+
{/* ============================================================ */}
{/* CARDS */}
{/* ============================================================ */}
@@ -1009,7 +1313,8 @@ export function DesignGuide() {
["C", "New Issue (outside inputs)"],
["[", "Toggle Sidebar"],
["]", "Toggle Properties Panel"],
- ["Cmd+Enter", "Submit current dialog"],
+ ["Cmd+1..9 / Ctrl+1..9", "Switch Company (by rail order)"],
+ ["Cmd+Enter / Ctrl+Enter", "Submit markdown comment"],
].map(([key, desc]) => (
{desc}