From 2a557af22d1c0bc0ef573635fc4ccaed9c78e1a8 Mon Sep 17 00:00:00 2001 From: Abhimanyu Saharan Date: Thu, 5 Feb 2026 00:44:23 +0530 Subject: [PATCH] feat(page): Replace Select components with SearchableSelect for improved usability --- .../src/app/agents/[agentId]/edit/page.tsx | 76 ++++++++++--------- frontend/src/app/agents/new/page.tsx | 76 ++++++++++--------- 2 files changed, 82 insertions(+), 70 deletions(-) diff --git a/frontend/src/app/agents/[agentId]/edit/page.tsx b/frontend/src/app/agents/[agentId]/edit/page.tsx index 379c0984..0f9af478 100644 --- a/frontend/src/app/agents/[agentId]/edit/page.tsx +++ b/frontend/src/app/agents/[agentId]/edit/page.tsx @@ -9,19 +9,15 @@ import { DashboardSidebar } from "@/components/organisms/DashboardSidebar"; import { DashboardShell } from "@/components/templates/DashboardShell"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; +import SearchableSelect, { + type SearchableSelectOption, +} from "@/components/ui/searchable-select"; import { Textarea } from "@/components/ui/textarea"; import { getApiBaseUrl } from "@/lib/api-base"; import { DEFAULT_IDENTITY_TEMPLATE, DEFAULT_SOUL_TEMPLATE, } from "@/lib/agent-templates"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; const apiBase = getApiBaseUrl(); @@ -43,6 +39,17 @@ type Board = { slug: string; }; +const HEARTBEAT_TARGET_OPTIONS: SearchableSelectOption[] = [ + { value: "none", label: "None (no outbound message)" }, + { value: "last", label: "Last channel" }, +]; + +const getBoardOptions = (boards: Board[]): SearchableSelectOption[] => + boards.map((board) => ({ + value: board.id, + label: board.name, + })); + export default function EditAgentPage() { const { getToken, isSignedIn } = useAuth(); const router = useRouter(); @@ -231,22 +238,19 @@ export default function EditAgentPage() { - + /> {boards.length === 0 ? (

Create a board before assigning agents. @@ -260,7 +264,7 @@ export default function EditAgentPage() {

Agent persona

-
+
diff --git a/frontend/src/app/agents/new/page.tsx b/frontend/src/app/agents/new/page.tsx index d2a89a16..ba35fbfd 100644 --- a/frontend/src/app/agents/new/page.tsx +++ b/frontend/src/app/agents/new/page.tsx @@ -9,19 +9,15 @@ import { DashboardSidebar } from "@/components/organisms/DashboardSidebar"; import { DashboardShell } from "@/components/templates/DashboardShell"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; +import SearchableSelect, { + type SearchableSelectOption, +} from "@/components/ui/searchable-select"; import { Textarea } from "@/components/ui/textarea"; import { getApiBaseUrl } from "@/lib/api-base"; import { DEFAULT_IDENTITY_TEMPLATE, DEFAULT_SOUL_TEMPLATE, } from "@/lib/agent-templates"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; const apiBase = getApiBaseUrl(); @@ -36,6 +32,17 @@ type Board = { slug: string; }; +const HEARTBEAT_TARGET_OPTIONS: SearchableSelectOption[] = [ + { value: "none", label: "None (no outbound message)" }, + { value: "last", label: "Last channel" }, +]; + +const getBoardOptions = (boards: Board[]): SearchableSelectOption[] => + boards.map((board) => ({ + value: board.id, + label: board.name, + })); + export default function NewAgentPage() { const router = useRouter(); const { getToken, isSignedIn } = useAuth(); @@ -177,22 +184,19 @@ export default function NewAgentPage() { - + /> {boards.length === 0 ? (

Create a board before adding agents. @@ -206,7 +210,7 @@ export default function NewAgentPage() {

Agent persona

-
+