import { MCPIcon } from "@/components/menu" import { colors } from "@repo/ui/colors" import { GoogleDocs, MicrosoftWord, NotionDoc, GoogleDrive, GoogleSheets, GoogleSlides, PDF, OneDrive, MicrosoftOneNote, MicrosoftPowerpoint, MicrosoftExcel, } from "@ui/assets/icons" import { FileText, Globe } from "lucide-react" import { useState } from "react" const getFaviconUrl = (url: string): string => { try { const domain = new URL(url).hostname return `https://www.google.com/s2/favicons?domain=${domain}&sz=32` } catch { return "" } } const FaviconIcon = ({ url, className, iconProps, }: { url: string className: string iconProps: { className: string; style: { color: string } } }) => { const [hasError, setHasError] = useState(false) const faviconUrl = getFaviconUrl(url) if (hasError || !faviconUrl) { return } return ( Website favicon setHasError(true)} /> ) } export const getDocumentIcon = ( type: string, className: string, source?: string, url?: string, ) => { const iconProps = { className, style: { color: colors.text.muted }, } if (source === "mcp") { return } if ( type === "webpage" || type === "url" || (url && (type === "unknown" || !type)) ) { if (url) { return ( ) } return } switch (type) { case "google_doc": return case "google_sheet": return case "google_slide": return case "google_drive": return case "notion": case "notion_doc": return case "word": case "microsoft_word": return case "excel": case "microsoft_excel": return case "powerpoint": case "microsoft_powerpoint": return case "onenote": case "microsoft_onenote": return case "onedrive": return case "pdf": return default: return } }