index.tsx 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. 'use client'
  2. import React from 'react'
  3. import { useTranslation } from 'react-i18next'
  4. import { RiBookOpenLine } from '@remixicon/react'
  5. import EmbeddingProcess from '../embedding-process'
  6. import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints'
  7. import type { FullDocumentDetail, createDocumentResponse } from '@/models/datasets'
  8. import AppIcon from '@/app/components/base/app-icon'
  9. type StepThreeProps = {
  10. datasetId?: string
  11. datasetName?: string
  12. indexingType?: string
  13. retrievalMethod?: string
  14. creationCache?: createDocumentResponse
  15. }
  16. const StepThree = ({ datasetId, datasetName, indexingType, creationCache, retrievalMethod }: StepThreeProps) => {
  17. const { t } = useTranslation()
  18. const media = useBreakpoints()
  19. const isMobile = media === MediaType.mobile
  20. return (
  21. <div className="flex h-full max-h-full w-full justify-center overflow-y-auto">
  22. <div className="h-full max-w-[960px] shrink-0 grow overflow-y-auto px-14 sm:px-16">
  23. <div className="mx-auto max-w-[640px]">
  24. {!datasetId && (
  25. <>
  26. <div className="pt-10">
  27. <div className="mb-1 text-xl font-semibold leading-[22px] text-text-primary">{t('datasetCreation.stepThree.creationTitle')}</div>
  28. <div className="mb-7 text-[13px] leading-4 text-text-tertiary">{t('datasetCreation.stepThree.creationContent')}</div>
  29. <div className="flex gap-4">
  30. <AppIcon {...creationCache?.dataset} className="size-14 self-center text-2xl" />
  31. <div className="flex grow flex-col gap-1">
  32. <div className="text-[13px] font-semibold leading-6 text-text-secondary">{t('datasetCreation.stepThree.label')}</div>
  33. <div className="w-full truncate rounded-lg bg-components-input-bg-normal px-3 py-2 text-[13px] leading-4 text-components-input-text-filled">{datasetName || creationCache?.dataset?.name}</div>
  34. </div>
  35. </div>
  36. </div>
  37. <hr className="my-6 h-[1px] border-0 bg-divider-subtle" />
  38. </>
  39. )}
  40. {datasetId && (
  41. <div className="pt-10">
  42. <div className="mb-1 text-xl font-semibold leading-[22px] text-text-primary">{t('datasetCreation.stepThree.additionTitle')}</div>
  43. <div className="mb-7 text-[13px] leading-4 text-text-tertiary">{`${t('datasetCreation.stepThree.additionP1')} ${datasetName || creationCache?.dataset?.name} ${t('datasetCreation.stepThree.additionP2')}`}</div>
  44. </div>
  45. )}
  46. <EmbeddingProcess
  47. datasetId={datasetId || creationCache?.dataset?.id || ''}
  48. batchId={creationCache?.batch || ''}
  49. documents={creationCache?.documents as FullDocumentDetail[]}
  50. indexingType={indexingType || creationCache?.dataset?.indexing_technique}
  51. retrievalMethod={retrievalMethod || creationCache?.dataset?.retrieval_model?.search_method}
  52. />
  53. </div>
  54. </div>
  55. {!isMobile && (
  56. <div className="shrink-0 pr-8 pt-[88px] text-xs">
  57. <div className="flex w-[328px] flex-col gap-3 rounded-xl bg-background-section p-6 text-text-tertiary">
  58. <div className="flex size-10 items-center justify-center rounded-[10px] bg-components-card-bg shadow-lg">
  59. <RiBookOpenLine className="size-5 text-text-accent" />
  60. </div>
  61. <div className="text-base font-semibold text-text-secondary">{t('datasetCreation.stepThree.sideTipTitle')}</div>
  62. <div className="text-text-tertiary">{t('datasetCreation.stepThree.sideTipContent')}</div>
  63. </div>
  64. </div>
  65. )}
  66. </div>
  67. )
  68. }
  69. export default StepThree