feat: /client transition to @librechat/client

This commit is contained in:
Marco Beretta 2025-07-16 00:51:45 +02:00
parent 63a5902404
commit b71a82d0e9
No known key found for this signature in database
GPG key ID: D918033D8E74CC11
347 changed files with 913 additions and 771 deletions

View file

@ -1,13 +1,12 @@
import { RecoilRoot } from 'recoil'; import { RecoilRoot } from 'recoil';
import { DndProvider } from 'react-dnd'; import { DndProvider } from 'react-dnd';
import { Toast } from '@librechat/client';
import { RouterProvider } from 'react-router-dom'; import { RouterProvider } from 'react-router-dom';
import * as RadixToast from '@radix-ui/react-toast'; import * as RadixToast from '@radix-ui/react-toast';
import { HTML5Backend } from 'react-dnd-html5-backend'; import { HTML5Backend } from 'react-dnd-html5-backend';
import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
import { Toast, ThemeProvider, ToastProvider } from '@librechat/client';
import { QueryClient, QueryClientProvider, QueryCache } from '@tanstack/react-query'; import { QueryClient, QueryClientProvider, QueryCache } from '@tanstack/react-query';
import { ScreenshotProvider, ThemeProvider, useApiErrorBoundary } from './hooks'; import { ScreenshotProvider, useApiErrorBoundary } from './hooks';
import { ToastProvider } from './Providers';
import { LiveAnnouncer } from '~/a11y'; import { LiveAnnouncer } from '~/a11y';
import { router } from './routes'; import { router } from './routes';

View file

@ -1,11 +1,9 @@
export { default as AssistantsProvider } from './AssistantsContext'; export { default as AssistantsProvider } from './AssistantsContext';
export { default as AgentsProvider } from './AgentsContext'; export { default as AgentsProvider } from './AgentsContext';
export { default as ToastProvider } from './ToastContext';
export * from './ActivePanelContext'; export * from './ActivePanelContext';
export * from './AgentPanelContext'; export * from './AgentPanelContext';
export * from './ChatContext'; export * from './ChatContext';
export * from './ShareContext'; export * from './ShareContext';
export * from './ToastContext';
export * from './FileMapContext'; export * from './FileMapContext';
export * from './AddedChatContext'; export * from './AddedChatContext';
export * from './EditorContext'; export * from './EditorContext';

View file

@ -1,8 +1,7 @@
// client/src/a11y/LiveAnnouncer.tsx
import React, { useState, useCallback, useRef, useEffect, useMemo } from 'react'; import React, { useState, useCallback, useRef, useEffect, useMemo } from 'react';
import type { AnnounceOptions } from '~/common'; import type { AnnounceOptions } from '~/common';
import AnnouncerContext from '~/Providers/AnnouncerContext'; import AnnouncerContext from '~/Providers/AnnouncerContext';
import useLocalize from '~/hooks/useLocalize'; import { useLocalize } from '~/hooks';
import Announcer from './Announcer'; import Announcer from './Announcer';
interface LiveAnnouncerProps { interface LiveAnnouncerProps {

View file

@ -6,9 +6,9 @@ import type { SandpackPreviewRef, CodeEditorRef } from '@codesandbox/sandpack-re
import useArtifacts from '~/hooks/Artifacts/useArtifacts'; import useArtifacts from '~/hooks/Artifacts/useArtifacts';
import DownloadArtifact from './DownloadArtifact'; import DownloadArtifact from './DownloadArtifact';
import { useEditorContext } from '~/Providers'; import { useEditorContext } from '~/Providers';
import useLocalize from '~/hooks/useLocalize';
import ArtifactTabs from './ArtifactTabs'; import ArtifactTabs from './ArtifactTabs';
import { CopyCodeButton } from './Code'; import { CopyCodeButton } from './Code';
import { useLocalize } from '~/hooks';
import store from '~/store'; import store from '~/store';
export default function Artifacts() { export default function Artifacts() {

View file

@ -1,12 +1,11 @@
import React, { memo, useEffect, useRef, useState } from 'react'; import React, { memo, useEffect, useRef, useState } from 'react';
import copy from 'copy-to-clipboard';
import rehypeKatex from 'rehype-katex'; import rehypeKatex from 'rehype-katex';
import ReactMarkdown from 'react-markdown'; import ReactMarkdown from 'react-markdown';
import rehypeHighlight from 'rehype-highlight'; import rehypeHighlight from 'rehype-highlight';
import copy from 'copy-to-clipboard'; import { Clipboard, CheckMark } from '@librechat/client';
import { handleDoubleClick, langSubset } from '~/utils'; import { handleDoubleClick, langSubset } from '~/utils';
import Clipboard from '~/components/svg/Clipboard'; import { useLocalize } from '~/hooks';
import CheckMark from '~/components/svg/CheckMark';
import useLocalize from '~/hooks/useLocalize';
type TCodeProps = { type TCodeProps = {
inline: boolean; inline: boolean;

View file

@ -1,9 +1,9 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Download } from 'lucide-react'; import { Download } from 'lucide-react';
import type { Artifact } from '~/common'; import type { Artifact } from '~/common';
import { CheckMark } from '@librechat/client';
import useArtifactProps from '~/hooks/Artifacts/useArtifactProps'; import useArtifactProps from '~/hooks/Artifacts/useArtifactProps';
import { useEditorContext } from '~/Providers'; import { useEditorContext } from '~/Providers';
import { CheckMark } from '~/components/svg';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
const DownloadArtifact = ({ const DownloadArtifact = ({

View file

@ -1,8 +1,7 @@
import React, { useEffect, useRef, useState } from 'react'; import React, { useEffect, useRef, useState } from 'react';
import mermaid from 'mermaid'; import mermaid from 'mermaid';
import { Button } from '@librechat/client';
import { TransformWrapper, TransformComponent, ReactZoomPanPinchRef } from 'react-zoom-pan-pinch'; import { TransformWrapper, TransformComponent, ReactZoomPanPinchRef } from 'react-zoom-pan-pinch';
// import { Button } from '/components/ui/Button'; // Live component
import { Button } from '~/components/ui/Button';
import { ZoomIn, ZoomOut, RefreshCw } from 'lucide-react'; import { ZoomIn, ZoomOut, RefreshCw } from 'lucide-react';
interface MermaidDiagramProps { interface MermaidDiagramProps {

View file

@ -2,8 +2,8 @@
import { useEffect } from 'react'; import { useEffect } from 'react';
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import type { TMessageAudio } from '~/common'; import type { TMessageAudio } from '~/common';
import { VolumeIcon, VolumeMuteIcon, Spinner } from '@librechat/client';
import { useLocalize, useTTSBrowser, useTTSExternal } from '~/hooks'; import { useLocalize, useTTSBrowser, useTTSExternal } from '~/hooks';
import { VolumeIcon, VolumeMuteIcon, Spinner } from '~/components';
import { logger } from '~/utils'; import { logger } from '~/utils';
import store from '~/store'; import store from '~/store';

View file

@ -1,8 +1,8 @@
import React from 'react'; import React from 'react';
import { useRecoilState } from 'recoil'; import { useRecoilState } from 'recoil';
import { Dropdown } from '@librechat/client';
import type { Option } from '~/common'; import type { Option } from '~/common';
import { useLocalize, useTTSBrowser, useTTSExternal } from '~/hooks'; import { useLocalize, useTTSBrowser, useTTSExternal } from '~/hooks';
import { Dropdown } from '~/components/ui';
import { logger } from '~/utils'; import { logger } from '~/utils';
import store from '~/store'; import store from '~/store';

View file

@ -1,9 +1,9 @@
import { TranslationKeys, useLocalize } from '~/hooks'; import { ThemeSelector } from '@librechat/client';
import { TStartupConfig } from 'librechat-data-provider'; import { TStartupConfig } from 'librechat-data-provider';
import { ErrorMessage } from '~/components/Auth/ErrorMessage'; import { ErrorMessage } from '~/components/Auth/ErrorMessage';
import { TranslationKeys, useLocalize } from '~/hooks';
import SocialLoginRender from './SocialLoginRender'; import SocialLoginRender from './SocialLoginRender';
import { BlinkAnimation } from './BlinkAnimation'; import { BlinkAnimation } from './BlinkAnimation';
import { ThemeSelector } from '~/components';
import { Banner } from '../Banners'; import { Banner } from '../Banners';
import Footer from './Footer'; import Footer from './Footer';

View file

@ -1,10 +1,10 @@
import { useOutletContext, useSearchParams } from 'react-router-dom'; import { useOutletContext, useSearchParams } from 'react-router-dom';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { useAuthContext } from '~/hooks/AuthContext'; import { OpenIDIcon } from '@librechat/client';
import type { TLoginLayoutContext } from '~/common'; import type { TLoginLayoutContext } from '~/common';
import { ErrorMessage } from '~/components/Auth/ErrorMessage'; import { ErrorMessage } from '~/components/Auth/ErrorMessage';
import SocialButton from '~/components/Auth/SocialButton'; import SocialButton from '~/components/Auth/SocialButton';
import { OpenIDIcon } from '~/components'; import { useAuthContext } from '~/hooks/AuthContext';
import { getLoginError } from '~/utils'; import { getLoginError } from '~/utils';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import LoginForm from './LoginForm'; import LoginForm from './LoginForm';

View file

@ -1,11 +1,11 @@
import { useForm } from 'react-hook-form';
import React, { useState, useEffect, useContext } from 'react'; import React, { useState, useEffect, useContext } from 'react';
import { useForm } from 'react-hook-form';
import { Turnstile } from '@marsidev/react-turnstile'; import { Turnstile } from '@marsidev/react-turnstile';
import { ThemeContext, Spinner, Button } from '@librechat/client';
import type { TLoginUser, TStartupConfig } from 'librechat-data-provider'; import type { TLoginUser, TStartupConfig } from 'librechat-data-provider';
import type { TAuthContext } from '~/common'; import type { TAuthContext } from '~/common';
import { useResendVerificationEmail, useGetStartupConfig } from '~/data-provider'; import { useResendVerificationEmail, useGetStartupConfig } from '~/data-provider';
import { ThemeContext, useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { Spinner, Button } from '~/components';
type TLoginFormProps = { type TLoginFormProps = {
onSubmit: (data: TLoginUser) => void; onSubmit: (data: TLoginUser) => void;

View file

@ -1,12 +1,12 @@
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import React, { useContext, useState } from 'react'; import React, { useContext, useState } from 'react';
import { Turnstile } from '@marsidev/react-turnstile'; import { Turnstile } from '@marsidev/react-turnstile';
import { ThemeContext, Spinner, Button } from '@librechat/client';
import { useNavigate, useOutletContext, useLocation } from 'react-router-dom'; import { useNavigate, useOutletContext, useLocation } from 'react-router-dom';
import { useRegisterUserMutation } from 'librechat-data-provider/react-query'; import { useRegisterUserMutation } from 'librechat-data-provider/react-query';
import type { TRegisterUser, TError } from 'librechat-data-provider'; import type { TRegisterUser, TError } from 'librechat-data-provider';
import { useLocalize, TranslationKeys, ThemeContext } from '~/hooks';
import type { TLoginLayoutContext } from '~/common'; import type { TLoginLayoutContext } from '~/common';
import { Spinner, Button } from '~/components'; import { useLocalize, TranslationKeys } from '~/hooks';
import { ErrorMessage } from './ErrorMessage'; import { ErrorMessage } from './ErrorMessage';
const Registration: React.FC = () => { const Registration: React.FC = () => {

View file

@ -1,11 +1,11 @@
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import { useState, ReactNode } from 'react'; import { useState, ReactNode } from 'react';
import { Spinner, Button } from '@librechat/client';
import { useOutletContext } from 'react-router-dom'; import { useOutletContext } from 'react-router-dom';
import { useRequestPasswordResetMutation } from 'librechat-data-provider/react-query'; import { useRequestPasswordResetMutation } from 'librechat-data-provider/react-query';
import type { TRequestPasswordReset, TRequestPasswordResetResponse } from 'librechat-data-provider'; import type { TRequestPasswordReset, TRequestPasswordResetResponse } from 'librechat-data-provider';
import type { FC } from 'react';
import type { TLoginLayoutContext } from '~/common'; import type { TLoginLayoutContext } from '~/common';
import { Spinner, Button } from '~/components'; import type { FC } from 'react';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
const BodyTextWrapper: FC<{ children: ReactNode }> = ({ children }) => { const BodyTextWrapper: FC<{ children: ReactNode }> = ({ children }) => {

View file

@ -1,10 +1,10 @@
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import { Spinner, Button } from '@librechat/client';
import { useOutletContext } from 'react-router-dom'; import { useOutletContext } from 'react-router-dom';
import { useNavigate, useSearchParams } from 'react-router-dom'; import { useNavigate, useSearchParams } from 'react-router-dom';
import { useResetPasswordMutation } from 'librechat-data-provider/react-query'; import { useResetPasswordMutation } from 'librechat-data-provider/react-query';
import type { TResetPassword } from 'librechat-data-provider'; import type { TResetPassword } from 'librechat-data-provider';
import type { TLoginLayoutContext } from '~/common'; import type { TLoginLayoutContext } from '~/common';
import { Spinner, Button } from '~/components';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
function ResetPassword() { function ResetPassword() {

View file

@ -6,7 +6,7 @@ import {
DiscordIcon, DiscordIcon,
AppleIcon, AppleIcon,
SamlIcon, SamlIcon,
} from '~/components'; } from '@librechat/client';
import SocialButton from './SocialButton'; import SocialButton from './SocialButton';

View file

@ -1,10 +1,10 @@
import React, { useState, useCallback } from 'react'; import React, { useState, useCallback } from 'react';
import { useSearchParams } from 'react-router-dom'; import { useSearchParams } from 'react-router-dom';
import { useToastContext } from '@librechat/client';
import { useForm, Controller } from 'react-hook-form'; import { useForm, Controller } from 'react-hook-form';
import { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from 'input-otp'; import { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from 'input-otp';
import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Label } from '~/components'; import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Label } from '@librechat/client';
import { useVerifyTwoFactorTempMutation } from '~/data-provider'; import { useVerifyTwoFactorTempMutation } from '~/data-provider';
import { useToastContext } from '~/Providers';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
interface VerifyPayload { interface VerifyPayload {

View file

@ -1,8 +1,7 @@
import { useSearchParams, useNavigate } from 'react-router-dom';
import { useState, useEffect, useMemo, useCallback } from 'react'; import { useState, useEffect, useMemo, useCallback } from 'react';
import { Spinner, ThemeSelector } from '@librechat/client';
import { useSearchParams, useNavigate } from 'react-router-dom';
import { useVerifyEmailMutation, useResendVerificationEmail } from '~/data-provider'; import { useVerifyEmailMutation, useResendVerificationEmail } from '~/data-provider';
import { ThemeSelector } from '~/components/ui';
import { Spinner } from '~/components/svg';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
function RequestPasswordReset() { function RequestPasswordReset() {

View file

@ -1,10 +1,8 @@
import React, { useRef, Dispatch, SetStateAction } from 'react'; import React, { useRef, Dispatch, SetStateAction } from 'react';
import { TConversationTag } from 'librechat-data-provider'; import { TConversationTag } from 'librechat-data-provider';
import OGDialogTemplate from '~/components/ui/OGDialogTemplate'; import { OGDialogTemplate, OGDialog, Button, Spinner, useToastContext } from '@librechat/client';
import { useConversationTagMutation } from '~/data-provider'; import { useConversationTagMutation } from '~/data-provider';
import { OGDialog, Button, Spinner } from '~/components';
import { NotificationSeverity } from '~/common'; import { NotificationSeverity } from '~/common';
import { useToastContext } from '~/Providers';
import BookmarkForm from './BookmarkForm'; import BookmarkForm from './BookmarkForm';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { logger } from '~/utils'; import { logger } from '~/utils';

View file

@ -2,11 +2,10 @@ import React, { useEffect } from 'react';
import { QueryKeys } from 'librechat-data-provider'; import { QueryKeys } from 'librechat-data-provider';
import { Controller, useForm } from 'react-hook-form'; import { Controller, useForm } from 'react-hook-form';
import { useQueryClient } from '@tanstack/react-query'; import { useQueryClient } from '@tanstack/react-query';
import { Checkbox, Label, TextareaAutosize, Input, useToastContext } from '@librechat/client';
import type { TConversationTag, TConversationTagRequest } from 'librechat-data-provider'; import type { TConversationTag, TConversationTagRequest } from 'librechat-data-provider';
import { Checkbox, Label, TextareaAutosize, Input } from '~/components';
import { useBookmarkContext } from '~/Providers/BookmarkContext'; import { useBookmarkContext } from '~/Providers/BookmarkContext';
import { useConversationTagMutation } from '~/data-provider'; import { useConversationTagMutation } from '~/data-provider';
import { useToastContext } from '~/Providers';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { cn, logger } from '~/utils'; import { cn, logger } from '~/utils';

View file

@ -1,8 +1,8 @@
import { useState } from 'react'; import { useState } from 'react';
import { Spinner } from '@librechat/client';
import { MenuItem } from '@headlessui/react'; import { MenuItem } from '@headlessui/react';
import { BookmarkFilledIcon, BookmarkIcon } from '@radix-ui/react-icons'; import { BookmarkFilledIcon, BookmarkIcon } from '@radix-ui/react-icons';
import type { FC } from 'react'; import type { FC } from 'react';
import { Spinner } from '~/components/svg';
type MenuItemProps = { type MenuItemProps = {
tag: string | React.ReactNode; tag: string | React.ReactNode;

View file

@ -1,10 +1,17 @@
import { useCallback, useState } from 'react'; import { useCallback, useState } from 'react';
import {
Button,
TrashIcon,
Label,
OGDialog,
OGDialogTrigger,
TooltipAnchor,
OGDialogTemplate,
useToastContext,
} from '@librechat/client';
import type { FC } from 'react'; import type { FC } from 'react';
import { Button, TrashIcon, Label, OGDialog, OGDialogTrigger, TooltipAnchor } from '~/components';
import { useDeleteConversationTagMutation } from '~/data-provider'; import { useDeleteConversationTagMutation } from '~/data-provider';
import OGDialogTemplate from '~/components/ui/OGDialogTemplate';
import { NotificationSeverity } from '~/common'; import { NotificationSeverity } from '~/common';
import { useToastContext } from '~/Providers';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
const DeleteBookmarkButton: FC<{ const DeleteBookmarkButton: FC<{

View file

@ -1,7 +1,7 @@
import { useState } from 'react'; import { useState } from 'react';
import type { FC } from 'react'; import { TooltipAnchor, OGDialogTrigger, EditIcon, Button } from '@librechat/client';
import type { TConversationTag } from 'librechat-data-provider'; import type { TConversationTag } from 'librechat-data-provider';
import { TooltipAnchor, OGDialogTrigger, EditIcon, Button } from '~/components'; import type { FC } from 'react';
import BookmarkEditDialog from './BookmarkEditDialog'; import BookmarkEditDialog from './BookmarkEditDialog';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';

View file

@ -1,8 +1,8 @@
import { PlusCircle } from 'lucide-react'; import { PlusCircle } from 'lucide-react';
import { TooltipAnchor } from '@librechat/client';
import { isAssistantsEndpoint } from 'librechat-data-provider'; import { isAssistantsEndpoint } from 'librechat-data-provider';
import type { TConversation } from 'librechat-data-provider'; import type { TConversation } from 'librechat-data-provider';
import { useChatContext, useAddedChatContext } from '~/Providers'; import { useChatContext, useAddedChatContext } from '~/Providers';
import { TooltipAnchor } from '~/components';
import { mainTextareaId } from '~/common'; import { mainTextareaId } from '~/common';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';

View file

@ -1,6 +1,7 @@
import { memo, useCallback } from 'react'; import { memo, useCallback } from 'react';
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import { Spinner } from '@librechat/client';
import { useParams } from 'react-router-dom'; import { useParams } from 'react-router-dom';
import { Constants } from 'librechat-data-provider'; import { Constants } from 'librechat-data-provider';
import type { TMessage } from 'librechat-data-provider'; import type { TMessage } from 'librechat-data-provider';
@ -10,7 +11,6 @@ import { useChatHelpers, useAddedResponse, useSSE } from '~/hooks';
import ConversationStarters from './Input/ConversationStarters'; import ConversationStarters from './Input/ConversationStarters';
import { useGetMessagesByConvoId } from '~/data-provider'; import { useGetMessagesByConvoId } from '~/data-provider';
import MessagesView from './Messages/MessagesView'; import MessagesView from './Messages/MessagesView';
import { Spinner } from '~/components/svg';
import Presentation from './Presentation'; import Presentation from './Presentation';
import { buildTree, cn } from '~/utils'; import { buildTree, cn } from '~/utils';
import ChatForm from './Input/ChatForm'; import ChatForm from './Input/ChatForm';

View file

@ -2,11 +2,11 @@ import { useState, useId, useRef } from 'react';
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import * as Ariakit from '@ariakit/react'; import * as Ariakit from '@ariakit/react';
import { Upload, Share2 } from 'lucide-react'; import { Upload, Share2 } from 'lucide-react';
import { DropdownPopup, TooltipAnchor, useMediaQuery } from '@librechat/client';
import type * as t from '~/common'; import type * as t from '~/common';
import ExportModal from '~/components/Nav/ExportConversation/ExportModal'; import ExportModal from '~/components/Nav/ExportConversation/ExportModal';
import { ShareButton } from '~/components/Conversations/ConvoOptions'; import { ShareButton } from '~/components/Conversations/ConvoOptions';
import { DropdownPopup, TooltipAnchor } from '~/components/ui'; import { useLocalize } from '~/hooks';
import { useMediaQuery, useLocalize } from '~/hooks';
import store from '~/store'; import store from '~/store';
export default function ExportAndShareMenu({ export default function ExportAndShareMenu({

View file

@ -1,4 +1,5 @@
import { useMemo } from 'react'; import { useMemo } from 'react';
import { useMediaQuery } from '@librechat/client';
import { useOutletContext } from 'react-router-dom'; import { useOutletContext } from 'react-router-dom';
import { getConfigDefaults, PermissionTypes, Permissions } from 'librechat-data-provider'; import { getConfigDefaults, PermissionTypes, Permissions } from 'librechat-data-provider';
import type { ContextType } from '~/common'; import type { ContextType } from '~/common';
@ -6,10 +7,10 @@ import ModelSelector from './Menus/Endpoints/ModelSelector';
import { PresetsMenu, HeaderNewChat, OpenSidebar } from './Menus'; import { PresetsMenu, HeaderNewChat, OpenSidebar } from './Menus';
import { useGetStartupConfig } from '~/data-provider'; import { useGetStartupConfig } from '~/data-provider';
import ExportAndShareMenu from './ExportAndShareMenu'; import ExportAndShareMenu from './ExportAndShareMenu';
import { useMediaQuery, useHasAccess } from '~/hooks';
import BookmarkMenu from './Menus/BookmarkMenu'; import BookmarkMenu from './Menus/BookmarkMenu';
import { TemporaryChat } from './TemporaryChat'; import { TemporaryChat } from './TemporaryChat';
import AddMultiConvo from './AddMultiConvo'; import AddMultiConvo from './AddMultiConvo';
import { useHasAccess } from '~/hooks';
const defaultInterface = getConfigDefaults().interface; const defaultInterface = getConfigDefaults().interface;

View file

@ -1,8 +1,8 @@
import React, { memo, useState, useCallback, useMemo } from 'react'; import React, { memo, useState, useCallback, useMemo } from 'react';
import * as Ariakit from '@ariakit/react'; import * as Ariakit from '@ariakit/react';
import { CheckboxButton } from '@librechat/client';
import { ArtifactModes } from 'librechat-data-provider'; import { ArtifactModes } from 'librechat-data-provider';
import { WandSparkles, ChevronDown } from 'lucide-react'; import { WandSparkles, ChevronDown } from 'lucide-react';
import CheckboxButton from '~/components/ui/CheckboxButton';
import { useBadgeRowContext } from '~/Providers'; import { useBadgeRowContext } from '~/Providers';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,8 +1,8 @@
import React from 'react'; import React from 'react';
import * as Ariakit from '@ariakit/react'; import * as Ariakit from '@ariakit/react';
import { PinIcon } from '@librechat/client';
import { ChevronRight, WandSparkles } from 'lucide-react'; import { ChevronRight, WandSparkles } from 'lucide-react';
import { ArtifactModes } from 'librechat-data-provider'; import { ArtifactModes } from 'librechat-data-provider';
import { PinIcon } from '~/components/svg';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,8 +1,7 @@
import { useCallback } from 'react'; import { useCallback } from 'react';
import { useChatFormContext, useToastContext } from '~/Providers'; import { useToastContext, TooltipAnchor, ListeningIcon, Spinner } from '@librechat/client';
import { ListeningIcon, Spinner } from '~/components/svg';
import { useLocalize, useSpeechToText } from '~/hooks'; import { useLocalize, useSpeechToText } from '~/hooks';
import { TooltipAnchor } from '~/components/ui'; import { useChatFormContext } from '~/Providers';
import { globalAudioId } from '~/common'; import { globalAudioId } from '~/common';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -8,6 +8,7 @@ import React, {
useReducer, useReducer,
useCallback, useCallback,
} from 'react'; } from 'react';
import { Badge } from '@librechat/client';
import { useRecoilValue, useRecoilCallback } from 'recoil'; import { useRecoilValue, useRecoilCallback } from 'recoil';
import type { LucideIcon } from 'lucide-react'; import type { LucideIcon } from 'lucide-react';
import CodeInterpreter from './CodeInterpreter'; import CodeInterpreter from './CodeInterpreter';
@ -15,7 +16,6 @@ import { BadgeRowProvider } from '~/Providers';
import ToolsDropdown from './ToolsDropdown'; import ToolsDropdown from './ToolsDropdown';
import type { BadgeItem } from '~/common'; import type { BadgeItem } from '~/common';
import { useChatBadges } from '~/hooks'; import { useChatBadges } from '~/hooks';
import { Badge } from '~/components/ui';
import ToolDialogs from './ToolDialogs'; import ToolDialogs from './ToolDialogs';
import FileSearch from './FileSearch'; import FileSearch from './FileSearch';
import Artifacts from './Artifacts'; import Artifacts from './Artifacts';

View file

@ -1,5 +1,6 @@
import { memo, useRef, useMemo, useEffect, useState, useCallback } from 'react'; import { memo, useRef, useMemo, useEffect, useState, useCallback } from 'react';
import { useWatch } from 'react-hook-form'; import { useWatch } from 'react-hook-form';
import { TextareaAutosize } from '@librechat/client';
import { useRecoilState, useRecoilValue } from 'recoil'; import { useRecoilState, useRecoilValue } from 'recoil';
import { Constants, isAssistantsEndpoint, isAgentsEndpoint } from 'librechat-data-provider'; import { Constants, isAssistantsEndpoint, isAgentsEndpoint } from 'librechat-data-provider';
import { import {
@ -20,7 +21,6 @@ import {
import { mainTextareaId, BadgeItem } from '~/common'; import { mainTextareaId, BadgeItem } from '~/common';
import AttachFileChat from './Files/AttachFileChat'; import AttachFileChat from './Files/AttachFileChat';
import FileFormChat from './Files/FileFormChat'; import FileFormChat from './Files/FileFormChat';
import { TextareaAutosize } from '~/components';
import { cn, removeFocusRings } from '~/utils'; import { cn, removeFocusRings } from '~/utils';
import TextareaHeader from './TextareaHeader'; import TextareaHeader from './TextareaHeader';
import PromptsCommand from './PromptsCommand'; import PromptsCommand from './PromptsCommand';

View file

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import { CircleIcon, CircleDotsIcon } from '~/components/svg';
import { ECallState } from 'librechat-data-provider'; import { ECallState } from 'librechat-data-provider';
import { CircleIcon, CircleDotsIcon } from '@librechat/client';
const CircleRender = ({ rmsLevel, isCameraOn, state }) => { const CircleRender = ({ rmsLevel, isCameraOn, state }) => {
const getIconComponent = (state) => { const getIconComponent = (state) => {

View file

@ -1,7 +1,7 @@
import React, { memo } from 'react'; import React, { memo } from 'react';
import { TerminalSquareIcon } from 'lucide-react'; import { TerminalSquareIcon } from 'lucide-react';
import { CheckboxButton } from '@librechat/client';
import { PermissionTypes, Permissions } from 'librechat-data-provider'; import { PermissionTypes, Permissions } from 'librechat-data-provider';
import CheckboxButton from '~/components/ui/CheckboxButton';
import { useLocalize, useHasAccess } from '~/hooks'; import { useLocalize, useHasAccess } from '~/hooks';
import { useBadgeRowContext } from '~/Providers'; import { useBadgeRowContext } from '~/Providers';

View file

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import { TooltipAnchor } from '@librechat/client';
import { ChevronDown, ChevronUp } from 'lucide-react'; import { ChevronDown, ChevronUp } from 'lucide-react';
import { TooltipAnchor } from '~/components/ui';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,9 +1,9 @@
import React, { useCallback } from 'react'; import React, { useCallback } from 'react';
import { Edit3, Check, X } from 'lucide-react'; import { Edit3, Check, X } from 'lucide-react';
import { Button, Badge } from '@librechat/client';
import type { LucideIcon } from 'lucide-react'; import type { LucideIcon } from 'lucide-react';
import type { BadgeItem } from '~/common'; import type { BadgeItem } from '~/common';
import { useChatBadges, useLocalize } from '~/hooks'; import { useChatBadges, useLocalize } from '~/hooks';
import { Button, Badge } from '~/components/ui';
interface EditBadgesProps { interface EditBadgesProps {
isEditingChatBadges: boolean; isEditingChatBadges: boolean;

View file

@ -1,9 +1,8 @@
import React, { memo } from 'react'; import React, { memo } from 'react';
import { CheckboxButton, VectorIcon } from '@librechat/client';
import { PermissionTypes, Permissions } from 'librechat-data-provider'; import { PermissionTypes, Permissions } from 'librechat-data-provider';
import CheckboxButton from '~/components/ui/CheckboxButton';
import { useLocalize, useHasAccess } from '~/hooks'; import { useLocalize, useHasAccess } from '~/hooks';
import { useBadgeRowContext } from '~/Providers'; import { useBadgeRowContext } from '~/Providers';
import { VectorIcon } from '~/components/svg';
function FileSearch() { function FileSearch() {
const localize = useLocalize(); const localize = useLocalize();

View file

@ -1,5 +1,5 @@
import React, { useRef } from 'react'; import React, { useRef } from 'react';
import { FileUpload, TooltipAnchor, AttachmentIcon } from '~/components'; import { FileUpload, TooltipAnchor, AttachmentIcon } from '@librechat/client';
import { useLocalize, useFileHandling } from '~/hooks'; import { useLocalize, useFileHandling } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,11 +1,11 @@
import { useSetRecoilState } from 'recoil';
import * as Ariakit from '@ariakit/react';
import React, { useRef, useState, useMemo } from 'react'; import React, { useRef, useState, useMemo } from 'react';
import * as Ariakit from '@ariakit/react';
import { useSetRecoilState } from 'recoil';
import { FileSearch, ImageUpIcon, TerminalSquareIcon, FileType2Icon } from 'lucide-react'; import { FileSearch, ImageUpIcon, TerminalSquareIcon, FileType2Icon } from 'lucide-react';
import { FileUpload, TooltipAnchor, DropdownPopup, AttachmentIcon } from '@librechat/client';
import { EToolResources, EModelEndpoint, defaultAgentCapabilities } from 'librechat-data-provider'; import { EToolResources, EModelEndpoint, defaultAgentCapabilities } from 'librechat-data-provider';
import type { EndpointFileConfig } from 'librechat-data-provider'; import type { EndpointFileConfig } from 'librechat-data-provider';
import { useLocalize, useGetAgentsConfig, useFileHandling, useAgentCapabilities } from '~/hooks'; import { useLocalize, useGetAgentsConfig, useFileHandling, useAgentCapabilities } from '~/hooks';
import { FileUpload, TooltipAnchor, DropdownPopup, AttachmentIcon } from '~/components';
import { ephemeralAgentByConvoId } from '~/store'; import { ephemeralAgentByConvoId } from '~/store';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,8 +1,8 @@
import React, { useMemo } from 'react'; import React, { useMemo } from 'react';
import { OGDialog, OGDialogTemplate } from '@librechat/client';
import { ImageUpIcon, FileSearch, TerminalSquareIcon, FileType2Icon } from 'lucide-react'; import { ImageUpIcon, FileSearch, TerminalSquareIcon, FileType2Icon } from 'lucide-react';
import { EToolResources, defaultAgentCapabilities } from 'librechat-data-provider'; import { EToolResources, defaultAgentCapabilities } from 'librechat-data-provider';
import { useLocalize, useGetAgentsConfig, useAgentCapabilities } from '~/hooks'; import { useLocalize, useGetAgentsConfig, useAgentCapabilities } from '~/hooks';
import { OGDialog, OGDialogTemplate } from '~/components/ui';
interface DragDropModalProps { interface DragDropModalProps {
onOptionSelect: (option: EToolResources | undefined) => void; onOptionSelect: (option: EToolResources | undefined) => void;

View file

@ -1,7 +1,7 @@
import { Spinner } from '@librechat/client';
import type { TFile } from 'librechat-data-provider'; import type { TFile } from 'librechat-data-provider';
import type { ExtendedFile } from '~/common'; import type { ExtendedFile } from '~/common';
import FileIcon from '~/components/svg/Files/FileIcon'; import { FileIcon } from '~/components/svg';
import { Spinner } from '~/components';
import SourceIcon from './SourceIcon'; import SourceIcon from './SourceIcon';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,11 +1,11 @@
import { useEffect } from 'react'; import { useEffect } from 'react';
import { useToastContext } from '@librechat/client';
import { EToolResources } from 'librechat-data-provider'; import { EToolResources } from 'librechat-data-provider';
import type { ExtendedFile } from '~/common'; import type { ExtendedFile } from '~/common';
import { useDeleteFilesMutation } from '~/data-provider'; import { useDeleteFilesMutation } from '~/data-provider';
import { useToastContext } from '~/Providers';
import { useLocalize } from '~/hooks';
import { useFileDeletion } from '~/hooks/Files'; import { useFileDeletion } from '~/hooks/Files';
import FileContainer from './FileContainer'; import FileContainer from './FileContainer';
import { useLocalize } from '~/hooks';
import { logger } from '~/utils'; import { logger } from '~/utils';
import Image from './Image'; import Image from './Image';

View file

@ -1,6 +1,6 @@
import { FileSources, FileContext } from 'librechat-data-provider'; import { FileSources, FileContext } from 'librechat-data-provider';
import type { TFile } from 'librechat-data-provider'; import type { TFile } from 'librechat-data-provider';
import { OGDialog, OGDialogContent, OGDialogHeader, OGDialogTitle } from '~/components'; import { OGDialog, OGDialogContent, OGDialogHeader, OGDialogTitle } from '@librechat/client';
import { useGetFiles } from '~/data-provider'; import { useGetFiles } from '~/data-provider';
import { DataTable, columns } from './Table'; import { DataTable, columns } from './Table';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';

View file

@ -1,7 +1,7 @@
import { useState, useEffect, useCallback } from 'react'; import { useState, useEffect, useCallback } from 'react';
import { Maximize2 } from 'lucide-react'; import { Maximize2 } from 'lucide-react';
import { OGDialog, OGDialogContent } from '~/components/ui';
import { FileSources } from 'librechat-data-provider'; import { FileSources } from 'librechat-data-provider';
import { OGDialog, OGDialogContent } from '@librechat/client';
import ProgressCircle from './ProgressCircle'; import ProgressCircle from './ProgressCircle';
import SourceIcon from './SourceIcon'; import SourceIcon from './SourceIcon';
import { cn } from '~/utils'; import { cn } from '~/utils';
@ -93,9 +93,9 @@ const ImagePreview = ({
const style: styleProps = imageUrl const style: styleProps = imageUrl
? { ? {
...baseStyle, ...baseStyle,
backgroundImage: `url(${imageUrl})`, backgroundImage: `url(${imageUrl})`,
} }
: baseStyle; : baseStyle;
if (typeof style.backgroundImage !== 'string' || style.backgroundImage.length === 0) { if (typeof style.backgroundImage !== 'string' || style.backgroundImage.length === 0) {

View file

@ -1,14 +1,19 @@
/* eslint-disable react-hooks/rules-of-hooks */ /* eslint-disable react-hooks/rules-of-hooks */
import { ArrowUpDown, Database } from 'lucide-react'; import { ArrowUpDown, Database } from 'lucide-react';
import { FileSources, FileContext } from 'librechat-data-provider'; import { FileSources, FileContext } from 'librechat-data-provider';
import {
Button,
Checkbox,
OpenAIMinimalIcon,
AzureMinimalIcon,
useMediaQuery,
} from '@librechat/client';
import type { ColumnDef } from '@tanstack/react-table'; import type { ColumnDef } from '@tanstack/react-table';
import type { TFile } from 'librechat-data-provider'; import type { TFile } from 'librechat-data-provider';
import { Button, Checkbox, OpenAIMinimalIcon, AzureMinimalIcon } from '~/components';
import ImagePreview from '~/components/Chat/Input/Files/ImagePreview'; import ImagePreview from '~/components/Chat/Input/Files/ImagePreview';
import FilePreview from '~/components/Chat/Input/Files/FilePreview'; import FilePreview from '~/components/Chat/Input/Files/FilePreview';
import { TranslationKeys, useLocalize } from '~/hooks';
import { SortFilterHeader } from './SortFilterHeader'; import { SortFilterHeader } from './SortFilterHeader';
import { TranslationKeys, useLocalize, useMediaQuery } from '~/hooks';
import { formatDate, getFileType } from '~/utils'; import { formatDate, getFileType } from '~/utils';
const contextMap: Record<any, TranslationKeys> = { const contextMap: Record<any, TranslationKeys> = {

View file

@ -16,8 +16,6 @@ import type {
ColumnFiltersState, ColumnFiltersState,
} from '@tanstack/react-table'; } from '@tanstack/react-table';
import { FileContext } from 'librechat-data-provider'; import { FileContext } from 'librechat-data-provider';
import type { AugmentedColumnDef } from '~/common';
import type { TFile } from 'librechat-data-provider';
import { import {
Button, Button,
Input, Input,
@ -31,11 +29,14 @@ import {
DropdownMenuCheckboxItem, DropdownMenuCheckboxItem,
DropdownMenuContent, DropdownMenuContent,
DropdownMenuTrigger, DropdownMenuTrigger,
} from '~/components/ui'; TrashIcon,
Spinner,
useMediaQuery,
} from '@librechat/client';
import type { TFile } from 'librechat-data-provider';
import type { AugmentedColumnDef } from '~/common';
import { useDeleteFilesFromTable } from '~/hooks/Files'; import { useDeleteFilesFromTable } from '~/hooks/Files';
import { TrashIcon, Spinner } from '~/components/svg'; import { useLocalize } from '~/hooks';
import useLocalize from '~/hooks/useLocalize';
import { useMediaQuery } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';
import store from '~/store'; import store from '~/store';

View file

@ -2,13 +2,13 @@ import { Column } from '@tanstack/react-table';
import { ListFilter, FilterX } from 'lucide-react'; import { ListFilter, FilterX } from 'lucide-react';
import { ArrowDownIcon, ArrowUpIcon, CaretSortIcon } from '@radix-ui/react-icons'; import { ArrowDownIcon, ArrowUpIcon, CaretSortIcon } from '@radix-ui/react-icons';
import { import {
Button,
DropdownMenu, DropdownMenu,
DropdownMenuContent, DropdownMenuContent,
DropdownMenuItem, DropdownMenuItem,
DropdownMenuSeparator, DropdownMenuSeparator,
DropdownMenuTrigger, DropdownMenuTrigger,
} from '~/components/ui/DropdownMenu'; } from '@librechat/client';
import { Button } from '~/components/ui/Button';
import { useLocalize, TranslationKeys } from '~/hooks'; import { useLocalize, TranslationKeys } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,4 +1,4 @@
import { DotsIcon, TrashIcon } from '~/components/svg'; import { DotsIcon, TrashIcon } from '@librechat/client';
export default function Template() { export default function Template() {
return ( return (

View file

@ -2,12 +2,12 @@ import { useRecoilState } from 'recoil';
import { Settings2 } from 'lucide-react'; import { Settings2 } from 'lucide-react';
import { useState, useEffect, useMemo } from 'react'; import { useState, useEffect, useMemo } from 'react';
import { Root, Anchor } from '@radix-ui/react-popover'; import { Root, Anchor } from '@radix-ui/react-popover';
import { EModelEndpoint, isParamEndpoint, tConvoUpdateSchema } from 'librechat-data-provider'; import { PluginStoreDialog, TooltipAnchor } from '@librechat/client';
import { useUserKeyQuery } from 'librechat-data-provider/react-query'; import { useUserKeyQuery } from 'librechat-data-provider/react-query';
import { EModelEndpoint, isParamEndpoint, tConvoUpdateSchema } from 'librechat-data-provider';
import type { TPreset, TInterfaceConfig } from 'librechat-data-provider'; import type { TPreset, TInterfaceConfig } from 'librechat-data-provider';
import { EndpointSettings, SaveAsPresetDialog, AlternativeSettings } from '~/components/Endpoints'; import { EndpointSettings, SaveAsPresetDialog, AlternativeSettings } from '~/components/Endpoints';
import { useSetIndexOptions, useMediaQuery, useLocalize } from '~/hooks'; import { useSetIndexOptions, useLocalize } from '~/hooks';
import { PluginStoreDialog, TooltipAnchor } from '~/components';
import { useGetEndpointsQuery } from '~/data-provider'; import { useGetEndpointsQuery } from '~/data-provider';
import OptionsPopover from './OptionsPopover'; import OptionsPopover from './OptionsPopover';
import PopoverButtons from './PopoverButtons'; import PopoverButtons from './PopoverButtons';

View file

@ -1,6 +1,6 @@
import React, { useEffect } from 'react'; import React, { useEffect } from 'react';
import { useForm, Controller } from 'react-hook-form'; import { useForm, Controller } from 'react-hook-form';
import { Button, Input, Label, OGDialog, OGDialogTemplate } from '~/components'; import { Button, Input, Label, OGDialog, OGDialogTemplate } from '@librechat/client';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
export interface ConfigFieldDetail { export interface ConfigFieldDetail {

View file

@ -1,10 +1,10 @@
import React from 'react'; import React from 'react';
import * as Ariakit from '@ariakit/react'; import * as Ariakit from '@ariakit/react';
import { ChevronRight } from 'lucide-react'; import { ChevronRight } from 'lucide-react';
import { PinIcon, MCPIcon } from '~/components/svg'; import { PinIcon, MCPIcon } from '@librechat/client';
import MCPConfigDialog from '~/components/ui/MCP/MCPConfigDialog';
import MCPServerStatusIcon from '~/components/ui/MCP/MCPServerStatusIcon'; import MCPServerStatusIcon from '~/components/ui/MCP/MCPServerStatusIcon';
import { useMCPServerManager } from '~/hooks/MCP/useMCPServerManager'; import { useMCPServerManager } from '~/hooks/MCP/useMCPServerManager';
import MCPConfigDialog from '~/components/ui/MCP/MCPConfigDialog';
import { cn } from '~/utils'; import { cn } from '~/utils';
interface MCPSubMenuProps { interface MCPSubMenuProps {

View file

@ -1,12 +1,13 @@
import { useState, useRef, useEffect } from 'react'; import { useState, useRef, useEffect } from 'react';
import { useCombobox } from '@librechat/client';
import { AutoSizer, List } from 'react-virtualized'; import { AutoSizer, List } from 'react-virtualized';
import { EModelEndpoint } from 'librechat-data-provider'; import { EModelEndpoint } from 'librechat-data-provider';
import type { SetterOrUpdater } from 'recoil';
import type { MentionOption, ConvoGenerator } from '~/common'; import type { MentionOption, ConvoGenerator } from '~/common';
import type { SetterOrUpdater } from 'recoil';
import useSelectMention from '~/hooks/Input/useSelectMention'; import useSelectMention from '~/hooks/Input/useSelectMention';
import { useLocalize, TranslationKeys } from '~/hooks';
import { useAssistantsMapContext } from '~/Providers'; import { useAssistantsMapContext } from '~/Providers';
import useMentions from '~/hooks/Input/useMentions'; import useMentions from '~/hooks/Input/useMentions';
import { useLocalize, useCombobox, TranslationKeys } from '~/hooks';
import { removeCharIfLast } from '~/utils'; import { removeCharIfLast } from '~/utils';
import MentionItem from './MentionItem'; import MentionItem from './MentionItem';

View file

@ -1,11 +1,10 @@
import { useRef } from 'react'; import { useRef } from 'react';
import { Save } from 'lucide-react'; import { Save } from 'lucide-react';
import { Portal, Content } from '@radix-ui/react-popover'; import { Portal, Content } from '@radix-ui/react-popover';
import { Button, CrossIcon, useOnClickOutside } from '@librechat/client';
import type { ReactNode } from 'react'; import type { ReactNode } from 'react';
import { useLocalize, useOnClickOutside } from '~/hooks';
import { cn, removeFocusOutlines } from '~/utils'; import { cn, removeFocusOutlines } from '~/utils';
import { CrossIcon } from '~/components/svg'; import { useLocalize } from '~/hooks';
import { Button } from '~/components/ui';
type TOptionsPopoverProps = { type TOptionsPopoverProps = {
children: ReactNode; children: ReactNode;

View file

@ -1,9 +1,8 @@
import { useRecoilState } from 'recoil'; import { useRecoilState } from 'recoil';
import { EModelEndpoint, SettingsViews } from 'librechat-data-provider'; import { EModelEndpoint, SettingsViews } from 'librechat-data-provider';
import { Button, MessagesSquared, GPTIcon, AssistantIcon, DataIcon } from '@librechat/client';
import type { ReactNode } from 'react'; import type { ReactNode } from 'react';
import { MessagesSquared, GPTIcon, AssistantIcon, DataIcon } from '~/components/svg';
import { useChatContext } from '~/Providers'; import { useChatContext } from '~/Providers';
import { Button } from '~/components/ui';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { cn } from '~/utils/'; import { cn } from '~/utils/';
import store from '~/store'; import store from '~/store';

View file

@ -1,5 +1,6 @@
import { useState, useRef, useEffect, useMemo, memo, useCallback } from 'react'; import { useState, useRef, useEffect, useMemo, memo, useCallback } from 'react';
import { AutoSizer, List } from 'react-virtualized'; import { AutoSizer, List } from 'react-virtualized';
import { Spinner, useCombobox } from '@librechat/client';
import { useSetRecoilState, useRecoilValue } from 'recoil'; import { useSetRecoilState, useRecoilValue } from 'recoil';
import { PermissionTypes, Permissions } from 'librechat-data-provider'; import { PermissionTypes, Permissions } from 'librechat-data-provider';
import type { TPromptGroup } from 'librechat-data-provider'; import type { TPromptGroup } from 'librechat-data-provider';
@ -7,9 +8,8 @@ import type { PromptOption } from '~/common';
import { removeCharIfLast, mapPromptGroups, detectVariables } from '~/utils'; import { removeCharIfLast, mapPromptGroups, detectVariables } from '~/utils';
import VariableDialog from '~/components/Prompts/Groups/VariableDialog'; import VariableDialog from '~/components/Prompts/Groups/VariableDialog';
import CategoryIcon from '~/components/Prompts/Groups/CategoryIcon'; import CategoryIcon from '~/components/Prompts/Groups/CategoryIcon';
import { useLocalize, useCombobox, useHasAccess } from '~/hooks'; import { useLocalize, useHasAccess } from '~/hooks';
import { useGetAllPromptGroups } from '~/data-provider'; import { useGetAllPromptGroups } from '~/data-provider';
import { Spinner } from '~/components/svg';
import MentionItem from './MentionItem'; import MentionItem from './MentionItem';
import store from '~/store'; import store from '~/store';

View file

@ -1,8 +1,7 @@
import React, { forwardRef } from 'react'; import React, { forwardRef } from 'react';
import { useWatch } from 'react-hook-form'; import { useWatch } from 'react-hook-form';
import type { Control } from 'react-hook-form'; import type { Control } from 'react-hook-form';
import { TooltipAnchor } from '~/components/ui'; import { SendIcon, TooltipAnchor } from '@librechat/client';
import { SendIcon } from '~/components/svg';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,4 +1,4 @@
import { TooltipAnchor } from '~/components/ui'; import { TooltipAnchor } from '@librechat/client';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,6 +1,7 @@
import React, { useState, useMemo, useCallback } from 'react'; import React, { useState, useMemo, useCallback } from 'react';
import * as Ariakit from '@ariakit/react'; import * as Ariakit from '@ariakit/react';
import { Globe, Settings, Settings2, TerminalSquareIcon } from 'lucide-react'; import { Globe, Settings, Settings2, TerminalSquareIcon } from 'lucide-react';
import { TooltipAnchor, DropdownPopup, PinIcon, VectorIcon } from '@librechat/client';
import type { MenuItemProps } from '~/common'; import type { MenuItemProps } from '~/common';
import { import {
AuthType, AuthType,
@ -9,11 +10,9 @@ import {
PermissionTypes, PermissionTypes,
defaultAgentCapabilities, defaultAgentCapabilities,
} from 'librechat-data-provider'; } from 'librechat-data-provider';
import { TooltipAnchor, DropdownPopup } from '~/components';
import { useLocalize, useHasAccess, useAgentCapabilities } from '~/hooks'; import { useLocalize, useHasAccess, useAgentCapabilities } from '~/hooks';
import ArtifactsSubMenu from '~/components/Chat/Input/ArtifactsSubMenu'; import ArtifactsSubMenu from '~/components/Chat/Input/ArtifactsSubMenu';
import MCPSubMenu from '~/components/Chat/Input/MCPSubMenu'; import MCPSubMenu from '~/components/Chat/Input/MCPSubMenu';
import { PinIcon, VectorIcon } from '~/components/svg';
import { useBadgeRowContext } from '~/Providers'; import { useBadgeRowContext } from '~/Providers';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,7 +1,7 @@
import React, { memo } from 'react'; import React, { memo } from 'react';
import { Globe } from 'lucide-react'; import { Globe } from 'lucide-react';
import { CheckboxButton } from '@librechat/client';
import { Permissions, PermissionTypes } from 'librechat-data-provider'; import { Permissions, PermissionTypes } from 'librechat-data-provider';
import CheckboxButton from '~/components/ui/CheckboxButton';
import { useLocalize, useHasAccess } from '~/hooks'; import { useLocalize, useHasAccess } from '~/hooks';
import { useBadgeRowContext } from '~/Providers'; import { useBadgeRowContext } from '~/Providers';

View file

@ -1,9 +1,9 @@
import { useMemo, useCallback, useState, useEffect, useRef } from 'react'; import { useMemo, useCallback, useState, useEffect, useRef } from 'react';
import { easings } from '@react-spring/web'; import { easings } from '@react-spring/web';
import { EModelEndpoint } from 'librechat-data-provider'; import { EModelEndpoint } from 'librechat-data-provider';
import { BirthdayIcon, TooltipAnchor, SplitText } from '@librechat/client';
import { useChatContext, useAgentsMapContext, useAssistantsMapContext } from '~/Providers'; import { useChatContext, useAgentsMapContext, useAssistantsMapContext } from '~/Providers';
import { useGetEndpointsQuery, useGetStartupConfig } from '~/data-provider'; import { useGetEndpointsQuery, useGetStartupConfig } from '~/data-provider';
import { BirthdayIcon, TooltipAnchor, SplitText } from '~/components';
import ConvoIcon from '~/components/Endpoints/ConvoIcon'; import ConvoIcon from '~/components/Endpoints/ConvoIcon';
import { useLocalize, useAuthContext } from '~/hooks'; import { useLocalize, useAuthContext } from '~/hooks';
import { getIconEndpoint, getEntity } from '~/utils'; import { getIconEndpoint, getEntity } from '~/utils';

View file

@ -5,17 +5,15 @@ import { BookmarkPlusIcon } from 'lucide-react';
import { useQueryClient } from '@tanstack/react-query'; import { useQueryClient } from '@tanstack/react-query';
import { Constants, QueryKeys } from 'librechat-data-provider'; import { Constants, QueryKeys } from 'librechat-data-provider';
import { BookmarkFilledIcon, BookmarkIcon } from '@radix-ui/react-icons'; import { BookmarkFilledIcon, BookmarkIcon } from '@radix-ui/react-icons';
import { DropdownPopup, TooltipAnchor, Spinner, useToastContext } from '@librechat/client';
import type { TConversationTag } from 'librechat-data-provider'; import type { TConversationTag } from 'librechat-data-provider';
import type { FC } from 'react'; import type { FC } from 'react';
import type * as t from '~/common'; import type * as t from '~/common';
import { useConversationTagsQuery, useTagConversationMutation } from '~/data-provider'; import { useConversationTagsQuery, useTagConversationMutation } from '~/data-provider';
import { DropdownPopup, TooltipAnchor } from '~/components/ui';
import { BookmarkContext } from '~/Providers/BookmarkContext'; import { BookmarkContext } from '~/Providers/BookmarkContext';
import { BookmarkEditDialog } from '~/components/Bookmarks'; import { BookmarkEditDialog } from '~/components/Bookmarks';
import { useBookmarkSuccess, useLocalize } from '~/hooks'; import { useBookmarkSuccess, useLocalize } from '~/hooks';
import { NotificationSeverity } from '~/common'; import { NotificationSeverity } from '~/common';
import { useToastContext } from '~/Providers';
import { Spinner } from '~/components';
import { cn, logger } from '~/utils'; import { cn, logger } from '~/utils';
import store from '~/store'; import store from '~/store';

View file

@ -1,8 +1,8 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { BookmarkPlusIcon } from 'lucide-react'; import { BookmarkPlusIcon } from 'lucide-react';
import { OGDialogTrigger } from '@librechat/client';
import type { FC } from 'react'; import type { FC } from 'react';
import { BookmarkEditDialog, BookmarkItems, BookmarkItem } from '~/components/Bookmarks'; import { BookmarkEditDialog, BookmarkItems, BookmarkItem } from '~/components/Bookmarks';
import { OGDialogTrigger } from '~/components/ui';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
export const BookmarkMenuItems: FC<{ export const BookmarkMenuItems: FC<{

View file

@ -1,11 +1,11 @@
import { useMemo } from 'react'; import { useMemo } from 'react';
import { SettingsIcon } from 'lucide-react'; import { SettingsIcon } from 'lucide-react';
import { TooltipAnchor, Spinner } from '@librechat/client';
import { EModelEndpoint, isAgentsEndpoint, isAssistantsEndpoint } from 'librechat-data-provider'; import { EModelEndpoint, isAgentsEndpoint, isAssistantsEndpoint } from 'librechat-data-provider';
import type { Endpoint } from '~/common'; import type { Endpoint } from '~/common';
import { CustomMenu as Menu, CustomMenuItem as MenuItem } from '../CustomMenu'; import { CustomMenu as Menu, CustomMenuItem as MenuItem } from '../CustomMenu';
import { useModelSelectorContext } from '../ModelSelectorContext'; import { useModelSelectorContext } from '../ModelSelectorContext';
import { renderEndpointModels } from './EndpointModelItem'; import { renderEndpointModels } from './EndpointModelItem';
import { TooltipAnchor, Spinner } from '~/components';
import { filterModels } from '../utils'; import { filterModels } from '../utils';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,8 +1,7 @@
import { useQueryClient } from '@tanstack/react-query'; import { useQueryClient } from '@tanstack/react-query';
import { QueryKeys, Constants } from 'librechat-data-provider'; import { QueryKeys, Constants } from 'librechat-data-provider';
import { TooltipAnchor, Button, NewChatIcon } from '@librechat/client';
import type { TMessage } from 'librechat-data-provider'; import type { TMessage } from 'librechat-data-provider';
import { TooltipAnchor, Button } from '~/components/ui';
import { NewChatIcon } from '~/components/svg';
import { useChatContext } from '~/Providers'; import { useChatContext } from '~/Providers';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';

View file

@ -1,5 +1,4 @@
import { TooltipAnchor, Button } from '~/components/ui'; import { TooltipAnchor, Button, Sidebar } from '@librechat/client';
import { Sidebar } from '~/components/svg';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
export default function OpenSidebar({ export default function OpenSidebar({

View file

@ -2,6 +2,14 @@ import { useRecoilState } from 'recoil';
import { useCallback, useEffect, useMemo } from 'react'; import { useCallback, useEffect, useMemo } from 'react';
import { useQueryClient } from '@tanstack/react-query'; import { useQueryClient } from '@tanstack/react-query';
import { QueryKeys, isAgentsEndpoint } from 'librechat-data-provider'; import { QueryKeys, isAgentsEndpoint } from 'librechat-data-provider';
import {
Input,
Label,
OGDialog,
OGDialogTitle,
SelectDropDown,
OGDialogContent,
} from '@librechat/client';
import type { TModelsConfig, TEndpointsConfig } from 'librechat-data-provider'; import type { TModelsConfig, TEndpointsConfig } from 'librechat-data-provider';
import { import {
cn, cn,
@ -10,14 +18,6 @@ import {
mapEndpoints, mapEndpoints,
getConvoSwitchLogic, getConvoSwitchLogic,
} from '~/utils'; } from '~/utils';
import {
Input,
Label,
OGDialog,
OGDialogTitle,
SelectDropDown,
OGDialogContent,
} from '~/components';
import { useSetIndexOptions, useLocalize, useDebouncedInput } from '~/hooks'; import { useSetIndexOptions, useLocalize, useDebouncedInput } from '~/hooks';
import PopoverButtons from '~/components/Chat/Input/PopoverButtons'; import PopoverButtons from '~/components/Chat/Input/PopoverButtons';
import { EndpointSettings } from '~/components/Endpoints'; import { EndpointSettings } from '~/components/Endpoints';

View file

@ -1,13 +1,19 @@
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import { Close } from '@radix-ui/react-popover'; import { Close } from '@radix-ui/react-popover';
import { Flipper, Flipped } from 'react-flip-toolkit'; import { Flipper, Flipped } from 'react-flip-toolkit';
import type { FC } from 'react'; import {
Dialog,
DialogTrigger,
Label,
DialogTemplate,
PinIcon,
EditIcon,
TrashIcon,
} from '@librechat/client';
import type { TPreset } from 'librechat-data-provider'; import type { TPreset } from 'librechat-data-provider';
import type { FC } from 'react';
import { getPresetTitle, getEndpointField, getIconKey } from '~/utils'; import { getPresetTitle, getEndpointField, getIconKey } from '~/utils';
import FileUpload from '~/components/Chat/Input/Files/FileUpload'; import FileUpload from '~/components/Chat/Input/Files/FileUpload';
import { PinIcon, EditIcon, TrashIcon } from '~/components/svg';
import { Dialog, DialogTrigger, Label } from '~/components/ui';
import DialogTemplate from '~/components/ui/DialogTemplate';
import { useGetEndpointsQuery } from '~/data-provider'; import { useGetEndpointsQuery } from '~/data-provider';
import { MenuSeparator, MenuItem } from '../UI'; import { MenuSeparator, MenuItem } from '../UI';
import { icons } from '~/hooks/Endpoint/Icons'; import { icons } from '~/hooks/Endpoint/Icons';

View file

@ -1,10 +1,10 @@
import type { FC } from 'react'; import type { FC } from 'react';
import { BookCopy } from 'lucide-react'; import { BookCopy } from 'lucide-react';
import { TooltipAnchor } from '@librechat/client';
import { Content, Portal, Root, Trigger } from '@radix-ui/react-popover'; import { Content, Portal, Root, Trigger } from '@radix-ui/react-popover';
import { EditPresetDialog, PresetItems } from './Presets'; import { EditPresetDialog, PresetItems } from './Presets';
import { useLocalize, usePresets } from '~/hooks'; import { useLocalize, usePresets } from '~/hooks';
import { useChatContext } from '~/Providers'; import { useChatContext } from '~/Providers';
import { TooltipAnchor } from '~/components';
const PresetsMenu: FC = () => { const PresetsMenu: FC = () => {
const localize = useLocalize(); const localize = useLocalize();

View file

@ -1,7 +1,7 @@
import { useState } from 'react'; import { useState } from 'react';
import { ChevronDown } from 'lucide-react'; import { ChevronDown } from 'lucide-react';
import { Trigger } from '@radix-ui/react-popover'; import { Trigger } from '@radix-ui/react-popover';
import useLocalize from '~/hooks/useLocalize'; import { useLocalize } from '~/hooks';
export default function TitleButton({ primaryText = '', secondaryText = '' }) { export default function TitleButton({ primaryText = '', secondaryText = '' }) {
const localize = useLocalize(); const localize = useLocalize();

View file

@ -11,9 +11,9 @@ import { ThinkingButton } from '~/components/Artifacts/Thinking';
import { MessageContext, SearchContext } from '~/Providers'; import { MessageContext, SearchContext } from '~/Providers';
import MemoryArtifacts from './MemoryArtifacts'; import MemoryArtifacts from './MemoryArtifacts';
import Sources from '~/components/Web/Sources'; import Sources from '~/components/Web/Sources';
import useLocalize from '~/hooks/useLocalize';
import { mapAttachments } from '~/utils/map'; import { mapAttachments } from '~/utils/map';
import { EditTextPart } from './Parts'; import { EditTextPart } from './Parts';
import { useLocalize } from '~/hooks';
import store from '~/store'; import store from '~/store';
import Part from './Part'; import Part from './Part';

View file

@ -1,6 +1,6 @@
import { useState, useEffect, useCallback, useRef } from 'react'; import { useState, useEffect, useCallback, useRef } from 'react';
import { Button, OGDialog, OGDialogContent, TooltipAnchor } from '@librechat/client';
import { X, ArrowDownToLine, PanelLeftOpen, PanelLeftClose, RotateCcw } from 'lucide-react'; import { X, ArrowDownToLine, PanelLeftOpen, PanelLeftClose, RotateCcw } from 'lucide-react';
import { Button, OGDialog, OGDialogContent, TooltipAnchor } from '~/components';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
const getQualityStyles = (quality: string): string => { const getQualityStyles = (quality: string): string => {

View file

@ -1,10 +1,10 @@
import { useRef, useEffect, useCallback } from 'react'; import { useRef, useEffect, useCallback } from 'react';
import { useRecoilState, useRecoilValue } from 'recoil';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import { useRecoilState, useRecoilValue } from 'recoil';
import { TextareaAutosize, TooltipAnchor } from '@librechat/client';
import { useUpdateMessageMutation } from 'librechat-data-provider/react-query'; import { useUpdateMessageMutation } from 'librechat-data-provider/react-query';
import type { TEditProps } from '~/common'; import type { TEditProps } from '~/common';
import { useChatContext, useAddedChatContext } from '~/Providers'; import { useChatContext, useAddedChatContext } from '~/Providers';
import { TextareaAutosize, TooltipAnchor } from '~/components/ui';
import { cn, removeFocusRings } from '~/utils'; import { cn, removeFocusRings } from '~/utils';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import Container from './Container'; import Container from './Container';

View file

@ -1,8 +1,8 @@
import React, { useState, useRef, useMemo } from 'react'; import React, { useState, useRef, useMemo } from 'react';
import { Skeleton } from '@librechat/client';
import { LazyLoadImage } from 'react-lazy-load-image-component'; import { LazyLoadImage } from 'react-lazy-load-image-component';
import { cn, scaleImage } from '~/utils'; import { cn, scaleImage } from '~/utils';
import DialogImage from './DialogImage'; import DialogImage from './DialogImage';
import { Skeleton } from '~/components';
const Image = ({ const Image = ({
imagePath, imagePath,

View file

@ -1,12 +1,13 @@
import React, { memo, useMemo, useRef, useEffect } from 'react'; import React, { memo, useMemo, useRef, useEffect } from 'react';
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import { useToastContext } from '@librechat/client';
import { PermissionTypes, Permissions } from 'librechat-data-provider'; import { PermissionTypes, Permissions } from 'librechat-data-provider';
import { useToastContext, useCodeBlockContext } from '~/Providers';
import CodeBlock from '~/components/Messages/Content/CodeBlock'; import CodeBlock from '~/components/Messages/Content/CodeBlock';
import useHasAccess from '~/hooks/Roles/useHasAccess'; import useHasAccess from '~/hooks/Roles/useHasAccess';
import { useFileDownload } from '~/data-provider'; import { useFileDownload } from '~/data-provider';
import useLocalize from '~/hooks/useLocalize'; import { useCodeBlockContext } from '~/Providers';
import { handleDoubleClick } from '~/utils'; import { handleDoubleClick } from '~/utils';
import { useLocalize } from '~/hooks';
import store from '~/store'; import store from '~/store';
type TCodeProps = { type TCodeProps = {

View file

@ -1,10 +1,10 @@
import { memo, Suspense, useMemo } from 'react'; import { memo, Suspense, useMemo } from 'react';
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import { DelayedRender } from '@librechat/client';
import type { TMessage } from 'librechat-data-provider'; import type { TMessage } from 'librechat-data-provider';
import type { TMessageContentProps, TDisplayProps } from '~/common'; import type { TMessageContentProps, TDisplayProps } from '~/common';
import Error from '~/components/Messages/Content/Error'; import Error from '~/components/Messages/Content/Error';
import Thinking from '~/components/Artifacts/Thinking'; import Thinking from '~/components/Artifacts/Thinking';
import { DelayedRender } from '~/components/ui';
import { useChatContext } from '~/Providers'; import { useChatContext } from '~/Providers';
import MarkdownLite from './MarkdownLite'; import MarkdownLite from './MarkdownLite';
import EditMessage from './EditMessage'; import EditMessage from './EditMessage';

View file

@ -1,5 +1,6 @@
import { useRef, useEffect, useCallback, useMemo } from 'react'; import { useRef, useEffect, useCallback, useMemo } from 'react';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import { TextareaAutosize } from '@librechat/client';
import { ContentTypes } from 'librechat-data-provider'; import { ContentTypes } from 'librechat-data-provider';
import { useRecoilState, useRecoilValue } from 'recoil'; import { useRecoilState, useRecoilValue } from 'recoil';
import { useUpdateMessageContentMutation } from 'librechat-data-provider/react-query'; import { useUpdateMessageContentMutation } from 'librechat-data-provider/react-query';
@ -7,7 +8,6 @@ import type { Agents } from 'librechat-data-provider';
import type { TEditProps } from '~/common'; import type { TEditProps } from '~/common';
import Container from '~/components/Chat/Messages/Content/Container'; import Container from '~/components/Chat/Messages/Content/Container';
import { useChatContext, useAddedChatContext } from '~/Providers'; import { useChatContext, useAddedChatContext } from '~/Providers';
import { TextareaAutosize } from '~/components/ui';
import { cn, removeFocusRings } from '~/utils'; import { cn, removeFocusRings } from '~/utils';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import store from '~/store'; import store from '~/store';

View file

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import { useToastContext } from '@librechat/client';
import { useCodeOutputDownload } from '~/data-provider'; import { useCodeOutputDownload } from '~/data-provider';
import { useToastContext } from '~/Providers';
interface LogLinkProps { interface LogLinkProps {
href: string; href: string;

View file

@ -1,8 +1,8 @@
import { useState, useEffect, useRef, useCallback } from 'react'; import { useState, useEffect, useRef, useCallback } from 'react';
import { PixelCard } from '@librechat/client';
import type { TAttachment, TFile, TAttachmentMetadata } from 'librechat-data-provider'; import type { TAttachment, TFile, TAttachmentMetadata } from 'librechat-data-provider';
import Image from '~/components/Chat/Messages/Content/Image'; import Image from '~/components/Chat/Messages/Content/Image';
import ProgressText from './ProgressText'; import ProgressText from './ProgressText';
import { PixelCard } from '~/components';
import { scaleImage } from '~/utils'; import { scaleImage } from '~/utils';
export default function OpenAIImageGen({ export default function OpenAIImageGen({

View file

@ -1,8 +1,8 @@
import * as Popover from '@radix-ui/react-popover'; import * as Popover from '@radix-ui/react-popover';
import { Spinner } from '@librechat/client';
import { ChevronDown, ChevronUp } from 'lucide-react'; import { ChevronDown, ChevronUp } from 'lucide-react';
import CancelledIcon from './CancelledIcon'; import CancelledIcon from './CancelledIcon';
import FinishedIcon from './FinishedIcon'; import FinishedIcon from './FinishedIcon';
import { Spinner } from '~/components';
import { cn } from '~/utils'; import { cn } from '~/utils';
const wrapperClass = const wrapperClass =

View file

@ -1,5 +1,6 @@
import { Suspense, useMemo } from 'react'; import { Suspense, useMemo } from 'react';
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import { DelayedRender } from '@librechat/client';
import { ContentTypes } from 'librechat-data-provider'; import { ContentTypes } from 'librechat-data-provider';
import type { import type {
Agents, Agents,
@ -9,7 +10,6 @@ import type {
TMessageContentParts, TMessageContentParts,
} from 'librechat-data-provider'; } from 'librechat-data-provider';
import { UnfinishedMessage } from './MessageContent'; import { UnfinishedMessage } from './MessageContent';
import { DelayedRender } from '~/components/ui';
import Sources from '~/components/Web/Sources'; import Sources from '~/components/Web/Sources';
import { cn, mapAttachments } from '~/utils'; import { cn, mapAttachments } from '~/utils';
import { SearchContext } from '~/Providers'; import { SearchContext } from '~/Providers';

View file

@ -1,4 +1,5 @@
import { useMemo, useState, useEffect, useRef, useLayoutEffect } from 'react'; import { useMemo, useState, useEffect, useRef, useLayoutEffect } from 'react';
import { Button } from '@librechat/client';
import { TriangleAlert } from 'lucide-react'; import { TriangleAlert } from 'lucide-react';
import { actionDelimiter, actionDomainSeparator, Constants } from 'librechat-data-provider'; import { actionDelimiter, actionDomainSeparator, Constants } from 'librechat-data-provider';
import type { TAttachment } from 'librechat-data-provider'; import type { TAttachment } from 'librechat-data-provider';
@ -6,7 +7,6 @@ import { useLocalize, useProgress } from '~/hooks';
import { AttachmentGroup } from './Parts'; import { AttachmentGroup } from './Parts';
import ToolCallInfo from './ToolCallInfo'; import ToolCallInfo from './ToolCallInfo';
import ProgressText from './ProgressText'; import ProgressText from './ProgressText';
import { Button } from '~/components';
import { logger, cn } from '~/utils'; import { logger, cn } from '~/utils';
export default function ToolCall({ export default function ToolCall({

View file

@ -1,6 +1,14 @@
import React, { useState, useCallback, useMemo, useEffect } from 'react'; import React, { useState, useCallback, useMemo, useEffect } from 'react';
import * as Ariakit from '@ariakit/react'; import * as Ariakit from '@ariakit/react';
import { TFeedback, TFeedbackTag, getTagsForRating } from 'librechat-data-provider'; import { TFeedback, TFeedbackTag, getTagsForRating } from 'librechat-data-provider';
import {
Button,
OGDialog,
OGDialogContent,
OGDialogTitle,
ThumbUpIcon,
ThumbDownIcon,
} from '@librechat/client';
import { import {
AlertCircle, AlertCircle,
PenTool, PenTool,
@ -11,14 +19,6 @@ import {
Lightbulb, Lightbulb,
Search, Search,
} from 'lucide-react'; } from 'lucide-react';
import {
Button,
OGDialog,
OGDialogContent,
OGDialogTitle,
ThumbUpIcon,
ThumbDownIcon,
} from '~/components';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -3,11 +3,11 @@ import { useRecoilState } from 'recoil';
import * as Ariakit from '@ariakit/react'; import * as Ariakit from '@ariakit/react';
import { VisuallyHidden } from '@ariakit/react'; import { VisuallyHidden } from '@ariakit/react';
import { GitFork, InfoIcon } from 'lucide-react'; import { GitFork, InfoIcon } from 'lucide-react';
import { useToastContext } from '@librechat/client';
import { ForkOptions } from 'librechat-data-provider'; import { ForkOptions } from 'librechat-data-provider';
import { GitCommit, GitBranchPlus, ListTree } from 'lucide-react'; import { GitCommit, GitBranchPlus, ListTree } from 'lucide-react';
import { TranslationKeys, useLocalize, useNavigateToConvo } from '~/hooks'; import { TranslationKeys, useLocalize, useNavigateToConvo } from '~/hooks';
import { useForkConvoMutation } from '~/data-provider'; import { useForkConvoMutation } from '~/data-provider';
import { useToastContext } from '~/Providers';
import { cn } from '~/utils'; import { cn } from '~/utils';
import store from '~/store'; import store from '~/store';

View file

@ -1,7 +1,7 @@
import React, { useState, useMemo, memo } from 'react'; import React, { useState, useMemo, memo } from 'react';
import { useRecoilState } from 'recoil'; import { useRecoilState } from 'recoil';
import type { TConversation, TMessage, TFeedback } from 'librechat-data-provider'; import type { TConversation, TMessage, TFeedback } from 'librechat-data-provider';
import { EditIcon, Clipboard, CheckMark, ContinueIcon, RegenerateIcon } from '~/components'; import { EditIcon, Clipboard, CheckMark, ContinueIcon, RegenerateIcon } from '@librechat/client';
import { useGenerationsByLatest, useLocalize } from '~/hooks'; import { useGenerationsByLatest, useLocalize } from '~/hooks';
import { Fork } from '~/components/Conversations'; import { Fork } from '~/components/Conversations';
import MessageAudio from './MessageAudio'; import MessageAudio from './MessageAudio';

View file

@ -6,7 +6,6 @@ import { useMessageHelpers, useLocalize, useAttachments } from '~/hooks';
import MessageIcon from '~/components/Chat/Messages/MessageIcon'; import MessageIcon from '~/components/Chat/Messages/MessageIcon';
import ContentParts from './Content/ContentParts'; import ContentParts from './Content/ContentParts';
import SiblingSwitch from './SiblingSwitch'; import SiblingSwitch from './SiblingSwitch';
import MultiMessage from './MultiMessage'; import MultiMessage from './MultiMessage';
import HoverButtons from './HoverButtons'; import HoverButtons from './HoverButtons';
import SubRow from './SubRow'; import SubRow from './SubRow';

View file

@ -1,7 +1,7 @@
import { useState } from 'react'; import { useState } from 'react';
import { Clipboard, CheckMark } from '@librechat/client';
import type { TMessage, TAttachment, SearchResultData } from 'librechat-data-provider'; import type { TMessage, TAttachment, SearchResultData } from 'librechat-data-provider';
import { useLocalize, useCopyToClipboard } from '~/hooks'; import { useLocalize, useCopyToClipboard } from '~/hooks';
import { Clipboard, CheckMark } from '~/components/svg';
type THoverButtons = { type THoverButtons = {
message: TMessage; message: TMessage;

View file

@ -3,11 +3,8 @@ import { useEffect, useCallback } from 'react';
import { isAssistantsEndpoint } from 'librechat-data-provider'; import { isAssistantsEndpoint } from 'librechat-data-provider';
import type { TMessage } from 'librechat-data-provider'; import type { TMessage } from 'librechat-data-provider';
import type { TMessageProps } from '~/common'; import type { TMessageProps } from '~/common';
import MessageContent from '~/components/Messages/MessageContent'; import MessageContent from '~/components/Messages/MessageContent';
import MessageParts from './MessageParts'; import MessageParts from './MessageParts';
import Message from './Message'; import Message from './Message';
import store from '~/store'; import store from '~/store';

View file

@ -1,8 +1,8 @@
import React from 'react'; import React from 'react';
import { motion } from 'framer-motion'; import { motion } from 'framer-motion';
import { TooltipAnchor } from '@librechat/client';
import { MessageCircleDashed } from 'lucide-react'; import { MessageCircleDashed } from 'lucide-react';
import { useRecoilState, useRecoilCallback } from 'recoil'; import { useRecoilState, useRecoilCallback } from 'recoil';
import { TooltipAnchor } from '~/components/ui';
import { useChatContext } from '~/Providers'; import { useChatContext } from '~/Providers';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,11 +1,11 @@
import { useMemo, memo, type FC, useCallback } from 'react'; import { useMemo, memo, type FC, useCallback } from 'react';
import throttle from 'lodash/throttle'; import throttle from 'lodash/throttle';
import { parseISO, isToday } from 'date-fns'; import { parseISO, isToday } from 'date-fns';
import { Spinner, useMediaQuery } from '@librechat/client';
import { List, AutoSizer, CellMeasurer, CellMeasurerCache } from 'react-virtualized'; import { List, AutoSizer, CellMeasurer, CellMeasurerCache } from 'react-virtualized';
import { useLocalize, TranslationKeys, useMediaQuery } from '~/hooks';
import { TConversation } from 'librechat-data-provider'; import { TConversation } from 'librechat-data-provider';
import { useLocalize, TranslationKeys } from '~/hooks';
import { groupConversationsByDate } from '~/utils'; import { groupConversationsByDate } from '~/utils';
import { Spinner } from '~/components/svg';
import Convo from './Convo'; import Convo from './Convo';
interface ConversationsProps { interface ConversationsProps {

View file

@ -2,14 +2,14 @@ import React, { useState, useEffect, useRef, useMemo } from 'react';
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import { useParams } from 'react-router-dom'; import { useParams } from 'react-router-dom';
import { Constants } from 'librechat-data-provider'; import { Constants } from 'librechat-data-provider';
import { useToastContext, useMediaQuery } from '@librechat/client';
import type { TConversation } from 'librechat-data-provider'; import type { TConversation } from 'librechat-data-provider';
import { useNavigateToConvo, useMediaQuery, useLocalize } from '~/hooks';
import { useUpdateConversationMutation } from '~/data-provider'; import { useUpdateConversationMutation } from '~/data-provider';
import EndpointIcon from '~/components/Endpoints/EndpointIcon'; import EndpointIcon from '~/components/Endpoints/EndpointIcon';
import { useNavigateToConvo, useLocalize } from '~/hooks';
import { useGetEndpointsQuery } from '~/data-provider'; import { useGetEndpointsQuery } from '~/data-provider';
import { NotificationSeverity } from '~/common'; import { NotificationSeverity } from '~/common';
import { ConvoOptions } from './ConvoOptions'; import { ConvoOptions } from './ConvoOptions';
import { useToastContext } from '~/Providers';
import RenameForm from './RenameForm'; import RenameForm from './RenameForm';
import ConvoLink from './ConvoLink'; import ConvoLink from './ConvoLink';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,6 +1,7 @@
import { useState, useId, useRef, memo, useCallback, useMemo } from 'react'; import { useState, useId, useRef, memo, useCallback, useMemo } from 'react';
import * as Menu from '@ariakit/react/menu'; import * as Menu from '@ariakit/react/menu';
import { useParams, useNavigate } from 'react-router-dom'; import { useParams, useNavigate } from 'react-router-dom';
import { DropdownPopup, Spinner, useToastContext } from '@librechat/client';
import { Ellipsis, Share2, Copy, Archive, Pen, Trash } from 'lucide-react'; import { Ellipsis, Share2, Copy, Archive, Pen, Trash } from 'lucide-react';
import type { MouseEvent } from 'react'; import type { MouseEvent } from 'react';
import { import {
@ -9,9 +10,8 @@ import {
useArchiveConvoMutation, useArchiveConvoMutation,
} from '~/data-provider'; } from '~/data-provider';
import { useLocalize, useNavigateToConvo, useNewConvo } from '~/hooks'; import { useLocalize, useNavigateToConvo, useNewConvo } from '~/hooks';
import { useToastContext, useChatContext } from '~/Providers';
import { DropdownPopup, Spinner } from '~/components';
import { NotificationSeverity } from '~/common'; import { NotificationSeverity } from '~/common';
import { useChatContext } from '~/Providers';
import DeleteButton from './DeleteButton'; import DeleteButton from './DeleteButton';
import ShareButton from './ShareButton'; import ShareButton from './ShareButton';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -2,7 +2,6 @@ import React, { useCallback, useState } from 'react';
import { QueryKeys } from 'librechat-data-provider'; import { QueryKeys } from 'librechat-data-provider';
import { useQueryClient } from '@tanstack/react-query'; import { useQueryClient } from '@tanstack/react-query';
import { useParams, useNavigate } from 'react-router-dom'; import { useParams, useNavigate } from 'react-router-dom';
import type { TMessage } from 'librechat-data-provider';
import { import {
Button, Button,
Spinner, Spinner,
@ -10,11 +9,12 @@ import {
OGDialogTitle, OGDialogTitle,
OGDialogHeader, OGDialogHeader,
OGDialogContent, OGDialogContent,
} from '~/components'; useToastContext,
} from '@librechat/client';
import type { TMessage } from 'librechat-data-provider';
import { useDeleteConversationMutation } from '~/data-provider'; import { useDeleteConversationMutation } from '~/data-provider';
import { useLocalize, useNewConvo } from '~/hooks'; import { useLocalize, useNewConvo } from '~/hooks';
import { NotificationSeverity } from '~/common'; import { NotificationSeverity } from '~/common';
import { useToastContext } from '~/Providers';
type DeleteButtonProps = { type DeleteButtonProps = {
conversationId: string; conversationId: string;

View file

@ -2,9 +2,8 @@ import React, { useState, useEffect } from 'react';
import { QRCodeSVG } from 'qrcode.react'; import { QRCodeSVG } from 'qrcode.react';
import { Copy, CopyCheck } from 'lucide-react'; import { Copy, CopyCheck } from 'lucide-react';
import { useGetSharedLinkQuery } from 'librechat-data-provider/react-query'; import { useGetSharedLinkQuery } from 'librechat-data-provider/react-query';
import OGDialogTemplate from '~/components/ui/OGDialogTemplate'; import { OGDialogTemplate, Button, Spinner, OGDialog } from '@librechat/client';
import { useLocalize, useCopyToClipboard } from '~/hooks'; import { useLocalize, useCopyToClipboard } from '~/hooks';
import { Button, Spinner, OGDialog } from '~/components';
import SharedLinkButton from './SharedLinkButton'; import SharedLinkButton from './SharedLinkButton';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,15 +1,21 @@
import { useState, useCallback } from 'react'; import { useState, useCallback } from 'react';
import { QrCode, RotateCw, Trash2 } from 'lucide-react'; import { QrCode, RotateCw, Trash2 } from 'lucide-react';
import {
Button,
OGDialog,
Spinner,
TooltipAnchor,
Label,
OGDialogTemplate,
useToastContext,
} from '@librechat/client';
import type { TSharedLinkGetResponse } from 'librechat-data-provider'; import type { TSharedLinkGetResponse } from 'librechat-data-provider';
import { import {
useCreateSharedLinkMutation, useCreateSharedLinkMutation,
useUpdateSharedLinkMutation, useUpdateSharedLinkMutation,
useDeleteSharedLinkMutation, useDeleteSharedLinkMutation,
} from '~/data-provider'; } from '~/data-provider';
import { Button, OGDialog, Spinner, TooltipAnchor, Label } from '~/components';
import OGDialogTemplate from '~/components/ui/OGDialogTemplate';
import { NotificationSeverity } from '~/common'; import { NotificationSeverity } from '~/common';
import { useToastContext } from '~/Providers';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
export default function SharedLinkButton({ export default function SharedLinkButton({

View file

@ -1,11 +1,11 @@
import React, { memo, useState } from 'react'; import React, { memo, useState } from 'react';
import { UserIcon } from '@librechat/client';
import type { TUser } from 'librechat-data-provider'; import type { TUser } from 'librechat-data-provider';
import type { IconProps } from '~/common'; import type { IconProps } from '~/common';
import MessageEndpointIcon from './MessageEndpointIcon'; import MessageEndpointIcon from './MessageEndpointIcon';
import { useAuthContext } from '~/hooks/AuthContext'; import { useAuthContext } from '~/hooks/AuthContext';
import useAvatar from '~/hooks/Messages/useAvatar'; import useAvatar from '~/hooks/Messages/useAvatar';
import useLocalize from '~/hooks/useLocalize'; import { useLocalize } from '~/hooks';
import { UserIcon } from '~/components/svg';
import { cn } from '~/utils'; import { cn } from '~/utils';
type UserAvatarProps = { type UserAvatarProps = {
@ -48,15 +48,15 @@ const UserAvatar = memo(({ size, user, avatarSrc, username, className }: UserAva
> >
{(!(user?.avatar ?? '') && (!(user?.username ?? '') || user?.username.trim() === '')) || {(!(user?.avatar ?? '') && (!(user?.username ?? '') || user?.username.trim() === '')) ||
imageError ? ( imageError ? (
renderDefaultAvatar() renderDefaultAvatar()
) : ( ) : (
<img <img
className="rounded-full" className="rounded-full"
src={(user?.avatar ?? '') || avatarSrc} src={(user?.avatar ?? '') || avatarSrc}
alt="avatar" alt="avatar"
onError={handleImageError} onError={handleImageError}
/> />
)} )}
</div> </div>
); );
}); });

View file

@ -12,7 +12,7 @@ import {
AnthropicIcon, AnthropicIcon,
AzureMinimalIcon, AzureMinimalIcon,
CustomMinimalIcon, CustomMinimalIcon,
} from '~/components/svg'; } from '@librechat/client';
import UnknownIcon from '~/hooks/Endpoint/UnknownIcon'; import UnknownIcon from '~/hooks/Endpoint/UnknownIcon';
import { IconProps } from '~/common'; import { IconProps } from '~/common';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -10,7 +10,7 @@ import {
AnthropicIcon, AnthropicIcon,
BedrockIcon, BedrockIcon,
Sparkles, Sparkles,
} from '~/components/svg'; } from '@librechat/client';
import UnknownIcon from '~/hooks/Endpoint/UnknownIcon'; import UnknownIcon from '~/hooks/Endpoint/UnknownIcon';
import { IconProps } from '~/common'; import { IconProps } from '~/common';
import { cn } from '~/utils'; import { cn } from '~/utils';

View file

@ -1,11 +1,9 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { useCreatePresetMutation } from 'librechat-data-provider/react-query'; import { useCreatePresetMutation } from 'librechat-data-provider/react-query';
import { OGDialogTemplate, OGDialog, Input, Label, useToastContext } from '@librechat/client';
import type { TEditPresetProps } from '~/common'; import type { TEditPresetProps } from '~/common';
import { cn, removeFocusOutlines, cleanupPreset, defaultTextProps } from '~/utils/'; import { cn, removeFocusOutlines, cleanupPreset, defaultTextProps } from '~/utils';
import OGDialogTemplate from '~/components/ui/OGDialogTemplate';
import { OGDialog, Input, Label } from '~/components/ui/';
import { NotificationSeverity } from '~/common'; import { NotificationSeverity } from '~/common';
import { useToastContext } from '~/Providers';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';
const SaveAsPresetDialog = ({ open, onOpenChange, preset }: TEditPresetProps) => { const SaveAsPresetDialog = ({ open, onOpenChange, preset }: TEditPresetProps) => {
@ -23,7 +21,7 @@ const SaveAsPresetDialog = ({ open, onOpenChange, preset }: TEditPresetProps) =>
}); });
const toastTitle = const toastTitle =
_preset.title ?? '' ? `\`${_preset.title}\`` : localize('com_endpoint_preset_title'); (_preset.title ?? '') ? `\`${_preset.title}\`` : localize('com_endpoint_preset_title');
createPresetMutation.mutate(_preset, { createPresetMutation.mutate(_preset, {
onSuccess: () => { onSuccess: () => {
@ -76,7 +74,7 @@ const SaveAsPresetDialog = ({ open, onOpenChange, preset }: TEditPresetProps) =>
aria-label={localize('com_endpoint_preset_name')} aria-label={localize('com_endpoint_preset_name')}
className={cn( className={cn(
defaultTextProps, defaultTextProps,
'flex h-10 max-h-10 w-full resize-none border-border-medium px-3 py-2 ', 'flex h-10 max-h-10 w-full resize-none border-border-medium px-3 py-2',
removeFocusOutlines, removeFocusOutlines,
)} )}
/> />

View file

@ -1,7 +1,5 @@
import TextareaAutosize from 'react-textarea-autosize'; import TextareaAutosize from 'react-textarea-autosize';
import { ImageDetail, imageDetailNumeric, imageDetailValue } from 'librechat-data-provider'; import { ImageDetail, imageDetailNumeric, imageDetailValue } from 'librechat-data-provider';
import type { ValueType } from '@rc-component/mini-decimal';
import type { TModelSelectProps } from '~/common';
import { import {
Input, Input,
Label, Label,
@ -10,8 +8,10 @@ import {
HoverCard, HoverCard,
InputNumber, InputNumber,
HoverCardTrigger, HoverCardTrigger,
} from '~/components/ui'; } from '@librechat/client';
import { cn, defaultTextProps, optionText, removeFocusOutlines } from '~/utils/'; import type { ValueType } from '@rc-component/mini-decimal';
import type { TModelSelectProps } from '~/common';
import { cn, defaultTextProps, optionText, removeFocusOutlines } from '~/utils';
import { useLocalize, useDebouncedInput } from '~/hooks'; import { useLocalize, useDebouncedInput } from '~/hooks';
import OptionHover from './OptionHover'; import OptionHover from './OptionHover';
import { ESide } from '~/common'; import { ESide } from '~/common';
@ -109,7 +109,7 @@ export default function Settings({
placeholder={localize('com_endpoint_openai_prompt_prefix_placeholder')} placeholder={localize('com_endpoint_openai_prompt_prefix_placeholder')}
className={cn( className={cn(
defaultTextProps, defaultTextProps,
'flex max-h-[138px] min-h-[100px] w-full resize-none px-3 py-2 ', 'flex max-h-[138px] min-h-[100px] w-full resize-none px-3 py-2',
)} )}
/> />
</div> </div>

View file

@ -1,4 +1,3 @@
import type { TModelSelectProps } from '~/common';
import { import {
Switch, Switch,
Label, Label,
@ -7,7 +6,8 @@ import {
InputNumber, InputNumber,
SelectDropDown, SelectDropDown,
HoverCardTrigger, HoverCardTrigger,
} from '~/components'; } from '@librechat/client';
import type { TModelSelectProps } from '~/common';
import { cn, optionText, defaultTextProps, removeFocusRings } from '~/utils'; import { cn, optionText, defaultTextProps, removeFocusRings } from '~/utils';
import OptionHover from './OptionHover'; import OptionHover from './OptionHover';
import { useLocalize } from '~/hooks'; import { useLocalize } from '~/hooks';

Some files were not shown because too many files have changed in this diff Show more