diff --git a/web/app/components/datasets/create/index.tsx b/web/app/components/datasets/create/index.tsx index 943e32deb1..9dc498bcae 100644 --- a/web/app/components/datasets/create/index.tsx +++ b/web/app/components/datasets/create/index.tsx @@ -6,6 +6,7 @@ import { ModelTypeEnum } from '../../header/account-setting/model-provider-page/ import StepOne from './step-one' import StepTwo from './step-two' import StepThree from './step-three' +import { Topbar } from './top-bar' import { DataSourceType } from '@/models/datasets' import type { CrawlOptions, CrawlResultItem, DataSet, FileItem, createDocumentResponse } from '@/models/datasets' import { fetchDataSource } from '@/service/common' @@ -119,6 +120,7 @@ const DatasetUpdateForm = ({ datasetId }: DatasetUpdateFormProps) => { return (
+
-
-
- {t('datasetCreation.steps.two')} - {(isMobile || !showPreview) && ( - - )} -
+
{t('datasetCreation.stepTwo.segmentation')}
@@ -906,7 +888,7 @@ const StepTwo = ({
-
{t('datasetCreation.stepTwo.QATitle')}
+
{t('datasetCreation.stepTwo.QATitle')}
{t('datasetCreation.stepTwo.QALanguage')} diff --git a/web/app/components/datasets/create/stepper/index.tsx b/web/app/components/datasets/create/stepper/index.tsx new file mode 100644 index 0000000000..b416215c26 --- /dev/null +++ b/web/app/components/datasets/create/stepper/index.tsx @@ -0,0 +1,34 @@ +import type { FC } from 'react' +import type { Step } from './step' +import { StepperStep } from './step' + +export type StepperProps = { + steps: Step[] + activeStepIndex: number +} + +function join(array: T[], sep: R): Array { + return array.reduce((acc, item, index) => { + if (index === 0) + return [item] + + return acc.concat([sep, item]) + }, [] as Array) +} + +export const Stepper: FC = (props) => { + const { steps, activeStepIndex } = props + return
+ {join( + steps.map((step, index) => ( + + )), +
, + )} +
+} diff --git a/web/app/components/datasets/create/stepper/step.tsx b/web/app/components/datasets/create/stepper/step.tsx new file mode 100644 index 0000000000..8ab77650d5 --- /dev/null +++ b/web/app/components/datasets/create/stepper/step.tsx @@ -0,0 +1,33 @@ +import type { FC } from 'react' +import classNames from '@/utils/classnames' + +export type Step = { + name: string +} + +export type StepperStepProps = Step & { + index: number + isActive: boolean +} + +export const StepperStep: FC = (props) => { + const { name, isActive, index } = props + const label = isActive ? `STEP ${index + 1}` : `${index + 1}` + return
+
+
+ {label} +
+
+
{name}
+
+} diff --git a/web/app/components/datasets/create/top-bar/index.tsx b/web/app/components/datasets/create/top-bar/index.tsx new file mode 100644 index 0000000000..86260cce70 --- /dev/null +++ b/web/app/components/datasets/create/top-bar/index.tsx @@ -0,0 +1,32 @@ +import type { FC } from 'react' +import { RiArrowLeftLine } from '@remixicon/react' +import { Stepper, type StepperProps } from '../stepper' +import classNames from '@/utils/classnames' + +export type TopbarProps = Pick & { + className?: string +} + +export const Topbar: FC = (props) => { + const { className, ...rest } = props + return
+
+ +
+ Create Knowledge +
+
+
+ +
+
+} diff --git a/web/app/dev-preview/page.tsx b/web/app/dev-preview/page.tsx index e5529fcc25..176cf8360d 100644 --- a/web/app/dev-preview/page.tsx +++ b/web/app/dev-preview/page.tsx @@ -1,25 +1,16 @@ 'use client' -import Input from '../components/base/input' -import { OptionCard } from '../components/datasets/create/step-two/option-card' +import { Stepper } from '../components/datasets/create/stepper' export default function Page() { return
- -

- Lorem ipsum -

- -
+
}