From 688c94254668c55d72b8fc06e268fb599465c759 Mon Sep 17 00:00:00 2001 From: Sreeram Sreedhar Date: Tue, 26 May 2026 01:15:47 -0400 Subject: [PATCH 1/2] feat(zoom): wire Zoom into Nova add-document dropdown + settings --- .../components/add-document/connections.tsx | 27 +++++++++++++++++-- .../components/settings/connections-mcp.tsx | 8 +++++- apps/web/components/settings/sync-utils.ts | 2 ++ packages/lib/api.ts | 7 ++--- packages/ui/assets/icons.tsx | 11 ++++++++ 5 files changed, 49 insertions(+), 6 deletions(-) diff --git a/apps/web/components/add-document/connections.tsx b/apps/web/components/add-document/connections.tsx index 7aa0250d5..6e3c15bf5 100644 --- a/apps/web/components/add-document/connections.tsx +++ b/apps/web/components/add-document/connections.tsx @@ -4,7 +4,7 @@ import { $fetch } from "@lib/api" import { hasActivePlan } from "@lib/queries" import type { ConnectionResponseSchema } from "@repo/validation/api" import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query" -import { GoogleDrive, Notion, OneDrive } from "@ui/assets/icons" +import { GoogleDrive, Notion, OneDrive, Zoom } from "@ui/assets/icons" import { useCustomer } from "autumn-js/react" import { Check, @@ -48,7 +48,7 @@ const GDRIVE_SCOPE_LABELS: Record = { type Connection = z.infer -type ConnectorProvider = "google-drive" | "notion" | "onedrive" +type ConnectorProvider = "google-drive" | "notion" | "onedrive" | "zoom" const CONNECTORS: Record< ConnectorProvider, @@ -77,6 +77,12 @@ const CONNECTORS: Record< documentLabel: "documents", icon: OneDrive, }, + zoom: { + title: "Zoom", + description: "Sync meeting notes, transcripts, and AI summaries", + documentLabel: "meetings", + icon: Zoom, + }, } as const /** Extract typed metadata from a connection, with runtime validation. */ @@ -753,6 +759,23 @@ export function ConnectContent({ selectedProject }: ConnectContentProps) { + { + setConnectingProvider("zoom") + addConnectionMutation.mutate({ provider: "zoom" }) + }} + className="flex items-start gap-2.5 px-3 py-2.5 rounded-md cursor-pointer text-white opacity-60 hover:opacity-100 hover:bg-[#293952]/40 focus:bg-[#293952]/40 focus:opacity-100" + > + +
+ + Zoom + + + Meetings & transcripts + +
+
diff --git a/apps/web/components/settings/connections-mcp.tsx b/apps/web/components/settings/connections-mcp.tsx index 26412728f..9b7c9e082 100644 --- a/apps/web/components/settings/connections-mcp.tsx +++ b/apps/web/components/settings/connections-mcp.tsx @@ -4,7 +4,7 @@ import { dmSans125ClassName } from "@/lib/fonts" import { cn } from "@lib/utils" import { $fetch } from "@lib/api" import { hasActivePlan } from "@lib/queries" -import { GoogleDrive, Notion, OneDrive } from "@ui/assets/icons" +import { GoogleDrive, Notion, OneDrive, Zoom } from "@ui/assets/icons" import { useCustomer } from "autumn-js/react" import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query" import { @@ -68,6 +68,12 @@ const CONNECTORS = { icon: OneDrive, documentLabel: "documents", }, + zoom: { + title: "Zoom", + description: "Sync meeting notes, transcripts, and AI summaries", + icon: Zoom, + documentLabel: "meetings", + }, } as const type ConnectorProvider = keyof typeof CONNECTORS diff --git a/apps/web/components/settings/sync-utils.ts b/apps/web/components/settings/sync-utils.ts index 25a683ba8..247d06fc8 100644 --- a/apps/web/components/settings/sync-utils.ts +++ b/apps/web/components/settings/sync-utils.ts @@ -42,6 +42,7 @@ export const PROVIDER_DISPLAY_NAMES: Record = { github: "GitHub", "web-crawler": "Web Crawler", s3: "S3", + zoom: "Zoom", } /** Provider type union matching the backend import endpoint */ @@ -53,3 +54,4 @@ export type ImportProvider = | "github" | "web-crawler" | "s3" + | "zoom" diff --git a/packages/lib/api.ts b/packages/lib/api.ts index 76d62fda9..2edcf370f 100644 --- a/packages/lib/api.ts +++ b/packages/lib/api.ts @@ -84,13 +84,13 @@ export const apiSchema = createSchema({ redirectUrl: z.string().optional(), }), output: z.object({ - authLink: z.string(), - expiresIn: z.string(), + authLink: z.string().optional(), + expiresIn: z.string().optional(), id: z.string(), redirectsTo: z.string().optional(), }), params: z.object({ - provider: z.enum(["google-drive", "notion", "onedrive"]), + provider: z.enum(["google-drive", "notion", "onedrive", "zoom"]), }), }, @@ -158,6 +158,7 @@ export const apiSchema = createSchema({ "github", "web-crawler", "s3", + "zoom", ]), }), }, diff --git a/packages/ui/assets/icons.tsx b/packages/ui/assets/icons.tsx index 9c30d2e3e..2f6d2fde7 100644 --- a/packages/ui/assets/icons.tsx +++ b/packages/ui/assets/icons.tsx @@ -362,3 +362,14 @@ export const ClaudeDesktopIcon = ({ className }: { className?: string }) => { ) } + +export const Zoom = ({ className }: { className?: string }) => ( + + Zoom + + +) From 11e615bf542561d1ee6c73c38bc30596b9aaacd6 Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Wed, 27 May 2026 02:28:06 +0000 Subject: [PATCH 2/2] fix(ui): format Zoom icon attributes for Biome compliance Co-Authored-By: Claude Opus 4.5 --- packages/ui/assets/icons.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/ui/assets/icons.tsx b/packages/ui/assets/icons.tsx index 2f6d2fde7..7ea8aa3a6 100644 --- a/packages/ui/assets/icons.tsx +++ b/packages/ui/assets/icons.tsx @@ -370,6 +370,10 @@ export const Zoom = ({ className }: { className?: string }) => ( xmlns="http://www.w3.org/2000/svg" > Zoom - + )