From e116957a63706bea112bb44aa77dbb42aae17dfe Mon Sep 17 00:00:00 2001
From: Austin Pickett
Date: Tue, 28 Apr 2026 08:57:33 -0400
Subject: [PATCH] fix: replace all buttons for design system buttons
---
web/src/App.tsx | 45 ++++++++++++++---------
web/src/components/ChatSidebar.tsx | 9 ++---
web/src/components/ModelPickerDialog.tsx | 6 +--
web/src/components/OAuthLoginModal.tsx | 16 +++-----
web/src/components/OAuthProvidersCard.tsx | 45 ++++++++---------------
web/src/components/ui/button.tsx | 38 -------------------
web/src/components/ui/confirm-dialog.tsx | 8 ++--
web/src/pages/AnalyticsPage.tsx | 12 ++----
web/src/pages/ConfigPage.tsx | 31 +++++-----------
web/src/pages/CronPage.tsx | 22 +++++------
web/src/pages/DocsPage.tsx | 16 +++++---
web/src/pages/EnvPage.tsx | 30 +++++++--------
web/src/pages/LogsPage.tsx | 8 ++--
web/src/pages/SessionsPage.tsx | 22 +++++------
web/src/plugins/registry.ts | 2 +-
15 files changed, 117 insertions(+), 193 deletions(-)
delete mode 100644 web/src/components/ui/button.tsx
diff --git a/web/src/App.tsx b/web/src/App.tsx
index 65b4d800eb..841108a50d 100644
--- a/web/src/App.tsx
+++ b/web/src/App.tsx
@@ -160,7 +160,10 @@ function resolveIcon(name: string): ComponentType<{ className?: string }> {
return ICON_MAP[name] ?? Puzzle;
}
-function buildNavItems(builtIn: NavItem[], manifests: PluginManifest[]): NavItem[] {
+function buildNavItems(
+ builtIn: NavItem[],
+ manifests: PluginManifest[],
+): NavItem[] {
const items = [...builtIn];
for (const manifest of manifests) {
@@ -425,18 +428,22 @@ export default function App() {
>
-
- Hermes
-
- Agent
-
+
+
+
+
+ Hermes
+
+ Agent
+
+
-
-
- setShowAdvanced(!showAdvanced)}>
+ setShowAdvanced(!showAdvanced)}>
{showAdvanced ? t.env.hideAdvanced : t.env.showAdvanced}
diff --git a/web/src/pages/LogsPage.tsx b/web/src/pages/LogsPage.tsx
index b6e6905837..fed5d607a2 100644
--- a/web/src/pages/LogsPage.tsx
+++ b/web/src/pages/LogsPage.tsx
@@ -1,8 +1,8 @@
import { useEffect, useLayoutEffect, useState, useCallback, useRef } from "react";
import { FileText, RefreshCw } from "lucide-react";
import { api } from "@/lib/api";
+import { Button } from "@nous-research/ui";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
-import { Button } from "@/components/ui/button";
import { Badge } from "@/components/ui/badge";
import { Switch } from "@/components/ui/switch";
import { Label } from "@/components/ui/label";
@@ -101,13 +101,11 @@ export default function LogsPage() {
}
>
-
{t.common.refresh}
,
diff --git a/web/src/pages/SessionsPage.tsx b/web/src/pages/SessionsPage.tsx
index 48fbf7dfb0..75514faea3 100644
--- a/web/src/pages/SessionsPage.tsx
+++ b/web/src/pages/SessionsPage.tsx
@@ -36,8 +36,8 @@ import { timeAgo } from "@/lib/utils";
import { Markdown } from "@/components/Markdown";
import { PlatformsCard } from "@/components/PlatformsCard";
import { Toast } from "@/components/Toast";
+import { Button } from "@nous-research/ui";
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { DeleteConfirmDialog } from "@/components/DeleteConfirmDialog";
import { useConfirmDelete } from "@/hooks/useConfirmDelete";
@@ -356,9 +356,8 @@ function SessionRow({
{resumeInChatEnabled && (
{
@@ -370,9 +369,8 @@ function SessionRow({
)}
{
e.stopPropagation();
@@ -808,9 +806,8 @@ export default function SessionsPage() {
setPage((p) => p - 1)}
aria-label={t.sessions.previousPage}
@@ -822,9 +819,8 @@ export default function SessionsPage() {
{Math.ceil(total / PAGE_SIZE)}
= total}
onClick={() => setPage((p) => p + 1)}
aria-label={t.sessions.nextPage}
diff --git a/web/src/plugins/registry.ts b/web/src/plugins/registry.ts
index 08a5c99902..7c7186ef09 100644
--- a/web/src/plugins/registry.ts
+++ b/web/src/plugins/registry.ts
@@ -19,9 +19,9 @@ import React, {
} from "react";
import { api, fetchJSON } from "@/lib/api";
import { cn, timeAgo, isoTimeAgo } from "@/lib/utils";
+import { Button } from "@nous-research/ui";
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card";
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import { Select, SelectOption } from "@/components/ui/select";