diff --git a/src/interfaces/assistants_web/src/app/(main)/new/page.tsx b/src/interfaces/assistants_web/src/app/(main)/new/page.tsx
index 28d642b0e4..1a48ab8ea6 100644
--- a/src/interfaces/assistants_web/src/app/(main)/new/page.tsx
+++ b/src/interfaces/assistants_web/src/app/(main)/new/page.tsx
@@ -1,6 +1,6 @@
import { Metadata } from 'next';
-import { CreateAgent } from '@/components/Agents/CreateAgent';
+import { CreateAgent } from './CreateAgent';
export const metadata: Metadata = {
title: 'New Assistant',
diff --git a/src/interfaces/assistants_web/src/components/Agents/Settings.tsx b/src/interfaces/assistants_web/src/app/(main)/settings/Settings.tsx
similarity index 92%
rename from src/interfaces/assistants_web/src/components/Agents/Settings.tsx
rename to src/interfaces/assistants_web/src/app/(main)/settings/Settings.tsx
index 9dfdec3c7e..4b2a9b4ebd 100644
--- a/src/interfaces/assistants_web/src/components/Agents/Settings.tsx
+++ b/src/interfaces/assistants_web/src/app/(main)/settings/Settings.tsx
@@ -2,13 +2,10 @@
import { PropsWithChildren, useState } from 'react';
-import { DarkModeToggle } from '@/components/DarkModeToggle';
-import { MobileHeader } from '@/components/MobileHeader';
-import { Button, Icon, Tabs, Text } from '@/components/Shared';
-import { useNotify } from '@/hooks/toast';
-import { useDeleteAuthTool, useListTools } from '@/hooks/tools';
-import { cn } from '@/utils';
-import { getToolAuthUrl } from '@/utils/getToolAuthUrl';
+import { MobileHeader } from '@/components/Global';
+import { Button, DarkModeToggle, Icon, Tabs, Text } from '@/components/UI';
+import { useDeleteAuthTool, useListTools, useNotify } from '@/hooks';
+import { cn, getToolAuthUrl } from '@/utils';
const tabs = [
@@ -162,7 +159,7 @@ const GoogleDriveConnection = () => {
label="Authenticate"
href={getToolAuthUrl(googleDriveTool.auth_url)}
kind="secondary"
- theme="evolved-green"
+ theme="default"
icon="arrow-up-right"
/>
)}
diff --git a/src/interfaces/assistants_web/src/app/(main)/settings/page.tsx b/src/interfaces/assistants_web/src/app/(main)/settings/page.tsx
index 882b078bd5..aedef0a65c 100644
--- a/src/interfaces/assistants_web/src/app/(main)/settings/page.tsx
+++ b/src/interfaces/assistants_web/src/app/(main)/settings/page.tsx
@@ -1,7 +1,7 @@
import { Metadata } from 'next';
import { Suspense } from 'react';
-import { Settings } from '@/components/Agents/Settings';
+import { Settings } from './Settings';
export const metadata: Metadata = {
title: 'Settings',
diff --git a/src/interfaces/assistants_web/src/app/_providers.tsx b/src/interfaces/assistants_web/src/app/_providers.tsx
index 9092a840e7..f82c1ec942 100644
--- a/src/interfaces/assistants_web/src/app/_providers.tsx
+++ b/src/interfaces/assistants_web/src/app/_providers.tsx
@@ -12,12 +12,15 @@ import {
CohereUnauthorizedError,
Fetch,
} from '@/cohere-client';
-import { ToastNotification, WebManifestHead } from '@/components/Shared';
-import { GlobalHead } from '@/components/Shared/GlobalHead';
-import { ViewportFix } from '@/components/ViewportFix';
+import {
+ GlobalHead,
+ ToastNotification,
+ ViewportFix,
+ WebManifestHead,
+} from '@/components/Providers';
import { ContextStore } from '@/context';
import { env } from '@/env.mjs';
-import { useLazyRef } from '@/hooks/lazyRef';
+import { useLazyRef } from '@/hooks';
import { clearAuthToken } from '@/server/actions';
const makeCohereClient = (authToken?: string) => {
diff --git a/src/interfaces/assistants_web/src/app/error.tsx b/src/interfaces/assistants_web/src/app/error.tsx
index 96148686ae..bd76c156d1 100644
--- a/src/interfaces/assistants_web/src/app/error.tsx
+++ b/src/interfaces/assistants_web/src/app/error.tsx
@@ -2,7 +2,7 @@
import { useEffect } from 'react';
-import { PageServerError } from '@/components/Shared';
+import { Button, Text } from '@/components/UI';
export default function Error({
error,
@@ -14,5 +14,17 @@ export default function Error({
console.error(error);
}, [error]);
- return
;
+ return (
+
+
+
+ 500
+
+ Whoops! Something went wrong.
+
+
+
+ );
}
diff --git a/src/interfaces/assistants_web/src/app/not-found.tsx b/src/interfaces/assistants_web/src/app/not-found.tsx
index a6887a1a3f..12901237d0 100644
--- a/src/interfaces/assistants_web/src/app/not-found.tsx
+++ b/src/interfaces/assistants_web/src/app/not-found.tsx
@@ -1,7 +1,19 @@
'use client';
-import { PageNotFound } from '@/components/Shared';
+import { Button, Text } from '@/components/UI';
export default function NotFound() {
- return
;
+ return (
+
+
+
+ 404
+
+ This page could not be found.
+
+
+
+ );
}
diff --git a/src/interfaces/assistants_web/src/components/ReadOnlyConversation.tsx b/src/interfaces/assistants_web/src/app/share/[id]/ReadOnlyConversation.tsx
similarity index 93%
rename from src/interfaces/assistants_web/src/components/ReadOnlyConversation.tsx
rename to src/interfaces/assistants_web/src/app/share/[id]/ReadOnlyConversation.tsx
index 5117926b6a..61693dcfa7 100644
--- a/src/interfaces/assistants_web/src/components/ReadOnlyConversation.tsx
+++ b/src/interfaces/assistants_web/src/app/share/[id]/ReadOnlyConversation.tsx
@@ -1,7 +1,7 @@
'use client';
-import MessageRow from '@/components/MessageRow';
-import { Button, Text } from '@/components/Shared';
+import { MessageRow } from '@/components/MessageRow';
+import { Button, Text } from '@/components/UI';
import { ChatMessage } from '@/types/message';
import { cn } from '@/utils';
diff --git a/src/interfaces/assistants_web/src/app/share/[id]/page.tsx b/src/interfaces/assistants_web/src/app/share/[id]/page.tsx
index ef436da287..1eece2c77a 100644
--- a/src/interfaces/assistants_web/src/app/share/[id]/page.tsx
+++ b/src/interfaces/assistants_web/src/app/share/[id]/page.tsx
@@ -6,10 +6,9 @@ import { useParams } from 'next/navigation';
import { PropsWithChildren, useEffect, useState } from 'react';
import { Document } from '@/cohere-client';
-import { ReadOnlyConversation } from '@/components/ReadOnlyConversation';
-import { Icon, Spinner, Text } from '@/components/Shared';
+import { Icon, Spinner, Text } from '@/components/UI';
import { DEFAULT_CONVERSATION_NAME, TOOL_PYTHON_INTERPRETER_ID } from '@/constants';
-import { useGetSnapshotByLinkId } from '@/hooks/snapshots';
+import { useGetSnapshotByLinkId } from '@/hooks';
import { useCitationsStore } from '@/stores';
import { OutputFiles } from '@/stores/slices/citationsSlice';
import {
@@ -17,8 +16,10 @@ import {
createStartEndKey,
isShareLinkExpiredError,
mapHistoryToMessages,
+ parsePythonInterpreterToolFields,
} from '@/utils';
-import { parsePythonInterpreterToolFields } from '@/utils/tools';
+
+import { ReadOnlyConversation } from './ReadOnlyConversation';
const ShareConversationPage: NextPage = () => {
const params = useParams();
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Add.tsx b/src/interfaces/assistants_web/src/assets/icons/Add.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Add.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Add.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowClockwise.tsx b/src/interfaces/assistants_web/src/assets/icons/ArrowClockwise.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowClockwise.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ArrowClockwise.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowDown.tsx b/src/interfaces/assistants_web/src/assets/icons/ArrowDown.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowDown.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ArrowDown.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowLeft.tsx b/src/interfaces/assistants_web/src/assets/icons/ArrowLeft.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowLeft.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ArrowLeft.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowRight.tsx b/src/interfaces/assistants_web/src/assets/icons/ArrowRight.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowRight.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ArrowRight.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowSubmit.tsx b/src/interfaces/assistants_web/src/assets/icons/ArrowSubmit.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowSubmit.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ArrowSubmit.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowUp.tsx b/src/interfaces/assistants_web/src/assets/icons/ArrowUp.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowUp.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ArrowUp.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowUpRight.tsx b/src/interfaces/assistants_web/src/assets/icons/ArrowUpRight.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ArrowUpRight.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ArrowUpRight.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/BookOpenText.tsx b/src/interfaces/assistants_web/src/assets/icons/BookOpenText.tsx
similarity index 98%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/BookOpenText.tsx
rename to src/interfaces/assistants_web/src/assets/icons/BookOpenText.tsx
index d8bd9fe56e..dee7af304b 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/BookOpenText.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/BookOpenText.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Calculator.tsx b/src/interfaces/assistants_web/src/assets/icons/Calculator.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Calculator.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Calculator.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ChatCircleDots.tsx b/src/interfaces/assistants_web/src/assets/icons/ChatCircleDots.tsx
similarity index 98%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ChatCircleDots.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ChatCircleDots.tsx
index 76ac2170bb..963034799b 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ChatCircleDots.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/ChatCircleDots.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Checkmark.tsx b/src/interfaces/assistants_web/src/assets/icons/Checkmark.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Checkmark.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Checkmark.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ChevronDown.tsx b/src/interfaces/assistants_web/src/assets/icons/ChevronDown.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ChevronDown.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ChevronDown.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ChevronLeft.tsx b/src/interfaces/assistants_web/src/assets/icons/ChevronLeft.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ChevronLeft.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ChevronLeft.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ChevronRight.tsx b/src/interfaces/assistants_web/src/assets/icons/ChevronRight.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ChevronRight.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ChevronRight.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ChevronUp.tsx b/src/interfaces/assistants_web/src/assets/icons/ChevronUp.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ChevronUp.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ChevronUp.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/CirclesFour.tsx b/src/interfaces/assistants_web/src/assets/icons/CirclesFour.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/CirclesFour.tsx
rename to src/interfaces/assistants_web/src/assets/icons/CirclesFour.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/CirclesThree.tsx b/src/interfaces/assistants_web/src/assets/icons/CirclesThree.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/CirclesThree.tsx
rename to src/interfaces/assistants_web/src/assets/icons/CirclesThree.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Close.tsx b/src/interfaces/assistants_web/src/assets/icons/Close.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Close.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Close.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/CloseDrawer.tsx b/src/interfaces/assistants_web/src/assets/icons/CloseDrawer.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/CloseDrawer.tsx
rename to src/interfaces/assistants_web/src/assets/icons/CloseDrawer.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/CodeSimple.tsx b/src/interfaces/assistants_web/src/assets/icons/CodeSimple.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/CodeSimple.tsx
rename to src/interfaces/assistants_web/src/assets/icons/CodeSimple.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Compass.tsx b/src/interfaces/assistants_web/src/assets/icons/Compass.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Compass.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Compass.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Copy.tsx b/src/interfaces/assistants_web/src/assets/icons/Copy.tsx
similarity index 97%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Copy.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Copy.tsx
index e25e0cebaa..6dc0508cb4 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Copy.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/Copy.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Desktop.tsx b/src/interfaces/assistants_web/src/assets/icons/Desktop.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Desktop.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Desktop.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Download.tsx b/src/interfaces/assistants_web/src/assets/icons/Download.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Download.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Download.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Edit.tsx b/src/interfaces/assistants_web/src/assets/icons/Edit.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Edit.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Edit.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/File.tsx b/src/interfaces/assistants_web/src/assets/icons/File.tsx
similarity index 96%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/File.tsx
rename to src/interfaces/assistants_web/src/assets/icons/File.tsx
index c8411e9a50..8a040cfd5e 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/File.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/File.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/FileSearch.tsx b/src/interfaces/assistants_web/src/assets/icons/FileSearch.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/FileSearch.tsx
rename to src/interfaces/assistants_web/src/assets/icons/FileSearch.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Folder.tsx b/src/interfaces/assistants_web/src/assets/icons/Folder.tsx
similarity index 97%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Folder.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Folder.tsx
index 7be336c6ed..625a3da210 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Folder.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/Folder.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/GoogleDrive.tsx b/src/interfaces/assistants_web/src/assets/icons/GoogleDrive.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/GoogleDrive.tsx
rename to src/interfaces/assistants_web/src/assets/icons/GoogleDrive.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Hide.tsx b/src/interfaces/assistants_web/src/assets/icons/Hide.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Hide.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Hide.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Information.tsx b/src/interfaces/assistants_web/src/assets/icons/Information.tsx
similarity index 97%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Information.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Information.tsx
index a57aef4b60..7c4d51c037 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Information.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/Information.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Kebab.tsx b/src/interfaces/assistants_web/src/assets/icons/Kebab.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Kebab.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Kebab.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Link.tsx b/src/interfaces/assistants_web/src/assets/icons/Link.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Link.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Link.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/List.tsx b/src/interfaces/assistants_web/src/assets/icons/List.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/List.tsx
rename to src/interfaces/assistants_web/src/assets/icons/List.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Menu.tsx b/src/interfaces/assistants_web/src/assets/icons/Menu.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Menu.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Menu.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Moon.tsx b/src/interfaces/assistants_web/src/assets/icons/Moon.tsx
similarity index 98%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Moon.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Moon.tsx
index c4d343a52f..32a18563e3 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Moon.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/Moon.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/NewMessage.tsx b/src/interfaces/assistants_web/src/assets/icons/NewMessage.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/NewMessage.tsx
rename to src/interfaces/assistants_web/src/assets/icons/NewMessage.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/OneDrive.tsx b/src/interfaces/assistants_web/src/assets/icons/OneDrive.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/OneDrive.tsx
rename to src/interfaces/assistants_web/src/assets/icons/OneDrive.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Paperclip.tsx b/src/interfaces/assistants_web/src/assets/icons/Paperclip.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Paperclip.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Paperclip.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Profile.tsx b/src/interfaces/assistants_web/src/assets/icons/Profile.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Profile.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Profile.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Search.tsx b/src/interfaces/assistants_web/src/assets/icons/Search.tsx
similarity index 98%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Search.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Search.tsx
index 15e849218f..7e8a35b736 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Search.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/Search.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Settings.tsx b/src/interfaces/assistants_web/src/assets/icons/Settings.tsx
similarity index 99%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Settings.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Settings.tsx
index fdc189995e..889ae4b944 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Settings.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/Settings.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Share.tsx b/src/interfaces/assistants_web/src/assets/icons/Share.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Share.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Share.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Show.tsx b/src/interfaces/assistants_web/src/assets/icons/Show.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Show.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Show.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/SignOut.tsx b/src/interfaces/assistants_web/src/assets/icons/SignOut.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/SignOut.tsx
rename to src/interfaces/assistants_web/src/assets/icons/SignOut.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Sparkle.tsx b/src/interfaces/assistants_web/src/assets/icons/Sparkle.tsx
similarity index 99%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Sparkle.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Sparkle.tsx
index 8e08ef4acb..bf1750daf2 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Sparkle.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/Sparkle.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Subtract.tsx b/src/interfaces/assistants_web/src/assets/icons/Subtract.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Subtract.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Subtract.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Sun.tsx b/src/interfaces/assistants_web/src/assets/icons/Sun.tsx
similarity index 99%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Sun.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Sun.tsx
index 056c59b4fc..a8900001d9 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Sun.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/Sun.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ThumbsDown.tsx b/src/interfaces/assistants_web/src/assets/icons/ThumbsDown.tsx
similarity index 97%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ThumbsDown.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ThumbsDown.tsx
index dd5ee099f2..4ae38915da 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ThumbsDown.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/ThumbsDown.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ThumbsUp.tsx b/src/interfaces/assistants_web/src/assets/icons/ThumbsUp.tsx
similarity index 97%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ThumbsUp.tsx
rename to src/interfaces/assistants_web/src/assets/icons/ThumbsUp.tsx
index aaa9b43ff9..b319db4cbf 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/ThumbsUp.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/ThumbsUp.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Trash.tsx b/src/interfaces/assistants_web/src/assets/icons/Trash.tsx
similarity index 98%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Trash.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Trash.tsx
index 93e75de48e..e8e370eec5 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Trash.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/Trash.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Upload.tsx b/src/interfaces/assistants_web/src/assets/icons/Upload.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Upload.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Upload.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/UsersThree.tsx b/src/interfaces/assistants_web/src/assets/icons/UsersThree.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/UsersThree.tsx
rename to src/interfaces/assistants_web/src/assets/icons/UsersThree.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Warning.tsx b/src/interfaces/assistants_web/src/assets/icons/Warning.tsx
similarity index 97%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Warning.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Warning.tsx
index d784e585b7..170f420483 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Warning.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/Warning.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Web.tsx b/src/interfaces/assistants_web/src/assets/icons/Web.tsx
similarity index 99%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Web.tsx
rename to src/interfaces/assistants_web/src/assets/icons/Web.tsx
index 26ed82de3a..5e83e0a2c5 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/Web.tsx
+++ b/src/interfaces/assistants_web/src/assets/icons/Web.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SVGProps } from 'react';
-import { IconKind } from '@/components/Shared/Icon/Icon';
+import { IconKind } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/Icon/Icons/index.ts b/src/interfaces/assistants_web/src/assets/icons/index.ts
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Icon/Icons/index.ts
rename to src/interfaces/assistants_web/src/assets/icons/index.ts
diff --git a/src/interfaces/assistants_web/src/components/Agents/AgentSettings/DataSourcesStep.tsx b/src/interfaces/assistants_web/src/components/AgentSettingsForm/DataSourcesStep.tsx
similarity index 99%
rename from src/interfaces/assistants_web/src/components/Agents/AgentSettings/DataSourcesStep.tsx
rename to src/interfaces/assistants_web/src/components/AgentSettingsForm/DataSourcesStep.tsx
index 0cbfac6d34..7dc376a0b5 100644
--- a/src/interfaces/assistants_web/src/components/Agents/AgentSettings/DataSourcesStep.tsx
+++ b/src/interfaces/assistants_web/src/components/AgentSettingsForm/DataSourcesStep.tsx
@@ -2,9 +2,9 @@ import { uniqBy } from 'lodash';
import Link from 'next/link';
import { Dispatch, ReactNode, RefObject, SetStateAction, useRef } from 'react';
-import { Button, Icon, IconName, Spinner, Text } from '@/components/Shared';
+import { Button, Icon, IconName, Spinner, Text } from '@/components/UI';
import { ACCEPTED_FILE_TYPES, TOOL_GOOGLE_DRIVE_ID } from '@/constants';
-import { useUploadAgentFile } from '@/hooks/files';
+import { useUploadAgentFile } from '@/hooks';
import { DataSourceArtifact } from '@/types/tools';
import { pluralize } from '@/utils';
diff --git a/src/interfaces/assistants_web/src/components/Agents/AgentSettings/DefineStep.tsx b/src/interfaces/assistants_web/src/components/AgentSettingsForm/DefineStep.tsx
similarity index 90%
rename from src/interfaces/assistants_web/src/components/Agents/AgentSettings/DefineStep.tsx
rename to src/interfaces/assistants_web/src/components/AgentSettingsForm/DefineStep.tsx
index c24acb96aa..e86ac5fc97 100644
--- a/src/interfaces/assistants_web/src/components/Agents/AgentSettings/DefineStep.tsx
+++ b/src/interfaces/assistants_web/src/components/AgentSettingsForm/DefineStep.tsx
@@ -1,7 +1,7 @@
import Link from 'next/link';
-import { AgentSettingsFields } from '@/components/Agents/AgentSettings/AgentSettingsForm';
-import { Input, Text, Textarea } from '@/components/Shared';
+import { AgentSettingsFields } from '@/components/AgentSettingsForm';
+import { Input, Text, Textarea } from '@/components/UI';
type Props = {
fields: AgentSettingsFields;
diff --git a/src/interfaces/assistants_web/src/components/Agents/AgentSettings/ToolsStep.tsx b/src/interfaces/assistants_web/src/components/AgentSettingsForm/ToolsStep.tsx
similarity index 97%
rename from src/interfaces/assistants_web/src/components/Agents/AgentSettings/ToolsStep.tsx
rename to src/interfaces/assistants_web/src/components/AgentSettingsForm/ToolsStep.tsx
index e772e1b8dd..7033aa1df3 100644
--- a/src/interfaces/assistants_web/src/components/Agents/AgentSettings/ToolsStep.tsx
+++ b/src/interfaces/assistants_web/src/components/AgentSettingsForm/ToolsStep.tsx
@@ -1,7 +1,7 @@
import Link from 'next/link';
import { ManagedTool } from '@/cohere-client';
-import { Icon, IconName, Switch, Text } from '@/components/Shared';
+import { Icon, IconName, Switch, Text } from '@/components/UI';
import { AGENT_SETTINGS_TOOLS, TOOL_FALLBACK_ICON, TOOL_ID_TO_DISPLAY_INFO } from '@/constants';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Agents/AgentSettings/VisibilityStep.tsx b/src/interfaces/assistants_web/src/components/AgentSettingsForm/VisibilityStep.tsx
similarity index 95%
rename from src/interfaces/assistants_web/src/components/Agents/AgentSettings/VisibilityStep.tsx
rename to src/interfaces/assistants_web/src/components/AgentSettingsForm/VisibilityStep.tsx
index e61ee5e6b1..97c5a7ce13 100644
--- a/src/interfaces/assistants_web/src/components/Agents/AgentSettings/VisibilityStep.tsx
+++ b/src/interfaces/assistants_web/src/components/AgentSettingsForm/VisibilityStep.tsx
@@ -1,4 +1,4 @@
-import { Icon, RadioGroup, Text } from '@/components/Shared';
+import { Icon, RadioGroup, Text } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Agents/AgentSettings/AgentSettingsForm.tsx b/src/interfaces/assistants_web/src/components/AgentSettingsForm/index.tsx
similarity index 93%
rename from src/interfaces/assistants_web/src/components/Agents/AgentSettings/AgentSettingsForm.tsx
rename to src/interfaces/assistants_web/src/components/AgentSettingsForm/index.tsx
index adc9bc9baf..695ac1197f 100644
--- a/src/interfaces/assistants_web/src/components/Agents/AgentSettings/AgentSettingsForm.tsx
+++ b/src/interfaces/assistants_web/src/components/AgentSettingsForm/index.tsx
@@ -5,18 +5,15 @@ import { useSearchParams } from 'next/navigation';
import { useEffect, useState } from 'react';
import { CreateAgentRequest, UpdateAgentRequest } from '@/cohere-client';
-import { DataSourcesStep } from '@/components/Agents/AgentSettings/DataSourcesStep';
-import { DefineAssistantStep } from '@/components/Agents/AgentSettings/DefineStep';
-import { ToolsStep } from '@/components/Agents/AgentSettings/ToolsStep';
-import { VisibilityStep } from '@/components/Agents/AgentSettings/VisibilityStep';
-import { CollapsibleSection } from '@/components/CollapsibleSection';
-import { Button } from '@/components/Shared';
+import { DataSourcesStep } from '@/components/AgentSettingsForm/DataSourcesStep';
+import { DefineAssistantStep } from '@/components/AgentSettingsForm/DefineStep';
+import { ToolsStep } from '@/components/AgentSettingsForm/ToolsStep';
+import { VisibilityStep } from '@/components/AgentSettingsForm/VisibilityStep';
+import { Button, CollapsibleSection } from '@/components/UI';
import { TOOL_GOOGLE_DRIVE_ID, TOOL_READ_DOCUMENT_ID, TOOL_SEARCH_FILE_ID } from '@/constants';
-import { useIsAgentNameUnique } from '@/hooks/agents';
-import { useListTools, useOpenGoogleDrivePicker } from '@/hooks/tools';
+import { useIsAgentNameUnique, useListTools, useOpenGoogleDrivePicker } from '@/hooks';
import { DataSourceArtifact } from '@/types/tools';
-import { cn } from '@/utils';
-import { getToolAuthUrl } from '@/utils/getToolAuthUrl';
+import { cn, getToolAuthUrl } from '@/utils';
type RequiredAndNotNull
= {
[P in keyof T]-?: Exclude;
diff --git a/src/interfaces/assistants_web/src/components/Agents/AgentLogo.tsx b/src/interfaces/assistants_web/src/components/Agents/AgentLogo.tsx
index ff914f57ec..4207ce0711 100644
--- a/src/interfaces/assistants_web/src/components/Agents/AgentLogo.tsx
+++ b/src/interfaces/assistants_web/src/components/Agents/AgentLogo.tsx
@@ -1,6 +1,6 @@
import { AgentPublic } from '@/cohere-client';
-import { CoralLogo, Text } from '@/components/Shared';
-import { useBrandedColors } from '@/hooks/brandedColors';
+import { CoralLogo, Text } from '@/components/UI';
+import { useBrandedColors } from '@/hooks';
import { cn } from '@/utils';
export const AgentLogo = ({ agent }: { agent: AgentPublic }) => {
diff --git a/src/interfaces/assistants_web/src/components/Agents/AgentToolFilePicker.tsx b/src/interfaces/assistants_web/src/components/Agents/AgentToolFilePicker.tsx
deleted file mode 100644
index a86c647ce4..0000000000
--- a/src/interfaces/assistants_web/src/components/Agents/AgentToolFilePicker.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-'use client';
-
-import { IconButton } from '@/components/IconButton';
-import { Button, Icon, Text } from '@/components/Shared';
-import { DataSourceArtifact } from '@/types/tools';
-
-type Props = {
- googleDriveFiles?: DataSourceArtifact[];
- disabled?: boolean;
- handleRemoveGoogleDriveFiles: (id: string) => void;
- handleOpenFilePicker: VoidFunction;
-};
-
-/**
- * @description Component to display the selected files/folders from Google Drive
- * @param {DataSourceArtifact[]} googleDriveFiles - List of selected files/folders from Google Drive
- * @param {boolean} disabled - Flag to disable the file picker
- * @param {Function} handleRemoveGoogleDriveFiles - Function to remove a file/folder from the selected list
- * @param {Function} handleOpenFilePicker - Function to open the file picker
- */
-export const AgentToolFilePicker: React.FC = ({
- googleDriveFiles,
- disabled,
- handleRemoveGoogleDriveFiles,
- handleOpenFilePicker,
-}) => {
- return (
-
- {!disabled && (
-
- )}
-
- {googleDriveFiles && googleDriveFiles.length > 0 && (
-
- {googleDriveFiles.map(({ type, id, name }) => (
-
-
-
- {name}
-
- {!disabled && (
- handleRemoveGoogleDriveFiles(id)}
- iconName="close"
- size="sm"
- className="ml-auto"
- />
- )}
-
- ))}
-
- )}
-
- );
-};
diff --git a/src/interfaces/assistants_web/src/components/AuthLink.tsx b/src/interfaces/assistants_web/src/components/Auth/AuthLink.tsx
similarity index 92%
rename from src/interfaces/assistants_web/src/components/AuthLink.tsx
rename to src/interfaces/assistants_web/src/components/Auth/AuthLink.tsx
index 64c921eb9a..e2ee4baffb 100644
--- a/src/interfaces/assistants_web/src/components/AuthLink.tsx
+++ b/src/interfaces/assistants_web/src/components/Auth/AuthLink.tsx
@@ -2,8 +2,8 @@
import React from 'react';
-import { Button, ButtonTheme, IconName } from '@/components/Shared';
-import { useAuthConfig } from '@/hooks/authConfig';
+import { Button, ButtonTheme, IconName } from '@/components/UI';
+import { useAuthConfig } from '@/hooks';
type Props = {
action: 'login' | 'register' | 'logout';
diff --git a/src/interfaces/assistants_web/src/components/Welcome/CellBackground.tsx b/src/interfaces/assistants_web/src/components/Auth/CellBackground.tsx
similarity index 94%
rename from src/interfaces/assistants_web/src/components/Welcome/CellBackground.tsx
rename to src/interfaces/assistants_web/src/components/Auth/CellBackground.tsx
index bda1731160..ff012a8767 100644
--- a/src/interfaces/assistants_web/src/components/Welcome/CellBackground.tsx
+++ b/src/interfaces/assistants_web/src/components/Auth/CellBackground.tsx
@@ -2,7 +2,7 @@
import { useState } from 'react';
-import { useIsDesktop } from '@/hooks/breakpoint';
+import { useIsDesktop } from '@/hooks';
import { cn } from '@/utils';
export const CellBackground: React.FC = () => {
diff --git a/src/interfaces/assistants_web/src/components/Welcome/Navigation.tsx b/src/interfaces/assistants_web/src/components/Auth/Navigation.tsx
similarity index 91%
rename from src/interfaces/assistants_web/src/components/Welcome/Navigation.tsx
rename to src/interfaces/assistants_web/src/components/Auth/Navigation.tsx
index 0b264e965b..a85a4d4ff4 100644
--- a/src/interfaces/assistants_web/src/components/Welcome/Navigation.tsx
+++ b/src/interfaces/assistants_web/src/components/Auth/Navigation.tsx
@@ -2,7 +2,7 @@
import Link from 'next/link';
-import { Logo } from '@/components/Shared';
+import { Logo } from '@/components/UI';
import { cn } from '@/utils';
/**
diff --git a/src/interfaces/assistants_web/src/components/NavigationUserMenu.tsx b/src/interfaces/assistants_web/src/components/Auth/NavigationUserMenu.tsx
similarity index 96%
rename from src/interfaces/assistants_web/src/components/NavigationUserMenu.tsx
rename to src/interfaces/assistants_web/src/components/Auth/NavigationUserMenu.tsx
index 6637efc90d..9d39364eae 100644
--- a/src/interfaces/assistants_web/src/components/NavigationUserMenu.tsx
+++ b/src/interfaces/assistants_web/src/components/Auth/NavigationUserMenu.tsx
@@ -3,8 +3,8 @@
import { Popover, Transition } from '@headlessui/react';
import { Fragment } from 'react';
-import { AuthLink } from '@/components/AuthLink';
-import { Icon, Text } from '@/components/Shared';
+import { AuthLink } from '@/components/Auth';
+import { Icon, Text } from '@/components/UI';
import { cn } from '@/utils';
/**
diff --git a/src/interfaces/assistants_web/src/components/Welcome/OidcSSOButton.tsx b/src/interfaces/assistants_web/src/components/Auth/OidcSSOButton.tsx
similarity index 97%
rename from src/interfaces/assistants_web/src/components/Welcome/OidcSSOButton.tsx
rename to src/interfaces/assistants_web/src/components/Auth/OidcSSOButton.tsx
index 4d15601bb5..0fe70d725e 100644
--- a/src/interfaces/assistants_web/src/components/Welcome/OidcSSOButton.tsx
+++ b/src/interfaces/assistants_web/src/components/Auth/OidcSSOButton.tsx
@@ -1,7 +1,6 @@
'use client';
-import { Button } from '@/components/Shared';
-import { cn } from '@/utils';
+import { Button } from '@/components/UI';
type ButtonProps = {
onClick: () => void;
diff --git a/src/interfaces/assistants_web/src/components/WelcomePage.tsx b/src/interfaces/assistants_web/src/components/Auth/WelcomePage.tsx
similarity index 83%
rename from src/interfaces/assistants_web/src/components/WelcomePage.tsx
rename to src/interfaces/assistants_web/src/components/Auth/WelcomePage.tsx
index b348c7d3fc..aa0146824a 100644
--- a/src/interfaces/assistants_web/src/components/WelcomePage.tsx
+++ b/src/interfaces/assistants_web/src/components/Auth/WelcomePage.tsx
@@ -3,11 +3,8 @@
import { usePathname } from 'next/navigation';
import { PropsWithChildren } from 'react';
-import { AuthLink } from '@/components/AuthLink';
-import { NavigationUserMenu } from '@/components/NavigationUserMenu';
-import { Text } from '@/components/Shared';
-import { CellBackground } from '@/components/Welcome/CellBackground';
-import { Navigation } from '@/components/Welcome/Navigation';
+import { AuthLink, CellBackground, Navigation, NavigationUserMenu } from '@/components/Auth';
+import { Text } from '@/components/UI';
type Props = PropsWithChildren<{
userEmail?: string;
diff --git a/src/interfaces/assistants_web/src/components/Auth/index.ts b/src/interfaces/assistants_web/src/components/Auth/index.ts
new file mode 100644
index 0000000000..ee4d306123
--- /dev/null
+++ b/src/interfaces/assistants_web/src/components/Auth/index.ts
@@ -0,0 +1,6 @@
+export * from './AuthLink';
+export * from './CellBackground';
+export * from './Navigation';
+export * from './NavigationUserMenu';
+export * from './OidcSSOButton';
+export * from './WelcomePage';
diff --git a/src/interfaces/assistants_web/src/components/Conversation/Composer/index.tsx b/src/interfaces/assistants_web/src/components/Composer/Composer.tsx
similarity index 90%
rename from src/interfaces/assistants_web/src/components/Conversation/Composer/index.tsx
rename to src/interfaces/assistants_web/src/components/Composer/Composer.tsx
index 2a93db9006..418109480d 100644
--- a/src/interfaces/assistants_web/src/components/Conversation/Composer/index.tsx
+++ b/src/interfaces/assistants_web/src/components/Composer/Composer.tsx
@@ -4,14 +4,10 @@ import { useResizeObserver } from '@react-hookz/web';
import React, { useEffect, useRef, useState } from 'react';
import { AgentPublic, ManagedTool } from '@/cohere-client';
-import { ComposerError } from '@/components/Conversation/Composer/ComposerError';
-import { ComposerFiles } from '@/components/Conversation/Composer/ComposerFiles';
-import { ComposerToolbar } from '@/components/Conversation/Composer/ComposerToolbar';
-import { DragDropFileUploadOverlay } from '@/components/Conversation/Composer/DragDropFileUploadOverlay';
-import { Icon, STYLE_LEVEL_TO_CLASSES } from '@/components/Shared';
+import { ComposerError, ComposerFiles, ComposerToolbar } from '@/components/Composer';
+import { DragDropFileInput, Icon, STYLE_LEVEL_TO_CLASSES } from '@/components/UI';
import { CHAT_COMPOSER_TEXTAREA_ID } from '@/constants';
-import { useBreakpoint, useIsDesktop } from '@/hooks/breakpoint';
-import { useAvailableTools } from '@/hooks/tools';
+import { useAvailableTools, useBreakpoint, useIsDesktop } from '@/hooks';
import { ConfigurableParams } from '@/stores/slices/paramsSlice';
import { ChatMessage } from '@/types/message';
import { cn } from '@/utils';
@@ -144,7 +140,7 @@ export const Composer: React.FC = ({
}, 100);
}}
>
-
+
);
};
-
-export default Conversation;
diff --git a/src/interfaces/assistants_web/src/components/ConversationError.tsx b/src/interfaces/assistants_web/src/components/Conversation/ConversationError.tsx
similarity index 82%
rename from src/interfaces/assistants_web/src/components/ConversationError.tsx
rename to src/interfaces/assistants_web/src/components/Conversation/ConversationError.tsx
index 2f9420fe1a..9554742a71 100644
--- a/src/interfaces/assistants_web/src/components/ConversationError.tsx
+++ b/src/interfaces/assistants_web/src/components/Conversation/ConversationError.tsx
@@ -3,12 +3,12 @@
import Link from 'next/link';
import { isNotFoundError } from '@/cohere-client';
-import { Header } from '@/components/Conversation/Header';
-import { Icon } from '@/components/Shared/Icon';
-import { Text } from '@/components/Shared/Text';
-import { useChatRoutes } from '@/hooks/chatRoutes';
+import { Icon, Text } from '@/components/UI';
+import { useChatRoutes } from '@/hooks';
import { cn } from '@/utils';
+import { Header } from './Header';
+
type Props = {
error: Error;
};
diff --git a/src/interfaces/assistants_web/src/components/Agents/RightPanel.tsx b/src/interfaces/assistants_web/src/components/Conversation/ConversationPanel.tsx
similarity index 94%
rename from src/interfaces/assistants_web/src/components/Agents/RightPanel.tsx
rename to src/interfaces/assistants_web/src/components/Conversation/ConversationPanel.tsx
index 5a24f49752..ac3dd76fdd 100644
--- a/src/interfaces/assistants_web/src/components/Agents/RightPanel.tsx
+++ b/src/interfaces/assistants_web/src/components/Conversation/ConversationPanel.tsx
@@ -4,21 +4,23 @@ import { Transition } from '@headlessui/react';
import { uniqBy } from 'lodash';
import { useMemo, useState } from 'react';
-import { IconButton } from '@/components/IconButton';
-import { Banner, Button, Icon, Text, Tooltip } from '@/components/Shared';
+import { Banner, Button, Icon, IconButton, Text, Tooltip } from '@/components/UI';
import { TOOL_GOOGLE_DRIVE_ID, TOOL_READ_DOCUMENT_ID, TOOL_SEARCH_FILE_ID } from '@/constants';
-import { useAgent } from '@/hooks/agents';
-import { useBrandedColors } from '@/hooks/brandedColors';
-import { useChatRoutes } from '@/hooks/chatRoutes';
-import { useConversationFileActions, useListConversationFiles } from '@/hooks/files';
-import { useSession } from '@/hooks/session';
+import {
+ useAgent,
+ useBrandedColors,
+ useChatRoutes,
+ useConversationFileActions,
+ useListConversationFiles,
+ useSession,
+} from '@/hooks';
import { useParamsStore, useSettingsStore } from '@/stores';
import { DataSourceArtifact } from '@/types/tools';
import { pluralize } from '@/utils';
type Props = {};
-const RightPanel: React.FC = () => {
+export const ConversationPanel: React.FC = () => {
const [isDeletingFile, setIsDeletingFile] = useState(false);
const { disabledAssistantKnowledge, setRightPanelOpen } = useSettingsStore();
const { agentId, conversationId } = useChatRoutes();
@@ -218,5 +220,3 @@ const RightPanel: React.FC = () => {
);
};
-
-export default RightPanel;
diff --git a/src/interfaces/assistants_web/src/components/Conversation/Header.tsx b/src/interfaces/assistants_web/src/components/Conversation/Header.tsx
index dadf018388..9a98a3b035 100644
--- a/src/interfaces/assistants_web/src/components/Conversation/Header.tsx
+++ b/src/interfaces/assistants_web/src/components/Conversation/Header.tsx
@@ -1,12 +1,11 @@
'use client';
import { AgentPublic } from '@/cohere-client';
-import { IconButton } from '@/components/IconButton';
-import { ShareModal } from '@/components/ShareModal';
-import { Button, Icon, Logo, Text } from '@/components/Shared';
+import { ShareConversation } from '@/components/Modals/ShareConversation';
+import { Button, Icon, IconButton, Logo, Text } from '@/components/UI';
import { useContextStore } from '@/context';
import { env } from '@/env.mjs';
-import { useBrandedColors } from '@/hooks/brandedColors';
+import { useBrandedColors } from '@/hooks';
import { useConversationStore, useSettingsStore } from '@/stores';
import { cn } from '@/utils';
@@ -28,7 +27,7 @@ export const Header: React.FC = ({ agent }) => {
if (!id) return;
open({
title: 'Share link to conversation',
- content: ,
+ content: ,
});
};
diff --git a/src/interfaces/assistants_web/src/components/Conversation/index.ts b/src/interfaces/assistants_web/src/components/Conversation/index.ts
new file mode 100644
index 0000000000..14324596ac
--- /dev/null
+++ b/src/interfaces/assistants_web/src/components/Conversation/index.ts
@@ -0,0 +1,4 @@
+export * from './Conversation';
+export * from './ConversationError';
+export * from './Header';
+export * from './ConversationPanel';
diff --git a/src/interfaces/assistants_web/src/components/EditEnvVariablesButton.tsx b/src/interfaces/assistants_web/src/components/EditEnvVariablesButton.tsx
deleted file mode 100644
index 23ec341b53..0000000000
--- a/src/interfaces/assistants_web/src/components/EditEnvVariablesButton.tsx
+++ /dev/null
@@ -1,112 +0,0 @@
-'use client';
-
-import React, { useMemo, useState } from 'react';
-
-import { Button, Dropdown, Input } from '@/components/Shared';
-import { useContextStore } from '@/context';
-import { useListAllDeployments } from '@/hooks/deployments';
-import { useParamsStore } from '@/stores';
-
-/**
- * @description Button to trigger a modal to edit .env variables.
- */
-export const EditEnvVariablesButton: React.FC<{ className?: string }> = () => {
- const { open, close } = useContextStore();
-
- const handleClick = () => {
- open({
- title: 'Configure Model Deployment',
- content: ,
- });
- };
-
- return ;
-};
-
-/**
- * @description Renders a modal to edit a selected deployment's config
- */
-export const EditEnvVariablesModal: React.FC<{
- defaultDeployment: string;
- onClose: () => void;
-}> = ({ defaultDeployment, onClose }) => {
- const { data: deployments } = useListAllDeployments();
-
- const [deployment, setDeployment] = useState(defaultDeployment);
- const [envVariables, setEnvVariables] = useState>(() => {
- const selectedDeployment = deployments?.find(({ name }) => name === defaultDeployment);
- return (
- selectedDeployment?.env_vars?.reduce>((acc, envVar) => {
- acc[envVar] = '';
- return acc;
- }, {}) ?? {}
- );
- });
- const [isSubmitting, setIsSubmitting] = useState(false);
-
- const { setParams } = useParamsStore();
-
- const deploymentOptions = useMemo(
- () =>
- (deployments ?? []).map(({ name }) => ({
- label: name,
- value: name,
- })),
-
- [deployments]
- );
-
- const handleDeploymentChange = (newDeployment: string) => {
- setDeployment(newDeployment);
- const selectedDeployment = deployments?.find(({ name }) => name === newDeployment);
- const emptyEnvVariables =
- selectedDeployment?.env_vars?.reduce>((acc, envVar) => {
- acc[envVar] = '';
- return acc;
- }, {}) ?? {};
- setEnvVariables(emptyEnvVariables);
- };
-
- const handleEnvVariableChange = (envVar: string) => (e: React.ChangeEvent) => {
- setEnvVariables({ ...envVariables, [envVar]: e.target.value });
- };
-
- const handleSubmit = async () => {
- if (!deployment) return;
-
- setIsSubmitting(true);
- setParams({
- deploymentConfig: Object.entries(envVariables)
- .map(([k, v]) => k + '=' + v)
- .join(';'),
- });
- setIsSubmitting(false);
- onClose();
- };
-
- return (
-
-
-
- {Object.keys(envVariables).map((envVar) => (
-
- ))}
-
-
-
-
-
-
- );
-};
diff --git a/src/interfaces/assistants_web/src/components/MobileHeader.tsx b/src/interfaces/assistants_web/src/components/Global/MobileHeader.tsx
similarity index 92%
rename from src/interfaces/assistants_web/src/components/MobileHeader.tsx
rename to src/interfaces/assistants_web/src/components/Global/MobileHeader.tsx
index 04ec33af9b..e256d495a1 100644
--- a/src/interfaces/assistants_web/src/components/MobileHeader.tsx
+++ b/src/interfaces/assistants_web/src/components/Global/MobileHeader.tsx
@@ -1,6 +1,6 @@
'use client';
-import { Logo } from '@/components/Shared';
+import { Logo } from '@/components/UI';
import { env } from '@/env.mjs';
import { useSettingsStore } from '@/stores';
diff --git a/src/interfaces/assistants_web/src/components/Swipeable.tsx b/src/interfaces/assistants_web/src/components/Global/Swipeable.tsx
similarity index 63%
rename from src/interfaces/assistants_web/src/components/Swipeable.tsx
rename to src/interfaces/assistants_web/src/components/Global/Swipeable.tsx
index 8ed8816af1..2ee24167bd 100644
--- a/src/interfaces/assistants_web/src/components/Swipeable.tsx
+++ b/src/interfaces/assistants_web/src/components/Global/Swipeable.tsx
@@ -1,6 +1,6 @@
'use client';
-import { useSwipeable } from '@/hooks/swipeable';
+import { useSwipeable } from '@/hooks';
export const Swipeable = () => {
useSwipeable();
diff --git a/src/interfaces/assistants_web/src/components/Global/index.ts b/src/interfaces/assistants_web/src/components/Global/index.ts
new file mode 100644
index 0000000000..ec0e7e3903
--- /dev/null
+++ b/src/interfaces/assistants_web/src/components/Global/index.ts
@@ -0,0 +1,2 @@
+export * from './MobileHeader';
+export * from './Swipeable';
diff --git a/src/interfaces/assistants_web/src/components/Shared/HotKeys/CommandAction.tsx b/src/interfaces/assistants_web/src/components/HotKeys/CommandAction.tsx
similarity index 93%
rename from src/interfaces/assistants_web/src/components/Shared/HotKeys/CommandAction.tsx
rename to src/interfaces/assistants_web/src/components/HotKeys/CommandAction.tsx
index cfa1a6a6ea..bddfddfb1f 100644
--- a/src/interfaces/assistants_web/src/components/Shared/HotKeys/CommandAction.tsx
+++ b/src/interfaces/assistants_web/src/components/HotKeys/CommandAction.tsx
@@ -1,10 +1,12 @@
+'use client';
+
import { ComboboxOption } from '@headlessui/react';
import { useMemo } from 'react';
import { useHotkeys } from 'react-hotkeys-hook';
-import { type QuickAction } from '@/components/Shared/HotKeys/domain';
-import { Text } from '@/components/Shared/Text';
-import { useOS } from '@/hooks/os';
+import { type QuickAction } from '@/components/HotKeys';
+import { Text } from '@/components/UI';
+import { useOS } from '@/hooks';
import { cn } from '@/utils';
interface Props extends QuickAction {
diff --git a/src/interfaces/assistants_web/src/components/Shared/HotKeys/CommandActionGroup.tsx b/src/interfaces/assistants_web/src/components/HotKeys/CommandActionGroup.tsx
similarity index 73%
rename from src/interfaces/assistants_web/src/components/Shared/HotKeys/CommandActionGroup.tsx
rename to src/interfaces/assistants_web/src/components/HotKeys/CommandActionGroup.tsx
index f00c0ce02a..a84f281f2e 100644
--- a/src/interfaces/assistants_web/src/components/Shared/HotKeys/CommandActionGroup.tsx
+++ b/src/interfaces/assistants_web/src/components/HotKeys/CommandActionGroup.tsx
@@ -1,15 +1,14 @@
'use client';
-import { Text } from '@/components/Shared';
-import { CommandAction } from '@/components/Shared/HotKeys/CommandAction';
-import { type HotKeyGroupOption } from '@/components/Shared/HotKeys/domain';
+import { CommandAction, type HotKeyGroupOption } from '@/components/HotKeys';
+import { Text } from '@/components/UI';
type Props = {
isOpen: boolean;
options?: HotKeyGroupOption[];
};
-const CommandActionGroup: React.FC = ({ isOpen, options = [] }) => {
+export const CommandActionGroup: React.FC = ({ isOpen, options = [] }) => {
return (
{options.map((action, i) => {
@@ -34,5 +33,3 @@ const CommandActionGroup: React.FC
= ({ isOpen, options = [] }) => {
);
};
-
-export default CommandActionGroup;
diff --git a/src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeys.tsx b/src/interfaces/assistants_web/src/components/HotKeys/HotKeys.tsx
similarity index 83%
rename from src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeys.tsx
rename to src/interfaces/assistants_web/src/components/HotKeys/HotKeys.tsx
index 943913be52..31a22ef9fd 100644
--- a/src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeys.tsx
+++ b/src/interfaces/assistants_web/src/components/HotKeys/HotKeys.tsx
@@ -1,12 +1,12 @@
'use client';
-import { HotKeysProvider } from '@/components/Shared/HotKeys/HotKeysProvider';
+import { HotKeysProvider } from '@/components/HotKeys';
import {
useAssistantHotKeys,
useConversationHotKeys,
useSettingsHotKeys,
useViewHotKeys,
-} from '@/hooks/actions';
+} from '@/hooks';
export const HotKeys: React.FC = () => {
const conversationHotKeys = useConversationHotKeys();
diff --git a/src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeysDialog.tsx b/src/interfaces/assistants_web/src/components/HotKeys/HotKeysDialog.tsx
similarity index 93%
rename from src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeysDialog.tsx
rename to src/interfaces/assistants_web/src/components/HotKeys/HotKeysDialog.tsx
index bc5f438c16..c2d9c6ff5f 100644
--- a/src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeysDialog.tsx
+++ b/src/interfaces/assistants_web/src/components/HotKeys/HotKeysDialog.tsx
@@ -10,10 +10,12 @@ import {
} from '@headlessui/react';
import { Fragment, useEffect, useMemo, useState } from 'react';
-import CommandActionGroup from '@/components/Shared/HotKeys/CommandActionGroup';
-import { HotKeysDialogInput } from '@/components/Shared/HotKeys/HotKeysDialogInput';
-import { type HotKeyGroupOption } from '@/components/Shared/HotKeys/domain';
-import { Text } from '@/components/Shared/Text';
+import {
+ CommandActionGroup,
+ type HotKeyGroupOption,
+ HotKeysDialogInput,
+} from '@/components/HotKeys';
+import { Text } from '@/components/UI';
import { cn } from '@/utils';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeysDialogInput.tsx b/src/interfaces/assistants_web/src/components/HotKeys/HotKeysDialogInput.tsx
similarity index 93%
rename from src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeysDialogInput.tsx
rename to src/interfaces/assistants_web/src/components/HotKeys/HotKeysDialogInput.tsx
index 4cc05fdb70..17618825f6 100644
--- a/src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeysDialogInput.tsx
+++ b/src/interfaces/assistants_web/src/components/HotKeys/HotKeysDialogInput.tsx
@@ -1,7 +1,6 @@
import { ComboboxInput } from '@headlessui/react';
-import { Icon } from '@/components/Shared/Icon';
-import { Input } from '@/components/Shared/Input';
+import { Icon, Input } from '@/components/UI';
type Props = {
value: string;
diff --git a/src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeysProvider.tsx b/src/interfaces/assistants_web/src/components/HotKeys/HotKeysProvider.tsx
similarity index 89%
rename from src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeysProvider.tsx
rename to src/interfaces/assistants_web/src/components/HotKeys/HotKeysProvider.tsx
index 63d31ffc88..3e54879111 100644
--- a/src/interfaces/assistants_web/src/components/Shared/HotKeys/HotKeysProvider.tsx
+++ b/src/interfaces/assistants_web/src/components/HotKeys/HotKeysProvider.tsx
@@ -3,8 +3,7 @@
import { useState } from 'react';
import { useHotkeys } from 'react-hotkeys-hook';
-import { HotKeysDialog } from '@/components/Shared/HotKeys/HotKeysDialog';
-import { CustomHotKey, type HotKeyGroupOption } from '@/components/Shared/HotKeys/domain';
+import { CustomHotKey, type HotKeyGroupOption, HotKeysDialog } from '@/components/HotKeys';
type HotKeysProviderProps = {
hotKeys: HotKeyGroupOption[];
diff --git a/src/interfaces/assistants_web/src/components/Shared/HotKeys/custom-views/SwitchAssistants.tsx b/src/interfaces/assistants_web/src/components/HotKeys/custom-views/SwitchAssistants.tsx
similarity index 72%
rename from src/interfaces/assistants_web/src/components/Shared/HotKeys/custom-views/SwitchAssistants.tsx
rename to src/interfaces/assistants_web/src/components/HotKeys/custom-views/SwitchAssistants.tsx
index 24f852cf61..940b2c8e78 100644
--- a/src/interfaces/assistants_web/src/components/Shared/HotKeys/custom-views/SwitchAssistants.tsx
+++ b/src/interfaces/assistants_web/src/components/HotKeys/custom-views/SwitchAssistants.tsx
@@ -1,8 +1,7 @@
import { ComboboxOptions } from '@headlessui/react';
-import CommandActionGroup from '@/components/Shared/HotKeys/CommandActionGroup';
-import { HotKeysDialogInput } from '@/components/Shared/HotKeys/HotKeysDialogInput';
-import { useAssistantHotKeys } from '@/hooks/actions';
+import { CommandActionGroup, HotKeysDialogInput } from '@/components/HotKeys';
+import { useAssistantHotKeys } from '@/hooks';
type Props = {
close: VoidFunction;
diff --git a/src/interfaces/assistants_web/src/components/Shared/HotKeys/domain.ts b/src/interfaces/assistants_web/src/components/HotKeys/domain.ts
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/HotKeys/domain.ts
rename to src/interfaces/assistants_web/src/components/HotKeys/domain.ts
diff --git a/src/interfaces/assistants_web/src/components/HotKeys/index.ts b/src/interfaces/assistants_web/src/components/HotKeys/index.ts
new file mode 100644
index 0000000000..4978357f82
--- /dev/null
+++ b/src/interfaces/assistants_web/src/components/HotKeys/index.ts
@@ -0,0 +1,8 @@
+export * from './CommandAction';
+export * from './CommandActionGroup';
+export * from './custom-views/SwitchAssistants';
+export * from './domain';
+export * from './HotKeys';
+export * from './HotKeysDialog';
+export * from './HotKeysDialogInput';
+export * from './HotKeysProvider';
diff --git a/src/interfaces/assistants_web/src/components/Shared/Markdown/Markdown.tsx b/src/interfaces/assistants_web/src/components/Markdown/Markdown.tsx
similarity index 89%
rename from src/interfaces/assistants_web/src/components/Shared/Markdown/Markdown.tsx
rename to src/interfaces/assistants_web/src/components/Markdown/Markdown.tsx
index 5767120f9b..c51e6273d6 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Markdown/Markdown.tsx
+++ b/src/interfaces/assistants_web/src/components/Markdown/Markdown.tsx
@@ -10,20 +10,22 @@ import remarkGfm from 'remark-gfm';
import remarkMath from 'remark-math';
import { PluggableList } from 'unified';
-import { removeExtraBlankSpaces } from '@/components/Shared/Markdown/directives/utils';
-import { Iframe } from '@/components/Shared/Markdown/tags/Iframe';
-import { Text } from '@/components/Shared/Text';
+import {
+ Anchor,
+ Iframe,
+ P,
+ Pre,
+ References,
+ remarkReferences,
+ removeExtraBlankSpaces,
+ renderRemarkCites,
+ renderRemarkTags,
+ renderRemarkUnknowns,
+ renderTableTools,
+} from '@/components/Markdown';
+import { Text } from '@/components/UI';
import { cn } from '@/utils';
-import { renderRemarkCites } from './directives/cite';
-import { remarkReferences } from './directives/code';
-import { renderTableTools } from './directives/table-tools';
-import { renderRemarkTags } from './directives/tag';
-import { renderRemarkUnknowns } from './directives/unknown';
-import { P } from './tags/P';
-import { Pre } from './tags/Pre';
-import { References } from './tags/References';
-
type MarkdownTextProps = {
text: string;
className?: string;
@@ -110,6 +112,7 @@ export const Markdown = ({
references: References,
// @ts-ignore
iframe: Iframe,
+ a: Anchor,
...customComponents,
}),
[customComponents]
diff --git a/src/interfaces/assistants_web/src/components/Shared/Markdown/directives/cite.ts b/src/interfaces/assistants_web/src/components/Markdown/directives/cite.ts
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Markdown/directives/cite.ts
rename to src/interfaces/assistants_web/src/components/Markdown/directives/cite.ts
diff --git a/src/interfaces/assistants_web/src/components/Shared/Markdown/directives/code.ts b/src/interfaces/assistants_web/src/components/Markdown/directives/code.ts
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Markdown/directives/code.ts
rename to src/interfaces/assistants_web/src/components/Markdown/directives/code.ts
diff --git a/src/interfaces/assistants_web/src/components/Markdown/directives/index.ts b/src/interfaces/assistants_web/src/components/Markdown/directives/index.ts
new file mode 100644
index 0000000000..b784f35284
--- /dev/null
+++ b/src/interfaces/assistants_web/src/components/Markdown/directives/index.ts
@@ -0,0 +1,6 @@
+export * from './cite';
+export * from './code';
+export * from './table-tools';
+export * from './tag';
+export * from './unknown';
+export * from './utils';
diff --git a/src/interfaces/assistants_web/src/components/Shared/Markdown/directives/table-tools.ts b/src/interfaces/assistants_web/src/components/Markdown/directives/table-tools.ts
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Markdown/directives/table-tools.ts
rename to src/interfaces/assistants_web/src/components/Markdown/directives/table-tools.ts
diff --git a/src/interfaces/assistants_web/src/components/Shared/Markdown/directives/tag.ts b/src/interfaces/assistants_web/src/components/Markdown/directives/tag.ts
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Markdown/directives/tag.ts
rename to src/interfaces/assistants_web/src/components/Markdown/directives/tag.ts
diff --git a/src/interfaces/assistants_web/src/components/Shared/Markdown/directives/unknown.ts b/src/interfaces/assistants_web/src/components/Markdown/directives/unknown.ts
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Markdown/directives/unknown.ts
rename to src/interfaces/assistants_web/src/components/Markdown/directives/unknown.ts
diff --git a/src/interfaces/assistants_web/src/components/Shared/Markdown/directives/utils.ts b/src/interfaces/assistants_web/src/components/Markdown/directives/utils.ts
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Markdown/directives/utils.ts
rename to src/interfaces/assistants_web/src/components/Markdown/directives/utils.ts
diff --git a/src/interfaces/assistants_web/src/components/Markdown/index.ts b/src/interfaces/assistants_web/src/components/Markdown/index.ts
new file mode 100644
index 0000000000..c9ff7a36b5
--- /dev/null
+++ b/src/interfaces/assistants_web/src/components/Markdown/index.ts
@@ -0,0 +1,3 @@
+export * from './Markdown';
+export * from './directives';
+export * from './tags';
diff --git a/src/interfaces/assistants_web/src/components/Markdown/tags/Anchor.tsx b/src/interfaces/assistants_web/src/components/Markdown/tags/Anchor.tsx
new file mode 100644
index 0000000000..ed126a8a0e
--- /dev/null
+++ b/src/interfaces/assistants_web/src/components/Markdown/tags/Anchor.tsx
@@ -0,0 +1,30 @@
+'use client';
+
+import type { Component, ExtraProps } from 'hast-util-to-jsx-runtime/lib/components';
+import { ComponentPropsWithoutRef } from 'react';
+
+import { Icon } from '@/components/UI';
+import { useOutputFiles } from '@/stores';
+
+export const Anchor: Component & ExtraProps> = ({ children }) => {
+ const { outputFiles } = useOutputFiles();
+
+ if (typeof children === 'string') {
+ const snakeCaseUrl = children.replace(/\s/g, '_').toLowerCase();
+ const outputFile = Object.entries(outputFiles).find(([key]) =>
+ key.startsWith(snakeCaseUrl)
+ )?.[1];
+ const downloadUrl = outputFile?.downloadUrl;
+
+ if (downloadUrl) {
+ return (
+
+ {children}
+
+
+ );
+ }
+ }
+
+ return {children};
+};
diff --git a/src/interfaces/assistants_web/src/components/Shared/Markdown/tags/Iframe.tsx b/src/interfaces/assistants_web/src/components/Markdown/tags/Iframe.tsx
similarity index 94%
rename from src/interfaces/assistants_web/src/components/Shared/Markdown/tags/Iframe.tsx
rename to src/interfaces/assistants_web/src/components/Markdown/tags/Iframe.tsx
index d16bf83928..2d19c7c30f 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Markdown/tags/Iframe.tsx
+++ b/src/interfaces/assistants_web/src/components/Markdown/tags/Iframe.tsx
@@ -7,10 +7,8 @@ import { useRef } from 'react';
import { useState } from 'react';
import { ComponentPropsWithoutRef } from 'react';
-import { CodeSnippet } from '@/components/Shared/CodeSnippet';
-import { Text } from '@/components/Shared/Text';
-import { cn } from '@/utils';
-import { cleanupCodeBlock } from '@/utils/preview';
+import { CodeSnippet, Text } from '@/components/UI';
+import { cleanupCodeBlock, cn } from '@/utils';
const MIN_HEIGHT = 600;
diff --git a/src/interfaces/assistants_web/src/components/Shared/Markdown/tags/P.tsx b/src/interfaces/assistants_web/src/components/Markdown/tags/P.tsx
similarity index 100%
rename from src/interfaces/assistants_web/src/components/Shared/Markdown/tags/P.tsx
rename to src/interfaces/assistants_web/src/components/Markdown/tags/P.tsx
diff --git a/src/interfaces/assistants_web/src/components/Shared/Markdown/tags/Pre.tsx b/src/interfaces/assistants_web/src/components/Markdown/tags/Pre.tsx
similarity index 95%
rename from src/interfaces/assistants_web/src/components/Shared/Markdown/tags/Pre.tsx
rename to src/interfaces/assistants_web/src/components/Markdown/tags/Pre.tsx
index 412c05070a..ade57d5a90 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Markdown/tags/Pre.tsx
+++ b/src/interfaces/assistants_web/src/components/Markdown/tags/Pre.tsx
@@ -3,7 +3,7 @@
import type { Component, ExtraProps } from 'hast-util-to-jsx-runtime/lib/components';
import { ComponentPropsWithoutRef, useRef, useState } from 'react';
-import { Button, Icon, Text } from '@/components/Shared';
+import { Button, Icon, Text } from '@/components/UI';
export const Pre: Component & ExtraProps> = ({ children }) => {
const [copied, setCopied] = useState(false);
diff --git a/src/interfaces/assistants_web/src/components/Shared/Markdown/tags/References.tsx b/src/interfaces/assistants_web/src/components/Markdown/tags/References.tsx
similarity index 91%
rename from src/interfaces/assistants_web/src/components/Shared/Markdown/tags/References.tsx
rename to src/interfaces/assistants_web/src/components/Markdown/tags/References.tsx
index 5050f5effa..49c6048650 100644
--- a/src/interfaces/assistants_web/src/components/Shared/Markdown/tags/References.tsx
+++ b/src/interfaces/assistants_web/src/components/Markdown/tags/References.tsx
@@ -3,7 +3,7 @@
import type { Component, ExtraProps } from 'hast-util-to-jsx-runtime/lib/components';
import { ComponentPropsWithoutRef } from 'react';
-import { Text } from '@/components/Shared';
+import { Text } from '@/components/UI';
// Since we're inserting a Text component
// And that we're not specifyng the "as" prop
diff --git a/src/interfaces/assistants_web/src/components/Markdown/tags/index.ts b/src/interfaces/assistants_web/src/components/Markdown/tags/index.ts
new file mode 100644
index 0000000000..307cf62ab5
--- /dev/null
+++ b/src/interfaces/assistants_web/src/components/Markdown/tags/index.ts
@@ -0,0 +1,5 @@
+export * from './Anchor';
+export * from './Iframe';
+export * from './P';
+export * from './Pre';
+export * from './References';
diff --git a/src/interfaces/assistants_web/src/components/Avatar.tsx b/src/interfaces/assistants_web/src/components/MessageRow/Avatar.tsx
similarity index 89%
rename from src/interfaces/assistants_web/src/components/Avatar.tsx
rename to src/interfaces/assistants_web/src/components/MessageRow/Avatar.tsx
index b9c8cb80df..99ae92c815 100644
--- a/src/interfaces/assistants_web/src/components/Avatar.tsx
+++ b/src/interfaces/assistants_web/src/components/MessageRow/Avatar.tsx
@@ -3,12 +3,10 @@
import Lottie from 'react-lottie-player';
import logoTyping from '@/assets/lotties/icon-loop-coral-950.json';
-import { CoralLogo } from '@/components/Shared/CoralLogo';
-import { Icon } from '@/components/Shared/Icon';
-import { useBrandedColors } from '@/hooks/brandedColors';
-import { useChatRoutes } from '@/hooks/chatRoutes';
+import { CoralLogo, Icon } from '@/components/UI';
+import { useBrandedColors, useChatRoutes } from '@/hooks';
import { BotState, ChatMessage, MessageType, isFulfilledMessage } from '@/types/message';
-import { cn } from '@/utils/cn';
+import { cn } from '@/utils';
type Props = {
message: ChatMessage;
diff --git a/src/interfaces/assistants_web/src/components/Citations/Citation.tsx b/src/interfaces/assistants_web/src/components/MessageRow/Citation.tsx
similarity index 97%
rename from src/interfaces/assistants_web/src/components/Citations/Citation.tsx
rename to src/interfaces/assistants_web/src/components/MessageRow/Citation.tsx
index e030d42854..1d866fbaa3 100644
--- a/src/interfaces/assistants_web/src/components/Citations/Citation.tsx
+++ b/src/interfaces/assistants_web/src/components/MessageRow/Citation.tsx
@@ -1,9 +1,10 @@
import Link from 'next/link';
import { useState } from 'react';
-import { DocumentIcon, Icon, Markdown, Text } from '@/components/Shared';
+import { Markdown } from '@/components/Markdown';
+import { DocumentIcon, Icon, Text } from '@/components/UI';
import { TOOL_ID_TO_DISPLAY_INFO, TOOL_WEB_SEARCH_ID, TOOL_WIKIPEDIA_ID } from '@/constants';
-import { useBrandedColors } from '@/hooks/brandedColors';
+import { useBrandedColors } from '@/hooks';
import { useCitationsStore } from '@/stores';
import { cn, getSafeUrl, getWebDomain } from '@/utils';
diff --git a/src/interfaces/assistants_web/src/components/Citations/CitationTextHighlighter.tsx b/src/interfaces/assistants_web/src/components/MessageRow/CitationTextHighlighter.tsx
similarity index 90%
rename from src/interfaces/assistants_web/src/components/Citations/CitationTextHighlighter.tsx
rename to src/interfaces/assistants_web/src/components/MessageRow/CitationTextHighlighter.tsx
index aa98e89a79..4c5dce3c02 100644
--- a/src/interfaces/assistants_web/src/components/Citations/CitationTextHighlighter.tsx
+++ b/src/interfaces/assistants_web/src/components/MessageRow/CitationTextHighlighter.tsx
@@ -3,14 +3,11 @@
import { Popover, PopoverButton, PopoverPanel } from '@headlessui/react';
import { PropsWithChildren } from 'react';
-import { Citation } from '@/components/Citations/Citation';
+import { Citation } from '@/components/MessageRow';
import { useContextStore } from '@/context';
-import { useBrandedColors } from '@/hooks/brandedColors';
-import { Breakpoint, useBreakpoint } from '@/hooks/breakpoint';
-import { useChatRoutes } from '@/hooks/chatRoutes';
+import { Breakpoint, useBrandedColors, useBreakpoint, useChatRoutes } from '@/hooks';
import { useCitationsStore } from '@/stores';
-import { cn } from '@/utils';
-import { createStartEndKey } from '@/utils';
+import { cn, createStartEndKey } from '@/utils';
const FALLBACK_CODE_SNIPPET_TEXT = '[source]';
diff --git a/src/interfaces/assistants_web/src/components/DataTable.tsx b/src/interfaces/assistants_web/src/components/MessageRow/DataTable.tsx
similarity index 88%
rename from src/interfaces/assistants_web/src/components/DataTable.tsx
rename to src/interfaces/assistants_web/src/components/MessageRow/DataTable.tsx
index 2e2afcf110..ecb08b5d7d 100644
--- a/src/interfaces/assistants_web/src/components/DataTable.tsx
+++ b/src/interfaces/assistants_web/src/components/MessageRow/DataTable.tsx
@@ -3,12 +3,11 @@
import type { Component, ExtraProps } from 'hast-util-to-jsx-runtime/lib/components';
import { ComponentPropsWithoutRef, useCallback } from 'react';
-import { Icon, Text } from '@/components/Shared';
-import { StructuredTable } from '@/components/Shared/Markdown/directives/table-tools';
-import { useNotify } from '@/hooks/toast';
+import { StructuredTable } from '@/components/Markdown/directives/table-tools';
+import { Icon, Text } from '@/components/UI';
+import { useNotify } from '@/hooks';
import { useConversationStore } from '@/stores';
-import { cn } from '@/utils';
-import { downloadFile, structuredTableToXSV } from '@/utils/download';
+import { cn, downloadFile, structuredTableToXSV } from '@/utils';
const FALLBACK_FILE_NAME = 'cohere-table';
diff --git a/src/interfaces/assistants_web/src/components/MarkdownImage.tsx b/src/interfaces/assistants_web/src/components/MessageRow/MarkdownImage.tsx
similarity index 97%
rename from src/interfaces/assistants_web/src/components/MarkdownImage.tsx
rename to src/interfaces/assistants_web/src/components/MessageRow/MarkdownImage.tsx
index 4fc98b3cbf..4a65b14b85 100644
--- a/src/interfaces/assistants_web/src/components/MarkdownImage.tsx
+++ b/src/interfaces/assistants_web/src/components/MessageRow/MarkdownImage.tsx
@@ -1,6 +1,6 @@
'use client';
-import { Text } from '@/components/Shared';
+import { Text } from '@/components/UI';
import { useCitationsStore } from '@/stores';
type Props = {
diff --git a/src/interfaces/assistants_web/src/components/MessageContent.tsx b/src/interfaces/assistants_web/src/components/MessageRow/MessageContent.tsx
similarity index 75%
rename from src/interfaces/assistants_web/src/components/MessageContent.tsx
rename to src/interfaces/assistants_web/src/components/MessageRow/MessageContent.tsx
index 4c386031ad..a88dc0b91c 100644
--- a/src/interfaces/assistants_web/src/components/MessageContent.tsx
+++ b/src/interfaces/assistants_web/src/components/MessageRow/MessageContent.tsx
@@ -3,12 +3,9 @@
import { Transition } from '@headlessui/react';
import { PropsWithChildren } from 'react';
-import { CitationTextHighlighter } from '@/components/Citations/CitationTextHighlighter';
-import { DataTable } from '@/components/DataTable';
-import { MarkdownImage } from '@/components/MarkdownImage';
-import { MessageFile } from '@/components/MessageFile';
-import { Icon } from '@/components/Shared';
-import { Markdown, Text } from '@/components/Shared';
+import { Markdown } from '@/components/Markdown';
+import { CitationTextHighlighter, DataTable, MarkdownImage } from '@/components/MessageRow';
+import { Icon, Skeleton, Text } from '@/components/UI';
import {
type ChatMessage,
MessageType,
@@ -17,7 +14,7 @@ import {
isFulfilledOrTypingMessage,
isLoadingMessage,
} from '@/types/message';
-import { cn } from '@/utils';
+import { cn, formatFileSize } from '@/utils';
type Props = {
isLast: boolean;
@@ -58,7 +55,30 @@ export const MessageContent: React.FC = ({ isLast, message, onRetry }) =>
{message.files && message.files.length > 0 && (
{message.files.map((file) => (
-
+
+
+
+
+
+
+ {file.file_name}
+
+
+ {file.file_size ? (
+
+ {formatFileSize(file.file_size)}
+
+ ) : (
+
+ )}
+
+
+
))}
)}
diff --git a/src/interfaces/assistants_web/src/components/MessageRow/MessageFile.tsx b/src/interfaces/assistants_web/src/components/MessageRow/MessageFile.tsx
new file mode 100644
index 0000000000..ebfb4ec012
--- /dev/null
+++ b/src/interfaces/assistants_web/src/components/MessageRow/MessageFile.tsx
@@ -0,0 +1,62 @@
+'use client';
+
+import React from 'react';
+
+import { Icon, Skeleton, Text } from '@/components/UI';
+import { cn, formatFileSize, getFileExtension } from '@/utils';
+
+type Props = {
+ name?: string;
+ size?: number;
+};
+
+const getFileType = (fileName: string) => {
+ return getFileExtension(fileName)?.replace(/^./, ''); // replace first character if it is a period
+};
+
+/**
+ * @description Renders a file card in a chat message or composer.
+ */
+export const MessageFile: React.FC = ({ name, size }) => {
+ const type = getFileType(name ?? '');
+ const fileSize = size !== undefined ? formatFileSize(size) : undefined;
+
+ return (
+
+
+
+
+
+
+ {name}
+
+
+ {type && (
+
+ {type} •
+
+ )}
+
+ {fileSize ? (
+
+ {fileSize}
+
+ ) : (
+
+ )}
+
+
+
+ );
+};
diff --git a/src/interfaces/assistants_web/src/components/MessageRow.tsx b/src/interfaces/assistants_web/src/components/MessageRow/MessageRow.tsx
similarity index 89%
rename from src/interfaces/assistants_web/src/components/MessageRow.tsx
rename to src/interfaces/assistants_web/src/components/MessageRow/MessageRow.tsx
index da4d414252..f237d43806 100644
--- a/src/interfaces/assistants_web/src/components/MessageRow.tsx
+++ b/src/interfaces/assistants_web/src/components/MessageRow/MessageRow.tsx
@@ -3,13 +3,15 @@
import { forwardRef, useEffect, useState } from 'react';
import { useLongPress } from 'react-aria';
-import { Avatar } from '@/components/Avatar';
-import { IconButton } from '@/components/IconButton';
-import { LongPressMenu } from '@/components/LongPressMenu';
-import { MessageContent } from '@/components/MessageContent';
-import { Button, CopyToClipboardButton, CopyToClipboardIconButton } from '@/components/Shared';
-import { ToolEvents } from '@/components/ToolEvents';
-import { Breakpoint, useBreakpoint } from '@/hooks/breakpoint';
+import { Avatar, MessageContent, ToolEvents } from '@/components/MessageRow';
+import {
+ Button,
+ CopyToClipboardButton,
+ CopyToClipboardIconButton,
+ IconButton,
+ LongPressMenu,
+} from '@/components/UI';
+import { Breakpoint, useBreakpoint } from '@/hooks';
import {
type ChatMessage,
isAbortedMessage,
@@ -33,7 +35,7 @@ type Props = {
/**
* Renders a single message row from the user or from our models.
*/
-const MessageRow = forwardRef(function MessageRowInternal(
+export const MessageRow = forwardRef(function MessageRowInternal(
{ message, delay = false, isLast, isStreamingToolEvents, className = '', onCopy, onRetry },
ref
) {
@@ -151,4 +153,3 @@ const MessageRow = forwardRef(function MessageRowInternal
);
});
-export default MessageRow;
diff --git a/src/interfaces/assistants_web/src/components/ToolEvents.tsx b/src/interfaces/assistants_web/src/components/MessageRow/ToolEvents.tsx
similarity index 97%
rename from src/interfaces/assistants_web/src/components/ToolEvents.tsx
rename to src/interfaces/assistants_web/src/components/MessageRow/ToolEvents.tsx
index 8c5e7b3821..2a719184c8 100644
--- a/src/interfaces/assistants_web/src/components/ToolEvents.tsx
+++ b/src/interfaces/assistants_web/src/components/MessageRow/ToolEvents.tsx
@@ -4,15 +4,15 @@ import { Transition } from '@headlessui/react';
import { Fragment, PropsWithChildren } from 'react';
import { StreamSearchResults, StreamToolCallsGeneration, ToolCall } from '@/cohere-client';
-import { Icon, IconName, Markdown, Text } from '@/components/Shared';
+import { Markdown } from '@/components/Markdown';
+import { Icon, IconName, Text } from '@/components/UI';
import {
TOOL_CALCULATOR_ID,
TOOL_GOOGLE_DRIVE_ID,
TOOL_PYTHON_INTERPRETER_ID,
TOOL_WEB_SEARCH_ID,
} from '@/constants';
-import { cn, getValidURL } from '@/utils';
-import { getToolIcon } from '@/utils/tools';
+import { cn, getToolIcon, getValidURL } from '@/utils';
type Props = {
show: boolean;
diff --git a/src/interfaces/assistants_web/src/components/MessageRow/index.ts b/src/interfaces/assistants_web/src/components/MessageRow/index.ts
new file mode 100644
index 0000000000..9a0807fc91
--- /dev/null
+++ b/src/interfaces/assistants_web/src/components/MessageRow/index.ts
@@ -0,0 +1,8 @@
+export * from './Avatar';
+export * from './Citation';
+export * from './CitationTextHighlighter';
+export * from './DataTable';
+export * from './MarkdownImage';
+export * from './MessageContent';
+export * from './MessageRow';
+export * from './ToolEvents';
diff --git a/src/interfaces/assistants_web/src/components/AssistantTools.tsx b/src/interfaces/assistants_web/src/components/MessagingContainer/AssistantTools.tsx
similarity index 89%
rename from src/interfaces/assistants_web/src/components/AssistantTools.tsx
rename to src/interfaces/assistants_web/src/components/MessagingContainer/AssistantTools.tsx
index bab317214a..84b7c56482 100644
--- a/src/interfaces/assistants_web/src/components/AssistantTools.tsx
+++ b/src/interfaces/assistants_web/src/components/MessagingContainer/AssistantTools.tsx
@@ -3,14 +3,11 @@
import React from 'react';
import { AgentPublic, ManagedTool } from '@/cohere-client';
-import { Button, Icon, Text } from '@/components/Shared';
-import { ToggleCard } from '@/components/ToggleCard';
-import { WelcomeGuideTooltip } from '@/components/WelcomeGuideTooltip';
-import { useAvailableTools } from '@/hooks/tools';
+import { WelcomeGuideTooltip } from '@/components/MessagingContainer';
+import { Button, Icon, Text, ToggleCard } from '@/components/UI';
+import { useAvailableTools } from '@/hooks';
import { useParamsStore } from '@/stores';
-import { cn } from '@/utils';
-import { checkIsBaseAgent } from '@/utils/agents';
-import { getToolIcon } from '@/utils/tools';
+import { checkIsBaseAgent, cn, getToolIcon } from '@/utils';
/**
* @description Tools for the assistant to use in the conversation.
diff --git a/src/interfaces/assistants_web/src/components/Conversation/MessagingContainer.tsx b/src/interfaces/assistants_web/src/components/MessagingContainer/MessagingContainer.tsx
similarity index 94%
rename from src/interfaces/assistants_web/src/components/Conversation/MessagingContainer.tsx
rename to src/interfaces/assistants_web/src/components/MessagingContainer/MessagingContainer.tsx
index 2490ddef9c..5ff8410911 100644
--- a/src/interfaces/assistants_web/src/components/Conversation/MessagingContainer.tsx
+++ b/src/interfaces/assistants_web/src/components/MessagingContainer/MessagingContainer.tsx
@@ -5,10 +5,10 @@ import { usePrevious } from '@react-hookz/web';
import React, { ReactNode, memo, useEffect, useMemo } from 'react';
import ScrollToBottom, { useScrollToBottom, useSticky } from 'react-scroll-to-bottom';
-import MessageRow from '@/components/MessageRow';
-import { Button } from '@/components/Shared';
-import { Welcome } from '@/components/Welcome';
-import { useFixCopyBug } from '@/hooks/fixCopyBug';
+import { MessageRow } from '@/components/MessageRow';
+import { Welcome } from '@/components/MessagingContainer';
+import { Button } from '@/components/UI';
+import { useFixCopyBug } from '@/hooks';
import { ChatMessage, MessageType, StreamingMessage, isFulfilledMessage } from '@/types/message';
import { cn } from '@/utils';
@@ -29,7 +29,8 @@ type Props = {
* This component is in charge of rendering anything in the main scrollable view.
* This includes all of the message, the RAG citations, and the composer (which is sticky at the bottom).
*/
-const MessagingContainer: React.FC