| | |
| | | import React, { type FC } from 'react' |
| | | import { RiArchive2Line, RiCheckboxCircleLine, RiCloseCircleLine, RiDeleteBinLine, RiDraftLine } from '@remixicon/react' |
| | | import { RiArchive2Line, RiCheckboxCircleLine, RiCloseCircleLine, RiDeleteBinLine } from '@remixicon/react' |
| | | import { useTranslation } from 'react-i18next' |
| | | import { useBoolean } from 'ahooks' |
| | | import Divider from '@/app/components/base/divider' |
| | |
| | | onBatchDisable: () => void |
| | | onBatchDelete: () => Promise<void> |
| | | onArchive?: () => void |
| | | onEditMetadata?: () => void |
| | | onCancel: () => void |
| | | } |
| | | |
| | |
| | | onBatchDisable, |
| | | onArchive, |
| | | onBatchDelete, |
| | | onEditMetadata, |
| | | onCancel, |
| | | }) => { |
| | | const { t } = useTranslation() |
| | |
| | | } |
| | | return ( |
| | | <div className={classNames('w-full flex justify-center gap-x-2', className)}> |
| | | <div className='flex items-center gap-x-1 rounded-[10px] border border-components-actionbar-border-accent bg-components-actionbar-bg-accent p-1 shadow-xl shadow-shadow-shadow-5 backdrop-blur-[5px]'> |
| | | <div className='inline-flex items-center gap-x-2 py-1 pl-2 pr-3'> |
| | | <span className='flex h-5 w-5 items-center justify-center rounded-md bg-text-accent px-1 py-0.5 text-xs font-medium text-text-primary-on-surface'> |
| | | <div className='flex items-center gap-x-1 p-1 rounded-[10px] bg-components-actionbar-bg-accent border border-components-actionbar-border-accent shadow-xl shadow-shadow-shadow-5 backdrop-blur-[5px]'> |
| | | <div className='inline-flex items-center gap-x-2 pl-2 pr-3 py-1'> |
| | | <span className='w-5 h-5 flex items-center justify-center px-1 py-0.5 bg-text-accent rounded-md text-text-primary-on-surface text-xs font-medium'> |
| | | {selectedIds.length} |
| | | </span> |
| | | <span className='text-[13px] font-semibold leading-[16px] text-text-accent'>{t(`${i18nPrefix}.selected`)}</span> |
| | | <span className='text-text-accent text-[13px] font-semibold leading-[16px]'>{t(`${i18nPrefix}.selected`)}</span> |
| | | </div> |
| | | <Divider type='vertical' className='mx-0.5 h-3.5 bg-divider-regular' /> |
| | | <div className='flex items-center gap-x-0.5 px-3 py-2'> |
| | | <RiCheckboxCircleLine className='h-4 w-4 text-components-button-ghost-text' /> |
| | | <button type='button' className='px-0.5 text-[13px] font-medium leading-[16px] text-components-button-ghost-text' onClick={onBatchEnable}> |
| | | <RiCheckboxCircleLine className='w-4 h-4 text-components-button-ghost-text' /> |
| | | <button type='button' className='px-0.5 text-components-button-ghost-text text-[13px] font-medium leading-[16px]' onClick={onBatchEnable}> |
| | | {t(`${i18nPrefix}.enable`)} |
| | | </button> |
| | | </div> |
| | | <div className='flex items-center gap-x-0.5 px-3 py-2'> |
| | | <RiCloseCircleLine className='h-4 w-4 text-components-button-ghost-text' /> |
| | | <button type='button' className='px-0.5 text-[13px] font-medium leading-[16px] text-components-button-ghost-text' onClick={onBatchDisable}> |
| | | <RiCloseCircleLine className='w-4 h-4 text-components-button-ghost-text' /> |
| | | <button type='button' className='px-0.5 text-components-button-ghost-text text-[13px] font-medium leading-[16px]' onClick={onBatchDisable}> |
| | | {t(`${i18nPrefix}.disable`)} |
| | | </button> |
| | | </div> |
| | | {onEditMetadata && ( |
| | | <div className='flex items-center gap-x-0.5 px-3 py-2'> |
| | | <RiDraftLine className='h-4 w-4 text-components-button-ghost-text' /> |
| | | <button type='button' className='px-0.5 text-[13px] font-medium leading-[16px] text-components-button-ghost-text' onClick={onEditMetadata}> |
| | | {t('dataset.metadata.metadata')} |
| | | </button> |
| | | </div> |
| | | )} |
| | | |
| | | {onArchive && ( |
| | | <div className='flex items-center gap-x-0.5 px-3 py-2'> |
| | | <RiArchive2Line className='h-4 w-4 text-components-button-ghost-text' /> |
| | | <button type='button' className='px-0.5 text-[13px] font-medium leading-[16px] text-components-button-ghost-text' onClick={onArchive}> |
| | | <RiArchive2Line className='w-4 h-4 text-components-button-ghost-text' /> |
| | | <button type='button' className='px-0.5 text-components-button-ghost-text text-[13px] font-medium leading-[16px]' onClick={onArchive}> |
| | | {t(`${i18nPrefix}.archive`)} |
| | | </button> |
| | | </div> |
| | | )} |
| | | <div className='flex items-center gap-x-0.5 px-3 py-2'> |
| | | <RiDeleteBinLine className='h-4 w-4 text-components-button-destructive-ghost-text' /> |
| | | <button type='button' className='px-0.5 text-[13px] font-medium leading-[16px] text-components-button-destructive-ghost-text' onClick={showDeleteConfirm}> |
| | | <RiDeleteBinLine className='w-4 h-4 text-components-button-destructive-ghost-text' /> |
| | | <button type='button' className='px-0.5 text-components-button-destructive-ghost-text text-[13px] font-medium leading-[16px]' onClick={showDeleteConfirm}> |
| | | {t(`${i18nPrefix}.delete`)} |
| | | </button> |
| | | </div> |
| | | |
| | | <Divider type='vertical' className='mx-0.5 h-3.5 bg-divider-regular' /> |
| | | <button type='button' className='px-3.5 py-2 text-[13px] font-medium leading-[16px] text-components-button-ghost-text' onClick={onCancel}> |
| | | <button type='button' className='px-3.5 py-2 text-components-button-ghost-text text-[13px] font-medium leading-[16px]' onClick={onCancel}> |
| | | {t(`${i18nPrefix}.cancel`)} |
| | | </button> |
| | | </div> |