KnowledgeBaseInfo.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import React from 'react'
  2. import { RiBookOpenLine } from '@remixicon/react'
  3. import { useTranslation } from 'react-i18next'
  4. import Input from '@/app/components/base/input'
  5. type KnowledgeBaseInfoProps = {
  6. name: string
  7. description?: string
  8. onChange: (data: { name?: string; description?: string }) => void
  9. }
  10. const KnowledgeBaseInfo: React.FC<KnowledgeBaseInfoProps> = ({ name, description, onChange }) => {
  11. const { t } = useTranslation()
  12. const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {
  13. onChange({ name: e.target.value })
  14. }
  15. const handleDescriptionChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
  16. onChange({ description: e.target.value })
  17. }
  18. return (
  19. <form className='flex flex-col gap-4 self-stretch'>
  20. <div className='flex flex-col gap-4 self-stretch'>
  21. <div className='flex flex-col gap-1 self-stretch'>
  22. <div className='flex flex-col justify-center self-stretch'>
  23. <label className='text-text-secondary system-sm-semibold'>{t('dataset.externalKnowledgeName')}</label>
  24. </div>
  25. <Input
  26. value={name}
  27. onChange={handleNameChange}
  28. placeholder={t('dataset.externalKnowledgeNamePlaceholder') ?? ''}
  29. />
  30. </div>
  31. <div className='flex flex-col gap-1 self-stretch'>
  32. <div className='flex flex-col justify-center self-stretch'>
  33. <label className='text-text-secondary system-sm-semibold'>{t('dataset.externalKnowledgeDescription')}</label>
  34. </div>
  35. <div className='flex flex-col gap-1 self-stretch'>
  36. <textarea
  37. value={description}
  38. onChange={ e => handleDescriptionChange(e)}
  39. placeholder={t('dataset.externalKnowledgeDescriptionPlaceholder') ?? ''}
  40. className={`flex h-20 py-2 p-3 self-stretch items-start rounded-lg bg-components-input-bg-normal ${description ? 'text-components-input-text-filled' : 'text-components-input-text-placeholder'} system-sm-regular`}
  41. />
  42. <a
  43. className='flex py-0.5 gap-1 self-stretch'
  44. href='https://docs.dify.ai/features/datasets#how-to-write-a-good-dataset-description'
  45. target="_blank"
  46. rel="noopener noreferrer"
  47. >
  48. <div className='flex p-0.5 items-center gap-2'>
  49. <RiBookOpenLine className='w-3 h-3 text-text-tertiary' />
  50. </div>
  51. <div className='flex-grow text-text-tertiary body-xs-regular'>{t('dataset.learnHowToWriteGoodKnowledgeDescription')}</div>
  52. </a>
  53. </div>
  54. </div>
  55. </div>
  56. </form>
  57. )
  58. }
  59. export default KnowledgeBaseInfo