blob: 5100576b617f401d692ae1ea611007a65b1f3b58 [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";
gio5f2f1002025-03-20 18:38:48 +040014
15export default function App() {
giod0026612025-05-08 13:00:36 +000016 return (
17 <ReactFlowProvider>
giobc47f9f2025-05-12 08:31:07 +000018 <div className="h-screen flex flex-col p-1">
gio880de162025-05-11 07:26:00 +000019 <AppImpl />
giocc5ce582025-06-25 07:45:21 +040020 <ChatManager />
gio880de162025-05-11 07:26:00 +000021 <Toaster />
22 </div>
giod0026612025-05-08 13:00:36 +000023 </ReactFlowProvider>
24 );
gio5f2f1002025-03-20 18:38:48 +040025}
26
27function AppImpl() {
giocc5ce582025-06-25 07:45:21 +040028 const agents = useAgents();
giod0026612025-05-08 13:00:36 +000029 return (
gio678746b2025-07-06 14:45:27 +000030 <Tabs defaultValue="build" className="flex-1 flex flex-col min-h-0">
gio8cadbc72025-05-16 07:51:02 +000031 <div className="flex justify-between border-b">
32 <TabsList className="!rounded-none">
gio678746b2025-07-06 14:45:27 +000033 <TabsTrigger value="build">Build</TabsTrigger>
gioa5fde992025-07-07 08:18:19 +000034 <TabsTrigger value="preview">Preview</TabsTrigger>
gioa1efbad2025-05-21 07:16:45 +000035 <TabsTrigger value="monitoring">Monitoring</TabsTrigger>
gio880de162025-05-11 07:26:00 +000036 <TabsTrigger value="config">Config</TabsTrigger>
37 <TabsTrigger value="integrations">Integrations</TabsTrigger>
giocc5ce582025-06-25 07:45:21 +040038 {agents.map((a) => {
39 return (
40 <TabsTrigger
41 key={a.agentName}
42 value={`agent-${a.agentName}`}
43 className="flex flex-row items-center gap-1"
44 >
45 <Bot className="w-4 h-4" />
46 {a.agentName}
47 </TabsTrigger>
48 );
49 })}
gio880de162025-05-11 07:26:00 +000050 </TabsList>
gio8cadbc72025-05-16 07:51:02 +000051 <ProjectSelect className="w-fit min-w-[150px]" />
gio880de162025-05-11 07:26:00 +000052 </div>
gio678746b2025-07-06 14:45:27 +000053 <TabsContent value="build" className="!mt-0 flex-1 min-h-0">
54 <Build />
giod0026612025-05-08 13:00:36 +000055 </TabsContent>
gioa5fde992025-07-07 08:18:19 +000056 <TabsContent value="preview" className="!mt-0 flex-1 min-h-0">
57 <Preview />
58 </TabsContent>
giobc47f9f2025-05-12 08:31:07 +000059 <TabsContent value="config" className="!mt-0 flex-1 min-h-0">
giod0026612025-05-08 13:00:36 +000060 <Config />
61 </TabsContent>
giobc47f9f2025-05-12 08:31:07 +000062 <TabsContent value="integrations" className="!mt-0 flex-1 min-h-0">
giod0026612025-05-08 13:00:36 +000063 <Integrations />
64 </TabsContent>
gioa1efbad2025-05-21 07:16:45 +000065 <TabsContent value="monitoring" className="!mt-0 flex-1 min-h-0">
gio3a921b82025-05-10 07:36:09 +000066 <Logs />
67 </TabsContent>
giocc5ce582025-06-25 07:45:21 +040068 {agents.map((a) => (
69 <TabsContent value={`agent-${a.agentName}`} className="!mt-0 flex-1 min-h-0">
70 <iframe key={a.name} src={a.address} title={a.agentName} className="w-full h-full" />
71 </TabsContent>
72 ))}
giod0026612025-05-08 13:00:36 +000073 </Tabs>
74 );
gio5f2f1002025-03-20 18:38:48 +040075}