import React, { useState, useMemo } from 'react'; import { Wrench, Search, Grid, List, Star, Sparkles } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; import { CardGrid } from '../components/CardGrid'; import ToolCard from '../components/ToolCard'; import { TOOLS_DATA, TOOL_CATEGORIES, searchTools } from '../data/tools'; import { Tool, ToolCategory } from '../types/tool'; /** * 便捷小工具页面 * 遵循 Tauri 开发规范和 UI/UX 设计标准 * 使用卡片列表展示工具,点击进入详情页 */ const Tools: React.FC = () => { const navigate = useNavigate(); // 工具列表状态 const [searchQuery, setSearchQuery] = useState(''); const [selectedCategory, setSelectedCategory] = useState(null); const [showNewOnly, setShowNewOnly] = useState(false); const [showPopularOnly, setShowPopularOnly] = useState(false); const [viewMode, setViewMode] = useState<'grid' | 'list'>('grid'); // 根据筛选条件过滤工具列表 const filteredTools = useMemo(() => { let result = [...TOOLS_DATA]; // 搜索过滤 if (searchQuery) { result = searchTools(searchQuery); } // 分类过滤 if (selectedCategory) { result = result.filter(tool => tool.category === selectedCategory); } // 新功能过滤 if (showNewOnly) { result = result.filter(tool => tool.isNew); } // 热门工具过滤 if (showPopularOnly) { result = result.filter(tool => tool.isPopular); } return result; }, [searchQuery, selectedCategory, showNewOnly, showPopularOnly]); // 处理工具卡片点击 const handleToolClick = (tool: Tool) => { navigate(tool.route); }; // 清除所有筛选条件 const clearFilters = () => { setSearchQuery(''); setSelectedCategory(null); setShowNewOnly(false); setShowPopularOnly(false); }; return (
{/* 页面标题 */}

便捷小工具

专业的开发和数据处理工具集合

{/* 视图切换 */}
{/* 搜索和筛选区域 */}
{/* 搜索框 */}
setSearchQuery(e.target.value)} className="w-full pl-10 pr-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-primary-500 focus:border-primary-500 transition-all duration-200 bg-gray-50 hover:bg-white" />
{/* 分类筛选 */}
{TOOL_CATEGORIES.map((category) => ( ))}
{/* 快速筛选 */}
{/* 筛选结果统计 */}
找到 {filteredTools.length} 个工具 {filteredTools.length !== TOOLS_DATA.length && ( (共 {TOOLS_DATA.length} 个) )}
{(searchQuery || selectedCategory || showNewOnly || showPopularOnly) && ( )}
{/* 工具卡片列表 */}
( )} loading={false} searchable={false} sortable={false} viewModes={[viewMode]} defaultViewMode={viewMode} gridCols={{ sm: 1, md: 2, lg: 3, xl: 3, '2xl': 4 }} gap={6} emptyText="没有找到匹配的工具" emptyComponent={

没有找到匹配的工具

尝试调整搜索条件或筛选器,或者浏览所有可用的工具

} />
); }; export default Tools;