Connected Sources
+ + {totalSourceCount} + +No sources yet
++ Add documents or connect data sources to enhance search results. +
+ +Connected Sources
- - {totalSourceCount} - -No sources yet
-- Add documents or connect data sources to enhance search results. -
- -Connected Sources
- - {totalSourceCount} - -No sources yet
-- Add documents or connect data sources to enhance search results. -
- -+ {isConnected ? "Connected" : connector.description} +
++ {connector.description} +
++ {getDocumentTypeLabel(docType)} +
++ {count as number} documents indexed +
++ {connector.name} +
+Status: Active
++ Connect your first service to start searching across all your data. +
+@@ -533,8 +537,11 @@ export const ConnectorIndicator: FC = () => {
+ Configure when to start syncing your data +
++ Choose how far back you want to sync your data. You can always re-index later with different dates. +
+ ++ Automatically re-index at regular intervals +
+Indexing runs in the background
++ You can continue using SurfSense while we sync your data. Check the Active tab to see progress. +
++ {connector.name} +
+ {isIndexing ? ( +
+
+ {connector.last_indexed_at + ? `Last indexed: ${format(new Date(connector.last_indexed_at), "MMM d, yyyy")}` + : "Never indexed"} +
+ )} +- {connector.name} -
-Status: Active
-- Configure when to start syncing your data -
-- Choose how far back you want to sync your data. You can always re-index later with different dates. -
- -- Automatically re-index at regular intervals -
-Indexing runs in the background
-- You can continue using SurfSense while we sync your data. Check the Active tab to see progress. -
-- {isConnected ? "Connected" : connector.description} -
-- {connector.description} -
-- {getDocumentTypeLabel(docType)} -
-- {count as number} documents indexed -
-- {connector.name} -
- {isIndexing ? ( -
-
- {connector.last_indexed_at - ? `Last indexed: ${format(new Date(connector.last_indexed_at), "MMM d, yyyy")}` - : "Never indexed"} -
- )} -- Connect your first service to start searching across all your data. -
-+ {getDocumentTypeLabel(docType)} +
++ {count as number} documents indexed +
++ {connector.name} +
+ {isIndexing ? ( +
+
+ {connector.last_indexed_at + ? `Last indexed: ${format(new Date(connector.last_indexed_at), "MMM d, yyyy")}` + : "Never indexed"} +
+ )} ++ Connect your first service to start searching across all your data. +
++ {connector.description} +
++ {isConnected ? "Connected" : description} +
++ Choose how far back you want to sync your data. You can always re-index later with different dates. +
+ ++ Configure when to start syncing your data +
+Indexing runs in the background
++ You can continue using SurfSense while we sync your data. Check the Active tab to see progress. +
++ Automatically re-index at regular intervals +
+- {connector.description} -
-
{isConnected ? "Connected" : description}
diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-constants.ts b/surfsense_web/components/assistant-ui/connector-popup/connector-constants.ts
index 65d5bd516..a2750e133 100644
--- a/surfsense_web/components/assistant-ui/connector-popup/connector-constants.ts
+++ b/surfsense_web/components/assistant-ui/connector-popup/connector-constants.ts
@@ -2,6 +2,13 @@ import { EnumConnectorName } from "@/contracts/enums/connector";
// OAuth Connectors (Quick Connect)
export const OAUTH_CONNECTORS = [
+ {
+ id: "google-drive-connector",
+ title: "Google Drive",
+ description: "Search your Drive files",
+ connectorType: EnumConnectorName.GOOGLE_DRIVE_CONNECTOR,
+ authEndpoint: "/api/v1/auth/google/drive/connector/add/",
+ },
{
id: "google-gmail-connector",
title: "Gmail",
@@ -125,10 +132,6 @@ export const OTHER_CONNECTORS = [
},
] as const;
-// Type for the indexing configuration state
-export interface IndexingConfigState {
- connectorType: string;
- connectorId: number;
- connectorTitle: string;
-}
+// Re-export IndexingConfigState from schemas for backward compatibility
+export type { IndexingConfigState } from "./connector-popup.schemas";
diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-popup.schemas.ts b/surfsense_web/components/assistant-ui/connector-popup/connector-popup.schemas.ts
new file mode 100644
index 000000000..118625e57
--- /dev/null
+++ b/surfsense_web/components/assistant-ui/connector-popup/connector-popup.schemas.ts
@@ -0,0 +1,108 @@
+import { z } from "zod";
+import { searchSourceConnectorTypeEnum } from "@/contracts/types/connector.types";
+
+/**
+ * Schema for URL query parameters used by the connector popup
+ */
+export const connectorPopupQueryParamsSchema = z.object({
+ modal: z.enum(["connectors"]).optional(),
+ tab: z.enum(["all", "active"]).optional(),
+ view: z.enum(["configure"]).optional(),
+ connector: z.string().optional(),
+ success: z.enum(["true", "false"]).optional(),
+});
+
+export type ConnectorPopupQueryParams = z.infer Indexing runs in the background
- You can continue using SurfSense while we sync your data. Check the Active tab to see progress.
- Indexing runs in the background
+ You can continue using SurfSense while we sync your data. Check the Active tab to see progress.
+
+ Select specific folders to index. Only files directly in each folder will be processed—subfolders must be selected separately.
+
+ Selected {selectedFolders.length} folder{selectedFolders.length > 1 ? "s" : ""}:
+
+ • {folder.name}
+
+ Manage your connector settings and sync configuration
+ Re-indexing runs in the background
+ You can continue using SurfSense while we sync your data. Check the Active tab to see progress.
+
+
Choose how far back you want to sync your data. You can always re-index later with different dates.
Folder Selection
+
+ {connector.name}
+
+ Select Date Range
- Select Date Range
+