mirror of
https://github.com/YFGaia/dify-plus.git
synced 2026-06-14 20:41:21 +08:00
81dbfd6748
# Conflicts: # README.md # api/.env.example # api/controllers/console/__init__.py # api/controllers/console/apikey.py # api/controllers/console/explore/completion.py # api/controllers/console/explore/workflow.py # api/controllers/service_api/app/workflow.py # api/controllers/service_api/wraps.py # api/controllers/web/workflow.py # api/core/model_runtime/model_providers/bedrock/get_bedrock_client.py # api/core/model_runtime/model_providers/bedrock/llm/llm.py # api/core/model_runtime/model_providers/openai_api_compatible/openai_api_compatible.yaml # api/core/model_runtime/model_providers/openai_api_compatible/text_embedding/text_embedding.py # api/models/model.py # api/poetry.lock # api/pyproject.toml # web/.env.example # web/Dockerfile # web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx # web/app/components/app/overview/appCard.tsx # web/app/components/base/chat/chat-with-history/chat-wrapper.tsx # web/app/components/base/chat/embedded-chatbot/index.tsx # web/app/components/base/mermaid/index.tsx # web/app/components/develop/index.tsx # web/app/components/develop/secret-key/secret-key-modal.tsx # web/app/components/explore/app-list/index.tsx # web/app/components/explore/item-operation/index.tsx # web/app/components/explore/sidebar/app-nav-item/index.tsx # web/app/components/explore/sidebar/index.tsx # web/app/components/header/account-setting/index.tsx # web/app/components/header/index.tsx # web/app/components/share/text-generation/index.tsx # web/app/components/tools/provider/detail.tsx # web/app/layout.tsx # web/package.json # web/service/base.ts # web/yarn.lock
57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
'use client'
|
|
import type { FC } from 'react'
|
|
import React from 'react'
|
|
import { useTranslation } from 'react-i18next' // add cancelSyncToAppTemplate to list extend
|
|
import cn from '@/utils/classnames'
|
|
import { ThumbsUp } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback'
|
|
|
|
export type ICategoryProps = {
|
|
className?: string
|
|
list: string[]
|
|
value: string
|
|
onChange: (value: string) => void
|
|
/**
|
|
* default value for search param 'category' in en
|
|
*/
|
|
allCategoriesEn: string
|
|
}
|
|
|
|
const Category: FC<ICategoryProps> = ({
|
|
className,
|
|
list,
|
|
value,
|
|
onChange,
|
|
allCategoriesEn,
|
|
}) => {
|
|
const { t } = useTranslation()
|
|
const isAllCategories = !list.includes(value as AppCategory) || value === allCategoriesEn
|
|
|
|
const itemClassName = (isSelected: boolean) => cn(
|
|
'flex h-[32px] cursor-pointer items-center rounded-lg border-[0.5px] border-transparent px-3 py-[7px] font-medium leading-[18px] text-gray-700 hover:bg-gray-200',
|
|
isSelected && 'border-gray-200 bg-white text-primary-600 shadow-xs hover:bg-white',
|
|
)
|
|
|
|
return (
|
|
<div className={cn(className, 'flex flex-wrap space-x-1 text-[13px]')}>
|
|
<div
|
|
className={itemClassName(isAllCategories)}
|
|
onClick={() => onChange(allCategoriesEn)}
|
|
>
|
|
<ThumbsUp className='mr-1 h-3.5 w-3.5' />
|
|
{t('explore.apps.allCategories')}
|
|
</div>
|
|
{list.filter(name => name !== allCategoriesEn).map(name => (
|
|
<div
|
|
key={name}
|
|
className={itemClassName(name === value)}
|
|
onClick={() => onChange(name)}
|
|
>
|
|
{name}
|
|
</div>
|
|
))}
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default React.memo(Category)
|