diff --git a/web/app/components/base/app-icon/index.tsx b/web/app/components/base/app-icon/index.tsx index 5e7378c087..832ae64c1b 100644 --- a/web/app/components/base/app-icon/index.tsx +++ b/web/app/components/base/app-icon/index.tsx @@ -33,7 +33,7 @@ const AppIcon: FC = ({ onClick, }) => { const wrapperClassName = classNames( - style.appIcon, + 'flex items-center justify-center relative w-9 h-9 text-lg rounded-lg grow-0 shrink-0', size !== 'medium' && style[size], rounded && style.rounded, className ?? '', diff --git a/web/app/components/base/app-icon/style.module.css b/web/app/components/base/app-icon/style.module.css index 06a2478d41..8554058ffb 100644 --- a/web/app/components/base/app-icon/style.module.css +++ b/web/app/components/base/app-icon/style.module.css @@ -1,7 +1,3 @@ -.appIcon { - @apply flex items-center justify-center relative w-9 h-9 text-lg rounded-lg grow-0 shrink-0; -} - .appIcon.large { @apply w-10 h-10; } @@ -20,4 +16,4 @@ .appIcon.rounded { @apply rounded-full; -} \ No newline at end of file +} diff --git a/web/app/components/base/input-number/index.tsx b/web/app/components/base/input-number/index.tsx index b32cc4e0fb..7492e0814c 100644 --- a/web/app/components/base/input-number/index.tsx +++ b/web/app/components/base/input-number/index.tsx @@ -39,7 +39,7 @@ export const InputNumber: FC = (props) => { }} /> {unit &&
{unit}
} -
+
diff --git a/web/app/components/base/radio-card/index.tsx b/web/app/components/base/radio-card/index.tsx index 0c03f3be08..8ca7e8ee02 100644 --- a/web/app/components/base/radio-card/index.tsx +++ b/web/app/components/base/radio-card/index.tsx @@ -41,8 +41,8 @@ const RadioCard: FC = ({ {icon}
-
{title}
-
{description}
+
{title}
+
{description}
{!noRadio && (
@@ -54,7 +54,7 @@ const RadioCard: FC = ({ )}
{((isChosen && chosenConfig) || noRadio) && ( -
+
{chosenConfig}
)} diff --git a/web/app/components/base/simple-pie-chart/index.tsx b/web/app/components/base/simple-pie-chart/index.tsx index 7de539cbb1..4b987ab42d 100644 --- a/web/app/components/base/simple-pie-chart/index.tsx +++ b/web/app/components/base/simple-pie-chart/index.tsx @@ -10,10 +10,11 @@ export type SimplePieChartProps = { fill?: string stroke?: string size?: number + animationDuration?: number className?: string } -const SimplePieChart = ({ percentage = 80, fill = '#fdb022', stroke = '#f79009', size = 12, className }: SimplePieChartProps) => { +const SimplePieChart = ({ percentage = 80, fill = '#fdb022', stroke = '#f79009', size = 12, animationDuration, className }: SimplePieChartProps) => { const option: EChartsOption = useMemo(() => ({ series: [ { @@ -34,7 +35,7 @@ const SimplePieChart = ({ percentage = 80, fill = '#fdb022', stroke = '#f79009', { type: 'pie', radius: '83%', - animationDuration: 600, + animationDuration: animationDuration ?? 600, data: [ { value: percentage, itemStyle: { color: fill } }, { value: 100 - percentage, itemStyle: { color: '#fff' } }, @@ -48,7 +49,7 @@ const SimplePieChart = ({ percentage = 80, fill = '#fdb022', stroke = '#f79009', cursor: 'default', }, ], - }), [stroke, fill, percentage]) + }), [stroke, fill, percentage, animationDuration]) return ( {
}> { plan.type === Plan.professional && ( - + ) } { (plan.type === Plan.team || plan.type === Plan.enterprise) && ( - + ) } {t(`billing.plansCommon.priority.${priority}`)} diff --git a/web/app/components/datasets/common/document-picker/preview-document-picker.tsx b/web/app/components/datasets/common/document-picker/preview-document-picker.tsx index 6d61cc4c69..0177177665 100644 --- a/web/app/components/datasets/common/document-picker/preview-document-picker.tsx +++ b/web/app/components/datasets/common/document-picker/preview-document-picker.tsx @@ -54,7 +54,7 @@ const PreviewDocumentPicker: FC = ({
- {name || '--'} + {name || '--'}
diff --git a/web/app/components/datasets/common/economical-retrieval-method-config/index.tsx b/web/app/components/datasets/common/economical-retrieval-method-config/index.tsx index 8c46747b63..49f090786e 100644 --- a/web/app/components/datasets/common/economical-retrieval-method-config/index.tsx +++ b/web/app/components/datasets/common/economical-retrieval-method-config/index.tsx @@ -25,7 +25,7 @@ const EconomicalRetrievalMethodConfig: FC = ({ } title={t('dataset.retrieval.invertedIndex.title')} description={t('dataset.retrieval.invertedIndex.description')} isActive - activeHeaderClassName='bg-gradient-to-r from-[#F0EEFA] to-[#F9FAFB]' + activeHeaderClassName='dataset-option-card-purple-gradient' > = ({ search_method: RETRIEVE_METHOD.semantic, })} effectImg={Effect.src} - activeHeaderClassName='bg-gradient-to-r from-[#F0EEFA] to-[#F9FAFB]' + activeHeaderClassName='dataset-option-card-purple-gradient' > = ({ search_method: RETRIEVE_METHOD.fullText, })} effectImg={Effect.src} - activeHeaderClassName='bg-gradient-to-r from-[#F0EEFA] to-[#F9FAFB]' + activeHeaderClassName='dataset-option-card-purple-gradient' > = ({ reranking_enable: true, })} effectImg={Effect.src} - activeHeaderClassName='bg-gradient-to-r from-[#F0EEFA] to-[#F9FAFB]' + activeHeaderClassName='bg-dataset-option-card-purple-gradient' > = ({
)}
- {t('common.modelProvider.rerankModel.key')} + {t('common.modelProvider.rerankModel.key')} {t('common.modelProvider.rerankModel.tip')}
diff --git a/web/app/components/datasets/create/embedding-process/index.module.css b/web/app/components/datasets/create/embedding-process/index.module.css index 1ebb006b54..f2ab4d85a2 100644 --- a/web/app/components/datasets/create/embedding-process/index.module.css +++ b/web/app/components/datasets/create/embedding-process/index.module.css @@ -14,24 +14,7 @@ border-radius: 6px; overflow: hidden; } -.sourceItem.error { - background: #FEE4E2; -} -.sourceItem.success { - background: #D1FADF; -} -.progressbar { - position: absolute; - top: 0; - left: 0; - height: 100%; - background-color: #B2CCFF; -} -.sourceItem .info { - display: flex; - align-items: center; - z-index: 1; -} + .sourceItem .info .name { font-weight: 500; font-size: 12px; @@ -55,13 +38,6 @@ color: #05603A; } - -.cost { - @apply flex justify-between items-center text-xs text-gray-700; -} -.embeddingStatus { - @apply flex items-center justify-between text-gray-900 font-medium text-sm mr-2; -} .commonIcon { @apply w-3 h-3 mr-1 inline-block align-middle; } @@ -81,35 +57,33 @@ @apply text-xs font-medium; } -.fileIcon { - @apply w-4 h-4 mr-1 bg-center bg-no-repeat; +.unknownFileIcon { background-image: url(../assets/unknown.svg); - background-size: 16px; } -.fileIcon.csv { +.csv { background-image: url(../assets/csv.svg); } -.fileIcon.docx { +.docx { background-image: url(../assets/docx.svg); } -.fileIcon.xlsx, -.fileIcon.xls { +.xlsx, +.xls { background-image: url(../assets/xlsx.svg); } -.fileIcon.pdf { +.pdf { background-image: url(../assets/pdf.svg); } -.fileIcon.html, -.fileIcon.htm { +.html, +.htm { background-image: url(../assets/html.svg); } -.fileIcon.md, -.fileIcon.markdown { +.md, +.markdown { background-image: url(../assets/md.svg); } -.fileIcon.txt { +.txt { background-image: url(../assets/txt.svg); } -.fileIcon.json { +.json { background-image: url(../assets/json.svg); } diff --git a/web/app/components/datasets/create/embedding-process/index.tsx b/web/app/components/datasets/create/embedding-process/index.tsx index f6d500ef15..64f2570b4a 100644 --- a/web/app/components/datasets/create/embedding-process/index.tsx +++ b/web/app/components/datasets/create/embedding-process/index.tsx @@ -6,13 +6,15 @@ import { useTranslation } from 'react-i18next' import { omit } from 'lodash-es' import { ArrowRightIcon } from '@heroicons/react/24/solid' import { + RiCheckboxCircleFill, RiErrorWarningFill, RiLoader2Fill, RiTerminalBoxLine, } from '@remixicon/react' import Image from 'next/image' import { indexMethodIcon, retrievalIcon } from '../icons' -import s from './index.module.css' +import { IndexingType } from '../step-two' +import DocumentFileIcon from '../../common/document-file-icon' import cn from '@/utils/classnames' import { FieldInfo } from '@/app/components/datasets/documents/detail/metadata' import Button from '@/app/components/base/button' @@ -25,7 +27,6 @@ import { Plan } from '@/app/components/billing/type' import { ZapFast } from '@/app/components/base/icons/src/vender/solid/general' import UpgradeBtn from '@/app/components/billing/upgrade-btn' import { useProviderContext } from '@/context/provider-context' -import Tooltip from '@/app/components/base/tooltip' import { sleep } from '@/utils' import { RETRIEVE_METHOD } from '@/types/app' @@ -83,7 +84,7 @@ const RuleDetail: FC<{ return value }, [sourceData]) - return
+ return
{Object.keys(segmentationRuleMap).map((field) => { return @@ -167,6 +171,7 @@ const EmbeddingProcess: FC = ({ datasetId, batchId, documents = [], index } useEffect(() => { + setIsStopQuery(false) startQueryStatus() return () => { stopQueryStatus() @@ -225,8 +230,8 @@ const EmbeddingProcess: FC = ({ datasetId, batchId, documents = [], index return ( <> -
-
+
+
{isEmbedding &&
{t('datasetDocuments.embedding.processing')} @@ -247,68 +252,68 @@ const EmbeddingProcess: FC = ({ datasetId, batchId, documents = [], index
) } -
+
{indexingStatusBatchDetail.map(indexingStatusDetail => (
{isSourceEmbedding(indexingStatusDetail) && ( -
+
)} -
+
{getSourceType(indexingStatusDetail.id) === DataSourceType.FILE && ( -
+ //
+ )} {getSourceType(indexingStatusDetail.id) === DataSourceType.NOTION && ( )} -
{getSourceName(indexingStatusDetail.id)}
- { - enableBilling && ( - - ) - } -
-
- {isSourceEmbedding(indexingStatusDetail) && ( -
{`${getSourcePercent(indexingStatusDetail)}%`}
- )} - {indexingStatusDetail.indexing_status === 'error' && indexingStatusDetail.error && ( - - {indexingStatusDetail.error} -
- )} - > -
- Error - -
- - )} - {indexingStatusDetail.indexing_status === 'error' && !indexingStatusDetail.error && ( -
- Error +
+
+ {getSourceName(indexingStatusDetail.id)}
+ { + enableBilling && ( + + ) + } +
+ {isSourceEmbedding(indexingStatusDetail) && ( +
{`${getSourcePercent(indexingStatusDetail)}%`}
+ )} + {indexingStatusDetail.indexing_status === 'error' && ( + <> + + {indexingStatusDetail.error || 'Error'} + + + )} {indexingStatusDetail.indexing_status === 'completed' && ( -
100%
+ )}
))}
- +
+
+ {/* */} + +
)} {dataSourceType === DataSourceType.NOTION && ( @@ -249,7 +258,10 @@ const StepOne = ({ {!datasetId && ( <>
-
{t('datasetCreation.stepOne.emptyDatasetCreation')}
+ + + {t('datasetCreation.stepOne.emptyDatasetCreation')} + )}
diff --git a/web/app/components/datasets/create/step-three/index.tsx b/web/app/components/datasets/create/step-three/index.tsx index 1e7c49ac37..e2bc7f5881 100644 --- a/web/app/components/datasets/create/step-three/index.tsx +++ b/web/app/components/datasets/create/step-three/index.tsx @@ -24,29 +24,29 @@ const StepThree = ({ datasetId, datasetName, indexingType, creationCache, retrie const isMobile = media === MediaType.mobile return ( -
-
-
+
+
+
{!datasetId && ( <> -
-
{t('datasetCreation.stepThree.creationTitle')}
-
{t('datasetCreation.stepThree.creationContent')}
-
- -
-
{t('datasetCreation.stepThree.label')}
-
{datasetName || creationCache?.dataset?.name}
+
+
{t('datasetCreation.stepThree.creationTitle')}
+
{t('datasetCreation.stepThree.creationContent')}
+
+ +
+
{t('datasetCreation.stepThree.label')}
+
{datasetName || creationCache?.dataset?.name}
-
+
)} {datasetId && ( -
-
{t('datasetCreation.stepThree.additionTitle')}
-
{`${t('datasetCreation.stepThree.additionP1')} ${datasetName || creationCache?.dataset?.name} ${t('datasetCreation.stepThree.additionP2')}`}
+
+
{t('datasetCreation.stepThree.additionTitle')}
+
{`${t('datasetCreation.stepThree.additionP1')} ${datasetName || creationCache?.dataset?.name} ${t('datasetCreation.stepThree.additionP2')}`}
)} } - activeHeaderClassName='bg-gradient-to-r from-[#EFF0F9] to-[#F9FAFB]' + activeHeaderClassName='bg-dataset-option-card-blue-gradient' description={t('datasetCreation.stepTwo.generalTip')} isActive={ [ChuckingMode.text, ChuckingMode.qa].includes( @@ -638,7 +638,7 @@ const StepTwo = ({ - +
))}
@@ -692,7 +692,7 @@ const StepTwo = ({ title={t('datasetCreation.stepTwo.parentChild')} icon={{t('datasetCreation.stepTwo.parentChild')}} effectImg={OrangeEffect.src} - activeHeaderClassName='bg-gradient-to-r from-[#F9F1EE] to-[#F9FAFB]' + activeHeaderClassName='bg-dataset-option-card-orange-gradient' description={t('datasetCreation.stepTwo.parentChildTip')} isActive={ datasetId ? currentDataset!.doc_form === ChuckingMode.parentChild : docForm === ChuckingMode.parentChild @@ -805,7 +805,7 @@ const StepTwo = ({ - +
))}
@@ -820,105 +820,82 @@ const StepTwo = ({
{(!hasSetIndexType || (hasSetIndexType && indexingType === IndexingType.QUALIFIED)) && ( -
{ + + {t('datasetCreation.stepTwo.qualified')} + {!hasSetIndexType && {t('datasetCreation.stepTwo.recommend')}} + + {!hasSetIndexType && } + +

} + description={t('datasetCreation.stepTwo.qualifiedTip')} + icon={} + isActive={!hasSetIndexType && indexType === IndexingType.QUALIFIED} + disabled={!isAPIKeySet || hasSetIndexType} + onSwitched={() => { if (isAPIKeySet) setIndexType(IndexingType.QUALIFIED) }} - > -
- Gold Icon -
- {!hasSetIndexType && } -
-
- {t('datasetCreation.stepTwo.qualified')} - {!hasSetIndexType && {t('datasetCreation.stepTwo.recommend')}} -
-
{t('datasetCreation.stepTwo.qualifiedTip')}
-
- {!isAPIKeySet && ( -
- {t('datasetCreation.stepTwo.warning')}  - {t('datasetCreation.stepTwo.click')} -
- )} -
+ /> )} {(!hasSetIndexType || (hasSetIndexType && indexingType === IndexingType.ECONOMICAL)) && ( - - -
- setIsQAConfirmDialogOpen(false)} className='w-[432px]'> -
-

- {t('datasetCreation.stepTwo.qaSwitchHighQualityTipTitle')} -

-

- {t('datasetCreation.stepTwo.qaSwitchHighQualityTipContent')} -

-
-
- - -
-
-
- Economical Icon -
- {!hasSetIndexType && } -
-
{t('datasetCreation.stepTwo.economical')}
-
{t('datasetCreation.stepTwo.economicalTip')}
-
+ <> + setIsQAConfirmDialogOpen(false)} className='w-[432px]'> +
+

+ {t('datasetCreation.stepTwo.qaSwitchHighQualityTipTitle')} +

+

+ {t('datasetCreation.stepTwo.qaSwitchHighQualityTipContent')} +

+
+
+ +
- - -
- { - docForm === ChuckingMode.qa - ? t('datasetCreation.stepTwo.notAvailableForQA') - : t('datasetCreation.stepTwo.notAvailableForParentChild') - } -
-
- - )} +
+ + + } + isActive={!hasSetIndexType && indexType === IndexingType.ECONOMICAL} + disabled={!isAPIKeySet || hasSetIndexType || docForm !== ChuckingMode.text} + ref={economyDomRef} + onSwitched={() => { + if (isAPIKeySet && docForm === ChuckingMode.text) + setIndexType(IndexingType.ECONOMICAL) + }} + /> + + +
+ { + docForm === ChuckingMode.qa + ? t('datasetCreation.stepTwo.notAvailableForQA') + : t('datasetCreation.stepTwo.notAvailableForParentChild') + } +
+
+
+ )}
{hasSetIndexType && indexType === IndexingType.ECONOMICAL && (
diff --git a/web/app/components/datasets/create/step-two/language-select/index.tsx b/web/app/components/datasets/create/step-two/language-select/index.tsx index 1e0f2db030..016f2a5f20 100644 --- a/web/app/components/datasets/create/step-two/language-select/index.tsx +++ b/web/app/components/datasets/create/step-two/language-select/index.tsx @@ -28,7 +28,7 @@ const LanguageSelect: FC = ({ {languages.filter(language => language.supported).map(({ prompt_name }) => (
onSelect(prompt_name)}>{prompt_name}
))} @@ -40,7 +40,7 @@ const LanguageSelect: FC = ({
} - btnClassName={open => cn('!border-0 !px-0 !py-0 !bg-inherit !hover:bg-inherit', open ? 'text-blue-600' : 'text-gray-500')} + btnClassName={() => cn('!border-0 !px-0 !py-0 !bg-inherit !hover:bg-inherit text-components-button-tertiary-text')} className='!w-[120px] h-fit !z-20 !translate-x-0 !left-[-16px]' /> ) diff --git a/web/app/components/datasets/create/step-two/option-card.tsx b/web/app/components/datasets/create/step-two/option-card.tsx index ba84d335c3..bb339b4a41 100644 --- a/web/app/components/datasets/create/step-two/option-card.tsx +++ b/web/app/components/datasets/create/step-two/option-card.tsx @@ -1,12 +1,11 @@ -import { type ComponentProps, type FC, type ReactNode } from 'react' +import { type ComponentProps, type FC, type ReactNode, forwardRef } from 'react' import Image from 'next/image' -import piggyBank from '../assets/piggy-bank-01.svg' import Effect from '../assets/option-card-effect-blue.svg' import classNames from '@/utils/classnames' const TriangleArrow: FC> = props => ( - + ) @@ -27,12 +26,12 @@ export const OptionCardHeader: FC = (props) => { )}>
{isActive && } -
- {icon || {description}} +
+ {icon}
{title}
@@ -52,14 +51,18 @@ type OptionCardProps = { effectImg?: string onSwitched?: () => void noHighlight?: boolean + disabled?: boolean } & Omit, 'title'> -export const OptionCard: FC = (props) => { - const { icon, className, title, description, isActive, children, actions, activeHeaderClassName, style, effectImg, onSwitched, onClick, noHighlight, ...rest } = props +export const OptionCard: FC = forwardRef((props, ref) => { + const { icon, className, title, description, isActive, children, actions, activeHeaderClassName, style, effectImg, onSwitched, onClick, noHighlight, disabled, ...rest } = props return
= (props) => { onSwitched?.() onClick?.(e) }} - {...rest}> + {...rest} + ref={ref} + > = (props) => { effectImg={effectImg} /> {/** Body */} - {isActive &&
{children} + {isActive && (children || actions) &&
+ {children} {actions &&
{actions} -
} +
+ }
}
-} +}) + +OptionCard.displayName = 'OptionCard' diff --git a/web/app/components/datasets/documents/detail/metadata/index.tsx b/web/app/components/datasets/documents/detail/metadata/index.tsx index 659fff6d18..b0599a8dbe 100644 --- a/web/app/components/datasets/documents/detail/metadata/index.tsx +++ b/web/app/components/datasets/documents/detail/metadata/index.tsx @@ -24,7 +24,6 @@ import type { DocType, FullDocumentDetail } from '@/models/datasets' import { CUSTOMIZABLE_DOC_TYPES } from '@/models/datasets' import type { inputType, metadataType } from '@/hooks/use-metadata' import { useBookCategories, useBusinessDocCategories, useLanguages, useMetadataMap, usePersonalDocCategories } from '@/hooks/use-metadata' -import classNames from '@/utils/classnames' const map2Options = (map: { [key: string]: string }) => { return Object.keys(map).map(key => ({ value: key, name: map[key] })) @@ -59,9 +58,9 @@ export const FieldInfo: FC = ({ const readAlignTop = !showEdit && textNeedWrap return ( -
-
{label}
-
+
+
{label}
+
{valueIcon} {!showEdit ? displayedValue diff --git a/web/app/components/datasets/documents/detail/metadata/style.module.css b/web/app/components/datasets/documents/detail/metadata/style.module.css index 60420c196e..37796d38dc 100644 --- a/web/app/components/datasets/documents/detail/metadata/style.module.css +++ b/web/app/components/datasets/documents/detail/metadata/style.module.css @@ -53,18 +53,7 @@ .desc { @apply text-gray-500 text-xs; } -.fieldInfo { - /* height: 1.75rem; */ - min-height: 1.75rem; - @apply flex flex-row items-center gap-4; -} -.fieldInfo > .label { - @apply w-2/5 max-w-[128px] text-gray-500 text-xs font-medium overflow-hidden text-ellipsis whitespace-nowrap; -} -.fieldInfo > .value { - overflow-wrap: anywhere; - @apply w-3/5 text-gray-700 font-normal text-xs; -} + .changeTip { @apply text-[#D92D20] text-xs text-center; } diff --git a/web/app/components/header/account-setting/model-provider-page/model-name/index.tsx b/web/app/components/header/account-setting/model-provider-page/model-name/index.tsx index c5b7e8395c..2107f98a9a 100644 --- a/web/app/components/header/account-setting/model-provider-page/model-name/index.tsx +++ b/web/app/components/header/account-setting/model-provider-page/model-name/index.tsx @@ -39,7 +39,7 @@ const ModelName: FC = ({ return (
diff --git a/web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx b/web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx index 023c6a5cd2..556a2ef66f 100644 --- a/web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx +++ b/web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx @@ -13,6 +13,7 @@ import ModelIcon from '../model-icon' import ModelName from '../model-name' import { AlertTriangle } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback' import Tooltip from '@/app/components/base/tooltip' +import classNames from '@/utils/classnames' type ModelTriggerProps = { open: boolean @@ -32,13 +33,13 @@ const ModelTrigger: FC = ({ return (
= ({ }
)} -
) } diff --git a/web/i18n/en-US/dataset-creation.ts b/web/i18n/en-US/dataset-creation.ts index 514738e9da..a05a683d0f 100644 --- a/web/i18n/en-US/dataset-creation.ts +++ b/web/i18n/en-US/dataset-creation.ts @@ -47,6 +47,7 @@ const translation = { notionSyncTitle: 'Notion is not connected', notionSyncTip: 'To sync with Notion, connection to Notion must be established first.', connect: 'Go to connect', + cancel: 'Cancel', button: 'Next', emptyDatasetCreation: 'I want to create an empty Knowledge', modal: { diff --git a/web/i18n/zh-Hans/dataset-creation.ts b/web/i18n/zh-Hans/dataset-creation.ts index 48e1b4e7f2..30e32023f7 100644 --- a/web/i18n/zh-Hans/dataset-creation.ts +++ b/web/i18n/zh-Hans/dataset-creation.ts @@ -47,6 +47,7 @@ const translation = { notionSyncTitle: 'Notion 未绑定', notionSyncTip: '同步 Notion 内容前,须先绑定 Notion 空间', connect: '去绑定', + cancel: '取消', button: '下一步', emptyDatasetCreation: '创建一个空知识库', modal: { diff --git a/web/i18n/zh-Hant/dataset-creation.ts b/web/i18n/zh-Hant/dataset-creation.ts index 8c5673cb3f..e4f5011859 100644 --- a/web/i18n/zh-Hant/dataset-creation.ts +++ b/web/i18n/zh-Hant/dataset-creation.ts @@ -37,6 +37,7 @@ const translation = { notionSyncTitle: 'Notion 未繫結', notionSyncTip: '同步 Notion 內容前,須先繫結 Notion 空間', connect: '去繫結', + cancel: '取消', button: '下一步', emptyDatasetCreation: '建立一個空知識庫', modal: { diff --git a/web/tailwind.config.js b/web/tailwind.config.js index 4759c2fa80..8f289c784d 100644 --- a/web/tailwind.config.js +++ b/web/tailwind.config.js @@ -1,6 +1,7 @@ -/** @type {import('tailwindcss').Config} */ import tailwindThemeVarDefine from './themes/tailwind-theme-var-define' -module.exports = { + +/** @type {import('tailwindcss').Config} */ +const config = { content: [ './app/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}', @@ -115,3 +116,5 @@ module.exports = { preflight: false, }, } + +export default config diff --git a/web/themes/manual-dark.css b/web/themes/manual-dark.css index 269f306efa..9a342897b2 100644 --- a/web/themes/manual-dark.css +++ b/web/themes/manual-dark.css @@ -6,4 +6,7 @@ html[data-theme="dark"] { --color-dataset-chunk-process-error-bg: linear-gradient(92deg, rgba(240, 68, 56, 0.30) 0%, rgba(0, 0, 0, 0.00) 100%); --color-dataset-chunk-detail-card-hover-bg: linear-gradient(180deg, #1D1D20 0%, #222225 100%); --color-dataset-child-chunk-expand-btn-bg: linear-gradient(90deg, rgba(24, 24, 27, 0.25) 0%, rgba(24, 24, 27, 0.04) 100%); -} \ No newline at end of file + --color-dataset-option-card-blue-gradient: linear-gradient(180deg, #24252E 0%, #1E1E21 100%); + --color-dataset-option-card-purple-gradient: linear-gradient(180deg, #25242E 0%, #1E1E21 100%); + --color-dataset-option-card-orange-gradient: linear-gradient(180deg, #2B2322 0%, #1E1E21 100%); +} diff --git a/web/themes/manual-light.css b/web/themes/manual-light.css index 8f3ee5d3ff..2de9edda1e 100644 --- a/web/themes/manual-light.css +++ b/web/themes/manual-light.css @@ -6,4 +6,7 @@ html[data-theme="light"] { --color-dataset-chunk-process-error-bg: linear-gradient(92deg, rgba(240, 68, 56, 0.25) 0%, rgba(255, 255, 255, 0.00) 100%); --color-dataset-chunk-detail-card-hover-bg: linear-gradient(180deg, #F2F4F7 0%, #F9FAFB 100%); --color-dataset-child-chunk-expand-btn-bg: linear-gradient(90deg, rgba(200, 206, 218, 0.20) 0%, rgba(200, 206, 218, 0.04) 100%); -} \ No newline at end of file + --color-dataset-option-card-blue-gradient: linear-gradient(180deg, #F2F4F7 0%, #F9FAFB 100%); + --color-dataset-option-card-purple-gradient: linear-gradient(180deg, #F0EEFA 0%, #F9FAFB 100%); + --color-dataset-option-card-orange-gradient: linear-gradient(180deg, #F8F2EE 0%, #F9FAFB 100%); +}