mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 08:50:15 +01:00
* inital Tooltip implementation and test * style(tooltip): L/R sidePanel and Nav * style(tooltip): unarchive button; refactor: `useArchiveHandler` and `ArchiveButton` * style(tooltip): Delete button * refactor: remove unused className prop in DeleteButton component * style(tooltip): finish final tooltip and fix bookmark edit and delete button * refactor(ui): remove TooltipTest and DropDownMenu component and unused imports * style: update mobile UI * fix: sidePanel icon not showing * feat(AttachFile): add tooltip * fix(NavToggle): remove button without this button, kb users don't have to manually press 2 times to change the focus Also, tooltips with buttons focus don't trigger * fix: right side panel issue with double button * fix: merge issues * fix: sharedLink table issue * chore: update ariakit and framer-motion version * a11y: kb toggle for sidebar * feat: tooltip for some buttons
63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
import React from 'react';
|
|
import {
|
|
EModelEndpoint,
|
|
supportsFiles,
|
|
fileConfig as defaultFileConfig,
|
|
mergeFileConfig,
|
|
} from 'librechat-data-provider';
|
|
import { FileUpload, TooltipAnchor } from '~/components/ui';
|
|
import { useFileHandling, useLocalize } from '~/hooks';
|
|
import { useGetFileConfig } from '~/data-provider';
|
|
import { AttachmentIcon } from '~/components/svg';
|
|
import { cn } from '~/utils';
|
|
|
|
const AttachFile = ({
|
|
endpoint,
|
|
endpointType,
|
|
isRTL,
|
|
disabled = false,
|
|
}: {
|
|
endpoint: EModelEndpoint | '';
|
|
endpointType?: EModelEndpoint;
|
|
isRTL: boolean;
|
|
disabled?: boolean | null;
|
|
}) => {
|
|
const localize = useLocalize();
|
|
const { handleFileChange } = useFileHandling();
|
|
const { data: fileConfig = defaultFileConfig } = useGetFileConfig({
|
|
select: (data) => mergeFileConfig(data),
|
|
});
|
|
const endpointFileConfig = fileConfig.endpoints[endpoint ?? ''];
|
|
|
|
if (!supportsFiles[endpointType ?? endpoint ?? ''] || endpointFileConfig?.disabled) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<div
|
|
className={cn(
|
|
'absolute',
|
|
isRTL
|
|
? 'bottom-2 right-14 md:bottom-3.5 md:right-3'
|
|
: 'bottom-2 left-2 md:bottom-3.5 md:left-4',
|
|
)}
|
|
>
|
|
<FileUpload handleFileChange={handleFileChange} className="flex">
|
|
<TooltipAnchor
|
|
id="audio-recorder"
|
|
aria-label={localize('com_sidepanel_attach_files')}
|
|
disabled={!!disabled}
|
|
className="btn relative text-black focus:outline-none focus:ring-2 focus:ring-border-xheavy focus:ring-opacity-50 dark:text-white"
|
|
style={{ padding: 0 }}
|
|
description={localize('com_sidepanel_attach_files')}
|
|
>
|
|
<div className="flex w-full items-center justify-center gap-2">
|
|
<AttachmentIcon />
|
|
</div>
|
|
</TooltipAnchor>
|
|
</FileUpload>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default React.memo(AttachFile);
|