| import React, { memo } from 'react'; |
| import { Globe } from 'lucide-react'; |
| import { CheckboxButton } from '@librechat/client'; |
| import { Permissions, PermissionTypes } from 'librechat-data-provider'; |
| import { useLocalize, useHasAccess } from '~/hooks'; |
| import { useBadgeRowContext } from '~/Providers'; |
|
|
| function WebSearch() { |
| const localize = useLocalize(); |
| const { webSearch: webSearchData, searchApiKeyForm } = useBadgeRowContext(); |
| const { toggleState: webSearch, debouncedChange, isPinned, authData } = webSearchData; |
| const { badgeTriggerRef } = searchApiKeyForm; |
|
|
| const canUseWebSearch = useHasAccess({ |
| permissionType: PermissionTypes.WEB_SEARCH, |
| permission: Permissions.USE, |
| }); |
|
|
| if (!canUseWebSearch) { |
| return null; |
| } |
|
|
| return ( |
| (isPinned || (webSearch && authData?.authenticated)) && ( |
| <CheckboxButton |
| ref={badgeTriggerRef} |
| className="max-w-fit" |
| checked={webSearch} |
| setValue={debouncedChange} |
| label={localize('com_ui_search')} |
| isCheckedClassName="border-blue-600/40 bg-blue-500/10 hover:bg-blue-700/10" |
| icon={<Globe className="icon-md" />} |
| /> |
| ) |
| ); |
| } |
|
|
| export default memo(WebSearch); |
|
|