51 lines
1.5 KiB
TypeScript
Raw Normal View History

2025-06-19 18:13:56 +08:00
'use client'
import type { FC } from 'react'
import React from 'react'
2025-06-23 18:09:32 +08:00
import NoPluginSelected from './no-plugin-selected'
2025-06-24 16:29:54 +08:00
import { AUTO_UPDATE_MODE } from './types'
2025-06-23 18:31:21 +08:00
import PluginsSelected from './plugins-selected'
import Button from '@/app/components/base/button'
import { RiAddLine } from '@remixicon/react'
2025-06-24 16:29:54 +08:00
import { useTranslation } from 'react-i18next'
const i18nPrefix = 'plugin.autoUpdate'
2025-06-19 18:13:56 +08:00
type Props = {
2025-06-23 18:31:21 +08:00
updateMode: AUTO_UPDATE_MODE
2025-06-19 18:13:56 +08:00
value: string[] // plugin ids
onChange: (value: string[]) => void
}
const PluginsPicker: FC<Props> = ({
2025-06-23 18:09:32 +08:00
updateMode,
2025-06-19 18:13:56 +08:00
value,
onChange,
}) => {
2025-06-24 16:29:54 +08:00
const { t } = useTranslation()
2025-06-19 18:13:56 +08:00
const hasSelected = value.length > 0
2025-06-24 16:29:54 +08:00
const isExcludeMode = updateMode === AUTO_UPDATE_MODE.exclude
2025-06-19 18:13:56 +08:00
return (
2025-06-23 18:09:32 +08:00
<div className='mt-2 rounded-[10px] bg-background-section-burn p-2.5'>
2025-06-19 18:13:56 +08:00
{hasSelected ? (
2025-06-23 18:31:21 +08:00
<div className='flex justify-between text-text-tertiary'>
2025-06-24 16:29:54 +08:00
<div className='system-xs-medium'>{t(`${i18nPrefix}.${isExcludeMode ? 'excludeUpdate' : 'partialUPdate'}`, { num: value.length })}</div>
2025-06-23 18:31:21 +08:00
<div className='system-xs-medium cursor-pointer'>Clear all</div>
2025-06-19 18:13:56 +08:00
</div>
) : (
2025-06-23 18:09:32 +08:00
<NoPluginSelected updateMode={updateMode} />
2025-06-19 18:13:56 +08:00
)}
2025-06-23 18:09:32 +08:00
2025-06-23 18:31:21 +08:00
<PluginsSelected
className='mt-2'
plugins={value}
/>
<Button className='mt-2 w-full' size='small' variant='secondary-accent'>
<RiAddLine className='size-3.5' />
Select
</Button>
2025-06-19 18:13:56 +08:00
</div>
)
}
export default React.memo(PluginsPicker)