diff --git a/web/public/example-workflows/ipadapter.webp b/web/public/example-workflows/ipadapter.webp new file mode 100644 index 0000000..1375a58 Binary files /dev/null and b/web/public/example-workflows/ipadapter.webp differ diff --git a/web/public/example-workflows/txt2img-lcm.webp b/web/public/example-workflows/txt2img-lcm.webp new file mode 100644 index 0000000..ef8e543 Binary files /dev/null and b/web/public/example-workflows/txt2img-lcm.webp differ diff --git a/web/public/example-workflows/txt2img.webp b/web/public/example-workflows/txt2img.webp new file mode 100644 index 0000000..9f5ee20 Binary files /dev/null and b/web/public/example-workflows/txt2img.webp differ diff --git a/web/public/example-workflows/upscale.webp b/web/public/example-workflows/upscale.webp new file mode 100644 index 0000000..7c8897d Binary files /dev/null and b/web/public/example-workflows/upscale.webp differ diff --git a/web/src/app/(app)/examples/loading.tsx b/web/src/app/(app)/examples/loading.tsx new file mode 100644 index 0000000..9ff4783 --- /dev/null +++ b/web/src/app/(app)/examples/loading.tsx @@ -0,0 +1,9 @@ +"use client"; + +import { LoadingPageWrapper } from "@/components/LoadingWrapper"; +import { usePathname } from "next/navigation"; + +export default function Loading() { + const pathName = usePathname(); + return ; +} diff --git a/web/src/app/(app)/examples/page.tsx b/web/src/app/(app)/examples/page.tsx new file mode 100644 index 0000000..b05de19 --- /dev/null +++ b/web/src/app/(app)/examples/page.tsx @@ -0,0 +1,90 @@ +import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; +import Image from "next/image"; +import Link from "next/link"; + +export default function Page() { + return ; +} + + +type exampleWorkflow = { + title: string; + description: string; + previewURL: string; + image: { + src: string, + alt: string, + }; +}; + +const exampleWorkflows: exampleWorkflow[] = [ + { + title: "Txt2Img SDXL", + description: "The basic workflow, type a prompt and generate images based on that.", + previewURL: 'https://www.comfydeploy.com/share/comfy-deploy-example-txt2img-sdxl', + image: { + src: '/example-workflows/txt2img.webp', + alt: 'IPAdapter workflow', + } + }, + { + title: "Txt2Img LCM SDXL", + description: "Images in a couple of seconds, increase the speed of each generation using LCM Lora.", + previewURL: 'https://www.comfydeploy.com/share/comfy-deploy-example-lcm-sdxl', + image: { + src: '/example-workflows/txt2img-lcm.webp', + alt: 'txt2img LCM SDXL', + } + }, + { + title: "IPAdapter SDXL", + description: "Load images and use them as reference for new generations.", + previewURL: 'https://www.comfydeploy.com/share/comfy-deploy-example-ip-adapter-sdxl', + image: { + src: '/example-workflows/ipadapter.webp', + alt: 'IPAdapter workflow', + } + }, + { + title: "Upscale and Add Detail SDXL", + description: "Upscale and Add Details to your creations", + previewURL: 'https://www.comfydeploy.com/share/comfy-deploy-example-upscale-and-add-detail-sdxl', + image: { + src: '/example-workflows/upscale.webp', + alt: 'Upscale and Add Detail SDXL', + } + } +]; + + +async function Examples() { + return ( +
+
+

+ Check out some examples +

+

Text to Image, Image to Image, IPAdapter, and more. Here are some examples that you can use to deploy your workflow.

+
+
+ {exampleWorkflows.map(workflow => { + return + + {workflow.title} + {workflow.description} + + + {workflow.image.alt} + + + + + ; + })} +
+
+ ); +} diff --git a/web/src/components/NavbarMenu.tsx b/web/src/components/NavbarMenu.tsx index 804e357..1724229 100644 --- a/web/src/components/NavbarMenu.tsx +++ b/web/src/components/NavbarMenu.tsx @@ -40,6 +40,10 @@ export function NavbarMenu({ name: "API Keys", path: "/api-keys", }, + { + name: "Examples", + path: "/examples" + } ]; return ( @@ -48,9 +52,9 @@ export function NavbarMenu({ {isDesktop && ( - + {pages.map((page) => (