TemplateList.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. /* eslint-disable react/prop-types */
  2. interface Template {
  3. id: string;
  4. title: string;
  5. content: string;
  6. }
  7. interface TemplateListProps {
  8. templates: Template[];
  9. onTemplateSelect: (content: string) => void;
  10. isDarkMode?: boolean;
  11. }
  12. const TemplateList: React.FC<TemplateListProps> = ({ templates, onTemplateSelect, isDarkMode = false }) => {
  13. return (
  14. <div className="p-4">
  15. <h3 className={`mb-3 text-sm font-medium ${isDarkMode ? 'text-gray-200' : 'text-gray-700'}`}>Templates</h3>
  16. <div className="grid grid-cols-1 gap-3 sm:grid-cols-2">
  17. {templates.map(template => (
  18. <button
  19. key={template.id}
  20. onClick={() => onTemplateSelect(template.content)}
  21. className={`rounded-lg p-3 text-left transition-colors ${
  22. isDarkMode ? 'bg-slate-800 text-gray-200 hover:bg-slate-700' : 'bg-white text-gray-700 hover:bg-sky-50'
  23. } border ${isDarkMode ? 'border-slate-700' : 'border-sky-100'}`}>
  24. <div className="text-sm font-medium">{template.title}</div>
  25. </button>
  26. ))}
  27. </div>
  28. </div>
  29. );
  30. };
  31. export default TemplateList;