356 lines
8.2 KiB
Markdown
356 lines
8.2 KiB
Markdown
# Enhancement Patterns
|
|
|
|
How to enhance components from sketch to production fidelity.
|
|
|
|
## Fidelity Progression Matrix
|
|
|
|
| Aspect | sketch | basic | detailed | production |
|
|
|--------|--------|-------|----------|------------|
|
|
| **Description** | Generic | Specific (1-2 sent) | Detailed (3-4 sent) | Complete with edge cases |
|
|
| **Tags** | Type only | Type + context | Type + context + features | All applicable tags |
|
|
| **ASCII Art** | Missing or minimal | Clean and aligned | Polished with spacing | Pixel-perfect, publication-quality |
|
|
| **States** | default only | default only | default + hover + focus | All applicable states |
|
|
| **Props** | Minimal | Standard | + examples array | + validation rules |
|
|
| **Accessibility** | Basic role | + focusable | + aria-label | + keyboard shortcuts + full a11y |
|
|
| **Time** | 10s | 30s | 90s | 180s |
|
|
|
|
## Enhancement Checklist by Fidelity
|
|
|
|
### sketch → basic (30s)
|
|
|
|
**Metadata:**
|
|
- [ ] Improve description from generic to specific
|
|
- [ ] Add relevant tags beyond just type
|
|
- [ ] Keep created/modified timestamps
|
|
|
|
**ASCII:**
|
|
- [ ] Create .md if missing
|
|
- [ ] Add clean ASCII art using box-drawing characters
|
|
- [ ] Match dimensions from .uxm (ascii.width, ascii.height)
|
|
- [ ] Basic alignment (don't need perfect)
|
|
|
|
**Props:**
|
|
- [ ] Document all variables in .md
|
|
- [ ] No need to add examples yet
|
|
|
|
**States:**
|
|
- [ ] Keep default state only
|
|
|
|
**Example:**
|
|
|
|
Before (sketch):
|
|
```json
|
|
{
|
|
"metadata": {
|
|
"description": "Button component",
|
|
"tags": ["button"]
|
|
}
|
|
}
|
|
```
|
|
|
|
After (basic):
|
|
```json
|
|
{
|
|
"metadata": {
|
|
"description": "Submit button for form submission with primary action styling",
|
|
"tags": ["button", "submit", "form", "primary-action"],
|
|
"fidelity": "basic"
|
|
}
|
|
}
|
|
```
|
|
|
|
### basic → detailed (90s)
|
|
|
|
**Metadata:**
|
|
- [ ] Expand description with usage context
|
|
- [ ] Add props.examples array (2-3 examples)
|
|
|
|
**ASCII:**
|
|
- [ ] Polish alignment (consistent spacing)
|
|
- [ ] Smooth corners and borders
|
|
- [ ] Add visual details
|
|
|
|
**States:**
|
|
- [ ] Add hover state (use hover.json template)
|
|
- [ ] Add focus state (use focus.json template)
|
|
- [ ] Document state behavior in .md
|
|
|
|
**Props:**
|
|
- [ ] Add examples showing different prop combinations
|
|
|
|
**Example:**
|
|
|
|
Before (basic):
|
|
```json
|
|
{
|
|
"props": {
|
|
"label": "Submit"
|
|
},
|
|
"behavior": {
|
|
"states": [
|
|
{"name": "default", "properties": {}}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
After (detailed):
|
|
```json
|
|
{
|
|
"props": {
|
|
"label": "Submit",
|
|
"examples": [
|
|
{"label": "Submit", "context": "Form submission"},
|
|
{"label": "Sign In", "context": "Login form"},
|
|
{"label": "Continue", "context": "Multi-step process"}
|
|
]
|
|
},
|
|
"behavior": {
|
|
"states": [
|
|
{"name": "default", "properties": {}},
|
|
{"name": "hover", "properties": {
|
|
"backgroundColor": "#e0e0e0",
|
|
"cursor": "pointer"
|
|
}},
|
|
{"name": "focus", "properties": {
|
|
"outline": "2px solid #0066cc",
|
|
"backgroundColor": "#f0f8ff"
|
|
}}
|
|
]
|
|
},
|
|
"metadata": {
|
|
"fidelity": "detailed"
|
|
}
|
|
}
|
|
```
|
|
|
|
### detailed → production (180s)
|
|
|
|
**Metadata:**
|
|
- [ ] Add edge case documentation
|
|
- [ ] Complete all optional fields
|
|
- [ ] Add keywords for searchability
|
|
|
|
**ASCII:**
|
|
- [ ] Pixel-perfect alignment
|
|
- [ ] Publication-quality rendering
|
|
- [ ] Consider printing/export appearance
|
|
|
|
**States:**
|
|
- [ ] Add disabled state (if applicable)
|
|
- [ ] Add error state (if applicable for forms)
|
|
- [ ] Add active/pressed state (for buttons)
|
|
- [ ] Add loading state (if async action)
|
|
|
|
**Accessibility:**
|
|
- [ ] Add keyboard shortcuts
|
|
- [ ] Add screen reader descriptions
|
|
- [ ] Add ARIA label templates
|
|
- [ ] Document keyboard navigation
|
|
|
|
**Props:**
|
|
- [ ] Add validation rules
|
|
- [ ] Document prop constraints
|
|
- [ ] Add deprecation notices if needed
|
|
|
|
**Example:**
|
|
|
|
Before (detailed):
|
|
```json
|
|
{
|
|
"behavior": {
|
|
"states": [
|
|
{"name": "default", "properties": {}},
|
|
{"name": "hover", "properties": {...}},
|
|
{"name": "focus", "properties": {...}}
|
|
],
|
|
"accessibility": {
|
|
"role": "button",
|
|
"focusable": true
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
After (production):
|
|
```json
|
|
{
|
|
"behavior": {
|
|
"states": [
|
|
{"name": "default", "properties": {}},
|
|
{"name": "hover", "properties": {...}},
|
|
{"name": "focus", "properties": {...}},
|
|
{"name": "disabled", "properties": {
|
|
"opacity": 0.5,
|
|
"cursor": "not-allowed",
|
|
"interactive": false
|
|
}},
|
|
{"name": "active", "properties": {
|
|
"backgroundColor": "#c0c0c0",
|
|
"transform": "translateY(1px)"
|
|
}}
|
|
],
|
|
"accessibility": {
|
|
"role": "button",
|
|
"focusable": true,
|
|
"ariaLabel": "{{label}} - {{context}}",
|
|
"keyboardShortcuts": [
|
|
{"key": "Enter", "action": "activate"},
|
|
{"key": "Space", "action": "activate"}
|
|
]
|
|
}
|
|
},
|
|
"metadata": {
|
|
"fidelity": "production",
|
|
"description": "Submit button for form submission with primary action styling. Supports keyboard navigation (Enter/Space), shows visual feedback on hover and focus, and provides disabled state for form validation. Use for primary actions like 'Submit', 'Sign In', 'Continue'."
|
|
}
|
|
}
|
|
```
|
|
|
|
## State Addition Guide
|
|
|
|
### When to Add Each State
|
|
|
|
**hover:**
|
|
- All interactive components (button, input, link)
|
|
- Cards if clickable
|
|
- Navigation items
|
|
|
|
**focus:**
|
|
- All focusable components
|
|
- Required for keyboard navigation
|
|
- WCAG AA compliance
|
|
|
|
**disabled:**
|
|
- Form controls (button, input, checkbox, select)
|
|
- Actions that may be unavailable
|
|
- Not needed for display-only components
|
|
|
|
**error:**
|
|
- Form inputs (text, email, password)
|
|
- Validation feedback required
|
|
- Not needed for buttons or display components
|
|
|
|
**active/pressed:**
|
|
- Buttons
|
|
- Links
|
|
- Interactive cards
|
|
- Shows immediate feedback
|
|
|
|
**loading:**
|
|
- Buttons triggering async actions
|
|
- Forms submitting data
|
|
- Components fetching data
|
|
|
|
## ASCII Art Enhancement
|
|
|
|
### sketch → basic
|
|
|
|
Focus: Functionality over beauty
|
|
- Use basic box-drawing characters (─│┌┐└┘)
|
|
- Align text roughly
|
|
- Match dimensions
|
|
|
|
Example:
|
|
```
|
|
┌──────────────────┐
|
|
│ Submit │
|
|
└──────────────────┘
|
|
```
|
|
|
|
### basic → detailed
|
|
|
|
Focus: Polish and consistency
|
|
- Use rounded corners (╭╮╰╯) for friendly feel
|
|
- Careful spacing (center-align text)
|
|
- Smooth visual flow
|
|
|
|
Example:
|
|
```
|
|
╭──────────────────╮
|
|
│ Submit │
|
|
╰──────────────────╯
|
|
```
|
|
|
|
### detailed → production
|
|
|
|
Focus: Pixel-perfect publication quality
|
|
- Perfect alignment (character-level precision)
|
|
- Consider all states (how hover/focus changes appearance)
|
|
- Professional appearance for screenshots
|
|
|
|
Example:
|
|
```
|
|
╭──────────────────╮
|
|
│ Submit │
|
|
╰──────────────────╯
|
|
|
|
Hover:
|
|
╔══════════════════╗
|
|
║ Submit ║
|
|
╚══════════════════╝
|
|
```
|
|
|
|
## Common Patterns
|
|
|
|
### Button Enhancement
|
|
|
|
sketch → basic:
|
|
- Add clean box ASCII
|
|
- Specific description
|
|
|
|
basic → detailed:
|
|
- Add hover + focus states
|
|
- Polish ASCII with rounded corners
|
|
- Add usage examples
|
|
|
|
detailed → production:
|
|
- Add disabled + active states
|
|
- Add keyboard shortcuts
|
|
- Pixel-perfect ASCII
|
|
|
|
### Input Enhancement
|
|
|
|
sketch → basic:
|
|
- Add input box ASCII with placeholder
|
|
- Specific description
|
|
|
|
basic → detailed:
|
|
- Add focus state
|
|
- Add label positioning
|
|
- Add usage examples
|
|
|
|
detailed → production:
|
|
- Add error state
|
|
- Add disabled state
|
|
- Add validation rules
|
|
- Full accessibility
|
|
|
|
### Card Enhancement
|
|
|
|
sketch → basic:
|
|
- Add card box with title/content areas
|
|
- Specific description
|
|
|
|
basic → detailed:
|
|
- Polish layout and spacing
|
|
- Add examples (different content)
|
|
|
|
detailed → production:
|
|
- Add hover state (if interactive)
|
|
- Perfect alignment
|
|
- Complete metadata
|
|
|
|
## Performance Targets
|
|
|
|
| Enhancement | Components | Time Target |
|
|
|-------------|-----------|-------------|
|
|
| 1 component to basic | 1 | 30s |
|
|
| 1 component to detailed | 1 | 90s |
|
|
| 1 component to production | 1 | 180s |
|
|
| 6 components to basic (parallel) | 6 | 30s |
|
|
| 6 components to detailed (parallel) | 6 | 90s |
|
|
| 6 components to production (parallel) | 6 | 180s |
|
|
|
|
Parallel execution: Multiple agents working simultaneously, so total time ≈ single component time!
|