🎉 feat(cardComponent): add CardComponent to display flow information
The CardComponent is a new component that displays information about a flow. It includes a header with the flow name and a delete button, a description, and a footer with badges and an edit button. The component is designed to be reusable and can display different types of flows.
This commit is contained in:
parent
07d9d1163a
commit
99cbd27623
1 changed files with 85 additions and 0 deletions
85
src/frontend/src/components/cardComponent/index.tsx
Normal file
85
src/frontend/src/components/cardComponent/index.tsx
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
import React from "react";
|
||||
import {
|
||||
ArrowTopRightOnSquareIcon,
|
||||
TrashIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
import { OpenAiIcon } from "../../icons/OpenAi";
|
||||
import { Button } from "../../components/ui/button";
|
||||
import { Badge } from "../../components/ui/badge";
|
||||
import {
|
||||
Card,
|
||||
CardDescription,
|
||||
CardFooter,
|
||||
CardHeader,
|
||||
CardTitle,
|
||||
} from "../ui/card";
|
||||
export const CardComponent = ({
|
||||
flow,
|
||||
idx,
|
||||
removeFlow,
|
||||
setTabIndex,
|
||||
setActiveTab,
|
||||
}) => {
|
||||
return (
|
||||
<Card className="group">
|
||||
<CardHeader>
|
||||
<CardTitle className="flex justify-between items-start">
|
||||
<div className="flex gap-4 items-center">
|
||||
<span
|
||||
className={
|
||||
"rounded-md w-10 h-10 flex items-center justify-center text-2xl " +
|
||||
(idx === 0 ? "bg-blue-100" : " bg-orange-100")
|
||||
}
|
||||
>
|
||||
{idx === 0 ? "🤖" : "🛠️"}
|
||||
</span>
|
||||
{flow.name}
|
||||
</div>
|
||||
<button
|
||||
onClick={() => {
|
||||
removeFlow(flow.id);
|
||||
}}
|
||||
>
|
||||
<TrashIcon className="w-5 text-primary opacity-0 group-hover:opacity-100 transition-all" />
|
||||
</button>
|
||||
</CardTitle>
|
||||
<CardDescription className="pt-2 pb-2">
|
||||
<div className="truncate-doubleline">
|
||||
{idx === 0
|
||||
? "This flow creates an agent that accesses a department store database and APIs to monitor customer activity and overall storage."
|
||||
: "This is a new Flow"}
|
||||
{/* {flow.description} */}
|
||||
</div>
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
|
||||
<CardFooter>
|
||||
<div className="flex gap-2 w-full justify-between items-end">
|
||||
<div className="flex flex-wrap gap-2">
|
||||
<Badge variant="secondary">{idx === 0 ? "Agent" : "Tool"}</Badge>
|
||||
{idx === 0 && (
|
||||
<Badge variant="secondary">
|
||||
<div className="w-3">
|
||||
<OpenAiIcon />
|
||||
</div>
|
||||
<span className="text-base"> </span>OpenAI+
|
||||
</Badge>
|
||||
)}
|
||||
</div>
|
||||
<Button
|
||||
variant="outline"
|
||||
size="sm"
|
||||
className="whitespace-nowrap opacity-0 group-hover:opacity-100 transition-all"
|
||||
onClick={() => {
|
||||
setTabIndex(idx);
|
||||
setActiveTab("myflow");
|
||||
}}
|
||||
>
|
||||
<ArrowTopRightOnSquareIcon className="w-4 mr-2" />
|
||||
Edit
|
||||
</Button>
|
||||
</div>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
);
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue