import { useState } from "react";
import { useTranslation } from "react-i18next";
import { formatDate } from "../lib/utils";
import {
BookOpen,
Bot,
Check,
ChevronDown,
CircleDot,
Command as CommandIcon,
DollarSign,
Hexagon,
History,
Inbox,
LayoutDashboard,
ListTodo,
Mail,
Plus,
Search,
Settings,
Target,
Trash2,
Upload,
User,
Zap,
} from "lucide-react";
import { Button } from "@/components/ui/button";
import { Badge } from "@/components/ui/badge";
import { Input } from "@/components/ui/input";
import { Textarea } from "@/components/ui/textarea";
import { Checkbox } from "@/components/ui/checkbox";
import { Label } from "@/components/ui/label";
import { Separator } from "@/components/ui/separator";
import { Skeleton } from "@/components/ui/skeleton";
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs";
import {
Card,
CardHeader,
CardTitle,
CardDescription,
CardContent,
CardFooter,
} from "@/components/ui/card";
import {
Dialog,
DialogTrigger,
DialogContent,
DialogHeader,
DialogTitle,
DialogDescription,
DialogFooter,
} from "@/components/ui/dialog";
import {
Tooltip,
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 {
Popover,
PopoverTrigger,
PopoverContent,
} from "@/components/ui/popover";
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,
AvatarGroup,
AvatarGroupCount,
} from "@/components/ui/avatar";
import { StatusBadge } from "@/components/StatusBadge";
import { StatusIcon } from "@/components/StatusIcon";
import { PriorityIcon } from "@/components/PriorityIcon";
import { agentStatusDot, agentStatusDotDefault } from "@/lib/status-colors";
import { EntityRow } from "@/components/EntityRow";
import { EmptyState } from "@/components/EmptyState";
import { MetricCard } from "@/components/MetricCard";
import { FilterBar, type FilterValue } from "@/components/FilterBar";
import { InlineEditor } from "@/components/InlineEditor";
import { PageSkeleton } from "@/components/PageSkeleton";
import { Identity } from "@/components/Identity";
import { IssueReferencePill } from "@/components/IssueReferencePill";
/* ------------------------------------------------------------------ */
/* Section wrapper */
/* ------------------------------------------------------------------ */
function Section({ title, children }: { title: string; children: React.ReactNode }) {
return (
{title}
{cssVar}
{name}
{td("A reference for the components, styles, and interaction patterns used across Paperclip CN.")}
{td("Update this page whenever new UI primitives or app-level patterns ship.")}
{td("Card title example")}
{td("Alternative card title example")}
{td("Body text example")}
{td("Muted description example")}
{td("Tiny label example")}
{td("Mono identifier example")}
{td("Large stat example")}
{td("Log/code text example")}
Used wherever a task is referenced — in markdown, the Related Work tab, and activity summaries.
Pass status to show the target issue's state at a glance.
Use strikethrough for "removed" contexts.
{td("Title (single-line)")}
{td("Body text (single-line)")}
{td("Description (multiline, auto-sizing)")}
{td("Current value: {{value}}", { value: selectValue })}
{td("Agent heartbeat")}
{td("Last run succeeded 24s ago. Next timer run in 9m.")}
{td("Card content goes here. This is the main body area.")}
{td("Overview tab content.")}
{td("Runs tab content.")}
{td("Config tab content.")}
{td("Costs tab content.")}
{td("Summary content with underline tabs.")}
{td("Details content.")}
{td("Comments content.")}
{td("Started working on the authentication module. Will need API keys configured.")}
{td("API keys have been added to the vault. Please proceed.")}
| {td("Model")} | {td("Tokens")} | {td("Cost")} |
|---|---|---|
| claude-sonnet-4-20250514 | 1.2M | $18.00 |
| claude-haiku-4-20250506 | 500k | $1.25 |
| {td("Total")} | 1.7M | $19.25 |
{td("Horizontal")}