Spaces:
Build error
Build error
File size: 7,016 Bytes
d83e271 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
/**
* Example-based prompts for teaching AI proper edit behavior
*/
export const EDIT_EXAMPLES = `
## Edit Strategy Examples
### Example 1: Update Header Color
USER: "Make the header background black"
CORRECT APPROACH:
1. Identify Header component location
2. Edit ONLY Header.jsx
3. Change background color class/style
INCORRECT APPROACH:
- Regenerating entire App.jsx
- Creating new Header.jsx from scratch
- Modifying unrelated files
EXPECTED OUTPUT:
<file path="src/components/Header.jsx">
// Only the Header component with updated background
// Preserving all existing functionality
</file>
### Example 2: Add New Page
USER: "Add a videos page"
CORRECT APPROACH:
1. Create Videos.jsx component
2. Update routing in App.jsx or Router component
3. Add navigation link if needed
INCORRECT APPROACH:
- Regenerating entire application
- Recreating all existing pages
EXPECTED OUTPUT:
<file path="src/components/Videos.jsx">
// New Videos component
</file>
<file path="src/App.jsx">
// ONLY the routing update, preserving everything else
</file>
### Example 3: Fix Styling Issue
USER: "Fix the button styling on mobile"
CORRECT APPROACH:
1. Identify which component has the button
2. Update only that component's Tailwind classes
3. Add responsive modifiers (sm:, md:, etc)
INCORRECT APPROACH:
- Regenerating all components
- Creating new CSS files
- Modifying global styles unnecessarily
### Example 4: Add Feature to Component
USER: "Add a search bar to the header"
CORRECT APPROACH:
1. Modify Header.jsx to add search functionality
2. Preserve all existing header content
3. Integrate search seamlessly
INCORRECT APPROACH:
- Creating Header.jsx from scratch
- Losing existing navigation/branding
### Example 5: Add New Component
USER: "Add a newsletter signup to the footer"
CORRECT APPROACH:
1. Create Newsletter.jsx component
2. UPDATE Footer.jsx to import Newsletter
3. Add <Newsletter /> in the appropriate place in Footer
EXPECTED OUTPUT:
<file path="src/components/Newsletter.jsx">
// New Newsletter component
</file>
<file path="src/components/Footer.jsx">
// Updated Footer with Newsletter import and usage
import Newsletter from './Newsletter';
// ... existing code ...
// Add <Newsletter /> in the render
</file>
### Example 6: Add External Library
USER: "Add animations with framer-motion to the hero"
CORRECT APPROACH:
1. Import framer-motion in Hero.jsx
2. Use motion components
3. System will auto-install framer-motion
EXPECTED OUTPUT:
<file path="src/components/Hero.jsx">
import { motion } from 'framer-motion';
// ... rest of Hero with motion animations
</file>
### Example 7: Remove Element
USER: "Remove start deploying button"
CORRECT APPROACH:
1. Search for "start deploying" in all component files
2. Find it in Hero.jsx
3. Edit ONLY Hero.jsx to remove that button
INCORRECT APPROACH:
- Creating a new file
- Editing multiple files
- Redesigning the entire Hero
EXPECTED OUTPUT:
<file path="src/components/Hero.jsx">
// Hero component with "start deploying" button removed
// All other content preserved
</file>
### Example 8: Delete Section
USER: "Delete the testimonials section"
CORRECT APPROACH:
1. Find which file contains testimonials
2. Remove only that section from the file
3. Keep all other content intact
INCORRECT APPROACH:
- Deleting the entire file
- Recreating the page without testimonials
### Example 9: Change a Single Style (CRITICAL EXAMPLE)
USER: "update the hero to bg blue"
CORRECT APPROACH:
1. Identify the Hero component file: 'src/components/Hero.jsx'.
2. Locate the outermost 'div' or container element.
3. Find the existing background color class (e.g., 'bg-gray-900').
4. Replace ONLY that class with 'bg-blue-500'.
5. Return the entire file, completely unchanged except for that single class modification.
**Original File Content (BEFORE):**
<file path="src/components/Hero.jsx">
import React from 'react';
export default function Hero() {
return (
<div className="w-full bg-gray-900 text-white py-20 px-4">
<h1 className="text-5xl font-bold">Welcome to the App</h1>
<p className="mt-4 text-lg">This is the original hero section.</p>
<button className="mt-6 px-6 py-3 bg-blue-600 hover:bg-blue-700 rounded-lg">
Get Started
</button>
</div>
);
}
</file>
**Expected Output (AFTER):**
<file path="src/components/Hero.jsx">
import React from 'react';
export default function Hero() {
return (
<div className="w-full bg-blue-500 text-white py-20 px-4">
<h1 className="text-5xl font-bold">Welcome to the App</h1>
<p className="mt-4 text-lg">This is the original hero section.</p>
<button className="mt-6 px-6 py-3 bg-blue-600 hover:bg-blue-700 rounded-lg">
Get Started
</button>
</div>
);
}
</file>
NOTICE: Everything remains EXACTLY the same except 'bg-gray-900' β 'bg-blue-500'.
- The button still has bg-blue-600 (unchanged)
- All text, structure, imports are identical
- No reformatting, no "improvements", no cleanup
## Key Principles
1. **Minimal Changes**: Only modify what's necessary
2. **Preserve Functionality**: Keep all existing features
3. **Respect Structure**: Follow existing patterns
4. **Target Precision**: Edit specific files, not everything
5. **Context Awareness**: Use imports/exports to understand relationships
## File Identification Patterns
- "header" β src/components/Header.jsx
- "navigation" β src/components/Nav.jsx or Header.jsx
- "footer" β src/components/Footer.jsx
- "home page" β src/App.jsx or src/pages/Home.jsx
- "styling" β Component files (Tailwind) or index.css
- "routing" β App.jsx or Router component
- "layout" β Layout components or App.jsx
## Edit Intent Classification
UPDATE_COMPONENT: Modify existing component
- Keywords: update, change, modify, edit, fix
- Action: Edit single file
ADD_FEATURE: Add new functionality
- Keywords: add, create, implement, build
- Action: Create new files + minimal edits
FIX_ISSUE: Resolve problems
- Keywords: fix, resolve, debug, repair
- Action: Targeted fixes
UPDATE_STYLE: Change appearance
- Keywords: style, color, theme, design
- Action: Update Tailwind classes
REFACTOR: Improve code quality
- Keywords: refactor, clean, optimize
- Action: Restructure without changing behavior
`;
export function getEditExamplesPrompt(): string {
return EDIT_EXAMPLES;
}
export function getComponentPatternPrompt(fileStructure: string): string {
return `
## Current Project Structure
${fileStructure}
## Component Naming Patterns
Based on your file structure, here are the patterns to follow:
1. Component files are in: src/components/
2. Page components might be in: src/pages/ or src/components/
3. Utility functions are in: src/utils/ or src/lib/
4. Styles use Tailwind classes inline
5. Main app entry is: src/App.jsx
When the user mentions a component by name, look for:
- Exact matches first (Header β Header.jsx)
- Partial matches (nav β Navigation.jsx, NavBar.jsx)
- Semantic matches (top bar β Header.jsx)
`;
} |