diff --git a/src/frontend/src/components/NewFlowCardComponent/index.tsx b/src/frontend/src/components/NewFlowCardComponent/index.tsx
new file mode 100644
index 000000000..131fb3543
--- /dev/null
+++ b/src/frontend/src/components/NewFlowCardComponent/index.tsx
@@ -0,0 +1,54 @@
+import { useEffect, useState } from "react";
+import { getComponent, postLikeComponent } from "../../controllers/API";
+import DeleteConfirmationModal from "../../modals/DeleteConfirmationModal";
+import useAlertStore from "../../stores/alertStore";
+import useFlowsManagerStore from "../../stores/flowsManagerStore";
+import { useStoreStore } from "../../stores/storeStore";
+import { storeComponent } from "../../types/store";
+import cloneFLowWithParent from "../../utils/storeUtils";
+import { cn } from "../../utils/utils";
+import ShadTooltip from "../ShadTooltipComponent";
+import IconComponent from "../genericIconComponent";
+import { Badge } from "../ui/badge";
+import { Button } from "../ui/button";
+import {
+ Card,
+ CardContent,
+ CardDescription,
+ CardFooter,
+ CardHeader,
+ CardTitle,
+} from "../ui/card";
+import { FlowType } from "../../types/flow";
+import { useNavigate } from "react-router-dom";
+
+export default function NewFlowCardComponent({
+}: {
+ }) {
+ const addFlow = useFlowsManagerStore((state) => state.addFlow);
+ const navigate = useNavigate();
+
+ return (
+
+
+
+
+
+ );
+}
diff --git a/src/frontend/src/components/exampleComponent/index.tsx b/src/frontend/src/components/exampleComponent/index.tsx
new file mode 100644
index 000000000..af0cf56ea
--- /dev/null
+++ b/src/frontend/src/components/exampleComponent/index.tsx
@@ -0,0 +1,78 @@
+import { useEffect, useState } from "react";
+import { getComponent, postLikeComponent } from "../../controllers/API";
+import DeleteConfirmationModal from "../../modals/DeleteConfirmationModal";
+import useAlertStore from "../../stores/alertStore";
+import useFlowsManagerStore from "../../stores/flowsManagerStore";
+import { useStoreStore } from "../../stores/storeStore";
+import { storeComponent } from "../../types/store";
+import cloneFLowWithParent from "../../utils/storeUtils";
+import { cn } from "../../utils/utils";
+import ShadTooltip from "../ShadTooltipComponent";
+import IconComponent from "../genericIconComponent";
+import { Badge } from "../ui/badge";
+import { Button } from "../ui/button";
+import {
+ Card,
+ CardDescription,
+ CardFooter,
+ CardHeader,
+ CardTitle,
+} from "../ui/card";
+import { FlowType } from "../../types/flow";
+
+export default function CollectionCardComponent({
+ data,
+}: {
+ data: FlowType;
+ authorized?: boolean;
+}) {
+ const addFlow = useFlowsManagerStore((state) => state.addFlow);
+
+ return (
+
+
+
+
+
+
+
+ {data.name}
+
+
+
+
+ {data.description}
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/frontend/src/pages/MainPage/index.tsx b/src/frontend/src/pages/MainPage/index.tsx
index cc4115e7e..fc8747094 100644
--- a/src/frontend/src/pages/MainPage/index.tsx
+++ b/src/frontend/src/pages/MainPage/index.tsx
@@ -1,5 +1,5 @@
import { Group, ToyBrick } from "lucide-react";
-import { useEffect } from "react";
+import { useEffect, useState } from "react";
import { Outlet, useLocation, useNavigate } from "react-router-dom";
import DropdownButton from "../../components/DropdownButtonComponent";
import IconComponent from "../../components/genericIconComponent";
@@ -14,6 +14,9 @@ import {
import useAlertStore from "../../stores/alertStore";
import useFlowsManagerStore from "../../stores/flowsManagerStore";
import { downloadFlows } from "../../utils/reactflowUtils";
+import BaseModal from "../../modals/baseModal";
+import ExampleCardComponent from "../../components/exampleComponent";
+import NewFlowCardComponent from "../../components/NewFlowCardComponent";
export default function HomePage(): JSX.Element {
const addFlow = useFlowsManagerStore((state) => state.addFlow);
const uploadFlow = useFlowsManagerStore((state) => state.uploadFlow);
@@ -25,6 +28,7 @@ export default function HomePage(): JSX.Element {
const setErrorData = useAlertStore((state) => state.setErrorData);
const location = useLocation();
const pathname = location.pathname;
+ const [openModal, setOpenModal] = useState(false);
const is_component = pathname === "/components";
const dropdownOptions = [
{
@@ -36,9 +40,8 @@ export default function HomePage(): JSX.Element {
})
.then((id) => {
setSuccessData({
- title: `${
- is_component ? "Component" : "Flow"
- } uploaded successfully`,
+ title: `${is_component ? "Component" : "Flow"
+ } uploaded successfully`,
});
if (!is_component) navigate("/flow/" + id);
})
@@ -98,11 +101,7 @@ export default function HomePage(): JSX.Element {
{
- addFlow(true).then((id) => {
- navigate("/flow/" + id);
- });
- }}
+ onFirstBtnClick={() => setOpenModal(true)}
options={dropdownOptions}
/>
@@ -116,6 +115,27 @@ export default function HomePage(): JSX.Element {
+
+
+
+ Create a New Flow
+
+
+
+
+
+
+
+
+
+
);
}
diff --git a/src/frontend/src/utils/styleUtils.ts b/src/frontend/src/utils/styleUtils.ts
index 601066407..96d754e85 100644
--- a/src/frontend/src/utils/styleUtils.ts
+++ b/src/frontend/src/utils/styleUtils.ts
@@ -5,8 +5,11 @@ import {
Bell,
BookMarked,
BookmarkPlus,
+ PlusCircle,
+ PlusSquare,
Bot,
Boxes,
+ GitCompare,
Braces,
Check,
CheckCircle2,
@@ -392,6 +395,8 @@ export const nodeIconsLucide: iconsType = {
Circle,
CircleDot,
Clipboard,
+ PlusCircle,
+ PlusSquare,
Code2,
Variable,
Snowflake,
@@ -469,3 +474,4 @@ export const nodeIconsLucide: iconsType = {
Delete,
Command,
};
+