ImageTools.jsx 2.35 KB
Newer Older
fisherdaddy's avatar
fisherdaddy committed
1 2 3 4 5 6 7
import React from 'react';
import { Link } from 'react-router-dom';
import { useTranslation } from '../js/i18n';
import SEO from '../components/SEO';

const tools = [
  { id: 'handwrite', icon: '/assets/icon/handwrite.png', path: '/handwriting' },
8
  { id: 'quoteCard', icon: '/assets/icon/quotecard.png', path: '/quote-card' },
9 10
  { id: 'markdown2image', icon: '/assets/icon/markdown2image.png', path: '/markdown-to-image' },
  { id: 'latex2image', icon: '/assets/icon/latex2image.png', path: '/latex-to-image' },
11
  { id: 'subtitleGenerator', icon: '/assets/icon/subtitle2image.png', path: '/subtitle-to-image' },
12
  { id: 'imageCompressor', icon: '/assets/icon/image-compressor.png', path: '/image-compressor' },
13
  { id: 'imageWatermark', icon: '/assets/icon/image-watermark.png', path: '/image-watermark' },
14
  { id: 'imageBackgroundRemover', icon: '/assets/icon/image-background-remover.png', path: '/background-remover' },
15
  { id: 'textBehindImage', icon: '/assets/icon/text-behind-image.png', path: '/text-behind-image' },
fisherdaddy's avatar
fisherdaddy committed
16 17
 ];

18
 const ImageTools = () => {
fisherdaddy's avatar
fisherdaddy committed
19 20 21 22 23
  const { t } = useTranslation();

  return (
    <>
      <SEO
fisherdaddy's avatar
fisherdaddy committed
24 25
        title={t('image-tools.title')}
        description={t('image-tools.description')}
fisherdaddy's avatar
fisherdaddy committed
26
      />
27 28 29
      <main className="container mx-auto px-4 pt-16 pb-8 min-h-screen">
        <section className="mt-8 w-full">
          <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 px-4 w-full">
fisherdaddy's avatar
fisherdaddy committed
30
            {tools.map(tool => (
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
              <Link 
                to={tool.path} 
                key={tool.id} 
                className="flex items-center p-4 bg-white/10 backdrop-blur-md rounded-xl border border-white/10 transition-all hover:translate-y-[-2px] hover:shadow-lg hover:bg-white/15"
              >
                <img 
                  src={tool.icon} 
                  alt={`${t(`tools.${tool.id}.title`)} icon`} 
                  className="w-12 h-12 object-contain mr-4" 
                  loading="lazy" 
                />
                <div className="flex-1 min-w-0">
                  <h3 className="text-lg font-semibold mb-1 text-gray-800">{t(`tools.${tool.id}.title`)}</h3>
                  <p className="text-sm text-gray-600 line-clamp-2">{t(`tools.${tool.id}.description`)}</p>
                </div>
              </Link>
fisherdaddy's avatar
fisherdaddy committed
47 48 49 50 51 52 53 54 55
            ))}
          </div>
        </section>
      </main>
    </>
  );
};

export default ImageTools;