import React, { useState } from 'react' import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Badge } from '@/components/ui/badge' interface Template { id: string name: string description: string type: 'memory' | 'task' category: string content: string tags: string[] icon: string variables?: { name: string placeholder: string required: boolean }[] } interface TemplateSelectorProps { open: boolean onOpenChange: (open: boolean) => void type: 'memory' | 'task' onSelectTemplate: (template: Template, variables: Record) => void } const MEMORY_TEMPLATES: Template[] = [ { id: 'meeting-notes', name: 'Meeting Notes', description: 'Structure for recording meeting discussions and action items', type: 'memory', category: 'work', icon: '🤝', tags: ['meeting', 'notes', 'work'], content: `# Meeting Notes - {{meeting_title}} **Date:** {{date}} **Attendees:** {{attendees}} **Duration:** {{duration}} ## Agenda {{agenda}} ## Key Discussions {{discussions}} ## Decisions Made {{decisions}} ## Action Items {{action_items}} ## Follow-up {{follow_up}}`, variables: [ { name: 'meeting_title', placeholder: 'Weekly Team Sync', required: true }, { name: 'date', placeholder: 'January 15, 2025', required: true }, { name: 'attendees', placeholder: 'John, Sarah, Mike', required: true }, { name: 'duration', placeholder: '1 hour', required: false }, { name: 'agenda', placeholder: 'Project updates, blockers, next steps', required: false }, { name: 'discussions', placeholder: 'Key points discussed', required: false }, { name: 'decisions', placeholder: 'Important decisions made', required: false }, { name: 'action_items', placeholder: 'Tasks assigned and deadlines', required: false }, { name: 'follow_up', placeholder: 'Next meeting date and agenda', required: false } ] }, { id: 'bug-report', name: 'Bug Report', description: 'Template for documenting software bugs and issues', type: 'memory', category: 'code', icon: '🐛', tags: ['bug', 'issue', 'development'], content: `# Bug Report - {{title}} **Priority:** {{priority}} **Component:** {{component}} **Environment:** {{environment}} ## Description {{description}} ## Steps to Reproduce {{steps}} ## Expected Behavior {{expected}} ## Actual Behavior {{actual}} ## Screenshots/Logs {{evidence}} ## Potential Fix {{fix_notes}}`, variables: [ { name: 'title', placeholder: 'Login button not responding', required: true }, { name: 'priority', placeholder: 'High', required: true }, { name: 'component', placeholder: 'Authentication Module', required: true }, { name: 'environment', placeholder: 'Production/Staging/Local', required: true }, { name: 'description', placeholder: 'Brief description of the issue', required: true }, { name: 'steps', placeholder: '1. Go to login page 2. Enter credentials 3. Click login', required: true }, { name: 'expected', placeholder: 'User should be logged in', required: true }, { name: 'actual', placeholder: 'Nothing happens when clicking login', required: true }, { name: 'evidence', placeholder: 'Console errors, screenshots, etc.', required: false }, { name: 'fix_notes', placeholder: 'Ideas for potential solutions', required: false } ] }, { id: 'research-notes', name: 'Research Notes', description: 'Template for organizing research findings and sources', type: 'memory', category: 'research', icon: '📚', tags: ['research', 'study', 'knowledge'], content: `# Research Notes - {{topic}} **Date:** {{date}} **Research Question:** {{question}} **Sources:** {{sources}} ## Key Findings {{findings}} ## Important Quotes {{quotes}} ## Data/Statistics {{data}} ## Conclusions {{conclusions}} ## Further Research Needed {{further_research}} ## References {{references}}`, variables: [ { name: 'topic', placeholder: 'AI Ethics in Healthcare', required: true }, { name: 'date', placeholder: 'January 15, 2025', required: true }, { name: 'question', placeholder: 'What are the ethical implications of AI in medical diagnosis?', required: true }, { name: 'sources', placeholder: 'Academic papers, reports, articles', required: true }, { name: 'findings', placeholder: 'Main discoveries and insights', required: true }, { name: 'quotes', placeholder: 'Important quotes with attribution', required: false }, { name: 'data', placeholder: 'Relevant statistics and data points', required: false }, { name: 'conclusions', placeholder: 'What can be concluded from this research', required: false }, { name: 'further_research', placeholder: 'Areas that need more investigation', required: false }, { name: 'references', placeholder: 'Full citations and links', required: false } ] }, { id: 'learning-notes', name: 'Learning Notes', description: 'Template for capturing learning from courses, tutorials, or books', type: 'memory', category: 'personal', icon: '🎓', tags: ['learning', 'education', 'knowledge'], content: `# Learning Notes - {{subject}} **Source:** {{source}} **Date:** {{date}} **Progress:** {{progress}} ## Key Concepts {{concepts}} ## Examples {{examples}} ## Personal Insights {{insights}} ## Questions to Explore {{questions}} ## Practical Applications {{applications}} ## Next Steps {{next_steps}}`, variables: [ { name: 'subject', placeholder: 'React Hooks', required: true }, { name: 'source', placeholder: 'Official React Documentation', required: true }, { name: 'date', placeholder: 'January 15, 2025', required: true }, { name: 'progress', placeholder: '50% complete', required: false }, { name: 'concepts', placeholder: 'useState, useEffect, custom hooks', required: true }, { name: 'examples', placeholder: 'Code examples and use cases', required: false }, { name: 'insights', placeholder: 'Personal understanding and connections', required: false }, { name: 'questions', placeholder: 'Things to research further', required: false }, { name: 'applications', placeholder: 'How to apply this knowledge', required: false }, { name: 'next_steps', placeholder: 'What to learn next', required: false } ] } ] const TASK_TEMPLATES: Template[] = [ { id: 'feature-development', name: 'Feature Development', description: 'Complete workflow for developing a new feature', type: 'task', category: 'code', icon: '⚡', tags: ['development', 'feature', 'coding'], content: `Develop {{feature_name}} feature ## Requirements {{requirements}} ## Implementation Plan 1. Design and planning 2. Backend implementation 3. Frontend development 4. Testing 5. Documentation 6. Code review 7. Deployment ## Acceptance Criteria {{acceptance_criteria}} ## Estimated Effort: {{effort}} ## Deadline: {{deadline}}`, variables: [ { name: 'feature_name', placeholder: 'User Authentication', required: true }, { name: 'requirements', placeholder: 'Users should be able to login/logout/register', required: true }, { name: 'acceptance_criteria', placeholder: 'Clear success criteria', required: true }, { name: 'effort', placeholder: '2 weeks', required: false }, { name: 'deadline', placeholder: 'End of month', required: false } ] }, { id: 'bug-fix', name: 'Bug Fix Task', description: 'Structured approach to fixing bugs', type: 'task', category: 'code', icon: '🔧', tags: ['bugfix', 'maintenance', 'coding'], content: `Fix: {{bug_title}} ## Problem Description {{problem}} ## Root Cause {{root_cause}} ## Proposed Solution {{solution}} ## Testing Plan {{testing}} ## Priority: {{priority}} ## Affected Users: {{impact}}`, variables: [ { name: 'bug_title', placeholder: 'Login form validation error', required: true }, { name: 'problem', placeholder: 'Describe the bug', required: true }, { name: 'root_cause', placeholder: 'Why is this happening?', required: false }, { name: 'solution', placeholder: 'How to fix it', required: true }, { name: 'testing', placeholder: 'How to verify the fix', required: true }, { name: 'priority', placeholder: 'High/Medium/Low', required: true }, { name: 'impact', placeholder: 'Who is affected', required: false } ] }, { id: 'research-task', name: 'Research Task', description: 'Systematic approach to research and investigation', type: 'task', category: 'research', icon: '🔍', tags: ['research', 'investigation', 'analysis'], content: `Research: {{research_topic}} ## Objective {{objective}} ## Key Questions {{questions}} ## Research Methods {{methods}} ## Expected Deliverables {{deliverables}} ## Timeline: {{timeline}} ## Success Criteria: {{success_criteria}}`, variables: [ { name: 'research_topic', placeholder: 'Best practices for API design', required: true }, { name: 'objective', placeholder: 'What are we trying to learn?', required: true }, { name: 'questions', placeholder: 'Specific questions to answer', required: true }, { name: 'methods', placeholder: 'How will you research this?', required: true }, { name: 'deliverables', placeholder: 'What will you produce?', required: true }, { name: 'timeline', placeholder: '1 week', required: false }, { name: 'success_criteria', placeholder: 'How to know when done', required: false } ] }, { id: 'project-planning', name: 'Project Planning', description: 'Template for planning and organizing projects', type: 'task', category: 'work', icon: '📋', tags: ['planning', 'project', 'management'], content: `Plan: {{project_name}} ## Project Overview {{overview}} ## Goals and Objectives {{goals}} ## Key Milestones {{milestones}} ## Resource Requirements {{resources}} ## Timeline {{timeline}} ## Risk Assessment {{risks}} ## Success Metrics {{metrics}}`, variables: [ { name: 'project_name', placeholder: 'Q1 Product Launch', required: true }, { name: 'overview', placeholder: 'Brief project description', required: true }, { name: 'goals', placeholder: 'What do we want to achieve?', required: true }, { name: 'milestones', placeholder: 'Key dates and deliverables', required: true }, { name: 'resources', placeholder: 'People, budget, tools needed', required: false }, { name: 'timeline', placeholder: 'Start and end dates', required: true }, { name: 'risks', placeholder: 'Potential challenges', required: false }, { name: 'metrics', placeholder: 'How to measure success', required: false } ] } ] export function TemplateSelector({ open, onOpenChange, type, onSelectTemplate }: TemplateSelectorProps) { const [selectedTemplate, setSelectedTemplate] = useState