| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | import type { FC, ReactNode } from 'react'import React, { memo } from 'react'import Card from '@/app/components/plugins/card'import Modal from '@/app/components/base/modal'import Button from '@/app/components/base/button'import type { Plugin } from '../types'import type { UseMutationResult } from '@tanstack/react-query'type Props = {  plugin: Plugin  onCancel: () => void  mutation: Pick<UseMutationResult, 'isSuccess' | 'isPending'>  mutate: () => void  confirmButtonText: ReactNode  cancelButtonText: ReactNode  modelTitle: ReactNode  description: ReactNode  cardTitleLeft: ReactNode  modalBottomLeft?: ReactNode}const PluginMutationModal: FC<Props> = ({  plugin,  onCancel,  mutation,  confirmButtonText,  cancelButtonText,  modelTitle,  description,  cardTitleLeft,  mutate,  modalBottomLeft,}: Props) => {  return (    <Modal      isShow={true}      onClose={onCancel}      className='min-w-[560px]'      closable      title={modelTitle}    >      <div className='mt-3 mb-2 text-text-secondary system-md-regular'>        {description}      </div>      <div className='flex p-2 items-start content-start gap-1 self-stretch flex-wrap rounded-2xl bg-background-section-burn'>        <Card          installed={mutation.isSuccess}          payload={plugin}          className='w-full'          titleLeft={cardTitleLeft}        />      </div>      <div className='flex pt-5 items-center gap-2 self-stretch'>        <div>          {modalBottomLeft}        </div>        <div className='ml-auto flex gap-2'>          {!mutation.isPending && (            <Button onClick={onCancel}>              {cancelButtonText}            </Button>          )}          <Button            variant='primary'            loading={mutation.isPending}            onClick={mutate}            disabled={mutation.isPending}          >            {confirmButtonText}          </Button>        </div>      </div>    </Modal>  )}PluginMutationModal.displayName = 'PluginMutationModal'export default memo(PluginMutationModal)
 |