This commit is contained in:
Joel
2026-03-09 10:14:23 +08:00
1301 changed files with 30844 additions and 12184 deletions

View File

@ -80,7 +80,7 @@ const ConfigParamModal: FC<Props> = ({
onClose={onHide}
className="!mt-14 !w-[640px] !max-w-none !p-6"
>
<div className="title-2xl-semi-bold mb-2 text-text-primary">
<div className="mb-2 text-text-primary title-2xl-semi-bold">
{t(`initSetup.${isInit ? 'title' : 'configTitle'}`, { ns: 'appAnnotation' })}
</div>

View File

@ -11,10 +11,10 @@ export const Item: FC<{ title: string, tooltip: string, children: React.JSX.Elem
return (
<div>
<div className="mb-1 flex items-center space-x-1">
<div className="system-sm-semibold py-1 text-text-secondary">{title}</div>
<div className="py-1 text-text-secondary system-sm-semibold">{title}</div>
<Tooltip
popupContent={
<div className="system-sm-regular max-w-[200px] text-text-secondary">{tooltip}</div>
<div className="max-w-[200px] text-text-secondary system-sm-regular">{tooltip}</div>
}
/>
</div>

View File

@ -92,20 +92,20 @@ const AnnotationReply = ({
>
<>
{!annotationReply?.enabled && (
<div className="system-xs-regular line-clamp-2 min-h-8 text-text-tertiary">{t('feature.annotation.description', { ns: 'appDebug' })}</div>
<div className="line-clamp-2 min-h-8 text-text-tertiary system-xs-regular">{t('feature.annotation.description', { ns: 'appDebug' })}</div>
)}
{!!annotationReply?.enabled && (
<>
{!isHovering && (
<div className="flex items-center gap-4 pt-0.5">
<div className="">
<div className="system-2xs-medium-uppercase mb-0.5 text-text-tertiary">{t('feature.annotation.scoreThreshold.title', { ns: 'appDebug' })}</div>
<div className="system-xs-regular text-text-secondary">{annotationReply.score_threshold || '-'}</div>
<div className="mb-0.5 text-text-tertiary system-2xs-medium-uppercase">{t('feature.annotation.scoreThreshold.title', { ns: 'appDebug' })}</div>
<div className="text-text-secondary system-xs-regular">{annotationReply.score_threshold || '-'}</div>
</div>
<div className="h-[27px] w-px rotate-12 bg-divider-subtle"></div>
<div className="">
<div className="system-2xs-medium-uppercase mb-0.5 text-text-tertiary">{t('modelProvider.embeddingModel.key', { ns: 'common' })}</div>
<div className="system-xs-regular text-text-secondary">{annotationReply.embedding_model?.embedding_model_name}</div>
<div className="mb-0.5 text-text-tertiary system-2xs-medium-uppercase">{t('modelProvider.embeddingModel.key', { ns: 'common' })}</div>
<div className="text-text-secondary system-xs-regular">{annotationReply.embedding_model?.embedding_model_name}</div>
</div>
</div>
)}

View File

@ -27,7 +27,7 @@ const Slider: React.FC<ISliderProps> = ({ className, max, min, step, value, disa
renderThumb={(props, state) => (
<div {...props}>
<div className="relative h-full w-full">
<div className="system-sm-semibold absolute left-[50%] top-[-16px] translate-x-[-50%] text-text-primary">
<div className="absolute left-[50%] top-[-16px] translate-x-[-50%] text-text-primary system-sm-semibold">
{(state.valueNow / 100).toFixed(2)}
</div>
</div>

View File

@ -28,7 +28,7 @@ const ScoreSlider: FC<Props> = ({
onChange={onChange}
/>
</div>
<div className="system-xs-semibold-uppercase mt-[10px] flex items-center justify-between">
<div className="mt-[10px] flex items-center justify-between system-xs-semibold-uppercase">
<div className="flex space-x-1 text-util-colors-cyan-cyan-500">
<div>0.8</div>
<div>·</div>

View File

@ -95,12 +95,12 @@ const ConversationOpener = ({
>
<>
{!opening?.enabled && (
<div className="system-xs-regular line-clamp-2 min-h-8 text-text-tertiary">{t('feature.conversationOpener.description', { ns: 'appDebug' })}</div>
<div className="line-clamp-2 min-h-8 text-text-tertiary system-xs-regular">{t('feature.conversationOpener.description', { ns: 'appDebug' })}</div>
)}
{!!opening?.enabled && (
<>
{!isHovering && (
<div className="system-xs-regular line-clamp-2 min-h-8 text-text-tertiary">
<div className="line-clamp-2 min-h-8 text-text-tertiary system-xs-regular">
{opening.opening_statement || t('openingStatement.placeholder', { ns: 'appDebug' })}
</div>
)}

View File

@ -43,7 +43,7 @@ const FeatureBar = ({
{noFeatureEnabled && (
<div className="flex cursor-pointer items-end gap-1" onClick={() => onFeatureBarClick?.(true)}>
<RiApps2AddLine className="h-3.5 w-3.5 text-text-accent" />
<div className="body-xs-medium text-text-accent">{t('feature.bar.empty', { ns: 'appDebug' })}</div>
<div className="text-text-accent body-xs-medium">{t('feature.bar.empty', { ns: 'appDebug' })}</div>
<RiArrowRightLine className="h-3.5 w-3.5 text-text-accent" />
</div>
)}
@ -134,7 +134,7 @@ const FeatureBar = ({
</Tooltip>
)}
</div>
<div className="body-xs-regular grow text-text-tertiary">{t('feature.bar.enableText', { ns: 'appDebug' })}</div>
<div className="grow text-text-tertiary body-xs-regular">{t('feature.bar.enableText', { ns: 'appDebug' })}</div>
{
!hideEditEntrance && (
<Button className="shrink-0" variant="ghost-accent" size="small" onClick={() => onFeatureBarClick?.(true)}>

View File

@ -38,7 +38,7 @@ const FeatureCard = ({
>
<div className="mb-2 flex items-center gap-2">
{icon}
<div className="system-sm-semibold flex grow items-center text-text-secondary">
<div className="flex grow items-center text-text-secondary system-sm-semibold">
{title}
{tooltip && (
<Tooltip
@ -51,7 +51,7 @@ const FeatureCard = ({
<Switch disabled={disabled} className="shrink-0" onChange={state => onChange?.(state)} value={value} />
</div>
{description && (
<div className="system-xs-regular line-clamp-2 min-h-8 text-text-tertiary">{description}</div>
<div className="line-clamp-2 min-h-8 text-text-tertiary system-xs-regular">{description}</div>
)}
{children}
</div>

View File

@ -64,20 +64,20 @@ const FileUpload = ({
>
<>
{!file?.enabled && (
<div className="system-xs-regular line-clamp-2 min-h-8 text-text-tertiary">{t('feature.fileUpload.description', { ns: 'appDebug' })}</div>
<div className="line-clamp-2 min-h-8 text-text-tertiary system-xs-regular">{t('feature.fileUpload.description', { ns: 'appDebug' })}</div>
)}
{file?.enabled && (
<>
{!isHovering && !modalOpen && (
<div className="flex items-center gap-4 pt-0.5">
<div className="">
<div className="system-2xs-medium-uppercase mb-0.5 text-text-tertiary">{t('feature.fileUpload.supportedTypes', { ns: 'appDebug' })}</div>
<div className="system-xs-regular text-text-secondary">{supportedTypes}</div>
<div className="mb-0.5 text-text-tertiary system-2xs-medium-uppercase">{t('feature.fileUpload.supportedTypes', { ns: 'appDebug' })}</div>
<div className="text-text-secondary system-xs-regular">{supportedTypes}</div>
</div>
<div className="h-[27px] w-px rotate-12 bg-divider-subtle"></div>
<div className="">
<div className="system-2xs-medium-uppercase mb-0.5 text-text-tertiary">{t('feature.fileUpload.numberLimit', { ns: 'appDebug' })}</div>
<div className="system-xs-regular text-text-secondary">{file?.number_limits}</div>
<div className="mb-0.5 text-text-tertiary system-2xs-medium-uppercase">{t('feature.fileUpload.numberLimit', { ns: 'appDebug' })}</div>
<div className="text-text-secondary system-xs-regular">{file?.number_limits}</div>
</div>
</div>
)}

View File

@ -72,20 +72,20 @@ const FileUpload = ({
>
<>
{!file?.enabled && (
<div className="system-xs-regular line-clamp-2 min-h-8 text-text-tertiary">{t('feature.imageUpload.description', { ns: 'appDebug' })}</div>
<div className="line-clamp-2 min-h-8 text-text-tertiary system-xs-regular">{t('feature.imageUpload.description', { ns: 'appDebug' })}</div>
)}
{file?.enabled && (
<>
{!isHovering && !modalOpen && (
<div className="flex items-center gap-4 pt-0.5">
<div className="">
<div className="system-2xs-medium-uppercase mb-0.5 text-text-tertiary">{t('feature.imageUpload.supportedTypes', { ns: 'appDebug' })}</div>
<div className="system-xs-regular text-text-secondary">{supportedTypes}</div>
<div className="mb-0.5 text-text-tertiary system-2xs-medium-uppercase">{t('feature.imageUpload.supportedTypes', { ns: 'appDebug' })}</div>
<div className="text-text-secondary system-xs-regular">{supportedTypes}</div>
</div>
<div className="h-[27px] w-px rotate-12 bg-divider-subtle"></div>
<div className="">
<div className="system-2xs-medium-uppercase mb-0.5 text-text-tertiary">{t('feature.imageUpload.numberLimit', { ns: 'appDebug' })}</div>
<div className="system-xs-regular text-text-secondary">{file?.number_limits}</div>
<div className="mb-0.5 text-text-tertiary system-2xs-medium-uppercase">{t('feature.imageUpload.numberLimit', { ns: 'appDebug' })}</div>
<div className="text-text-secondary system-xs-regular">{file?.number_limits}</div>
</div>
</div>
)}

View File

@ -57,8 +57,8 @@ const NewFeaturePanel = ({
{/* header */}
<div className="flex shrink-0 justify-between p-4 pb-3">
<div>
<div className="system-xl-semibold text-text-primary">{t('common.features', { ns: 'workflow' })}</div>
<div className="body-xs-regular text-text-tertiary">{t('common.featuresDescription', { ns: 'workflow' })}</div>
<div className="text-text-primary system-xl-semibold">{t('common.features', { ns: 'workflow' })}</div>
<div className="text-text-tertiary body-xs-regular">{t('common.featuresDescription', { ns: 'workflow' })}</div>
</div>
<div className="h-8 w-8 cursor-pointer p-2" onClick={onClose}><RiCloseLine className="h-4 w-4 text-text-tertiary" /></div>
</div>
@ -71,7 +71,7 @@ const NewFeaturePanel = ({
<div className="mr-0.5 shrink-0 p-0.5">
<RiInformation2Fill className="h-5 w-5 text-text-accent" />
</div>
<div className="system-xs-medium p-1 text-text-primary">
<div className="p-1 text-text-primary system-xs-medium">
<span>{isChatMode ? t('common.fileUploadTip', { ns: 'workflow' }) : t('common.ImageUploadLegacyTip', { ns: 'workflow' })}</span>
</div>
</div>

View File

@ -3,7 +3,7 @@ import { fireEvent, render, screen } from '@testing-library/react'
import ModerationSettingModal from '../moderation-setting-modal'
const mockNotify = vi.fn()
vi.mock('@/app/components/base/toast', () => ({
vi.mock('@/app/components/base/toast/context', () => ({
useToastContext: () => ({ notify: mockNotify }),
}))

View File

@ -138,20 +138,20 @@ const Moderation = ({
>
<>
{!moderation?.enabled && (
<div className="system-xs-regular line-clamp-2 min-h-8 text-text-tertiary">{t('feature.moderation.description', { ns: 'appDebug' })}</div>
<div className="line-clamp-2 min-h-8 text-text-tertiary system-xs-regular">{t('feature.moderation.description', { ns: 'appDebug' })}</div>
)}
{!!moderation?.enabled && (
<>
{!isHovering && (
<div className="flex items-center gap-4 pt-0.5">
<div className="">
<div className="system-2xs-medium-uppercase mb-0.5 text-text-tertiary">{t('feature.moderation.modal.provider.title', { ns: 'appDebug' })}</div>
<div className="system-xs-regular text-text-secondary">{providerContent}</div>
<div className="mb-0.5 text-text-tertiary system-2xs-medium-uppercase">{t('feature.moderation.modal.provider.title', { ns: 'appDebug' })}</div>
<div className="text-text-secondary system-xs-regular">{providerContent}</div>
</div>
<div className="h-[27px] w-px rotate-12 bg-divider-subtle"></div>
<div className="">
<div className="system-2xs-medium-uppercase mb-0.5 text-text-tertiary">{t('feature.moderation.contentEnableLabel', { ns: 'appDebug' })}</div>
<div className="system-xs-regular text-text-secondary">{enableContent}</div>
<div className="mb-0.5 text-text-tertiary system-2xs-medium-uppercase">{t('feature.moderation.contentEnableLabel', { ns: 'appDebug' })}</div>
<div className="text-text-secondary system-xs-regular">{enableContent}</div>
</div>
</div>
)}

View File

@ -7,7 +7,7 @@ import { useTranslation } from 'react-i18next'
import Button from '@/app/components/base/button'
import Divider from '@/app/components/base/divider'
import Modal from '@/app/components/base/modal'
import { useToastContext } from '@/app/components/base/toast'
import { useToastContext } from '@/app/components/base/toast/context'
import ApiBasedExtensionSelector from '@/app/components/header/account-setting/api-based-extension-page/selector'
import { ACCOUNT_SETTING_TAB } from '@/app/components/header/account-setting/constants'
import { CustomConfigurationStatusEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'

View File

@ -63,25 +63,25 @@ const TextToSpeech = ({
>
<>
{!features.text2speech?.enabled && (
<div className="system-xs-regular line-clamp-2 min-h-8 text-text-tertiary">{t('feature.textToSpeech.description', { ns: 'appDebug' })}</div>
<div className="line-clamp-2 min-h-8 text-text-tertiary system-xs-regular">{t('feature.textToSpeech.description', { ns: 'appDebug' })}</div>
)}
{!!features.text2speech?.enabled && (
<>
{!isHovering && !modalOpen && (
<div className="flex items-center gap-4 pt-0.5">
<div className="">
<div className="system-2xs-medium-uppercase mb-0.5 text-text-tertiary">{t('voice.voiceSettings.language', { ns: 'appDebug' })}</div>
<div className="system-xs-regular text-text-secondary">{languageInfo?.name || '-'}</div>
<div className="mb-0.5 text-text-tertiary system-2xs-medium-uppercase">{t('voice.voiceSettings.language', { ns: 'appDebug' })}</div>
<div className="text-text-secondary system-xs-regular">{languageInfo?.name || '-'}</div>
</div>
<div className="h-[27px] w-px rotate-12 bg-divider-subtle"></div>
<div className="">
<div className="system-2xs-medium-uppercase mb-0.5 text-text-tertiary">{t('voice.voiceSettings.voice', { ns: 'appDebug' })}</div>
<div className="system-xs-regular text-text-secondary">{features.text2speech?.voice || t('voice.defaultDisplay', { ns: 'appDebug' })}</div>
<div className="mb-0.5 text-text-tertiary system-2xs-medium-uppercase">{t('voice.voiceSettings.voice', { ns: 'appDebug' })}</div>
<div className="text-text-secondary system-xs-regular">{features.text2speech?.voice || t('voice.defaultDisplay', { ns: 'appDebug' })}</div>
</div>
<div className="h-[27px] w-px rotate-12 bg-divider-subtle"></div>
<div className="">
<div className="system-2xs-medium-uppercase mb-0.5 text-text-tertiary">{t('voice.voiceSettings.autoPlay', { ns: 'appDebug' })}</div>
<div className="system-xs-regular text-text-secondary">{features.text2speech?.autoPlay === TtsAutoPlay.enabled ? t('voice.voiceSettings.autoPlayEnabled', { ns: 'appDebug' }) : t('voice.voiceSettings.autoPlayDisabled', { ns: 'appDebug' })}</div>
<div className="mb-0.5 text-text-tertiary system-2xs-medium-uppercase">{t('voice.voiceSettings.autoPlay', { ns: 'appDebug' })}</div>
<div className="text-text-secondary system-xs-regular">{features.text2speech?.autoPlay === TtsAutoPlay.enabled ? t('voice.voiceSettings.autoPlayEnabled', { ns: 'appDebug' }) : t('voice.voiceSettings.autoPlayDisabled', { ns: 'appDebug' })}</div>
</div>
</div>
)}