diff --git a/web/app/components/base/button/index.tsx b/web/app/components/base/button/index.tsx index 3bd4b21a5e..b467c494b0 100644 --- a/web/app/components/base/button/index.tsx +++ b/web/app/components/base/button/index.tsx @@ -34,10 +34,11 @@ export type ButtonProps = { destructive?: boolean loading?: boolean styleCss?: CSSProperties + spinnerClassName?: string } & React.ButtonHTMLAttributes & VariantProps const Button = React.forwardRef( - ({ className, variant, size, destructive, loading, styleCss, children, ...props }, ref) => { + ({ className, variant, size, destructive, loading, styleCss, children, spinnerClassName, ...props }, ref) => { return ( ) }, diff --git a/web/app/components/base/icons/src/public/other/RowStruct.json b/web/app/components/base/icons/src/public/other/RowStruct.json index 0d1ef43f4f..93c8068601 100644 --- a/web/app/components/base/icons/src/public/other/RowStruct.json +++ b/web/app/components/base/icons/src/public/other/RowStruct.json @@ -20,7 +20,7 @@ "width": "16", "height": "16", "rx": "5", - "fill": "#F2F4F7" + "fill": "currentColor" }, "children": [] }, @@ -33,7 +33,7 @@ "width": "233", "height": "10", "rx": "3", - "fill": "#EAECF0" + "fill": "currentColor" }, "children": [] }, @@ -46,7 +46,7 @@ "width": "345", "height": "6", "rx": "3", - "fill": "#F2F4F7" + "fill": "currentColor" }, "children": [] } diff --git a/web/app/components/base/notion-page-selector/workspace-selector/index.module.css b/web/app/components/base/notion-page-selector/workspace-selector/index.module.css deleted file mode 100644 index 7939c14628..0000000000 --- a/web/app/components/base/notion-page-selector/workspace-selector/index.module.css +++ /dev/null @@ -1,4 +0,0 @@ -.popup { - box-shadow: 0px 12px 16px -4px rgba(16, 24, 40, 0.08), 0px 4px 6px -2px rgba(16, 24, 40, 0.03); - z-index: 10; -} \ No newline at end of file diff --git a/web/app/components/base/notion-page-selector/workspace-selector/index.tsx b/web/app/components/base/notion-page-selector/workspace-selector/index.tsx index 0d0619c693..f83389f96c 100644 --- a/web/app/components/base/notion-page-selector/workspace-selector/index.tsx +++ b/web/app/components/base/notion-page-selector/workspace-selector/index.tsx @@ -4,8 +4,6 @@ import { Fragment } from 'react' import { Menu, Transition } from '@headlessui/react' import { RiArrowDownSLine } from '@remixicon/react' import NotionIcon from '../../notion-icon' -import s from './index.module.css' -import cn from '@/utils/classnames' import type { DataSourceNotionWorkspace } from '@/models/common' type WorkspaceSelectorProps = { @@ -26,14 +24,14 @@ export default function WorkspaceSelector({ { ({ open }) => ( <> - +
{currentWorkspace?.workspace_name}
-
{currentWorkspace?.pages.length}
+ {/*
{currentWorkspace?.pages.length}
*/}
{ items.map(item => (
onSelect(item.workspace_id)} > -
{item.workspace_name}
-
+
{item.workspace_name}
+
{item.pages.length} {t('common.dataSource.notion.selector.pageSelected')}
diff --git a/web/app/components/datasets/create/file-preview/index.module.css b/web/app/components/datasets/create/file-preview/index.module.css index 929002e1e2..ee6ba96240 100644 --- a/web/app/components/datasets/create/file-preview/index.module.css +++ b/web/app/components/datasets/create/file-preview/index.module.css @@ -1,43 +1,29 @@ .filePreview { - @apply flex flex-col border-l border-gray-200 shrink-0; + @apply flex flex-col border-l border-components-panel-border shrink-0 bg-background-default-lighter; width: 100%; - background-color: #fcfcfd; } .previewHeader { - @apply border-b border-gray-200 shrink-0; + @apply border-b border-divider-subtle shrink-0; margin: 42px 32px 0; padding-bottom: 16px; } .previewHeader .title { - display: flex; - justify-content: space-between; - align-items: center; - color: #101828; - font-weight: 600; - font-size: 18px; - line-height: 28px; + @apply flex justify-between items-center text-text-primary; } .previewHeader .fileName { - font-weight: 400; - font-size: 12px; - line-height: 18px; - color: #1D2939; + @apply text-text-tertiary; } .previewHeader .filetype { - color: #667085; + @apply text-text-tertiary; } .previewContent { - @apply overflow-y-auto grow; + @apply overflow-y-auto grow text-text-secondary; padding: 20px 32px; - font-weight: 400; - font-size: 16px; - line-height: 24px; - color: #344054; } .previewContent .loading { @@ -46,6 +32,7 @@ background: #f9fafb center no-repeat url(../assets/Loading.svg); background-size: contain; } + .fileContent { white-space: pre-line; word-break: break-all; diff --git a/web/app/components/datasets/create/file-preview/index.tsx b/web/app/components/datasets/create/file-preview/index.tsx index cb1f1d6908..054f77f1ff 100644 --- a/web/app/components/datasets/create/file-preview/index.tsx +++ b/web/app/components/datasets/create/file-preview/index.tsx @@ -46,13 +46,13 @@ const FilePreview = ({ return (
-
+
{t('datasetCreation.stepOne.filePreview')}
-
+
{getFileName(file)}.{file?.extension}
diff --git a/web/app/components/datasets/create/notion-page-preview/index.module.css b/web/app/components/datasets/create/notion-page-preview/index.module.css index 12d3747356..6f2e5d9fa5 100644 --- a/web/app/components/datasets/create/notion-page-preview/index.module.css +++ b/web/app/components/datasets/create/notion-page-preview/index.module.css @@ -1,54 +1,34 @@ .filePreview { - @apply flex flex-col border-l border-gray-200 shrink-0; - width: 528px; - background-color: #fcfcfd; - } - - .previewHeader { - @apply border-b border-gray-200 shrink-0; - margin: 42px 32px 0; - padding-bottom: 16px; - } - - .previewHeader .title { - display: flex; - justify-content: space-between; - align-items: center; - color: #101828; - font-weight: 600; - font-size: 18px; - line-height: 28px; - } - - .previewHeader .fileName { - display: flex; - align-items: center; - font-weight: 400; - font-size: 12px; - line-height: 18px; - color: #1D2939; - } - - .previewHeader .filetype { - color: #667085; - } - - .previewContent { - @apply overflow-y-auto grow; - padding: 20px 32px; - font-weight: 400; - font-size: 16px; - line-height: 24px; - color: #344054; - } - - .previewContent .loading { - width: 100%; - height: 180px; - background: #f9fafb center no-repeat url(../assets/Loading.svg); - background-size: contain; - } - .fileContent { - white-space: pre-line; - } + @apply flex flex-col border-l border-components-panel-border shrink-0 bg-background-default-lighter; + width: 528px; +} + +.previewHeader { + @apply border-b border-divider-subtle shrink-0; + margin: 42px 32px 0; + padding-bottom: 16px; +} + +.previewHeader .title { + @apply flex justify-between items-center text-text-primary; +} + +.previewHeader .fileName { + @apply flex items-center text-text-tertiary; +} + +.previewContent { + @apply overflow-y-auto grow text-text-secondary; + padding: 20px 32px; +} + +.previewContent .loading { + width: 100%; + height: 180px; + background: #f9fafb center no-repeat url(../assets/Loading.svg); + background-size: contain; +} +.fileContent { + white-space: pre-line; +} \ No newline at end of file diff --git a/web/app/components/datasets/create/notion-page-preview/index.tsx b/web/app/components/datasets/create/notion-page-preview/index.tsx index f658f213e8..32073719ca 100644 --- a/web/app/components/datasets/create/notion-page-preview/index.tsx +++ b/web/app/components/datasets/create/notion-page-preview/index.tsx @@ -46,13 +46,13 @@ const NotionPagePreview = ({ return (
-
+
{t('datasetCreation.stepOne.pagePreview')}
-
+
-
+
{loading &&
} {!loading && (
{previewContent}
diff --git a/web/app/components/datasets/create/step-one/index.module.css b/web/app/components/datasets/create/step-one/index.module.css index 9658724a89..1ade631793 100644 --- a/web/app/components/datasets/create/step-one/index.module.css +++ b/web/app/components/datasets/create/step-one/index.module.css @@ -1,7 +1,4 @@ .stepHeader { - position: sticky; - top: 0; - left: 0; padding: 42px 64px 12px 0; } @@ -21,7 +18,7 @@ .dataSourceItem.active { @apply bg-components-option-card-option-selected-bg border border-components-option-card-option-selected-border - shadow-emulate-border shadow-components-option-card-option-selected-border; + ring-[0.5px] ring-components-option-card-option-selected-border; } .dataSourceItem.disabled, diff --git a/web/app/components/datasets/create/step-one/index.tsx b/web/app/components/datasets/create/step-one/index.tsx index c5c79d4b62..017bcc3f22 100644 --- a/web/app/components/datasets/create/step-one/index.tsx +++ b/web/app/components/datasets/create/step-one/index.tsx @@ -138,7 +138,7 @@ const StepOne = ({
{ shouldShowDataSourceTypeList && ( -
+
{t('datasetCreation.steps.one')}
) diff --git a/web/app/components/datasets/create/website/base/crawled-result-item.tsx b/web/app/components/datasets/create/website/base/crawled-result-item.tsx index 5531d3e140..40235403e2 100644 --- a/web/app/components/datasets/create/website/base/crawled-result-item.tsx +++ b/web/app/components/datasets/create/website/base/crawled-result-item.tsx @@ -5,6 +5,7 @@ import { useTranslation } from 'react-i18next' import cn from '@/utils/classnames' import type { CrawlResultItem as CrawlResultItemType } from '@/models/datasets' import Checkbox from '@/app/components/base/checkbox' +import Button from '@/app/components/base/button' type Props = { payload: CrawlResultItemType @@ -27,13 +28,32 @@ const CrawledResultItem: FC = ({ onCheckChange(!isChecked) }, [isChecked, onCheckChange]) return ( -
-
- -
{payload.title}
-
{t('datasetCreation.stepOne.website.preview')}
+
+
+
+ +
+
+
+ {payload.title} +
+
+ {payload.source_url} +
+
+
-
{payload.source_url}
) } diff --git a/web/app/components/datasets/create/website/base/crawled-result.tsx b/web/app/components/datasets/create/website/base/crawled-result.tsx index d5c8d1b80a..e1394b9e43 100644 --- a/web/app/components/datasets/create/website/base/crawled-result.tsx +++ b/web/app/components/datasets/create/website/base/crawled-result.tsx @@ -57,17 +57,19 @@ const CrawledResult: FC = ({ }, [list, onPreview]) return ( -
-
+
+
-
{t(`${I18N_PREFIX}.scrapTimeInfo`, { - total: list.length, - time: usedTime.toFixed(1), - })}
+
+ {t(`${I18N_PREFIX}.scrapTimeInfo`, { + total: list.length, + time: usedTime.toFixed(1), + })} +
{list.map((item, index) => ( diff --git a/web/app/components/datasets/create/website/base/crawling.tsx b/web/app/components/datasets/create/website/base/crawling.tsx index ee26e7671a..683a4b5a0a 100644 --- a/web/app/components/datasets/create/website/base/crawling.tsx +++ b/web/app/components/datasets/create/website/base/crawling.tsx @@ -2,7 +2,6 @@ import type { FC } from 'react' import React from 'react' import { useTranslation } from 'react-i18next' -import cn from '@/utils/classnames' import { RowStruct } from '@/app/components/base/icons/src/public/other' type Props = { @@ -19,15 +18,16 @@ const Crawling: FC = ({ const { t } = useTranslation() return ( -
-
+
+
{t('datasetCreation.stepOne.website.totalPageScraped')} {crawledNum}/{totalNum}
{['', '', '', ''].map((item, index) => (
- +
))}
diff --git a/web/app/components/datasets/create/website/base/error-message.tsx b/web/app/components/datasets/create/website/base/error-message.tsx index f061c4624e..5bf4d228dc 100644 --- a/web/app/components/datasets/create/website/base/error-message.tsx +++ b/web/app/components/datasets/create/website/base/error-message.tsx @@ -16,13 +16,13 @@ const ErrorMessage: FC = ({ errorMsg, }) => { return ( -
+
-
{title}
+
{title}
{errorMsg && ( -
{errorMsg}
+
{errorMsg}
)}
) diff --git a/web/app/components/datasets/create/website/base/field.tsx b/web/app/components/datasets/create/website/base/field.tsx index 5b5ca90c5d..013b351ca8 100644 --- a/web/app/components/datasets/create/website/base/field.tsx +++ b/web/app/components/datasets/create/website/base/field.tsx @@ -31,8 +31,8 @@ const Field: FC = ({ return (
-
{label}
- {isRequired && *} +
{label}
+ {isRequired && *} {tooltip && ( = ({ {...otherOption} value={value} onChange={handleChange} - className='flex h-9 w-full py-1 px-2 rounded-lg text-xs leading-normal bg-gray-100 caret-primary-600 hover:bg-gray-100 focus:ring-1 focus:ring-inset focus:ring-gray-200 focus-visible:outline-none focus:bg-gray-50 placeholder:text-gray-400' + className='flex h-8 w-full p-2 rounded-lg system-xs-regular text-components-input-text-filled bg-components-input-bg-normal + caret-[#295eff] border border-transparent + hover:bg-components-input-bg-hover hover:border hover:border-components-input-border-hover + focus-visible:outline-none focus:bg-components-inout-border-active focus:border focus:border-components-input-border-active + focus:shadow-xs focus:shadow-shadow-shadow-3 + placeholder:text-components-input-text-placeholder' placeholder={placeholder} /> ) diff --git a/web/app/components/datasets/create/website/base/options-wrap.tsx b/web/app/components/datasets/create/website/base/options-wrap.tsx index 652401a20f..7f85b75649 100644 --- a/web/app/components/datasets/create/website/base/options-wrap.tsx +++ b/web/app/components/datasets/create/website/base/options-wrap.tsx @@ -3,8 +3,8 @@ import { useBoolean } from 'ahooks' import type { FC } from 'react' import React, { useEffect } from 'react' import { useTranslation } from 'react-i18next' +import { RiEqualizer2Line } from '@remixicon/react' import cn from '@/utils/classnames' -import { Settings04 } from '@/app/components/base/icons/src/vender/line/general' import { ChevronRight } from '@/app/components/base/icons/src/vender/line/arrows' const I18N_PREFIX = 'datasetCreation.stepOne.website' @@ -34,14 +34,14 @@ const OptionsWrap: FC = ({ return (
-
- -
{t(`${I18N_PREFIX}.options`)}
+
+ + {t(`${I18N_PREFIX}.options`)}
- +
{!fold && (
diff --git a/web/app/components/datasets/create/website/base/url-input.tsx b/web/app/components/datasets/create/website/base/url-input.tsx index e6b0475874..b7dc9bfca5 100644 --- a/web/app/components/datasets/create/website/base/url-input.tsx +++ b/web/app/components/datasets/create/website/base/url-input.tsx @@ -28,7 +28,7 @@ const UrlInput: FC = ({ }, [isRunning, onRun, url]) return ( -
+
= ({ diff --git a/web/app/components/datasets/create/website/firecrawl/header.tsx b/web/app/components/datasets/create/website/firecrawl/header.tsx index c06b816120..7035ea5ea6 100644 --- a/web/app/components/datasets/create/website/firecrawl/header.tsx +++ b/web/app/components/datasets/create/website/firecrawl/header.tsx @@ -2,8 +2,8 @@ import type { FC } from 'react' import React from 'react' import { useTranslation } from 'react-i18next' -import { Settings01 } from '@/app/components/base/icons/src/vender/line/general' -import { BookOpen01 } from '@/app/components/base/icons/src/vender/line/education' +import { RiBookOpenLine, RiEqualizer2Line } from '@remixicon/react' +import Button from '@/app/components/base/button' const I18N_PREFIX = 'datasetCreation.stepOne.website' @@ -19,22 +19,23 @@ const Header: FC = ({ return (
-
{t(`${I18N_PREFIX}.firecrawlTitle`)}
-
-
- -
+
{t(`${I18N_PREFIX}.firecrawlTitle`)}
+
+
- - {t(`${I18N_PREFIX}.firecrawlDoc`)} + + {t(`${I18N_PREFIX}.firecrawlDoc`)}
) diff --git a/web/app/components/datasets/create/website/firecrawl/index.tsx b/web/app/components/datasets/create/website/firecrawl/index.tsx index aa4dffc174..5e3bc5c804 100644 --- a/web/app/components/datasets/create/website/firecrawl/index.tsx +++ b/web/app/components/datasets/create/website/firecrawl/index.tsx @@ -9,7 +9,6 @@ import Crawling from '../base/crawling' import ErrorMessage from '../base/error-message' import Header from './header' import Options from './options' -import cn from '@/utils/classnames' import { useModalContext } from '@/context/modal-context' import type { CrawlOptions, CrawlResultItem } from '@/models/datasets' import Toast from '@/app/components/base/toast' @@ -179,10 +178,10 @@ const FireCrawl: FC = ({ return (
-
+
diff --git a/web/app/components/datasets/create/website/firecrawl/options.tsx b/web/app/components/datasets/create/website/firecrawl/options.tsx index 8cc2c6757c..c1816b4e7b 100644 --- a/web/app/components/datasets/create/website/firecrawl/options.tsx +++ b/web/app/components/datasets/create/website/firecrawl/options.tsx @@ -36,6 +36,7 @@ const Options: FC = ({ label={t(`${I18N_PREFIX}.crawlSubPage`)} isChecked={payload.crawl_sub_pages} onChange={handleChange('crawl_sub_pages')} + labelClassName='text-[13px] leading-[16px] font-medium text-text-secondary' />
= ({ label={t(`${I18N_PREFIX}.extractOnlyMainContent`)} isChecked={payload.only_main_content} onChange={handleChange('only_main_content')} + labelClassName='text-[13px] leading-[16px] font-medium text-text-secondary' />
) diff --git a/web/app/components/datasets/create/website/index.tsx b/web/app/components/datasets/create/website/index.tsx index 58b7f5f2fd..5e9e4cee59 100644 --- a/web/app/components/datasets/create/website/index.tsx +++ b/web/app/components/datasets/create/website/index.tsx @@ -73,27 +73,29 @@ const Website: FC = ({ return (
-
+
{t('datasetCreation.stepOne.website.chooseProvider')}
- - {t(`${I18N_PREFIX}.jinaReaderDoc`)} + + {t(`${I18N_PREFIX}.jinaReaderDoc`)}
) diff --git a/web/app/components/datasets/create/website/jina-reader/index.tsx b/web/app/components/datasets/create/website/jina-reader/index.tsx index 1c133f935c..8a56915a6a 100644 --- a/web/app/components/datasets/create/website/jina-reader/index.tsx +++ b/web/app/components/datasets/create/website/jina-reader/index.tsx @@ -9,7 +9,6 @@ import Crawling from '../base/crawling' import ErrorMessage from '../base/error-message' import Header from './header' import Options from './options' -import cn from '@/utils/classnames' import { useModalContext } from '@/context/modal-context' import Toast from '@/app/components/base/toast' import { checkJinaReaderTaskStatus, createJinaReaderTask } from '@/service/datasets' @@ -192,10 +191,10 @@ const JinaReader: FC = ({ return (
-
+
diff --git a/web/app/components/datasets/create/website/jina-reader/mock-crawl-result.ts b/web/app/components/datasets/create/website/jina-reader/mock-crawl-result.ts deleted file mode 100644 index 8fd5e6636f..0000000000 --- a/web/app/components/datasets/create/website/jina-reader/mock-crawl-result.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { CrawlResultItem } from '@/models/datasets' - -const result: CrawlResultItem[] = [ - { - title: 'Start the frontend Docker container separately', - markdown: 'Markdown 1', - description: 'Description 1', - source_url: 'https://example.com/1', - }, - { - title: 'Advanced Tool Integration', - markdown: 'Markdown 2', - description: 'Description 2', - source_url: 'https://example.com/2', - }, - { - title: 'Local Source Code Start | English | Dify', - markdown: 'Markdown 3', - description: 'Description 3', - source_url: 'https://example.com/3', - }, -] - -export default result diff --git a/web/app/components/datasets/create/website/jina-reader/options.tsx b/web/app/components/datasets/create/website/jina-reader/options.tsx index 52cfaa8b3b..c06d8e8749 100644 --- a/web/app/components/datasets/create/website/jina-reader/options.tsx +++ b/web/app/components/datasets/create/website/jina-reader/options.tsx @@ -36,12 +36,14 @@ const Options: FC = ({ label={t(`${I18N_PREFIX}.crawlSubPage`)} isChecked={payload.crawl_sub_pages} onChange={handleChange('crawl_sub_pages')} + labelClassName='text-[13px] leading-[16px] font-medium text-text-secondary' />
= ({ return ( <> -
-
+
+
{currentProvider.emoji}
-
- {currentProvider.title} -
+
+ + {currentProvider.title} + + +
{currentProvider.description}
diff --git a/web/app/components/datasets/create/website/preview.tsx b/web/app/components/datasets/create/website/preview.tsx index 5180a83442..5800493bad 100644 --- a/web/app/components/datasets/create/website/preview.tsx +++ b/web/app/components/datasets/create/website/preview.tsx @@ -20,19 +20,19 @@ const WebsitePreview = ({ return (
-
+
{t('datasetCreation.stepOne.pagePreview')}
-
+
{payload.title}
-
{payload.source_url}
+
{payload.source_url}
-
-
{payload.markdown}
+
+
{payload.markdown}
) diff --git a/web/tailwind.config.js b/web/tailwind.config.js index af8d23c309..1fc55fd5ad 100644 --- a/web/tailwind.config.js +++ b/web/tailwind.config.js @@ -87,7 +87,6 @@ const config = { 'status-indicator-red-shadow': '0px 2px 6px 0px var(--color-components-badge-status-light-error-halo), 0px 0px 0px 1px var(--color-components-badge-status-light-border-outer)', 'status-indicator-blue-shadow': '0px 2px 6px 0px var(--color-components-badge-status-light-normal-halo), 0px 0px 0px 1px var(--color-components-badge-status-light-border-outer)', 'status-indicator-gray-shadow': '0px 1px 2px 0px var(--color-components-badge-status-light-disabled-halo), 0px 0px 0px 1px var(--color-components-badge-status-light-border-outer)', - 'emulate-border': '0 0 0 0.5px rgba(0, 0, 0, 0)', }, opacity: { 2: '0.02', @@ -108,6 +107,7 @@ const config = { 'dataset-option-card-purple-gradient': 'var(--color-dataset-option-card-purple-gradient)', 'dataset-option-card-orange-gradient': 'var(--color-dataset-option-card-orange-gradient)', 'dataset-chunk-list-mask-bg': 'var(--color-dataset-chunk-list-mask-bg)', + 'dataset-crawler-error-message-bg': 'var(--color-dataset-crawler-error-message-bg)', }, lineClamp: { '20': '20', diff --git a/web/themes/manual-dark.css b/web/themes/manual-dark.css index 6d4c5f3908..12013c33fa 100644 --- a/web/themes/manual-dark.css +++ b/web/themes/manual-dark.css @@ -32,4 +32,5 @@ html[data-theme="dark"] { rgba(24, 24, 27, 0.08) 0%, rgba(0, 0, 0, 0) 100% ); + --color-dataset-crawler-error-message-bg: linear-gradient(92deg, rgba(247, 144, 9, 0.30) 0%, rgba(0, 0, 0, 0.00) 100%); } diff --git a/web/themes/manual-light.css b/web/themes/manual-light.css index 501f9f1d1f..c00f645a7b 100644 --- a/web/themes/manual-light.css +++ b/web/themes/manual-light.css @@ -32,4 +32,5 @@ html[data-theme="light"] { rgba(200, 206, 218, 0.2) 0%, rgba(255, 255, 255, 0) 100% ); + --color-dataset-crawler-error-message-bg: linear-gradient(92deg, rgba(247, 144, 9, 0.25) 0%, rgba(255, 255, 255, 0.00) 100%); }