From 038cdb3ed32e7a77a10575431185825d8933c5dd Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:24:38 +0530 Subject: [PATCH] feat: add new integrations and update icon handling in the homepage --- .../components/homepage/integrations.tsx | 35 +++++++++---- .../contracts/enums/connectorIcons.tsx | 10 ++-- .../public/connectors/circleback.svg | 19 +++++++ surfsense_web/public/connectors/linkup.svg | 50 +++++++++++++++++++ 4 files changed, 98 insertions(+), 16 deletions(-) create mode 100644 surfsense_web/public/connectors/circleback.svg create mode 100644 surfsense_web/public/connectors/linkup.svg diff --git a/surfsense_web/components/homepage/integrations.tsx b/surfsense_web/components/homepage/integrations.tsx index d8361d721..fc250e65b 100644 --- a/surfsense_web/components/homepage/integrations.tsx +++ b/surfsense_web/components/homepage/integrations.tsx @@ -1,6 +1,7 @@ "use client"; import type React from "react"; +import Image from "next/image"; interface Integration { name: string; @@ -44,15 +45,24 @@ const INTEGRATIONS: Integration[] = [ // Media { name: "YouTube", icon: "/connectors/youtube.svg" }, + + // Search + { name: "Linkup", icon: "/connectors/linkup.svg" }, + + // Meetings + { name: "Circleback", icon: "/connectors/circleback.svg" }, + + // AI + { name: "MCP", icon: "/connectors/modelcontextprotocol.svg" }, ]; -// 5 vertical columns — 21 icons spread across categories +// 5 vertical columns — 23 icons spread across categories const COLUMNS: number[][] = [ - [2, 5, 10, 0, 11], + [2, 5, 10, 0, 21, 11], [1, 7, 20, 17], - [13, 6, 4, 16], + [13, 6, 23, 4, 16], [12, 8, 15, 18], - [3, 9, 14, 19], + [3, 9, 14, 22, 19], ]; // Different scroll speeds per column for organic feel (seconds) @@ -61,7 +71,7 @@ const SCROLL_DURATIONS = [26, 32, 22, 30, 28]; function IntegrationCard({ integration }: { integration: Integration }) { return (
- {integration.name} + {integration.name}
); } diff --git a/surfsense_web/contracts/enums/connectorIcons.tsx b/surfsense_web/contracts/enums/connectorIcons.tsx index 18a872d94..e29e5be6e 100644 --- a/surfsense_web/contracts/enums/connectorIcons.tsx +++ b/surfsense_web/contracts/enums/connectorIcons.tsx @@ -1,4 +1,4 @@ -import { IconLinkPlus, IconUsersGroup } from "@tabler/icons-react"; +import { IconUsersGroup } from "@tabler/icons-react"; import { BookOpen, File, @@ -15,11 +15,11 @@ import { EnumConnectorName } from "./connector"; export const getConnectorIcon = (connectorType: EnumConnectorName | string, className?: string) => { const iconProps = { className: className || "h-4 w-4" }; - const imgProps = { className: className || "h-5 w-5", width: 20, height: 20 }; + const imgProps = { className: `${className || "h-5 w-5"} select-none pointer-events-none`, width: 20, height: 20, draggable: false as const }; switch (connectorType) { - case EnumConnectorName.LINKUP_API: - return ; + case EnumConnectorName.LINKUP_API: + return Linkup; case EnumConnectorName.LINEAR_CONNECTOR: return Linear; case EnumConnectorName.GITHUB_CONNECTOR: @@ -63,7 +63,7 @@ export const getConnectorIcon = (connectorType: EnumConnectorName | string, clas case EnumConnectorName.YOUTUBE_CONNECTOR: return YouTube; case EnumConnectorName.CIRCLEBACK_CONNECTOR: - return ; + return Circleback; case EnumConnectorName.MCP_CONNECTOR: return MCP; case EnumConnectorName.OBSIDIAN_CONNECTOR: diff --git a/surfsense_web/public/connectors/circleback.svg b/surfsense_web/public/connectors/circleback.svg new file mode 100644 index 000000000..76bdcddd8 --- /dev/null +++ b/surfsense_web/public/connectors/circleback.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/surfsense_web/public/connectors/linkup.svg b/surfsense_web/public/connectors/linkup.svg new file mode 100644 index 000000000..8b0ffb071 --- /dev/null +++ b/surfsense_web/public/connectors/linkup.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + +