| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 'use client'import type { FC } from 'react'import React from 'react'import {  useCSVDownloader,} from 'react-papaparse'import { useTranslation } from 'react-i18next'import { Download02 as DownloadIcon } from '@/app/components/base/icons/src/vender/solid/general'export type ICSVDownloadProps = {  vars: { name: string }[]}const CSVDownload: FC<ICSVDownloadProps> = ({  vars,}) => {  const { t } = useTranslation()  const { CSVDownloader, Type } = useCSVDownloader()  const addQueryContentVars = [...vars, { name: t('share.generation.queryTitle') }]  const template = (() => {    const res: Record<string, string> = {}    addQueryContentVars.forEach((item) => {      res[item.name] = ''    })    return res  })()  return (    <div className='mt-6'>      <div className='text-sm text-gray-900 font-medium'>{t('share.generation.csvStructureTitle')}</div>      <div className='mt-2 max-h-[500px] overflow-auto'>        <table className='w-full border-separate border-spacing-0 border border-gray-200 rounded-lg text-xs'>          <thead className='text-gray-500'>            <tr>              {addQueryContentVars.map((item, i) => (                <td key={i} className='h-9 pl-4 border-b border-gray-200'>{item.name}</td>              ))}            </tr>          </thead>          <tbody className='text-gray-300'>            <tr>              {addQueryContentVars.map((item, i) => (                <td key={i} className='h-9 pl-4'>{item.name} {t('share.generation.field')}</td>              ))}            </tr>          </tbody>        </table>      </div>      <CSVDownloader        className="block mt-2 cursor-pointer"        type={Type.Link}        filename={'template'}        bom={true}        config={{          // delimiter: ';',        }}        data={[          template,        ]}      >        <div className='flex items-center h-[18px] space-x-1 text-[#155EEF] text-xs font-medium'>          <DownloadIcon className='w-3 h-3' />          <span>{t('share.generation.downloadTemplate')}</span>        </div>      </CSVDownloader>    </div>  )}export default React.memo(CSVDownload)
 |