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. + +
+
+ + +
+
+ +