diff --git a/apps/web/components/add-document/connections.tsx b/apps/web/components/add-document/connections.tsx index 8b24a6bd..11077075 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 { useConnectorAccess } from "@/hooks/use-connector-access" import type { ConnectionResponseSchema } from "@repo/validation/api" import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query" -import { GoogleDrive, Granola, Notion, OneDrive } from "@ui/assets/icons" +import { GoogleDrive, Granola, Notion, OneDrive, Zoom } from "@ui/assets/icons" import { useCustomer } from "autumn-js/react" import { Check, @@ -53,7 +53,12 @@ const GDRIVE_SCOPE_LABELS: Record = { type Connection = z.infer -type ConnectorProvider = "google-drive" | "notion" | "onedrive" | "granola" +type ConnectorProvider = + | "google-drive" + | "notion" + | "onedrive" + | "zoom" + | "granola" const CONNECTORS: Record< ConnectorProvider, @@ -82,6 +87,12 @@ const CONNECTORS: Record< documentLabel: "documents", icon: OneDrive, }, + zoom: { + title: "Zoom", + description: "Sync meeting notes, transcripts, and AI summaries", + documentLabel: "meetings", + icon: Zoom, + }, granola: { title: "Granola", description: "Sync AI meeting notes and transcripts", @@ -793,6 +804,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 96cd382d..4c30a5e2 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, Granola, Notion, OneDrive } from "@ui/assets/icons" +import { GoogleDrive, Granola, Notion, OneDrive, Zoom } from "@ui/assets/icons" import { useCustomer } from "autumn-js/react" import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query" import { @@ -72,6 +72,12 @@ const CONNECTORS = { icon: OneDrive, documentLabel: "documents", }, + zoom: { + title: "Zoom", + description: "Sync meeting notes, transcripts, and AI summaries", + icon: Zoom, + documentLabel: "meetings", + }, granola: { title: "Granola", description: "Sync AI meeting notes and transcripts", diff --git a/apps/web/components/settings/sync-utils.ts b/apps/web/components/settings/sync-utils.ts index 7028b545..b22e1e70 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", granola: "Granola", } @@ -61,4 +62,5 @@ export type ImportProvider = | "github" | "web-crawler" | "s3" + | "zoom" | "granola" diff --git a/packages/lib/api.ts b/packages/lib/api.ts index 7cf8755f..7857e622 100644 --- a/packages/lib/api.ts +++ b/packages/lib/api.ts @@ -115,7 +115,13 @@ export const apiSchema = createSchema({ redirectsTo: z.string().optional(), }), params: z.object({ - provider: z.enum(["google-drive", "notion", "onedrive", "granola"]), + provider: z.enum([ + "google-drive", + "notion", + "onedrive", + "zoom", + "granola", + ]), }), }, @@ -183,6 +189,7 @@ export const apiSchema = createSchema({ "github", "web-crawler", "s3", + "zoom", "granola", ]), }), diff --git a/packages/ui/assets/icons.tsx b/packages/ui/assets/icons.tsx index 7aaece87..77a0e3ce 100644 --- a/packages/ui/assets/icons.tsx +++ b/packages/ui/assets/icons.tsx @@ -393,6 +393,21 @@ export const ClaudeDesktopIcon = ({ className }: { className?: string }) => { ) } +export const Zoom = ({ className }: { className?: string }) => ( + + Zoom + + +) + export const Granola = ({ className }: { className?: string }) => (