'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] 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)