diff --git a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx index 68d971fc4..8a5e3cd96 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx @@ -744,7 +744,11 @@ export function DocumentsTableShell({ - onOpenInTab ? onOpenInTab(doc) : handleViewDocument(doc)}> + + onOpenInTab ? onOpenInTab(doc) : handleViewDocument(doc) + } + > Open diff --git a/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx index 4e93ace51..29bbc0c5c 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx @@ -1581,4 +1581,4 @@ export default function NewChatPage() { ); -} \ No newline at end of file +} diff --git a/surfsense_web/app/dashboard/[search_space_id]/team/team-content.tsx b/surfsense_web/app/dashboard/[search_space_id]/team/team-content.tsx index b6f008887..d9ca9efb3 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/team/team-content.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/team/team-content.tsx @@ -308,7 +308,8 @@ export function TeamContent({ searchSpaceId }: TeamContentProps) { {invitesLoading ? ( ) : ( - canInvite && activeInvites.length > 0 && ( + canInvite && + activeInvites.length > 0 && ( ) )} diff --git a/surfsense_web/components/assistant-ui/assistant-message.tsx b/surfsense_web/components/assistant-ui/assistant-message.tsx index abd70e3f4..a3d84128c 100644 --- a/surfsense_web/components/assistant-ui/assistant-message.tsx +++ b/surfsense_web/components/assistant-ui/assistant-message.tsx @@ -7,7 +7,14 @@ import { useAuiState, } from "@assistant-ui/react"; import { useAtomValue } from "jotai"; -import { CheckIcon, ClipboardPaste, CopyIcon, DownloadIcon, MessageSquare, RefreshCwIcon } from "lucide-react"; +import { + CheckIcon, + ClipboardPaste, + CopyIcon, + DownloadIcon, + MessageSquare, + RefreshCwIcon, +} from "lucide-react"; import type { FC } from "react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { commentsEnabledAtom, targetCommentIdAtom } from "@/atoms/chat/current-thread.atom"; @@ -40,10 +47,6 @@ import { CreateGoogleDriveFileToolUI, DeleteGoogleDriveFileToolUI, } from "@/components/tool-ui/google-drive"; -import { - CreateOneDriveFileToolUI, - DeleteOneDriveFileToolUI, -} from "@/components/tool-ui/onedrive"; import { CreateJiraIssueToolUI, DeleteJiraIssueToolUI, @@ -59,6 +62,7 @@ import { DeleteNotionPageToolUI, UpdateNotionPageToolUI, } from "@/components/tool-ui/notion"; +import { CreateOneDriveFileToolUI, DeleteOneDriveFileToolUI } from "@/components/tool-ui/onedrive"; import { SandboxExecuteToolUI } from "@/components/tool-ui/sandbox-execute"; import { RecallMemoryToolUI, SaveMemoryToolUI } from "@/components/tool-ui/user-memory"; import { GenerateVideoPresentationToolUI } from "@/components/tool-ui/video-presentation"; diff --git a/surfsense_web/components/assistant-ui/connector-popup.tsx b/surfsense_web/components/assistant-ui/connector-popup.tsx index f1cf5ee4d..c8175fcb7 100644 --- a/surfsense_web/components/assistant-ui/connector-popup.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup.tsx @@ -340,11 +340,11 @@ export const ConnectorIndicator = forwardRef { const cfg = connectorConfig || editingConnector.config; - const isDriveOrOneDrive = - editingConnector.connector_type === "GOOGLE_DRIVE_CONNECTOR" || - editingConnector.connector_type === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" || - editingConnector.connector_type === "ONEDRIVE_CONNECTOR"; - const hasDriveItems = isDriveOrOneDrive + const isDriveOrOneDrive = + editingConnector.connector_type === "GOOGLE_DRIVE_CONNECTOR" || + editingConnector.connector_type === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" || + editingConnector.connector_type === "ONEDRIVE_CONNECTOR"; + const hasDriveItems = isDriveOrOneDrive ? ((cfg?.selected_folders as unknown[]) ?? []).length > 0 || ((cfg?.selected_files as unknown[]) ?? []).length > 0 : true; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/onedrive-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/onedrive-config.tsx index 250a353cd..dc8ec3ded 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/onedrive-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/onedrive-config.tsx @@ -212,8 +212,7 @@ export const OneDriveConfig: FC = ({ connector, onConfigCh {isAuthExpired && (

- Your OneDrive authentication has expired. Please re-authenticate using the button - below. + Your OneDrive authentication has expired. Please re-authenticate using the button below.

)} diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx index ba43ce823..605de93b7 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx @@ -19,9 +19,9 @@ import { LinkupApiConfig } from "./components/linkup-api-config"; import { LumaConfig } from "./components/luma-config"; import { MCPConfig } from "./components/mcp-config"; import { ObsidianConfig } from "./components/obsidian-config"; +import { OneDriveConfig } from "./components/onedrive-config"; import { SlackConfig } from "./components/slack-config"; import { TavilyApiConfig } from "./components/tavily-api-config"; -import { OneDriveConfig } from "./components/onedrive-config"; import { TeamsConfig } from "./components/teams-config"; import { WebcrawlerConfig } from "./components/webcrawler-config"; diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts index 0ee34d7c2..e5ce803c1 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts @@ -779,11 +779,11 @@ export const useConnectorDialog = () => { }); } - // Handle Google Drive / OneDrive folder selection (regular and Composio) - if ( - (indexingConfig.connectorType === "GOOGLE_DRIVE_CONNECTOR" || - indexingConfig.connectorType === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" || - indexingConfig.connectorType === "ONEDRIVE_CONNECTOR") && + // Handle Google Drive / OneDrive folder selection (regular and Composio) + if ( + (indexingConfig.connectorType === "GOOGLE_DRIVE_CONNECTOR" || + indexingConfig.connectorType === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" || + indexingConfig.connectorType === "ONEDRIVE_CONNECTOR") && indexingConnectorConfig ) { const selectedFolders = indexingConnectorConfig.selected_folders as diff --git a/surfsense_web/components/assistant-ui/inline-mention-editor.tsx b/surfsense_web/components/assistant-ui/inline-mention-editor.tsx index b8a0febbe..af7a8397c 100644 --- a/surfsense_web/components/assistant-ui/inline-mention-editor.tsx +++ b/surfsense_web/components/assistant-ui/inline-mention-editor.tsx @@ -544,7 +544,12 @@ export const InlineMentionEditor = forwardRef {children} diff --git a/surfsense_web/components/assistant-ui/thread.tsx b/surfsense_web/components/assistant-ui/thread.tsx index e1e45c521..69eef939e 100644 --- a/surfsense_web/components/assistant-ui/thread.tsx +++ b/surfsense_web/components/assistant-ui/thread.tsx @@ -60,11 +60,11 @@ import { import { TooltipIconButton } from "@/components/assistant-ui/tooltip-icon-button"; import { UserMessage } from "@/components/assistant-ui/user-message"; import { SLIDEOUT_PANEL_OPENED_EVENT } from "@/components/layout/ui/sidebar/SidebarSlideOutPanel"; -import { PromptPicker, type PromptPickerRef } from "@/components/new-chat/prompt-picker"; import { DocumentMentionPicker, type DocumentMentionPickerRef, } from "@/components/new-chat/document-mention-picker"; +import { PromptPicker, type PromptPickerRef } from "@/components/new-chat/prompt-picker"; import { Avatar, AvatarFallback, AvatarGroup } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; import { Drawer, DrawerContent, DrawerHandle, DrawerTitle } from "@/components/ui/drawer"; @@ -490,7 +490,9 @@ const Composer: FC = () => { } const finalPrompt = action.prompt.includes("{selection}") ? action.prompt.replace("{selection}", () => userText) - : userText ? `${action.prompt}\n\n${userText}` : action.prompt; + : userText + ? `${action.prompt}\n\n${userText}` + : action.prompt; aui.composer().setText(finalPrompt); aui.composer().send(); editorRef.current?.clear(); @@ -582,9 +584,7 @@ const Composer: FC = () => { if (!showDocumentPopover && !showPromptPicker) { if (clipboardInitialText) { const userText = editorRef.current?.getText() ?? ""; - const combined = userText - ? `${userText}\n\n${clipboardInitialText}` - : clipboardInitialText; + const combined = userText ? `${userText}\n\n${clipboardInitialText}` : clipboardInitialText; aui.composer().setText(combined); setClipboardInitialText(undefined); } @@ -640,7 +640,7 @@ const Composer: FC = () => { return ( { currentUserId={currentUser?.id ?? null} members={members ?? []} /> -
+
{clipboardInitialText && ( { position: "fixed", ...(clipboardInitialText && composerBoxRef.current ? { top: `${composerBoxRef.current.getBoundingClientRect().bottom + 8}px` } - : { bottom: editorContainerRef.current - ? `${window.innerHeight - editorContainerRef.current.getBoundingClientRect().top + 8}px` - : "200px" } - ), + : { + bottom: editorContainerRef.current + ? `${window.innerHeight - editorContainerRef.current.getBoundingClientRect().top + 8}px` + : "200px", + }), left: editorContainerRef.current ? `${editorContainerRef.current.getBoundingClientRect().left}px` : "50%", diff --git a/surfsense_web/components/documents/FolderTreeView.tsx b/surfsense_web/components/documents/FolderTreeView.tsx index a8397e2b5..f63d5da5c 100644 --- a/surfsense_web/components/documents/FolderTreeView.tsx +++ b/surfsense_web/components/documents/FolderTreeView.tsx @@ -240,7 +240,9 @@ export function FolderTreeView({ return (

No documents found

-

Use the upload button or connect a source above

+

+ Use the upload button or connect a source above +

); } diff --git a/surfsense_web/components/layout/ui/sidebar/DocumentsSidebar.tsx b/surfsense_web/components/layout/ui/sidebar/DocumentsSidebar.tsx index da28c17e0..2b31b997e 100644 --- a/surfsense_web/components/layout/ui/sidebar/DocumentsSidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/DocumentsSidebar.tsx @@ -7,21 +7,21 @@ import { useParams } from "next/navigation"; import { useTranslations } from "next-intl"; import { useCallback, useEffect, useMemo, useState } from "react"; import { toast } from "sonner"; -import { MarkdownViewer } from "@/components/markdown-viewer"; import { DocumentsFilters } from "@/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsFilters"; import { sidebarSelectedDocumentsAtom } from "@/atoms/chat/mentioned-documents.atom"; import { connectorDialogOpenAtom } from "@/atoms/connector-dialog/connector-dialog.atoms"; import { connectorsAtom } from "@/atoms/connectors/connector-query.atoms"; import { deleteDocumentMutationAtom } from "@/atoms/documents/document-mutation.atoms"; import { expandedFolderIdsAtom } from "@/atoms/documents/folder.atoms"; -import { rightPanelCollapsedAtom } from "@/atoms/layout/right-panel.atom"; import { agentCreatedDocumentsAtom } from "@/atoms/documents/ui.atoms"; +import { rightPanelCollapsedAtom } from "@/atoms/layout/right-panel.atom"; import { openDocumentTabAtom } from "@/atoms/tabs/tabs.atom"; import { CreateFolderDialog } from "@/components/documents/CreateFolderDialog"; import type { DocumentNodeDoc } from "@/components/documents/DocumentNode"; import type { FolderDisplay } from "@/components/documents/FolderNode"; import { FolderPickerDialog } from "@/components/documents/FolderPickerDialog"; import { FolderTreeView } from "@/components/documents/FolderTreeView"; +import { MarkdownViewer } from "@/components/markdown-viewer"; import { EXPORT_FILE_EXTENSIONS } from "@/components/shared/ExportMenuItems"; import { AlertDialog, @@ -49,8 +49,8 @@ import type { DocumentTypeEnum } from "@/contracts/types/document.types"; import { useDebouncedValue } from "@/hooks/use-debounced-value"; import { useMediaQuery } from "@/hooks/use-media-query"; import { useIsMobile } from "@/hooks/use-mobile"; -import { foldersApiService } from "@/lib/apis/folders-api.service"; import { documentsApiService } from "@/lib/apis/documents-api.service"; +import { foldersApiService } from "@/lib/apis/folders-api.service"; import { authenticatedFetch } from "@/lib/auth-utils"; import { queries } from "@/zero/queries/index"; import { SidebarSlideOutPanel } from "./SidebarSlideOutPanel"; diff --git a/surfsense_web/components/new-chat/prompt-picker.tsx b/surfsense_web/components/new-chat/prompt-picker.tsx index dee3eae32..7f0dab8a4 100644 --- a/surfsense_web/components/new-chat/prompt-picker.tsx +++ b/surfsense_web/components/new-chat/prompt-picker.tsx @@ -1,5 +1,6 @@ "use client"; +import { useSetAtom } from "jotai"; import { BookOpen, Check, @@ -8,11 +9,10 @@ import { List, Minimize2, PenLine, + Plus, Search, Zap, - Plus, } from "lucide-react"; -import { useSetAtom } from "jotai"; import { forwardRef, useCallback, @@ -53,113 +53,192 @@ const ICONS: Record = { zap: , }; -const DEFAULT_ACTIONS: { name: string; prompt: string; mode: "transform" | "explore"; icon: string }[] = [ - { name: "Fix grammar", prompt: "Fix the grammar and spelling in the following text. Return only the corrected text, nothing else.\n\n{selection}", mode: "transform", icon: "check" }, - { name: "Make shorter", prompt: "Make the following text more concise while preserving its meaning. Return only the shortened text, nothing else.\n\n{selection}", mode: "transform", icon: "minimize" }, - { name: "Translate", prompt: "Translate the following text to English. If it is already in English, translate it to French. Return only the translation, nothing else.\n\n{selection}", mode: "transform", icon: "languages" }, - { name: "Rewrite", prompt: "Rewrite the following text to improve clarity and readability. Return only the rewritten text, nothing else.\n\n{selection}", mode: "transform", icon: "pen-line" }, - { name: "Summarize", prompt: "Summarize the following text concisely. Return only the summary, nothing else.\n\n{selection}", mode: "transform", icon: "list" }, - { name: "Explain", prompt: "Explain the following text in simple terms:\n\n{selection}", mode: "explore", icon: "book-open" }, - { name: "Ask my knowledge base", prompt: "Search my knowledge base for information related to:\n\n{selection}", mode: "explore", icon: "search" }, - { name: "Look up on the web", prompt: "Search the web for information about:\n\n{selection}", mode: "explore", icon: "globe" }, +const DEFAULT_ACTIONS: { + name: string; + prompt: string; + mode: "transform" | "explore"; + icon: string; +}[] = [ + { + name: "Fix grammar", + prompt: + "Fix the grammar and spelling in the following text. Return only the corrected text, nothing else.\n\n{selection}", + mode: "transform", + icon: "check", + }, + { + name: "Make shorter", + prompt: + "Make the following text more concise while preserving its meaning. Return only the shortened text, nothing else.\n\n{selection}", + mode: "transform", + icon: "minimize", + }, + { + name: "Translate", + prompt: + "Translate the following text to English. If it is already in English, translate it to French. Return only the translation, nothing else.\n\n{selection}", + mode: "transform", + icon: "languages", + }, + { + name: "Rewrite", + prompt: + "Rewrite the following text to improve clarity and readability. Return only the rewritten text, nothing else.\n\n{selection}", + mode: "transform", + icon: "pen-line", + }, + { + name: "Summarize", + prompt: + "Summarize the following text concisely. Return only the summary, nothing else.\n\n{selection}", + mode: "transform", + icon: "list", + }, + { + name: "Explain", + prompt: "Explain the following text in simple terms:\n\n{selection}", + mode: "explore", + icon: "book-open", + }, + { + name: "Ask my knowledge base", + prompt: "Search my knowledge base for information related to:\n\n{selection}", + mode: "explore", + icon: "search", + }, + { + name: "Look up on the web", + prompt: "Search the web for information about:\n\n{selection}", + mode: "explore", + icon: "globe", + }, ]; -export const PromptPicker = forwardRef( - function PromptPicker({ onSelect, onDone, externalSearch = "", containerStyle }, ref) { - const setUserSettingsDialog = useSetAtom(userSettingsDialogAtom); - const [highlightedIndex, setHighlightedIndex] = useState(0); - const [customPrompts, setCustomPrompts] = useState([]); - const scrollContainerRef = useRef(null); - const shouldScrollRef = useRef(false); - const itemRefs = useRef>(new Map()); +export const PromptPicker = forwardRef(function PromptPicker( + { onSelect, onDone, externalSearch = "", containerStyle }, + ref +) { + const setUserSettingsDialog = useSetAtom(userSettingsDialogAtom); + const [highlightedIndex, setHighlightedIndex] = useState(0); + const [customPrompts, setCustomPrompts] = useState([]); + const scrollContainerRef = useRef(null); + const shouldScrollRef = useRef(false); + const itemRefs = useRef>(new Map()); - useEffect(() => { - promptsApiService.list().then(setCustomPrompts).catch(() => {}); - }, []); + useEffect(() => { + promptsApiService + .list() + .then(setCustomPrompts) + .catch(() => {}); + }, []); - const allActions = useMemo(() => { - const customs = customPrompts.map((a) => ({ - name: a.name, - prompt: a.prompt, - mode: a.mode as "transform" | "explore", - icon: a.icon || "zap", - })); - return [...DEFAULT_ACTIONS, ...customs]; - }, [customPrompts]); + const allActions = useMemo(() => { + const customs = customPrompts.map((a) => ({ + name: a.name, + prompt: a.prompt, + mode: a.mode as "transform" | "explore", + icon: a.icon || "zap", + })); + return [...DEFAULT_ACTIONS, ...customs]; + }, [customPrompts]); - const filtered = useMemo(() => { - if (!externalSearch) return allActions; - return allActions.filter((a) => - a.name.toLowerCase().includes(externalSearch.toLowerCase()) - ); - }, [allActions, externalSearch]); + const filtered = useMemo(() => { + if (!externalSearch) return allActions; + return allActions.filter((a) => a.name.toLowerCase().includes(externalSearch.toLowerCase())); + }, [allActions, externalSearch]); - // Reset highlight when results change - const prevSearchRef = useRef(externalSearch); - if (prevSearchRef.current !== externalSearch) { - prevSearchRef.current = externalSearch; - if (highlightedIndex !== 0) { - setHighlightedIndex(0); - } + // Reset highlight when results change + const prevSearchRef = useRef(externalSearch); + if (prevSearchRef.current !== externalSearch) { + prevSearchRef.current = externalSearch; + if (highlightedIndex !== 0) { + setHighlightedIndex(0); } + } - const handleSelect = useCallback( - (index: number) => { - const action = filtered[index]; - if (!action) return; - onSelect({ name: action.name, prompt: action.prompt, mode: action.mode }); - }, - [filtered, onSelect] - ); + const handleSelect = useCallback( + (index: number) => { + const action = filtered[index]; + if (!action) return; + onSelect({ name: action.name, prompt: action.prompt, mode: action.mode }); + }, + [filtered, onSelect] + ); - // Auto-scroll highlighted item into view - useEffect(() => { - if (!shouldScrollRef.current) return; - shouldScrollRef.current = false; + // Auto-scroll highlighted item into view + useEffect(() => { + if (!shouldScrollRef.current) return; + shouldScrollRef.current = false; - const rafId = requestAnimationFrame(() => { - const item = itemRefs.current.get(highlightedIndex); - const container = scrollContainerRef.current; - if (item && container) { - const itemRect = item.getBoundingClientRect(); - const containerRect = container.getBoundingClientRect(); - if (itemRect.top < containerRect.top || itemRect.bottom > containerRect.bottom) { - item.scrollIntoView({ block: "nearest" }); - } + const rafId = requestAnimationFrame(() => { + const item = itemRefs.current.get(highlightedIndex); + const container = scrollContainerRef.current; + if (item && container) { + const itemRect = item.getBoundingClientRect(); + const containerRect = container.getBoundingClientRect(); + if (itemRect.top < containerRect.top || itemRect.bottom > containerRect.bottom) { + item.scrollIntoView({ block: "nearest" }); } - }); + } + }); - return () => cancelAnimationFrame(rafId); - }, [highlightedIndex]); + return () => cancelAnimationFrame(rafId); + }, [highlightedIndex]); - useImperativeHandle( - ref, - () => ({ - selectHighlighted: () => handleSelect(highlightedIndex), - moveUp: () => { - shouldScrollRef.current = true; - setHighlightedIndex((prev) => (prev > 0 ? prev - 1 : filtered.length - 1)); - }, - moveDown: () => { - shouldScrollRef.current = true; - setHighlightedIndex((prev) => (prev < filtered.length - 1 ? prev + 1 : 0)); - }, - }), - [filtered.length, highlightedIndex, handleSelect] - ); + useImperativeHandle( + ref, + () => ({ + selectHighlighted: () => handleSelect(highlightedIndex), + moveUp: () => { + shouldScrollRef.current = true; + setHighlightedIndex((prev) => (prev > 0 ? prev - 1 : filtered.length - 1)); + }, + moveDown: () => { + shouldScrollRef.current = true; + setHighlightedIndex((prev) => (prev < filtered.length - 1 ? prev + 1 : 0)); + }, + }), + [filtered.length, highlightedIndex, handleSelect] + ); - if (filtered.length === 0) return null; + if (filtered.length === 0) return null; - const defaultFiltered = filtered.filter((_, i) => i < DEFAULT_ACTIONS.length); - const customFiltered = filtered.filter((_, i) => i >= DEFAULT_ACTIONS.length); + const defaultFiltered = filtered.filter((_, i) => i < DEFAULT_ACTIONS.length); + const customFiltered = filtered.filter((_, i) => i >= DEFAULT_ACTIONS.length); - return ( -
-
- {defaultFiltered.map((action, index) => ( + return ( +
+
+ {defaultFiltered.map((action, index) => ( + + ))} + + {customFiltered.length > 0 &&
} + + {customFiltered.map((action, i) => { + const index = defaultFiltered.length + i; + return ( - ))} + ); + })} - {customFiltered.length > 0 && ( -
- )} - - {customFiltered.map((action, i) => { - const index = defaultFiltered.length + i; - return ( - - ); - })} - -
- -
+
+
- ); - } -); +
+ ); +}); diff --git a/surfsense_web/components/tool-ui/index.ts b/surfsense_web/components/tool-ui/index.ts index 2e4ea82ef..517a8a290 100644 --- a/surfsense_web/components/tool-ui/index.ts +++ b/surfsense_web/components/tool-ui/index.ts @@ -17,7 +17,6 @@ export { export { GeneratePodcastToolUI } from "./generate-podcast"; export { GenerateReportToolUI } from "./generate-report"; export { CreateGoogleDriveFileToolUI, DeleteGoogleDriveFileToolUI } from "./google-drive"; -export { CreateOneDriveFileToolUI, DeleteOneDriveFileToolUI } from "./onedrive"; export { Image, ImageErrorBoundary, @@ -33,6 +32,7 @@ export { UpdateLinearIssueToolUI, } from "./linear"; export { CreateNotionPageToolUI, DeleteNotionPageToolUI, UpdateNotionPageToolUI } from "./notion"; +export { CreateOneDriveFileToolUI, DeleteOneDriveFileToolUI } from "./onedrive"; export { Plan, PlanErrorBoundary, diff --git a/surfsense_web/components/tool-ui/onedrive/create-file.tsx b/surfsense_web/components/tool-ui/onedrive/create-file.tsx index c75be7f7f..d66f04d24 100644 --- a/surfsense_web/components/tool-ui/onedrive/create-file.tsx +++ b/surfsense_web/components/tool-ui/onedrive/create-file.tsx @@ -270,9 +270,7 @@ function ApprovalCard({ )}
-

- File Type -

+

File Type