You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

tool-item.tsx 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. 'use client'
  2. import React from 'react'
  3. import { useContext } from 'use-context-selector'
  4. import type { Tool } from '@/app/components/tools/types'
  5. import I18n from '@/context/i18n'
  6. import { getLanguage } from '@/i18n/language'
  7. import Tooltip from '@/app/components/base/tooltip'
  8. import cn from '@/utils/classnames'
  9. type Props = {
  10. tool: Tool
  11. }
  12. const MCPToolItem = ({
  13. tool,
  14. }: Props) => {
  15. const { locale } = useContext(I18n)
  16. const language = getLanguage(locale)
  17. return (
  18. <Tooltip
  19. key={tool.name}
  20. position='left'
  21. popupClassName='!p-0 !px-4 !py-3.5 !w-[360px] !border-[0.5px] !border-components-panel-border !rounded-xl !shadow-lg'
  22. popupContent={(
  23. <div>
  24. <div className='title-xs-semi-bold mb-1 text-text-primary'>{tool.label[language]}</div>
  25. <div className='body-xs-regular text-text-secondary'>{tool.description[language]}</div>
  26. </div>
  27. )}
  28. >
  29. <div
  30. className={cn('bg-components-panel-item-bg cursor-pointer rounded-xl border-[0.5px] border-components-panel-border-subtle px-4 py-3 shadow-xs hover:bg-components-panel-on-panel-item-bg-hover')}
  31. >
  32. <div className='system-md-semibold pb-0.5 text-text-secondary'>{tool.label[language]}</div>
  33. <div className='system-xs-regular line-clamp-2 text-text-tertiary' title={tool.description[language]}>{tool.description[language]}</div>
  34. </div>
  35. </Tooltip>
  36. )
  37. }
  38. export default MCPToolItem