blob: 3f293131fe0c114267ce3a16b6062e79d6161948 [file] [log] [blame]
giod0026612025-05-08 13:00:36 +00001import { ReactFlowProvider } from "@xyflow/react";
2import "./App.css";
gio678746b2025-07-06 14:45:27 +00003import { Build } from "./Build";
giod0026612025-05-08 13:00:36 +00004import { Tabs, TabsTrigger, TabsContent, TabsList } from "./components/ui/tabs";
5import { Config } from "./Config";
6import { Integrations } from "./Integrations";
7import { Toaster } from "./components/ui/toaster";
gio880de162025-05-11 07:26:00 +00008import { ProjectSelect } from "./ProjectSelect";
gioa1efbad2025-05-21 07:16:45 +00009import { Logs } from "./Monitoring";
giocc5ce582025-06-25 07:45:21 +040010import { ChatManager } from "./components/ChatManager";
11import { useAgents } from "./lib/state";
12import { Bot } from "lucide-react";
gioa5fde992025-07-07 08:18:19 +000013import { Preview } from "./components/preview";
gio007c8572025-07-08 04:27:35 +000014import { Agent } from "./Agent";
gio5f2f1002025-03-20 18:38:48 +040015
16export default function App() {
giod0026612025-05-08 13:00:36 +000017 return (
18 <ReactFlowProvider>
giobc47f9f2025-05-12 08:31:07 +000019 <div className="h-screen flex flex-col p-1">
gio880de162025-05-11 07:26:00 +000020 <AppImpl />
giocc5ce582025-06-25 07:45:21 +040021 <ChatManager />
gio880de162025-05-11 07:26:00 +000022 <Toaster />
23 </div>
giod0026612025-05-08 13:00:36 +000024 </ReactFlowProvider>
25 );
gio5f2f1002025-03-20 18:38:48 +040026}
27
28function AppImpl() {
giocc5ce582025-06-25 07:45:21 +040029 const agents = useAgents();
giod0026612025-05-08 13:00:36 +000030 return (
gio678746b2025-07-06 14:45:27 +000031 <Tabs defaultValue="build" className="flex-1 flex flex-col min-h-0">
gio8cadbc72025-05-16 07:51:02 +000032 <div className="flex justify-between border-b">
33 <TabsList className="!rounded-none">
gio678746b2025-07-06 14:45:27 +000034 <TabsTrigger value="build">Build</TabsTrigger>
gioa5fde992025-07-07 08:18:19 +000035 <TabsTrigger value="preview">Preview</TabsTrigger>
gioa1efbad2025-05-21 07:16:45 +000036 <TabsTrigger value="monitoring">Monitoring</TabsTrigger>
gio880de162025-05-11 07:26:00 +000037 <TabsTrigger value="config">Config</TabsTrigger>
38 <TabsTrigger value="integrations">Integrations</TabsTrigger>
giocc5ce582025-06-25 07:45:21 +040039 {agents.map((a) => {
40 return (
41 <TabsTrigger
42 key={a.agentName}
43 value={`agent-${a.agentName}`}
44 className="flex flex-row items-center gap-1"
45 >
46 <Bot className="w-4 h-4" />
47 {a.agentName}
48 </TabsTrigger>
49 );
50 })}
gio880de162025-05-11 07:26:00 +000051 </TabsList>
gio8cadbc72025-05-16 07:51:02 +000052 <ProjectSelect className="w-fit min-w-[150px]" />
gio880de162025-05-11 07:26:00 +000053 </div>
gio678746b2025-07-06 14:45:27 +000054 <TabsContent value="build" className="!mt-0 flex-1 min-h-0">
55 <Build />
giod0026612025-05-08 13:00:36 +000056 </TabsContent>
gioa5fde992025-07-07 08:18:19 +000057 <TabsContent value="preview" className="!mt-0 flex-1 min-h-0">
58 <Preview />
59 </TabsContent>
giobc47f9f2025-05-12 08:31:07 +000060 <TabsContent value="config" className="!mt-0 flex-1 min-h-0">
giod0026612025-05-08 13:00:36 +000061 <Config />
62 </TabsContent>
giobc47f9f2025-05-12 08:31:07 +000063 <TabsContent value="integrations" className="!mt-0 flex-1 min-h-0">
giod0026612025-05-08 13:00:36 +000064 <Integrations />
65 </TabsContent>
gioa1efbad2025-05-21 07:16:45 +000066 <TabsContent value="monitoring" className="!mt-0 flex-1 min-h-0">
gio3a921b82025-05-10 07:36:09 +000067 <Logs />
68 </TabsContent>
giocc5ce582025-06-25 07:45:21 +040069 {agents.map((a) => (
70 <TabsContent value={`agent-${a.agentName}`} className="!mt-0 flex-1 min-h-0">
gio007c8572025-07-08 04:27:35 +000071 <Agent agent={a} compact={true} />
giocc5ce582025-06-25 07:45:21 +040072 </TabsContent>
73 ))}
giod0026612025-05-08 13:00:36 +000074 </Tabs>
75 );
gio5f2f1002025-03-20 18:38:48 +040076}