diff --git a/apps/web/app/(app)/layout.tsx b/apps/web/app/(app)/layout.tsx
index 765abcf6..5fa70049 100644
--- a/apps/web/app/(app)/layout.tsx
+++ b/apps/web/app/(app)/layout.tsx
@@ -1,6 +1,6 @@
"use client"
-import { MobileBanner } from "@/components/new/mobile-banner"
+import { MobileBanner } from "@/components/mobile-banner"
export default function AppLayout({ children }: { children: React.ReactNode }) {
return (
diff --git a/apps/web/app/(app)/onboarding/setup/page.tsx b/apps/web/app/(app)/onboarding/setup/page.tsx
index e53d447b..35035233 100644
--- a/apps/web/app/(app)/onboarding/setup/page.tsx
+++ b/apps/web/app/(app)/onboarding/setup/page.tsx
@@ -2,12 +2,12 @@
import { motion, AnimatePresence } from "motion/react"
-import { RelatableQuestion } from "@/components/new/onboarding/setup/relatable-question"
-import { IntegrationsStep } from "@/components/new/onboarding/setup/integrations-step"
+import { RelatableQuestion } from "@/components/onboarding/setup/relatable-question"
+import { IntegrationsStep } from "@/components/onboarding/setup/integrations-step"
-import { SetupHeader } from "@/components/new/onboarding/setup/header"
-import { ChatSidebar } from "@/components/new/onboarding/setup/chat-sidebar"
-import { AnimatedGradientBackground } from "@/components/new/animated-gradient-background"
+import { SetupHeader } from "@/components/onboarding/setup/header"
+import { ChatSidebar } from "@/components/onboarding/setup/chat-sidebar"
+import { AnimatedGradientBackground } from "@/components/animated-gradient-background"
import { useIsMobile } from "@hooks/use-mobile"
import { useSetupContext, type SetupStep } from "./layout"
diff --git a/apps/web/app/(app)/onboarding/welcome/page.tsx b/apps/web/app/(app)/onboarding/welcome/page.tsx
index a09f93b5..a43c65d6 100644
--- a/apps/web/app/(app)/onboarding/welcome/page.tsx
+++ b/apps/web/app/(app)/onboarding/welcome/page.tsx
@@ -3,15 +3,15 @@
import { motion, AnimatePresence } from "motion/react"
import { cn } from "@lib/utils"
-import { InputStep } from "@/components/new/onboarding/welcome/input-step"
-import { GreetingStep } from "@/components/new/onboarding/welcome/greeting-step"
-import { WelcomeStep } from "@/components/new/onboarding/welcome/welcome-step"
-import { OnboardingContentStep } from "@/components/new/onboarding/welcome/continue-step"
+import { InputStep } from "@/components/onboarding/welcome/input-step"
+import { GreetingStep } from "@/components/onboarding/welcome/greeting-step"
+import { WelcomeStep } from "@/components/onboarding/welcome/welcome-step"
+import { OnboardingContentStep } from "@/components/onboarding/welcome/continue-step"
import { InitialHeader } from "@/components/initial-header"
import { Logo } from "@ui/assets/Logo"
import NovaOrb from "@/components/nova/nova-orb"
-import { AnimatedGradientBackground } from "@/components/new/animated-gradient-background"
+import { AnimatedGradientBackground } from "@/components/animated-gradient-background"
import {
useWelcomeContext,
diff --git a/apps/web/app/(app)/page.tsx b/apps/web/app/(app)/page.tsx
index a85cec13..b279e050 100644
--- a/apps/web/app/(app)/page.tsx
+++ b/apps/web/app/(app)/page.tsx
@@ -2,17 +2,17 @@
import { useState, useCallback, useEffect } from "react"
import { useQueryState } from "nuqs"
-import { Header } from "@/components/new/header"
-import { ChatSidebar } from "@/components/new/chat"
-import { MemoriesGrid } from "@/components/new/memories-grid"
-import { GraphLayoutView } from "@/components/new/graph-layout-view"
-import { IntegrationsView } from "@/components/new/integrations-view"
-import { AnimatedGradientBackground } from "@/components/new/animated-gradient-background"
-import { AddDocumentModal } from "@/components/new/add-document"
-import { DocumentModal } from "@/components/new/document-modal"
-import { DocumentsCommandPalette } from "@/components/new/documents-command-palette"
-import { FullscreenNoteModal } from "@/components/new/fullscreen-note-modal"
-import type { HighlightItem } from "@/components/new/highlights-card"
+import { Header } from "@/components/header"
+import { ChatSidebar } from "@/components/chat"
+import { MemoriesGrid } from "@/components/memories-grid"
+import { GraphLayoutView } from "@/components/graph-layout-view"
+import { IntegrationsView } from "@/components/integrations-view"
+import { AnimatedGradientBackground } from "@/components/animated-gradient-background"
+import { AddDocumentModal } from "@/components/add-document"
+import { DocumentModal } from "@/components/document-modal"
+import { DocumentsCommandPalette } from "@/components/documents-command-palette"
+import { FullscreenNoteModal } from "@/components/fullscreen-note-modal"
+import type { HighlightItem } from "@/components/highlights-card"
import { HotkeysProvider } from "react-hotkeys-hook"
import { useHotkeys } from "react-hotkeys-hook"
import { AnimatePresence } from "motion/react"
@@ -336,33 +336,33 @@ export default function NewPage() {
>
}>
- {viewMode === "integrations" ? (
-
-
-
- ) : viewMode === "graph" && !isMobile ? (
-
-
-
- ) : (
-
-
-
- )}
+ {viewMode === "integrations" ? (
+
+
+
+ ) : viewMode === "graph" && !isMobile ? (
+
+
+
+ ) : (
+
+
+
+ )}
diff --git a/apps/web/app/(app)/settings/page.tsx b/apps/web/app/(app)/settings/page.tsx
index bcea1186..26e646fc 100644
--- a/apps/web/app/(app)/settings/page.tsx
+++ b/apps/web/app/(app)/settings/page.tsx
@@ -7,10 +7,10 @@ import NovaOrb from "@/components/nova/nova-orb"
import { useState, useEffect, useRef } from "react"
import { cn } from "@lib/utils"
import { dmSansClassName } from "@/lib/fonts"
-import Account from "@/components/new/settings/account"
-import Integrations from "@/components/new/settings/integrations"
-import ConnectionsMCP from "@/components/new/settings/connections-mcp"
-import Support from "@/components/new/settings/support"
+import Account from "@/components/settings/account"
+import Integrations from "@/components/settings/integrations"
+import ConnectionsMCP from "@/components/settings/connections-mcp"
+import Support from "@/components/settings/support"
import { ErrorBoundary } from "@/components/error-boundary"
import { useRouter } from "next/navigation"
import { useIsMobile } from "@hooks/use-mobile"
diff --git a/apps/web/components/new/add-document/connections.tsx b/apps/web/components/add-document/connections.tsx
similarity index 100%
rename from apps/web/components/new/add-document/connections.tsx
rename to apps/web/components/add-document/connections.tsx
diff --git a/apps/web/components/new/add-document/file.tsx b/apps/web/components/add-document/file.tsx
similarity index 100%
rename from apps/web/components/new/add-document/file.tsx
rename to apps/web/components/add-document/file.tsx
diff --git a/apps/web/components/new/add-document/index.tsx b/apps/web/components/add-document/index.tsx
similarity index 99%
rename from apps/web/components/new/add-document/index.tsx
rename to apps/web/components/add-document/index.tsx
index 56142b30..2310c956 100644
--- a/apps/web/components/new/add-document/index.tsx
+++ b/apps/web/components/add-document/index.tsx
@@ -13,7 +13,7 @@ import { LinkContent, type LinkData } from "./link"
import { FileContent, type FileData } from "./file"
import { useProject } from "@/stores"
import { toast } from "sonner"
-import { useDocumentMutations } from "../../../hooks/use-document-mutations"
+import { useDocumentMutations } from "../../hooks/use-document-mutations"
import { useCustomer } from "autumn-js/react"
import { useTokenUsage } from "@/hooks/use-token-usage"
import { tokensToCredits, formatUsageNumber } from "@/lib/billing-utils"
diff --git a/apps/web/components/new/add-document/link.tsx b/apps/web/components/add-document/link.tsx
similarity index 100%
rename from apps/web/components/new/add-document/link.tsx
rename to apps/web/components/add-document/link.tsx
diff --git a/apps/web/components/new/add-document/note.tsx b/apps/web/components/add-document/note.tsx
similarity index 100%
rename from apps/web/components/new/add-document/note.tsx
rename to apps/web/components/add-document/note.tsx
diff --git a/apps/web/components/new/add-space-modal.tsx b/apps/web/components/add-space-modal.tsx
similarity index 100%
rename from apps/web/components/new/add-space-modal.tsx
rename to apps/web/components/add-space-modal.tsx
diff --git a/apps/web/components/new/animated-gradient-background.tsx b/apps/web/components/animated-gradient-background.tsx
similarity index 100%
rename from apps/web/components/new/animated-gradient-background.tsx
rename to apps/web/components/animated-gradient-background.tsx
diff --git a/apps/web/components/new/chat/index.tsx b/apps/web/components/chat/index.tsx
similarity index 99%
rename from apps/web/components/new/chat/index.tsx
rename to apps/web/components/chat/index.tsx
index 47ee0917..a67a1f39 100644
--- a/apps/web/components/new/chat/index.tsx
+++ b/apps/web/components/chat/index.tsx
@@ -36,7 +36,7 @@ import ChatModelSelector from "./model-selector"
import { GradientLogo, LogoBgGradient } from "@ui/assets/Logo"
import { useProject } from "@/stores"
import type { ModelId } from "@/lib/models"
-import { SuperLoader } from "../../superloader"
+import { SuperLoader } from "../superloader"
import { UserMessage } from "./message/user-message"
import { AgentMessage } from "./message/agent-message"
import { ChainOfThought } from "./input/chain-of-thought"
diff --git a/apps/web/components/new/chat/input/actions.tsx b/apps/web/components/chat/input/actions.tsx
similarity index 100%
rename from apps/web/components/new/chat/input/actions.tsx
rename to apps/web/components/chat/input/actions.tsx
diff --git a/apps/web/components/new/chat/input/chain-of-thought.tsx b/apps/web/components/chat/input/chain-of-thought.tsx
similarity index 100%
rename from apps/web/components/new/chat/input/chain-of-thought.tsx
rename to apps/web/components/chat/input/chain-of-thought.tsx
diff --git a/apps/web/components/new/chat/input/index.tsx b/apps/web/components/chat/input/index.tsx
similarity index 100%
rename from apps/web/components/new/chat/input/index.tsx
rename to apps/web/components/chat/input/index.tsx
diff --git a/apps/web/components/new/chat/message/agent-message.tsx b/apps/web/components/chat/message/agent-message.tsx
similarity index 100%
rename from apps/web/components/new/chat/message/agent-message.tsx
rename to apps/web/components/chat/message/agent-message.tsx
diff --git a/apps/web/components/new/chat/message/follow-up-questions.tsx b/apps/web/components/chat/message/follow-up-questions.tsx
similarity index 100%
rename from apps/web/components/new/chat/message/follow-up-questions.tsx
rename to apps/web/components/chat/message/follow-up-questions.tsx
diff --git a/apps/web/components/new/chat/message/message-actions.tsx b/apps/web/components/chat/message/message-actions.tsx
similarity index 100%
rename from apps/web/components/new/chat/message/message-actions.tsx
rename to apps/web/components/chat/message/message-actions.tsx
diff --git a/apps/web/components/new/chat/message/related-memories.tsx b/apps/web/components/chat/message/related-memories.tsx
similarity index 100%
rename from apps/web/components/new/chat/message/related-memories.tsx
rename to apps/web/components/chat/message/related-memories.tsx
diff --git a/apps/web/components/new/chat/message/user-message.tsx b/apps/web/components/chat/message/user-message.tsx
similarity index 100%
rename from apps/web/components/new/chat/message/user-message.tsx
rename to apps/web/components/chat/message/user-message.tsx
diff --git a/apps/web/components/new/chat/model-selector.tsx b/apps/web/components/chat/model-selector.tsx
similarity index 100%
rename from apps/web/components/new/chat/model-selector.tsx
rename to apps/web/components/chat/model-selector.tsx
diff --git a/apps/web/components/new/document-cards/file-preview.tsx b/apps/web/components/document-cards/file-preview.tsx
similarity index 98%
rename from apps/web/components/new/document-cards/file-preview.tsx
rename to apps/web/components/document-cards/file-preview.tsx
index 44c2476b..e5510f93 100644
--- a/apps/web/components/new/document-cards/file-preview.tsx
+++ b/apps/web/components/document-cards/file-preview.tsx
@@ -5,7 +5,7 @@ import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
import type { z } from "zod"
import { dmSansClassName } from "@/lib/fonts"
import { cn } from "@lib/utils"
-import { DocumentIcon } from "@/components/new/document-icon"
+import { DocumentIcon } from "@/components/document-icon"
type DocumentsResponse = z.infer
type DocumentWithMemories = DocumentsResponse["documents"][0]
diff --git a/apps/web/components/new/document-cards/google-docs-preview.tsx b/apps/web/components/document-cards/google-docs-preview.tsx
similarity index 93%
rename from apps/web/components/new/document-cards/google-docs-preview.tsx
rename to apps/web/components/document-cards/google-docs-preview.tsx
index 06136e87..2516a366 100644
--- a/apps/web/components/new/document-cards/google-docs-preview.tsx
+++ b/apps/web/components/document-cards/google-docs-preview.tsx
@@ -4,10 +4,7 @@ import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
import type { z } from "zod"
import { dmSansClassName } from "@/lib/fonts"
import { cn } from "@lib/utils"
-import {
- DocumentIcon,
- getDocumentTypeLabel,
-} from "@/components/new/document-icon"
+import { DocumentIcon, getDocumentTypeLabel } from "@/components/document-icon"
type DocumentsResponse = z.infer
type DocumentWithMemories = DocumentsResponse["documents"][0]
diff --git a/apps/web/components/new/document-cards/mcp-preview.tsx b/apps/web/components/document-cards/mcp-preview.tsx
similarity index 100%
rename from apps/web/components/new/document-cards/mcp-preview.tsx
rename to apps/web/components/document-cards/mcp-preview.tsx
diff --git a/apps/web/components/new/document-cards/note-preview.tsx b/apps/web/components/document-cards/note-preview.tsx
similarity index 94%
rename from apps/web/components/new/document-cards/note-preview.tsx
rename to apps/web/components/document-cards/note-preview.tsx
index 3e684a88..c05645f3 100644
--- a/apps/web/components/new/document-cards/note-preview.tsx
+++ b/apps/web/components/document-cards/note-preview.tsx
@@ -4,7 +4,7 @@ import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
import type { z } from "zod"
import { dmSansClassName } from "@/lib/fonts"
import { cn } from "@lib/utils"
-import { DocumentIcon } from "@/components/new/document-icon"
+import { DocumentIcon } from "@/components/document-icon"
type DocumentsResponse = z.infer
type DocumentWithMemories = DocumentsResponse["documents"][0]
diff --git a/apps/web/components/new/document-cards/notion-preview.tsx b/apps/web/components/document-cards/notion-preview.tsx
similarity index 100%
rename from apps/web/components/new/document-cards/notion-preview.tsx
rename to apps/web/components/document-cards/notion-preview.tsx
diff --git a/apps/web/components/new/document-cards/tweet-preview.tsx b/apps/web/components/document-cards/tweet-preview.tsx
similarity index 100%
rename from apps/web/components/new/document-cards/tweet-preview.tsx
rename to apps/web/components/document-cards/tweet-preview.tsx
diff --git a/apps/web/components/new/document-cards/website-preview.tsx b/apps/web/components/document-cards/website-preview.tsx
similarity index 100%
rename from apps/web/components/new/document-cards/website-preview.tsx
rename to apps/web/components/document-cards/website-preview.tsx
diff --git a/apps/web/components/new/document-cards/youtube-preview.tsx b/apps/web/components/document-cards/youtube-preview.tsx
similarity index 100%
rename from apps/web/components/new/document-cards/youtube-preview.tsx
rename to apps/web/components/document-cards/youtube-preview.tsx
diff --git a/apps/web/components/new/document-icon.tsx b/apps/web/components/document-icon.tsx
similarity index 100%
rename from apps/web/components/new/document-icon.tsx
rename to apps/web/components/document-icon.tsx
diff --git a/apps/web/components/new/document-modal/content/google-doc.tsx b/apps/web/components/document-modal/content/google-doc.tsx
similarity index 100%
rename from apps/web/components/new/document-modal/content/google-doc.tsx
rename to apps/web/components/document-modal/content/google-doc.tsx
diff --git a/apps/web/components/new/document-modal/content/image-preview.tsx b/apps/web/components/document-modal/content/image-preview.tsx
similarity index 100%
rename from apps/web/components/new/document-modal/content/image-preview.tsx
rename to apps/web/components/document-modal/content/image-preview.tsx
diff --git a/apps/web/components/new/document-modal/content/index.tsx b/apps/web/components/document-modal/content/index.tsx
similarity index 100%
rename from apps/web/components/new/document-modal/content/index.tsx
rename to apps/web/components/document-modal/content/index.tsx
diff --git a/apps/web/components/new/document-modal/content/notion-doc.tsx b/apps/web/components/document-modal/content/notion-doc.tsx
similarity index 100%
rename from apps/web/components/new/document-modal/content/notion-doc.tsx
rename to apps/web/components/document-modal/content/notion-doc.tsx
diff --git a/apps/web/components/new/document-modal/content/pdf.tsx b/apps/web/components/document-modal/content/pdf.tsx
similarity index 100%
rename from apps/web/components/new/document-modal/content/pdf.tsx
rename to apps/web/components/document-modal/content/pdf.tsx
diff --git a/apps/web/components/new/document-modal/content/text-editor-content.tsx b/apps/web/components/document-modal/content/text-editor-content.tsx
similarity index 100%
rename from apps/web/components/new/document-modal/content/text-editor-content.tsx
rename to apps/web/components/document-modal/content/text-editor-content.tsx
diff --git a/apps/web/components/new/document-modal/content/tweet.tsx b/apps/web/components/document-modal/content/tweet.tsx
similarity index 91%
rename from apps/web/components/new/document-modal/content/tweet.tsx
rename to apps/web/components/document-modal/content/tweet.tsx
index 528cf72f..61867af9 100644
--- a/apps/web/components/new/document-modal/content/tweet.tsx
+++ b/apps/web/components/document-modal/content/tweet.tsx
@@ -1,7 +1,7 @@
"use client"
import type { Tweet } from "react-tweet/api"
-import { TweetPreview } from "@/components/new/document-cards/tweet-preview"
+import { TweetPreview } from "@/components/document-cards/tweet-preview"
import { ExternalLinkIcon } from "lucide-react"
interface TweetContentProps {
diff --git a/apps/web/components/new/document-modal/content/web-page.tsx b/apps/web/components/document-modal/content/web-page.tsx
similarity index 100%
rename from apps/web/components/new/document-modal/content/web-page.tsx
rename to apps/web/components/document-modal/content/web-page.tsx
diff --git a/apps/web/components/new/document-modal/content/yt-video.tsx b/apps/web/components/document-modal/content/yt-video.tsx
similarity index 100%
rename from apps/web/components/new/document-modal/content/yt-video.tsx
rename to apps/web/components/document-modal/content/yt-video.tsx
diff --git a/apps/web/components/new/document-modal/document-icon.tsx b/apps/web/components/document-modal/document-icon.tsx
similarity index 84%
rename from apps/web/components/new/document-modal/document-icon.tsx
rename to apps/web/components/document-modal/document-icon.tsx
index cef93d01..de561ade 100644
--- a/apps/web/components/new/document-modal/document-icon.tsx
+++ b/apps/web/components/document-modal/document-icon.tsx
@@ -7,4 +7,4 @@ export {
getDocumentIcon,
getDocumentTypeLabel,
type DocumentIconProps,
-} from "@/components/new/document-icon"
+} from "@/components/document-icon"
diff --git a/apps/web/components/new/document-modal/graph-list-memories.tsx b/apps/web/components/document-modal/graph-list-memories.tsx
similarity index 100%
rename from apps/web/components/new/document-modal/graph-list-memories.tsx
rename to apps/web/components/document-modal/graph-list-memories.tsx
diff --git a/apps/web/components/new/document-modal/index.tsx b/apps/web/components/document-modal/index.tsx
similarity index 100%
rename from apps/web/components/new/document-modal/index.tsx
rename to apps/web/components/document-modal/index.tsx
diff --git a/apps/web/components/new/document-modal/summary.tsx b/apps/web/components/document-modal/summary.tsx
similarity index 100%
rename from apps/web/components/new/document-modal/summary.tsx
rename to apps/web/components/document-modal/summary.tsx
diff --git a/apps/web/components/new/document-modal/title.tsx b/apps/web/components/document-modal/title.tsx
similarity index 94%
rename from apps/web/components/new/document-modal/title.tsx
rename to apps/web/components/document-modal/title.tsx
index 6f3ecb1e..94ce0772 100644
--- a/apps/web/components/new/document-modal/title.tsx
+++ b/apps/web/components/document-modal/title.tsx
@@ -1,6 +1,6 @@
import { cn } from "@lib/utils"
import { dmSansClassName } from "@/lib/fonts"
-import { DocumentIcon } from "@/components/new/document-icon"
+import { DocumentIcon } from "@/components/document-icon"
function getFileExtension(documentType: string): string | null {
switch (documentType) {
diff --git a/apps/web/components/new/documents-command-palette.tsx b/apps/web/components/documents-command-palette.tsx
similarity index 99%
rename from apps/web/components/new/documents-command-palette.tsx
rename to apps/web/components/documents-command-palette.tsx
index 8dae7e58..ec001aae 100644
--- a/apps/web/components/new/documents-command-palette.tsx
+++ b/apps/web/components/documents-command-palette.tsx
@@ -13,7 +13,7 @@ import { dmSansClassName } from "@/lib/fonts"
import { useIsMobile } from "@hooks/use-mobile"
import { Dialog, DialogContent, DialogTitle } from "@repo/ui/components/dialog"
import { SearchIcon, Settings, Home, Plus, Code2, Loader2 } from "lucide-react"
-import { DocumentIcon } from "@/components/new/document-icon"
+import { DocumentIcon } from "@/components/document-icon"
import { $fetch } from "@lib/api"
type DocumentsResponse = z.infer
diff --git a/apps/web/components/new/feedback-modal.tsx b/apps/web/components/feedback-modal.tsx
similarity index 100%
rename from apps/web/components/new/feedback-modal.tsx
rename to apps/web/components/feedback-modal.tsx
diff --git a/apps/web/components/new/fullscreen-note-modal.tsx b/apps/web/components/fullscreen-note-modal.tsx
similarity index 100%
rename from apps/web/components/new/fullscreen-note-modal.tsx
rename to apps/web/components/fullscreen-note-modal.tsx
diff --git a/apps/web/components/new/graph-layout-view.tsx b/apps/web/components/graph-layout-view.tsx
similarity index 100%
rename from apps/web/components/new/graph-layout-view.tsx
rename to apps/web/components/graph-layout-view.tsx
diff --git a/apps/web/components/new/header.tsx b/apps/web/components/header.tsx
similarity index 99%
rename from apps/web/components/new/header.tsx
rename to apps/web/components/header.tsx
index 061d73d8..12d09bef 100644
--- a/apps/web/components/new/header.tsx
+++ b/apps/web/components/header.tsx
@@ -22,7 +22,7 @@ import { Button } from "@ui/components/button"
import { cn } from "@lib/utils"
import { dmSansClassName } from "@/lib/fonts"
import { Tabs, TabsList, TabsTrigger } from "@ui/components/tabs"
-import { GraphIcon } from "@/components/new/integration-icons"
+import { GraphIcon } from "@/components/integration-icons"
import {
DropdownMenu,
DropdownMenuContent,
diff --git a/apps/web/components/new/highlights-card.tsx b/apps/web/components/highlights-card.tsx
similarity index 100%
rename from apps/web/components/new/highlights-card.tsx
rename to apps/web/components/highlights-card.tsx
diff --git a/apps/web/components/new/integration-icons.tsx b/apps/web/components/integration-icons.tsx
similarity index 100%
rename from apps/web/components/new/integration-icons.tsx
rename to apps/web/components/integration-icons.tsx
diff --git a/apps/web/components/new/integrations-view.tsx b/apps/web/components/integrations-view.tsx
similarity index 90%
rename from apps/web/components/new/integrations-view.tsx
rename to apps/web/components/integrations-view.tsx
index 507244b5..842711f8 100644
--- a/apps/web/components/new/integrations-view.tsx
+++ b/apps/web/components/integrations-view.tsx
@@ -4,18 +4,18 @@ import { useState } from "react"
import { cn } from "@lib/utils"
import { dmSansClassName } from "@/lib/fonts"
import { Button } from "@ui/components/button"
-import { MCPDetailView } from "@/components/new/mcp-modal/mcp-detail-view"
-import { XBookmarksDetailView } from "@/components/new/onboarding/x-bookmarks-detail-view"
-import { ChromeDetail } from "@/components/new/integrations/chrome-detail"
-import { ShortcutsDetail } from "@/components/new/integrations/shortcuts-detail"
-import { RaycastDetail } from "@/components/new/integrations/raycast-detail"
-import { ConnectionsDetail } from "@/components/new/integrations/connections-detail"
-import { PluginsDetail } from "@/components/new/integrations/plugins-detail"
+import { MCPDetailView } from "@/components/mcp-modal/mcp-detail-view"
+import { XBookmarksDetailView } from "@/components/onboarding/x-bookmarks-detail-view"
+import { ChromeDetail } from "@/components/integrations/chrome-detail"
+import { ShortcutsDetail } from "@/components/integrations/shortcuts-detail"
+import { RaycastDetail } from "@/components/integrations/raycast-detail"
+import { ConnectionsDetail } from "@/components/integrations/connections-detail"
+import { PluginsDetail } from "@/components/integrations/plugins-detail"
import {
ChromeIcon,
AppleShortcutsIcon,
RaycastIcon,
-} from "@/components/new/integration-icons"
+} from "@/components/integration-icons"
import { GoogleDrive, Notion, OneDrive } from "@ui/assets/icons"
import { ArrowLeft, Sun } from "lucide-react"
import Image from "next/image"
diff --git a/apps/web/components/new/integrations/chrome-detail.tsx b/apps/web/components/integrations/chrome-detail.tsx
similarity index 89%
rename from apps/web/components/new/integrations/chrome-detail.tsx
rename to apps/web/components/integrations/chrome-detail.tsx
index 951a0ca4..03762e9a 100644
--- a/apps/web/components/new/integrations/chrome-detail.tsx
+++ b/apps/web/components/integrations/chrome-detail.tsx
@@ -2,7 +2,7 @@
import { cn } from "@lib/utils"
import { dmSans125ClassName } from "@/lib/fonts"
-import { ChromeIcon } from "@/components/new/integration-icons"
+import { ChromeIcon } from "@/components/integration-icons"
import { Check, Download } from "lucide-react"
import { analytics } from "@/lib/analytics"
@@ -61,10 +61,7 @@ export function ChromeDetail() {
Chrome Extension
Save any webpage directly from your browser
@@ -88,10 +85,7 @@ export function ChromeDetail() {
{text}
diff --git a/apps/web/components/new/integrations/connections-detail.tsx b/apps/web/components/integrations/connections-detail.tsx
similarity index 61%
rename from apps/web/components/new/integrations/connections-detail.tsx
rename to apps/web/components/integrations/connections-detail.tsx
index 69dbcb06..3ffd91ad 100644
--- a/apps/web/components/new/integrations/connections-detail.tsx
+++ b/apps/web/components/integrations/connections-detail.tsx
@@ -13,14 +13,18 @@ import { toast } from "sonner"
import type { ConnectionResponseSchema } from "@repo/validation/api"
import type { z } from "zod"
import { analytics } from "@/lib/analytics"
-import { AddDocumentModal } from "@/components/new/add-document"
+import { AddDocumentModal } from "@/components/add-document"
import { DEFAULT_PROJECT_ID } from "@repo/lib/constants"
import type { Project } from "@repo/lib/types"
type Connection = z.infer
const CONNECTORS = {
- "google-drive": { title: "Google Drive", icon: GoogleDrive, documentLabel: "documents" },
+ "google-drive": {
+ title: "Google Drive",
+ icon: GoogleDrive,
+ documentLabel: "documents",
+ },
notion: { title: "Notion", icon: Notion, documentLabel: "pages" },
onedrive: { title: "OneDrive", icon: OneDrive, documentLabel: "documents" },
} as const
@@ -44,7 +48,8 @@ function ConnectionRow({
if (!config) return null
const Icon = config.icon
- const isConnected = !connection.expiresAt || new Date(connection.expiresAt) > new Date()
+ const isConnected =
+ !connection.expiresAt || new Date(connection.expiresAt) > new Date()
const formatRelativeTime = (date: string | null | undefined) => {
if (!date) return "Never"
@@ -61,29 +66,63 @@ function ConnectionRow({
const getProjectName = (tag: string): string => {
if (tag === DEFAULT_PROJECT_ID) return "Default Project"
- return projects.find((p) => p.containerTag === tag)?.name ?? tag.replace(/^sm_project_/, "")
+ return (
+ projects.find((p) => p.containerTag === tag)?.name ??
+ tag.replace(/^sm_project_/, "")
+ )
}
const documentCount = (connection.metadata?.documentCount as number) ?? 0
- const containerTags = (connection as Connection & { containerTags?: string[] }).containerTags
- const projectName = containerTags?.[0] ? getProjectName(containerTags[0]) : null
+ const containerTags = (
+ connection as Connection & { containerTags?: string[] }
+ ).containerTags
+ const projectName = containerTags?.[0]
+ ? getProjectName(containerTags[0])
+ : null
return (
-
+
-
{config.title}
+
+ {config.title}
+
-
-
+
+
{isConnected ? "Connected" : "Disconnected"}
-
{connection.email || "Unknown"}
+
+ {connection.email || "Unknown"}
+
@@ -115,10 +169,13 @@ export function ConnectionsDetail() {
const autumn = useCustomer()
const [isAddDocumentOpen, setIsAddDocumentOpen] = useState(false)
- const projects = (queryClient.getQueryData
(["projects"]) || []) as Project[]
+ const projects = (queryClient.getQueryData(["projects"]) ||
+ []) as Project[]
- const { data: status = { api_pro: { allowed: false, status: null } }, isLoading: isCheckingStatus } =
- fetchSubscriptionStatus(autumn, !autumn.isLoading)
+ const {
+ data: status = { api_pro: { allowed: false, status: null } },
+ isLoading: isCheckingStatus,
+ } = fetchSubscriptionStatus(autumn, !autumn.isLoading)
const hasProProduct = status.api_pro?.status !== null
@@ -127,11 +184,18 @@ export function ConnectionsDetail() {
const connectionsLimit = connectionsFeature?.included_usage ?? 10
const canAddConnection = connectionsUsed < connectionsLimit
- const { data: connections = [], isLoading: isLoadingConnections, error: connectionsError } = useQuery({
+ const {
+ data: connections = [],
+ isLoading: isLoadingConnections,
+ error: connectionsError,
+ } = useQuery({
queryKey: ["connections"],
queryFn: async () => {
- const response = await $fetch("@post/connections/list", { body: { containerTags: [] } })
- if (response.error) throw new Error(response.error?.message || "Failed to load connections")
+ const response = await $fetch("@post/connections/list", {
+ body: { containerTags: [] },
+ })
+ if (response.error)
+ throw new Error(response.error?.message || "Failed to load connections")
return response.data as Connection[]
},
staleTime: 30 * 1000,
@@ -142,7 +206,10 @@ export function ConnectionsDetail() {
useEffect(() => {
if (connectionsError) {
toast.error("Failed to load connections", {
- description: connectionsError instanceof Error ? connectionsError.message : "Unknown error",
+ description:
+ connectionsError instanceof Error
+ ? connectionsError.message
+ : "Unknown error",
})
}
}, [connectionsError])
@@ -153,7 +220,9 @@ export function ConnectionsDetail() {
},
onSuccess: () => {
analytics.connectionDeleted()
- toast.success("Connection removal has started. Documents will be permanently deleted in the next few minutes.")
+ toast.success(
+ "Connection removal has started. Documents will be permanently deleted in the next few minutes.",
+ )
queryClient.invalidateQueries({ queryKey: ["connections"] })
},
onError: (error) => {
@@ -165,7 +234,10 @@ export function ConnectionsDetail() {
const handleUpgrade = async () => {
try {
- await autumn.attach({ productId: "api_pro", successUrl: "https://app.supermemory.ai/?view=integrations" })
+ await autumn.attach({
+ productId: "api_pro",
+ successUrl: "https://app.supermemory.ai/?view=integrations",
+ })
window.location.reload()
} catch (error) {
console.error(error)
@@ -176,21 +248,44 @@ export function ConnectionsDetail() {
return (
<>
-
+
{!hasProProduct && !isLoading && (
<>
-
- Connect Google Drive, Notion, and OneDrive to import your knowledge
+
+ Connect Google Drive, Notion, and OneDrive to import your
+ knowledge
- {["Unlimited memories", "10 connections", "Advanced search", "Priority support"].map((text) => (
+ {[
+ "Unlimited memories",
+ "10 connections",
+ "Advanced search",
+ "Priority support",
+ ].map((text) => (
- {text}
+
+ {text}
+
))}
@@ -211,12 +306,27 @@ export function ConnectionsDetail() {
>
)}
-
+
-
+
Connected to Supermemory
-
+
{connections.length}/{connectionsLimit} connections used
@@ -231,7 +341,9 @@ export function ConnectionsDetail() {
deleteConnectionMutation.mutate(connection.id)}
+ onDelete={() =>
+ deleteConnectionMutation.mutate(connection.id)
+ }
isDeleting={deleteConnectionMutation.isPending}
disabled={!hasProProduct}
projects={projects}
@@ -240,8 +352,22 @@ export function ConnectionsDetail() {
) : (
-
No connections yet
-
Connect a service below to import your knowledge
+
+ No connections yet
+
+
+ Connect a service below to import your knowledge
+
)}
@@ -260,12 +386,18 @@ export function ConnectionsDetail() {
)}
>
-
Connect knowledge bases
+
+ Connect knowledge bases
+
-
setIsAddDocumentOpen(false)} defaultTab="connect" />
+ setIsAddDocumentOpen(false)}
+ defaultTab="connect"
+ />
>
)
}
diff --git a/apps/web/components/new/integrations/plugins-detail.tsx b/apps/web/components/integrations/plugins-detail.tsx
similarity index 100%
rename from apps/web/components/new/integrations/plugins-detail.tsx
rename to apps/web/components/integrations/plugins-detail.tsx
diff --git a/apps/web/components/new/integrations/raycast-detail.tsx b/apps/web/components/integrations/raycast-detail.tsx
similarity index 74%
rename from apps/web/components/new/integrations/raycast-detail.tsx
rename to apps/web/components/integrations/raycast-detail.tsx
index 29ecdf20..7a96241a 100644
--- a/apps/web/components/new/integrations/raycast-detail.tsx
+++ b/apps/web/components/integrations/raycast-detail.tsx
@@ -2,7 +2,7 @@
import { cn } from "@lib/utils"
import { dmSans125ClassName } from "@/lib/fonts"
-import { RaycastIcon } from "@/components/new/integration-icons"
+import { RaycastIcon } from "@/components/integration-icons"
import { authClient } from "@lib/auth"
import { useAuth } from "@lib/auth-context"
import { generateId } from "@lib/generate-id"
@@ -101,17 +101,30 @@ export function RaycastDetail() {
-
+
Raycast Extension
-
+
Add and search memories from Mac and Windows
-
createKeyMutation.mutate()} disabled={createKeyMutation.isPending}>
+ createKeyMutation.mutate()}
+ disabled={createKeyMutation.isPending}
+ >
{createKeyMutation.isPending ? (
) : (
@@ -121,28 +134,49 @@ export function RaycastDetail() {
{createKeyMutation.isPending ? "Generating..." : "Get API key"}
- window.open(RAYCAST_EXTENSION_URL, "_blank")}>
+ window.open(RAYCAST_EXTENSION_URL, "_blank")}
+ >
- Install extension
+
+ Install extension
+
-