diff --git a/client/src/a11y/LiveAnnouncer.tsx b/client/src/a11y/LiveAnnouncer.tsx
index 9df48bf2e9..29912b49af 100644
--- a/client/src/a11y/LiveAnnouncer.tsx
+++ b/client/src/a11y/LiveAnnouncer.tsx
@@ -1,6 +1,6 @@
// client/src/a11y/LiveAnnouncer.tsx
import React, { useState, useCallback, useRef, useEffect, useMemo } from 'react';
-import type { AnnounceOptions } from '~/Providers/AnnouncerContext';
+import type { AnnounceOptions } from '~/common';
import AnnouncerContext from '~/Providers/AnnouncerContext';
import useLocalize from '~/hooks/useLocalize';
import Announcer from './Announcer';
diff --git a/client/src/components/Audio/Voices.tsx b/client/src/components/Audio/Voices.tsx
index ab6b0a8609..963ff250d8 100644
--- a/client/src/components/Audio/Voices.tsx
+++ b/client/src/components/Audio/Voices.tsx
@@ -1,7 +1,6 @@
import React from 'react';
import { useRecoilState } from 'recoil';
import type { Option } from '~/common';
-import DropdownNoState from '~/components/ui/DropdownNoState';
import { useLocalize, useTTSBrowser, useTTSEdge, useTTSExternal } from '~/hooks';
import { Dropdown } from '~/components/ui';
import { logger } from '~/utils';
diff --git a/client/src/components/Auth/AuthLayout.tsx b/client/src/components/Auth/AuthLayout.tsx
index 0ff99f357c..6df73d2cf9 100644
--- a/client/src/components/Auth/AuthLayout.tsx
+++ b/client/src/components/Auth/AuthLayout.tsx
@@ -9,8 +9,9 @@ import Footer from './Footer';
const ErrorRender = ({ children }: { children: React.ReactNode }) => (
{children}
@@ -36,8 +37,9 @@ function AuthLayout({
}) {
const localize = useLocalize();
+ const hasStartupConfigError = startupConfigError !== null && startupConfigError !== undefined;
const DisplayError = () => {
- if (startupConfigError !== null && startupConfigError !== undefined) {
+ if (hasStartupConfigError) {
return
{localize('com_auth_error_login_server')};
} else if (error === 'com_auth_error_invalid_reset_token') {
return (
@@ -49,7 +51,7 @@ function AuthLayout({
{localize('com_auth_to_try_again')}
);
- } else if (error) {
+ } else if (error != null && error) {
return
{localize(error)};
}
return null;
@@ -60,7 +62,11 @@ function AuthLayout({
-

+
@@ -70,7 +76,7 @@ function AuthLayout({
- {!startupConfigError && !isFetching && (
+ {!hasStartupConfigError && !isFetching && (
(
{children}
diff --git a/client/src/components/Chat/ExportAndShareMenu.tsx b/client/src/components/Chat/ExportAndShareMenu.tsx
index 420c753310..349658a41e 100644
--- a/client/src/components/Chat/ExportAndShareMenu.tsx
+++ b/client/src/components/Chat/ExportAndShareMenu.tsx
@@ -1,11 +1,11 @@
-import { useState, useId } from 'react';
+import { useState, useId, useRef } from 'react';
import { useRecoilValue } from 'recoil';
import * as Ariakit from '@ariakit/react';
import { Upload, Share2 } from 'lucide-react';
import { ShareButton } from '~/components/Conversations/ConvoOptions';
import { useMediaQuery, useLocalize } from '~/hooks';
+import ExportModal from '~/components/Nav/ExportConversation/ExportModal';
import { DropdownPopup } from '~/components/ui';
-import { ExportModal } from '../Nav';
import store from '~/store';
export default function ExportAndShareMenu({
@@ -19,6 +19,7 @@ export default function ExportAndShareMenu({
const [showShareDialog, setShowShareDialog] = useState(false);
const menuId = useId();
+ const exportButtonRef = useRef(null);
const isSmallScreen = useMediaQuery('(max-width: 768px)');
const conversation = useRecoilValue(store.conversationByIndex(0));
@@ -68,6 +69,7 @@ export default function ExportAndShareMenu({
setIsOpen={setIsPopoverActive}
trigger={
)}
>
diff --git a/client/src/components/Chat/Menus/EndpointsMenu.tsx b/client/src/components/Chat/Menus/EndpointsMenu.tsx
index f4ac27ccc4..fc92c89d98 100644
--- a/client/src/components/Chat/Menus/EndpointsMenu.tsx
+++ b/client/src/components/Chat/Menus/EndpointsMenu.tsx
@@ -5,6 +5,7 @@ import type { FC } from 'react';
import { useChatContext, useAgentsMapContext, useAssistantsMapContext } from '~/Providers';
import { mapEndpoints, getEntity } from '~/utils';
import EndpointItems from './Endpoints/MenuItems';
+import useLocalize from '~/hooks/useLocalize';
import TitleButton from './UI/TitleButton';
const EndpointsMenu: FC = () => {
@@ -12,6 +13,7 @@ const EndpointsMenu: FC = () => {
select: mapEndpoints,
});
+ const localize = useLocalize();
const agentsMap = useAgentsMapContext();
const assistantMap = useAssistantsMapContext();
const { conversation } = useChatContext();
@@ -51,6 +53,9 @@ const EndpointsMenu: FC = () => {